@videojs/react 10.0.0-beta.26 → 10.0.0-beta.28

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 (1415) hide show
  1. package/dist/default/__generated__/skins/default-video/styles/base.css +25 -0
  2. package/dist/default/__generated__/skins/default-video/styles/buttons.css +152 -0
  3. package/dist/default/__generated__/skins/default-video/styles/container.css +45 -0
  4. package/dist/default/__generated__/skins/default-video/styles/controls.css +45 -0
  5. package/dist/default/__generated__/skins/default-video/styles/overlays.css +11 -0
  6. package/dist/default/__generated__/skins/default-video/styles/popups.css +45 -0
  7. package/dist/default/__generated__/skins/default-video/styles/poster.css +47 -0
  8. package/dist/default/__generated__/skins/default-video/styles/sliders.css +112 -0
  9. package/dist/default/__generated__/skins/default-video/styles/styles.css +514 -0
  10. package/dist/default/__generated__/skins/default-video/styles/theme.css +22 -0
  11. package/dist/default/i18n/context.js +3 -4
  12. package/dist/default/i18n/context.js.map +1 -1
  13. package/dist/default/i18n/create-i18n.js +0 -1
  14. package/dist/default/i18n/create-i18n.js.map +1 -1
  15. package/dist/default/i18n/locales/id/register.js +8 -0
  16. package/dist/default/i18n/locales/id/register.js.map +1 -0
  17. package/dist/default/i18n/locales/id.js +2 -0
  18. package/dist/default/i18n/locales/lt/register.js +8 -0
  19. package/dist/default/i18n/locales/lt/register.js.map +1 -0
  20. package/dist/default/i18n/locales/lt.js +2 -0
  21. package/dist/default/icons/dist/react/default/airplay-enter.js.map +1 -1
  22. package/dist/default/icons/dist/react/default/airplay-exit.js +1 -2
  23. package/dist/default/icons/dist/react/default/airplay-exit.js.map +1 -1
  24. package/dist/default/icons/dist/react/default/captions-off.js.map +1 -1
  25. package/dist/default/icons/dist/react/default/captions-on.js.map +1 -1
  26. package/dist/default/icons/dist/react/default/cast-enter.js +2 -45
  27. package/dist/default/icons/dist/react/default/cast-enter.js.map +1 -1
  28. package/dist/default/icons/dist/react/default/cast-exit.js +4 -61
  29. package/dist/default/icons/dist/react/default/cast-exit.js.map +1 -1
  30. package/dist/default/icons/dist/react/default/check.js.map +1 -1
  31. package/dist/default/icons/dist/react/default/chevron.js.map +1 -1
  32. package/dist/default/icons/dist/react/default/fullscreen-enter.js.map +1 -1
  33. package/dist/default/icons/dist/react/default/fullscreen-exit.js.map +1 -1
  34. package/dist/default/icons/dist/react/default/gear.js.map +1 -1
  35. package/dist/default/icons/dist/react/default/pause.js.map +1 -1
  36. package/dist/default/icons/dist/react/default/pip-enter.js.map +1 -1
  37. package/dist/default/icons/dist/react/default/pip-exit.js.map +1 -1
  38. package/dist/default/icons/dist/react/default/play.js.map +1 -1
  39. package/dist/default/icons/dist/react/default/quality.js +1 -1
  40. package/dist/default/icons/dist/react/default/quality.js.map +1 -1
  41. package/dist/default/icons/dist/react/default/restart.js.map +1 -1
  42. package/dist/default/icons/dist/react/default/seek.js.map +1 -1
  43. package/dist/default/icons/dist/react/default/speech.js.map +1 -1
  44. package/dist/default/icons/dist/react/default/speed.js.map +1 -1
  45. package/dist/default/icons/dist/react/default/spinner.js +1 -1
  46. package/dist/default/icons/dist/react/default/spinner.js.map +1 -1
  47. package/dist/default/icons/dist/react/default/switches.js.map +1 -1
  48. package/dist/default/icons/dist/react/default/volume-high.js.map +1 -1
  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.map +1 -1
  51. package/dist/default/icons/dist/react/minimal/airplay-enter.js.map +1 -1
  52. package/dist/default/icons/dist/react/minimal/airplay-exit.js +1 -2
  53. package/dist/default/icons/dist/react/minimal/airplay-exit.js.map +1 -1
  54. package/dist/default/icons/dist/react/minimal/captions-off.js.map +1 -1
  55. package/dist/default/icons/dist/react/minimal/captions-on.js.map +1 -1
  56. package/dist/default/icons/dist/react/minimal/cast-enter.js +2 -45
  57. package/dist/default/icons/dist/react/minimal/cast-enter.js.map +1 -1
  58. package/dist/default/icons/dist/react/minimal/cast-exit.js +4 -61
  59. package/dist/default/icons/dist/react/minimal/cast-exit.js.map +1 -1
  60. package/dist/default/icons/dist/react/minimal/check.js.map +1 -1
  61. package/dist/default/icons/dist/react/minimal/chevron.js.map +1 -1
  62. package/dist/default/icons/dist/react/minimal/fullscreen-enter.js.map +1 -1
  63. package/dist/default/icons/dist/react/minimal/fullscreen-exit.js.map +1 -1
  64. package/dist/default/icons/dist/react/minimal/gear.js.map +1 -1
  65. package/dist/default/icons/dist/react/minimal/pause.js.map +1 -1
  66. package/dist/default/icons/dist/react/minimal/pip-enter.js.map +1 -1
  67. package/dist/default/icons/dist/react/minimal/pip-exit.js.map +1 -1
  68. package/dist/default/icons/dist/react/minimal/play.js.map +1 -1
  69. package/dist/default/icons/dist/react/minimal/quality.js +1 -1
  70. package/dist/default/icons/dist/react/minimal/quality.js.map +1 -1
  71. package/dist/default/icons/dist/react/minimal/restart.js.map +1 -1
  72. package/dist/default/icons/dist/react/minimal/seek.js.map +1 -1
  73. package/dist/default/icons/dist/react/minimal/speech.js +7 -40
  74. package/dist/default/icons/dist/react/minimal/speech.js.map +1 -1
  75. package/dist/default/icons/dist/react/minimal/speed.js.map +1 -1
  76. package/dist/default/icons/dist/react/minimal/spinner.js +1 -1
  77. package/dist/default/icons/dist/react/minimal/spinner.js.map +1 -1
  78. package/dist/default/icons/dist/react/minimal/switches.js.map +1 -1
  79. package/dist/default/icons/dist/react/minimal/volume-high.js.map +1 -1
  80. package/dist/default/icons/dist/react/minimal/volume-low.js.map +1 -1
  81. package/dist/default/icons/dist/react/minimal/volume-off.js.map +1 -1
  82. package/dist/default/index.js +7 -3
  83. package/dist/default/media/audio.js +0 -1
  84. package/dist/default/media/audio.js.map +1 -1
  85. package/dist/default/media/cloudflare-video/index.js +2 -0
  86. package/dist/default/media/cloudflare-video/media.js +38 -0
  87. package/dist/default/media/cloudflare-video/media.js.map +1 -0
  88. package/dist/default/media/google-cast/google-cast.js +3 -3
  89. package/dist/default/media/google-cast/google-cast.js.map +1 -1
  90. package/dist/default/media/hls-audio/index.js +2 -0
  91. package/dist/default/media/hls-audio/media.js +21 -0
  92. package/dist/default/media/hls-audio/media.js.map +1 -0
  93. package/dist/default/media/hls-background-video/index.js +2 -0
  94. package/dist/default/media/hls-background-video/media.js +45 -0
  95. package/dist/default/media/hls-background-video/media.js.map +1 -0
  96. package/dist/default/media/hls-video/index.js +2 -0
  97. package/dist/{dev/media/simple-hls-video → default/media/hls-video}/media.js +6 -7
  98. package/dist/default/media/hls-video/media.js.map +1 -0
  99. package/dist/default/media/mux-audio/{media.js → hls-js.js} +2 -2
  100. package/dist/default/media/mux-audio/hls-js.js.map +1 -0
  101. package/dist/default/media/mux-audio/index.js +1 -1
  102. package/dist/default/media/mux-audio/spf.js +26 -0
  103. package/dist/default/media/mux-audio/spf.js.map +1 -0
  104. package/dist/default/media/mux-background-video/index.js +2 -0
  105. package/dist/default/media/mux-data/mux-data.js +7 -3
  106. package/dist/default/media/mux-data/mux-data.js.map +1 -1
  107. package/dist/default/media/mux-video/hls-js.js +27 -0
  108. package/dist/default/media/mux-video/hls-js.js.map +1 -0
  109. package/dist/default/media/mux-video/index.js +1 -1
  110. package/dist/default/media/mux-video/spf.js +27 -0
  111. package/dist/default/media/mux-video/spf.js.map +1 -0
  112. package/dist/default/media/mux-video/storyboard.js +43 -0
  113. package/dist/default/media/mux-video/storyboard.js.map +1 -0
  114. package/dist/default/media/spotify-audio/index.js +2 -0
  115. package/dist/default/media/spotify-audio/media.js +40 -0
  116. package/dist/default/media/spotify-audio/media.js.map +1 -0
  117. package/dist/default/media/tiktok-video/index.js +2 -0
  118. package/dist/default/media/tiktok-video/media.js +38 -0
  119. package/dist/default/media/tiktok-video/media.js.map +1 -0
  120. package/dist/default/media/twitch-video/index.js +2 -0
  121. package/dist/default/media/twitch-video/media.js +38 -0
  122. package/dist/default/media/twitch-video/media.js.map +1 -0
  123. package/dist/default/media/video.js +0 -1
  124. package/dist/default/media/video.js.map +1 -1
  125. package/dist/default/media/vimeo-video/media.js +4 -4
  126. package/dist/default/media/vimeo-video/media.js.map +1 -1
  127. package/dist/default/media/youtube-video/index.js +2 -0
  128. package/dist/default/media/youtube-video/media.js +37 -0
  129. package/dist/default/media/youtube-video/media.js.map +1 -0
  130. package/dist/default/player/container.js +8 -4
  131. package/dist/default/player/container.js.map +1 -1
  132. package/dist/default/player/context.js +6 -11
  133. package/dist/default/player/context.js.map +1 -1
  134. package/dist/default/player/create-player.js +44 -14
  135. package/dist/default/player/create-player.js.map +1 -1
  136. package/dist/default/player/popup-group-context.js +17 -0
  137. package/dist/default/player/popup-group-context.js.map +1 -0
  138. package/dist/default/presets/audio/index.js +8 -1
  139. package/dist/default/presets/audio/index.js.map +1 -0
  140. package/dist/default/presets/audio/minimal-skin.css +423 -295
  141. package/dist/default/presets/audio/minimal-skin.js +13 -19
  142. package/dist/default/presets/audio/minimal-skin.js.map +1 -1
  143. package/dist/default/presets/audio/minimal-skin.tailwind.js +82 -20
  144. package/dist/default/presets/audio/minimal-skin.tailwind.js.map +1 -1
  145. package/dist/default/presets/audio/player.js +13 -0
  146. package/dist/default/presets/audio/player.js.map +1 -0
  147. package/dist/default/presets/audio/skin.css +459 -345
  148. package/dist/default/presets/audio/skin.js +14 -19
  149. package/dist/default/presets/audio/skin.js.map +1 -1
  150. package/dist/default/presets/audio/skin.tailwind.js +15 -19
  151. package/dist/default/presets/audio/skin.tailwind.js.map +1 -1
  152. package/dist/default/presets/background/index.js +8 -1
  153. package/dist/default/presets/background/index.js.map +1 -0
  154. package/dist/default/presets/background/player.js +13 -0
  155. package/dist/default/presets/background/player.js.map +1 -0
  156. package/dist/default/presets/background/skin.css +3 -3
  157. package/dist/default/presets/background/skin.js +1 -0
  158. package/dist/default/presets/background/skin.js.map +1 -1
  159. package/dist/default/presets/live-audio/index.js +8 -1
  160. package/dist/default/presets/live-audio/index.js.map +1 -0
  161. package/dist/default/presets/live-audio/minimal-skin.css +423 -295
  162. package/dist/default/presets/live-audio/minimal-skin.js +3 -2
  163. package/dist/default/presets/live-audio/minimal-skin.js.map +1 -1
  164. package/dist/default/presets/live-audio/minimal-skin.tailwind.js +5 -4
  165. package/dist/default/presets/live-audio/minimal-skin.tailwind.js.map +1 -1
  166. package/dist/default/presets/live-audio/player.js +13 -0
  167. package/dist/default/presets/live-audio/player.js.map +1 -0
  168. package/dist/default/presets/live-audio/skin.css +459 -345
  169. package/dist/default/presets/live-audio/skin.js +3 -2
  170. package/dist/default/presets/live-audio/skin.js.map +1 -1
  171. package/dist/default/presets/live-audio/skin.tailwind.js +5 -4
  172. package/dist/default/presets/live-audio/skin.tailwind.js.map +1 -1
  173. package/dist/default/presets/live-video/index.js +8 -1
  174. package/dist/default/presets/live-video/index.js.map +1 -0
  175. package/dist/default/presets/live-video/minimal-skin.css +656 -588
  176. package/dist/default/presets/live-video/minimal-skin.js +13 -12
  177. package/dist/default/presets/live-video/minimal-skin.js.map +1 -1
  178. package/dist/default/presets/live-video/minimal-skin.tailwind.js +28 -26
  179. package/dist/default/presets/live-video/minimal-skin.tailwind.js.map +1 -1
  180. package/dist/default/presets/live-video/player.js +13 -0
  181. package/dist/default/presets/live-video/player.js.map +1 -0
  182. package/dist/default/presets/live-video/skin.css +661 -622
  183. package/dist/default/presets/live-video/skin.js +12 -11
  184. package/dist/default/presets/live-video/skin.js.map +1 -1
  185. package/dist/default/presets/live-video/skin.tailwind.js +25 -112
  186. package/dist/default/presets/live-video/skin.tailwind.js.map +1 -1
  187. package/dist/default/presets/video/index.js +8 -1
  188. package/dist/default/presets/video/index.js.map +1 -0
  189. package/dist/default/presets/video/minimal-skin.css +656 -588
  190. package/dist/default/presets/video/minimal-skin.js +213 -211
  191. package/dist/default/presets/video/minimal-skin.js.map +1 -1
  192. package/dist/default/presets/video/minimal-skin.tailwind.js +227 -233
  193. package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
  194. package/dist/default/presets/video/player.js +13 -0
  195. package/dist/default/presets/video/player.js.map +1 -0
  196. package/dist/default/presets/video/skin.css +661 -622
  197. package/dist/default/presets/video/skin.js +213 -207
  198. package/dist/default/presets/video/skin.js.map +1 -1
  199. package/dist/default/presets/video/skin.tailwind.js +225 -227
  200. package/dist/default/presets/video/skin.tailwind.js.map +1 -1
  201. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js +6 -6
  202. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  203. package/dist/default/skins/dist/default/default/tailwind/components/buffering.js +1 -1
  204. package/dist/default/skins/dist/default/default/tailwind/components/buffering.js.map +1 -1
  205. package/dist/default/skins/dist/default/default/tailwind/components/button.js +4 -4
  206. package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  207. package/dist/default/skins/dist/default/default/tailwind/components/container.js +8 -0
  208. package/dist/default/skins/dist/default/default/tailwind/components/container.js.map +1 -0
  209. package/dist/default/skins/dist/default/default/tailwind/components/controls.js +1 -1
  210. package/dist/default/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  211. package/dist/default/skins/dist/default/default/tailwind/components/error.js +1 -1
  212. package/dist/default/skins/dist/default/default/tailwind/components/error.js.map +1 -1
  213. package/dist/default/skins/dist/default/default/tailwind/components/icon.js +1 -1
  214. package/dist/default/skins/dist/default/default/tailwind/components/icon.js.map +1 -1
  215. package/dist/default/skins/dist/default/default/tailwind/components/input-indicator-overlay.js +7 -0
  216. package/dist/default/skins/dist/default/default/tailwind/components/input-indicator-overlay.js.map +1 -0
  217. package/dist/default/skins/dist/default/default/tailwind/components/input-indicator.js +9 -0
  218. package/dist/default/skins/dist/default/default/tailwind/components/input-indicator.js.map +1 -0
  219. package/dist/default/skins/dist/default/default/tailwind/components/menu.js +8 -12
  220. package/dist/default/skins/dist/default/default/tailwind/components/menu.js.map +1 -1
  221. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js +1 -1
  222. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  223. package/dist/default/skins/dist/default/default/tailwind/components/popup.js +1 -1
  224. package/dist/default/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  225. package/dist/default/skins/dist/default/default/tailwind/components/poster.js +1 -1
  226. package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
  227. package/dist/default/skins/dist/default/default/tailwind/components/seek-indicator.js +12 -0
  228. package/dist/default/skins/dist/default/default/tailwind/components/seek-indicator.js.map +1 -0
  229. package/dist/default/skins/dist/default/default/tailwind/components/slider.js +17 -9
  230. package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  231. package/dist/default/skins/dist/default/default/tailwind/components/status-indicator.js +29 -0
  232. package/dist/default/skins/dist/default/default/tailwind/components/status-indicator.js.map +1 -0
  233. package/dist/default/skins/dist/default/default/tailwind/components/surface.js +1 -1
  234. package/dist/default/skins/dist/default/default/tailwind/components/surface.js.map +1 -1
  235. package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js +3 -4
  236. package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -1
  237. package/dist/default/skins/dist/default/default/tailwind/components/time.js +2 -2
  238. package/dist/default/skins/dist/default/default/tailwind/components/time.js.map +1 -1
  239. package/dist/default/skins/dist/default/default/tailwind/components/volume-indicator.js +18 -0
  240. package/dist/default/skins/dist/default/default/tailwind/components/volume-indicator.js.map +1 -0
  241. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +22 -19
  242. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  243. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +6 -6
  244. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  245. package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js +1 -1
  246. package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -1
  247. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js +4 -4
  248. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  249. package/dist/default/skins/dist/default/minimal/tailwind/components/container.js +8 -0
  250. package/dist/default/skins/dist/default/minimal/tailwind/components/container.js.map +1 -0
  251. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  252. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  253. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js +1 -1
  254. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js.map +1 -1
  255. package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js +1 -1
  256. package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -1
  257. package/dist/default/skins/dist/default/minimal/tailwind/components/input-indicator-overlay.js +7 -0
  258. package/dist/default/skins/dist/default/minimal/tailwind/components/input-indicator-overlay.js.map +1 -0
  259. package/dist/default/skins/dist/default/minimal/tailwind/components/input-indicator.js +10 -0
  260. package/dist/default/skins/dist/default/minimal/tailwind/components/input-indicator.js.map +1 -0
  261. package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js +9 -13
  262. package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -1
  263. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
  264. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  265. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js +2 -2
  266. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  267. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +1 -1
  268. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
  269. package/dist/default/skins/dist/default/minimal/tailwind/components/seek-indicator.js +12 -0
  270. package/dist/default/skins/dist/default/minimal/tailwind/components/seek-indicator.js.map +1 -0
  271. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +17 -9
  272. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  273. package/dist/default/skins/dist/default/minimal/tailwind/components/status-indicator.js +29 -0
  274. package/dist/default/skins/dist/default/minimal/tailwind/components/status-indicator.js.map +1 -0
  275. package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js +3 -5
  276. package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -1
  277. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js +2 -2
  278. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  279. package/dist/default/skins/dist/default/minimal/tailwind/components/volume-indicator.js +19 -0
  280. package/dist/default/skins/dist/default/minimal/tailwind/components/volume-indicator.js.map +1 -0
  281. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +14 -15
  282. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  283. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +22 -20
  284. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  285. package/dist/default/ui/airplay-button/airplay-button.js +0 -1
  286. package/dist/default/ui/airplay-button/airplay-button.js.map +1 -1
  287. package/dist/default/ui/alert-dialog/alert-dialog-close.js +0 -1
  288. package/dist/default/ui/alert-dialog/alert-dialog-close.js.map +1 -1
  289. package/dist/default/ui/alert-dialog/alert-dialog-description.js +0 -1
  290. package/dist/default/ui/alert-dialog/alert-dialog-description.js.map +1 -1
  291. package/dist/default/ui/alert-dialog/alert-dialog-popup.js +0 -1
  292. package/dist/default/ui/alert-dialog/alert-dialog-popup.js.map +1 -1
  293. package/dist/default/ui/alert-dialog/alert-dialog-root.js +0 -1
  294. package/dist/default/ui/alert-dialog/alert-dialog-root.js.map +1 -1
  295. package/dist/default/ui/alert-dialog/alert-dialog-title.js +0 -1
  296. package/dist/default/ui/alert-dialog/alert-dialog-title.js.map +1 -1
  297. package/dist/default/ui/alert-dialog/context.js +0 -1
  298. package/dist/default/ui/alert-dialog/context.js.map +1 -1
  299. package/dist/default/ui/audio-track/use-audio-track-options.js +8 -24
  300. package/dist/default/ui/audio-track/use-audio-track-options.js.map +1 -1
  301. package/dist/default/ui/audio-track-radio-group/audio-track-radio-group.js +64 -0
  302. package/dist/default/ui/audio-track-radio-group/audio-track-radio-group.js.map +1 -0
  303. package/dist/default/ui/audio-track-radio-group/index.js +2 -0
  304. package/dist/default/ui/buffering-indicator/buffering-indicator.js +0 -1
  305. package/dist/default/ui/buffering-indicator/buffering-indicator.js.map +1 -1
  306. package/dist/default/ui/captions-button/captions-button.js +0 -1
  307. package/dist/default/ui/captions-button/captions-button.js.map +1 -1
  308. package/dist/default/ui/captions-radio-group/captions-radio-group.js +64 -0
  309. package/dist/default/ui/captions-radio-group/captions-radio-group.js.map +1 -0
  310. package/dist/default/ui/captions-radio-group/index.js +2 -1
  311. package/dist/default/ui/captions-radio-group/use-captions-options.js +12 -30
  312. package/dist/default/ui/captions-radio-group/use-captions-options.js.map +1 -1
  313. package/dist/default/ui/cast-button/cast-button.js +0 -1
  314. package/dist/default/ui/cast-button/cast-button.js.map +1 -1
  315. package/dist/default/ui/controls/context.js +0 -1
  316. package/dist/default/ui/controls/context.js.map +1 -1
  317. package/dist/default/ui/controls/controls-group.js +0 -1
  318. package/dist/default/ui/controls/controls-group.js.map +1 -1
  319. package/dist/default/ui/controls/controls-root.js +0 -1
  320. package/dist/default/ui/controls/controls-root.js.map +1 -1
  321. package/dist/default/ui/create-context-part.js +0 -1
  322. package/dist/default/ui/create-context-part.js.map +1 -1
  323. package/dist/default/ui/create-media-button.js +0 -1
  324. package/dist/default/ui/create-media-button.js.map +1 -1
  325. package/dist/default/ui/error-dialog/context.js +0 -1
  326. package/dist/default/ui/error-dialog/context.js.map +1 -1
  327. package/dist/default/ui/error-dialog/error-dialog-close.js +0 -1
  328. package/dist/default/ui/error-dialog/error-dialog-close.js.map +1 -1
  329. package/dist/default/ui/error-dialog/error-dialog-description.js +0 -1
  330. package/dist/default/ui/error-dialog/error-dialog-description.js.map +1 -1
  331. package/dist/default/ui/error-dialog/error-dialog-root.js +0 -1
  332. package/dist/default/ui/error-dialog/error-dialog-root.js.map +1 -1
  333. package/dist/default/ui/error-dialog/error-dialog-title.js +0 -1
  334. package/dist/default/ui/error-dialog/error-dialog-title.js.map +1 -1
  335. package/dist/default/ui/fullscreen-button/fullscreen-button.js +0 -1
  336. package/dist/default/ui/fullscreen-button/fullscreen-button.js.map +1 -1
  337. package/dist/default/ui/gesture/gesture.js +0 -1
  338. package/dist/default/ui/gesture/gesture.js.map +1 -1
  339. package/dist/default/ui/gesture/use-doubletap-gesture.js +0 -1
  340. package/dist/default/ui/gesture/use-doubletap-gesture.js.map +1 -1
  341. package/dist/default/ui/gesture/use-tap-gesture.js +0 -1
  342. package/dist/default/ui/gesture/use-tap-gesture.js.map +1 -1
  343. package/dist/default/ui/hooks/create-radio-options-hook.js +42 -0
  344. package/dist/default/ui/hooks/create-radio-options-hook.js.map +1 -0
  345. package/dist/default/ui/hooks/use-button.js +0 -1
  346. package/dist/default/ui/hooks/use-button.js.map +1 -1
  347. package/dist/default/ui/hooks/use-positioned-state.js +0 -1
  348. package/dist/default/ui/hooks/use-positioned-state.js.map +1 -1
  349. package/dist/default/ui/hooks/use-slider.js +49 -14
  350. package/dist/default/ui/hooks/use-slider.js.map +1 -1
  351. package/dist/default/ui/hotkey/hotkey.js +0 -1
  352. package/dist/default/ui/hotkey/hotkey.js.map +1 -1
  353. package/dist/default/ui/hotkey/use-hotkey-shortcut.js +0 -1
  354. package/dist/default/ui/hotkey/use-hotkey-shortcut.js.map +1 -1
  355. package/dist/default/ui/hotkey/use-hotkey.js +0 -1
  356. package/dist/default/ui/hotkey/use-hotkey.js.map +1 -1
  357. package/dist/{dev/ui/input-indicators → default/ui/input-indicator}/use-indicator-visibility.js +1 -2
  358. package/dist/default/ui/input-indicator/use-indicator-visibility.js.map +1 -0
  359. package/dist/{dev/ui/input-indicators → default/ui/input-indicator}/use-input-action-subscription.js +1 -2
  360. package/dist/default/ui/input-indicator/use-input-action-subscription.js.map +1 -0
  361. package/dist/default/ui/{input-indicators → input-indicator}/use-input-indicator-root.js +1 -2
  362. package/dist/default/ui/input-indicator/use-input-indicator-root.js.map +1 -0
  363. package/dist/{dev/ui/input-indicators → default/ui/input-indicator}/use-rendered-indicator-state.js +1 -2
  364. package/dist/default/ui/input-indicator/use-rendered-indicator-state.js.map +1 -0
  365. package/dist/default/ui/live-button/live-button.js +0 -1
  366. package/dist/default/ui/live-button/live-button.js.map +1 -1
  367. package/dist/default/ui/menu/context.js +1 -12
  368. package/dist/default/ui/menu/context.js.map +1 -1
  369. package/dist/default/ui/menu/index.parts.js +3 -9
  370. package/dist/default/ui/menu/index.parts.js.map +1 -1
  371. package/dist/default/ui/menu/menu-checkbox-item.js +4 -2
  372. package/dist/default/ui/menu/menu-checkbox-item.js.map +1 -1
  373. package/dist/default/ui/menu/menu-content.js +78 -237
  374. package/dist/default/ui/menu/menu-content.js.map +1 -1
  375. package/dist/default/ui/menu/menu-group-label.js +0 -1
  376. package/dist/default/ui/menu/menu-group-label.js.map +1 -1
  377. package/dist/default/ui/menu/menu-group.js +0 -1
  378. package/dist/default/ui/menu/menu-group.js.map +1 -1
  379. package/dist/default/ui/menu/menu-item-indicator.js +0 -1
  380. package/dist/default/ui/menu/menu-item-indicator.js.map +1 -1
  381. package/dist/default/ui/menu/menu-item.js +11 -19
  382. package/dist/default/ui/menu/menu-item.js.map +1 -1
  383. package/dist/default/ui/menu/menu-keyboard.js +31 -0
  384. package/dist/default/ui/menu/menu-keyboard.js.map +1 -0
  385. package/dist/default/ui/menu/menu-radio-group.js +0 -1
  386. package/dist/default/ui/menu/menu-radio-group.js.map +1 -1
  387. package/dist/default/ui/menu/menu-radio-item.js +8 -7
  388. package/dist/default/ui/menu/menu-radio-item.js.map +1 -1
  389. package/dist/default/ui/menu/menu-root.js +46 -62
  390. package/dist/default/ui/menu/menu-root.js.map +1 -1
  391. package/dist/default/ui/menu/menu-separator.js +0 -1
  392. package/dist/default/ui/menu/menu-separator.js.map +1 -1
  393. package/dist/default/ui/menu/menu-trigger.js +75 -98
  394. package/dist/default/ui/menu/menu-trigger.js.map +1 -1
  395. package/dist/default/ui/menu/use-menu-group.js +0 -1
  396. package/dist/default/ui/menu/use-menu-group.js.map +1 -1
  397. package/dist/default/ui/mute-button/mute-button.js +2 -2
  398. package/dist/default/ui/mute-button/mute-button.js.map +1 -1
  399. package/dist/default/ui/pip-button/pip-button.js +0 -1
  400. package/dist/default/ui/pip-button/pip-button.js.map +1 -1
  401. package/dist/default/ui/play-button/play-button.js +0 -1
  402. package/dist/default/ui/play-button/play-button.js.map +1 -1
  403. package/dist/default/ui/playback-rate/use-playback-rate-options.js +14 -23
  404. package/dist/default/ui/playback-rate/use-playback-rate-options.js.map +1 -1
  405. package/dist/default/ui/playback-rate-button/playback-rate-button.js +0 -1
  406. package/dist/default/ui/playback-rate-button/playback-rate-button.js.map +1 -1
  407. package/dist/default/ui/playback-rate-radio-group/index.js +2 -0
  408. package/dist/default/ui/playback-rate-radio-group/playback-rate-radio-group.js +64 -0
  409. package/dist/default/ui/playback-rate-radio-group/playback-rate-radio-group.js.map +1 -0
  410. package/dist/default/ui/popover/context.js +0 -1
  411. package/dist/default/ui/popover/context.js.map +1 -1
  412. package/dist/default/ui/popover/popover-arrow.js +0 -1
  413. package/dist/default/ui/popover/popover-arrow.js.map +1 -1
  414. package/dist/default/ui/popover/popover-popup.js +10 -81
  415. package/dist/default/ui/popover/popover-popup.js.map +1 -1
  416. package/dist/default/ui/popover/popover-root.js +2 -2
  417. package/dist/default/ui/popover/popover-root.js.map +1 -1
  418. package/dist/default/ui/popover/popover-trigger.js +4 -6
  419. package/dist/default/ui/popover/popover-trigger.js.map +1 -1
  420. package/dist/default/ui/popover/use-popup-position.js +33 -0
  421. package/dist/default/ui/popover/use-popup-position.js.map +1 -0
  422. package/dist/default/ui/poster/poster.js +8 -5
  423. package/dist/default/ui/poster/poster.js.map +1 -1
  424. package/dist/default/ui/quality/use-quality-options.js +9 -31
  425. package/dist/default/ui/quality/use-quality-options.js.map +1 -1
  426. package/dist/default/ui/quality-radio-group/index.js +2 -0
  427. package/dist/default/ui/quality-radio-group/quality-radio-group.js +65 -0
  428. package/dist/default/ui/quality-radio-group/quality-radio-group.js.map +1 -0
  429. package/dist/default/ui/seek-button/seek-button.js +0 -1
  430. package/dist/default/ui/seek-button/seek-button.js.map +1 -1
  431. package/dist/default/ui/seek-indicator/context.js +0 -1
  432. package/dist/default/ui/seek-indicator/context.js.map +1 -1
  433. package/dist/default/ui/seek-indicator/seek-indicator-root.js +1 -2
  434. package/dist/default/ui/seek-indicator/seek-indicator-root.js.map +1 -1
  435. package/dist/default/ui/seek-indicator/seek-indicator-value.js +0 -1
  436. package/dist/default/ui/seek-indicator/seek-indicator-value.js.map +1 -1
  437. package/dist/default/ui/slider/context.js +7 -3
  438. package/dist/default/ui/slider/context.js.map +1 -1
  439. package/dist/default/ui/slider/slider-buffer.js +0 -1
  440. package/dist/default/ui/slider/slider-buffer.js.map +1 -1
  441. package/dist/default/ui/slider/slider-fill.js +0 -1
  442. package/dist/default/ui/slider/slider-fill.js.map +1 -1
  443. package/dist/default/ui/slider/slider-preview.js +2 -4
  444. package/dist/default/ui/slider/slider-preview.js.map +1 -1
  445. package/dist/default/ui/slider/slider-root.js +3 -2
  446. package/dist/default/ui/slider/slider-root.js.map +1 -1
  447. package/dist/default/ui/slider/slider-thumb.js +0 -1
  448. package/dist/default/ui/slider/slider-thumb.js.map +1 -1
  449. package/dist/default/ui/slider/slider-thumbnail.js +2 -3
  450. package/dist/default/ui/slider/slider-thumbnail.js.map +1 -1
  451. package/dist/default/ui/slider/slider-track.js +0 -1
  452. package/dist/default/ui/slider/slider-track.js.map +1 -1
  453. package/dist/default/ui/slider/slider-value.js +3 -3
  454. package/dist/default/ui/slider/slider-value.js.map +1 -1
  455. package/dist/default/ui/status-announcer/status-announcer.js +7 -5
  456. package/dist/default/ui/status-announcer/status-announcer.js.map +1 -1
  457. package/dist/default/ui/status-indicator/context.js +0 -1
  458. package/dist/default/ui/status-indicator/context.js.map +1 -1
  459. package/dist/default/ui/status-indicator/status-indicator-root.js +2 -3
  460. package/dist/default/ui/status-indicator/status-indicator-root.js.map +1 -1
  461. package/dist/default/ui/status-indicator/status-indicator-value.js +0 -1
  462. package/dist/default/ui/status-indicator/status-indicator-value.js.map +1 -1
  463. package/dist/default/ui/thumbnail/thumbnail.js +0 -1
  464. package/dist/default/ui/thumbnail/thumbnail.js.map +1 -1
  465. package/dist/default/ui/time/time-group.js +0 -1
  466. package/dist/default/ui/time/time-group.js.map +1 -1
  467. package/dist/default/ui/time/time-separator.js +0 -1
  468. package/dist/default/ui/time/time-separator.js.map +1 -1
  469. package/dist/default/ui/time/time-value.js +13 -6
  470. package/dist/default/ui/time/time-value.js.map +1 -1
  471. package/dist/default/ui/time-slider/index.parts.js +5 -1
  472. package/dist/default/ui/time-slider/index.parts.js.map +1 -1
  473. package/dist/default/ui/time-slider/time-slider-chapters/slider-segments.js +60 -0
  474. package/dist/default/ui/time-slider/time-slider-chapters/slider-segments.js.map +1 -0
  475. package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js +45 -0
  476. package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js.map +1 -0
  477. package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapters.js +51 -0
  478. package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapters.js.map +1 -0
  479. package/dist/default/ui/time-slider/time-slider-root.js +6 -5
  480. package/dist/default/ui/time-slider/time-slider-root.js.map +1 -1
  481. package/dist/default/ui/tooltip/context.js +0 -1
  482. package/dist/default/ui/tooltip/context.js.map +1 -1
  483. package/dist/default/ui/tooltip/group-context.js +0 -1
  484. package/dist/default/ui/tooltip/group-context.js.map +1 -1
  485. package/dist/default/ui/tooltip/tooltip-arrow.js +0 -1
  486. package/dist/default/ui/tooltip/tooltip-arrow.js.map +1 -1
  487. package/dist/default/ui/tooltip/tooltip-label.js +0 -1
  488. package/dist/default/ui/tooltip/tooltip-label.js.map +1 -1
  489. package/dist/default/ui/tooltip/tooltip-popup.js +13 -83
  490. package/dist/default/ui/tooltip/tooltip-popup.js.map +1 -1
  491. package/dist/default/ui/tooltip/tooltip-provider.js +0 -1
  492. package/dist/default/ui/tooltip/tooltip-provider.js.map +1 -1
  493. package/dist/default/ui/tooltip/tooltip-root.js +5 -2
  494. package/dist/default/ui/tooltip/tooltip-root.js.map +1 -1
  495. package/dist/default/ui/tooltip/tooltip-shortcut.js +0 -1
  496. package/dist/default/ui/tooltip/tooltip-shortcut.js.map +1 -1
  497. package/dist/default/ui/tooltip/tooltip-trigger.js +2 -5
  498. package/dist/default/ui/tooltip/tooltip-trigger.js.map +1 -1
  499. package/dist/default/ui/volume-indicator/context.js +0 -1
  500. package/dist/default/ui/volume-indicator/context.js.map +1 -1
  501. package/dist/default/ui/volume-indicator/volume-indicator-fill.js +0 -1
  502. package/dist/default/ui/volume-indicator/volume-indicator-fill.js.map +1 -1
  503. package/dist/default/ui/volume-indicator/volume-indicator-root.js +1 -2
  504. package/dist/default/ui/volume-indicator/volume-indicator-root.js.map +1 -1
  505. package/dist/default/ui/volume-indicator/volume-indicator-value.js +0 -1
  506. package/dist/default/ui/volume-indicator/volume-indicator-value.js.map +1 -1
  507. package/dist/default/ui/volume-slider/volume-slider-root.js +10 -5
  508. package/dist/default/ui/volume-slider/volume-slider-root.js.map +1 -1
  509. package/dist/default/utils/merge-props.js +0 -1
  510. package/dist/default/utils/merge-props.js.map +1 -1
  511. package/dist/default/utils/use-attach-iframe.js +0 -1
  512. package/dist/default/utils/use-attach-iframe.js.map +1 -1
  513. package/dist/default/utils/use-attach-media.js +0 -1
  514. package/dist/default/utils/use-attach-media.js.map +1 -1
  515. package/dist/default/utils/use-composed-refs.js +0 -1
  516. package/dist/default/utils/use-composed-refs.js.map +1 -1
  517. package/dist/default/utils/use-destroy.js +0 -1
  518. package/dist/default/utils/use-destroy.js.map +1 -1
  519. package/dist/default/utils/use-force-render.js +0 -1
  520. package/dist/default/utils/use-force-render.js.map +1 -1
  521. package/dist/default/utils/use-latest-ref.js +0 -1
  522. package/dist/default/utils/use-latest-ref.js.map +1 -1
  523. package/dist/default/utils/use-media-component.js +0 -1
  524. package/dist/default/utils/use-media-component.js.map +1 -1
  525. package/dist/default/utils/use-media-instance.js +0 -1
  526. package/dist/default/utils/use-media-instance.js.map +1 -1
  527. package/dist/default/utils/use-render.js +0 -1
  528. package/dist/default/utils/use-render.js.map +1 -1
  529. package/dist/default/utils/use-safe-id.js +0 -1
  530. package/dist/default/utils/use-safe-id.js.map +1 -1
  531. package/dist/dev/__generated__/skins/default-video/styles/base.css +25 -0
  532. package/dist/dev/__generated__/skins/default-video/styles/buttons.css +152 -0
  533. package/dist/dev/__generated__/skins/default-video/styles/container.css +45 -0
  534. package/dist/dev/__generated__/skins/default-video/styles/controls.css +45 -0
  535. package/dist/dev/__generated__/skins/default-video/styles/overlays.css +11 -0
  536. package/dist/dev/__generated__/skins/default-video/styles/popups.css +45 -0
  537. package/dist/dev/__generated__/skins/default-video/styles/poster.css +47 -0
  538. package/dist/dev/__generated__/skins/default-video/styles/sliders.css +112 -0
  539. package/dist/dev/__generated__/skins/default-video/styles/styles.css +514 -0
  540. package/dist/dev/__generated__/skins/default-video/styles/theme.css +22 -0
  541. package/dist/dev/_virtual/_rolldown/runtime.js +15 -1
  542. package/dist/dev/i18n/context.d.ts.map +1 -1
  543. package/dist/dev/i18n/context.js +3 -4
  544. package/dist/dev/i18n/context.js.map +1 -1
  545. package/dist/dev/i18n/create-i18n.d.ts.map +1 -1
  546. package/dist/dev/i18n/create-i18n.js +0 -1
  547. package/dist/dev/i18n/create-i18n.js.map +1 -1
  548. package/dist/dev/i18n/locales/id/register.d.ts +1 -0
  549. package/dist/dev/i18n/locales/id/register.js +8 -0
  550. package/dist/dev/i18n/locales/id/register.js.map +1 -0
  551. package/dist/dev/i18n/locales/id.d.ts +2 -0
  552. package/dist/dev/i18n/locales/id.js +2 -0
  553. package/dist/dev/i18n/locales/lt/register.d.ts +1 -0
  554. package/dist/dev/i18n/locales/lt/register.js +8 -0
  555. package/dist/dev/i18n/locales/lt/register.js.map +1 -0
  556. package/dist/dev/i18n/locales/lt.d.ts +2 -0
  557. package/dist/dev/i18n/locales/lt.js +2 -0
  558. package/dist/dev/icons/dist/react/default/airplay-enter.js.map +1 -1
  559. package/dist/dev/icons/dist/react/default/airplay-exit.js +1 -2
  560. package/dist/dev/icons/dist/react/default/airplay-exit.js.map +1 -1
  561. package/dist/dev/icons/dist/react/default/captions-off.js.map +1 -1
  562. package/dist/dev/icons/dist/react/default/captions-on.js.map +1 -1
  563. package/dist/dev/icons/dist/react/default/cast-enter.js +2 -45
  564. package/dist/dev/icons/dist/react/default/cast-enter.js.map +1 -1
  565. package/dist/dev/icons/dist/react/default/cast-exit.js +4 -61
  566. package/dist/dev/icons/dist/react/default/cast-exit.js.map +1 -1
  567. package/dist/dev/icons/dist/react/default/check.js.map +1 -1
  568. package/dist/dev/icons/dist/react/default/chevron.js.map +1 -1
  569. package/dist/dev/icons/dist/react/default/fullscreen-enter.js.map +1 -1
  570. package/dist/dev/icons/dist/react/default/fullscreen-exit.js.map +1 -1
  571. package/dist/dev/icons/dist/react/default/gear.js.map +1 -1
  572. package/dist/dev/icons/dist/react/default/pause.js.map +1 -1
  573. package/dist/dev/icons/dist/react/default/pip-enter.js.map +1 -1
  574. package/dist/dev/icons/dist/react/default/pip-exit.js.map +1 -1
  575. package/dist/dev/icons/dist/react/default/play.js.map +1 -1
  576. package/dist/dev/icons/dist/react/default/quality.js +1 -1
  577. package/dist/dev/icons/dist/react/default/quality.js.map +1 -1
  578. package/dist/dev/icons/dist/react/default/restart.js.map +1 -1
  579. package/dist/dev/icons/dist/react/default/seek.js.map +1 -1
  580. package/dist/dev/icons/dist/react/default/speech.js.map +1 -1
  581. package/dist/dev/icons/dist/react/default/speed.js.map +1 -1
  582. package/dist/dev/icons/dist/react/default/spinner.js +1 -1
  583. package/dist/dev/icons/dist/react/default/spinner.js.map +1 -1
  584. package/dist/dev/icons/dist/react/default/switches.js.map +1 -1
  585. package/dist/dev/icons/dist/react/default/volume-high.js.map +1 -1
  586. package/dist/dev/icons/dist/react/default/volume-low.js.map +1 -1
  587. package/dist/dev/icons/dist/react/default/volume-off.js.map +1 -1
  588. package/dist/dev/icons/dist/react/minimal/airplay-enter.js.map +1 -1
  589. package/dist/dev/icons/dist/react/minimal/airplay-exit.js +1 -2
  590. package/dist/dev/icons/dist/react/minimal/airplay-exit.js.map +1 -1
  591. package/dist/dev/icons/dist/react/minimal/captions-off.js.map +1 -1
  592. package/dist/dev/icons/dist/react/minimal/captions-on.js.map +1 -1
  593. package/dist/dev/icons/dist/react/minimal/cast-enter.js +2 -45
  594. package/dist/dev/icons/dist/react/minimal/cast-enter.js.map +1 -1
  595. package/dist/dev/icons/dist/react/minimal/cast-exit.js +4 -61
  596. package/dist/dev/icons/dist/react/minimal/cast-exit.js.map +1 -1
  597. package/dist/dev/icons/dist/react/minimal/check.js.map +1 -1
  598. package/dist/dev/icons/dist/react/minimal/chevron.js.map +1 -1
  599. package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js.map +1 -1
  600. package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js.map +1 -1
  601. package/dist/dev/icons/dist/react/minimal/gear.js.map +1 -1
  602. package/dist/dev/icons/dist/react/minimal/pause.js.map +1 -1
  603. package/dist/dev/icons/dist/react/minimal/pip-enter.js.map +1 -1
  604. package/dist/dev/icons/dist/react/minimal/pip-exit.js.map +1 -1
  605. package/dist/dev/icons/dist/react/minimal/play.js.map +1 -1
  606. package/dist/dev/icons/dist/react/minimal/quality.js +1 -1
  607. package/dist/dev/icons/dist/react/minimal/quality.js.map +1 -1
  608. package/dist/dev/icons/dist/react/minimal/restart.js.map +1 -1
  609. package/dist/dev/icons/dist/react/minimal/seek.js.map +1 -1
  610. package/dist/dev/icons/dist/react/minimal/speech.js +7 -40
  611. package/dist/dev/icons/dist/react/minimal/speech.js.map +1 -1
  612. package/dist/dev/icons/dist/react/minimal/speed.js.map +1 -1
  613. package/dist/dev/icons/dist/react/minimal/spinner.js +1 -1
  614. package/dist/dev/icons/dist/react/minimal/spinner.js.map +1 -1
  615. package/dist/dev/icons/dist/react/minimal/switches.js.map +1 -1
  616. package/dist/dev/icons/dist/react/minimal/volume-high.js.map +1 -1
  617. package/dist/dev/icons/dist/react/minimal/volume-low.js.map +1 -1
  618. package/dist/dev/icons/dist/react/minimal/volume-off.js.map +1 -1
  619. package/dist/dev/index.d.ts +18 -2
  620. package/dist/dev/index.d.ts.map +1 -0
  621. package/dist/dev/index.js +7 -3
  622. package/dist/dev/media/audio.d.ts.map +1 -1
  623. package/dist/dev/media/audio.js +0 -1
  624. package/dist/dev/media/audio.js.map +1 -1
  625. package/dist/dev/media/cloudflare-video/index.d.ts +2 -0
  626. package/dist/dev/media/cloudflare-video/index.js +2 -0
  627. package/dist/dev/media/cloudflare-video/media.d.ts +13 -0
  628. package/dist/dev/media/cloudflare-video/media.d.ts.map +1 -0
  629. package/dist/dev/media/cloudflare-video/media.js +38 -0
  630. package/dist/dev/media/cloudflare-video/media.js.map +1 -0
  631. package/dist/dev/media/google-cast/google-cast.d.ts +3 -3
  632. package/dist/dev/media/google-cast/google-cast.js +3 -3
  633. package/dist/dev/media/google-cast/google-cast.js.map +1 -1
  634. package/dist/dev/media/hls-audio/index.d.ts +2 -0
  635. package/dist/dev/media/hls-audio/index.js +2 -0
  636. package/dist/dev/media/hls-audio/media.d.ts +13 -0
  637. package/dist/dev/media/hls-audio/media.d.ts.map +1 -0
  638. package/dist/dev/media/hls-audio/media.js +21 -0
  639. package/dist/dev/media/hls-audio/media.js.map +1 -0
  640. package/dist/dev/media/hls-background-video/index.d.ts +2 -0
  641. package/dist/dev/media/hls-background-video/index.js +2 -0
  642. package/dist/dev/media/hls-background-video/media.d.ts +28 -0
  643. package/dist/dev/media/hls-background-video/media.d.ts.map +1 -0
  644. package/dist/dev/media/hls-background-video/media.js +45 -0
  645. package/dist/dev/media/hls-background-video/media.js.map +1 -0
  646. package/dist/dev/media/hls-video/index.d.ts +2 -0
  647. package/dist/dev/media/hls-video/index.js +2 -0
  648. package/dist/dev/media/hls-video/media.d.ts +13 -0
  649. package/dist/dev/media/hls-video/media.d.ts.map +1 -0
  650. package/dist/{default/media/simple-hls-video → dev/media/hls-video}/media.js +6 -7
  651. package/dist/dev/media/hls-video/media.js.map +1 -0
  652. package/dist/dev/media/mux-audio/{media.d.ts → hls-js.d.ts} +3 -3
  653. package/dist/dev/media/mux-audio/hls-js.d.ts.map +1 -0
  654. package/dist/dev/media/mux-audio/{media.js → hls-js.js} +2 -2
  655. package/dist/dev/media/mux-audio/hls-js.js.map +1 -0
  656. package/dist/dev/media/mux-audio/index.d.ts +1 -1
  657. package/dist/dev/media/mux-audio/index.js +1 -1
  658. package/dist/dev/media/mux-audio/spf.d.ts +14 -0
  659. package/dist/dev/media/mux-audio/spf.d.ts.map +1 -0
  660. package/dist/dev/media/mux-audio/spf.js +26 -0
  661. package/dist/dev/media/mux-audio/spf.js.map +1 -0
  662. package/dist/dev/media/mux-background-video/index.d.ts +3 -0
  663. package/dist/dev/media/mux-background-video/index.js +2 -0
  664. package/dist/dev/media/mux-data/mux-data.d.ts +7 -3
  665. package/dist/dev/media/mux-data/mux-data.d.ts.map +1 -1
  666. package/dist/dev/media/mux-data/mux-data.js +7 -3
  667. package/dist/dev/media/mux-data/mux-data.js.map +1 -1
  668. package/dist/dev/media/mux-video/{media.d.ts → hls-js.d.ts} +3 -3
  669. package/dist/dev/media/mux-video/hls-js.d.ts.map +1 -0
  670. package/dist/dev/media/mux-video/hls-js.js +27 -0
  671. package/dist/dev/media/mux-video/hls-js.js.map +1 -0
  672. package/dist/dev/media/mux-video/index.d.ts +1 -1
  673. package/dist/dev/media/mux-video/index.js +1 -1
  674. package/dist/dev/media/mux-video/spf.d.ts +14 -0
  675. package/dist/dev/media/mux-video/spf.d.ts.map +1 -0
  676. package/dist/dev/media/mux-video/spf.js +27 -0
  677. package/dist/dev/media/mux-video/spf.js.map +1 -0
  678. package/dist/dev/media/mux-video/storyboard.js +43 -0
  679. package/dist/dev/media/mux-video/storyboard.js.map +1 -0
  680. package/dist/dev/media/spotify-audio/index.d.ts +2 -0
  681. package/dist/dev/media/spotify-audio/index.js +2 -0
  682. package/dist/dev/media/spotify-audio/media.d.ts +13 -0
  683. package/dist/dev/media/spotify-audio/media.d.ts.map +1 -0
  684. package/dist/dev/media/spotify-audio/media.js +40 -0
  685. package/dist/dev/media/spotify-audio/media.js.map +1 -0
  686. package/dist/dev/media/tiktok-video/index.d.ts +2 -0
  687. package/dist/dev/media/tiktok-video/index.js +2 -0
  688. package/dist/dev/media/tiktok-video/media.d.ts +13 -0
  689. package/dist/dev/media/tiktok-video/media.d.ts.map +1 -0
  690. package/dist/dev/media/tiktok-video/media.js +38 -0
  691. package/dist/dev/media/tiktok-video/media.js.map +1 -0
  692. package/dist/dev/media/twitch-video/index.d.ts +2 -0
  693. package/dist/dev/media/twitch-video/index.js +2 -0
  694. package/dist/dev/media/twitch-video/media.d.ts +13 -0
  695. package/dist/dev/media/twitch-video/media.d.ts.map +1 -0
  696. package/dist/dev/media/twitch-video/media.js +38 -0
  697. package/dist/dev/media/twitch-video/media.js.map +1 -0
  698. package/dist/dev/media/video.d.ts.map +1 -1
  699. package/dist/dev/media/video.js +0 -1
  700. package/dist/dev/media/video.js.map +1 -1
  701. package/dist/dev/media/vimeo-video/media.d.ts.map +1 -1
  702. package/dist/dev/media/vimeo-video/media.js +4 -4
  703. package/dist/dev/media/vimeo-video/media.js.map +1 -1
  704. package/dist/dev/media/youtube-video/index.d.ts +2 -0
  705. package/dist/dev/media/youtube-video/index.js +2 -0
  706. package/dist/dev/media/youtube-video/media.d.ts +13 -0
  707. package/dist/dev/media/youtube-video/media.d.ts.map +1 -0
  708. package/dist/dev/media/youtube-video/media.js +37 -0
  709. package/dist/dev/media/youtube-video/media.js.map +1 -0
  710. package/dist/dev/player/container.d.ts.map +1 -1
  711. package/dist/dev/player/container.js +8 -4
  712. package/dist/dev/player/container.js.map +1 -1
  713. package/dist/dev/player/context.d.ts +7 -8
  714. package/dist/dev/player/context.d.ts.map +1 -1
  715. package/dist/dev/player/context.js +6 -11
  716. package/dist/dev/player/context.js.map +1 -1
  717. package/dist/dev/player/create-player.d.ts +6 -8
  718. package/dist/dev/player/create-player.d.ts.map +1 -1
  719. package/dist/dev/player/create-player.js +45 -15
  720. package/dist/dev/player/create-player.js.map +1 -1
  721. package/dist/dev/player/popup-group-context.js +17 -0
  722. package/dist/dev/player/popup-group-context.js.map +1 -0
  723. package/dist/dev/presets/audio/index.d.ts +2 -1
  724. package/dist/dev/presets/audio/index.js +8 -1
  725. package/dist/dev/presets/audio/index.js.map +1 -0
  726. package/dist/dev/presets/audio/minimal-skin.css +423 -295
  727. package/dist/dev/presets/audio/minimal-skin.d.ts.map +1 -1
  728. package/dist/dev/presets/audio/minimal-skin.js +13 -19
  729. package/dist/dev/presets/audio/minimal-skin.js.map +1 -1
  730. package/dist/dev/presets/audio/minimal-skin.tailwind.d.ts.map +1 -1
  731. package/dist/dev/presets/audio/minimal-skin.tailwind.js +82 -20
  732. package/dist/dev/presets/audio/minimal-skin.tailwind.js.map +1 -1
  733. package/dist/dev/presets/audio/player.d.ts +13 -0
  734. package/dist/dev/presets/audio/player.d.ts.map +1 -0
  735. package/dist/dev/presets/audio/player.js +13 -0
  736. package/dist/dev/presets/audio/player.js.map +1 -0
  737. package/dist/dev/presets/audio/skin.css +459 -345
  738. package/dist/dev/presets/audio/skin.d.ts.map +1 -1
  739. package/dist/dev/presets/audio/skin.js +14 -19
  740. package/dist/dev/presets/audio/skin.js.map +1 -1
  741. package/dist/dev/presets/audio/skin.tailwind.d.ts.map +1 -1
  742. package/dist/dev/presets/audio/skin.tailwind.js +15 -19
  743. package/dist/dev/presets/audio/skin.tailwind.js.map +1 -1
  744. package/dist/dev/presets/background/index.d.ts +2 -1
  745. package/dist/dev/presets/background/index.js +8 -1
  746. package/dist/dev/presets/background/index.js.map +1 -0
  747. package/dist/dev/presets/background/player.d.ts +10 -0
  748. package/dist/dev/presets/background/player.d.ts.map +1 -0
  749. package/dist/dev/presets/background/player.js +13 -0
  750. package/dist/dev/presets/background/player.js.map +1 -0
  751. package/dist/dev/presets/background/skin.css +3 -3
  752. package/dist/dev/presets/background/skin.d.ts.map +1 -1
  753. package/dist/dev/presets/background/skin.js +1 -0
  754. package/dist/dev/presets/background/skin.js.map +1 -1
  755. package/dist/dev/presets/live-audio/index.d.ts +2 -1
  756. package/dist/dev/presets/live-audio/index.js +8 -1
  757. package/dist/dev/presets/live-audio/index.js.map +1 -0
  758. package/dist/dev/presets/live-audio/minimal-skin.css +423 -295
  759. package/dist/dev/presets/live-audio/minimal-skin.d.ts.map +1 -1
  760. package/dist/dev/presets/live-audio/minimal-skin.js +3 -2
  761. package/dist/dev/presets/live-audio/minimal-skin.js.map +1 -1
  762. package/dist/dev/presets/live-audio/minimal-skin.tailwind.d.ts.map +1 -1
  763. package/dist/dev/presets/live-audio/minimal-skin.tailwind.js +5 -4
  764. package/dist/dev/presets/live-audio/minimal-skin.tailwind.js.map +1 -1
  765. package/dist/dev/presets/live-audio/player.d.ts +13 -0
  766. package/dist/dev/presets/live-audio/player.d.ts.map +1 -0
  767. package/dist/dev/presets/live-audio/player.js +13 -0
  768. package/dist/dev/presets/live-audio/player.js.map +1 -0
  769. package/dist/dev/presets/live-audio/skin.css +459 -345
  770. package/dist/dev/presets/live-audio/skin.d.ts.map +1 -1
  771. package/dist/dev/presets/live-audio/skin.js +3 -2
  772. package/dist/dev/presets/live-audio/skin.js.map +1 -1
  773. package/dist/dev/presets/live-audio/skin.tailwind.d.ts.map +1 -1
  774. package/dist/dev/presets/live-audio/skin.tailwind.js +5 -4
  775. package/dist/dev/presets/live-audio/skin.tailwind.js.map +1 -1
  776. package/dist/dev/presets/live-video/index.d.ts +2 -1
  777. package/dist/dev/presets/live-video/index.js +8 -1
  778. package/dist/dev/presets/live-video/index.js.map +1 -0
  779. package/dist/dev/presets/live-video/minimal-skin.css +656 -588
  780. package/dist/dev/presets/live-video/minimal-skin.d.ts.map +1 -1
  781. package/dist/dev/presets/live-video/minimal-skin.js +13 -12
  782. package/dist/dev/presets/live-video/minimal-skin.js.map +1 -1
  783. package/dist/dev/presets/live-video/minimal-skin.tailwind.d.ts.map +1 -1
  784. package/dist/dev/presets/live-video/minimal-skin.tailwind.js +28 -26
  785. package/dist/dev/presets/live-video/minimal-skin.tailwind.js.map +1 -1
  786. package/dist/dev/presets/live-video/player.d.ts +13 -0
  787. package/dist/dev/presets/live-video/player.d.ts.map +1 -0
  788. package/dist/dev/presets/live-video/player.js +13 -0
  789. package/dist/dev/presets/live-video/player.js.map +1 -0
  790. package/dist/dev/presets/live-video/skin.css +661 -622
  791. package/dist/dev/presets/live-video/skin.d.ts.map +1 -1
  792. package/dist/dev/presets/live-video/skin.js +12 -11
  793. package/dist/dev/presets/live-video/skin.js.map +1 -1
  794. package/dist/dev/presets/live-video/skin.tailwind.d.ts.map +1 -1
  795. package/dist/dev/presets/live-video/skin.tailwind.js +25 -112
  796. package/dist/dev/presets/live-video/skin.tailwind.js.map +1 -1
  797. package/dist/dev/presets/video/index.d.ts +2 -1
  798. package/dist/dev/presets/video/index.js +8 -1
  799. package/dist/dev/presets/video/index.js.map +1 -0
  800. package/dist/dev/presets/video/minimal-skin.css +656 -588
  801. package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
  802. package/dist/dev/presets/video/minimal-skin.js +213 -211
  803. package/dist/dev/presets/video/minimal-skin.js.map +1 -1
  804. package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
  805. package/dist/dev/presets/video/minimal-skin.tailwind.js +227 -233
  806. package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
  807. package/dist/dev/presets/video/player.d.ts +13 -0
  808. package/dist/dev/presets/video/player.d.ts.map +1 -0
  809. package/dist/dev/presets/video/player.js +13 -0
  810. package/dist/dev/presets/video/player.js.map +1 -0
  811. package/dist/dev/presets/video/skin.css +661 -622
  812. package/dist/dev/presets/video/skin.d.ts.map +1 -1
  813. package/dist/dev/presets/video/skin.js +213 -207
  814. package/dist/dev/presets/video/skin.js.map +1 -1
  815. package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
  816. package/dist/dev/presets/video/skin.tailwind.js +225 -227
  817. package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
  818. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +6 -6
  819. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  820. package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js +1 -1
  821. package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js.map +1 -1
  822. package/dist/dev/skins/dist/default/default/tailwind/components/button.js +4 -4
  823. package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  824. package/dist/dev/skins/dist/default/default/tailwind/components/container.js +8 -0
  825. package/dist/dev/skins/dist/default/default/tailwind/components/container.js.map +1 -0
  826. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js +1 -1
  827. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  828. package/dist/dev/skins/dist/default/default/tailwind/components/error.js +1 -1
  829. package/dist/dev/skins/dist/default/default/tailwind/components/error.js.map +1 -1
  830. package/dist/dev/skins/dist/default/default/tailwind/components/icon.js +1 -1
  831. package/dist/dev/skins/dist/default/default/tailwind/components/icon.js.map +1 -1
  832. package/dist/dev/skins/dist/default/default/tailwind/components/input-indicator-overlay.js +7 -0
  833. package/dist/dev/skins/dist/default/default/tailwind/components/input-indicator-overlay.js.map +1 -0
  834. package/dist/dev/skins/dist/default/default/tailwind/components/input-indicator.js +9 -0
  835. package/dist/dev/skins/dist/default/default/tailwind/components/input-indicator.js.map +1 -0
  836. package/dist/dev/skins/dist/default/default/tailwind/components/menu.js +8 -12
  837. package/dist/dev/skins/dist/default/default/tailwind/components/menu.js.map +1 -1
  838. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js +1 -1
  839. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  840. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js +1 -1
  841. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  842. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js +1 -1
  843. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
  844. package/dist/dev/skins/dist/default/default/tailwind/components/seek-indicator.js +12 -0
  845. package/dist/dev/skins/dist/default/default/tailwind/components/seek-indicator.js.map +1 -0
  846. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js +17 -9
  847. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  848. package/dist/dev/skins/dist/default/default/tailwind/components/status-indicator.js +29 -0
  849. package/dist/dev/skins/dist/default/default/tailwind/components/status-indicator.js.map +1 -0
  850. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js +1 -1
  851. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js.map +1 -1
  852. package/dist/dev/skins/dist/default/default/tailwind/components/thumbnail.js +3 -4
  853. package/dist/dev/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -1
  854. package/dist/dev/skins/dist/default/default/tailwind/components/time.js +2 -2
  855. package/dist/dev/skins/dist/default/default/tailwind/components/time.js.map +1 -1
  856. package/dist/dev/skins/dist/default/default/tailwind/components/volume-indicator.js +18 -0
  857. package/dist/dev/skins/dist/default/default/tailwind/components/volume-indicator.js.map +1 -0
  858. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +22 -19
  859. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  860. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +6 -6
  861. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  862. package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js +1 -1
  863. package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -1
  864. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js +4 -4
  865. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  866. package/dist/dev/skins/dist/default/minimal/tailwind/components/container.js +8 -0
  867. package/dist/dev/skins/dist/default/minimal/tailwind/components/container.js.map +1 -0
  868. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  869. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  870. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js +1 -1
  871. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js.map +1 -1
  872. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js +1 -1
  873. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -1
  874. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-indicator-overlay.js +7 -0
  875. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-indicator-overlay.js.map +1 -0
  876. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-indicator.js +10 -0
  877. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-indicator.js.map +1 -0
  878. package/dist/dev/skins/dist/default/minimal/tailwind/components/menu.js +9 -13
  879. package/dist/dev/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -1
  880. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
  881. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  882. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js +2 -2
  883. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  884. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js +1 -1
  885. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
  886. package/dist/dev/skins/dist/default/minimal/tailwind/components/seek-indicator.js +12 -0
  887. package/dist/dev/skins/dist/default/minimal/tailwind/components/seek-indicator.js.map +1 -0
  888. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js +17 -9
  889. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  890. package/dist/dev/skins/dist/default/minimal/tailwind/components/status-indicator.js +29 -0
  891. package/dist/dev/skins/dist/default/minimal/tailwind/components/status-indicator.js.map +1 -0
  892. package/dist/dev/skins/dist/default/minimal/tailwind/components/thumbnail.js +3 -5
  893. package/dist/dev/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -1
  894. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js +2 -2
  895. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  896. package/dist/dev/skins/dist/default/minimal/tailwind/components/volume-indicator.js +19 -0
  897. package/dist/dev/skins/dist/default/minimal/tailwind/components/volume-indicator.js.map +1 -0
  898. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +14 -15
  899. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  900. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js +22 -20
  901. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  902. package/dist/dev/ui/airplay-button/airplay-button.d.ts.map +1 -1
  903. package/dist/dev/ui/airplay-button/airplay-button.js +0 -1
  904. package/dist/dev/ui/airplay-button/airplay-button.js.map +1 -1
  905. package/dist/dev/ui/alert-dialog/alert-dialog-close.d.ts.map +1 -1
  906. package/dist/dev/ui/alert-dialog/alert-dialog-close.js +0 -1
  907. package/dist/dev/ui/alert-dialog/alert-dialog-close.js.map +1 -1
  908. package/dist/dev/ui/alert-dialog/alert-dialog-description.d.ts.map +1 -1
  909. package/dist/dev/ui/alert-dialog/alert-dialog-description.js +0 -1
  910. package/dist/dev/ui/alert-dialog/alert-dialog-description.js.map +1 -1
  911. package/dist/dev/ui/alert-dialog/alert-dialog-popup.d.ts.map +1 -1
  912. package/dist/dev/ui/alert-dialog/alert-dialog-popup.js +0 -1
  913. package/dist/dev/ui/alert-dialog/alert-dialog-popup.js.map +1 -1
  914. package/dist/dev/ui/alert-dialog/alert-dialog-root.d.ts.map +1 -1
  915. package/dist/dev/ui/alert-dialog/alert-dialog-root.js +0 -1
  916. package/dist/dev/ui/alert-dialog/alert-dialog-root.js.map +1 -1
  917. package/dist/dev/ui/alert-dialog/alert-dialog-title.d.ts.map +1 -1
  918. package/dist/dev/ui/alert-dialog/alert-dialog-title.js +0 -1
  919. package/dist/dev/ui/alert-dialog/alert-dialog-title.js.map +1 -1
  920. package/dist/dev/ui/alert-dialog/context.d.ts.map +1 -1
  921. package/dist/dev/ui/alert-dialog/context.js +0 -1
  922. package/dist/dev/ui/alert-dialog/context.js.map +1 -1
  923. package/dist/dev/ui/audio-track/use-audio-track-options.d.ts +6 -6
  924. package/dist/dev/ui/audio-track/use-audio-track-options.d.ts.map +1 -1
  925. package/dist/dev/ui/audio-track/use-audio-track-options.js +9 -28
  926. package/dist/dev/ui/audio-track/use-audio-track-options.js.map +1 -1
  927. package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group.d.ts +43 -0
  928. package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group.d.ts.map +1 -0
  929. package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group.js +64 -0
  930. package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group.js.map +1 -0
  931. package/dist/dev/ui/audio-track-radio-group/index.d.ts +2 -0
  932. package/dist/dev/ui/audio-track-radio-group/index.js +2 -0
  933. package/dist/dev/ui/buffering-indicator/buffering-indicator.d.ts.map +1 -1
  934. package/dist/dev/ui/buffering-indicator/buffering-indicator.js +0 -1
  935. package/dist/dev/ui/buffering-indicator/buffering-indicator.js.map +1 -1
  936. package/dist/dev/ui/captions-button/captions-button.d.ts.map +1 -1
  937. package/dist/dev/ui/captions-button/captions-button.js +0 -1
  938. package/dist/dev/ui/captions-button/captions-button.js.map +1 -1
  939. package/dist/dev/ui/captions-radio-group/captions-radio-group.d.ts +43 -0
  940. package/dist/dev/ui/captions-radio-group/captions-radio-group.d.ts.map +1 -0
  941. package/dist/dev/ui/captions-radio-group/captions-radio-group.js +64 -0
  942. package/dist/dev/ui/captions-radio-group/captions-radio-group.js.map +1 -0
  943. package/dist/dev/ui/captions-radio-group/index.d.ts +2 -1
  944. package/dist/dev/ui/captions-radio-group/index.js +2 -1
  945. package/dist/dev/ui/captions-radio-group/use-captions-options.d.ts +6 -6
  946. package/dist/dev/ui/captions-radio-group/use-captions-options.d.ts.map +1 -1
  947. package/dist/dev/ui/captions-radio-group/use-captions-options.js +13 -34
  948. package/dist/dev/ui/captions-radio-group/use-captions-options.js.map +1 -1
  949. package/dist/dev/ui/cast-button/cast-button.d.ts.map +1 -1
  950. package/dist/dev/ui/cast-button/cast-button.js +0 -1
  951. package/dist/dev/ui/cast-button/cast-button.js.map +1 -1
  952. package/dist/dev/ui/controls/context.js +0 -1
  953. package/dist/dev/ui/controls/context.js.map +1 -1
  954. package/dist/dev/ui/controls/controls-group.d.ts.map +1 -1
  955. package/dist/dev/ui/controls/controls-group.js +0 -1
  956. package/dist/dev/ui/controls/controls-group.js.map +1 -1
  957. package/dist/dev/ui/controls/controls-root.d.ts.map +1 -1
  958. package/dist/dev/ui/controls/controls-root.js +0 -1
  959. package/dist/dev/ui/controls/controls-root.js.map +1 -1
  960. package/dist/dev/ui/create-context-part.js +0 -1
  961. package/dist/dev/ui/create-context-part.js.map +1 -1
  962. package/dist/dev/ui/create-media-button.js +0 -1
  963. package/dist/dev/ui/create-media-button.js.map +1 -1
  964. package/dist/dev/ui/error-dialog/context.d.ts.map +1 -1
  965. package/dist/dev/ui/error-dialog/context.js +0 -1
  966. package/dist/dev/ui/error-dialog/context.js.map +1 -1
  967. package/dist/dev/ui/error-dialog/error-dialog-close.d.ts.map +1 -1
  968. package/dist/dev/ui/error-dialog/error-dialog-close.js +0 -1
  969. package/dist/dev/ui/error-dialog/error-dialog-close.js.map +1 -1
  970. package/dist/dev/ui/error-dialog/error-dialog-description.d.ts.map +1 -1
  971. package/dist/dev/ui/error-dialog/error-dialog-description.js +0 -1
  972. package/dist/dev/ui/error-dialog/error-dialog-description.js.map +1 -1
  973. package/dist/dev/ui/error-dialog/error-dialog-root.d.ts.map +1 -1
  974. package/dist/dev/ui/error-dialog/error-dialog-root.js +0 -1
  975. package/dist/dev/ui/error-dialog/error-dialog-root.js.map +1 -1
  976. package/dist/dev/ui/error-dialog/error-dialog-title.d.ts.map +1 -1
  977. package/dist/dev/ui/error-dialog/error-dialog-title.js +0 -1
  978. package/dist/dev/ui/error-dialog/error-dialog-title.js.map +1 -1
  979. package/dist/dev/ui/fullscreen-button/fullscreen-button.d.ts.map +1 -1
  980. package/dist/dev/ui/fullscreen-button/fullscreen-button.js +0 -1
  981. package/dist/dev/ui/fullscreen-button/fullscreen-button.js.map +1 -1
  982. package/dist/dev/ui/gesture/gesture.d.ts.map +1 -1
  983. package/dist/dev/ui/gesture/gesture.js +0 -1
  984. package/dist/dev/ui/gesture/gesture.js.map +1 -1
  985. package/dist/dev/ui/gesture/use-doubletap-gesture.d.ts.map +1 -1
  986. package/dist/dev/ui/gesture/use-doubletap-gesture.js +0 -1
  987. package/dist/dev/ui/gesture/use-doubletap-gesture.js.map +1 -1
  988. package/dist/dev/ui/gesture/use-tap-gesture.d.ts.map +1 -1
  989. package/dist/dev/ui/gesture/use-tap-gesture.js +0 -1
  990. package/dist/dev/ui/gesture/use-tap-gesture.js.map +1 -1
  991. package/dist/dev/ui/hooks/create-radio-options-hook.d.ts +11 -0
  992. package/dist/dev/ui/hooks/create-radio-options-hook.d.ts.map +1 -0
  993. package/dist/dev/ui/hooks/create-radio-options-hook.js +45 -0
  994. package/dist/dev/ui/hooks/create-radio-options-hook.js.map +1 -0
  995. package/dist/dev/ui/hooks/use-button.d.ts.map +1 -1
  996. package/dist/dev/ui/hooks/use-button.js +0 -1
  997. package/dist/dev/ui/hooks/use-button.js.map +1 -1
  998. package/dist/dev/ui/hooks/use-positioned-state.js +0 -1
  999. package/dist/dev/ui/hooks/use-positioned-state.js.map +1 -1
  1000. package/dist/dev/ui/hooks/use-slider.d.ts +2 -1
  1001. package/dist/dev/ui/hooks/use-slider.d.ts.map +1 -1
  1002. package/dist/dev/ui/hooks/use-slider.js +49 -14
  1003. package/dist/dev/ui/hooks/use-slider.js.map +1 -1
  1004. package/dist/dev/ui/hotkey/hotkey.d.ts.map +1 -1
  1005. package/dist/dev/ui/hotkey/hotkey.js +0 -1
  1006. package/dist/dev/ui/hotkey/hotkey.js.map +1 -1
  1007. package/dist/dev/ui/hotkey/use-hotkey-shortcut.d.ts.map +1 -1
  1008. package/dist/dev/ui/hotkey/use-hotkey-shortcut.js +0 -1
  1009. package/dist/dev/ui/hotkey/use-hotkey-shortcut.js.map +1 -1
  1010. package/dist/dev/ui/hotkey/use-hotkey.d.ts.map +1 -1
  1011. package/dist/dev/ui/hotkey/use-hotkey.js +0 -1
  1012. package/dist/dev/ui/hotkey/use-hotkey.js.map +1 -1
  1013. package/dist/{default/ui/input-indicators → dev/ui/input-indicator}/use-indicator-visibility.js +1 -2
  1014. package/dist/dev/ui/input-indicator/use-indicator-visibility.js.map +1 -0
  1015. package/dist/{default/ui/input-indicators → dev/ui/input-indicator}/use-input-action-subscription.js +1 -2
  1016. package/dist/dev/ui/input-indicator/use-input-action-subscription.js.map +1 -0
  1017. package/dist/dev/ui/{input-indicators → input-indicator}/use-input-indicator-root.js +1 -2
  1018. package/dist/dev/ui/input-indicator/use-input-indicator-root.js.map +1 -0
  1019. package/dist/{default/ui/input-indicators → dev/ui/input-indicator}/use-rendered-indicator-state.js +1 -2
  1020. package/dist/dev/ui/input-indicator/use-rendered-indicator-state.js.map +1 -0
  1021. package/dist/dev/ui/live-button/live-button.d.ts.map +1 -1
  1022. package/dist/dev/ui/live-button/live-button.js +0 -1
  1023. package/dist/dev/ui/live-button/live-button.js.map +1 -1
  1024. package/dist/dev/ui/menu/context.d.ts +1 -10
  1025. package/dist/dev/ui/menu/context.d.ts.map +1 -1
  1026. package/dist/dev/ui/menu/context.js +1 -12
  1027. package/dist/dev/ui/menu/context.js.map +1 -1
  1028. package/dist/dev/ui/menu/index.parts.d.ts +3 -6
  1029. package/dist/dev/ui/menu/index.parts.js +3 -9
  1030. package/dist/dev/ui/menu/index.parts.js.map +1 -1
  1031. package/dist/dev/ui/menu/menu-checkbox-item.d.ts.map +1 -1
  1032. package/dist/dev/ui/menu/menu-checkbox-item.js +4 -2
  1033. package/dist/dev/ui/menu/menu-checkbox-item.js.map +1 -1
  1034. package/dist/dev/ui/menu/menu-content.d.ts.map +1 -1
  1035. package/dist/dev/ui/menu/menu-content.js +78 -237
  1036. package/dist/dev/ui/menu/menu-content.js.map +1 -1
  1037. package/dist/dev/ui/menu/menu-group-label.d.ts.map +1 -1
  1038. package/dist/dev/ui/menu/menu-group-label.js +0 -1
  1039. package/dist/dev/ui/menu/menu-group-label.js.map +1 -1
  1040. package/dist/dev/ui/menu/menu-group.d.ts.map +1 -1
  1041. package/dist/dev/ui/menu/menu-group.js +0 -1
  1042. package/dist/dev/ui/menu/menu-group.js.map +1 -1
  1043. package/dist/dev/ui/menu/menu-item-indicator.d.ts.map +1 -1
  1044. package/dist/dev/ui/menu/menu-item-indicator.js +0 -1
  1045. package/dist/dev/ui/menu/menu-item-indicator.js.map +1 -1
  1046. package/dist/dev/ui/menu/menu-item.d.ts +0 -3
  1047. package/dist/dev/ui/menu/menu-item.d.ts.map +1 -1
  1048. package/dist/dev/ui/menu/menu-item.js +11 -19
  1049. package/dist/dev/ui/menu/menu-item.js.map +1 -1
  1050. package/dist/dev/ui/menu/menu-keyboard.js +31 -0
  1051. package/dist/dev/ui/menu/menu-keyboard.js.map +1 -0
  1052. package/dist/dev/ui/menu/menu-radio-group.d.ts.map +1 -1
  1053. package/dist/dev/ui/menu/menu-radio-group.js +0 -1
  1054. package/dist/dev/ui/menu/menu-radio-group.js.map +1 -1
  1055. package/dist/dev/ui/menu/menu-radio-item.d.ts.map +1 -1
  1056. package/dist/dev/ui/menu/menu-radio-item.js +8 -7
  1057. package/dist/dev/ui/menu/menu-radio-item.js.map +1 -1
  1058. package/dist/dev/ui/menu/menu-root.d.ts.map +1 -1
  1059. package/dist/dev/ui/menu/menu-root.js +46 -62
  1060. package/dist/dev/ui/menu/menu-root.js.map +1 -1
  1061. package/dist/dev/ui/menu/menu-separator.d.ts.map +1 -1
  1062. package/dist/dev/ui/menu/menu-separator.js +0 -1
  1063. package/dist/dev/ui/menu/menu-separator.js.map +1 -1
  1064. package/dist/dev/ui/menu/menu-trigger.d.ts +5 -5
  1065. package/dist/dev/ui/menu/menu-trigger.d.ts.map +1 -1
  1066. package/dist/dev/ui/menu/menu-trigger.js +75 -98
  1067. package/dist/dev/ui/menu/menu-trigger.js.map +1 -1
  1068. package/dist/dev/ui/menu/use-menu-group.js +0 -1
  1069. package/dist/dev/ui/menu/use-menu-group.js.map +1 -1
  1070. package/dist/dev/ui/mute-button/mute-button.d.ts.map +1 -1
  1071. package/dist/dev/ui/mute-button/mute-button.js +2 -2
  1072. package/dist/dev/ui/mute-button/mute-button.js.map +1 -1
  1073. package/dist/dev/ui/pip-button/pip-button.d.ts.map +1 -1
  1074. package/dist/dev/ui/pip-button/pip-button.js +0 -1
  1075. package/dist/dev/ui/pip-button/pip-button.js.map +1 -1
  1076. package/dist/dev/ui/play-button/play-button.d.ts.map +1 -1
  1077. package/dist/dev/ui/play-button/play-button.js +0 -1
  1078. package/dist/dev/ui/play-button/play-button.js.map +1 -1
  1079. package/dist/dev/ui/playback-rate/use-playback-rate-options.d.ts +6 -7
  1080. package/dist/dev/ui/playback-rate/use-playback-rate-options.d.ts.map +1 -1
  1081. package/dist/dev/ui/playback-rate/use-playback-rate-options.js +15 -27
  1082. package/dist/dev/ui/playback-rate/use-playback-rate-options.js.map +1 -1
  1083. package/dist/dev/ui/playback-rate-button/playback-rate-button.d.ts.map +1 -1
  1084. package/dist/dev/ui/playback-rate-button/playback-rate-button.js +0 -1
  1085. package/dist/dev/ui/playback-rate-button/playback-rate-button.js.map +1 -1
  1086. package/dist/dev/ui/playback-rate-radio-group/index.d.ts +2 -0
  1087. package/dist/dev/ui/playback-rate-radio-group/index.js +2 -0
  1088. package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group.d.ts +43 -0
  1089. package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group.d.ts.map +1 -0
  1090. package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group.js +64 -0
  1091. package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group.js.map +1 -0
  1092. package/dist/dev/ui/popover/context.d.ts.map +1 -1
  1093. package/dist/dev/ui/popover/context.js +0 -1
  1094. package/dist/dev/ui/popover/context.js.map +1 -1
  1095. package/dist/dev/ui/popover/popover-arrow.d.ts.map +1 -1
  1096. package/dist/dev/ui/popover/popover-arrow.js +0 -1
  1097. package/dist/dev/ui/popover/popover-arrow.js.map +1 -1
  1098. package/dist/dev/ui/popover/popover-popup.d.ts.map +1 -1
  1099. package/dist/dev/ui/popover/popover-popup.js +10 -81
  1100. package/dist/dev/ui/popover/popover-popup.js.map +1 -1
  1101. package/dist/dev/ui/popover/popover-root.d.ts.map +1 -1
  1102. package/dist/dev/ui/popover/popover-root.js +2 -2
  1103. package/dist/dev/ui/popover/popover-root.js.map +1 -1
  1104. package/dist/dev/ui/popover/popover-trigger.d.ts.map +1 -1
  1105. package/dist/dev/ui/popover/popover-trigger.js +4 -6
  1106. package/dist/dev/ui/popover/popover-trigger.js.map +1 -1
  1107. package/dist/dev/ui/popover/use-popup-position.js +33 -0
  1108. package/dist/dev/ui/popover/use-popup-position.js.map +1 -0
  1109. package/dist/dev/ui/poster/poster.d.ts.map +1 -1
  1110. package/dist/dev/ui/poster/poster.js +8 -5
  1111. package/dist/dev/ui/poster/poster.js.map +1 -1
  1112. package/dist/dev/ui/quality/use-quality-options.d.ts +6 -8
  1113. package/dist/dev/ui/quality/use-quality-options.d.ts.map +1 -1
  1114. package/dist/dev/ui/quality/use-quality-options.js +10 -35
  1115. package/dist/dev/ui/quality/use-quality-options.js.map +1 -1
  1116. package/dist/dev/ui/quality-radio-group/index.d.ts +2 -0
  1117. package/dist/dev/ui/quality-radio-group/index.js +2 -0
  1118. package/dist/dev/ui/quality-radio-group/quality-radio-group.d.ts +44 -0
  1119. package/dist/dev/ui/quality-radio-group/quality-radio-group.d.ts.map +1 -0
  1120. package/dist/dev/ui/quality-radio-group/quality-radio-group.js +65 -0
  1121. package/dist/dev/ui/quality-radio-group/quality-radio-group.js.map +1 -0
  1122. package/dist/dev/ui/seek-button/seek-button.d.ts.map +1 -1
  1123. package/dist/dev/ui/seek-button/seek-button.js +0 -1
  1124. package/dist/dev/ui/seek-button/seek-button.js.map +1 -1
  1125. package/dist/dev/ui/seek-indicator/context.js +0 -1
  1126. package/dist/dev/ui/seek-indicator/context.js.map +1 -1
  1127. package/dist/dev/ui/seek-indicator/seek-indicator-root.d.ts.map +1 -1
  1128. package/dist/dev/ui/seek-indicator/seek-indicator-root.js +1 -2
  1129. package/dist/dev/ui/seek-indicator/seek-indicator-root.js.map +1 -1
  1130. package/dist/dev/ui/seek-indicator/seek-indicator-value.d.ts.map +1 -1
  1131. package/dist/dev/ui/seek-indicator/seek-indicator-value.js +0 -1
  1132. package/dist/dev/ui/seek-indicator/seek-indicator-value.js.map +1 -1
  1133. package/dist/dev/ui/slider/context.js +7 -3
  1134. package/dist/dev/ui/slider/context.js.map +1 -1
  1135. package/dist/dev/ui/slider/slider-buffer.d.ts.map +1 -1
  1136. package/dist/dev/ui/slider/slider-buffer.js +0 -1
  1137. package/dist/dev/ui/slider/slider-buffer.js.map +1 -1
  1138. package/dist/dev/ui/slider/slider-fill.d.ts.map +1 -1
  1139. package/dist/dev/ui/slider/slider-fill.js +0 -1
  1140. package/dist/dev/ui/slider/slider-fill.js.map +1 -1
  1141. package/dist/dev/ui/slider/slider-preview.d.ts.map +1 -1
  1142. package/dist/dev/ui/slider/slider-preview.js +2 -4
  1143. package/dist/dev/ui/slider/slider-preview.js.map +1 -1
  1144. package/dist/dev/ui/slider/slider-root.d.ts.map +1 -1
  1145. package/dist/dev/ui/slider/slider-root.js +3 -2
  1146. package/dist/dev/ui/slider/slider-root.js.map +1 -1
  1147. package/dist/dev/ui/slider/slider-thumb.d.ts.map +1 -1
  1148. package/dist/dev/ui/slider/slider-thumb.js +0 -1
  1149. package/dist/dev/ui/slider/slider-thumb.js.map +1 -1
  1150. package/dist/dev/ui/slider/slider-thumbnail.d.ts.map +1 -1
  1151. package/dist/dev/ui/slider/slider-thumbnail.js +2 -3
  1152. package/dist/dev/ui/slider/slider-thumbnail.js.map +1 -1
  1153. package/dist/dev/ui/slider/slider-track.d.ts.map +1 -1
  1154. package/dist/dev/ui/slider/slider-track.js +0 -1
  1155. package/dist/dev/ui/slider/slider-track.js.map +1 -1
  1156. package/dist/dev/ui/slider/slider-value.d.ts.map +1 -1
  1157. package/dist/dev/ui/slider/slider-value.js +3 -3
  1158. package/dist/dev/ui/slider/slider-value.js.map +1 -1
  1159. package/dist/dev/ui/status-announcer/status-announcer.d.ts.map +1 -1
  1160. package/dist/dev/ui/status-announcer/status-announcer.js +7 -5
  1161. package/dist/dev/ui/status-announcer/status-announcer.js.map +1 -1
  1162. package/dist/dev/ui/status-indicator/context.js +0 -1
  1163. package/dist/dev/ui/status-indicator/context.js.map +1 -1
  1164. package/dist/dev/ui/status-indicator/status-indicator-root.d.ts.map +1 -1
  1165. package/dist/dev/ui/status-indicator/status-indicator-root.js +2 -3
  1166. package/dist/dev/ui/status-indicator/status-indicator-root.js.map +1 -1
  1167. package/dist/dev/ui/status-indicator/status-indicator-value.d.ts.map +1 -1
  1168. package/dist/dev/ui/status-indicator/status-indicator-value.js +0 -1
  1169. package/dist/dev/ui/status-indicator/status-indicator-value.js.map +1 -1
  1170. package/dist/dev/ui/thumbnail/thumbnail.d.ts.map +1 -1
  1171. package/dist/dev/ui/thumbnail/thumbnail.js +0 -1
  1172. package/dist/dev/ui/thumbnail/thumbnail.js.map +1 -1
  1173. package/dist/dev/ui/time/time-group.d.ts.map +1 -1
  1174. package/dist/dev/ui/time/time-group.js +0 -1
  1175. package/dist/dev/ui/time/time-group.js.map +1 -1
  1176. package/dist/dev/ui/time/time-separator.d.ts.map +1 -1
  1177. package/dist/dev/ui/time/time-separator.js +0 -1
  1178. package/dist/dev/ui/time/time-separator.js.map +1 -1
  1179. package/dist/dev/ui/time/time-value.d.ts.map +1 -1
  1180. package/dist/dev/ui/time/time-value.js +13 -6
  1181. package/dist/dev/ui/time/time-value.js.map +1 -1
  1182. package/dist/dev/ui/time-slider/index.parts.d.ts +4 -2
  1183. package/dist/dev/ui/time-slider/index.parts.js +5 -1
  1184. package/dist/dev/ui/time-slider/index.parts.js.map +1 -1
  1185. package/dist/dev/ui/time-slider/time-slider-chapters/slider-segments.js +60 -0
  1186. package/dist/dev/ui/time-slider/time-slider-chapters/slider-segments.js.map +1 -0
  1187. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapter-title.d.ts +19 -0
  1188. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapter-title.d.ts.map +1 -0
  1189. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js +45 -0
  1190. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js.map +1 -0
  1191. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapters.d.ts +22 -0
  1192. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapters.d.ts.map +1 -0
  1193. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapters.js +51 -0
  1194. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapters.js.map +1 -0
  1195. package/dist/dev/ui/time-slider/time-slider-root.d.ts.map +1 -1
  1196. package/dist/dev/ui/time-slider/time-slider-root.js +6 -5
  1197. package/dist/dev/ui/time-slider/time-slider-root.js.map +1 -1
  1198. package/dist/dev/ui/tooltip/context.d.ts.map +1 -1
  1199. package/dist/dev/ui/tooltip/context.js +0 -1
  1200. package/dist/dev/ui/tooltip/context.js.map +1 -1
  1201. package/dist/dev/ui/tooltip/group-context.js +0 -1
  1202. package/dist/dev/ui/tooltip/group-context.js.map +1 -1
  1203. package/dist/dev/ui/tooltip/tooltip-arrow.d.ts.map +1 -1
  1204. package/dist/dev/ui/tooltip/tooltip-arrow.js +0 -1
  1205. package/dist/dev/ui/tooltip/tooltip-arrow.js.map +1 -1
  1206. package/dist/dev/ui/tooltip/tooltip-label.d.ts.map +1 -1
  1207. package/dist/dev/ui/tooltip/tooltip-label.js +0 -1
  1208. package/dist/dev/ui/tooltip/tooltip-label.js.map +1 -1
  1209. package/dist/dev/ui/tooltip/tooltip-popup.d.ts.map +1 -1
  1210. package/dist/dev/ui/tooltip/tooltip-popup.js +13 -83
  1211. package/dist/dev/ui/tooltip/tooltip-popup.js.map +1 -1
  1212. package/dist/dev/ui/tooltip/tooltip-provider.d.ts.map +1 -1
  1213. package/dist/dev/ui/tooltip/tooltip-provider.js +0 -1
  1214. package/dist/dev/ui/tooltip/tooltip-provider.js.map +1 -1
  1215. package/dist/dev/ui/tooltip/tooltip-root.d.ts.map +1 -1
  1216. package/dist/dev/ui/tooltip/tooltip-root.js +5 -2
  1217. package/dist/dev/ui/tooltip/tooltip-root.js.map +1 -1
  1218. package/dist/dev/ui/tooltip/tooltip-shortcut.d.ts.map +1 -1
  1219. package/dist/dev/ui/tooltip/tooltip-shortcut.js +0 -1
  1220. package/dist/dev/ui/tooltip/tooltip-shortcut.js.map +1 -1
  1221. package/dist/dev/ui/tooltip/tooltip-trigger.d.ts.map +1 -1
  1222. package/dist/dev/ui/tooltip/tooltip-trigger.js +2 -5
  1223. package/dist/dev/ui/tooltip/tooltip-trigger.js.map +1 -1
  1224. package/dist/dev/ui/volume-indicator/context.js +0 -1
  1225. package/dist/dev/ui/volume-indicator/context.js.map +1 -1
  1226. package/dist/dev/ui/volume-indicator/volume-indicator-fill.d.ts.map +1 -1
  1227. package/dist/dev/ui/volume-indicator/volume-indicator-fill.js +0 -1
  1228. package/dist/dev/ui/volume-indicator/volume-indicator-fill.js.map +1 -1
  1229. package/dist/dev/ui/volume-indicator/volume-indicator-root.d.ts.map +1 -1
  1230. package/dist/dev/ui/volume-indicator/volume-indicator-root.js +1 -2
  1231. package/dist/dev/ui/volume-indicator/volume-indicator-root.js.map +1 -1
  1232. package/dist/dev/ui/volume-indicator/volume-indicator-value.d.ts.map +1 -1
  1233. package/dist/dev/ui/volume-indicator/volume-indicator-value.js +0 -1
  1234. package/dist/dev/ui/volume-indicator/volume-indicator-value.js.map +1 -1
  1235. package/dist/dev/ui/volume-slider/volume-slider-root.d.ts.map +1 -1
  1236. package/dist/dev/ui/volume-slider/volume-slider-root.js +10 -5
  1237. package/dist/dev/ui/volume-slider/volume-slider-root.js.map +1 -1
  1238. package/dist/dev/utils/merge-props.d.ts.map +1 -1
  1239. package/dist/dev/utils/merge-props.js +0 -1
  1240. package/dist/dev/utils/merge-props.js.map +1 -1
  1241. package/dist/dev/utils/use-attach-iframe.js +0 -1
  1242. package/dist/dev/utils/use-attach-iframe.js.map +1 -1
  1243. package/dist/dev/utils/use-attach-media.d.ts.map +1 -1
  1244. package/dist/dev/utils/use-attach-media.js +0 -1
  1245. package/dist/dev/utils/use-attach-media.js.map +1 -1
  1246. package/dist/dev/utils/use-composed-refs.d.ts.map +1 -1
  1247. package/dist/dev/utils/use-composed-refs.js +0 -1
  1248. package/dist/dev/utils/use-composed-refs.js.map +1 -1
  1249. package/dist/dev/utils/use-destroy.d.ts.map +1 -1
  1250. package/dist/dev/utils/use-destroy.js +0 -1
  1251. package/dist/dev/utils/use-destroy.js.map +1 -1
  1252. package/dist/dev/utils/use-force-render.js +0 -1
  1253. package/dist/dev/utils/use-force-render.js.map +1 -1
  1254. package/dist/dev/utils/use-latest-ref.d.ts.map +1 -1
  1255. package/dist/dev/utils/use-latest-ref.js +0 -1
  1256. package/dist/dev/utils/use-latest-ref.js.map +1 -1
  1257. package/dist/dev/utils/use-media-component.d.ts.map +1 -1
  1258. package/dist/dev/utils/use-media-component.js +0 -1
  1259. package/dist/dev/utils/use-media-component.js.map +1 -1
  1260. package/dist/dev/utils/use-media-instance.d.ts.map +1 -1
  1261. package/dist/dev/utils/use-media-instance.js +0 -1
  1262. package/dist/dev/utils/use-media-instance.js.map +1 -1
  1263. package/dist/dev/utils/use-render.d.ts.map +1 -1
  1264. package/dist/dev/utils/use-render.js +0 -1
  1265. package/dist/dev/utils/use-render.js.map +1 -1
  1266. package/dist/dev/utils/use-safe-id.js +0 -1
  1267. package/dist/dev/utils/use-safe-id.js.map +1 -1
  1268. package/docs/README.md +1 -1
  1269. package/docs/concepts/cast.md +6 -6
  1270. package/docs/concepts/features.md +11 -8
  1271. package/docs/concepts/i18n.md +16 -26
  1272. package/docs/concepts/media-sources.md +461 -0
  1273. package/docs/concepts/mux-data.md +9 -7
  1274. package/docs/concepts/overview.md +15 -18
  1275. package/docs/concepts/presets.md +18 -19
  1276. package/docs/concepts/skins.md +868 -862
  1277. package/docs/concepts/ui-components.md +3 -3
  1278. package/docs/concepts/why-videojs.md +4 -4
  1279. package/docs/how-to/build-your-own-component.md +8 -6
  1280. package/docs/how-to/customize-skins.md +2679 -2369
  1281. package/docs/how-to/i18n-override-translations.md +3 -3
  1282. package/docs/how-to/i18n-register-locale.md +3 -3
  1283. package/docs/how-to/i18n-ssr.md +3 -3
  1284. package/docs/how-to/i18n-switch-locale.md +3 -3
  1285. package/docs/how-to/installation.md +3 -8
  1286. package/docs/how-to/migrate-from-media-chrome.md +412 -0
  1287. package/docs/how-to/migrate-from-mux-player.md +551 -0
  1288. package/docs/how-to/migrate-from-plyr.md +385 -0
  1289. package/docs/how-to/migrate-from-video-js-8.md +594 -0
  1290. package/docs/llms.txt +51 -39
  1291. package/docs/reference/airplay-button.md +6 -6
  1292. package/docs/reference/audio-track-radio-group.md +198 -29
  1293. package/docs/reference/buffering-indicator.md +6 -6
  1294. package/docs/reference/captions-button.md +6 -6
  1295. package/docs/reference/captions-radio-group.md +206 -29
  1296. package/docs/reference/cast-button.md +6 -6
  1297. package/docs/reference/controls.md +6 -6
  1298. package/docs/reference/create-player.md +22 -31
  1299. package/docs/reference/create-translator.md +1 -1
  1300. package/docs/reference/dash-video.md +14 -0
  1301. package/docs/reference/feature-controls.md +13 -1
  1302. package/docs/reference/feature-fullscreen.md +1 -1
  1303. package/docs/reference/feature-orientation-lock.md +2 -2
  1304. package/docs/reference/feature-text-tracks.md +3 -1
  1305. package/docs/reference/feature-volume.md +14 -2
  1306. package/docs/reference/fullscreen-button.md +6 -6
  1307. package/docs/reference/get-i18n-translations.md +1 -1
  1308. package/docs/reference/has-registered-locale.md +1 -1
  1309. package/docs/reference/{simple-hls-audio-only.md → hls-audio.md} +5 -5
  1310. package/docs/reference/{simple-hls-video.md → hls-video.md} +4 -4
  1311. package/docs/reference/hlsjs-video.md +17 -9
  1312. package/docs/reference/menu.md +65 -157
  1313. package/docs/reference/mute-button.md +94 -18
  1314. package/docs/reference/mux-audio.md +1 -107
  1315. package/docs/reference/mux-video.md +1 -107
  1316. package/docs/reference/native-hls-video.md +24 -0
  1317. package/docs/reference/pip-button.md +6 -6
  1318. package/docs/reference/play-button.md +6 -6
  1319. package/docs/reference/playback-rate-button.md +6 -6
  1320. package/docs/reference/playback-rate-radio-group.md +200 -29
  1321. package/docs/reference/player-container.md +25 -25
  1322. package/docs/reference/player-provider.md +24 -24
  1323. package/docs/reference/popover.md +6 -6
  1324. package/docs/reference/poster.md +6 -6
  1325. package/docs/reference/quality-radio-group.md +200 -31
  1326. package/docs/reference/register-i18n.md +1 -1
  1327. package/docs/reference/seek-button.md +6 -6
  1328. package/docs/reference/slider.md +1 -1
  1329. package/docs/reference/thumbnail.md +7 -7
  1330. package/docs/reference/time-slider.md +251 -7
  1331. package/docs/reference/time.md +78 -34
  1332. package/docs/reference/translation-phrases.md +27 -3
  1333. package/docs/reference/use-container-attach.md +5 -5
  1334. package/docs/reference/use-locale.md +1 -1
  1335. package/docs/reference/use-media-attach.md +2 -2
  1336. package/docs/reference/use-media.md +16 -10
  1337. package/docs/reference/use-player-context.md +2 -7
  1338. package/docs/reference/use-player.md +25 -19
  1339. package/docs/reference/use-store.md +15 -15
  1340. package/docs/reference/volume-slider.md +13 -11
  1341. package/package.json +28 -8
  1342. package/dist/default/media/mux-audio/media.js.map +0 -1
  1343. package/dist/default/media/mux-video/media.js +0 -56
  1344. package/dist/default/media/mux-video/media.js.map +0 -1
  1345. package/dist/default/media/simple-hls-audio-only/index.js +0 -2
  1346. package/dist/default/media/simple-hls-audio-only/media.js +0 -22
  1347. package/dist/default/media/simple-hls-audio-only/media.js.map +0 -1
  1348. package/dist/default/media/simple-hls-video/index.js +0 -2
  1349. package/dist/default/media/simple-hls-video/media.js.map +0 -1
  1350. package/dist/default/skins/dist/default/default/tailwind/components/input-feedback.js +0 -40
  1351. package/dist/default/skins/dist/default/default/tailwind/components/input-feedback.js.map +0 -1
  1352. package/dist/default/skins/dist/default/default/tailwind/components/root.js +0 -8
  1353. package/dist/default/skins/dist/default/default/tailwind/components/root.js.map +0 -1
  1354. package/dist/default/skins/dist/default/minimal/tailwind/components/input-feedback.js +0 -41
  1355. package/dist/default/skins/dist/default/minimal/tailwind/components/input-feedback.js.map +0 -1
  1356. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js +0 -8
  1357. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js.map +0 -1
  1358. package/dist/default/tailwind.css +0 -42
  1359. package/dist/default/ui/input-indicators/use-indicator-visibility.js.map +0 -1
  1360. package/dist/default/ui/input-indicators/use-input-action-subscription.js.map +0 -1
  1361. package/dist/default/ui/input-indicators/use-input-indicator-root.js.map +0 -1
  1362. package/dist/default/ui/input-indicators/use-rendered-indicator-state.js.map +0 -1
  1363. package/dist/default/ui/menu/menu-back.js +0 -34
  1364. package/dist/default/ui/menu/menu-back.js.map +0 -1
  1365. package/dist/default/ui/menu/menu-item-setting-provider.js +0 -77
  1366. package/dist/default/ui/menu/menu-item-setting-provider.js.map +0 -1
  1367. package/dist/default/ui/menu/menu-item-value.js +0 -28
  1368. package/dist/default/ui/menu/menu-item-value.js.map +0 -1
  1369. package/dist/default/ui/menu/menu-view.js +0 -23
  1370. package/dist/default/ui/menu/menu-view.js.map +0 -1
  1371. package/dist/dev/media/mux-audio/media.d.ts.map +0 -1
  1372. package/dist/dev/media/mux-audio/media.js.map +0 -1
  1373. package/dist/dev/media/mux-video/media.d.ts.map +0 -1
  1374. package/dist/dev/media/mux-video/media.js +0 -56
  1375. package/dist/dev/media/mux-video/media.js.map +0 -1
  1376. package/dist/dev/media/simple-hls-audio-only/index.d.ts +0 -2
  1377. package/dist/dev/media/simple-hls-audio-only/index.js +0 -2
  1378. package/dist/dev/media/simple-hls-audio-only/media.d.ts +0 -13
  1379. package/dist/dev/media/simple-hls-audio-only/media.d.ts.map +0 -1
  1380. package/dist/dev/media/simple-hls-audio-only/media.js +0 -22
  1381. package/dist/dev/media/simple-hls-audio-only/media.js.map +0 -1
  1382. package/dist/dev/media/simple-hls-video/index.d.ts +0 -2
  1383. package/dist/dev/media/simple-hls-video/index.js +0 -2
  1384. package/dist/dev/media/simple-hls-video/media.d.ts +0 -13
  1385. package/dist/dev/media/simple-hls-video/media.d.ts.map +0 -1
  1386. package/dist/dev/media/simple-hls-video/media.js.map +0 -1
  1387. package/dist/dev/skins/dist/default/default/tailwind/components/input-feedback.js +0 -40
  1388. package/dist/dev/skins/dist/default/default/tailwind/components/input-feedback.js.map +0 -1
  1389. package/dist/dev/skins/dist/default/default/tailwind/components/root.js +0 -8
  1390. package/dist/dev/skins/dist/default/default/tailwind/components/root.js.map +0 -1
  1391. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-feedback.js +0 -41
  1392. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-feedback.js.map +0 -1
  1393. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js +0 -8
  1394. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js.map +0 -1
  1395. package/dist/dev/tailwind.css +0 -42
  1396. package/dist/dev/ui/input-indicators/use-indicator-visibility.js.map +0 -1
  1397. package/dist/dev/ui/input-indicators/use-input-action-subscription.js.map +0 -1
  1398. package/dist/dev/ui/input-indicators/use-input-indicator-root.js.map +0 -1
  1399. package/dist/dev/ui/input-indicators/use-rendered-indicator-state.js.map +0 -1
  1400. package/dist/dev/ui/menu/menu-back.d.ts +0 -17
  1401. package/dist/dev/ui/menu/menu-back.d.ts.map +0 -1
  1402. package/dist/dev/ui/menu/menu-back.js +0 -34
  1403. package/dist/dev/ui/menu/menu-back.js.map +0 -1
  1404. package/dist/dev/ui/menu/menu-item-setting-provider.js +0 -77
  1405. package/dist/dev/ui/menu/menu-item-setting-provider.js.map +0 -1
  1406. package/dist/dev/ui/menu/menu-item-type.d.ts +0 -5
  1407. package/dist/dev/ui/menu/menu-item-type.d.ts.map +0 -1
  1408. package/dist/dev/ui/menu/menu-item-value.d.ts +0 -12
  1409. package/dist/dev/ui/menu/menu-item-value.d.ts.map +0 -1
  1410. package/dist/dev/ui/menu/menu-item-value.js +0 -28
  1411. package/dist/dev/ui/menu/menu-item-value.js.map +0 -1
  1412. package/dist/dev/ui/menu/menu-view.d.ts +0 -13
  1413. package/dist/dev/ui/menu/menu-view.d.ts.map +0 -1
  1414. package/dist/dev/ui/menu/menu-view.js +0 -23
  1415. package/dist/dev/ui/menu/menu-view.js.map +0 -1
@@ -9,12 +9,12 @@ In prior versions of Video.js, skins were CSS-only themes applied to the same se
9
9
  tsx
10
10
 
11
11
  ```
12
- <Player.Provider>
12
+ <VideoPlayer>
13
13
  <VideoSkin>
14
14
  {/* wraps the Media component */}
15
15
  <Video src="video.mp4"></Video>
16
16
  </VideoSkin>
17
- </Player.Provider>
17
+ </VideoPlayer>
18
18
  ```
19
19
 
20
20
  ## Packaged vs. ejected
@@ -46,11 +46,11 @@ Future design updates manually applied, or intentionally ignored
46
46
  tsx
47
47
 
48
48
  ```
49
- <Player.Provider>
49
+ <VideoPlayer>
50
50
  <VideoSkin>
51
51
  {/* ...Media... */}
52
52
  </VideoSkin>
53
- </Player.Provider>
53
+ </VideoPlayer>
54
54
  ```
55
55
 
56
56
  ### Example of ejected
@@ -67,7 +67,7 @@ skin.css
67
67
  import { type CSSProperties, type ComponentProps, forwardRef, type ReactNode, isValidElement } from 'react';
68
68
  import { audioText, captionsText, playbackRateText, qualityText, settingsText, speedText } from '@videojs/core/i18n/text/menu';
69
69
  import { AirPlayEnterIcon, AirPlayExitIcon, CaptionsOffIcon, CaptionsOnIcon, CastEnterIcon, CastExitIcon, CheckIcon, ChevronIcon, FullscreenEnterIcon, FullscreenExitIcon, GearIcon, PauseIcon, PipEnterIcon, PipExitIcon, PlayIcon, QualityIcon, RestartIcon, SpeechIcon, SpeedIcon, SpinnerIcon, VolumeHighIcon, VolumeLowIcon, VolumeOffIcon } from '@videojs/react/icons';
70
- import { Poster, useTranslator, Container, usePlayer, AirPlayButton, useAudioTrackOptions, BufferingIndicator, CaptionsButton, useCaptionsOptions, CastButton, Controls, ErrorDialog, FullscreenButton, Gesture, Hotkey, Menu, MuteButton, PiPButton, PlayButton, usePlaybackRateOptions, Popover, useQualityOptions, SeekIndicator, Slider, StatusAnnouncer, StatusIndicator, Time, TimeSlider, Tooltip, VolumeIndicator, VolumeSlider, type RenderProp } from '@videojs/react';
70
+ import { Poster, useTranslator, Container, usePlayer, AirPlayButton, useAudioTrackOptions, AudioTrackRadioGroup, BufferingIndicator, CaptionsButton, CaptionsRadioGroup, useCaptionsOptions, CastButton, Controls, ErrorDialog, FullscreenButton, Gesture, Hotkey, Menu, MuteButton, PiPButton, PlayButton, usePlaybackRateOptions, PlaybackRateRadioGroup, Popover, useQualityOptions, QualityRadioGroup, SeekIndicator, Slider, StatusAnnouncer, StatusIndicator, Time, TimeSlider, Tooltip, VolumeIndicator, VolumeSlider, type RenderProp } from '@videojs/react';
71
71
  import { Video } from '@videojs/react/video';
72
72
  import './player.css';
73
73
  import { Player } from './player';
@@ -95,217 +95,172 @@ function SettingsMenu(): ReactNode {
95
95
 
96
96
  return (
97
97
  <Menu.Root side="top" align="center">
98
- <Menu.Trigger aria-label={t(settingsText)} className="media-button--settings" render={<Button />}>
99
- <GearIcon className="media-icon media-icon--settings" />
100
- </Menu.Trigger>
98
+ <Tooltip.Root side="top">
99
+ <Tooltip.Trigger
100
+ render={
101
+ <Menu.Trigger aria-label={t(settingsText)} className="media-button--settings" render={<Button />}>
102
+ <GearIcon className="media-icon media-icon--settings" />
103
+ </Menu.Trigger>
104
+ }
105
+ />
106
+ <Tooltip.Popup className="media-surface media-tooltip">
107
+ <Tooltip.Label>{t(settingsText)}</Tooltip.Label>
108
+ </Tooltip.Popup>
109
+ </Tooltip.Root>
101
110
  <Menu.Content className="media-surface media-popover media-menu media-menu--settings">
102
- <Menu.View className="media-menu__panel">
103
- <div className="media-menu__group">
104
- {hasQuality ? (
105
- <Menu.Root>
106
- <Menu.Trigger
107
- type="quality"
108
- className="media-menu__item media-menu__item--submenu"
109
- render={(props) => (
110
- <div {...props}>
111
- <QualityIcon className="media-icon" />
112
- <span>{t(qualityText)}</span>
113
- <span className="media-menu__hint">
114
- <Menu.ItemValue className="media-menu__hint-label" />
115
- <MenuChevron />
111
+ <div className="media-menu__group">
112
+ {hasQuality ? (
113
+ <Menu.Root>
114
+ <Menu.Trigger
115
+ className="media-menu__item media-menu__item--submenu"
116
+ render={(props) => (
117
+ <div {...props}>
118
+ <QualityIcon className="media-icon" />
119
+ <span>{t(qualityText)}</span>
120
+ <span className="media-menu__hint">
121
+ <span className="media-menu__hint-label">{quality.selectedLabel}</span>
122
+ <MenuChevron />
123
+ </span>
124
+ </div>
125
+ )}
126
+ />
127
+ <Menu.Content className="media-menu__panel">
128
+ <Menu.Item className="media-menu__back">
129
+ <MenuChevron flipped />
130
+ {t(qualityText)}
131
+ </Menu.Item>
132
+ <Menu.Separator className="media-menu__separator" />
133
+ <QualityRadioGroup
134
+ className="media-menu__group"
135
+ aria-label={t(qualityText)}
136
+ renderItem={(props, item) => (
137
+ <Menu.RadioItem {...props} className="media-menu__item">
138
+ <span>
139
+ {item.label}
140
+ {item.tier ? <sup className="media-menu__tier">{item.tier}</sup> : null}
116
141
  </span>
117
- </div>
142
+ {item.badge ? <span className="media-badge">{item.badge}</span> : null}
143
+ <Menu.ItemIndicator checked={item.checked} forceMount className="media-menu__indicator">
144
+ <CheckIcon className="media-icon" />
145
+ </Menu.ItemIndicator>
146
+ </Menu.RadioItem>
118
147
  )}
119
148
  />
120
- <Menu.Content className="media-menu__panel">
121
- <Menu.Back className="media-menu__back">
122
- <MenuChevron flipped />
123
- {t(qualityText)}
124
- </Menu.Back>
125
- <Menu.Separator className="media-menu__separator" />
126
- <Menu.RadioGroup
127
- className="media-menu__group"
128
- value={quality.value}
129
- onValueChange={quality.setValue}
130
- aria-label={t(qualityText)}
131
- >
132
- {quality.options.map((option) => (
133
- <Menu.RadioItem
134
- key={option.value}
135
- className="media-menu__item"
136
- value={option.value}
137
- disabled={option.disabled}
138
- >
139
- <span>
140
- {option.label}
141
- {option.tier ? <sup className="media-menu__tier">{option.tier}</sup> : null}
142
- </span>
143
- {option.badge ? <span className="media-badge">{option.badge}</span> : null}
144
- <Menu.ItemIndicator
145
- checked={option.value === quality.value}
146
- forceMount
147
- className="media-menu__indicator"
148
- >
149
- <CheckIcon className="media-icon" />
150
- </Menu.ItemIndicator>
151
- </Menu.RadioItem>
152
- ))}
153
- </Menu.RadioGroup>
154
- </Menu.Content>
155
- </Menu.Root>
156
- ) : null}
157
-
158
- {hasAudioTrack ? (
159
- <Menu.Root>
160
- <Menu.Trigger
161
- type="audio-track"
162
- className="media-menu__item media-menu__item--submenu"
163
- render={(props) => (
164
- <div {...props}>
165
- <SpeechIcon className="media-icon" />
166
- <span>{t(audioText)}</span>
167
- <span className="media-menu__hint">
168
- <Menu.ItemValue className="media-menu__hint-label" />
169
- <MenuChevron />
170
- </span>
171
- </div>
149
+ </Menu.Content>
150
+ </Menu.Root>
151
+ ) : null}
152
+
153
+ {hasAudioTrack ? (
154
+ <Menu.Root>
155
+ <Menu.Trigger
156
+ className="media-menu__item media-menu__item--submenu"
157
+ render={(props) => (
158
+ <div {...props}>
159
+ <SpeechIcon className="media-icon" />
160
+ <span>{t(audioText)}</span>
161
+ <span className="media-menu__hint">
162
+ <span className="media-menu__hint-label">{audioTrack.selectedLabel}</span>
163
+ <MenuChevron />
164
+ </span>
165
+ </div>
166
+ )}
167
+ />
168
+ <Menu.Content className="media-menu__panel">
169
+ <Menu.Item className="media-menu__back">
170
+ <MenuChevron flipped />
171
+ {t(audioText)}
172
+ </Menu.Item>
173
+ <Menu.Separator className="media-menu__separator" />
174
+ <AudioTrackRadioGroup
175
+ className="media-menu__group"
176
+ aria-label={t(audioText)}
177
+ renderItem={(props, item) => (
178
+ <Menu.RadioItem {...props} className="media-menu__item">
179
+ <span>{item.label}</span>
180
+ <Menu.ItemIndicator checked={item.checked} forceMount className="media-menu__indicator">
181
+ <CheckIcon className="media-icon" />
182
+ </Menu.ItemIndicator>
183
+ </Menu.RadioItem>
172
184
  )}
173
185
  />
174
- <Menu.Content className="media-menu__panel">
175
- <Menu.Back className="media-menu__back">
176
- <MenuChevron flipped />
177
- {t(audioText)}
178
- </Menu.Back>
179
- <Menu.Separator className="media-menu__separator" />
180
- <Menu.RadioGroup
181
- className="media-menu__group"
182
- value={audioTrack.value}
183
- onValueChange={audioTrack.setValue}
184
- aria-label={t(audioText)}
185
- >
186
- {audioTrack.options.map((option) => (
187
- <Menu.RadioItem
188
- key={option.value}
189
- className="media-menu__item"
190
- value={option.value}
191
- disabled={option.disabled}
192
- >
193
- <span>{option.label}</span>
194
- <Menu.ItemIndicator
195
- checked={option.value === audioTrack.value}
196
- forceMount
197
- className="media-menu__indicator"
198
- >
199
- <CheckIcon className="media-icon" />
200
- </Menu.ItemIndicator>
201
- </Menu.RadioItem>
202
- ))}
203
- </Menu.RadioGroup>
204
- </Menu.Content>
205
- </Menu.Root>
206
- ) : null}
207
-
208
- {hasPlaybackRate ? (
209
- <Menu.Root>
210
- <Menu.Trigger
211
- type="playback-rate"
212
- className="media-menu__item media-menu__item--submenu"
213
- render={(props) => (
214
- <div {...props}>
215
- <SpeedIcon className="media-icon" />
216
- <span>{t(speedText)}</span>
217
- <span className="media-menu__hint">
218
- <Menu.ItemValue className="media-menu__hint-label" />
219
- <MenuChevron />
220
- </span>
221
- </div>
186
+ </Menu.Content>
187
+ </Menu.Root>
188
+ ) : null}
189
+
190
+ {hasPlaybackRate ? (
191
+ <Menu.Root>
192
+ <Menu.Trigger
193
+ className="media-menu__item media-menu__item--submenu"
194
+ render={(props) => (
195
+ <div {...props}>
196
+ <SpeedIcon className="media-icon" />
197
+ <span>{t(speedText)}</span>
198
+ <span className="media-menu__hint">
199
+ <span className="media-menu__hint-label">{playbackRate.selectedLabel}</span>
200
+ <MenuChevron />
201
+ </span>
202
+ </div>
203
+ )}
204
+ />
205
+ <Menu.Content className="media-menu__panel">
206
+ <Menu.Item className="media-menu__back">
207
+ <MenuChevron flipped />
208
+ {t(speedText)}
209
+ </Menu.Item>
210
+ <Menu.Separator className="media-menu__separator" />
211
+ <PlaybackRateRadioGroup
212
+ className="media-menu__group"
213
+ aria-label={t(playbackRateText)}
214
+ renderItem={(props, item) => (
215
+ <Menu.RadioItem {...props} className="media-menu__item">
216
+ <span>{item.label}</span>
217
+ <Menu.ItemIndicator checked={item.checked} forceMount className="media-menu__indicator">
218
+ <CheckIcon className="media-icon" />
219
+ </Menu.ItemIndicator>
220
+ </Menu.RadioItem>
222
221
  )}
223
222
  />
224
- <Menu.Content className="media-menu__panel">
225
- <Menu.Back className="media-menu__back">
226
- <MenuChevron flipped />
227
- {t(speedText)}
228
- </Menu.Back>
229
- <Menu.Separator className="media-menu__separator" />
230
- <Menu.RadioGroup
231
- className="media-menu__group"
232
- value={playbackRate.value}
233
- onValueChange={playbackRate.setValue}
234
- aria-label={t(playbackRateText)}
235
- >
236
- {playbackRate.options.map((option) => (
237
- <Menu.RadioItem
238
- key={option.value}
239
- className="media-menu__item"
240
- value={option.value}
241
- disabled={option.disabled}
242
- >
243
- <span>{option.label}</span>
244
- <Menu.ItemIndicator
245
- checked={option.value === playbackRate.value}
246
- forceMount
247
- className="media-menu__indicator"
248
- >
249
- <CheckIcon className="media-icon" />
250
- </Menu.ItemIndicator>
251
- </Menu.RadioItem>
252
- ))}
253
- </Menu.RadioGroup>
254
- </Menu.Content>
255
- </Menu.Root>
256
- ) : null}
257
-
258
- {hasCaptions ? (
259
- <Menu.Root>
260
- <Menu.Trigger
261
- type="captions"
262
- className="media-menu__item media-menu__item--submenu"
263
- render={(props) => (
264
- <div {...props}>
265
- <CaptionsOffIcon className="media-icon" />
266
- <span>{t(captionsText)}</span>
267
- <span className="media-menu__hint">
268
- <Menu.ItemValue className="media-menu__hint-label" />
269
- <MenuChevron />
270
- </span>
271
- </div>
223
+ </Menu.Content>
224
+ </Menu.Root>
225
+ ) : null}
226
+
227
+ {hasCaptions ? (
228
+ <Menu.Root>
229
+ <Menu.Trigger
230
+ className="media-menu__item media-menu__item--submenu"
231
+ render={(props) => (
232
+ <div {...props}>
233
+ <CaptionsOffIcon className="media-icon" />
234
+ <span>{t(captionsText)}</span>
235
+ <span className="media-menu__hint">
236
+ <span className="media-menu__hint-label">{captions.selectedLabel}</span>
237
+ <MenuChevron />
238
+ </span>
239
+ </div>
240
+ )}
241
+ />
242
+ <Menu.Content className="media-menu__panel">
243
+ <Menu.Item className="media-menu__back">
244
+ <MenuChevron flipped />
245
+ {t(captionsText)}
246
+ </Menu.Item>
247
+ <Menu.Separator className="media-menu__separator" />
248
+ <CaptionsRadioGroup
249
+ className="media-menu__group"
250
+ aria-label={t(captionsText)}
251
+ renderItem={(props, item) => (
252
+ <Menu.RadioItem {...props} className="media-menu__item">
253
+ <span>{item.label}</span>
254
+ <Menu.ItemIndicator checked={item.checked} forceMount className="media-menu__indicator">
255
+ <CheckIcon className="media-icon" />
256
+ </Menu.ItemIndicator>
257
+ </Menu.RadioItem>
272
258
  )}
273
259
  />
274
- <Menu.Content className="media-menu__panel">
275
- <Menu.Back className="media-menu__back">
276
- <MenuChevron flipped />
277
- {t(captionsText)}
278
- </Menu.Back>
279
- <Menu.Separator className="media-menu__separator" />
280
- <Menu.RadioGroup
281
- className="media-menu__group"
282
- value={captions.value}
283
- onValueChange={captions.setValue}
284
- aria-label={t(captionsText)}
285
- >
286
- {captions.options.map((option) => (
287
- <Menu.RadioItem
288
- key={option.value}
289
- className="media-menu__item"
290
- value={option.value}
291
- disabled={option.disabled}
292
- >
293
- <span>{option.label}</span>
294
- <Menu.ItemIndicator
295
- checked={option.value === captions.value}
296
- forceMount
297
- className="media-menu__indicator"
298
- >
299
- <CheckIcon className="media-icon" />
300
- </Menu.ItemIndicator>
301
- </Menu.RadioItem>
302
- ))}
303
- </Menu.RadioGroup>
304
- </Menu.Content>
305
- </Menu.Root>
306
- ) : null}
307
- </div>
308
- </Menu.View>
260
+ </Menu.Content>
261
+ </Menu.Root>
262
+ ) : null}
263
+ </div>
309
264
  </Menu.Content>
310
265
  </Menu.Root>
311
266
  );
@@ -415,7 +370,7 @@ export function VideoPlayer({ src, className, poster, placeholder, style, ...res
415
370
  : style;
416
371
 
417
372
  return (
418
- <Player.Provider>
373
+ <Player>
419
374
  <Container
420
375
  className={`media-default-skin media-default-skin--video ${className ?? ''}`}
421
376
  style={containerStyle}
@@ -475,19 +430,28 @@ export function VideoPlayer({ src, className, poster, placeholder, style, ...res
475
430
  <div className="media-time-controls">
476
431
  <Time.Value type="current" className="media-time" />
477
432
  <TimeSlider.Root className="media-slider">
478
- <TimeSlider.Track className="media-slider__track">
479
- <TimeSlider.Fill className="media-slider__fill" />
480
- <TimeSlider.Buffer className="media-slider__buffer" />
481
- </TimeSlider.Track>
433
+ <TimeSlider.Chapters
434
+ className="media-slider__chapters"
435
+ renderChapter={(props) => (
436
+ <div {...props} className={`${props.className} media-slider__chapter`}>
437
+ <TimeSlider.Track className="media-slider__track media-slider__chapter-track">
438
+ <TimeSlider.Buffer className="media-slider__buffer" />
439
+ <TimeSlider.Fill className="media-slider__fill" />
440
+ </TimeSlider.Track>
441
+ </div>
442
+ )}
443
+ />
482
444
  <TimeSlider.Thumb className="media-slider__thumb" />
483
445
 
484
- <div className="media-surface media-thumbnail media-slider__thumbnail">
485
- <Slider.Thumbnail className="media-thumbnail__image" />
486
- <TimeSlider.Value type="pointer" className="media-time media-thumbnail__time" />
487
- <SpinnerIcon className="media-thumbnail__spinner media-icon" />
488
- </div>
489
- <TimeSlider.Preview className="media-slider__preview">
490
- <TimeSlider.Value type="pointer" className="media-time media-slider__value" />
446
+ <TimeSlider.Preview overflow="visible" className="media-slider__preview">
447
+ <div className="media-surface media-thumbnail media-slider__thumbnail">
448
+ <Slider.Thumbnail className="media-thumbnail__image" />
449
+ <SpinnerIcon className="media-thumbnail__spinner media-icon" />
450
+ </div>
451
+ <div className="media-slider__value">
452
+ <TimeSlider.ChapterTitle className="media-slider__chapter-title" />
453
+ <TimeSlider.Value type="pointer" className="media-time" />
454
+ </div>
491
455
  </TimeSlider.Preview>
492
456
  </TimeSlider.Root>
493
457
  <Time.Value toggle type="remaining" className="media-time" />
@@ -552,46 +516,49 @@ export function VideoPlayer({ src, className, poster, placeholder, style, ...res
552
516
  <Gesture type="doubletap" action="toggleFullscreen" region="center" />
553
517
  <Gesture type="doubletap" action="seekStep" value={SEEK_TIME} region="right" />
554
518
 
555
- {/* Input Feedback */}
519
+ {/* Input Indicators */}
556
520
  <StatusAnnouncer className="media-sr-only" />
557
- <div className="media-input-feedback">
558
- <VolumeIndicator.Root className="media-surface media-input-feedback-island media-input-feedback-island--volume">
559
- <VolumeIndicator.Fill className="media-input-feedback-island__content">
521
+ <div className="media-input-indicator-overlay">
522
+ <VolumeIndicator.Root className="media-surface media-volume-indicator">
523
+ <VolumeIndicator.Fill className="media-volume-indicator__content">
560
524
  <VolumeHighIcon className="media-icon media-icon--volume-high" />
561
525
  <VolumeLowIcon className="media-icon media-icon--volume-low" />
562
526
  <VolumeOffIcon className="media-icon media-icon--volume-off" />
563
- <VolumeIndicator.Value className="media-input-feedback-island__value" />
527
+ <VolumeIndicator.Value className="media-volume-indicator__value" />
564
528
  </VolumeIndicator.Fill>
565
529
  </VolumeIndicator.Root>
566
530
 
567
531
  <StatusIndicator.Root
568
532
  actions={TOP_STATUS_ACTIONS}
569
- className="media-surface media-input-feedback-island media-input-feedback-island--status"
533
+ className="media-surface media-status-indicator media-status-indicator--state"
570
534
  >
571
- <div className="media-input-feedback-island__content">
535
+ <div className="media-status-indicator__content">
572
536
  <CaptionsOnIcon className="media-icon media-icon--captions-on" />
573
537
  <CaptionsOffIcon className="media-icon media-icon--captions-off" />
574
538
  <FullscreenEnterIcon className="media-icon media-icon--fullscreen-enter" />
575
539
  <FullscreenExitIcon className="media-icon media-icon--fullscreen-exit" />
576
540
  <PipEnterIcon className="media-icon media-icon--pip-enter" />
577
541
  <PipExitIcon className="media-icon media-icon--pip-exit" />
578
- <StatusIndicator.Value className="media-input-feedback-island__value" />
542
+ <StatusIndicator.Value className="media-status-indicator__value" />
579
543
  </div>
580
544
  </StatusIndicator.Root>
581
545
 
582
- <SeekIndicator.Root className="media-input-feedback-bubble">
546
+ <SeekIndicator.Root className="media-seek-indicator">
583
547
  <ChevronIcon className="media-icon media-icon--seek" />
584
- <SeekIndicator.Value className="media-time" />
548
+ <SeekIndicator.Value className="media-seek-indicator__value" />
585
549
  </SeekIndicator.Root>
586
550
 
587
- <StatusIndicator.Root actions={CENTER_STATUS_ACTIONS} className="media-input-feedback-bubble">
551
+ <StatusIndicator.Root
552
+ actions={CENTER_STATUS_ACTIONS}
553
+ className="media-status-indicator media-status-indicator--playback"
554
+ >
588
555
  <PlayIcon className="media-icon media-icon--play" />
589
556
  <PauseIcon className="media-icon media-icon--pause" />
590
557
  </StatusIndicator.Root>
591
558
  </div>
592
559
  </Container>
593
560
 
594
- </Player.Provider>
561
+ </Player>
595
562
  );
596
563
  }
597
564
 
@@ -611,7 +578,7 @@ const Button = forwardRef<HTMLButtonElement, ComponentProps<'button'>>(function
611
578
  });
612
579
 
613
580
  function VolumePopover(): ReactNode {
614
- const volumeUnsupported = usePlayer((s) => s.volumeAvailability === 'unsupported');
581
+ const volumeUnavailable = usePlayer((s) => s.volumeAvailability !== 'available');
615
582
 
616
583
  const muteButton = (
617
584
  <MuteButton className="media-button--mute" render={<Button />}>
@@ -621,7 +588,7 @@ function VolumePopover(): ReactNode {
621
588
  </MuteButton>
622
589
  );
623
590
 
624
- if (volumeUnsupported) return muteButton;
591
+ if (volumeUnavailable) return muteButton;
625
592
 
626
593
  return (
627
594
  <Popover.Root openOnHover delay={200} closeDelay={100} side="top">
@@ -654,7 +621,7 @@ function isRenderProp(value: unknown): value is RenderProp<unknown> {
654
621
  import { createPlayer } from '@videojs/react';
655
622
  import { videoFeatures } from '@videojs/react/video';
656
623
 
657
- export const Player = createPlayer({ features: videoFeatures });
624
+ export const { Player } = createPlayer({ features: videoFeatures });
658
625
  ```
659
626
  ```
660
627
  .media-sr-only {
@@ -670,10 +637,6 @@ export const Player = createPlayer({ features: videoFeatures });
670
637
  }
671
638
 
672
639
 
673
- /* ==========================================================================
674
- Reset
675
- ========================================================================== */
676
-
677
640
  .media-default-skin *,
678
641
  .media-default-skin *::before,
679
642
  .media-default-skin *::after {
@@ -698,29 +661,37 @@ export const Player = createPlayer({ features: videoFeatures });
698
661
  }
699
662
  }
700
663
 
701
- /* ==========================================================================
702
- Root Container
703
- ========================================================================== */
704
-
705
664
  .media-default-skin {
706
665
  /* Colors */
707
- --media-current-shadow-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - 0.5) * 0.5), 0.15));
708
- --media-current-shadow-color-subtle: oklch(from var(--media-current-shadow-color) l c h / calc(alpha * 0.4));
666
+ --accent-color: var(--media-accent-color, var(--default-accent-color));
667
+ --accent-contrast-color: contrast-color(var(--accent-color));
668
+ --accent-background-color: var(
669
+ --media-accent-color,
670
+ oklch(from var(--default-accent-color) l c h / calc(alpha * 0.1))
671
+ );
672
+ --accent-text-color: var(--media-accent-text-color, contrast-color(var(--media-accent-color, oklch(0 0 0))));
673
+ --shadow-current-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - 0.5) * 0.5), 0.15));
674
+ --shadow-subtle-current-color: oklch(from var(--shadow-current-color) l c h / calc(alpha * 0.4));
709
675
  --scrollbar-thumb-color: oklch(from currentColor l c h / 0.3);
710
676
 
711
- /* Scaling (used in video fullscreen) */
677
+ /* Scaling - used in video fullscreen to scale the UI. */
712
678
  --scale: 1;
713
- /* What value and unit to use - 1rem assumes the document font size remains at the default 16px */
714
- --base-size: 1rem;
715
- --size: calc(var(--base-size) * var(--scale));
716
- /* Create a Tailwind-like spacing unit */
679
+ /* Fixed scaling unit to avoid inheriting the document's root font size. This must be a CSS <length>. */
680
+ --scale-unit: var(--media-scale-unit, 16px);
681
+ --size: calc(var(--scale-unit) * var(--scale));
682
+ /* Create a Tailwind-like spacing unit where 1 equals 4px with default scaling. */
717
683
  --spacing: calc(var(--size) / 4);
684
+
685
+ /* Font sizes */
718
686
  --font-size-medium: calc(0.9375 * var(--size)); /* 15px */
719
687
  --font-size-base: calc(0.8125 * var(--size)); /* 13px */
720
688
  --font-size-small: calc(0.6875 * var(--size)); /* 11px */
721
689
  --font-size-tiny: calc(0.5625 * var(--size)); /* 9px */
722
690
  --media-icon-size: calc(1.125 * var(--size)); /* 18px */
723
691
 
692
+ /* Radii */
693
+ --container-border-radius: var(--media-border-radius, 1.75rem);
694
+
724
695
  position: relative;
725
696
  display: block;
726
697
  width: 100%;
@@ -741,14 +712,14 @@ export const Player = createPlayer({ features: videoFeatures });
741
712
  outline-offset: -4px;
742
713
  scrollbar-color: var(--scrollbar-thumb-color) transparent;
743
714
  scrollbar-width: thin;
744
- border-radius: var(--media-border-radius, 1.75rem);
715
+ border-radius: var(--container-border-radius, 1.75rem);
745
716
  isolation: isolate;
746
717
  transition-timing-function: ease-out;
747
718
  transition-duration: 100ms;
748
719
  transition-property: outline-offset, outline-color;
749
720
 
750
721
  &:focus-visible {
751
- outline-color: currentColor;
722
+ outline-color: var(--focus-ring-color);
752
723
  outline-offset: 2px;
753
724
  }
754
725
 
@@ -763,17 +734,13 @@ export const Player = createPlayer({ features: videoFeatures });
763
734
  }
764
735
  }
765
736
 
766
- /* ==========================================================================
767
- Surface (shared glass effect for tooltips, popovers, controls)
768
- ========================================================================== */
769
-
770
737
  .media-default-skin .media-surface {
771
- background-color: var(--media-surface-background-color);
738
+ background-color: var(--surface-background-color);
772
739
  box-shadow:
773
- 0 0 0 1px var(--media-surface-outer-border-color),
774
- 0 1px 3px 0 var(--media-surface-shadow-color),
775
- 0 1px 2px -1px var(--media-surface-shadow-color);
776
- backdrop-filter: var(--media-surface-backdrop-filter);
740
+ 0 0 0 1px var(--surface-outer-border-color),
741
+ 0 1px 3px 0 var(--surface-shadow-color),
742
+ 0 1px 2px -1px var(--surface-shadow-color);
743
+ backdrop-filter: var(--surface-backdrop-filter);
777
744
 
778
745
  /* Inner border ring */
779
746
  &::after {
@@ -784,15 +751,11 @@ export const Player = createPlayer({ features: videoFeatures });
784
751
  content: "";
785
752
  border-radius: inherit;
786
753
  box-shadow:
787
- inset 0 1px 0 0 var(--media-surface-inner-border-color),
788
- inset 0 0 0 1px oklch(from var(--media-surface-inner-border-color) l c h / calc(alpha * 0.5));
754
+ inset 0 1px 0 0 var(--surface-inner-border-color),
755
+ inset 0 0 0 1px oklch(from var(--surface-inner-border-color) l c h / calc(alpha * 0.5));
789
756
  }
790
757
  }
791
758
 
792
- /* ==========================================================================
793
- Media Element
794
- ========================================================================== */
795
-
796
759
  .media-default-skin ::slotted(video),
797
760
  .media-default-skin video {
798
761
  display: block;
@@ -802,7 +765,7 @@ export const Player = createPlayer({ features: videoFeatures });
802
765
  object-position: var(--media-object-position, center);
803
766
  }
804
767
  .media-default-skin ::slotted(video) {
805
- border-radius: var(--media-video-border-radius);
768
+ border-radius: var(--container-border-radius);
806
769
  }
807
770
  .media-default-skin video {
808
771
  border-radius: inherit;
@@ -813,10 +776,6 @@ export const Player = createPlayer({ features: videoFeatures });
813
776
  object-fit: contain;
814
777
  }
815
778
 
816
- /* ==========================================================================
817
- Overlay / Scrim
818
- ========================================================================== */
819
-
820
779
  .media-default-skin .media-overlay {
821
780
  position: absolute;
822
781
  inset: 0;
@@ -826,13 +785,13 @@ export const Player = createPlayer({ features: videoFeatures });
826
785
  opacity: 0;
827
786
  backdrop-filter: blur(0) saturate(1);
828
787
  transition-timing-function: ease-out;
829
- transition-duration: var(--media-controls-transition-duration);
788
+ transition-duration: var(--controls-transition-duration);
830
789
  transition-property: opacity, backdrop-filter;
831
790
  }
832
791
 
833
792
  .media-default-skin .media-error ~ .media-overlay {
834
- transition-delay: var(--media-error-dialog-transition-delay);
835
- transition-duration: var(--media-error-dialog-transition-duration);
793
+ transition-delay: var(--error-dialog-transition-delay);
794
+ transition-duration: var(--error-dialog-transition-duration);
836
795
  }
837
796
 
838
797
  .media-default-skin .media-controls[data-visible] ~ .media-overlay,
@@ -850,10 +809,6 @@ export const Player = createPlayer({ features: videoFeatures });
850
809
  backdrop-filter: blur(16px) saturate(1.5);
851
810
  }
852
811
 
853
- /* ==========================================================================
854
- Buffering Indicator
855
- ========================================================================== */
856
-
857
812
  .media-default-skin .media-buffering-indicator {
858
813
  position: absolute;
859
814
  inset: 0;
@@ -870,11 +825,11 @@ export const Player = createPlayer({ features: videoFeatures });
870
825
  &[data-visible] {
871
826
  display: grid;
872
827
  }
873
- }
874
828
 
875
- /* ==========================================================================
876
- Error Dialog
877
- ========================================================================== */
829
+ @media (prefers-reduced-motion: reduce) {
830
+ --media-spinner-animation: none;
831
+ }
832
+ }
878
833
 
879
834
  .media-default-skin .media-error {
880
835
  outline: none;
@@ -898,7 +853,7 @@ export const Player = createPlayer({ features: videoFeatures });
898
853
  display: flex;
899
854
  gap: calc(var(--spacing) * 2);
900
855
 
901
- & > * {
856
+ > * {
902
857
  flex: 1;
903
858
  }
904
859
  }
@@ -907,10 +862,6 @@ export const Player = createPlayer({ features: videoFeatures });
907
862
  visibility: hidden;
908
863
  }
909
864
 
910
- /* ==========================================================================
911
- Controls
912
- ========================================================================== */
913
-
914
865
  .media-default-skin .media-controls {
915
866
  --media-popover-side-offset: calc(var(--spacing) * (var(--base-side-offset, 2) + 1));
916
867
  --media-tooltip-side-offset: var(--media-popover-side-offset);
@@ -921,14 +872,10 @@ export const Player = createPlayer({ features: videoFeatures });
921
872
  align-items: center;
922
873
  padding: calc(var(--spacing) * 1);
923
874
  container: media-controls / inline-size;
924
- text-shadow: 0 1px 0 var(--media-current-shadow-color);
875
+ text-shadow: 0 1px 0 var(--shadow-current-color);
925
876
  border-radius: calc(Infinity * 1px);
926
877
  }
927
878
 
928
- /* ==========================================================================
929
- Time Display
930
- ========================================================================== */
931
-
932
879
  .media-default-skin .media-time-controls {
933
880
  display: flex;
934
881
  flex: 1;
@@ -936,8 +883,8 @@ export const Player = createPlayer({ features: videoFeatures });
936
883
  align-items: center;
937
884
  container: media-time-controls / inline-size;
938
885
 
939
- & .media-time:last-child {
940
- @container media-time-controls (width < 10rem) {
886
+ > .media-time:last-child {
887
+ @container media-time-controls (width < 16rem) {
941
888
  display: none;
942
889
  }
943
890
  }
@@ -957,15 +904,11 @@ export const Player = createPlayer({ features: videoFeatures });
957
904
  transition-property: outline-color, outline-offset;
958
905
 
959
906
  &:focus-visible {
960
- outline-color: currentColor;
907
+ outline-color: var(--focus-ring-color);
961
908
  outline-offset: 2px;
962
909
  }
963
910
  }
964
911
 
965
- /* ==========================================================================
966
- Buttons
967
- ========================================================================== */
968
-
969
912
  /* Base button */
970
913
  .media-default-skin .media-button {
971
914
  display: flex;
@@ -985,32 +928,31 @@ export const Player = createPlayer({ features: videoFeatures });
985
928
  border-radius: calc(Infinity * 1px);
986
929
  transition-timing-function: ease-out;
987
930
  transition-duration: 150ms;
988
- transition-property: background-color, outline-offset, scale;
931
+ transition-property: background-color, color, outline-offset, scale;
989
932
  /* Fix weird jumping when clicking on the buttons in Safari. */
990
933
  will-change: scale;
991
934
 
992
935
  &:focus-visible {
993
- outline-color: currentColor;
936
+ outline-color: var(--focus-ring-color);
994
937
  outline-offset: 2px;
995
938
  }
996
939
 
997
940
  &:active:not([aria-disabled="true"]) {
998
- scale: 0.98;
941
+ scale: 0.97;
999
942
  }
1000
943
 
1001
944
  &[aria-disabled="true"] {
1002
945
  cursor: not-allowed;
1003
946
  opacity: 0.5;
1004
- filter: grayscale(1);
1005
947
  }
1006
948
  }
1007
949
 
1008
950
  /* Primary button variant */
1009
951
  .media-default-skin .media-button--primary {
1010
952
  font-weight: 500;
1011
- color: oklch(0 0 0);
953
+ color: var(--accent-contrast-color);
1012
954
  text-shadow: none;
1013
- background: oklch(1 0 0);
955
+ background: var(--accent-color);
1014
956
  }
1015
957
 
1016
958
  /* Subtle button variant */
@@ -1019,11 +961,14 @@ export const Player = createPlayer({ features: videoFeatures });
1019
961
  text-shadow: inherit;
1020
962
  background: transparent;
1021
963
 
1022
- &:hover,
1023
- &:focus-visible,
1024
- &[aria-expanded="true"] {
1025
- text-decoration: none;
1026
- background-color: oklch(from currentColor l c h / 0.1);
964
+ &:not([aria-disabled="true"]) {
965
+ &:hover,
966
+ &:focus-visible,
967
+ &[aria-expanded="true"] {
968
+ color: var(--accent-text-color);
969
+ text-decoration: none;
970
+ background-color: var(--accent-background-color);
971
+ }
1027
972
  }
1028
973
  }
1029
974
 
@@ -1034,26 +979,25 @@ export const Player = createPlayer({ features: videoFeatures });
1034
979
  padding: 0;
1035
980
 
1036
981
  &:active:not([aria-disabled="true"]) {
1037
- scale: 0.9;
982
+ scale: 0.97;
1038
983
  }
1039
984
 
1040
- & .media-icon__container {
985
+ .media-icon__container {
1041
986
  display: grid;
1042
987
  }
1043
988
 
1044
- & .media-icon {
989
+ .media-icon {
1045
990
  grid-area: 1 / 1;
1046
- transition-behavior: allow-discrete;
1047
- transition-property: display, opacity;
1048
- transition-duration: 150ms;
991
+ filter: drop-shadow(0 1px 0 var(--shadow-current-color));
1049
992
  transition-timing-function: ease-out;
1050
- filter: drop-shadow(0 1px 0 var(--media-current-shadow-color));
993
+ transition-duration: 150ms;
994
+ transition-property: opacity, scale;
1051
995
  }
1052
996
  }
1053
997
 
1054
998
  /* Seek button */
1055
999
  .media-default-skin .media-button--seek {
1056
- & .media-icon__label {
1000
+ .media-icon__label {
1057
1001
  position: absolute;
1058
1002
  right: -1px;
1059
1003
  bottom: -3px;
@@ -1086,7 +1030,7 @@ export const Player = createPlayer({ features: videoFeatures });
1086
1030
 
1087
1031
  /* Settings button */
1088
1032
  .media-default-skin .media-button--settings {
1089
- & .media-icon--settings {
1033
+ .media-icon--settings {
1090
1034
  transition: transform 150ms ease-in-out;
1091
1035
 
1092
1036
  @media (prefers-reduced-motion: reduce) {
@@ -1131,9 +1075,13 @@ export const Player = createPlayer({ features: videoFeatures });
1131
1075
  }
1132
1076
  }
1133
1077
 
1134
- /* ==========================================================================
1135
- Button Groups
1136
- ========================================================================== */
1078
+ @media (prefers-reduced-motion: reduce) {
1079
+ .media-default-skin .media-button {
1080
+ scale: 1;
1081
+ transition-property: background-color, color, outline-offset;
1082
+ will-change: auto;
1083
+ }
1084
+ }
1137
1085
 
1138
1086
  .media-default-skin .media-button-group {
1139
1087
  display: flex;
@@ -1141,10 +1089,6 @@ export const Player = createPlayer({ features: videoFeatures });
1141
1089
  align-items: center;
1142
1090
  }
1143
1091
 
1144
- /* ==========================================================================
1145
- Badge
1146
- ========================================================================== */
1147
-
1148
1092
  .media-default-skin .media-badge {
1149
1093
  padding: calc(var(--spacing) * 0.5) calc(var(--spacing) * 1.5);
1150
1094
  font-size: var(--font-size-small);
@@ -1156,10 +1100,6 @@ export const Player = createPlayer({ features: videoFeatures });
1156
1100
  border-radius: calc(Infinity * 1px);
1157
1101
  }
1158
1102
 
1159
- /* ==========================================================================
1160
- Icons
1161
- ========================================================================== */
1162
-
1163
1103
  .media-default-skin .media-icon__container {
1164
1104
  position: relative;
1165
1105
  }
@@ -1173,10 +1113,6 @@ export const Player = createPlayer({ features: videoFeatures });
1173
1113
  scale: -1 1;
1174
1114
  }
1175
1115
 
1176
- /* ==========================================================================
1177
- Poster Image
1178
- ========================================================================== */
1179
-
1180
1116
  .media-default-skin media-poster,
1181
1117
  .media-default-skin > img {
1182
1118
  position: absolute;
@@ -1199,7 +1135,7 @@ export const Player = createPlayer({ features: videoFeatures });
1199
1135
  height: 100%;
1200
1136
  object-fit: var(--media-object-fit, contain);
1201
1137
  object-position: var(--media-object-position, center);
1202
- border-radius: var(--media-video-border-radius);
1138
+ border-radius: var(--container-border-radius);
1203
1139
  }
1204
1140
  .media-default-skin > img {
1205
1141
  object-fit: var(--media-object-fit, contain);
@@ -1237,18 +1173,17 @@ export const Player = createPlayer({ features: videoFeatures });
1237
1173
  object-fit: contain;
1238
1174
  }
1239
1175
 
1240
- /* ==========================================================================
1241
- Media thumbnail
1242
- ========================================================================== */
1243
-
1244
1176
  .media-default-skin .media-thumbnail {
1177
+ position: relative;
1245
1178
  pointer-events: none;
1246
1179
  background-color: oklch(0 0 0 / 0.9);
1247
1180
  border-radius: calc(var(--spacing) * 3);
1248
1181
 
1249
- & .media-thumbnail__image {
1182
+ .media-thumbnail__image {
1250
1183
  position: relative;
1251
1184
  display: block;
1185
+ max-width: var(--thumbnail-max-width);
1186
+ max-height: var(--max-height);
1252
1187
  overflow: clip;
1253
1188
  border-radius: inherit;
1254
1189
 
@@ -1261,14 +1196,7 @@ export const Player = createPlayer({ features: videoFeatures });
1261
1196
  }
1262
1197
  }
1263
1198
 
1264
- & .media-thumbnail__time {
1265
- position: absolute;
1266
- inset-inline: 0;
1267
- bottom: calc(var(--spacing) * 2);
1268
- text-align: center;
1269
- }
1270
-
1271
- & .media-thumbnail__spinner {
1199
+ .media-thumbnail__spinner {
1272
1200
  position: absolute;
1273
1201
  top: 50%;
1274
1202
  left: 50%;
@@ -1276,32 +1204,46 @@ export const Player = createPlayer({ features: videoFeatures });
1276
1204
  translate: -50% -50%;
1277
1205
  }
1278
1206
 
1279
- & .media-thumbnail__image,
1280
- & .media-thumbnail__spinner {
1207
+ .media-thumbnail__image,
1208
+ .media-thumbnail__spinner {
1281
1209
  transition: opacity 150ms ease-out;
1282
1210
  }
1283
1211
 
1284
1212
  &:not(:has(.media-thumbnail__image[data-loading])) {
1285
- & .media-thumbnail__spinner {
1213
+ .media-thumbnail__spinner {
1286
1214
  --media-spinner-animation: none;
1287
1215
  }
1288
1216
  }
1289
1217
 
1218
+ @media (prefers-reduced-motion: reduce) {
1219
+ --media-spinner-animation: none;
1220
+ }
1221
+
1290
1222
  &:has(.media-thumbnail__image[data-loading]) {
1291
- & .media-thumbnail__image {
1223
+ width: var(--thumbnail-max-width);
1224
+ max-width: 100%;
1225
+ aspect-ratio: 16 / 9;
1226
+ overflow: hidden;
1227
+
1228
+ .media-thumbnail__image {
1292
1229
  opacity: 0;
1293
1230
  }
1294
- & .media-thumbnail__spinner {
1231
+ .media-thumbnail__spinner {
1295
1232
  opacity: 1;
1296
1233
  }
1297
1234
  }
1298
1235
  }
1299
1236
 
1300
- /* ==========================================================================
1301
- Slider
1302
- ========================================================================== */
1303
-
1304
1237
  .media-default-skin .media-slider {
1238
+ --track-size: calc(var(--spacing) * 1);
1239
+ --track-highlighted-size: calc(var(--spacing) * 1.75);
1240
+ --track-border-radius: 99px;
1241
+ --thumb-size: calc(var(--spacing) * 2.5);
1242
+ --thumb-active-size: calc(var(--spacing) * 3);
1243
+ --chapter-gap: calc(var(--spacing) * 1);
1244
+ --chapter-inset-start: calc(var(--chapter-gap) / 2);
1245
+ --chapter-inset-end: calc(var(--chapter-gap) / 2);
1246
+
1305
1247
  position: relative;
1306
1248
  display: flex;
1307
1249
  flex: 1;
@@ -1309,7 +1251,6 @@ export const Player = createPlayer({ features: videoFeatures });
1309
1251
  justify-content: center;
1310
1252
  cursor: pointer;
1311
1253
  outline: none;
1312
- border-radius: calc(infinity * 1px);
1313
1254
 
1314
1255
  &[data-orientation="horizontal"] {
1315
1256
  width: var(--slider-width, 100%);
@@ -1322,36 +1263,201 @@ export const Player = createPlayer({ features: videoFeatures });
1322
1263
  }
1323
1264
 
1324
1265
  /* Track */
1325
- & .media-slider__track {
1266
+ .media-slider__track {
1326
1267
  position: relative;
1327
1268
  overflow: hidden;
1328
1269
  user-select: none;
1329
- border-radius: inherit;
1270
+ background-color: oklch(from currentColor l c h / 0.2);
1271
+ border-radius: var(--track-border-radius);
1330
1272
  isolation: isolate;
1331
1273
 
1332
1274
  &[data-orientation="horizontal"] {
1333
1275
  width: 100%;
1334
- height: calc(var(--spacing) * 1);
1276
+ height: var(--track-size);
1335
1277
  }
1336
1278
  &[data-orientation="vertical"] {
1337
- width: calc(var(--spacing) * 1);
1279
+ width: var(--track-size);
1280
+ height: 100%;
1281
+ }
1282
+ }
1283
+
1284
+ /* Shared track fills */
1285
+ .media-slider__buffer,
1286
+ .media-slider__fill {
1287
+ position: absolute;
1288
+ pointer-events: none;
1289
+ border-radius: inherit;
1290
+
1291
+ &[data-orientation="horizontal"] {
1292
+ inset-block: 0;
1293
+ left: 0;
1294
+ width: 100%;
1295
+ transition-property: clip-path;
1296
+ }
1297
+ &[data-orientation="vertical"] {
1298
+ inset-inline: 0;
1299
+ bottom: 0;
1300
+ height: 100%;
1301
+ transition-property: clip-path;
1302
+ }
1303
+ }
1304
+
1305
+ /* Buffer */
1306
+ .media-slider__buffer {
1307
+ background-color: oklch(from currentColor l c h / 0.2);
1308
+
1309
+ &[data-orientation="horizontal"] {
1310
+ clip-path: inset(0 calc(100% - var(--media-slider-buffer)) 0 0 round var(--track-border-radius));
1311
+ }
1312
+ &[data-orientation="vertical"] {
1313
+ clip-path: inset(calc(100% - var(--media-slider-buffer)) 0 0 0 round var(--track-border-radius));
1314
+ }
1315
+ }
1316
+
1317
+ /* Fill */
1318
+ .media-slider__fill {
1319
+ background-color: var(--accent-color);
1320
+
1321
+ &[data-orientation="horizontal"] {
1322
+ clip-path: inset(0 calc(100% - var(--media-slider-fill)) 0 0 round var(--track-border-radius));
1323
+ }
1324
+ &[data-orientation="vertical"] {
1325
+ clip-path: inset(calc(100% - var(--media-slider-fill)) 0 0 0 round var(--track-border-radius));
1326
+ }
1327
+ }
1328
+
1329
+ /* Chapters */
1330
+ .media-slider__chapters {
1331
+ position: relative;
1332
+ display: flex;
1333
+ flex: 1;
1334
+ align-items: center;
1335
+ min-width: 0;
1336
+ min-height: 0;
1337
+ border-radius: inherit;
1338
+
1339
+ &[data-orientation="horizontal"] {
1340
+ width: 100%;
1341
+ height: 100%;
1342
+ }
1343
+ &[data-orientation="vertical"] {
1344
+ flex-direction: column-reverse;
1345
+ width: 100%;
1338
1346
  height: 100%;
1339
1347
  }
1340
1348
  }
1341
1349
 
1350
+ .media-slider__chapter {
1351
+ position: absolute;
1352
+ inset: 0;
1353
+ display: flex;
1354
+ align-items: center;
1355
+ justify-content: center;
1356
+ min-width: 0;
1357
+ min-height: 0;
1358
+ border-radius: inherit;
1359
+
1360
+ &:first-child {
1361
+ --chapter-inset-start: 0px;
1362
+ }
1363
+ &:last-child {
1364
+ --chapter-inset-end: 0px;
1365
+ }
1366
+
1367
+ .media-slider__chapter-track {
1368
+ border-radius: inherit;
1369
+
1370
+ @media (prefers-reduced-motion: no-preference) {
1371
+ transition: 200ms ease-out;
1372
+ transition-property: height, width;
1373
+ }
1374
+ }
1375
+
1376
+ &[data-orientation="horizontal"] {
1377
+ clip-path: inset(0 calc(100% - var(--media-slider-chapter-end)) 0 var(--media-slider-chapter-start));
1378
+
1379
+ .media-slider__chapter-track {
1380
+ height: var(--track-size);
1381
+ clip-path: inset(
1382
+ 0 calc(100% - var(--media-slider-chapter-end) + var(--chapter-inset-end)) 0
1383
+ calc(var(--media-slider-chapter-start) + var(--chapter-inset-start)) round var(--track-border-radius)
1384
+ );
1385
+ }
1386
+
1387
+ &[data-highlighted] .media-slider__chapter-track {
1388
+ height: var(--track-highlighted-size);
1389
+ }
1390
+ }
1391
+
1392
+ &[data-orientation="vertical"] {
1393
+ clip-path: inset(calc(100% - var(--media-slider-chapter-end)) 0 var(--media-slider-chapter-start) 0);
1394
+
1395
+ .media-slider__chapter-track {
1396
+ width: var(--track-size);
1397
+ clip-path: inset(
1398
+ calc(100% - var(--media-slider-chapter-end) + var(--chapter-inset-end)) 0
1399
+ calc(var(--media-slider-chapter-start) + var(--chapter-inset-start)) 0 round var(--track-border-radius)
1400
+ );
1401
+ }
1402
+
1403
+ &[data-highlighted] .media-slider__chapter-track {
1404
+ width: var(--track-highlighted-size);
1405
+ }
1406
+ }
1407
+ }
1408
+
1409
+ /* Dragging — thumb and fill follow the pointer position */
1410
+ &[data-dragging] {
1411
+ .media-slider__thumb[data-orientation="horizontal"] {
1412
+ left: var(--media-slider-pointer);
1413
+ }
1414
+ .media-slider__thumb[data-orientation="vertical"] {
1415
+ top: calc(100% - var(--media-slider-pointer));
1416
+ }
1417
+ .media-slider__fill[data-orientation="horizontal"] {
1418
+ clip-path: inset(0 calc(100% - var(--media-slider-pointer)) 0 0 round var(--track-border-radius));
1419
+ }
1420
+ .media-slider__fill[data-orientation="vertical"] {
1421
+ clip-path: inset(calc(100% - var(--media-slider-pointer)) 0 0 0 round var(--track-border-radius));
1422
+ }
1423
+ }
1424
+
1425
+ @media (prefers-reduced-motion: no-preference) {
1426
+ .media-slider__thumb {
1427
+ transition-property: opacity, height, width, outline-offset, left, top;
1428
+ }
1429
+ .media-slider__fill {
1430
+ transition-timing-function: linear;
1431
+ transition-duration: 200ms;
1432
+ }
1433
+ .media-slider__buffer {
1434
+ transition-timing-function: ease-out;
1435
+ transition-duration: 250ms;
1436
+ }
1437
+ }
1438
+
1439
+ &[data-dragging],
1440
+ &[data-seeking] {
1441
+ .media-slider__thumb,
1442
+ .media-slider__fill,
1443
+ .media-slider__buffer {
1444
+ transition-duration: 0ms;
1445
+ }
1446
+ }
1447
+
1342
1448
  /* Thumb */
1343
- & .media-slider__thumb {
1449
+ .media-slider__thumb {
1344
1450
  position: absolute;
1345
1451
  z-index: 10;
1346
- width: calc(var(--spacing) * 2.5);
1347
- height: calc(var(--spacing) * 2.5);
1452
+ width: var(--thumb-size);
1453
+ height: var(--thumb-size);
1348
1454
  user-select: none;
1349
1455
  outline: 4px solid transparent;
1350
1456
  outline-offset: -4px;
1351
1457
  background-color: currentColor;
1352
1458
  border-radius: calc(Infinity * 1px);
1353
1459
  box-shadow:
1354
- 0 0 0 1px var(--media-current-shadow-color, oklch(0 0 0 / 0.1)),
1460
+ 0 0 0 1px var(--shadow-current-color, oklch(0 0 0 / 0.1)),
1355
1461
  0 1px 3px 0 oklch(0 0 0 / 0.35),
1356
1462
  0 1px 2px -1px oklch(0 0 0 / 0.35);
1357
1463
  opacity: 0;
@@ -1369,10 +1475,17 @@ export const Player = createPlayer({ features: videoFeatures });
1369
1475
  left: 50%;
1370
1476
  }
1371
1477
 
1372
- &:hover,
1373
- &:focus {
1478
+ &:focus-visible {
1374
1479
  outline-color: oklch(from currentColor l c h / 0.15);
1375
1480
  outline-offset: 0;
1481
+ opacity: 1;
1482
+ }
1483
+
1484
+ @media (hover: hover) and (pointer: fine) {
1485
+ &:hover {
1486
+ outline-color: oklch(from currentColor l c h / 0.15);
1487
+ outline-offset: 0;
1488
+ }
1376
1489
  }
1377
1490
 
1378
1491
  &::after {
@@ -1390,148 +1503,123 @@ export const Player = createPlayer({ features: videoFeatures });
1390
1503
  opacity: 0;
1391
1504
  scale: 0.5;
1392
1505
  }
1506
+
1507
+ &.media-slider__thumb--persistent {
1508
+ width: var(--thumb-active-size);
1509
+ height: var(--thumb-active-size);
1510
+ opacity: 1;
1511
+ }
1393
1512
  }
1394
1513
 
1395
1514
  &:active .media-slider__thumb,
1396
- &:focus-within .media-slider__thumb,
1397
- & .media-slider__thumb--persistent {
1398
- width: calc(var(--spacing) * 3);
1399
- height: calc(var(--spacing) * 3);
1515
+ &:focus-within .media-slider__thumb {
1516
+ width: var(--thumb-active-size);
1517
+ height: var(--thumb-active-size);
1400
1518
  }
1401
1519
 
1402
- &:hover .media-slider__thumb,
1403
- & .media-slider__thumb:focus-visible,
1404
- & .media-slider__thumb--persistent {
1405
- opacity: 1;
1520
+ @media (hover: hover) and (pointer: fine) {
1521
+ &:hover .media-slider__thumb {
1522
+ opacity: 1;
1523
+ }
1406
1524
  }
1407
1525
 
1408
1526
  /* Preview */
1409
- & .media-slider__preview {
1410
- & .media-slider__value,
1411
- &::before {
1412
- opacity: 0;
1413
- scale: 0.5;
1414
- transition-timing-function: ease-out;
1415
- transition-duration: 200ms;
1416
- transition-property: opacity, scale;
1417
- }
1527
+ .media-slider__preview {
1528
+ --max-width: min(calc(var(--spacing) * 48), 100cqi);
1529
+ --max-height: calc(var(--spacing) * 32);
1418
1530
 
1419
- & .media-slider__value {
1531
+ min-width: var(--max-width);
1532
+ height: calc(var(--spacing) * 1);
1533
+
1534
+ .media-slider__thumbnail,
1535
+ .media-slider__value {
1420
1536
  position: absolute;
1421
- bottom: calc(var(--spacing) * 9);
1422
- text-shadow: 0 1px 0 var(--media-current-shadow-color);
1537
+ left: 50%;
1538
+ max-width: var(--max-width);
1539
+ opacity: 0;
1423
1540
  filter: blur(8px);
1541
+ transform-origin: bottom;
1542
+ scale: 0.8;
1424
1543
  translate: -50% calc(var(--spacing) * 2);
1425
- transition-property: filter, opacity, scale, translate;
1544
+ transition-timing-function: ease-out;
1545
+ transition-duration: 150ms;
1546
+ }
1547
+
1548
+ .media-slider__thumbnail {
1549
+ --thumbnail-max-width: var(--max-width);
1550
+ bottom: calc(100% + (var(--spacing) * 9));
1551
+ }
1552
+
1553
+ .media-slider__value {
1554
+ bottom: calc(100% + (var(--spacing) * 10.5));
1555
+ display: flex;
1556
+ flex-direction: column;
1557
+ align-items: center;
1558
+ text-shadow: 0 1px 0 var(--shadow-current-color);
1559
+ }
1560
+
1561
+ .media-slider__chapter-title {
1562
+ min-width: 0;
1563
+ max-width: var(--max-width);
1564
+ padding-inline: calc(var(--spacing) * 6);
1565
+ overflow: hidden;
1566
+ text-overflow: ellipsis;
1567
+ white-space: nowrap;
1568
+
1569
+ &:empty {
1570
+ display: none;
1571
+ }
1426
1572
  }
1427
1573
 
1428
1574
  &::before {
1429
- display: block;
1430
- min-width: calc(var(--spacing) * 1);
1575
+ position: absolute;
1576
+ top: 50%;
1577
+ left: 50%;
1578
+ z-index: 1;
1579
+ width: calc(var(--spacing) * 1);
1431
1580
  height: calc(var(--spacing) * 1);
1581
+ pointer-events: none;
1432
1582
  content: "";
1433
1583
  background-color: currentColor;
1434
1584
  border-radius: 100%;
1435
1585
  box-shadow:
1436
- 0 0 0 1px var(--media-current-shadow-color, oklch(0 0 0 / 0.15)),
1586
+ 0 0 0 1px var(--shadow-current-color, oklch(0 0 0 / 0.15)),
1437
1587
  0 1px 2px 0 oklch(0 0 0 / 0.35);
1588
+ opacity: 0;
1589
+ scale: 0.5;
1590
+ translate: -50% -50%;
1591
+ transition-timing-function: ease-out;
1592
+ transition-duration: 200ms;
1593
+ transition-property: opacity, scale;
1438
1594
  }
1595
+ }
1439
1596
 
1440
- &[data-pointing] .media-slider__value,
1441
- &[data-pointing]:not([data-dragging])::before {
1442
- opacity: 1;
1443
- scale: 1;
1444
- }
1445
- &[data-pointing] .media-slider__value {
1446
- filter: blur(0);
1447
- translate: -50% 0;
1448
- }
1597
+ &:is([data-pointing], :has(:focus-visible))
1598
+ .media-slider__preview
1599
+ :is(.media-slider__value, .media-slider__thumbnail),
1600
+ .media-slider__preview[data-pointing]:not([data-dragging])::before {
1601
+ opacity: 1;
1602
+ filter: blur(0);
1603
+ scale: 1;
1449
1604
  }
1450
-
1451
- /* Shared track fills */
1452
- & .media-slider__buffer,
1453
- & .media-slider__fill {
1454
- position: absolute;
1455
- pointer-events: none;
1456
- border-radius: inherit;
1457
-
1458
- &[data-orientation="horizontal"],
1459
- &[data-orientation="horizontal"] {
1460
- inset-block: 0;
1461
- left: 0;
1462
- }
1463
- &[data-orientation="vertical"],
1464
- &[data-orientation="vertical"] {
1465
- inset-inline: 0;
1466
- bottom: 0;
1467
- }
1468
- }
1469
-
1470
- /* Buffer */
1471
- & .media-slider__buffer {
1472
- background-color: oklch(from currentColor l c h / 0.2);
1473
- transition-timing-function: ease-out;
1474
- transition-duration: 0.25s;
1475
-
1476
- &[data-orientation="horizontal"] {
1477
- width: var(--media-slider-buffer);
1478
- transition-property: width;
1479
- }
1480
- &[data-orientation="vertical"] {
1481
- height: var(--media-slider-buffer);
1482
- transition-property: height;
1483
- }
1484
- }
1485
-
1486
- /* Fill */
1487
- & .media-slider__fill {
1488
- background-color: currentColor;
1489
-
1490
- &[data-orientation="horizontal"] {
1491
- width: var(--media-slider-fill);
1492
- }
1493
- &[data-orientation="vertical"] {
1494
- height: var(--media-slider-fill);
1495
- }
1496
- }
1497
-
1498
- /* Dragging — thumb and fill follow the pointer position */
1499
- &[data-dragging] {
1500
- & .media-slider__thumb[data-orientation="horizontal"] {
1501
- left: var(--media-slider-pointer);
1502
- }
1503
- & .media-slider__thumb[data-orientation="vertical"] {
1504
- top: calc(100% - var(--media-slider-pointer));
1505
- }
1506
- & .media-slider__fill[data-orientation="horizontal"] {
1507
- width: var(--media-slider-pointer);
1508
- }
1509
- & .media-slider__fill[data-orientation="vertical"] {
1510
- height: var(--media-slider-pointer);
1511
- }
1512
- }
1513
- }
1514
-
1515
- /* ==========================================================================
1516
- Popups & Tooltips
1517
- ========================================================================== */
1605
+ }
1518
1606
 
1519
1607
  .media-default-skin {
1520
- --media-popup-transition:
1521
- opacity var(--media-popup-transition-timing-function) var(--media-popup-transition-duration),
1522
- filter var(--media-popup-transition-timing-function) var(--media-popup-transition-duration),
1523
- transform var(--media-popup-transition-timing-function) var(--media-popup-transition-duration),
1524
- scale var(--media-popup-transition-timing-function) var(--media-popup-transition-duration);
1608
+ --popup-transition:
1609
+ opacity var(--popup-transition-timing-function) var(--popup-transition-duration),
1610
+ filter var(--popup-transition-timing-function) var(--popup-transition-duration),
1611
+ transform var(--popup-transition-timing-function) var(--popup-transition-duration),
1612
+ scale var(--popup-transition-timing-function) var(--popup-transition-duration);
1525
1613
  }
1526
1614
 
1527
1615
  .media-default-skin .media-popover,
1528
1616
  .media-default-skin .media-tooltip {
1529
- --popup-translate-distance: calc(0.5 * var(--base-size));
1617
+ --popup-translate-distance: calc(0.5 * var(--scale-unit));
1530
1618
  margin: 0;
1531
1619
  overflow: visible;
1532
1620
  color: inherit;
1533
1621
  border: 0;
1534
- transition: var(--media-popup-transition);
1622
+ transition: var(--popup-transition);
1535
1623
 
1536
1624
  &[data-starting-style],
1537
1625
  &[data-ending-style] {
@@ -1545,7 +1633,7 @@ export const Player = createPlayer({ features: videoFeatures });
1545
1633
  &[data-ending-style] {
1546
1634
  transform: none;
1547
1635
  /* Speed up the exit transition. */
1548
- transition-duration: max(0ms, calc(var(--media-popup-transition-duration) - 50ms));
1636
+ transition-duration: max(0ms, calc(var(--popup-transition-duration) - 50ms));
1549
1637
  }
1550
1638
 
1551
1639
  &[data-side="top"] {
@@ -1611,7 +1699,7 @@ export const Player = createPlayer({ features: videoFeatures });
1611
1699
  padding: calc(var(--spacing) * 3) 0;
1612
1700
  border-radius: calc(Infinity * 1px);
1613
1701
 
1614
- &:has(media-volume-slider[data-availability="unsupported"]) {
1702
+ &:has(media-volume-slider[data-hidden]) {
1615
1703
  display: none;
1616
1704
  }
1617
1705
  }
@@ -1638,7 +1726,7 @@ export const Player = createPlayer({ features: videoFeatures });
1638
1726
  width: var(--media-tooltip-side-offset);
1639
1727
  }
1640
1728
 
1641
- & .media-tooltip__kbd {
1729
+ .media-tooltip__kbd {
1642
1730
  min-width: 1.5em;
1643
1731
  padding: 0.1em;
1644
1732
  font-family: inherit;
@@ -1651,11 +1739,6 @@ export const Player = createPlayer({ features: videoFeatures });
1651
1739
  }
1652
1740
  }
1653
1741
 
1654
- /* ==========================================================================
1655
- Menus
1656
- Note: Menus use `.media-popover` styles for positioning and transitions.
1657
- ========================================================================== */
1658
-
1659
1742
  .media-default-skin .media-menu {
1660
1743
  --menu-transition-duration: 250ms;
1661
1744
  --menu-max-height: calc(var(--spacing) * 56);
@@ -1675,70 +1758,38 @@ export const Player = createPlayer({ features: videoFeatures });
1675
1758
  --menu-transition-duration: 0ms;
1676
1759
  }
1677
1760
 
1678
- & .media-menu__panel {
1761
+ & > .media-menu__panel {
1679
1762
  position: absolute;
1680
- inset: 0;
1763
+ inset-inline: 0;
1764
+ top: 0;
1765
+ z-index: 10;
1766
+ max-height: inherit;
1681
1767
  padding: var(--menu-padding);
1682
1768
  overflow: auto;
1683
1769
  overscroll-behavior: none;
1684
1770
  outline: none;
1685
1771
  translate: 0 0;
1686
- transition-timing-function: ease-in-out;
1772
+ transition-timing-function: ease-out;
1687
1773
  transition-duration: var(--menu-transition-duration);
1688
1774
  transition-property: translate, filter;
1689
1775
  will-change: translate, filter;
1690
1776
 
1691
- &[data-starting-style],
1692
- &[data-ending-style] {
1777
+ &:where([data-starting-style], [data-ending-style]) {
1693
1778
  overflow: hidden;
1694
- }
1695
-
1696
- /* Root settings view — slides out when a submenu is active */
1697
- &[data-menu-root-view][data-menu-view-state="inactive"] {
1779
+ pointer-events: none;
1698
1780
  filter: blur(8px);
1699
- translate: -100% 0;
1700
-
1701
- /* Hide the indicator while transitioning */
1702
- & .media-menu__group::before {
1703
- display: none;
1704
- }
1705
- }
1706
-
1707
- /* Submenu panels — slide in/out alongside the root view */
1708
- &[data-submenu] {
1709
- z-index: 10;
1710
-
1711
- &:not([data-open], [data-ending-style]) {
1712
- translate: -100% 0;
1713
- transition-property: none;
1714
- }
1715
-
1716
- &[data-starting-style],
1717
- &[data-ending-style] {
1718
- pointer-events: none;
1719
- filter: blur(8px);
1720
- }
1721
-
1722
- &[data-starting-style][data-direction="forward"],
1723
- &[data-ending-style][data-direction="back"] {
1724
- translate: 100% 0;
1725
- }
1726
-
1727
- &[data-ending-style][data-direction="forward"],
1728
- &[data-starting-style][data-direction="back"] {
1729
- translate: -100% 0;
1730
- }
1781
+ translate: 100% 0;
1731
1782
  }
1732
1783
  }
1733
1784
 
1734
- & .media-menu__separator {
1785
+ .media-menu__separator {
1735
1786
  margin-block: calc(var(--spacing) * 1);
1736
1787
  border-bottom: 1px solid oklch(0 0 0 / 0.1);
1737
1788
  box-shadow: 0 1px 0 0 oklch(1 0 0 / 0.075);
1738
1789
  }
1739
1790
 
1740
- & .media-menu__group {
1741
- anchor-scope: --media-menu-item-highlight-anchor;
1791
+ .media-menu__group {
1792
+ anchor-scope: --menu-item-highlight-anchor;
1742
1793
  display: flex;
1743
1794
  flex-direction: column;
1744
1795
  gap: calc(var(--spacing) * 0.5);
@@ -1746,63 +1797,85 @@ export const Player = createPlayer({ features: videoFeatures });
1746
1797
  @supports (top: anchor(top)) {
1747
1798
  &::before {
1748
1799
  position: absolute;
1749
- position-anchor: --media-menu-item-highlight-anchor;
1800
+ position-anchor: --menu-item-highlight-anchor;
1750
1801
  inset: anchor(inside);
1802
+ /* Firefox treats the moving highlight as a content shift and re-scrolls
1803
+ the menu while hovering. Exclude it from scroll anchoring. */
1804
+ overflow-anchor: none;
1751
1805
  pointer-events: none;
1752
1806
  content: "";
1753
- background-color: oklch(from currentColor l c h / 0.1);
1807
+ background-color: var(--accent-background-color);
1754
1808
  border-radius: var(--menu-item-border-radius);
1755
- transition: inset ease-in-out 100ms;
1809
+ transition: inset 100ms ease-in-out;
1810
+ }
1811
+
1812
+ &:has([data-highlighted=""])::before {
1813
+ transition-duration: 0ms;
1756
1814
  }
1757
1815
  }
1758
1816
  }
1759
1817
 
1760
- & .media-menu__item,
1761
- & .media-menu__back {
1818
+ .media-menu__item,
1819
+ .media-menu__back {
1820
+ position: relative;
1762
1821
  display: flex;
1763
1822
  gap: calc(var(--spacing) * 1.5);
1764
1823
  align-items: center;
1765
1824
  padding: calc(var(--spacing) * 1.5) calc(var(--spacing) * 2);
1766
1825
  text-align: left;
1767
- text-shadow: 0 1px 0 var(--media-current-shadow-color);
1826
+ text-shadow: 0 1px 0 var(--shadow-current-color);
1768
1827
  cursor: pointer;
1769
1828
  user-select: none;
1770
1829
  outline: 2px solid transparent;
1771
1830
  outline-offset: -2px;
1772
1831
  border-radius: var(--menu-item-border-radius);
1773
1832
  transition: background-color, color;
1774
- transition-timing-function: ease-out;
1833
+ transition-timing-function: ease-in-out;
1775
1834
  transition-duration: 100ms;
1776
1835
 
1836
+ .media-icon {
1837
+ flex-shrink: 0;
1838
+ color: oklch(from currentColor l c h / 0.65);
1839
+ filter: drop-shadow(0 1px 0 var(--shadow-current-color));
1840
+ }
1841
+
1777
1842
  &:focus-visible {
1778
- outline-color: currentColor;
1843
+ outline-color: var(--focus-ring-color);
1779
1844
  outline-offset: 2px;
1780
1845
  }
1781
1846
 
1782
1847
  &:hover,
1783
1848
  &[data-highlighted] {
1784
- background-color: oklch(from currentColor l c h / 0.1);
1849
+ color: var(--accent-text-color);
1850
+ background-color: var(--accent-background-color);
1851
+
1852
+ .media-icon {
1853
+ color: inherit;
1854
+ }
1785
1855
  }
1786
1856
 
1787
- & .media-icon {
1788
- flex-shrink: 0;
1789
- color: oklch(from currentColor l c h / 0.65);
1790
- filter: drop-shadow(0 1px 0 var(--media-current-shadow-color));
1857
+ @supports (top: anchor(top)) {
1858
+ transition-duration: 50ms;
1859
+
1860
+ &:hover,
1861
+ &[data-highlighted] {
1862
+ transition-duration: 200ms;
1863
+ }
1791
1864
  }
1792
1865
  }
1793
1866
 
1794
- & .media-menu__indicator {
1867
+ .media-menu__indicator {
1795
1868
  flex-shrink: 0;
1796
1869
  margin-right: calc(var(--spacing) * -1);
1797
1870
  margin-left: auto;
1798
1871
  opacity: 0;
1799
1872
 
1800
- & .media-icon {
1801
- filter: drop-shadow(0 1px 0 var(--media-current-shadow-color));
1873
+ .media-icon {
1874
+ filter: drop-shadow(0 1px 0 var(--shadow-current-color));
1802
1875
  }
1803
1876
  }
1804
1877
 
1805
- & .media-menu__item {
1878
+ .media-menu__item {
1806
1879
  justify-content: space-between;
1807
1880
  font-variant-numeric: tabular-nums;
1808
1881
  color: inherit;
@@ -1822,16 +1895,15 @@ export const Player = createPlayer({ features: videoFeatures });
1822
1895
  display: none;
1823
1896
  }
1824
1897
 
1825
- &:hover,
1826
1898
  &[data-highlighted] {
1827
1899
  @supports (top: anchor(top)) {
1828
- anchor-name: --media-menu-item-highlight-anchor;
1900
+ anchor-name: --menu-item-highlight-anchor;
1829
1901
  background-color: transparent;
1830
1902
  }
1831
1903
  }
1832
1904
  }
1833
1905
 
1834
- & .media-menu__tier {
1906
+ .media-menu__tier {
1835
1907
  padding-top: 1px;
1836
1908
  padding-left: calc(var(--spacing) * 0.5);
1837
1909
  font-size: var(--font-size-tiny);
@@ -1840,12 +1912,12 @@ export const Player = createPlayer({ features: videoFeatures });
1840
1912
  color: oklch(from currentColor l c h / 0.7);
1841
1913
  }
1842
1914
 
1843
- & .media-menu__back {
1915
+ .media-menu__back {
1844
1916
  width: 100%;
1845
1917
  margin-bottom: calc(var(--spacing) * 0.5);
1846
1918
  }
1847
1919
 
1848
- & .media-menu__hint {
1920
+ .media-menu__hint {
1849
1921
  display: inline-flex;
1850
1922
  gap: calc(var(--spacing) * 1);
1851
1923
  align-items: center;
@@ -1855,14 +1927,14 @@ export const Player = createPlayer({ features: videoFeatures });
1855
1927
  color: oklch(from currentColor l c h / 0.65);
1856
1928
  }
1857
1929
 
1858
- & .media-menu__hint-label {
1930
+ .media-menu__hint-label {
1859
1931
  max-width: calc(var(--spacing) * 24);
1860
1932
  overflow: hidden;
1861
1933
  text-overflow: ellipsis;
1862
1934
  white-space: nowrap;
1863
1935
  }
1864
1936
 
1865
- & .media-menu__chevron {
1937
+ .media-menu__chevron {
1866
1938
  width: calc(var(--spacing) * 3.5);
1867
1939
  height: calc(var(--spacing) * 3.5);
1868
1940
  }
@@ -1873,37 +1945,46 @@ export const Player = createPlayer({ features: videoFeatures });
1873
1945
  min-width: calc(var(--spacing) * 48);
1874
1946
  height: var(--media-menu-height);
1875
1947
  overflow: hidden;
1876
- /* Add height and width transitions. */
1948
+ /* Only the menu size changes between panels. */
1877
1949
  transition:
1878
- var(--media-popup-transition),
1879
- height var(--media-popup-transition-timing-function) var(--menu-transition-duration),
1880
- width var(--media-popup-transition-timing-function) var(--menu-transition-duration);
1950
+ var(--popup-transition),
1951
+ width var(--popup-transition-timing-function) var(--menu-transition-duration),
1952
+ height var(--popup-transition-timing-function) var(--menu-transition-duration);
1953
+
1954
+ & > :not([data-submenu]) {
1955
+ translate: 0 0;
1956
+ transition:
1957
+ translate var(--menu-transition-duration) ease-out,
1958
+ filter var(--menu-transition-duration) ease-out;
1959
+ will-change: translate, filter;
1960
+ }
1961
+
1962
+ &[data-submenu-expanded="true"] > :not([data-submenu]) {
1963
+ filter: blur(8px);
1964
+ translate: -100% 0;
1965
+ }
1881
1966
 
1882
- /* Don't transition width and height on open/close. */
1967
+ /* WebKit can restart the covered-content transition while the
1968
+ anchor-positioned highlight remains active. */
1969
+ &[data-submenu-expanded] > :not([data-submenu])::before {
1970
+ display: none;
1971
+ }
1972
+
1973
+ /* Don't transition size on open/close. */
1883
1974
  &[data-starting-style],
1884
1975
  &[data-ending-style] {
1885
- transition: var(--media-popup-transition);
1976
+ transition: var(--popup-transition);
1886
1977
  }
1887
1978
  }
1888
1979
  }
1889
1980
 
1890
- /* ==========================================================================
1891
- Native Caption Track
1892
- ========================================================================== */
1893
-
1894
1981
  .media-default-skin {
1895
- --media-caption-track-duration: var(--media-controls-transition-duration);
1982
+ --media-caption-track-duration: var(--controls-transition-duration);
1896
1983
  --media-caption-track-delay: 25ms;
1897
1984
  --media-caption-track-y: calc(var(--spacing) * -2);
1898
1985
 
1899
1986
  &:has(.media-controls[data-visible]) {
1900
- --media-caption-track-y: calc(var(--spacing) * -22);
1901
- }
1902
-
1903
- @container media-root (width > 42rem) {
1904
- &:has(.media-controls[data-visible]) > * {
1905
- --media-caption-track-y: calc(var(--spacing) * -14);
1906
- }
1987
+ --media-caption-track-y: calc(var(--spacing) * -14);
1907
1988
  }
1908
1989
  }
1909
1990
 
@@ -1916,106 +1997,110 @@ export const Player = createPlayer({ features: videoFeatures });
1916
1997
  transition-delay: var(--media-caption-track-delay);
1917
1998
  }
1918
1999
 
1919
- /* ==========================================================================
1920
- Input Feedback
1921
- ========================================================================== */
1922
-
1923
- .media-default-skin .media-input-feedback {
2000
+ .media-default-skin .media-input-indicator-overlay {
1924
2001
  position: absolute;
1925
2002
  inset: 0;
1926
2003
  display: grid;
1927
2004
  grid-template-columns: 1fr 1fr 1fr;
1928
2005
  align-items: center;
1929
2006
  justify-items: center;
1930
- color: var(--media-color-primary, oklch(1 0 0));
2007
+ color: oklch(1 0 0);
1931
2008
  pointer-events: none;
1932
2009
  }
1933
2010
 
1934
- /* --- Feedback islands ------------------------------------------------------- */
1935
-
1936
- .media-default-skin .media-input-feedback-island {
1937
- --media-surface-background-color: oklch(0 0 0 / 0.25);
1938
- position: absolute;
1939
- top: calc(var(--spacing) * 3);
1940
- font-weight: 500;
1941
- color: inherit;
1942
- pointer-events: none;
1943
- border-radius: calc(Infinity * 1px);
1944
- transform-origin: top center;
1945
- transition-timing-function: ease-out;
1946
- transition-duration: 100ms;
2011
+ .media-default-skin {
2012
+ .media-volume-indicator,
2013
+ .media-status-indicator--state {
2014
+ --surface-background-color: oklch(0 0 0 / 0.25);
2015
+ position: absolute;
2016
+ top: calc(var(--spacing) * 3);
2017
+ font-weight: 500;
2018
+ color: inherit;
2019
+ pointer-events: none;
2020
+ border-radius: calc(Infinity * 1px);
2021
+ transform-origin: top center;
2022
+ transition-timing-function: ease-out;
2023
+ transition-duration: 100ms;
1947
2024
 
1948
- .media-input-feedback-island__content {
1949
- display: flex;
1950
- gap: calc(var(--spacing) * 2);
1951
- align-items: center;
1952
- justify-content: space-between;
1953
- width: 100%;
1954
- padding: calc(var(--spacing) * 1) calc(var(--spacing) * 2.5);
2025
+ .media-volume-indicator__content,
2026
+ .media-status-indicator__content {
2027
+ display: flex;
2028
+ gap: calc(var(--spacing) * 2);
2029
+ align-items: center;
2030
+ justify-content: space-between;
2031
+ width: 100%;
2032
+ padding: calc(var(--spacing) * 1) calc(var(--spacing) * 2.5);
1955
2033
 
1956
- /* Increase contrast of the content */
1957
- * {
1958
- mix-blend-mode: difference;
2034
+ * {
2035
+ mix-blend-mode: difference;
2036
+ }
1959
2037
  }
1960
- }
1961
2038
 
1962
- .media-icon {
1963
- display: none;
1964
- flex-shrink: 0;
1965
- }
2039
+ .media-icon {
2040
+ display: none;
2041
+ flex-shrink: 0;
2042
+ }
1966
2043
 
1967
- .media-input-feedback-island__value {
1968
- margin-left: auto;
1969
- }
2044
+ .media-volume-indicator__value,
2045
+ .media-status-indicator__value {
2046
+ margin-left: auto;
2047
+ }
1970
2048
 
1971
- @media (pointer: coarse) {
1972
- transition-property: scale, translate, opacity;
1973
- will-change: scale, translate, opacity;
1974
- }
2049
+ @media (pointer: coarse) {
2050
+ transition-property: scale, translate, opacity;
2051
+ will-change: scale, translate, opacity;
2052
+ }
1975
2053
 
1976
- @media (pointer: fine) and (prefers-reduced-motion: no-preference) {
1977
- transition-property: scale, translate, filter, opacity;
1978
- will-change: scale, translate, filter, opacity;
1979
- }
2054
+ @media (pointer: fine) and (prefers-reduced-motion: no-preference) {
2055
+ transition-property: scale, translate, filter, opacity;
2056
+ will-change: scale, translate, filter, opacity;
2057
+ }
1980
2058
 
1981
- @media (prefers-reduced-transparency: reduce) or (prefers-contrast: more) {
1982
- --media-surface-background-color: oklch(0 0 0);
1983
- }
2059
+ @media (prefers-reduced-transparency: reduce) or (prefers-contrast: more) {
2060
+ --surface-background-color: oklch(0 0 0);
2061
+ }
1984
2062
 
1985
- /* Default hidden state */
1986
- &[data-starting-style],
1987
- &[data-ending-style] {
1988
- opacity: 0;
1989
- transition-timing-function: ease-in;
1990
- transition-duration: 250ms;
2063
+ &[data-starting-style],
2064
+ &[data-ending-style] {
2065
+ opacity: 0;
2066
+ transition-timing-function: ease-in;
2067
+ transition-duration: 250ms;
1991
2068
 
1992
- @media (pointer: fine) and (prefers-reduced-motion: no-preference) {
1993
- filter: blur(8px);
1994
- scale: 0.9;
2069
+ @media (pointer: fine) and (prefers-reduced-motion: no-preference) {
2070
+ filter: blur(8px);
2071
+ scale: 0.9;
2072
+ }
1995
2073
  }
1996
2074
 
1997
- @media (prefers-reduced-motion: no-preference) {
1998
- &[data-ending-style] {
2075
+ &[data-ending-style] {
2076
+ @media (prefers-reduced-motion: no-preference) {
1999
2077
  translate: 0 -25%;
2000
2078
  }
2001
2079
  }
2002
2080
  }
2081
+
2082
+ .media-seek-indicator,
2083
+ .media-status-indicator--playback {
2084
+ display: grid;
2085
+ grid-row: 1;
2086
+ grid-column: 2;
2087
+ place-content: center;
2088
+ padding: calc(var(--spacing) * 4);
2089
+ text-align: center;
2090
+ }
2003
2091
  }
2004
2092
 
2005
- .media-default-skin .media-input-feedback-island--volume {
2093
+ .media-default-skin .media-volume-indicator {
2006
2094
  width: min(80%, calc(var(--spacing) * 48));
2095
+ transform: translateX(0);
2007
2096
 
2008
- .media-input-feedback-island__content {
2009
- --media-progress-fill: var(--media-volume-fill);
2010
- background-image: linear-gradient(
2011
- to right,
2012
- currentColor 0%,
2013
- currentColor var(--media-progress-fill),
2014
- transparent var(--media-progress-fill),
2015
- transparent 100%
2016
- );
2097
+ .media-volume-indicator__content {
2098
+ background-image: linear-gradient(currentColor, currentColor);
2099
+ background-repeat: no-repeat;
2100
+ background-position: left;
2101
+ background-size: var(--media-volume-fill, 0%) 100%;
2017
2102
  border-radius: inherit;
2018
- transition: --media-progress-fill 200ms linear;
2103
+ transition: background-size 200ms linear;
2019
2104
  }
2020
2105
 
2021
2106
  &[data-level="high"] .media-icon--volume-high,
@@ -2025,14 +2110,15 @@ export const Player = createPlayer({ features: videoFeatures });
2025
2110
  }
2026
2111
 
2027
2112
  @media (prefers-reduced-motion: no-preference) {
2028
- &[data-min],
2029
- &[data-max] {
2030
- animation: media-shake 300ms ease-in-out;
2113
+ &[data-min]:not([data-starting-style], [data-ending-style]),
2114
+ &[data-max]:not([data-starting-style], [data-ending-style]) {
2115
+ transform: translateX(0.25px);
2116
+ transition: transform 300ms linear(0, -24 20%, 16 40%, -8 60%, 4 80%, 1);
2031
2117
  }
2032
2118
  }
2033
2119
  }
2034
2120
 
2035
- .media-default-skin .media-input-feedback-island--status {
2121
+ .media-default-skin .media-status-indicator--state {
2036
2122
  &[data-status="captions-on"] .media-icon--captions-on,
2037
2123
  &[data-status="captions-off"] .media-icon--captions-off,
2038
2124
  &[data-status="fullscreen"] .media-icon--fullscreen-enter,
@@ -2043,49 +2129,72 @@ export const Player = createPlayer({ features: videoFeatures });
2043
2129
  }
2044
2130
  }
2045
2131
 
2046
- /* --- Bubble ---------------------------------------------------------------- */
2047
-
2048
- .media-default-skin .media-input-feedback-bubble {
2049
- display: grid;
2050
- grid-row: 1;
2051
- grid-column: 2;
2052
- place-content: center;
2053
- padding: calc(var(--spacing) * 4);
2054
- text-align: center;
2132
+ .media-default-skin .media-status-indicator--playback {
2133
+ background: oklch(0 0 0 / 0.35);
2134
+ border-radius: 100%;
2135
+ backdrop-filter: blur(8px);
2136
+ transition-timing-function: ease-out;
2137
+ transition-duration: 200ms;
2138
+ transition-property: opacity, scale;
2055
2139
 
2056
- /* Central bubble (play, pause) */
2057
- &:not([data-direction]) {
2058
- background: oklch(0 0 0 / 0.35);
2059
- border-radius: 100%;
2060
- backdrop-filter: blur(8px);
2140
+ .media-icon {
2141
+ grid-area: 1 / 1;
2142
+ width: calc(var(--media-icon-size) * 1.5);
2143
+ height: calc(var(--media-icon-size) * 1.5);
2144
+ opacity: 0;
2145
+ scale: 0;
2061
2146
  transition-timing-function: ease-out;
2062
- transition-duration: 200ms;
2147
+ transition-duration: 150ms;
2063
2148
  transition-property: opacity, scale;
2064
2149
 
2065
- &[data-starting-style],
2066
- &[data-ending-style] {
2067
- opacity: 0;
2068
- scale: 0.85;
2150
+ &.media-icon--play {
2151
+ translate: 1px 0;
2069
2152
  }
2153
+ }
2070
2154
 
2071
- &[data-ending-style] {
2072
- transition-timing-function: ease-in;
2073
- transition-duration: 100ms;
2155
+ &[data-status="pause"] .media-icon--pause,
2156
+ &[data-status="play"] .media-icon--play {
2157
+ opacity: 1;
2158
+ scale: 1;
2159
+ }
2160
+
2161
+ &[data-starting-style],
2162
+ &[data-ending-style] {
2163
+ opacity: 0;
2164
+ scale: 0.85;
2165
+ }
2166
+
2167
+ &[data-ending-style] {
2168
+ transition-timing-function: ease-in;
2169
+ transition-duration: 100ms;
2170
+ }
2171
+
2172
+ @media (prefers-reduced-motion: reduce) {
2173
+ transition-duration: 50ms;
2174
+ transition-property: opacity;
2175
+
2176
+ &[data-starting-style],
2177
+ &[data-ending-style],
2178
+ .media-icon {
2179
+ scale: 1;
2074
2180
  }
2075
2181
 
2076
- @media (prefers-reduced-motion: reduce) {
2182
+ .media-icon {
2077
2183
  transition-duration: 50ms;
2078
2184
  transition-property: opacity;
2079
2185
  }
2080
2186
  }
2187
+ }
2081
2188
 
2082
- /* Directional bubbles (seek) */
2083
- &[data-direction] {
2084
- gap: calc(var(--spacing) * 1);
2189
+ .media-default-skin .media-seek-indicator {
2190
+ gap: calc(var(--spacing) * 1);
2085
2191
 
2086
- @container media-root (width > 24rem) {
2087
- padding: calc(var(--spacing) * 6);
2088
- }
2192
+ .media-seek-indicator__value {
2193
+ font-variant-numeric: tabular-nums;
2194
+ }
2195
+
2196
+ @container media-root (width > 24rem) {
2197
+ padding: calc(var(--spacing) * 6);
2089
2198
  }
2090
2199
 
2091
2200
  &[data-direction="backward"] {
@@ -2098,21 +2207,10 @@ export const Player = createPlayer({ features: videoFeatures });
2098
2207
  justify-self: right;
2099
2208
  }
2100
2209
 
2101
- /* Icons */
2102
- .media-icon {
2103
- display: none;
2210
+ .media-icon--seek {
2211
+ display: block;
2104
2212
  width: calc(var(--media-icon-size) * 1.5);
2105
2213
  height: calc(var(--media-icon-size) * 1.5);
2106
-
2107
- &.media-icon--play {
2108
- translate: 1px 0;
2109
- }
2110
- }
2111
-
2112
- &[data-direction] .media-icon--seek,
2113
- &[data-status="pause"] .media-icon--pause,
2114
- &[data-status="play"] .media-icon--play {
2115
- display: block;
2116
2214
  }
2117
2215
 
2118
2216
  &[data-direction="backward"] .media-icon--seek {
@@ -2120,7 +2218,7 @@ export const Player = createPlayer({ features: videoFeatures });
2120
2218
  }
2121
2219
 
2122
2220
  @media (prefers-reduced-motion: no-preference) {
2123
- &[data-direction] .media-icon--seek {
2221
+ .media-icon--seek {
2124
2222
  transition-timing-function: ease-in-out;
2125
2223
  transition-duration: 200ms;
2126
2224
  transition-property: translate, opacity;
@@ -2134,6 +2232,7 @@ export const Player = createPlayer({ features: videoFeatures });
2134
2232
  &[data-direction="forward"][data-starting-style] .media-icon--seek {
2135
2233
  translate: -60% 0;
2136
2234
  }
2235
+
2137
2236
  &[data-direction="backward"][data-starting-style] .media-icon--seek {
2138
2237
  translate: 60% 0;
2139
2238
  }
@@ -2143,32 +2242,24 @@ export const Player = createPlayer({ features: videoFeatures });
2143
2242
  /* ==========================================================================
2144
2243
  Icon State Visibility for Video Skins
2145
2244
 
2146
- Data-attribute-driven visibility rules for multi-state icon buttons.
2147
- Uses :is() with both element selectors (for HTML custom element wrappers)
2148
- and class selectors (for React rendered SVG elements).
2245
+ Data-attribute-driven visibility rules for multi-state icon buttons shared
2246
+ by the HTML and React skins.
2149
2247
  ========================================================================== */
2150
2248
 
2151
2249
  /* --- All icons hidden by default --- */
2152
2250
 
2153
- .media-button--play .media-icon--restart,
2154
- .media-button--play .media-icon--play,
2155
- .media-button--play .media-icon--pause,
2156
- .media-button--mute .media-icon--volume-off,
2157
- .media-button--mute .media-icon--volume-low,
2158
- .media-button--mute .media-icon--volume-high,
2159
- .media-button--fullscreen .media-icon--fullscreen-enter,
2160
- .media-button--fullscreen .media-icon--fullscreen-exit,
2161
- .media-button--pip .media-icon--pip-enter,
2162
- .media-button--pip .media-icon--pip-exit,
2163
- .media-button--cast .media-icon--cast-enter,
2164
- .media-button--cast .media-icon--cast-exit,
2165
- .media-button--airplay .media-icon--airplay-enter,
2166
- .media-button--airplay .media-icon--airplay-exit,
2167
- .media-button--captions .media-icon--captions-off,
2168
- .media-button--captions .media-icon--captions-on {
2169
- display: none;
2251
+ .media-button--play .media-icon,
2252
+ .media-button--mute .media-icon,
2253
+ .media-button--fullscreen .media-icon,
2254
+ .media-button--pip .media-icon,
2255
+ .media-button--cast .media-icon,
2256
+ .media-button--airplay .media-icon,
2257
+ .media-button--captions .media-icon {
2170
2258
  opacity: 0;
2171
2259
  }
2260
+ .media-button--play .media-icon {
2261
+ scale: 0;
2262
+ }
2172
2263
 
2173
2264
  /* --- Active icon per state --- */
2174
2265
 
@@ -2205,8 +2296,8 @@ export const Player = createPlayer({ features: videoFeatures });
2205
2296
  .media-button--captions:not([data-active]) .media-icon--captions-off,
2206
2297
  /* Captions: active → captions on */
2207
2298
  .media-button--captions[data-active] .media-icon--captions-on {
2208
- display: block;
2209
2299
  opacity: 1;
2300
+ scale: 1;
2210
2301
  }
2211
2302
 
2212
2303
  /* --- Pause keyframe animations on inactive icons --- */
@@ -2220,106 +2311,68 @@ export const Player = createPlayer({ features: videoFeatures });
2220
2311
  --media-icon--airplay__triangle-animation: none;
2221
2312
  }
2222
2313
 
2223
- /* -------------------------------------------------------------------------- */
2224
- /* Global @keyframes for all video skins (CSS & Tailwind) */
2225
- /* -------------------------------------------------------------------------- */
2226
-
2227
- @keyframes media-shake {
2228
- 0%,
2229
- 100% {
2230
- translate: 0 0;
2231
- }
2232
- 20% {
2233
- translate: -6px 0;
2314
+ @media (prefers-reduced-motion: reduce) {
2315
+ .media-button--airplay {
2316
+ --media-icon--airplay__fill-animation: none;
2317
+ --media-icon--airplay__triangle-animation: none;
2234
2318
  }
2235
- 40% {
2236
- translate: 4px 0;
2237
- }
2238
- 60% {
2239
- translate: -2px 0;
2240
- }
2241
- 80% {
2242
- translate: 1px 0;
2243
- }
2244
- }
2245
-
2246
- /* -------------------------------------------------------------------------- */
2247
- /* Global @properties for all video skins (CSS & Tailwind) */
2248
- /* -------------------------------------------------------------------------- */
2249
-
2250
- @property --media-progress-fill {
2251
- syntax: "<percentage>";
2252
- inherits: true;
2253
- initial-value: 0%;
2254
2319
  }
2255
2320
 
2256
2321
 
2257
- /* ==========================================================================
2258
- Root
2259
- ========================================================================== */
2322
+ /* Video-specific container styles */
2260
2323
 
2261
2324
  .media-default-skin--video {
2262
- --media-spring-timing-function: linear(
2263
- 0,
2264
- 0.034 1.5%,
2265
- 0.763 9.7%,
2266
- 1.066 13.9%,
2267
- 1.198 19.9%,
2268
- 1.184 21.8%,
2269
- 0.963 37.5%,
2270
- 0.997 50.9%,
2271
- 1
2272
- );
2273
- --media-border-color: oklch(0 0 0 / 0.1);
2274
- --media-surface-background-color: oklch(1 0 0 / 0.1);
2275
- --media-surface-inner-border-color: oklch(1 0 0 / 0.1);
2276
- --media-surface-outer-border-color: oklch(0 0 0 / 0.1);
2277
- --media-surface-shadow-color: oklch(0 0 0 / 0.15);
2278
- --media-surface-backdrop-filter: blur(16px) saturate(1.5);
2325
+ --default-accent-color: oklch(1 0 0);
2326
+ --border-color: light-dark(oklch(0 0 0 / 0.1), oklch(1 0 0 / 0.15));
2327
+ --focus-ring-color: light-dark(oklch(0 0 0), oklch(1 0 0));
2328
+ --media-video-border-radius: var(--container-border-radius);
2279
2329
 
2280
- /* We have to create an alias so that the shadow DOM can inherit the custom property value */
2281
- --media-video-border-radius: var(--media-border-radius, 1.75rem);
2330
+ --surface-background-color: oklch(1 0 0 / 0.1);
2331
+ --surface-inner-border-color: oklch(1 0 0 / 0.1);
2332
+ --surface-outer-border-color: oklch(0 0 0 / 0.1);
2333
+ --surface-shadow-color: oklch(0 0 0 / 0.15);
2334
+ --surface-backdrop-filter: blur(16px) saturate(1.5);
2282
2335
 
2283
- --media-controls-transition-duration: 100ms;
2284
- --media-controls-transition-timing-function: ease-out;
2336
+ --controls-transition-duration: 100ms;
2337
+ --controls-transition-timing-function: ease-out;
2285
2338
 
2286
- --media-error-dialog-transition-duration: 350ms;
2287
- --media-error-dialog-transition-delay: 100ms;
2288
- --media-error-dialog-transition-timing-function: var(--media-spring-timing-function);
2339
+ --error-dialog-transition-duration: 350ms;
2340
+ --error-dialog-transition-delay: 100ms;
2341
+ --error-dialog-transition-timing-function: ease-out;
2289
2342
 
2290
- --media-popup-transition-duration: 100ms;
2291
- --media-popup-transition-timing-function: ease-out;
2343
+ --popup-transition-duration: 100ms;
2344
+ --popup-transition-timing-function: ease-out;
2292
2345
 
2293
2346
  overflow: clip;
2294
2347
  background: oklch(0 0 0);
2295
2348
 
2296
2349
  @media (prefers-reduced-motion: reduce) {
2297
- --media-error-dialog-transition-duration: 50ms;
2298
- --media-error-dialog-transition-delay: 0ms;
2299
- --media-error-dialog-transition-timing-function: ease-out;
2300
- --media-popup-transition-duration: 0ms;
2301
- }
2350
+ --error-dialog-transition-duration: 50ms;
2351
+ --error-dialog-transition-delay: 0ms;
2352
+ --popup-transition-duration: 0ms;
2302
2353
 
2303
- @media (prefers-color-scheme: dark) {
2304
- --media-border-color: oklch(1 0 0 / 0.15);
2354
+ .media-error__dialog {
2355
+ scale: 1;
2356
+ transition-property: opacity;
2357
+ }
2305
2358
  }
2306
2359
 
2307
2360
  @media (prefers-reduced-transparency: reduce) or (prefers-contrast: more) {
2308
- --media-surface-background-color: oklch(0 0 0);
2309
- --media-surface-inner-border-color: oklch(1 0 0 / 0.25);
2310
- --media-surface-outer-border-color: transparent;
2361
+ --surface-background-color: oklch(0 0 0);
2362
+ --surface-inner-border-color: oklch(1 0 0 / 0.25);
2363
+ --surface-outer-border-color: transparent;
2311
2364
  }
2312
2365
 
2313
2366
  &:has(.media-controls--root:not([data-visible])) {
2314
2367
  /* Slight delay to hide controls on non-touch devices after interaction */
2315
2368
  @media (pointer: fine) {
2316
- --media-controls-transition-duration: 300ms;
2369
+ --controls-transition-duration: 300ms;
2317
2370
  }
2318
2371
  @media (pointer: coarse) {
2319
- --media-controls-transition-duration: 150ms;
2372
+ --controls-transition-duration: 150ms;
2320
2373
  }
2321
2374
  @media (prefers-reduced-motion: reduce) {
2322
- --media-controls-transition-duration: 50ms;
2375
+ --controls-transition-duration: 50ms;
2323
2376
  }
2324
2377
  }
2325
2378
 
@@ -2331,11 +2384,11 @@ export const Player = createPlayer({ features: videoFeatures });
2331
2384
  pointer-events: none;
2332
2385
  content: "";
2333
2386
  border-radius: inherit;
2334
- box-shadow: inset 0 0 0 1px var(--media-border-color);
2387
+ box-shadow: inset 0 0 0 1px var(--border-color);
2335
2388
  }
2336
2389
 
2337
2390
  &:fullscreen {
2338
- --media-border-radius: 0;
2391
+ --container-border-radius: 0;
2339
2392
 
2340
2393
  &::after {
2341
2394
  display: none;
@@ -2351,11 +2404,13 @@ export const Player = createPlayer({ features: videoFeatures });
2351
2404
  --scale: 1.75;
2352
2405
  }
2353
2406
  }
2407
+
2408
+ * {
2409
+ --focus-ring-color: oklch(1 0 0);
2410
+ }
2354
2411
  }
2355
2412
 
2356
- /* ==========================================================================
2357
- Error Dialog
2358
- ========================================================================== */
2413
+ /* Error Dialog */
2359
2414
 
2360
2415
  .media-default-skin--video .media-error {
2361
2416
  position: absolute;
@@ -2376,16 +2431,16 @@ export const Player = createPlayer({ features: videoFeatures });
2376
2431
  color: oklch(1 0 0);
2377
2432
  text-shadow: 0 1px 0 oklch(0 0 0 / 0.25);
2378
2433
  border-radius: calc(var(--spacing) * 7);
2379
- transition-delay: var(--media-error-dialog-transition-delay);
2380
- transition-timing-function: var(--media-error-dialog-transition-timing-function);
2381
- transition-duration: var(--media-error-dialog-transition-duration);
2434
+ transition-delay: var(--error-dialog-transition-delay);
2435
+ transition-timing-function: var(--error-dialog-transition-timing-function);
2436
+ transition-duration: var(--error-dialog-transition-duration);
2382
2437
  transition-property: opacity, scale;
2383
2438
  }
2384
2439
 
2385
2440
  .media-default-skin--video .media-error[data-starting-style] .media-error__dialog,
2386
2441
  .media-default-skin--video .media-error[data-ending-style] .media-error__dialog {
2387
2442
  opacity: 0;
2388
- scale: 0.5;
2443
+ scale: 0.95;
2389
2444
  }
2390
2445
  .media-default-skin--video .media-error[data-ending-style] .media-error__dialog {
2391
2446
  transition-delay: 0ms;
@@ -2403,9 +2458,7 @@ export const Player = createPlayer({ features: videoFeatures });
2403
2458
  font-size: var(--font-size-medium);
2404
2459
  }
2405
2460
 
2406
- /* ==========================================================================
2407
- Controls (hide/show behavior)
2408
- ========================================================================== */
2461
+ /* Controls (hide/show behavior) */
2409
2462
 
2410
2463
  .media-default-skin--video .media-controls--root {
2411
2464
  --inset-factor: 2;
@@ -2414,24 +2467,24 @@ export const Player = createPlayer({ features: videoFeatures });
2414
2467
 
2415
2468
  z-index: 10;
2416
2469
  display: contents;
2417
- color: var(--media-color-primary, oklch(1 0 0));
2418
- transition-timing-function: var(--media-controls-transition-timing-function);
2470
+ color: oklch(1 0 0);
2471
+ transition-timing-function: var(--controls-transition-timing-function);
2419
2472
  /* Speed up the entry transition */
2420
- transition-duration: calc(var(--media-controls-transition-duration) / 2);
2473
+ transition-duration: calc(var(--controls-transition-duration) / 2);
2421
2474
 
2422
- & .media-controls--primary,
2423
- & .media-controls--secondary {
2475
+ .media-controls--primary,
2476
+ .media-controls--secondary {
2424
2477
  position: absolute;
2425
2478
  z-index: 10;
2426
2479
  }
2427
2480
 
2428
- & .media-controls--primary {
2481
+ .media-controls--primary {
2429
2482
  inset-inline: var(--inset);
2430
2483
  bottom: var(--inset);
2431
2484
  transform-origin: bottom;
2432
2485
  }
2433
2486
 
2434
- & .media-controls--secondary {
2487
+ .media-controls--secondary {
2435
2488
  top: var(--inset);
2436
2489
  right: var(--inset);
2437
2490
  container-type: normal;
@@ -2439,8 +2492,8 @@ export const Player = createPlayer({ features: videoFeatures });
2439
2492
  }
2440
2493
 
2441
2494
  @container media-root (width < 32rem) {
2442
- & .media-controls--primary,
2443
- & .media-controls--secondary {
2495
+ .media-controls--primary,
2496
+ .media-controls--secondary {
2444
2497
  transition-timing-function: inherit;
2445
2498
  transition-duration: inherit;
2446
2499
 
@@ -2460,12 +2513,12 @@ export const Player = createPlayer({ features: videoFeatures });
2460
2513
  }
2461
2514
 
2462
2515
  &:not([data-visible]) {
2463
- & .media-controls--primary,
2464
- & .media-controls--secondary {
2516
+ .media-controls--primary,
2517
+ .media-controls--secondary {
2465
2518
  pointer-events: none;
2466
2519
  opacity: 0;
2467
2520
  scale: 0.95;
2468
- transition-duration: var(--media-controls-transition-duration);
2521
+ transition-duration: var(--controls-transition-duration);
2469
2522
 
2470
2523
  @media (pointer: fine) and (prefers-reduced-motion: no-preference) {
2471
2524
  filter: blur(8px);
@@ -2476,13 +2529,13 @@ export const Player = createPlayer({ features: videoFeatures });
2476
2529
  }
2477
2530
  }
2478
2531
 
2479
- & .media-controls--primary {
2532
+ .media-controls--primary {
2480
2533
  @media (prefers-reduced-motion: no-preference) {
2481
2534
  translate: 0 4px;
2482
2535
  }
2483
2536
  }
2484
2537
 
2485
- & .media-controls--secondary {
2538
+ .media-controls--secondary {
2486
2539
  @media (prefers-reduced-motion: no-preference) {
2487
2540
  translate: 0 -4px;
2488
2541
  }
@@ -2497,8 +2550,8 @@ export const Player = createPlayer({ features: videoFeatures });
2497
2550
  display: flex;
2498
2551
  transform-origin: bottom;
2499
2552
 
2500
- & .media-controls--primary,
2501
- & .media-controls--secondary {
2553
+ .media-controls--primary,
2554
+ .media-controls--secondary {
2502
2555
  display: contents;
2503
2556
 
2504
2557
  &::after {
@@ -2510,7 +2563,7 @@ export const Player = createPlayer({ features: videoFeatures });
2510
2563
  pointer-events: none;
2511
2564
  opacity: 0;
2512
2565
  scale: 0.95;
2513
- transition-duration: var(--media-controls-transition-duration);
2566
+ transition-duration: var(--controls-transition-duration);
2514
2567
 
2515
2568
  @media (pointer: fine) and (prefers-reduced-motion: no-preference) {
2516
2569
  filter: blur(8px);
@@ -2526,7 +2579,7 @@ export const Player = createPlayer({ features: videoFeatures });
2526
2579
  }
2527
2580
  }
2528
2581
 
2529
- & .media-time-controls {
2582
+ .media-time-controls {
2530
2583
  flex: 1;
2531
2584
  padding-inline: calc(var(--spacing) * 3);
2532
2585
  }
@@ -2555,57 +2608,10 @@ export const Player = createPlayer({ features: videoFeatures });
2555
2608
  cursor: none;
2556
2609
  }
2557
2610
 
2558
- /* ==========================================================================
2559
- Sliders
2560
- ========================================================================== */
2611
+ /* Sliders */
2561
2612
 
2562
2613
  .media-default-skin--video .media-slider__track {
2563
2614
  background-color: oklch(1 0 0 / 0.2);
2564
- box-shadow: 0 0 0 1px oklch(0 0 0 / 0.05);
2565
- }
2566
-
2567
- .media-default-skin--video .media-slider__thumbnail {
2568
- --max-width: calc(var(--spacing) * 44);
2569
- --max-height: calc(var(--spacing) * 32);
2570
- --padding: calc(var(--spacing) * -4.5);
2571
- /**
2572
- Inset is the difference between the container width and the slider (100%) width.
2573
- Divided by 2 as we render the time on both sides.
2574
- */
2575
- --inset: calc((100cqi - 100%) / 2);
2576
-
2577
- position: absolute;
2578
- bottom: calc(100% + calc(var(--spacing) * 4.8));
2579
- left: clamp(
2580
- calc(var(--max-width) / 2 + var(--padding) - var(--inset)),
2581
- var(--media-slider-pointer),
2582
- calc(100% - var(--max-width) / 2 - var(--padding) + var(--inset))
2583
- );
2584
- pointer-events: none;
2585
- opacity: 0;
2586
- filter: blur(8px);
2587
- transform-origin: bottom;
2588
- scale: 0.8;
2589
- translate: -50%;
2590
- transition-timing-function: ease-out;
2591
- transition-duration: 150ms;
2592
- transition-property: scale, opacity, filter;
2593
-
2594
- & .media-thumbnail__image {
2595
- max-width: var(--max-width);
2596
- max-height: var(--max-height);
2597
- }
2598
- }
2599
- .media-default-skin--video .media-slider[data-pointing] .media-slider__thumbnail:has([role="img"]:not([data-hidden])) {
2600
- opacity: 1;
2601
- filter: blur(0);
2602
- scale: 1;
2603
- }
2604
- .media-default-skin--video
2605
- .media-slider__thumbnail:has([role="img"]:not([data-hidden]))
2606
- + .media-slider__preview
2607
- .media-slider__value {
2608
- display: none;
2609
2615
  }
2610
2616
 
2611
2617
  ```
@@ -2614,7 +2620,7 @@ export const Player = createPlayer({ features: videoFeatures });
2614
2620
 
2615
2621
  Each skin is built with specific [features](./features.md) in mind. For example, a video skin renders fullscreen and picture-in-picture controls. An audio skin doesn’t.
2616
2622
 
2617
- You’ll find both a skin and the feature bundle it expects exported from the same path. We call these paths **presets**.
2623
+ You’ll find a preconfigured player, its typed hook, a skin, and the matching feature bundle exported from the same path. We call these paths **presets**.
2618
2624
 
2619
2625
  Import
2620
2626
 
@@ -2634,7 +2640,7 @@ Feature bundle
2634
2640
 
2635
2641
  Features
2636
2642
 
2637
- [playback](../reference/feature-playback.md), [playbackRate](../reference/feature-playback-rate.md), [quality](../reference/feature-quality.md), [audioTrack](../reference/feature-audio-track.md), [volume](../reference/feature-volume.md), [time](../reference/feature-time.md), [source](../reference/feature-source.md), [buffer](../reference/feature-buffer.md), [fullscreen](../reference/feature-fullscreen.md), [pip](../reference/feature-pip.md), [remotePlayback](../reference/feature-remote-playback.md), [controls](../reference/feature-controls.md), [textTrack](../reference/feature-text-tracks.md), [error](../reference/feature-error.md)
2643
+ [playback](../reference/feature-playback.md), [playbackRate](../reference/feature-playback-rate.md), [quality](../reference/feature-quality.md), [audioTrack](../reference/feature-audio-track.md), [volume](../reference/feature-volume.md), [time](../reference/feature-time.md), [source](../reference/feature-source.md), [buffer](../reference/feature-buffer.md), [fullscreen](../reference/feature-fullscreen.md), [pip](../reference/feature-pip.md), [remotePlayback](../reference/feature-remote-playback.md), [controls](../reference/feature-controls.md), [textTrack](../reference/feature-text-tracks.md), [error](../reference/feature-error.md), metadata
2638
2644
 
2639
2645
  Skins
2640
2646
 
@@ -2662,7 +2668,7 @@ Feature bundle
2662
2668
 
2663
2669
  Features
2664
2670
 
2665
- [playback](../reference/feature-playback.md), [playbackRate](../reference/feature-playback-rate.md), [volume](../reference/feature-volume.md), [time](../reference/feature-time.md), [source](../reference/feature-source.md), [buffer](../reference/feature-buffer.md), [error](../reference/feature-error.md)
2671
+ [playback](../reference/feature-playback.md), [playbackRate](../reference/feature-playback-rate.md), [volume](../reference/feature-volume.md), [time](../reference/feature-time.md), [source](../reference/feature-source.md), [buffer](../reference/feature-buffer.md), [error](../reference/feature-error.md), metadata
2666
2672
 
2667
2673
  Skins
2668
2674
 
@@ -2714,7 +2720,7 @@ Feature bundle
2714
2720
 
2715
2721
  Features
2716
2722
 
2717
- [playback](../reference/feature-playback.md), [volume](../reference/feature-volume.md), [time](../reference/feature-time.md), [source](../reference/feature-source.md), [buffer](../reference/feature-buffer.md), [error](../reference/feature-error.md), [live](../reference/feature-live.md)
2723
+ [playback](../reference/feature-playback.md), [volume](../reference/feature-volume.md), [time](../reference/feature-time.md), [source](../reference/feature-source.md), [buffer](../reference/feature-buffer.md), [error](../reference/feature-error.md), [live](../reference/feature-live.md), metadata
2718
2724
 
2719
2725
  Skins
2720
2726
 
@@ -2742,7 +2748,7 @@ Feature bundle
2742
2748
 
2743
2749
  Features
2744
2750
 
2745
- [playback](../reference/feature-playback.md), [volume](../reference/feature-volume.md), [time](../reference/feature-time.md), [source](../reference/feature-source.md), [buffer](../reference/feature-buffer.md), [fullscreen](../reference/feature-fullscreen.md), [pip](../reference/feature-pip.md), [remotePlayback](../reference/feature-remote-playback.md), [controls](../reference/feature-controls.md), [textTrack](../reference/feature-text-tracks.md), [error](../reference/feature-error.md), [live](../reference/feature-live.md)
2751
+ [playback](../reference/feature-playback.md), [volume](../reference/feature-volume.md), [time](../reference/feature-time.md), [source](../reference/feature-source.md), [buffer](../reference/feature-buffer.md), [fullscreen](../reference/feature-fullscreen.md), [pip](../reference/feature-pip.md), [remotePlayback](../reference/feature-remote-playback.md), [controls](../reference/feature-controls.md), [textTrack](../reference/feature-text-tracks.md), [error](../reference/feature-error.md), [live](../reference/feature-live.md), metadata
2746
2752
 
2747
2753
  Skins
2748
2754