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

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 (1027) 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 -3
  12. package/dist/default/i18n/context.js.map +1 -1
  13. package/dist/default/i18n/locales/id/register.js +8 -0
  14. package/dist/default/i18n/locales/id/register.js.map +1 -0
  15. package/dist/default/i18n/locales/id.js +2 -0
  16. package/dist/default/i18n/locales/lt/register.js +8 -0
  17. package/dist/default/i18n/locales/lt/register.js.map +1 -0
  18. package/dist/default/i18n/locales/lt.js +2 -0
  19. package/dist/default/icons/dist/react/default/airplay-enter.js.map +1 -1
  20. package/dist/default/icons/dist/react/default/airplay-exit.js +1 -2
  21. package/dist/default/icons/dist/react/default/airplay-exit.js.map +1 -1
  22. package/dist/default/icons/dist/react/default/captions-off.js.map +1 -1
  23. package/dist/default/icons/dist/react/default/captions-on.js.map +1 -1
  24. package/dist/default/icons/dist/react/default/cast-enter.js +2 -45
  25. package/dist/default/icons/dist/react/default/cast-enter.js.map +1 -1
  26. package/dist/default/icons/dist/react/default/cast-exit.js +4 -61
  27. package/dist/default/icons/dist/react/default/cast-exit.js.map +1 -1
  28. package/dist/default/icons/dist/react/default/check.js.map +1 -1
  29. package/dist/default/icons/dist/react/default/chevron.js.map +1 -1
  30. package/dist/default/icons/dist/react/default/fullscreen-enter.js.map +1 -1
  31. package/dist/default/icons/dist/react/default/fullscreen-exit.js.map +1 -1
  32. package/dist/default/icons/dist/react/default/gear.js.map +1 -1
  33. package/dist/default/icons/dist/react/default/pause.js.map +1 -1
  34. package/dist/default/icons/dist/react/default/pip-enter.js.map +1 -1
  35. package/dist/default/icons/dist/react/default/pip-exit.js.map +1 -1
  36. package/dist/default/icons/dist/react/default/play.js.map +1 -1
  37. package/dist/default/icons/dist/react/default/quality.js +1 -1
  38. package/dist/default/icons/dist/react/default/quality.js.map +1 -1
  39. package/dist/default/icons/dist/react/default/restart.js.map +1 -1
  40. package/dist/default/icons/dist/react/default/seek.js.map +1 -1
  41. package/dist/default/icons/dist/react/default/speech.js.map +1 -1
  42. package/dist/default/icons/dist/react/default/speed.js.map +1 -1
  43. package/dist/default/icons/dist/react/default/spinner.js +1 -1
  44. package/dist/default/icons/dist/react/default/spinner.js.map +1 -1
  45. package/dist/default/icons/dist/react/default/switches.js.map +1 -1
  46. package/dist/default/icons/dist/react/default/volume-high.js.map +1 -1
  47. package/dist/default/icons/dist/react/default/volume-low.js.map +1 -1
  48. package/dist/default/icons/dist/react/default/volume-off.js.map +1 -1
  49. package/dist/default/icons/dist/react/minimal/airplay-enter.js.map +1 -1
  50. package/dist/default/icons/dist/react/minimal/airplay-exit.js +1 -2
  51. package/dist/default/icons/dist/react/minimal/airplay-exit.js.map +1 -1
  52. package/dist/default/icons/dist/react/minimal/captions-off.js.map +1 -1
  53. package/dist/default/icons/dist/react/minimal/captions-on.js.map +1 -1
  54. package/dist/default/icons/dist/react/minimal/cast-enter.js +2 -45
  55. package/dist/default/icons/dist/react/minimal/cast-enter.js.map +1 -1
  56. package/dist/default/icons/dist/react/minimal/cast-exit.js +4 -61
  57. package/dist/default/icons/dist/react/minimal/cast-exit.js.map +1 -1
  58. package/dist/default/icons/dist/react/minimal/check.js.map +1 -1
  59. package/dist/default/icons/dist/react/minimal/chevron.js.map +1 -1
  60. package/dist/default/icons/dist/react/minimal/fullscreen-enter.js.map +1 -1
  61. package/dist/default/icons/dist/react/minimal/fullscreen-exit.js.map +1 -1
  62. package/dist/default/icons/dist/react/minimal/gear.js.map +1 -1
  63. package/dist/default/icons/dist/react/minimal/pause.js.map +1 -1
  64. package/dist/default/icons/dist/react/minimal/pip-enter.js.map +1 -1
  65. package/dist/default/icons/dist/react/minimal/pip-exit.js.map +1 -1
  66. package/dist/default/icons/dist/react/minimal/play.js.map +1 -1
  67. package/dist/default/icons/dist/react/minimal/quality.js +1 -1
  68. package/dist/default/icons/dist/react/minimal/quality.js.map +1 -1
  69. package/dist/default/icons/dist/react/minimal/restart.js.map +1 -1
  70. package/dist/default/icons/dist/react/minimal/seek.js.map +1 -1
  71. package/dist/default/icons/dist/react/minimal/speech.js +7 -40
  72. package/dist/default/icons/dist/react/minimal/speech.js.map +1 -1
  73. package/dist/default/icons/dist/react/minimal/speed.js.map +1 -1
  74. package/dist/default/icons/dist/react/minimal/spinner.js +1 -1
  75. package/dist/default/icons/dist/react/minimal/spinner.js.map +1 -1
  76. package/dist/default/icons/dist/react/minimal/switches.js.map +1 -1
  77. package/dist/default/icons/dist/react/minimal/volume-high.js.map +1 -1
  78. package/dist/default/icons/dist/react/minimal/volume-low.js.map +1 -1
  79. package/dist/default/icons/dist/react/minimal/volume-off.js.map +1 -1
  80. package/dist/default/index.js +7 -3
  81. package/dist/default/media/cloudflare-video/index.js +2 -0
  82. package/dist/default/media/cloudflare-video/media.js +38 -0
  83. package/dist/default/media/cloudflare-video/media.js.map +1 -0
  84. package/dist/default/media/google-cast/google-cast.js +3 -3
  85. package/dist/default/media/google-cast/google-cast.js.map +1 -1
  86. package/dist/default/media/hls-audio/index.js +2 -0
  87. package/dist/default/media/hls-audio/media.js +21 -0
  88. package/dist/default/media/hls-audio/media.js.map +1 -0
  89. package/dist/default/media/hls-background-video/index.js +2 -0
  90. package/dist/default/media/hls-background-video/media.js +45 -0
  91. package/dist/default/media/hls-background-video/media.js.map +1 -0
  92. package/dist/default/media/hls-video/index.js +2 -0
  93. package/dist/{dev/media/simple-hls-video → default/media/hls-video}/media.js +6 -7
  94. package/dist/default/media/hls-video/media.js.map +1 -0
  95. package/dist/default/media/mux-audio/{media.js → hls-js.js} +2 -2
  96. package/dist/default/media/mux-audio/hls-js.js.map +1 -0
  97. package/dist/default/media/mux-audio/index.js +1 -1
  98. package/dist/default/media/mux-audio/spf.js +26 -0
  99. package/dist/default/media/mux-audio/spf.js.map +1 -0
  100. package/dist/default/media/mux-background-video/index.js +2 -0
  101. package/dist/default/media/mux-data/mux-data.js +7 -3
  102. package/dist/default/media/mux-data/mux-data.js.map +1 -1
  103. package/dist/default/media/mux-video/hls-js.js +27 -0
  104. package/dist/default/media/mux-video/hls-js.js.map +1 -0
  105. package/dist/default/media/mux-video/index.js +1 -1
  106. package/dist/default/media/mux-video/spf.js +27 -0
  107. package/dist/default/media/mux-video/spf.js.map +1 -0
  108. package/dist/default/media/mux-video/storyboard.js +43 -0
  109. package/dist/default/media/mux-video/storyboard.js.map +1 -0
  110. package/dist/default/media/spotify-audio/index.js +2 -0
  111. package/dist/default/media/spotify-audio/media.js +40 -0
  112. package/dist/default/media/spotify-audio/media.js.map +1 -0
  113. package/dist/default/media/tiktok-video/index.js +2 -0
  114. package/dist/default/media/tiktok-video/media.js +38 -0
  115. package/dist/default/media/tiktok-video/media.js.map +1 -0
  116. package/dist/default/media/twitch-video/index.js +2 -0
  117. package/dist/default/media/twitch-video/media.js +38 -0
  118. package/dist/default/media/twitch-video/media.js.map +1 -0
  119. package/dist/default/media/vimeo-video/media.js +4 -4
  120. package/dist/default/media/vimeo-video/media.js.map +1 -1
  121. package/dist/default/media/youtube-video/index.js +2 -0
  122. package/dist/default/media/youtube-video/media.js +37 -0
  123. package/dist/default/media/youtube-video/media.js.map +1 -0
  124. package/dist/default/player/container.js +8 -3
  125. package/dist/default/player/container.js.map +1 -1
  126. package/dist/default/player/context.js +6 -10
  127. package/dist/default/player/context.js.map +1 -1
  128. package/dist/default/player/create-player.js +44 -13
  129. package/dist/default/player/create-player.js.map +1 -1
  130. package/dist/default/player/popup-group-context.js +18 -0
  131. package/dist/default/player/popup-group-context.js.map +1 -0
  132. package/dist/default/presets/audio/index.js +8 -1
  133. package/dist/default/presets/audio/index.js.map +1 -0
  134. package/dist/default/presets/audio/minimal-skin.css +426 -295
  135. package/dist/default/presets/audio/minimal-skin.js +12 -19
  136. package/dist/default/presets/audio/minimal-skin.js.map +1 -1
  137. package/dist/default/presets/audio/minimal-skin.tailwind.js +81 -20
  138. package/dist/default/presets/audio/minimal-skin.tailwind.js.map +1 -1
  139. package/dist/default/presets/audio/player.js +13 -0
  140. package/dist/default/presets/audio/player.js.map +1 -0
  141. package/dist/default/presets/audio/skin.css +458 -341
  142. package/dist/default/presets/audio/skin.js +13 -19
  143. package/dist/default/presets/audio/skin.js.map +1 -1
  144. package/dist/default/presets/audio/skin.tailwind.js +14 -19
  145. package/dist/default/presets/audio/skin.tailwind.js.map +1 -1
  146. package/dist/default/presets/background/index.js +8 -1
  147. package/dist/default/presets/background/index.js.map +1 -0
  148. package/dist/default/presets/background/player.js +13 -0
  149. package/dist/default/presets/background/player.js.map +1 -0
  150. package/dist/default/presets/background/skin.css +3 -3
  151. package/dist/default/presets/live-audio/index.js +8 -1
  152. package/dist/default/presets/live-audio/index.js.map +1 -0
  153. package/dist/default/presets/live-audio/minimal-skin.css +426 -295
  154. package/dist/default/presets/live-audio/minimal-skin.js +2 -2
  155. package/dist/default/presets/live-audio/minimal-skin.js.map +1 -1
  156. package/dist/default/presets/live-audio/minimal-skin.tailwind.js +4 -4
  157. package/dist/default/presets/live-audio/minimal-skin.tailwind.js.map +1 -1
  158. package/dist/default/presets/live-audio/player.js +13 -0
  159. package/dist/default/presets/live-audio/player.js.map +1 -0
  160. package/dist/default/presets/live-audio/skin.css +458 -341
  161. package/dist/default/presets/live-audio/skin.js +2 -2
  162. package/dist/default/presets/live-audio/skin.js.map +1 -1
  163. package/dist/default/presets/live-audio/skin.tailwind.js +4 -4
  164. package/dist/default/presets/live-audio/skin.tailwind.js.map +1 -1
  165. package/dist/default/presets/live-video/index.js +8 -1
  166. package/dist/default/presets/live-video/index.js.map +1 -0
  167. package/dist/default/presets/live-video/minimal-skin.css +655 -588
  168. package/dist/default/presets/live-video/minimal-skin.js +12 -12
  169. package/dist/default/presets/live-video/minimal-skin.js.map +1 -1
  170. package/dist/default/presets/live-video/minimal-skin.tailwind.js +27 -26
  171. package/dist/default/presets/live-video/minimal-skin.tailwind.js.map +1 -1
  172. package/dist/default/presets/live-video/player.js +13 -0
  173. package/dist/default/presets/live-video/player.js.map +1 -0
  174. package/dist/default/presets/live-video/skin.css +656 -618
  175. package/dist/default/presets/live-video/skin.js +11 -11
  176. package/dist/default/presets/live-video/skin.js.map +1 -1
  177. package/dist/default/presets/live-video/skin.tailwind.js +24 -112
  178. package/dist/default/presets/live-video/skin.tailwind.js.map +1 -1
  179. package/dist/default/presets/video/index.js +8 -1
  180. package/dist/default/presets/video/index.js.map +1 -0
  181. package/dist/default/presets/video/minimal-skin.css +655 -588
  182. package/dist/default/presets/video/minimal-skin.js +212 -211
  183. package/dist/default/presets/video/minimal-skin.js.map +1 -1
  184. package/dist/default/presets/video/minimal-skin.tailwind.js +226 -233
  185. package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
  186. package/dist/default/presets/video/player.js +13 -0
  187. package/dist/default/presets/video/player.js.map +1 -0
  188. package/dist/default/presets/video/skin.css +656 -618
  189. package/dist/default/presets/video/skin.js +212 -207
  190. package/dist/default/presets/video/skin.js.map +1 -1
  191. package/dist/default/presets/video/skin.tailwind.js +224 -227
  192. package/dist/default/presets/video/skin.tailwind.js.map +1 -1
  193. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js +6 -6
  194. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  195. package/dist/default/skins/dist/default/default/tailwind/components/buffering.js +1 -1
  196. package/dist/default/skins/dist/default/default/tailwind/components/buffering.js.map +1 -1
  197. package/dist/default/skins/dist/default/default/tailwind/components/button.js +4 -4
  198. package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  199. package/dist/default/skins/dist/default/default/tailwind/components/container.js +8 -0
  200. package/dist/default/skins/dist/default/default/tailwind/components/container.js.map +1 -0
  201. package/dist/default/skins/dist/default/default/tailwind/components/controls.js +1 -1
  202. package/dist/default/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  203. package/dist/default/skins/dist/default/default/tailwind/components/error.js +1 -1
  204. package/dist/default/skins/dist/default/default/tailwind/components/error.js.map +1 -1
  205. package/dist/default/skins/dist/default/default/tailwind/components/icon.js +1 -1
  206. package/dist/default/skins/dist/default/default/tailwind/components/icon.js.map +1 -1
  207. package/dist/default/skins/dist/default/default/tailwind/components/input-indicator-overlay.js +7 -0
  208. package/dist/default/skins/dist/default/default/tailwind/components/input-indicator-overlay.js.map +1 -0
  209. package/dist/default/skins/dist/default/default/tailwind/components/input-indicator.js +9 -0
  210. package/dist/default/skins/dist/default/default/tailwind/components/input-indicator.js.map +1 -0
  211. package/dist/default/skins/dist/default/default/tailwind/components/menu.js +8 -12
  212. package/dist/default/skins/dist/default/default/tailwind/components/menu.js.map +1 -1
  213. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js +1 -1
  214. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  215. package/dist/default/skins/dist/default/default/tailwind/components/popup.js +1 -1
  216. package/dist/default/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  217. package/dist/default/skins/dist/default/default/tailwind/components/poster.js +1 -1
  218. package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
  219. package/dist/default/skins/dist/default/default/tailwind/components/seek-indicator.js +12 -0
  220. package/dist/default/skins/dist/default/default/tailwind/components/seek-indicator.js.map +1 -0
  221. package/dist/default/skins/dist/default/default/tailwind/components/slider.js +17 -9
  222. package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  223. package/dist/default/skins/dist/default/default/tailwind/components/status-indicator.js +29 -0
  224. package/dist/default/skins/dist/default/default/tailwind/components/status-indicator.js.map +1 -0
  225. package/dist/default/skins/dist/default/default/tailwind/components/surface.js +1 -1
  226. package/dist/default/skins/dist/default/default/tailwind/components/surface.js.map +1 -1
  227. package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js +3 -4
  228. package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -1
  229. package/dist/default/skins/dist/default/default/tailwind/components/time.js +2 -2
  230. package/dist/default/skins/dist/default/default/tailwind/components/time.js.map +1 -1
  231. package/dist/default/skins/dist/default/default/tailwind/components/volume-indicator.js +18 -0
  232. package/dist/default/skins/dist/default/default/tailwind/components/volume-indicator.js.map +1 -0
  233. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +22 -19
  234. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  235. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +6 -6
  236. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  237. package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js +1 -1
  238. package/dist/default/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -1
  239. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js +4 -4
  240. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  241. package/dist/default/skins/dist/default/minimal/tailwind/components/container.js +8 -0
  242. package/dist/default/skins/dist/default/minimal/tailwind/components/container.js.map +1 -0
  243. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  244. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  245. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js +1 -1
  246. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js.map +1 -1
  247. package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js +1 -1
  248. package/dist/default/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -1
  249. package/dist/default/skins/dist/default/minimal/tailwind/components/input-indicator-overlay.js +7 -0
  250. package/dist/default/skins/dist/default/minimal/tailwind/components/input-indicator-overlay.js.map +1 -0
  251. package/dist/default/skins/dist/default/minimal/tailwind/components/input-indicator.js +10 -0
  252. package/dist/default/skins/dist/default/minimal/tailwind/components/input-indicator.js.map +1 -0
  253. package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js +9 -13
  254. package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -1
  255. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
  256. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  257. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js +2 -2
  258. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  259. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +1 -1
  260. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
  261. package/dist/default/skins/dist/default/minimal/tailwind/components/seek-indicator.js +12 -0
  262. package/dist/default/skins/dist/default/minimal/tailwind/components/seek-indicator.js.map +1 -0
  263. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +17 -9
  264. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  265. package/dist/default/skins/dist/default/minimal/tailwind/components/status-indicator.js +29 -0
  266. package/dist/default/skins/dist/default/minimal/tailwind/components/status-indicator.js.map +1 -0
  267. package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js +3 -5
  268. package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -1
  269. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js +2 -2
  270. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  271. package/dist/default/skins/dist/default/minimal/tailwind/components/volume-indicator.js +19 -0
  272. package/dist/default/skins/dist/default/minimal/tailwind/components/volume-indicator.js.map +1 -0
  273. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +14 -15
  274. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  275. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +22 -20
  276. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  277. package/dist/default/ui/audio-track/use-audio-track-options.js +8 -23
  278. package/dist/default/ui/audio-track/use-audio-track-options.js.map +1 -1
  279. package/dist/default/ui/audio-track-radio-group/audio-track-radio-group.js +65 -0
  280. package/dist/default/ui/audio-track-radio-group/audio-track-radio-group.js.map +1 -0
  281. package/dist/default/ui/audio-track-radio-group/index.js +2 -0
  282. package/dist/default/ui/captions-radio-group/captions-radio-group.js +65 -0
  283. package/dist/default/ui/captions-radio-group/captions-radio-group.js.map +1 -0
  284. package/dist/default/ui/captions-radio-group/index.js +2 -1
  285. package/dist/default/ui/captions-radio-group/use-captions-options.js +12 -29
  286. package/dist/default/ui/captions-radio-group/use-captions-options.js.map +1 -1
  287. package/dist/default/ui/hooks/create-radio-options-hook.js +43 -0
  288. package/dist/default/ui/hooks/create-radio-options-hook.js.map +1 -0
  289. package/dist/default/ui/hooks/use-slider.js +49 -13
  290. package/dist/default/ui/hooks/use-slider.js.map +1 -1
  291. package/dist/{dev/ui/input-indicators → default/ui/input-indicator}/use-indicator-visibility.js +1 -1
  292. package/dist/default/ui/input-indicator/use-indicator-visibility.js.map +1 -0
  293. package/dist/default/ui/{input-indicators → input-indicator}/use-input-action-subscription.js +1 -1
  294. package/dist/default/ui/input-indicator/use-input-action-subscription.js.map +1 -0
  295. package/dist/default/ui/{input-indicators → input-indicator}/use-input-indicator-root.js +1 -1
  296. package/dist/default/ui/input-indicator/use-input-indicator-root.js.map +1 -0
  297. package/dist/default/ui/{input-indicators → input-indicator}/use-rendered-indicator-state.js +1 -1
  298. package/dist/default/ui/input-indicator/use-rendered-indicator-state.js.map +1 -0
  299. package/dist/default/ui/menu/context.js +1 -11
  300. package/dist/default/ui/menu/context.js.map +1 -1
  301. package/dist/default/ui/menu/index.parts.js +3 -9
  302. package/dist/default/ui/menu/index.parts.js.map +1 -1
  303. package/dist/default/ui/menu/menu-checkbox-item.js +4 -1
  304. package/dist/default/ui/menu/menu-checkbox-item.js.map +1 -1
  305. package/dist/default/ui/menu/menu-content.js +78 -236
  306. package/dist/default/ui/menu/menu-content.js.map +1 -1
  307. package/dist/default/ui/menu/menu-item.js +11 -18
  308. package/dist/default/ui/menu/menu-item.js.map +1 -1
  309. package/dist/default/ui/menu/menu-keyboard.js +31 -0
  310. package/dist/default/ui/menu/menu-keyboard.js.map +1 -0
  311. package/dist/default/ui/menu/menu-radio-item.js +8 -6
  312. package/dist/default/ui/menu/menu-radio-item.js.map +1 -1
  313. package/dist/default/ui/menu/menu-root.js +46 -61
  314. package/dist/default/ui/menu/menu-root.js.map +1 -1
  315. package/dist/default/ui/menu/menu-trigger.js +50 -87
  316. package/dist/default/ui/menu/menu-trigger.js.map +1 -1
  317. package/dist/default/ui/mute-button/mute-button.js +2 -1
  318. package/dist/default/ui/mute-button/mute-button.js.map +1 -1
  319. package/dist/default/ui/playback-rate/use-playback-rate-options.js +14 -22
  320. package/dist/default/ui/playback-rate/use-playback-rate-options.js.map +1 -1
  321. package/dist/default/ui/playback-rate-radio-group/index.js +2 -0
  322. package/dist/default/ui/playback-rate-radio-group/playback-rate-radio-group.js +65 -0
  323. package/dist/default/ui/playback-rate-radio-group/playback-rate-radio-group.js.map +1 -0
  324. package/dist/default/ui/popover/popover-popup.js +10 -80
  325. package/dist/default/ui/popover/popover-popup.js.map +1 -1
  326. package/dist/default/ui/popover/popover-root.js +2 -1
  327. package/dist/default/ui/popover/popover-root.js.map +1 -1
  328. package/dist/default/ui/popover/popover-trigger.js +4 -5
  329. package/dist/default/ui/popover/popover-trigger.js.map +1 -1
  330. package/dist/default/ui/popover/use-popup-position.js +34 -0
  331. package/dist/default/ui/popover/use-popup-position.js.map +1 -0
  332. package/dist/default/ui/poster/poster.js +8 -4
  333. package/dist/default/ui/poster/poster.js.map +1 -1
  334. package/dist/default/ui/quality/use-quality-options.js +9 -30
  335. package/dist/default/ui/quality/use-quality-options.js.map +1 -1
  336. package/dist/default/ui/quality-radio-group/index.js +2 -0
  337. package/dist/default/ui/quality-radio-group/quality-radio-group.js +66 -0
  338. package/dist/default/ui/quality-radio-group/quality-radio-group.js.map +1 -0
  339. package/dist/default/ui/seek-indicator/seek-indicator-root.js +1 -1
  340. package/dist/default/ui/seek-indicator/seek-indicator-root.js.map +1 -1
  341. package/dist/default/ui/slider/context.js +7 -2
  342. package/dist/default/ui/slider/context.js.map +1 -1
  343. package/dist/default/ui/slider/slider-preview.js +2 -3
  344. package/dist/default/ui/slider/slider-preview.js.map +1 -1
  345. package/dist/default/ui/slider/slider-root.js +3 -1
  346. package/dist/default/ui/slider/slider-root.js.map +1 -1
  347. package/dist/default/ui/slider/slider-thumbnail.js +2 -2
  348. package/dist/default/ui/slider/slider-thumbnail.js.map +1 -1
  349. package/dist/default/ui/slider/slider-value.js +3 -2
  350. package/dist/default/ui/slider/slider-value.js.map +1 -1
  351. package/dist/default/ui/status-announcer/status-announcer.js +7 -4
  352. package/dist/default/ui/status-announcer/status-announcer.js.map +1 -1
  353. package/dist/default/ui/status-indicator/status-indicator-root.js +2 -2
  354. package/dist/default/ui/status-indicator/status-indicator-root.js.map +1 -1
  355. package/dist/default/ui/time/time-value.js +13 -5
  356. package/dist/default/ui/time/time-value.js.map +1 -1
  357. package/dist/default/ui/time-slider/index.parts.js +5 -1
  358. package/dist/default/ui/time-slider/index.parts.js.map +1 -1
  359. package/dist/default/ui/time-slider/time-slider-chapters/slider-segments.js +61 -0
  360. package/dist/default/ui/time-slider/time-slider-chapters/slider-segments.js.map +1 -0
  361. package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js +46 -0
  362. package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js.map +1 -0
  363. package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapters.js +52 -0
  364. package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapters.js.map +1 -0
  365. package/dist/default/ui/time-slider/time-slider-root.js +6 -4
  366. package/dist/default/ui/time-slider/time-slider-root.js.map +1 -1
  367. package/dist/default/ui/tooltip/tooltip-popup.js +13 -82
  368. package/dist/default/ui/tooltip/tooltip-popup.js.map +1 -1
  369. package/dist/default/ui/tooltip/tooltip-root.js +5 -1
  370. package/dist/default/ui/tooltip/tooltip-root.js.map +1 -1
  371. package/dist/default/ui/tooltip/tooltip-trigger.js +2 -4
  372. package/dist/default/ui/tooltip/tooltip-trigger.js.map +1 -1
  373. package/dist/default/ui/volume-indicator/volume-indicator-root.js +1 -1
  374. package/dist/default/ui/volume-indicator/volume-indicator-root.js.map +1 -1
  375. package/dist/default/ui/volume-slider/volume-slider-root.js +10 -4
  376. package/dist/default/ui/volume-slider/volume-slider-root.js.map +1 -1
  377. package/dist/dev/__generated__/skins/default-video/styles/base.css +25 -0
  378. package/dist/dev/__generated__/skins/default-video/styles/buttons.css +152 -0
  379. package/dist/dev/__generated__/skins/default-video/styles/container.css +45 -0
  380. package/dist/dev/__generated__/skins/default-video/styles/controls.css +45 -0
  381. package/dist/dev/__generated__/skins/default-video/styles/overlays.css +11 -0
  382. package/dist/dev/__generated__/skins/default-video/styles/popups.css +45 -0
  383. package/dist/dev/__generated__/skins/default-video/styles/poster.css +47 -0
  384. package/dist/dev/__generated__/skins/default-video/styles/sliders.css +112 -0
  385. package/dist/dev/__generated__/skins/default-video/styles/styles.css +514 -0
  386. package/dist/dev/__generated__/skins/default-video/styles/theme.css +22 -0
  387. package/dist/dev/_virtual/_rolldown/runtime.js +15 -1
  388. package/dist/dev/i18n/context.d.ts.map +1 -1
  389. package/dist/dev/i18n/context.js +3 -3
  390. package/dist/dev/i18n/context.js.map +1 -1
  391. package/dist/dev/i18n/locales/id/register.d.ts +1 -0
  392. package/dist/dev/i18n/locales/id/register.js +8 -0
  393. package/dist/dev/i18n/locales/id/register.js.map +1 -0
  394. package/dist/dev/i18n/locales/id.d.ts +2 -0
  395. package/dist/dev/i18n/locales/id.js +2 -0
  396. package/dist/dev/i18n/locales/lt/register.d.ts +1 -0
  397. package/dist/dev/i18n/locales/lt/register.js +8 -0
  398. package/dist/dev/i18n/locales/lt/register.js.map +1 -0
  399. package/dist/dev/i18n/locales/lt.d.ts +2 -0
  400. package/dist/dev/i18n/locales/lt.js +2 -0
  401. package/dist/dev/icons/dist/react/default/airplay-enter.js.map +1 -1
  402. package/dist/dev/icons/dist/react/default/airplay-exit.js +1 -2
  403. package/dist/dev/icons/dist/react/default/airplay-exit.js.map +1 -1
  404. package/dist/dev/icons/dist/react/default/captions-off.js.map +1 -1
  405. package/dist/dev/icons/dist/react/default/captions-on.js.map +1 -1
  406. package/dist/dev/icons/dist/react/default/cast-enter.js +2 -45
  407. package/dist/dev/icons/dist/react/default/cast-enter.js.map +1 -1
  408. package/dist/dev/icons/dist/react/default/cast-exit.js +4 -61
  409. package/dist/dev/icons/dist/react/default/cast-exit.js.map +1 -1
  410. package/dist/dev/icons/dist/react/default/check.js.map +1 -1
  411. package/dist/dev/icons/dist/react/default/chevron.js.map +1 -1
  412. package/dist/dev/icons/dist/react/default/fullscreen-enter.js.map +1 -1
  413. package/dist/dev/icons/dist/react/default/fullscreen-exit.js.map +1 -1
  414. package/dist/dev/icons/dist/react/default/gear.js.map +1 -1
  415. package/dist/dev/icons/dist/react/default/pause.js.map +1 -1
  416. package/dist/dev/icons/dist/react/default/pip-enter.js.map +1 -1
  417. package/dist/dev/icons/dist/react/default/pip-exit.js.map +1 -1
  418. package/dist/dev/icons/dist/react/default/play.js.map +1 -1
  419. package/dist/dev/icons/dist/react/default/quality.js +1 -1
  420. package/dist/dev/icons/dist/react/default/quality.js.map +1 -1
  421. package/dist/dev/icons/dist/react/default/restart.js.map +1 -1
  422. package/dist/dev/icons/dist/react/default/seek.js.map +1 -1
  423. package/dist/dev/icons/dist/react/default/speech.js.map +1 -1
  424. package/dist/dev/icons/dist/react/default/speed.js.map +1 -1
  425. package/dist/dev/icons/dist/react/default/spinner.js +1 -1
  426. package/dist/dev/icons/dist/react/default/spinner.js.map +1 -1
  427. package/dist/dev/icons/dist/react/default/switches.js.map +1 -1
  428. package/dist/dev/icons/dist/react/default/volume-high.js.map +1 -1
  429. package/dist/dev/icons/dist/react/default/volume-low.js.map +1 -1
  430. package/dist/dev/icons/dist/react/default/volume-off.js.map +1 -1
  431. package/dist/dev/icons/dist/react/minimal/airplay-enter.js.map +1 -1
  432. package/dist/dev/icons/dist/react/minimal/airplay-exit.js +1 -2
  433. package/dist/dev/icons/dist/react/minimal/airplay-exit.js.map +1 -1
  434. package/dist/dev/icons/dist/react/minimal/captions-off.js.map +1 -1
  435. package/dist/dev/icons/dist/react/minimal/captions-on.js.map +1 -1
  436. package/dist/dev/icons/dist/react/minimal/cast-enter.js +2 -45
  437. package/dist/dev/icons/dist/react/minimal/cast-enter.js.map +1 -1
  438. package/dist/dev/icons/dist/react/minimal/cast-exit.js +4 -61
  439. package/dist/dev/icons/dist/react/minimal/cast-exit.js.map +1 -1
  440. package/dist/dev/icons/dist/react/minimal/check.js.map +1 -1
  441. package/dist/dev/icons/dist/react/minimal/chevron.js.map +1 -1
  442. package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js.map +1 -1
  443. package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js.map +1 -1
  444. package/dist/dev/icons/dist/react/minimal/gear.js.map +1 -1
  445. package/dist/dev/icons/dist/react/minimal/pause.js.map +1 -1
  446. package/dist/dev/icons/dist/react/minimal/pip-enter.js.map +1 -1
  447. package/dist/dev/icons/dist/react/minimal/pip-exit.js.map +1 -1
  448. package/dist/dev/icons/dist/react/minimal/play.js.map +1 -1
  449. package/dist/dev/icons/dist/react/minimal/quality.js +1 -1
  450. package/dist/dev/icons/dist/react/minimal/quality.js.map +1 -1
  451. package/dist/dev/icons/dist/react/minimal/restart.js.map +1 -1
  452. package/dist/dev/icons/dist/react/minimal/seek.js.map +1 -1
  453. package/dist/dev/icons/dist/react/minimal/speech.js +7 -40
  454. package/dist/dev/icons/dist/react/minimal/speech.js.map +1 -1
  455. package/dist/dev/icons/dist/react/minimal/speed.js.map +1 -1
  456. package/dist/dev/icons/dist/react/minimal/spinner.js +1 -1
  457. package/dist/dev/icons/dist/react/minimal/spinner.js.map +1 -1
  458. package/dist/dev/icons/dist/react/minimal/switches.js.map +1 -1
  459. package/dist/dev/icons/dist/react/minimal/volume-high.js.map +1 -1
  460. package/dist/dev/icons/dist/react/minimal/volume-low.js.map +1 -1
  461. package/dist/dev/icons/dist/react/minimal/volume-off.js.map +1 -1
  462. package/dist/dev/index.d.ts +18 -2
  463. package/dist/dev/index.d.ts.map +1 -0
  464. package/dist/dev/index.js +7 -3
  465. package/dist/dev/media/cloudflare-video/index.d.ts +2 -0
  466. package/dist/dev/media/cloudflare-video/index.js +2 -0
  467. package/dist/dev/media/cloudflare-video/media.d.ts +13 -0
  468. package/dist/dev/media/cloudflare-video/media.d.ts.map +1 -0
  469. package/dist/dev/media/cloudflare-video/media.js +38 -0
  470. package/dist/dev/media/cloudflare-video/media.js.map +1 -0
  471. package/dist/dev/media/google-cast/google-cast.d.ts +3 -3
  472. package/dist/dev/media/google-cast/google-cast.js +3 -3
  473. package/dist/dev/media/google-cast/google-cast.js.map +1 -1
  474. package/dist/dev/media/hls-audio/index.d.ts +2 -0
  475. package/dist/dev/media/hls-audio/index.js +2 -0
  476. package/dist/dev/media/hls-audio/media.d.ts +13 -0
  477. package/dist/dev/media/hls-audio/media.d.ts.map +1 -0
  478. package/dist/dev/media/hls-audio/media.js +21 -0
  479. package/dist/dev/media/hls-audio/media.js.map +1 -0
  480. package/dist/dev/media/hls-background-video/index.d.ts +2 -0
  481. package/dist/dev/media/hls-background-video/index.js +2 -0
  482. package/dist/dev/media/hls-background-video/media.d.ts +28 -0
  483. package/dist/dev/media/hls-background-video/media.d.ts.map +1 -0
  484. package/dist/dev/media/hls-background-video/media.js +45 -0
  485. package/dist/dev/media/hls-background-video/media.js.map +1 -0
  486. package/dist/dev/media/hls-video/index.d.ts +2 -0
  487. package/dist/dev/media/hls-video/index.js +2 -0
  488. package/dist/dev/media/hls-video/media.d.ts +13 -0
  489. package/dist/dev/media/hls-video/media.d.ts.map +1 -0
  490. package/dist/{default/media/simple-hls-video → dev/media/hls-video}/media.js +6 -7
  491. package/dist/dev/media/hls-video/media.js.map +1 -0
  492. package/dist/dev/media/mux-audio/{media.d.ts → hls-js.d.ts} +3 -3
  493. package/dist/dev/media/mux-audio/hls-js.d.ts.map +1 -0
  494. package/dist/dev/media/mux-audio/{media.js → hls-js.js} +2 -2
  495. package/dist/dev/media/mux-audio/hls-js.js.map +1 -0
  496. package/dist/dev/media/mux-audio/index.d.ts +1 -1
  497. package/dist/dev/media/mux-audio/index.js +1 -1
  498. package/dist/dev/media/mux-audio/spf.d.ts +14 -0
  499. package/dist/dev/media/mux-audio/spf.d.ts.map +1 -0
  500. package/dist/dev/media/mux-audio/spf.js +26 -0
  501. package/dist/dev/media/mux-audio/spf.js.map +1 -0
  502. package/dist/dev/media/mux-background-video/index.d.ts +3 -0
  503. package/dist/dev/media/mux-background-video/index.js +2 -0
  504. package/dist/dev/media/mux-data/mux-data.d.ts +7 -3
  505. package/dist/dev/media/mux-data/mux-data.d.ts.map +1 -1
  506. package/dist/dev/media/mux-data/mux-data.js +7 -3
  507. package/dist/dev/media/mux-data/mux-data.js.map +1 -1
  508. package/dist/dev/media/mux-video/{media.d.ts → hls-js.d.ts} +3 -3
  509. package/dist/dev/media/mux-video/hls-js.d.ts.map +1 -0
  510. package/dist/dev/media/mux-video/hls-js.js +27 -0
  511. package/dist/dev/media/mux-video/hls-js.js.map +1 -0
  512. package/dist/dev/media/mux-video/index.d.ts +1 -1
  513. package/dist/dev/media/mux-video/index.js +1 -1
  514. package/dist/dev/media/mux-video/spf.d.ts +14 -0
  515. package/dist/dev/media/mux-video/spf.d.ts.map +1 -0
  516. package/dist/dev/media/mux-video/spf.js +27 -0
  517. package/dist/dev/media/mux-video/spf.js.map +1 -0
  518. package/dist/dev/media/mux-video/storyboard.js +43 -0
  519. package/dist/dev/media/mux-video/storyboard.js.map +1 -0
  520. package/dist/dev/media/spotify-audio/index.d.ts +2 -0
  521. package/dist/dev/media/spotify-audio/index.js +2 -0
  522. package/dist/dev/media/spotify-audio/media.d.ts +13 -0
  523. package/dist/dev/media/spotify-audio/media.d.ts.map +1 -0
  524. package/dist/dev/media/spotify-audio/media.js +40 -0
  525. package/dist/dev/media/spotify-audio/media.js.map +1 -0
  526. package/dist/dev/media/tiktok-video/index.d.ts +2 -0
  527. package/dist/dev/media/tiktok-video/index.js +2 -0
  528. package/dist/dev/media/tiktok-video/media.d.ts +13 -0
  529. package/dist/dev/media/tiktok-video/media.d.ts.map +1 -0
  530. package/dist/dev/media/tiktok-video/media.js +38 -0
  531. package/dist/dev/media/tiktok-video/media.js.map +1 -0
  532. package/dist/dev/media/twitch-video/index.d.ts +2 -0
  533. package/dist/dev/media/twitch-video/index.js +2 -0
  534. package/dist/dev/media/twitch-video/media.d.ts +13 -0
  535. package/dist/dev/media/twitch-video/media.d.ts.map +1 -0
  536. package/dist/dev/media/twitch-video/media.js +38 -0
  537. package/dist/dev/media/twitch-video/media.js.map +1 -0
  538. package/dist/dev/media/vimeo-video/media.d.ts.map +1 -1
  539. package/dist/dev/media/vimeo-video/media.js +4 -4
  540. package/dist/dev/media/vimeo-video/media.js.map +1 -1
  541. package/dist/dev/media/youtube-video/index.d.ts +2 -0
  542. package/dist/dev/media/youtube-video/index.js +2 -0
  543. package/dist/dev/media/youtube-video/media.d.ts +13 -0
  544. package/dist/dev/media/youtube-video/media.d.ts.map +1 -0
  545. package/dist/dev/media/youtube-video/media.js +37 -0
  546. package/dist/dev/media/youtube-video/media.js.map +1 -0
  547. package/dist/dev/player/container.d.ts.map +1 -1
  548. package/dist/dev/player/container.js +8 -3
  549. package/dist/dev/player/container.js.map +1 -1
  550. package/dist/dev/player/context.d.ts +7 -8
  551. package/dist/dev/player/context.d.ts.map +1 -1
  552. package/dist/dev/player/context.js +6 -10
  553. package/dist/dev/player/context.js.map +1 -1
  554. package/dist/dev/player/create-player.d.ts +6 -8
  555. package/dist/dev/player/create-player.d.ts.map +1 -1
  556. package/dist/dev/player/create-player.js +45 -14
  557. package/dist/dev/player/create-player.js.map +1 -1
  558. package/dist/dev/player/popup-group-context.js +18 -0
  559. package/dist/dev/player/popup-group-context.js.map +1 -0
  560. package/dist/dev/presets/audio/index.d.ts +2 -1
  561. package/dist/dev/presets/audio/index.js +8 -1
  562. package/dist/dev/presets/audio/index.js.map +1 -0
  563. package/dist/dev/presets/audio/minimal-skin.css +426 -295
  564. package/dist/dev/presets/audio/minimal-skin.d.ts.map +1 -1
  565. package/dist/dev/presets/audio/minimal-skin.js +12 -19
  566. package/dist/dev/presets/audio/minimal-skin.js.map +1 -1
  567. package/dist/dev/presets/audio/minimal-skin.tailwind.d.ts.map +1 -1
  568. package/dist/dev/presets/audio/minimal-skin.tailwind.js +81 -20
  569. package/dist/dev/presets/audio/minimal-skin.tailwind.js.map +1 -1
  570. package/dist/dev/presets/audio/player.d.ts +13 -0
  571. package/dist/dev/presets/audio/player.d.ts.map +1 -0
  572. package/dist/dev/presets/audio/player.js +13 -0
  573. package/dist/dev/presets/audio/player.js.map +1 -0
  574. package/dist/dev/presets/audio/skin.css +458 -341
  575. package/dist/dev/presets/audio/skin.d.ts.map +1 -1
  576. package/dist/dev/presets/audio/skin.js +13 -19
  577. package/dist/dev/presets/audio/skin.js.map +1 -1
  578. package/dist/dev/presets/audio/skin.tailwind.d.ts.map +1 -1
  579. package/dist/dev/presets/audio/skin.tailwind.js +14 -19
  580. package/dist/dev/presets/audio/skin.tailwind.js.map +1 -1
  581. package/dist/dev/presets/background/index.d.ts +2 -1
  582. package/dist/dev/presets/background/index.js +8 -1
  583. package/dist/dev/presets/background/index.js.map +1 -0
  584. package/dist/dev/presets/background/player.d.ts +10 -0
  585. package/dist/dev/presets/background/player.d.ts.map +1 -0
  586. package/dist/dev/presets/background/player.js +13 -0
  587. package/dist/dev/presets/background/player.js.map +1 -0
  588. package/dist/dev/presets/background/skin.css +3 -3
  589. package/dist/dev/presets/live-audio/index.d.ts +2 -1
  590. package/dist/dev/presets/live-audio/index.js +8 -1
  591. package/dist/dev/presets/live-audio/index.js.map +1 -0
  592. package/dist/dev/presets/live-audio/minimal-skin.css +426 -295
  593. package/dist/dev/presets/live-audio/minimal-skin.js +2 -2
  594. package/dist/dev/presets/live-audio/minimal-skin.js.map +1 -1
  595. package/dist/dev/presets/live-audio/minimal-skin.tailwind.js +4 -4
  596. package/dist/dev/presets/live-audio/minimal-skin.tailwind.js.map +1 -1
  597. package/dist/dev/presets/live-audio/player.d.ts +13 -0
  598. package/dist/dev/presets/live-audio/player.d.ts.map +1 -0
  599. package/dist/dev/presets/live-audio/player.js +13 -0
  600. package/dist/dev/presets/live-audio/player.js.map +1 -0
  601. package/dist/dev/presets/live-audio/skin.css +458 -341
  602. package/dist/dev/presets/live-audio/skin.js +2 -2
  603. package/dist/dev/presets/live-audio/skin.js.map +1 -1
  604. package/dist/dev/presets/live-audio/skin.tailwind.js +4 -4
  605. package/dist/dev/presets/live-audio/skin.tailwind.js.map +1 -1
  606. package/dist/dev/presets/live-video/index.d.ts +2 -1
  607. package/dist/dev/presets/live-video/index.js +8 -1
  608. package/dist/dev/presets/live-video/index.js.map +1 -0
  609. package/dist/dev/presets/live-video/minimal-skin.css +655 -588
  610. package/dist/dev/presets/live-video/minimal-skin.js +12 -12
  611. package/dist/dev/presets/live-video/minimal-skin.js.map +1 -1
  612. package/dist/dev/presets/live-video/minimal-skin.tailwind.d.ts.map +1 -1
  613. package/dist/dev/presets/live-video/minimal-skin.tailwind.js +27 -26
  614. package/dist/dev/presets/live-video/minimal-skin.tailwind.js.map +1 -1
  615. package/dist/dev/presets/live-video/player.d.ts +13 -0
  616. package/dist/dev/presets/live-video/player.d.ts.map +1 -0
  617. package/dist/dev/presets/live-video/player.js +13 -0
  618. package/dist/dev/presets/live-video/player.js.map +1 -0
  619. package/dist/dev/presets/live-video/skin.css +656 -618
  620. package/dist/dev/presets/live-video/skin.js +11 -11
  621. package/dist/dev/presets/live-video/skin.js.map +1 -1
  622. package/dist/dev/presets/live-video/skin.tailwind.d.ts.map +1 -1
  623. package/dist/dev/presets/live-video/skin.tailwind.js +24 -112
  624. package/dist/dev/presets/live-video/skin.tailwind.js.map +1 -1
  625. package/dist/dev/presets/video/index.d.ts +2 -1
  626. package/dist/dev/presets/video/index.js +8 -1
  627. package/dist/dev/presets/video/index.js.map +1 -0
  628. package/dist/dev/presets/video/minimal-skin.css +655 -588
  629. package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
  630. package/dist/dev/presets/video/minimal-skin.js +212 -211
  631. package/dist/dev/presets/video/minimal-skin.js.map +1 -1
  632. package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
  633. package/dist/dev/presets/video/minimal-skin.tailwind.js +226 -233
  634. package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
  635. package/dist/dev/presets/video/player.d.ts +13 -0
  636. package/dist/dev/presets/video/player.d.ts.map +1 -0
  637. package/dist/dev/presets/video/player.js +13 -0
  638. package/dist/dev/presets/video/player.js.map +1 -0
  639. package/dist/dev/presets/video/skin.css +656 -618
  640. package/dist/dev/presets/video/skin.d.ts.map +1 -1
  641. package/dist/dev/presets/video/skin.js +212 -207
  642. package/dist/dev/presets/video/skin.js.map +1 -1
  643. package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
  644. package/dist/dev/presets/video/skin.tailwind.js +224 -227
  645. package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
  646. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +6 -6
  647. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  648. package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js +1 -1
  649. package/dist/dev/skins/dist/default/default/tailwind/components/buffering.js.map +1 -1
  650. package/dist/dev/skins/dist/default/default/tailwind/components/button.js +4 -4
  651. package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  652. package/dist/dev/skins/dist/default/default/tailwind/components/container.js +8 -0
  653. package/dist/dev/skins/dist/default/default/tailwind/components/container.js.map +1 -0
  654. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js +1 -1
  655. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  656. package/dist/dev/skins/dist/default/default/tailwind/components/error.js +1 -1
  657. package/dist/dev/skins/dist/default/default/tailwind/components/error.js.map +1 -1
  658. package/dist/dev/skins/dist/default/default/tailwind/components/icon.js +1 -1
  659. package/dist/dev/skins/dist/default/default/tailwind/components/icon.js.map +1 -1
  660. package/dist/dev/skins/dist/default/default/tailwind/components/input-indicator-overlay.js +7 -0
  661. package/dist/dev/skins/dist/default/default/tailwind/components/input-indicator-overlay.js.map +1 -0
  662. package/dist/dev/skins/dist/default/default/tailwind/components/input-indicator.js +9 -0
  663. package/dist/dev/skins/dist/default/default/tailwind/components/input-indicator.js.map +1 -0
  664. package/dist/dev/skins/dist/default/default/tailwind/components/menu.js +8 -12
  665. package/dist/dev/skins/dist/default/default/tailwind/components/menu.js.map +1 -1
  666. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js +1 -1
  667. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  668. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js +1 -1
  669. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  670. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js +1 -1
  671. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
  672. package/dist/dev/skins/dist/default/default/tailwind/components/seek-indicator.js +12 -0
  673. package/dist/dev/skins/dist/default/default/tailwind/components/seek-indicator.js.map +1 -0
  674. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js +17 -9
  675. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  676. package/dist/dev/skins/dist/default/default/tailwind/components/status-indicator.js +29 -0
  677. package/dist/dev/skins/dist/default/default/tailwind/components/status-indicator.js.map +1 -0
  678. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js +1 -1
  679. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js.map +1 -1
  680. package/dist/dev/skins/dist/default/default/tailwind/components/thumbnail.js +3 -4
  681. package/dist/dev/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -1
  682. package/dist/dev/skins/dist/default/default/tailwind/components/time.js +2 -2
  683. package/dist/dev/skins/dist/default/default/tailwind/components/time.js.map +1 -1
  684. package/dist/dev/skins/dist/default/default/tailwind/components/volume-indicator.js +18 -0
  685. package/dist/dev/skins/dist/default/default/tailwind/components/volume-indicator.js.map +1 -0
  686. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +22 -19
  687. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  688. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +6 -6
  689. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  690. package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js +1 -1
  691. package/dist/dev/skins/dist/default/minimal/tailwind/components/buffering.js.map +1 -1
  692. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js +4 -4
  693. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  694. package/dist/dev/skins/dist/default/minimal/tailwind/components/container.js +8 -0
  695. package/dist/dev/skins/dist/default/minimal/tailwind/components/container.js.map +1 -0
  696. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  697. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  698. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js +1 -1
  699. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js.map +1 -1
  700. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js +1 -1
  701. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon.js.map +1 -1
  702. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-indicator-overlay.js +7 -0
  703. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-indicator-overlay.js.map +1 -0
  704. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-indicator.js +10 -0
  705. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-indicator.js.map +1 -0
  706. package/dist/dev/skins/dist/default/minimal/tailwind/components/menu.js +9 -13
  707. package/dist/dev/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -1
  708. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
  709. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  710. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js +2 -2
  711. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  712. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js +1 -1
  713. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
  714. package/dist/dev/skins/dist/default/minimal/tailwind/components/seek-indicator.js +12 -0
  715. package/dist/dev/skins/dist/default/minimal/tailwind/components/seek-indicator.js.map +1 -0
  716. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js +17 -9
  717. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  718. package/dist/dev/skins/dist/default/minimal/tailwind/components/status-indicator.js +29 -0
  719. package/dist/dev/skins/dist/default/minimal/tailwind/components/status-indicator.js.map +1 -0
  720. package/dist/dev/skins/dist/default/minimal/tailwind/components/thumbnail.js +3 -5
  721. package/dist/dev/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -1
  722. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js +2 -2
  723. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  724. package/dist/dev/skins/dist/default/minimal/tailwind/components/volume-indicator.js +19 -0
  725. package/dist/dev/skins/dist/default/minimal/tailwind/components/volume-indicator.js.map +1 -0
  726. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +14 -15
  727. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  728. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js +22 -20
  729. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  730. package/dist/dev/ui/audio-track/use-audio-track-options.d.ts +6 -6
  731. package/dist/dev/ui/audio-track/use-audio-track-options.d.ts.map +1 -1
  732. package/dist/dev/ui/audio-track/use-audio-track-options.js +9 -27
  733. package/dist/dev/ui/audio-track/use-audio-track-options.js.map +1 -1
  734. package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group.d.ts +43 -0
  735. package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group.d.ts.map +1 -0
  736. package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group.js +65 -0
  737. package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group.js.map +1 -0
  738. package/dist/dev/ui/audio-track-radio-group/index.d.ts +2 -0
  739. package/dist/dev/ui/audio-track-radio-group/index.js +2 -0
  740. package/dist/dev/ui/captions-radio-group/captions-radio-group.d.ts +43 -0
  741. package/dist/dev/ui/captions-radio-group/captions-radio-group.d.ts.map +1 -0
  742. package/dist/dev/ui/captions-radio-group/captions-radio-group.js +65 -0
  743. package/dist/dev/ui/captions-radio-group/captions-radio-group.js.map +1 -0
  744. package/dist/dev/ui/captions-radio-group/index.d.ts +2 -1
  745. package/dist/dev/ui/captions-radio-group/index.js +2 -1
  746. package/dist/dev/ui/captions-radio-group/use-captions-options.d.ts +6 -6
  747. package/dist/dev/ui/captions-radio-group/use-captions-options.d.ts.map +1 -1
  748. package/dist/dev/ui/captions-radio-group/use-captions-options.js +13 -33
  749. package/dist/dev/ui/captions-radio-group/use-captions-options.js.map +1 -1
  750. package/dist/dev/ui/hooks/create-radio-options-hook.d.ts +11 -0
  751. package/dist/dev/ui/hooks/create-radio-options-hook.d.ts.map +1 -0
  752. package/dist/dev/ui/hooks/create-radio-options-hook.js +46 -0
  753. package/dist/dev/ui/hooks/create-radio-options-hook.js.map +1 -0
  754. package/dist/dev/ui/hooks/use-slider.d.ts +2 -1
  755. package/dist/dev/ui/hooks/use-slider.d.ts.map +1 -1
  756. package/dist/dev/ui/hooks/use-slider.js +49 -13
  757. package/dist/dev/ui/hooks/use-slider.js.map +1 -1
  758. package/dist/{default/ui/input-indicators → dev/ui/input-indicator}/use-indicator-visibility.js +1 -1
  759. package/dist/dev/ui/input-indicator/use-indicator-visibility.js.map +1 -0
  760. package/dist/dev/ui/{input-indicators → input-indicator}/use-input-action-subscription.js +1 -1
  761. package/dist/dev/ui/input-indicator/use-input-action-subscription.js.map +1 -0
  762. package/dist/dev/ui/{input-indicators → input-indicator}/use-input-indicator-root.js +1 -1
  763. package/dist/dev/ui/input-indicator/use-input-indicator-root.js.map +1 -0
  764. package/dist/dev/ui/{input-indicators → input-indicator}/use-rendered-indicator-state.js +1 -1
  765. package/dist/dev/ui/input-indicator/use-rendered-indicator-state.js.map +1 -0
  766. package/dist/dev/ui/menu/context.d.ts +1 -10
  767. package/dist/dev/ui/menu/context.d.ts.map +1 -1
  768. package/dist/dev/ui/menu/context.js +1 -11
  769. package/dist/dev/ui/menu/context.js.map +1 -1
  770. package/dist/dev/ui/menu/index.parts.d.ts +3 -6
  771. package/dist/dev/ui/menu/index.parts.js +3 -9
  772. package/dist/dev/ui/menu/index.parts.js.map +1 -1
  773. package/dist/dev/ui/menu/menu-checkbox-item.js +4 -1
  774. package/dist/dev/ui/menu/menu-checkbox-item.js.map +1 -1
  775. package/dist/dev/ui/menu/menu-content.d.ts.map +1 -1
  776. package/dist/dev/ui/menu/menu-content.js +78 -236
  777. package/dist/dev/ui/menu/menu-content.js.map +1 -1
  778. package/dist/dev/ui/menu/menu-item.d.ts +0 -3
  779. package/dist/dev/ui/menu/menu-item.d.ts.map +1 -1
  780. package/dist/dev/ui/menu/menu-item.js +11 -18
  781. package/dist/dev/ui/menu/menu-item.js.map +1 -1
  782. package/dist/dev/ui/menu/menu-keyboard.js +31 -0
  783. package/dist/dev/ui/menu/menu-keyboard.js.map +1 -0
  784. package/dist/dev/ui/menu/menu-radio-item.d.ts.map +1 -1
  785. package/dist/dev/ui/menu/menu-radio-item.js +8 -6
  786. package/dist/dev/ui/menu/menu-radio-item.js.map +1 -1
  787. package/dist/dev/ui/menu/menu-root.d.ts.map +1 -1
  788. package/dist/dev/ui/menu/menu-root.js +46 -61
  789. package/dist/dev/ui/menu/menu-root.js.map +1 -1
  790. package/dist/dev/ui/menu/menu-trigger.d.ts +5 -5
  791. package/dist/dev/ui/menu/menu-trigger.d.ts.map +1 -1
  792. package/dist/dev/ui/menu/menu-trigger.js +50 -87
  793. package/dist/dev/ui/menu/menu-trigger.js.map +1 -1
  794. package/dist/dev/ui/mute-button/mute-button.d.ts.map +1 -1
  795. package/dist/dev/ui/mute-button/mute-button.js +2 -1
  796. package/dist/dev/ui/mute-button/mute-button.js.map +1 -1
  797. package/dist/dev/ui/playback-rate/use-playback-rate-options.d.ts +6 -7
  798. package/dist/dev/ui/playback-rate/use-playback-rate-options.d.ts.map +1 -1
  799. package/dist/dev/ui/playback-rate/use-playback-rate-options.js +15 -26
  800. package/dist/dev/ui/playback-rate/use-playback-rate-options.js.map +1 -1
  801. package/dist/dev/ui/playback-rate-radio-group/index.d.ts +2 -0
  802. package/dist/dev/ui/playback-rate-radio-group/index.js +2 -0
  803. package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group.d.ts +43 -0
  804. package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group.d.ts.map +1 -0
  805. package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group.js +65 -0
  806. package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group.js.map +1 -0
  807. package/dist/dev/ui/popover/popover-popup.d.ts.map +1 -1
  808. package/dist/dev/ui/popover/popover-popup.js +10 -80
  809. package/dist/dev/ui/popover/popover-popup.js.map +1 -1
  810. package/dist/dev/ui/popover/popover-root.d.ts.map +1 -1
  811. package/dist/dev/ui/popover/popover-root.js +2 -1
  812. package/dist/dev/ui/popover/popover-root.js.map +1 -1
  813. package/dist/dev/ui/popover/popover-trigger.d.ts.map +1 -1
  814. package/dist/dev/ui/popover/popover-trigger.js +4 -5
  815. package/dist/dev/ui/popover/popover-trigger.js.map +1 -1
  816. package/dist/dev/ui/popover/use-popup-position.js +34 -0
  817. package/dist/dev/ui/popover/use-popup-position.js.map +1 -0
  818. package/dist/dev/ui/poster/poster.js +8 -4
  819. package/dist/dev/ui/poster/poster.js.map +1 -1
  820. package/dist/dev/ui/quality/use-quality-options.d.ts +6 -8
  821. package/dist/dev/ui/quality/use-quality-options.d.ts.map +1 -1
  822. package/dist/dev/ui/quality/use-quality-options.js +10 -34
  823. package/dist/dev/ui/quality/use-quality-options.js.map +1 -1
  824. package/dist/dev/ui/quality-radio-group/index.d.ts +2 -0
  825. package/dist/dev/ui/quality-radio-group/index.js +2 -0
  826. package/dist/dev/ui/quality-radio-group/quality-radio-group.d.ts +44 -0
  827. package/dist/dev/ui/quality-radio-group/quality-radio-group.d.ts.map +1 -0
  828. package/dist/dev/ui/quality-radio-group/quality-radio-group.js +66 -0
  829. package/dist/dev/ui/quality-radio-group/quality-radio-group.js.map +1 -0
  830. package/dist/dev/ui/seek-indicator/seek-indicator-root.js +1 -1
  831. package/dist/dev/ui/seek-indicator/seek-indicator-root.js.map +1 -1
  832. package/dist/dev/ui/slider/context.js +7 -2
  833. package/dist/dev/ui/slider/context.js.map +1 -1
  834. package/dist/dev/ui/slider/slider-preview.d.ts.map +1 -1
  835. package/dist/dev/ui/slider/slider-preview.js +2 -3
  836. package/dist/dev/ui/slider/slider-preview.js.map +1 -1
  837. package/dist/dev/ui/slider/slider-root.d.ts.map +1 -1
  838. package/dist/dev/ui/slider/slider-root.js +3 -1
  839. package/dist/dev/ui/slider/slider-root.js.map +1 -1
  840. package/dist/dev/ui/slider/slider-thumbnail.js +2 -2
  841. package/dist/dev/ui/slider/slider-thumbnail.js.map +1 -1
  842. package/dist/dev/ui/slider/slider-value.d.ts.map +1 -1
  843. package/dist/dev/ui/slider/slider-value.js +3 -2
  844. package/dist/dev/ui/slider/slider-value.js.map +1 -1
  845. package/dist/dev/ui/status-announcer/status-announcer.d.ts.map +1 -1
  846. package/dist/dev/ui/status-announcer/status-announcer.js +7 -4
  847. package/dist/dev/ui/status-announcer/status-announcer.js.map +1 -1
  848. package/dist/dev/ui/status-indicator/status-indicator-root.d.ts.map +1 -1
  849. package/dist/dev/ui/status-indicator/status-indicator-root.js +2 -2
  850. package/dist/dev/ui/status-indicator/status-indicator-root.js.map +1 -1
  851. package/dist/dev/ui/time/time-value.d.ts.map +1 -1
  852. package/dist/dev/ui/time/time-value.js +13 -5
  853. package/dist/dev/ui/time/time-value.js.map +1 -1
  854. package/dist/dev/ui/time-slider/index.parts.d.ts +4 -2
  855. package/dist/dev/ui/time-slider/index.parts.js +5 -1
  856. package/dist/dev/ui/time-slider/index.parts.js.map +1 -1
  857. package/dist/dev/ui/time-slider/time-slider-chapters/slider-segments.js +61 -0
  858. package/dist/dev/ui/time-slider/time-slider-chapters/slider-segments.js.map +1 -0
  859. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapter-title.d.ts +19 -0
  860. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapter-title.d.ts.map +1 -0
  861. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js +46 -0
  862. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js.map +1 -0
  863. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapters.d.ts +22 -0
  864. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapters.d.ts.map +1 -0
  865. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapters.js +52 -0
  866. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapters.js.map +1 -0
  867. package/dist/dev/ui/time-slider/time-slider-root.d.ts.map +1 -1
  868. package/dist/dev/ui/time-slider/time-slider-root.js +6 -4
  869. package/dist/dev/ui/time-slider/time-slider-root.js.map +1 -1
  870. package/dist/dev/ui/tooltip/tooltip-popup.d.ts.map +1 -1
  871. package/dist/dev/ui/tooltip/tooltip-popup.js +13 -82
  872. package/dist/dev/ui/tooltip/tooltip-popup.js.map +1 -1
  873. package/dist/dev/ui/tooltip/tooltip-root.d.ts.map +1 -1
  874. package/dist/dev/ui/tooltip/tooltip-root.js +5 -1
  875. package/dist/dev/ui/tooltip/tooltip-root.js.map +1 -1
  876. package/dist/dev/ui/tooltip/tooltip-trigger.d.ts.map +1 -1
  877. package/dist/dev/ui/tooltip/tooltip-trigger.js +2 -4
  878. package/dist/dev/ui/tooltip/tooltip-trigger.js.map +1 -1
  879. package/dist/dev/ui/volume-indicator/volume-indicator-root.js +1 -1
  880. package/dist/dev/ui/volume-indicator/volume-indicator-root.js.map +1 -1
  881. package/dist/dev/ui/volume-slider/volume-slider-root.d.ts.map +1 -1
  882. package/dist/dev/ui/volume-slider/volume-slider-root.js +10 -4
  883. package/dist/dev/ui/volume-slider/volume-slider-root.js.map +1 -1
  884. package/docs/README.md +1 -1
  885. package/docs/concepts/cast.md +6 -6
  886. package/docs/concepts/features.md +9 -6
  887. package/docs/concepts/i18n.md +16 -26
  888. package/docs/concepts/media-sources.md +383 -0
  889. package/docs/concepts/mux-data.md +9 -7
  890. package/docs/concepts/overview.md +15 -18
  891. package/docs/concepts/presets.md +18 -19
  892. package/docs/concepts/skins.md +864 -859
  893. package/docs/concepts/ui-components.md +3 -3
  894. package/docs/concepts/why-videojs.md +4 -4
  895. package/docs/how-to/build-your-own-component.md +7 -5
  896. package/docs/how-to/customize-skins.md +2677 -2363
  897. package/docs/how-to/i18n-override-translations.md +3 -3
  898. package/docs/how-to/i18n-register-locale.md +3 -3
  899. package/docs/how-to/i18n-ssr.md +3 -3
  900. package/docs/how-to/i18n-switch-locale.md +3 -3
  901. package/docs/how-to/installation.md +3 -8
  902. package/docs/llms.txt +42 -39
  903. package/docs/reference/airplay-button.md +6 -6
  904. package/docs/reference/audio-track-radio-group.md +198 -29
  905. package/docs/reference/buffering-indicator.md +6 -6
  906. package/docs/reference/captions-button.md +6 -6
  907. package/docs/reference/captions-radio-group.md +206 -29
  908. package/docs/reference/cast-button.md +6 -6
  909. package/docs/reference/controls.md +6 -6
  910. package/docs/reference/create-player.md +22 -31
  911. package/docs/reference/create-translator.md +1 -1
  912. package/docs/reference/dash-video.md +14 -0
  913. package/docs/reference/feature-controls.md +13 -1
  914. package/docs/reference/feature-fullscreen.md +1 -1
  915. package/docs/reference/feature-orientation-lock.md +2 -2
  916. package/docs/reference/feature-text-tracks.md +3 -1
  917. package/docs/reference/feature-volume.md +10 -0
  918. package/docs/reference/fullscreen-button.md +6 -6
  919. package/docs/reference/get-i18n-translations.md +1 -1
  920. package/docs/reference/has-registered-locale.md +1 -1
  921. package/docs/reference/{simple-hls-audio-only.md → hls-audio.md} +5 -5
  922. package/docs/reference/{simple-hls-video.md → hls-video.md} +4 -4
  923. package/docs/reference/hlsjs-video.md +17 -9
  924. package/docs/reference/menu.md +65 -157
  925. package/docs/reference/mute-button.md +60 -18
  926. package/docs/reference/mux-audio.md +1 -107
  927. package/docs/reference/mux-video.md +1 -107
  928. package/docs/reference/native-hls-video.md +24 -0
  929. package/docs/reference/pip-button.md +6 -6
  930. package/docs/reference/play-button.md +6 -6
  931. package/docs/reference/playback-rate-button.md +6 -6
  932. package/docs/reference/playback-rate-radio-group.md +200 -29
  933. package/docs/reference/player-container.md +25 -25
  934. package/docs/reference/player-provider.md +24 -24
  935. package/docs/reference/popover.md +6 -6
  936. package/docs/reference/poster.md +6 -6
  937. package/docs/reference/quality-radio-group.md +200 -31
  938. package/docs/reference/register-i18n.md +1 -1
  939. package/docs/reference/seek-button.md +6 -6
  940. package/docs/reference/slider.md +1 -1
  941. package/docs/reference/thumbnail.md +7 -7
  942. package/docs/reference/time-slider.md +251 -7
  943. package/docs/reference/time.md +78 -34
  944. package/docs/reference/translation-phrases.md +27 -3
  945. package/docs/reference/use-container-attach.md +5 -5
  946. package/docs/reference/use-locale.md +1 -1
  947. package/docs/reference/use-media-attach.md +2 -2
  948. package/docs/reference/use-media.md +16 -10
  949. package/docs/reference/use-player-context.md +2 -7
  950. package/docs/reference/use-player.md +25 -19
  951. package/docs/reference/use-store.md +15 -15
  952. package/docs/reference/volume-slider.md +13 -11
  953. package/package.json +28 -8
  954. package/dist/default/media/mux-audio/media.js.map +0 -1
  955. package/dist/default/media/mux-video/media.js +0 -56
  956. package/dist/default/media/mux-video/media.js.map +0 -1
  957. package/dist/default/media/simple-hls-audio-only/index.js +0 -2
  958. package/dist/default/media/simple-hls-audio-only/media.js +0 -22
  959. package/dist/default/media/simple-hls-audio-only/media.js.map +0 -1
  960. package/dist/default/media/simple-hls-video/index.js +0 -2
  961. package/dist/default/media/simple-hls-video/media.js.map +0 -1
  962. package/dist/default/skins/dist/default/default/tailwind/components/input-feedback.js +0 -40
  963. package/dist/default/skins/dist/default/default/tailwind/components/input-feedback.js.map +0 -1
  964. package/dist/default/skins/dist/default/default/tailwind/components/root.js +0 -8
  965. package/dist/default/skins/dist/default/default/tailwind/components/root.js.map +0 -1
  966. package/dist/default/skins/dist/default/minimal/tailwind/components/input-feedback.js +0 -41
  967. package/dist/default/skins/dist/default/minimal/tailwind/components/input-feedback.js.map +0 -1
  968. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js +0 -8
  969. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js.map +0 -1
  970. package/dist/default/tailwind.css +0 -42
  971. package/dist/default/ui/input-indicators/use-indicator-visibility.js.map +0 -1
  972. package/dist/default/ui/input-indicators/use-input-action-subscription.js.map +0 -1
  973. package/dist/default/ui/input-indicators/use-input-indicator-root.js.map +0 -1
  974. package/dist/default/ui/input-indicators/use-rendered-indicator-state.js.map +0 -1
  975. package/dist/default/ui/menu/menu-back.js +0 -34
  976. package/dist/default/ui/menu/menu-back.js.map +0 -1
  977. package/dist/default/ui/menu/menu-item-setting-provider.js +0 -77
  978. package/dist/default/ui/menu/menu-item-setting-provider.js.map +0 -1
  979. package/dist/default/ui/menu/menu-item-value.js +0 -28
  980. package/dist/default/ui/menu/menu-item-value.js.map +0 -1
  981. package/dist/default/ui/menu/menu-view.js +0 -23
  982. package/dist/default/ui/menu/menu-view.js.map +0 -1
  983. package/dist/dev/media/mux-audio/media.d.ts.map +0 -1
  984. package/dist/dev/media/mux-audio/media.js.map +0 -1
  985. package/dist/dev/media/mux-video/media.d.ts.map +0 -1
  986. package/dist/dev/media/mux-video/media.js +0 -56
  987. package/dist/dev/media/mux-video/media.js.map +0 -1
  988. package/dist/dev/media/simple-hls-audio-only/index.d.ts +0 -2
  989. package/dist/dev/media/simple-hls-audio-only/index.js +0 -2
  990. package/dist/dev/media/simple-hls-audio-only/media.d.ts +0 -13
  991. package/dist/dev/media/simple-hls-audio-only/media.d.ts.map +0 -1
  992. package/dist/dev/media/simple-hls-audio-only/media.js +0 -22
  993. package/dist/dev/media/simple-hls-audio-only/media.js.map +0 -1
  994. package/dist/dev/media/simple-hls-video/index.d.ts +0 -2
  995. package/dist/dev/media/simple-hls-video/index.js +0 -2
  996. package/dist/dev/media/simple-hls-video/media.d.ts +0 -13
  997. package/dist/dev/media/simple-hls-video/media.d.ts.map +0 -1
  998. package/dist/dev/media/simple-hls-video/media.js.map +0 -1
  999. package/dist/dev/skins/dist/default/default/tailwind/components/input-feedback.js +0 -40
  1000. package/dist/dev/skins/dist/default/default/tailwind/components/input-feedback.js.map +0 -1
  1001. package/dist/dev/skins/dist/default/default/tailwind/components/root.js +0 -8
  1002. package/dist/dev/skins/dist/default/default/tailwind/components/root.js.map +0 -1
  1003. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-feedback.js +0 -41
  1004. package/dist/dev/skins/dist/default/minimal/tailwind/components/input-feedback.js.map +0 -1
  1005. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js +0 -8
  1006. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js.map +0 -1
  1007. package/dist/dev/tailwind.css +0 -42
  1008. package/dist/dev/ui/input-indicators/use-indicator-visibility.js.map +0 -1
  1009. package/dist/dev/ui/input-indicators/use-input-action-subscription.js.map +0 -1
  1010. package/dist/dev/ui/input-indicators/use-input-indicator-root.js.map +0 -1
  1011. package/dist/dev/ui/input-indicators/use-rendered-indicator-state.js.map +0 -1
  1012. package/dist/dev/ui/menu/menu-back.d.ts +0 -17
  1013. package/dist/dev/ui/menu/menu-back.d.ts.map +0 -1
  1014. package/dist/dev/ui/menu/menu-back.js +0 -34
  1015. package/dist/dev/ui/menu/menu-back.js.map +0 -1
  1016. package/dist/dev/ui/menu/menu-item-setting-provider.js +0 -77
  1017. package/dist/dev/ui/menu/menu-item-setting-provider.js.map +0 -1
  1018. package/dist/dev/ui/menu/menu-item-type.d.ts +0 -5
  1019. package/dist/dev/ui/menu/menu-item-type.d.ts.map +0 -1
  1020. package/dist/dev/ui/menu/menu-item-value.d.ts +0 -12
  1021. package/dist/dev/ui/menu/menu-item-value.d.ts.map +0 -1
  1022. package/dist/dev/ui/menu/menu-item-value.js +0 -28
  1023. package/dist/dev/ui/menu/menu-item-value.js.map +0 -1
  1024. package/dist/dev/ui/menu/menu-view.d.ts +0 -13
  1025. package/dist/dev/ui/menu/menu-view.d.ts.map +0 -1
  1026. package/dist/dev/ui/menu/menu-view.js +0 -23
  1027. package/dist/dev/ui/menu/menu-view.js.map +0 -1
@@ -11,10 +11,6 @@
11
11
  }
12
12
 
13
13
 
14
- /* ==========================================================================
15
- Reset
16
- ========================================================================== */
17
-
18
14
  .media-default-skin *,
19
15
  .media-default-skin *::before,
20
16
  .media-default-skin *::after {
@@ -39,29 +35,37 @@
39
35
  }
40
36
  }
41
37
 
42
- /* ==========================================================================
43
- Root Container
44
- ========================================================================== */
45
-
46
38
  .media-default-skin {
47
39
  /* Colors */
48
- --media-current-shadow-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - 0.5) * 0.5), 0.15));
49
- --media-current-shadow-color-subtle: oklch(from var(--media-current-shadow-color) l c h / calc(alpha * 0.4));
40
+ --accent-color: var(--media-accent-color, var(--default-accent-color));
41
+ --accent-contrast-color: contrast-color(var(--accent-color));
42
+ --accent-background-color: var(
43
+ --media-accent-color,
44
+ oklch(from var(--default-accent-color) l c h / calc(alpha * 0.1))
45
+ );
46
+ --accent-text-color: var(--media-accent-text-color, contrast-color(var(--media-accent-color, oklch(0 0 0))));
47
+ --shadow-current-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - 0.5) * 0.5), 0.15));
48
+ --shadow-subtle-current-color: oklch(from var(--shadow-current-color) l c h / calc(alpha * 0.4));
50
49
  --scrollbar-thumb-color: oklch(from currentColor l c h / 0.3);
51
50
 
52
- /* Scaling (used in video fullscreen) */
51
+ /* Scaling - used in video fullscreen to scale the UI. */
53
52
  --scale: 1;
54
- /* What value and unit to use - 1rem assumes the document font size remains at the default 16px */
55
- --base-size: 1rem;
56
- --size: calc(var(--base-size) * var(--scale));
57
- /* Create a Tailwind-like spacing unit */
53
+ /* Fixed scaling unit to avoid inheriting the document's root font size. This must be a CSS <length>. */
54
+ --scale-unit: var(--media-scale-unit, 16px);
55
+ --size: calc(var(--scale-unit) * var(--scale));
56
+ /* Create a Tailwind-like spacing unit where 1 equals 4px with default scaling. */
58
57
  --spacing: calc(var(--size) / 4);
58
+
59
+ /* Font sizes */
59
60
  --font-size-medium: calc(0.9375 * var(--size)); /* 15px */
60
61
  --font-size-base: calc(0.8125 * var(--size)); /* 13px */
61
62
  --font-size-small: calc(0.6875 * var(--size)); /* 11px */
62
63
  --font-size-tiny: calc(0.5625 * var(--size)); /* 9px */
63
64
  --media-icon-size: calc(1.125 * var(--size)); /* 18px */
64
65
 
66
+ /* Radii */
67
+ --container-border-radius: var(--media-border-radius, 1.75rem);
68
+
65
69
  position: relative;
66
70
  display: block;
67
71
  width: 100%;
@@ -82,14 +86,14 @@
82
86
  outline-offset: -4px;
83
87
  scrollbar-color: var(--scrollbar-thumb-color) transparent;
84
88
  scrollbar-width: thin;
85
- border-radius: var(--media-border-radius, 1.75rem);
89
+ border-radius: var(--container-border-radius, 1.75rem);
86
90
  isolation: isolate;
87
91
  transition-timing-function: ease-out;
88
92
  transition-duration: 100ms;
89
93
  transition-property: outline-offset, outline-color;
90
94
 
91
95
  &:focus-visible {
92
- outline-color: currentColor;
96
+ outline-color: var(--focus-ring-color);
93
97
  outline-offset: 2px;
94
98
  }
95
99
 
@@ -104,17 +108,13 @@
104
108
  }
105
109
  }
106
110
 
107
- /* ==========================================================================
108
- Surface (shared glass effect for tooltips, popovers, controls)
109
- ========================================================================== */
110
-
111
111
  .media-default-skin .media-surface {
112
- background-color: var(--media-surface-background-color);
112
+ background-color: var(--surface-background-color);
113
113
  box-shadow:
114
- 0 0 0 1px var(--media-surface-outer-border-color),
115
- 0 1px 3px 0 var(--media-surface-shadow-color),
116
- 0 1px 2px -1px var(--media-surface-shadow-color);
117
- backdrop-filter: var(--media-surface-backdrop-filter);
114
+ 0 0 0 1px var(--surface-outer-border-color),
115
+ 0 1px 3px 0 var(--surface-shadow-color),
116
+ 0 1px 2px -1px var(--surface-shadow-color);
117
+ backdrop-filter: var(--surface-backdrop-filter);
118
118
 
119
119
  /* Inner border ring */
120
120
  &::after {
@@ -125,15 +125,11 @@
125
125
  content: "";
126
126
  border-radius: inherit;
127
127
  box-shadow:
128
- inset 0 1px 0 0 var(--media-surface-inner-border-color),
129
- inset 0 0 0 1px oklch(from var(--media-surface-inner-border-color) l c h / calc(alpha * 0.5));
128
+ inset 0 1px 0 0 var(--surface-inner-border-color),
129
+ inset 0 0 0 1px oklch(from var(--surface-inner-border-color) l c h / calc(alpha * 0.5));
130
130
  }
131
131
  }
132
132
 
133
- /* ==========================================================================
134
- Media Element
135
- ========================================================================== */
136
-
137
133
  .media-default-skin ::slotted(video),
138
134
  .media-default-skin video {
139
135
  display: block;
@@ -143,7 +139,7 @@
143
139
  object-position: var(--media-object-position, center);
144
140
  }
145
141
  .media-default-skin ::slotted(video) {
146
- border-radius: var(--media-video-border-radius);
142
+ border-radius: var(--container-border-radius);
147
143
  }
148
144
  .media-default-skin video {
149
145
  border-radius: inherit;
@@ -154,10 +150,6 @@
154
150
  object-fit: contain;
155
151
  }
156
152
 
157
- /* ==========================================================================
158
- Overlay / Scrim
159
- ========================================================================== */
160
-
161
153
  .media-default-skin .media-overlay {
162
154
  position: absolute;
163
155
  inset: 0;
@@ -167,13 +159,13 @@
167
159
  opacity: 0;
168
160
  backdrop-filter: blur(0) saturate(1);
169
161
  transition-timing-function: ease-out;
170
- transition-duration: var(--media-controls-transition-duration);
162
+ transition-duration: var(--controls-transition-duration);
171
163
  transition-property: opacity, backdrop-filter;
172
164
  }
173
165
 
174
166
  .media-default-skin .media-error ~ .media-overlay {
175
- transition-delay: var(--media-error-dialog-transition-delay);
176
- transition-duration: var(--media-error-dialog-transition-duration);
167
+ transition-delay: var(--error-dialog-transition-delay);
168
+ transition-duration: var(--error-dialog-transition-duration);
177
169
  }
178
170
 
179
171
  .media-default-skin .media-controls[data-visible] ~ .media-overlay,
@@ -191,10 +183,6 @@
191
183
  backdrop-filter: blur(16px) saturate(1.5);
192
184
  }
193
185
 
194
- /* ==========================================================================
195
- Buffering Indicator
196
- ========================================================================== */
197
-
198
186
  .media-default-skin .media-buffering-indicator {
199
187
  position: absolute;
200
188
  inset: 0;
@@ -211,11 +199,11 @@
211
199
  &[data-visible] {
212
200
  display: grid;
213
201
  }
214
- }
215
202
 
216
- /* ==========================================================================
217
- Error Dialog
218
- ========================================================================== */
203
+ @media (prefers-reduced-motion: reduce) {
204
+ --media-spinner-animation: none;
205
+ }
206
+ }
219
207
 
220
208
  .media-default-skin .media-error {
221
209
  outline: none;
@@ -239,7 +227,7 @@
239
227
  display: flex;
240
228
  gap: calc(var(--spacing) * 2);
241
229
 
242
- & > * {
230
+ > * {
243
231
  flex: 1;
244
232
  }
245
233
  }
@@ -248,10 +236,6 @@
248
236
  visibility: hidden;
249
237
  }
250
238
 
251
- /* ==========================================================================
252
- Controls
253
- ========================================================================== */
254
-
255
239
  .media-default-skin .media-controls {
256
240
  --media-popover-side-offset: calc(var(--spacing) * (var(--base-side-offset, 2) + 1));
257
241
  --media-tooltip-side-offset: var(--media-popover-side-offset);
@@ -262,14 +246,10 @@
262
246
  align-items: center;
263
247
  padding: calc(var(--spacing) * 1);
264
248
  container: media-controls / inline-size;
265
- text-shadow: 0 1px 0 var(--media-current-shadow-color);
249
+ text-shadow: 0 1px 0 var(--shadow-current-color);
266
250
  border-radius: calc(Infinity * 1px);
267
251
  }
268
252
 
269
- /* ==========================================================================
270
- Time Display
271
- ========================================================================== */
272
-
273
253
  .media-default-skin .media-time-controls {
274
254
  display: flex;
275
255
  flex: 1;
@@ -277,8 +257,8 @@
277
257
  align-items: center;
278
258
  container: media-time-controls / inline-size;
279
259
 
280
- & .media-time:last-child {
281
- @container media-time-controls (width < 10rem) {
260
+ > .media-time:last-child {
261
+ @container media-time-controls (width < 16rem) {
282
262
  display: none;
283
263
  }
284
264
  }
@@ -298,15 +278,11 @@
298
278
  transition-property: outline-color, outline-offset;
299
279
 
300
280
  &:focus-visible {
301
- outline-color: currentColor;
281
+ outline-color: var(--focus-ring-color);
302
282
  outline-offset: 2px;
303
283
  }
304
284
  }
305
285
 
306
- /* ==========================================================================
307
- Buttons
308
- ========================================================================== */
309
-
310
286
  /* Base button */
311
287
  .media-default-skin .media-button {
312
288
  display: flex;
@@ -326,32 +302,31 @@
326
302
  border-radius: calc(Infinity * 1px);
327
303
  transition-timing-function: ease-out;
328
304
  transition-duration: 150ms;
329
- transition-property: background-color, outline-offset, scale;
305
+ transition-property: background-color, color, outline-offset, scale;
330
306
  /* Fix weird jumping when clicking on the buttons in Safari. */
331
307
  will-change: scale;
332
308
 
333
309
  &:focus-visible {
334
- outline-color: currentColor;
310
+ outline-color: var(--focus-ring-color);
335
311
  outline-offset: 2px;
336
312
  }
337
313
 
338
314
  &:active:not([aria-disabled="true"]) {
339
- scale: 0.98;
315
+ scale: 0.97;
340
316
  }
341
317
 
342
318
  &[aria-disabled="true"] {
343
319
  cursor: not-allowed;
344
320
  opacity: 0.5;
345
- filter: grayscale(1);
346
321
  }
347
322
  }
348
323
 
349
324
  /* Primary button variant */
350
325
  .media-default-skin .media-button--primary {
351
326
  font-weight: 500;
352
- color: oklch(0 0 0);
327
+ color: var(--accent-contrast-color);
353
328
  text-shadow: none;
354
- background: oklch(1 0 0);
329
+ background: var(--accent-color);
355
330
  }
356
331
 
357
332
  /* Subtle button variant */
@@ -360,11 +335,14 @@
360
335
  text-shadow: inherit;
361
336
  background: transparent;
362
337
 
363
- &:hover,
364
- &:focus-visible,
365
- &[aria-expanded="true"] {
366
- text-decoration: none;
367
- background-color: oklch(from currentColor l c h / 0.1);
338
+ &:not([aria-disabled="true"]) {
339
+ &:hover,
340
+ &:focus-visible,
341
+ &[aria-expanded="true"] {
342
+ color: var(--accent-text-color);
343
+ text-decoration: none;
344
+ background-color: var(--accent-background-color);
345
+ }
368
346
  }
369
347
  }
370
348
 
@@ -375,26 +353,25 @@
375
353
  padding: 0;
376
354
 
377
355
  &:active:not([aria-disabled="true"]) {
378
- scale: 0.9;
356
+ scale: 0.97;
379
357
  }
380
358
 
381
- & .media-icon__container {
359
+ .media-icon__container {
382
360
  display: grid;
383
361
  }
384
362
 
385
- & .media-icon {
363
+ .media-icon {
386
364
  grid-area: 1 / 1;
387
- transition-behavior: allow-discrete;
388
- transition-property: display, opacity;
389
- transition-duration: 150ms;
365
+ filter: drop-shadow(0 1px 0 var(--shadow-current-color));
390
366
  transition-timing-function: ease-out;
391
- filter: drop-shadow(0 1px 0 var(--media-current-shadow-color));
367
+ transition-duration: 150ms;
368
+ transition-property: opacity, scale;
392
369
  }
393
370
  }
394
371
 
395
372
  /* Seek button */
396
373
  .media-default-skin .media-button--seek {
397
- & .media-icon__label {
374
+ .media-icon__label {
398
375
  position: absolute;
399
376
  right: -1px;
400
377
  bottom: -3px;
@@ -427,7 +404,7 @@
427
404
 
428
405
  /* Settings button */
429
406
  .media-default-skin .media-button--settings {
430
- & .media-icon--settings {
407
+ .media-icon--settings {
431
408
  transition: transform 150ms ease-in-out;
432
409
 
433
410
  @media (prefers-reduced-motion: reduce) {
@@ -472,9 +449,13 @@
472
449
  }
473
450
  }
474
451
 
475
- /* ==========================================================================
476
- Button Groups
477
- ========================================================================== */
452
+ @media (prefers-reduced-motion: reduce) {
453
+ .media-default-skin .media-button {
454
+ scale: 1;
455
+ transition-property: background-color, color, outline-offset;
456
+ will-change: auto;
457
+ }
458
+ }
478
459
 
479
460
  .media-default-skin .media-button-group {
480
461
  display: flex;
@@ -482,10 +463,6 @@
482
463
  align-items: center;
483
464
  }
484
465
 
485
- /* ==========================================================================
486
- Badge
487
- ========================================================================== */
488
-
489
466
  .media-default-skin .media-badge {
490
467
  padding: calc(var(--spacing) * 0.5) calc(var(--spacing) * 1.5);
491
468
  font-size: var(--font-size-small);
@@ -497,10 +474,6 @@
497
474
  border-radius: calc(Infinity * 1px);
498
475
  }
499
476
 
500
- /* ==========================================================================
501
- Icons
502
- ========================================================================== */
503
-
504
477
  .media-default-skin .media-icon__container {
505
478
  position: relative;
506
479
  }
@@ -514,10 +487,6 @@
514
487
  scale: -1 1;
515
488
  }
516
489
 
517
- /* ==========================================================================
518
- Poster Image
519
- ========================================================================== */
520
-
521
490
  .media-default-skin media-poster,
522
491
  .media-default-skin > img {
523
492
  position: absolute;
@@ -540,7 +509,7 @@
540
509
  height: 100%;
541
510
  object-fit: var(--media-object-fit, contain);
542
511
  object-position: var(--media-object-position, center);
543
- border-radius: var(--media-video-border-radius);
512
+ border-radius: var(--container-border-radius);
544
513
  }
545
514
  .media-default-skin > img {
546
515
  object-fit: var(--media-object-fit, contain);
@@ -578,18 +547,17 @@
578
547
  object-fit: contain;
579
548
  }
580
549
 
581
- /* ==========================================================================
582
- Media thumbnail
583
- ========================================================================== */
584
-
585
550
  .media-default-skin .media-thumbnail {
551
+ position: relative;
586
552
  pointer-events: none;
587
553
  background-color: oklch(0 0 0 / 0.9);
588
554
  border-radius: calc(var(--spacing) * 3);
589
555
 
590
- & .media-thumbnail__image {
556
+ .media-thumbnail__image {
591
557
  position: relative;
592
558
  display: block;
559
+ max-width: var(--thumbnail-max-width);
560
+ max-height: var(--max-height);
593
561
  overflow: clip;
594
562
  border-radius: inherit;
595
563
 
@@ -602,14 +570,7 @@
602
570
  }
603
571
  }
604
572
 
605
- & .media-thumbnail__time {
606
- position: absolute;
607
- inset-inline: 0;
608
- bottom: calc(var(--spacing) * 2);
609
- text-align: center;
610
- }
611
-
612
- & .media-thumbnail__spinner {
573
+ .media-thumbnail__spinner {
613
574
  position: absolute;
614
575
  top: 50%;
615
576
  left: 50%;
@@ -617,32 +578,41 @@
617
578
  translate: -50% -50%;
618
579
  }
619
580
 
620
- & .media-thumbnail__image,
621
- & .media-thumbnail__spinner {
581
+ .media-thumbnail__image,
582
+ .media-thumbnail__spinner {
622
583
  transition: opacity 150ms ease-out;
623
584
  }
624
585
 
625
586
  &:not(:has(.media-thumbnail__image[data-loading])) {
626
- & .media-thumbnail__spinner {
587
+ .media-thumbnail__spinner {
627
588
  --media-spinner-animation: none;
628
589
  }
629
590
  }
630
591
 
592
+ @media (prefers-reduced-motion: reduce) {
593
+ --media-spinner-animation: none;
594
+ }
595
+
631
596
  &:has(.media-thumbnail__image[data-loading]) {
632
- & .media-thumbnail__image {
597
+ width: var(--thumbnail-max-width);
598
+ max-width: 100%;
599
+ aspect-ratio: 16 / 9;
600
+ overflow: hidden;
601
+
602
+ .media-thumbnail__image {
633
603
  opacity: 0;
634
604
  }
635
- & .media-thumbnail__spinner {
605
+ .media-thumbnail__spinner {
636
606
  opacity: 1;
637
607
  }
638
608
  }
639
609
  }
640
610
 
641
- /* ==========================================================================
642
- Slider
643
- ========================================================================== */
644
-
645
611
  .media-default-skin .media-slider {
612
+ --thumb-size: calc(var(--spacing) * 2.5);
613
+ --thumb-active-size: calc(var(--spacing) * 3);
614
+ --track-border-radius: calc(Infinity * 1px);
615
+
646
616
  position: relative;
647
617
  display: flex;
648
618
  flex: 1;
@@ -650,7 +620,6 @@
650
620
  justify-content: center;
651
621
  cursor: pointer;
652
622
  outline: none;
653
- border-radius: calc(infinity * 1px);
654
623
 
655
624
  &[data-orientation="horizontal"] {
656
625
  width: var(--slider-width, 100%);
@@ -663,11 +632,12 @@
663
632
  }
664
633
 
665
634
  /* Track */
666
- & .media-slider__track {
635
+ .media-slider__track {
667
636
  position: relative;
668
637
  overflow: hidden;
669
638
  user-select: none;
670
- border-radius: inherit;
639
+ background-color: oklch(from currentColor l c h / 0.2);
640
+ border-radius: var(--track-border-radius);
671
641
  isolation: isolate;
672
642
 
673
643
  &[data-orientation="horizontal"] {
@@ -680,19 +650,192 @@
680
650
  }
681
651
  }
682
652
 
653
+ /* Shared track fills */
654
+ .media-slider__buffer,
655
+ .media-slider__fill {
656
+ position: absolute;
657
+ pointer-events: none;
658
+ border-radius: inherit;
659
+
660
+ &[data-orientation="horizontal"] {
661
+ inset-block: 0;
662
+ left: 0;
663
+ width: 100%;
664
+ transition-property: clip-path;
665
+ }
666
+ &[data-orientation="vertical"] {
667
+ inset-inline: 0;
668
+ bottom: 0;
669
+ height: 100%;
670
+ transition-property: clip-path;
671
+ }
672
+ }
673
+
674
+ /* Buffer */
675
+ .media-slider__buffer {
676
+ background-color: oklch(from currentColor l c h / 0.2);
677
+
678
+ &[data-orientation="horizontal"] {
679
+ clip-path: inset(0 calc(100% - var(--media-slider-buffer)) 0 0 round var(--track-border-radius));
680
+ }
681
+ &[data-orientation="vertical"] {
682
+ clip-path: inset(calc(100% - var(--media-slider-buffer)) 0 0 0 round var(--track-border-radius));
683
+ }
684
+ }
685
+
686
+ /* Fill */
687
+ .media-slider__fill {
688
+ background-color: var(--accent-color);
689
+
690
+ &[data-orientation="horizontal"] {
691
+ clip-path: inset(0 calc(100% - var(--media-slider-fill)) 0 0 round var(--track-border-radius));
692
+ }
693
+ &[data-orientation="vertical"] {
694
+ clip-path: inset(calc(100% - var(--media-slider-fill)) 0 0 0 round var(--track-border-radius));
695
+ }
696
+ }
697
+
698
+ /* Chapters */
699
+ .media-slider__chapters {
700
+ position: relative;
701
+ display: flex;
702
+ flex: 1;
703
+ align-items: center;
704
+ min-width: 0;
705
+ min-height: 0;
706
+ border-radius: inherit;
707
+
708
+ &[data-orientation="horizontal"] {
709
+ width: 100%;
710
+ height: 100%;
711
+ }
712
+ &[data-orientation="vertical"] {
713
+ flex-direction: column-reverse;
714
+ width: 100%;
715
+ height: 100%;
716
+ }
717
+ }
718
+
719
+ .media-slider__chapter {
720
+ --chapter-gap: calc(var(--spacing) * 1);
721
+ --chapter-inset-start: 0.5;
722
+ --chapter-inset-end: 0.5;
723
+
724
+ position: absolute;
725
+ inset: 0;
726
+ display: flex;
727
+ align-items: center;
728
+ justify-content: center;
729
+ min-width: 0;
730
+ min-height: 0;
731
+ border-radius: inherit;
732
+
733
+ &:first-child {
734
+ --chapter-inset-start: 0;
735
+ }
736
+ &:last-child {
737
+ --chapter-inset-end: 0;
738
+ }
739
+
740
+ .media-slider__chapter-track {
741
+ --chapter-track-size: calc(var(--spacing) * 1);
742
+ --chapter-track-highlighted-size: calc(var(--spacing) * 1.75);
743
+
744
+ border-radius: inherit;
745
+
746
+ @media (prefers-reduced-motion: no-preference) {
747
+ transition: 200ms ease-out;
748
+ transition-property: height, width;
749
+ }
750
+ }
751
+
752
+ &[data-orientation="horizontal"] {
753
+ clip-path: inset(0 calc(100% - var(--media-slider-chapter-end)) 0 var(--media-slider-chapter-start));
754
+
755
+ .media-slider__chapter-track {
756
+ height: var(--chapter-track-size);
757
+ clip-path: inset(
758
+ 0 calc(100% - var(--media-slider-chapter-end) + var(--chapter-gap) * var(--chapter-inset-end)) 0
759
+ calc(var(--media-slider-chapter-start) + var(--chapter-gap) * var(--chapter-inset-start)) round
760
+ var(--track-border-radius)
761
+ );
762
+ }
763
+
764
+ &[data-highlighted] .media-slider__chapter-track {
765
+ height: var(--chapter-track-highlighted-size);
766
+ }
767
+ }
768
+
769
+ &[data-orientation="vertical"] {
770
+ clip-path: inset(calc(100% - var(--media-slider-chapter-end)) 0 var(--media-slider-chapter-start) 0);
771
+
772
+ .media-slider__chapter-track {
773
+ width: var(--chapter-track-size);
774
+ clip-path: inset(
775
+ calc(100% - var(--media-slider-chapter-end) + var(--chapter-gap) * var(--chapter-inset-end)) 0
776
+ calc(var(--media-slider-chapter-start) + var(--chapter-gap) * var(--chapter-inset-start)) 0 round
777
+ var(--track-border-radius)
778
+ );
779
+ }
780
+
781
+ &[data-highlighted] .media-slider__chapter-track {
782
+ width: var(--chapter-track-highlighted-size);
783
+ }
784
+ }
785
+ }
786
+
787
+ /* Dragging — thumb and fill follow the pointer position */
788
+ &[data-dragging] {
789
+ .media-slider__thumb[data-orientation="horizontal"] {
790
+ left: var(--media-slider-pointer);
791
+ }
792
+ .media-slider__thumb[data-orientation="vertical"] {
793
+ top: calc(100% - var(--media-slider-pointer));
794
+ }
795
+ .media-slider__fill[data-orientation="horizontal"] {
796
+ clip-path: inset(0 calc(100% - var(--media-slider-pointer)) 0 0 round var(--track-border-radius));
797
+ }
798
+ .media-slider__fill[data-orientation="vertical"] {
799
+ clip-path: inset(calc(100% - var(--media-slider-pointer)) 0 0 0 round var(--track-border-radius));
800
+ }
801
+ }
802
+
803
+ @media (prefers-reduced-motion: no-preference) {
804
+ .media-slider__thumb {
805
+ transition-property: opacity, height, width, outline-offset, left, top;
806
+ }
807
+ .media-slider__fill {
808
+ transition-timing-function: linear;
809
+ transition-duration: 200ms;
810
+ }
811
+ .media-slider__buffer {
812
+ transition-timing-function: ease-out;
813
+ transition-duration: 250ms;
814
+ }
815
+ }
816
+
817
+ &[data-dragging],
818
+ &[data-seeking] {
819
+ .media-slider__thumb,
820
+ .media-slider__fill,
821
+ .media-slider__buffer {
822
+ transition-duration: 0ms;
823
+ }
824
+ }
825
+
683
826
  /* Thumb */
684
- & .media-slider__thumb {
827
+ .media-slider__thumb {
685
828
  position: absolute;
686
829
  z-index: 10;
687
- width: calc(var(--spacing) * 2.5);
688
- height: calc(var(--spacing) * 2.5);
830
+ width: var(--thumb-size);
831
+ height: var(--thumb-size);
689
832
  user-select: none;
690
833
  outline: 4px solid transparent;
691
834
  outline-offset: -4px;
692
835
  background-color: currentColor;
693
836
  border-radius: calc(Infinity * 1px);
694
837
  box-shadow:
695
- 0 0 0 1px var(--media-current-shadow-color, oklch(0 0 0 / 0.1)),
838
+ 0 0 0 1px var(--shadow-current-color, oklch(0 0 0 / 0.1)),
696
839
  0 1px 3px 0 oklch(0 0 0 / 0.35),
697
840
  0 1px 2px -1px oklch(0 0 0 / 0.35);
698
841
  opacity: 0;
@@ -710,10 +853,17 @@
710
853
  left: 50%;
711
854
  }
712
855
 
713
- &:hover,
714
- &:focus {
856
+ &:focus-visible {
715
857
  outline-color: oklch(from currentColor l c h / 0.15);
716
858
  outline-offset: 0;
859
+ opacity: 1;
860
+ }
861
+
862
+ @media (hover: hover) and (pointer: fine) {
863
+ &:hover {
864
+ outline-color: oklch(from currentColor l c h / 0.15);
865
+ outline-offset: 0;
866
+ }
717
867
  }
718
868
 
719
869
  &::after {
@@ -731,148 +881,122 @@
731
881
  opacity: 0;
732
882
  scale: 0.5;
733
883
  }
884
+
885
+ &.media-slider__thumb--persistent {
886
+ width: var(--thumb-active-size);
887
+ height: var(--thumb-active-size);
888
+ opacity: 1;
889
+ }
734
890
  }
735
891
 
736
892
  &:active .media-slider__thumb,
737
- &:focus-within .media-slider__thumb,
738
- & .media-slider__thumb--persistent {
739
- width: calc(var(--spacing) * 3);
740
- height: calc(var(--spacing) * 3);
893
+ &:focus-within .media-slider__thumb {
894
+ width: var(--thumb-active-size);
895
+ height: var(--thumb-active-size);
741
896
  }
742
897
 
743
- &:hover .media-slider__thumb,
744
- & .media-slider__thumb:focus-visible,
745
- & .media-slider__thumb--persistent {
746
- opacity: 1;
898
+ @media (hover: hover) and (pointer: fine) {
899
+ &:hover .media-slider__thumb {
900
+ opacity: 1;
901
+ }
747
902
  }
748
903
 
749
904
  /* Preview */
750
- & .media-slider__preview {
751
- & .media-slider__value,
752
- &::before {
753
- opacity: 0;
754
- scale: 0.5;
755
- transition-timing-function: ease-out;
756
- transition-duration: 200ms;
757
- transition-property: opacity, scale;
758
- }
905
+ .media-slider__preview {
906
+ --max-width: min(calc(var(--spacing) * 48), 100cqi);
907
+ --max-height: calc(var(--spacing) * 32);
908
+
909
+ min-width: var(--max-width);
910
+ height: calc(var(--spacing) * 1);
759
911
 
760
- & .media-slider__value {
912
+ .media-slider__thumbnail,
913
+ .media-slider__value {
761
914
  position: absolute;
762
- bottom: calc(var(--spacing) * 9);
763
- text-shadow: 0 1px 0 var(--media-current-shadow-color);
915
+ left: 50%;
916
+ max-width: var(--max-width);
917
+ opacity: 0;
764
918
  filter: blur(8px);
919
+ transform-origin: bottom;
920
+ scale: 0.8;
765
921
  translate: -50% calc(var(--spacing) * 2);
766
- transition-property: filter, opacity, scale, translate;
922
+ transition-timing-function: ease-out;
923
+ transition-duration: 150ms;
924
+ }
925
+
926
+ .media-slider__thumbnail {
927
+ --thumbnail-max-width: var(--max-width);
928
+ bottom: calc(100% + (var(--spacing) * 9));
929
+ }
930
+
931
+ .media-slider__value {
932
+ bottom: calc(100% + (var(--spacing) * 10.5));
933
+ display: flex;
934
+ flex-direction: column;
935
+ align-items: center;
936
+ text-shadow: 0 1px 0 var(--shadow-current-color);
937
+ }
938
+
939
+ .media-slider__chapter-title {
940
+ min-width: 0;
941
+ max-width: var(--max-width);
942
+ padding-inline: calc(var(--spacing) * 3);
943
+ overflow: hidden;
944
+ text-overflow: ellipsis;
945
+ white-space: nowrap;
946
+
947
+ &:empty {
948
+ display: none;
949
+ }
767
950
  }
768
951
 
769
952
  &::before {
770
- display: block;
771
- min-width: calc(var(--spacing) * 1);
953
+ position: absolute;
954
+ top: 50%;
955
+ left: 50%;
956
+ z-index: 1;
957
+ width: calc(var(--spacing) * 1);
772
958
  height: calc(var(--spacing) * 1);
959
+ pointer-events: none;
773
960
  content: "";
774
961
  background-color: currentColor;
775
962
  border-radius: 100%;
776
963
  box-shadow:
777
- 0 0 0 1px var(--media-current-shadow-color, oklch(0 0 0 / 0.15)),
964
+ 0 0 0 1px var(--shadow-current-color, oklch(0 0 0 / 0.15)),
778
965
  0 1px 2px 0 oklch(0 0 0 / 0.35);
966
+ opacity: 0;
967
+ scale: 0.5;
968
+ translate: -50% -50%;
969
+ transition-timing-function: ease-out;
970
+ transition-duration: 200ms;
971
+ transition-property: opacity, scale;
779
972
  }
780
973
 
781
- &[data-pointing] .media-slider__value,
782
- &[data-pointing]:not([data-dragging])::before {
974
+ &[data-pointing]:not([data-dragging])::before,
975
+ &[data-pointing] :is(.media-slider__thumbnail, .media-slider__value),
976
+ &[data-interactive]:not([data-pointing]):not([data-dragging]) :is(.media-slider__value, .media-slider__thumbnail) {
783
977
  opacity: 1;
784
- scale: 1;
785
- }
786
- &[data-pointing] .media-slider__value {
787
978
  filter: blur(0);
788
- translate: -50% 0;
789
- }
790
- }
791
-
792
- /* Shared track fills */
793
- & .media-slider__buffer,
794
- & .media-slider__fill {
795
- position: absolute;
796
- pointer-events: none;
797
- border-radius: inherit;
798
-
799
- &[data-orientation="horizontal"],
800
- &[data-orientation="horizontal"] {
801
- inset-block: 0;
802
- left: 0;
803
- }
804
- &[data-orientation="vertical"],
805
- &[data-orientation="vertical"] {
806
- inset-inline: 0;
807
- bottom: 0;
808
- }
809
- }
810
-
811
- /* Buffer */
812
- & .media-slider__buffer {
813
- background-color: oklch(from currentColor l c h / 0.2);
814
- transition-timing-function: ease-out;
815
- transition-duration: 0.25s;
816
-
817
- &[data-orientation="horizontal"] {
818
- width: var(--media-slider-buffer);
819
- transition-property: width;
820
- }
821
- &[data-orientation="vertical"] {
822
- height: var(--media-slider-buffer);
823
- transition-property: height;
824
- }
825
- }
826
-
827
- /* Fill */
828
- & .media-slider__fill {
829
- background-color: currentColor;
830
-
831
- &[data-orientation="horizontal"] {
832
- width: var(--media-slider-fill);
833
- }
834
- &[data-orientation="vertical"] {
835
- height: var(--media-slider-fill);
836
- }
837
- }
838
-
839
- /* Dragging — thumb and fill follow the pointer position */
840
- &[data-dragging] {
841
- & .media-slider__thumb[data-orientation="horizontal"] {
842
- left: var(--media-slider-pointer);
843
- }
844
- & .media-slider__thumb[data-orientation="vertical"] {
845
- top: calc(100% - var(--media-slider-pointer));
846
- }
847
- & .media-slider__fill[data-orientation="horizontal"] {
848
- width: var(--media-slider-pointer);
849
- }
850
- & .media-slider__fill[data-orientation="vertical"] {
851
- height: var(--media-slider-pointer);
979
+ scale: 1;
852
980
  }
853
981
  }
854
982
  }
855
983
 
856
- /* ==========================================================================
857
- Popups & Tooltips
858
- ========================================================================== */
859
-
860
984
  .media-default-skin {
861
- --media-popup-transition:
862
- opacity var(--media-popup-transition-timing-function) var(--media-popup-transition-duration),
863
- filter var(--media-popup-transition-timing-function) var(--media-popup-transition-duration),
864
- transform var(--media-popup-transition-timing-function) var(--media-popup-transition-duration),
865
- scale var(--media-popup-transition-timing-function) var(--media-popup-transition-duration);
985
+ --popup-transition:
986
+ opacity var(--popup-transition-timing-function) var(--popup-transition-duration),
987
+ filter var(--popup-transition-timing-function) var(--popup-transition-duration),
988
+ transform var(--popup-transition-timing-function) var(--popup-transition-duration),
989
+ scale var(--popup-transition-timing-function) var(--popup-transition-duration);
866
990
  }
867
991
 
868
992
  .media-default-skin .media-popover,
869
993
  .media-default-skin .media-tooltip {
870
- --popup-translate-distance: calc(0.5 * var(--base-size));
994
+ --popup-translate-distance: calc(0.5 * var(--scale-unit));
871
995
  margin: 0;
872
996
  overflow: visible;
873
997
  color: inherit;
874
998
  border: 0;
875
- transition: var(--media-popup-transition);
999
+ transition: var(--popup-transition);
876
1000
 
877
1001
  &[data-starting-style],
878
1002
  &[data-ending-style] {
@@ -886,7 +1010,7 @@
886
1010
  &[data-ending-style] {
887
1011
  transform: none;
888
1012
  /* Speed up the exit transition. */
889
- transition-duration: max(0ms, calc(var(--media-popup-transition-duration) - 50ms));
1013
+ transition-duration: max(0ms, calc(var(--popup-transition-duration) - 50ms));
890
1014
  }
891
1015
 
892
1016
  &[data-side="top"] {
@@ -952,7 +1076,7 @@
952
1076
  padding: calc(var(--spacing) * 3) 0;
953
1077
  border-radius: calc(Infinity * 1px);
954
1078
 
955
- &:has(media-volume-slider[data-availability="unsupported"]) {
1079
+ &:has(media-volume-slider[data-hidden]) {
956
1080
  display: none;
957
1081
  }
958
1082
  }
@@ -979,7 +1103,7 @@
979
1103
  width: var(--media-tooltip-side-offset);
980
1104
  }
981
1105
 
982
- & .media-tooltip__kbd {
1106
+ .media-tooltip__kbd {
983
1107
  min-width: 1.5em;
984
1108
  padding: 0.1em;
985
1109
  font-family: inherit;
@@ -992,11 +1116,6 @@
992
1116
  }
993
1117
  }
994
1118
 
995
- /* ==========================================================================
996
- Menus
997
- Note: Menus use `.media-popover` styles for positioning and transitions.
998
- ========================================================================== */
999
-
1000
1119
  .media-default-skin .media-menu {
1001
1120
  --menu-transition-duration: 250ms;
1002
1121
  --menu-max-height: calc(var(--spacing) * 56);
@@ -1016,70 +1135,38 @@
1016
1135
  --menu-transition-duration: 0ms;
1017
1136
  }
1018
1137
 
1019
- & .media-menu__panel {
1138
+ & > .media-menu__panel {
1020
1139
  position: absolute;
1021
- inset: 0;
1140
+ inset-inline: 0;
1141
+ top: 0;
1142
+ z-index: 10;
1143
+ max-height: inherit;
1022
1144
  padding: var(--menu-padding);
1023
1145
  overflow: auto;
1024
1146
  overscroll-behavior: none;
1025
1147
  outline: none;
1026
1148
  translate: 0 0;
1027
- transition-timing-function: ease-in-out;
1149
+ transition-timing-function: ease-out;
1028
1150
  transition-duration: var(--menu-transition-duration);
1029
1151
  transition-property: translate, filter;
1030
1152
  will-change: translate, filter;
1031
1153
 
1032
- &[data-starting-style],
1033
- &[data-ending-style] {
1154
+ &:where([data-starting-style], [data-ending-style]) {
1034
1155
  overflow: hidden;
1035
- }
1036
-
1037
- /* Root settings view — slides out when a submenu is active */
1038
- &[data-menu-root-view][data-menu-view-state="inactive"] {
1156
+ pointer-events: none;
1039
1157
  filter: blur(8px);
1040
- translate: -100% 0;
1041
-
1042
- /* Hide the indicator while transitioning */
1043
- & .media-menu__group::before {
1044
- display: none;
1045
- }
1046
- }
1047
-
1048
- /* Submenu panels — slide in/out alongside the root view */
1049
- &[data-submenu] {
1050
- z-index: 10;
1051
-
1052
- &:not([data-open], [data-ending-style]) {
1053
- translate: -100% 0;
1054
- transition-property: none;
1055
- }
1056
-
1057
- &[data-starting-style],
1058
- &[data-ending-style] {
1059
- pointer-events: none;
1060
- filter: blur(8px);
1061
- }
1062
-
1063
- &[data-starting-style][data-direction="forward"],
1064
- &[data-ending-style][data-direction="back"] {
1065
- translate: 100% 0;
1066
- }
1067
-
1068
- &[data-ending-style][data-direction="forward"],
1069
- &[data-starting-style][data-direction="back"] {
1070
- translate: -100% 0;
1071
- }
1158
+ translate: 100% 0;
1072
1159
  }
1073
1160
  }
1074
1161
 
1075
- & .media-menu__separator {
1162
+ .media-menu__separator {
1076
1163
  margin-block: calc(var(--spacing) * 1);
1077
1164
  border-bottom: 1px solid oklch(0 0 0 / 0.1);
1078
1165
  box-shadow: 0 1px 0 0 oklch(1 0 0 / 0.075);
1079
1166
  }
1080
1167
 
1081
- & .media-menu__group {
1082
- anchor-scope: --media-menu-item-highlight-anchor;
1168
+ .media-menu__group {
1169
+ anchor-scope: --menu-item-highlight-anchor;
1083
1170
  display: flex;
1084
1171
  flex-direction: column;
1085
1172
  gap: calc(var(--spacing) * 0.5);
@@ -1087,63 +1174,85 @@
1087
1174
  @supports (top: anchor(top)) {
1088
1175
  &::before {
1089
1176
  position: absolute;
1090
- position-anchor: --media-menu-item-highlight-anchor;
1177
+ position-anchor: --menu-item-highlight-anchor;
1091
1178
  inset: anchor(inside);
1179
+ /* Firefox treats the moving highlight as a content shift and re-scrolls
1180
+ the menu while hovering. Exclude it from scroll anchoring. */
1181
+ overflow-anchor: none;
1092
1182
  pointer-events: none;
1093
1183
  content: "";
1094
- background-color: oklch(from currentColor l c h / 0.1);
1184
+ background-color: var(--accent-background-color);
1095
1185
  border-radius: var(--menu-item-border-radius);
1096
- transition: inset ease-in-out 100ms;
1186
+ transition: inset 100ms ease-in-out;
1187
+ }
1188
+
1189
+ &:has([data-highlighted=""])::before {
1190
+ transition-duration: 0ms;
1097
1191
  }
1098
1192
  }
1099
1193
  }
1100
1194
 
1101
- & .media-menu__item,
1102
- & .media-menu__back {
1195
+ .media-menu__item,
1196
+ .media-menu__back {
1197
+ position: relative;
1103
1198
  display: flex;
1104
1199
  gap: calc(var(--spacing) * 1.5);
1105
1200
  align-items: center;
1106
1201
  padding: calc(var(--spacing) * 1.5) calc(var(--spacing) * 2);
1107
1202
  text-align: left;
1108
- text-shadow: 0 1px 0 var(--media-current-shadow-color);
1203
+ text-shadow: 0 1px 0 var(--shadow-current-color);
1109
1204
  cursor: pointer;
1110
1205
  user-select: none;
1111
1206
  outline: 2px solid transparent;
1112
1207
  outline-offset: -2px;
1113
1208
  border-radius: var(--menu-item-border-radius);
1114
1209
  transition: background-color, color;
1115
- transition-timing-function: ease-out;
1210
+ transition-timing-function: ease-in-out;
1116
1211
  transition-duration: 100ms;
1117
1212
 
1213
+ .media-icon {
1214
+ flex-shrink: 0;
1215
+ color: oklch(from currentColor l c h / 0.65);
1216
+ filter: drop-shadow(0 1px 0 var(--shadow-current-color));
1217
+ }
1218
+
1118
1219
  &:focus-visible {
1119
- outline-color: currentColor;
1220
+ outline-color: var(--focus-ring-color);
1120
1221
  outline-offset: 2px;
1121
1222
  }
1122
1223
 
1123
1224
  &:hover,
1124
1225
  &[data-highlighted] {
1125
- background-color: oklch(from currentColor l c h / 0.1);
1226
+ color: var(--accent-text-color);
1227
+ background-color: var(--accent-background-color);
1228
+
1229
+ .media-icon {
1230
+ color: inherit;
1231
+ }
1126
1232
  }
1127
1233
 
1128
- & .media-icon {
1129
- flex-shrink: 0;
1130
- color: oklch(from currentColor l c h / 0.65);
1131
- filter: drop-shadow(0 1px 0 var(--media-current-shadow-color));
1234
+ @supports (top: anchor(top)) {
1235
+ transition-duration: 50ms;
1236
+
1237
+ &:hover,
1238
+ &[data-highlighted] {
1239
+ transition-duration: 200ms;
1240
+ }
1132
1241
  }
1133
1242
  }
1134
1243
 
1135
- & .media-menu__indicator {
1244
+ .media-menu__indicator {
1136
1245
  flex-shrink: 0;
1137
1246
  margin-right: calc(var(--spacing) * -1);
1138
1247
  margin-left: auto;
1139
1248
  opacity: 0;
1140
1249
 
1141
- & .media-icon {
1142
- filter: drop-shadow(0 1px 0 var(--media-current-shadow-color));
1250
+ .media-icon {
1251
+ filter: drop-shadow(0 1px 0 var(--shadow-current-color));
1143
1252
  }
1144
1253
  }
1145
1254
 
1146
- & .media-menu__item {
1255
+ .media-menu__item {
1147
1256
  justify-content: space-between;
1148
1257
  font-variant-numeric: tabular-nums;
1149
1258
  color: inherit;
@@ -1163,16 +1272,15 @@
1163
1272
  display: none;
1164
1273
  }
1165
1274
 
1166
- &:hover,
1167
1275
  &[data-highlighted] {
1168
1276
  @supports (top: anchor(top)) {
1169
- anchor-name: --media-menu-item-highlight-anchor;
1277
+ anchor-name: --menu-item-highlight-anchor;
1170
1278
  background-color: transparent;
1171
1279
  }
1172
1280
  }
1173
1281
  }
1174
1282
 
1175
- & .media-menu__tier {
1283
+ .media-menu__tier {
1176
1284
  padding-top: 1px;
1177
1285
  padding-left: calc(var(--spacing) * 0.5);
1178
1286
  font-size: var(--font-size-tiny);
@@ -1181,12 +1289,12 @@
1181
1289
  color: oklch(from currentColor l c h / 0.7);
1182
1290
  }
1183
1291
 
1184
- & .media-menu__back {
1292
+ .media-menu__back {
1185
1293
  width: 100%;
1186
1294
  margin-bottom: calc(var(--spacing) * 0.5);
1187
1295
  }
1188
1296
 
1189
- & .media-menu__hint {
1297
+ .media-menu__hint {
1190
1298
  display: inline-flex;
1191
1299
  gap: calc(var(--spacing) * 1);
1192
1300
  align-items: center;
@@ -1196,14 +1304,14 @@
1196
1304
  color: oklch(from currentColor l c h / 0.65);
1197
1305
  }
1198
1306
 
1199
- & .media-menu__hint-label {
1307
+ .media-menu__hint-label {
1200
1308
  max-width: calc(var(--spacing) * 24);
1201
1309
  overflow: hidden;
1202
1310
  text-overflow: ellipsis;
1203
1311
  white-space: nowrap;
1204
1312
  }
1205
1313
 
1206
- & .media-menu__chevron {
1314
+ .media-menu__chevron {
1207
1315
  width: calc(var(--spacing) * 3.5);
1208
1316
  height: calc(var(--spacing) * 3.5);
1209
1317
  }
@@ -1214,37 +1322,46 @@
1214
1322
  min-width: calc(var(--spacing) * 48);
1215
1323
  height: var(--media-menu-height);
1216
1324
  overflow: hidden;
1217
- /* Add height and width transitions. */
1325
+ /* Only the menu size changes between panels. */
1218
1326
  transition:
1219
- var(--media-popup-transition),
1220
- height var(--media-popup-transition-timing-function) var(--menu-transition-duration),
1221
- width var(--media-popup-transition-timing-function) var(--menu-transition-duration);
1327
+ var(--popup-transition),
1328
+ width var(--popup-transition-timing-function) var(--menu-transition-duration),
1329
+ height var(--popup-transition-timing-function) var(--menu-transition-duration);
1330
+
1331
+ & > :not([data-submenu]) {
1332
+ translate: 0 0;
1333
+ transition:
1334
+ translate var(--menu-transition-duration) ease-out,
1335
+ filter var(--menu-transition-duration) ease-out;
1336
+ will-change: translate, filter;
1337
+ }
1338
+
1339
+ &[data-submenu-expanded="true"] > :not([data-submenu]) {
1340
+ filter: blur(8px);
1341
+ translate: -100% 0;
1342
+ }
1343
+
1344
+ /* WebKit can restart the covered-content transition while the
1345
+ anchor-positioned highlight remains active. */
1346
+ &[data-submenu-expanded] > :not([data-submenu])::before {
1347
+ display: none;
1348
+ }
1222
1349
 
1223
- /* Don't transition width and height on open/close. */
1350
+ /* Don't transition size on open/close. */
1224
1351
  &[data-starting-style],
1225
1352
  &[data-ending-style] {
1226
- transition: var(--media-popup-transition);
1353
+ transition: var(--popup-transition);
1227
1354
  }
1228
1355
  }
1229
1356
  }
1230
1357
 
1231
- /* ==========================================================================
1232
- Native Caption Track
1233
- ========================================================================== */
1234
-
1235
1358
  .media-default-skin {
1236
- --media-caption-track-duration: var(--media-controls-transition-duration);
1359
+ --media-caption-track-duration: var(--controls-transition-duration);
1237
1360
  --media-caption-track-delay: 25ms;
1238
1361
  --media-caption-track-y: calc(var(--spacing) * -2);
1239
1362
 
1240
1363
  &:has(.media-controls[data-visible]) {
1241
- --media-caption-track-y: calc(var(--spacing) * -22);
1242
- }
1243
-
1244
- @container media-root (width > 42rem) {
1245
- &:has(.media-controls[data-visible]) > * {
1246
- --media-caption-track-y: calc(var(--spacing) * -14);
1247
- }
1364
+ --media-caption-track-y: calc(var(--spacing) * -14);
1248
1365
  }
1249
1366
  }
1250
1367
 
@@ -1257,106 +1374,110 @@
1257
1374
  transition-delay: var(--media-caption-track-delay);
1258
1375
  }
1259
1376
 
1260
- /* ==========================================================================
1261
- Input Feedback
1262
- ========================================================================== */
1263
-
1264
- .media-default-skin .media-input-feedback {
1377
+ .media-default-skin .media-input-indicator-overlay {
1265
1378
  position: absolute;
1266
1379
  inset: 0;
1267
1380
  display: grid;
1268
1381
  grid-template-columns: 1fr 1fr 1fr;
1269
1382
  align-items: center;
1270
1383
  justify-items: center;
1271
- color: var(--media-color-primary, oklch(1 0 0));
1384
+ color: oklch(1 0 0);
1272
1385
  pointer-events: none;
1273
1386
  }
1274
1387
 
1275
- /* --- Feedback islands ------------------------------------------------------- */
1276
-
1277
- .media-default-skin .media-input-feedback-island {
1278
- --media-surface-background-color: oklch(0 0 0 / 0.25);
1279
- position: absolute;
1280
- top: calc(var(--spacing) * 3);
1281
- font-weight: 500;
1282
- color: inherit;
1283
- pointer-events: none;
1284
- border-radius: calc(Infinity * 1px);
1285
- transform-origin: top center;
1286
- transition-timing-function: ease-out;
1287
- transition-duration: 100ms;
1388
+ .media-default-skin {
1389
+ .media-volume-indicator,
1390
+ .media-status-indicator--state {
1391
+ --surface-background-color: oklch(0 0 0 / 0.25);
1392
+ position: absolute;
1393
+ top: calc(var(--spacing) * 3);
1394
+ font-weight: 500;
1395
+ color: inherit;
1396
+ pointer-events: none;
1397
+ border-radius: calc(Infinity * 1px);
1398
+ transform-origin: top center;
1399
+ transition-timing-function: ease-out;
1400
+ transition-duration: 100ms;
1288
1401
 
1289
- .media-input-feedback-island__content {
1290
- display: flex;
1291
- gap: calc(var(--spacing) * 2);
1292
- align-items: center;
1293
- justify-content: space-between;
1294
- width: 100%;
1295
- padding: calc(var(--spacing) * 1) calc(var(--spacing) * 2.5);
1402
+ .media-volume-indicator__content,
1403
+ .media-status-indicator__content {
1404
+ display: flex;
1405
+ gap: calc(var(--spacing) * 2);
1406
+ align-items: center;
1407
+ justify-content: space-between;
1408
+ width: 100%;
1409
+ padding: calc(var(--spacing) * 1) calc(var(--spacing) * 2.5);
1296
1410
 
1297
- /* Increase contrast of the content */
1298
- * {
1299
- mix-blend-mode: difference;
1411
+ * {
1412
+ mix-blend-mode: difference;
1413
+ }
1300
1414
  }
1301
- }
1302
1415
 
1303
- .media-icon {
1304
- display: none;
1305
- flex-shrink: 0;
1306
- }
1416
+ .media-icon {
1417
+ display: none;
1418
+ flex-shrink: 0;
1419
+ }
1307
1420
 
1308
- .media-input-feedback-island__value {
1309
- margin-left: auto;
1310
- }
1421
+ .media-volume-indicator__value,
1422
+ .media-status-indicator__value {
1423
+ margin-left: auto;
1424
+ }
1311
1425
 
1312
- @media (pointer: coarse) {
1313
- transition-property: scale, translate, opacity;
1314
- will-change: scale, translate, opacity;
1315
- }
1426
+ @media (pointer: coarse) {
1427
+ transition-property: scale, translate, opacity;
1428
+ will-change: scale, translate, opacity;
1429
+ }
1316
1430
 
1317
- @media (pointer: fine) and (prefers-reduced-motion: no-preference) {
1318
- transition-property: scale, translate, filter, opacity;
1319
- will-change: scale, translate, filter, opacity;
1320
- }
1431
+ @media (pointer: fine) and (prefers-reduced-motion: no-preference) {
1432
+ transition-property: scale, translate, filter, opacity;
1433
+ will-change: scale, translate, filter, opacity;
1434
+ }
1321
1435
 
1322
- @media (prefers-reduced-transparency: reduce) or (prefers-contrast: more) {
1323
- --media-surface-background-color: oklch(0 0 0);
1324
- }
1436
+ @media (prefers-reduced-transparency: reduce) or (prefers-contrast: more) {
1437
+ --surface-background-color: oklch(0 0 0);
1438
+ }
1325
1439
 
1326
- /* Default hidden state */
1327
- &[data-starting-style],
1328
- &[data-ending-style] {
1329
- opacity: 0;
1330
- transition-timing-function: ease-in;
1331
- transition-duration: 250ms;
1440
+ &[data-starting-style],
1441
+ &[data-ending-style] {
1442
+ opacity: 0;
1443
+ transition-timing-function: ease-in;
1444
+ transition-duration: 250ms;
1332
1445
 
1333
- @media (pointer: fine) and (prefers-reduced-motion: no-preference) {
1334
- filter: blur(8px);
1335
- scale: 0.9;
1446
+ @media (pointer: fine) and (prefers-reduced-motion: no-preference) {
1447
+ filter: blur(8px);
1448
+ scale: 0.9;
1449
+ }
1336
1450
  }
1337
1451
 
1338
- @media (prefers-reduced-motion: no-preference) {
1339
- &[data-ending-style] {
1452
+ &[data-ending-style] {
1453
+ @media (prefers-reduced-motion: no-preference) {
1340
1454
  translate: 0 -25%;
1341
1455
  }
1342
1456
  }
1343
1457
  }
1458
+
1459
+ .media-seek-indicator,
1460
+ .media-status-indicator--playback {
1461
+ display: grid;
1462
+ grid-row: 1;
1463
+ grid-column: 2;
1464
+ place-content: center;
1465
+ padding: calc(var(--spacing) * 4);
1466
+ text-align: center;
1467
+ }
1344
1468
  }
1345
1469
 
1346
- .media-default-skin .media-input-feedback-island--volume {
1470
+ .media-default-skin .media-volume-indicator {
1347
1471
  width: min(80%, calc(var(--spacing) * 48));
1472
+ transform: translateX(0);
1348
1473
 
1349
- .media-input-feedback-island__content {
1350
- --media-progress-fill: var(--media-volume-fill);
1351
- background-image: linear-gradient(
1352
- to right,
1353
- currentColor 0%,
1354
- currentColor var(--media-progress-fill),
1355
- transparent var(--media-progress-fill),
1356
- transparent 100%
1357
- );
1474
+ .media-volume-indicator__content {
1475
+ background-image: linear-gradient(currentColor, currentColor);
1476
+ background-repeat: no-repeat;
1477
+ background-position: left;
1478
+ background-size: var(--media-volume-fill, 0%) 100%;
1358
1479
  border-radius: inherit;
1359
- transition: --media-progress-fill 200ms linear;
1480
+ transition: background-size 200ms linear;
1360
1481
  }
1361
1482
 
1362
1483
  &[data-level="high"] .media-icon--volume-high,
@@ -1366,14 +1487,15 @@
1366
1487
  }
1367
1488
 
1368
1489
  @media (prefers-reduced-motion: no-preference) {
1369
- &[data-min],
1370
- &[data-max] {
1371
- animation: media-shake 300ms ease-in-out;
1490
+ &[data-min]:not([data-starting-style], [data-ending-style]),
1491
+ &[data-max]:not([data-starting-style], [data-ending-style]) {
1492
+ transform: translateX(0.25px);
1493
+ transition: transform 300ms linear(0, -24 20%, 16 40%, -8 60%, 4 80%, 1);
1372
1494
  }
1373
1495
  }
1374
1496
  }
1375
1497
 
1376
- .media-default-skin .media-input-feedback-island--status {
1498
+ .media-default-skin .media-status-indicator--state {
1377
1499
  &[data-status="captions-on"] .media-icon--captions-on,
1378
1500
  &[data-status="captions-off"] .media-icon--captions-off,
1379
1501
  &[data-status="fullscreen"] .media-icon--fullscreen-enter,
@@ -1384,49 +1506,72 @@
1384
1506
  }
1385
1507
  }
1386
1508
 
1387
- /* --- Bubble ---------------------------------------------------------------- */
1388
-
1389
- .media-default-skin .media-input-feedback-bubble {
1390
- display: grid;
1391
- grid-row: 1;
1392
- grid-column: 2;
1393
- place-content: center;
1394
- padding: calc(var(--spacing) * 4);
1395
- text-align: center;
1509
+ .media-default-skin .media-status-indicator--playback {
1510
+ background: oklch(0 0 0 / 0.35);
1511
+ border-radius: 100%;
1512
+ backdrop-filter: blur(8px);
1513
+ transition-timing-function: ease-out;
1514
+ transition-duration: 200ms;
1515
+ transition-property: opacity, scale;
1396
1516
 
1397
- /* Central bubble (play, pause) */
1398
- &:not([data-direction]) {
1399
- background: oklch(0 0 0 / 0.35);
1400
- border-radius: 100%;
1401
- backdrop-filter: blur(8px);
1517
+ .media-icon {
1518
+ grid-area: 1 / 1;
1519
+ width: calc(var(--media-icon-size) * 1.5);
1520
+ height: calc(var(--media-icon-size) * 1.5);
1521
+ opacity: 0;
1522
+ scale: 0;
1402
1523
  transition-timing-function: ease-out;
1403
- transition-duration: 200ms;
1524
+ transition-duration: 150ms;
1404
1525
  transition-property: opacity, scale;
1405
1526
 
1406
- &[data-starting-style],
1407
- &[data-ending-style] {
1408
- opacity: 0;
1409
- scale: 0.85;
1527
+ &.media-icon--play {
1528
+ translate: 1px 0;
1410
1529
  }
1530
+ }
1411
1531
 
1412
- &[data-ending-style] {
1413
- transition-timing-function: ease-in;
1414
- transition-duration: 100ms;
1532
+ &[data-status="pause"] .media-icon--pause,
1533
+ &[data-status="play"] .media-icon--play {
1534
+ opacity: 1;
1535
+ scale: 1;
1536
+ }
1537
+
1538
+ &[data-starting-style],
1539
+ &[data-ending-style] {
1540
+ opacity: 0;
1541
+ scale: 0.85;
1542
+ }
1543
+
1544
+ &[data-ending-style] {
1545
+ transition-timing-function: ease-in;
1546
+ transition-duration: 100ms;
1547
+ }
1548
+
1549
+ @media (prefers-reduced-motion: reduce) {
1550
+ transition-duration: 50ms;
1551
+ transition-property: opacity;
1552
+
1553
+ &[data-starting-style],
1554
+ &[data-ending-style],
1555
+ .media-icon {
1556
+ scale: 1;
1415
1557
  }
1416
1558
 
1417
- @media (prefers-reduced-motion: reduce) {
1559
+ .media-icon {
1418
1560
  transition-duration: 50ms;
1419
1561
  transition-property: opacity;
1420
1562
  }
1421
1563
  }
1564
+ }
1422
1565
 
1423
- /* Directional bubbles (seek) */
1424
- &[data-direction] {
1425
- gap: calc(var(--spacing) * 1);
1566
+ .media-default-skin .media-seek-indicator {
1567
+ gap: calc(var(--spacing) * 1);
1426
1568
 
1427
- @container media-root (width > 24rem) {
1428
- padding: calc(var(--spacing) * 6);
1429
- }
1569
+ .media-seek-indicator__value {
1570
+ font-variant-numeric: tabular-nums;
1571
+ }
1572
+
1573
+ @container media-root (width > 24rem) {
1574
+ padding: calc(var(--spacing) * 6);
1430
1575
  }
1431
1576
 
1432
1577
  &[data-direction="backward"] {
@@ -1439,21 +1584,10 @@
1439
1584
  justify-self: right;
1440
1585
  }
1441
1586
 
1442
- /* Icons */
1443
- .media-icon {
1444
- display: none;
1587
+ .media-icon--seek {
1588
+ display: block;
1445
1589
  width: calc(var(--media-icon-size) * 1.5);
1446
1590
  height: calc(var(--media-icon-size) * 1.5);
1447
-
1448
- &.media-icon--play {
1449
- translate: 1px 0;
1450
- }
1451
- }
1452
-
1453
- &[data-direction] .media-icon--seek,
1454
- &[data-status="pause"] .media-icon--pause,
1455
- &[data-status="play"] .media-icon--play {
1456
- display: block;
1457
1591
  }
1458
1592
 
1459
1593
  &[data-direction="backward"] .media-icon--seek {
@@ -1461,7 +1595,7 @@
1461
1595
  }
1462
1596
 
1463
1597
  @media (prefers-reduced-motion: no-preference) {
1464
- &[data-direction] .media-icon--seek {
1598
+ .media-icon--seek {
1465
1599
  transition-timing-function: ease-in-out;
1466
1600
  transition-duration: 200ms;
1467
1601
  transition-property: translate, opacity;
@@ -1475,6 +1609,7 @@
1475
1609
  &[data-direction="forward"][data-starting-style] .media-icon--seek {
1476
1610
  translate: -60% 0;
1477
1611
  }
1612
+
1478
1613
  &[data-direction="backward"][data-starting-style] .media-icon--seek {
1479
1614
  translate: 60% 0;
1480
1615
  }
@@ -1484,32 +1619,24 @@
1484
1619
  /* ==========================================================================
1485
1620
  Icon State Visibility for Video Skins
1486
1621
 
1487
- Data-attribute-driven visibility rules for multi-state icon buttons.
1488
- Uses :is() with both element selectors (for HTML custom element wrappers)
1489
- and class selectors (for React rendered SVG elements).
1622
+ Data-attribute-driven visibility rules for multi-state icon buttons shared
1623
+ by the HTML and React skins.
1490
1624
  ========================================================================== */
1491
1625
 
1492
1626
  /* --- All icons hidden by default --- */
1493
1627
 
1494
- .media-button--play .media-icon--restart,
1495
- .media-button--play .media-icon--play,
1496
- .media-button--play .media-icon--pause,
1497
- .media-button--mute .media-icon--volume-off,
1498
- .media-button--mute .media-icon--volume-low,
1499
- .media-button--mute .media-icon--volume-high,
1500
- .media-button--fullscreen .media-icon--fullscreen-enter,
1501
- .media-button--fullscreen .media-icon--fullscreen-exit,
1502
- .media-button--pip .media-icon--pip-enter,
1503
- .media-button--pip .media-icon--pip-exit,
1504
- .media-button--cast .media-icon--cast-enter,
1505
- .media-button--cast .media-icon--cast-exit,
1506
- .media-button--airplay .media-icon--airplay-enter,
1507
- .media-button--airplay .media-icon--airplay-exit,
1508
- .media-button--captions .media-icon--captions-off,
1509
- .media-button--captions .media-icon--captions-on {
1510
- display: none;
1628
+ .media-button--play .media-icon,
1629
+ .media-button--mute .media-icon,
1630
+ .media-button--fullscreen .media-icon,
1631
+ .media-button--pip .media-icon,
1632
+ .media-button--cast .media-icon,
1633
+ .media-button--airplay .media-icon,
1634
+ .media-button--captions .media-icon {
1511
1635
  opacity: 0;
1512
1636
  }
1637
+ .media-button--play .media-icon {
1638
+ scale: 0;
1639
+ }
1513
1640
 
1514
1641
  /* --- Active icon per state --- */
1515
1642
 
@@ -1546,8 +1673,8 @@
1546
1673
  .media-button--captions:not([data-active]) .media-icon--captions-off,
1547
1674
  /* Captions: active → captions on */
1548
1675
  .media-button--captions[data-active] .media-icon--captions-on {
1549
- display: block;
1550
1676
  opacity: 1;
1677
+ scale: 1;
1551
1678
  }
1552
1679
 
1553
1680
  /* --- Pause keyframe animations on inactive icons --- */
@@ -1561,106 +1688,68 @@
1561
1688
  --media-icon--airplay__triangle-animation: none;
1562
1689
  }
1563
1690
 
1564
- /* -------------------------------------------------------------------------- */
1565
- /* Global @keyframes for all video skins (CSS & Tailwind) */
1566
- /* -------------------------------------------------------------------------- */
1567
-
1568
- @keyframes media-shake {
1569
- 0%,
1570
- 100% {
1571
- translate: 0 0;
1572
- }
1573
- 20% {
1574
- translate: -6px 0;
1575
- }
1576
- 40% {
1577
- translate: 4px 0;
1578
- }
1579
- 60% {
1580
- translate: -2px 0;
1581
- }
1582
- 80% {
1583
- translate: 1px 0;
1691
+ @media (prefers-reduced-motion: reduce) {
1692
+ .media-button--airplay {
1693
+ --media-icon--airplay__fill-animation: none;
1694
+ --media-icon--airplay__triangle-animation: none;
1584
1695
  }
1585
1696
  }
1586
1697
 
1587
- /* -------------------------------------------------------------------------- */
1588
- /* Global @properties for all video skins (CSS & Tailwind) */
1589
- /* -------------------------------------------------------------------------- */
1590
-
1591
- @property --media-progress-fill {
1592
- syntax: "<percentage>";
1593
- inherits: true;
1594
- initial-value: 0%;
1595
- }
1596
1698
 
1597
-
1598
- /* ==========================================================================
1599
- Root
1600
- ========================================================================== */
1699
+ /* Video-specific container styles */
1601
1700
 
1602
1701
  .media-default-skin--video {
1603
- --media-spring-timing-function: linear(
1604
- 0,
1605
- 0.034 1.5%,
1606
- 0.763 9.7%,
1607
- 1.066 13.9%,
1608
- 1.198 19.9%,
1609
- 1.184 21.8%,
1610
- 0.963 37.5%,
1611
- 0.997 50.9%,
1612
- 1
1613
- );
1614
- --media-border-color: oklch(0 0 0 / 0.1);
1615
- --media-surface-background-color: oklch(1 0 0 / 0.1);
1616
- --media-surface-inner-border-color: oklch(1 0 0 / 0.1);
1617
- --media-surface-outer-border-color: oklch(0 0 0 / 0.1);
1618
- --media-surface-shadow-color: oklch(0 0 0 / 0.15);
1619
- --media-surface-backdrop-filter: blur(16px) saturate(1.5);
1702
+ --default-accent-color: oklch(1 0 0);
1703
+ --border-color: light-dark(oklch(0 0 0 / 0.1), oklch(1 0 0 / 0.15));
1704
+ --focus-ring-color: light-dark(oklch(0 0 0), oklch(1 0 0));
1705
+ --media-video-border-radius: var(--container-border-radius);
1620
1706
 
1621
- /* We have to create an alias so that the shadow DOM can inherit the custom property value */
1622
- --media-video-border-radius: var(--media-border-radius, 1.75rem);
1707
+ --surface-background-color: oklch(1 0 0 / 0.1);
1708
+ --surface-inner-border-color: oklch(1 0 0 / 0.1);
1709
+ --surface-outer-border-color: oklch(0 0 0 / 0.1);
1710
+ --surface-shadow-color: oklch(0 0 0 / 0.15);
1711
+ --surface-backdrop-filter: blur(16px) saturate(1.5);
1623
1712
 
1624
- --media-controls-transition-duration: 100ms;
1625
- --media-controls-transition-timing-function: ease-out;
1713
+ --controls-transition-duration: 100ms;
1714
+ --controls-transition-timing-function: ease-out;
1626
1715
 
1627
- --media-error-dialog-transition-duration: 350ms;
1628
- --media-error-dialog-transition-delay: 100ms;
1629
- --media-error-dialog-transition-timing-function: var(--media-spring-timing-function);
1716
+ --error-dialog-transition-duration: 350ms;
1717
+ --error-dialog-transition-delay: 100ms;
1718
+ --error-dialog-transition-timing-function: ease-out;
1630
1719
 
1631
- --media-popup-transition-duration: 100ms;
1632
- --media-popup-transition-timing-function: ease-out;
1720
+ --popup-transition-duration: 100ms;
1721
+ --popup-transition-timing-function: ease-out;
1633
1722
 
1634
1723
  overflow: clip;
1635
1724
  background: oklch(0 0 0);
1636
1725
 
1637
1726
  @media (prefers-reduced-motion: reduce) {
1638
- --media-error-dialog-transition-duration: 50ms;
1639
- --media-error-dialog-transition-delay: 0ms;
1640
- --media-error-dialog-transition-timing-function: ease-out;
1641
- --media-popup-transition-duration: 0ms;
1642
- }
1727
+ --error-dialog-transition-duration: 50ms;
1728
+ --error-dialog-transition-delay: 0ms;
1729
+ --popup-transition-duration: 0ms;
1643
1730
 
1644
- @media (prefers-color-scheme: dark) {
1645
- --media-border-color: oklch(1 0 0 / 0.15);
1731
+ .media-error__dialog {
1732
+ scale: 1;
1733
+ transition-property: opacity;
1734
+ }
1646
1735
  }
1647
1736
 
1648
1737
  @media (prefers-reduced-transparency: reduce) or (prefers-contrast: more) {
1649
- --media-surface-background-color: oklch(0 0 0);
1650
- --media-surface-inner-border-color: oklch(1 0 0 / 0.25);
1651
- --media-surface-outer-border-color: transparent;
1738
+ --surface-background-color: oklch(0 0 0);
1739
+ --surface-inner-border-color: oklch(1 0 0 / 0.25);
1740
+ --surface-outer-border-color: transparent;
1652
1741
  }
1653
1742
 
1654
1743
  &:has(.media-controls--root:not([data-visible])) {
1655
1744
  /* Slight delay to hide controls on non-touch devices after interaction */
1656
1745
  @media (pointer: fine) {
1657
- --media-controls-transition-duration: 300ms;
1746
+ --controls-transition-duration: 300ms;
1658
1747
  }
1659
1748
  @media (pointer: coarse) {
1660
- --media-controls-transition-duration: 150ms;
1749
+ --controls-transition-duration: 150ms;
1661
1750
  }
1662
1751
  @media (prefers-reduced-motion: reduce) {
1663
- --media-controls-transition-duration: 50ms;
1752
+ --controls-transition-duration: 50ms;
1664
1753
  }
1665
1754
  }
1666
1755
 
@@ -1672,11 +1761,11 @@
1672
1761
  pointer-events: none;
1673
1762
  content: "";
1674
1763
  border-radius: inherit;
1675
- box-shadow: inset 0 0 0 1px var(--media-border-color);
1764
+ box-shadow: inset 0 0 0 1px var(--border-color);
1676
1765
  }
1677
1766
 
1678
1767
  &:fullscreen {
1679
- --media-border-radius: 0;
1768
+ --container-border-radius: 0;
1680
1769
 
1681
1770
  &::after {
1682
1771
  display: none;
@@ -1694,9 +1783,7 @@
1694
1783
  }
1695
1784
  }
1696
1785
 
1697
- /* ==========================================================================
1698
- Error Dialog
1699
- ========================================================================== */
1786
+ /* Error Dialog */
1700
1787
 
1701
1788
  .media-default-skin--video .media-error {
1702
1789
  position: absolute;
@@ -1717,16 +1804,16 @@
1717
1804
  color: oklch(1 0 0);
1718
1805
  text-shadow: 0 1px 0 oklch(0 0 0 / 0.25);
1719
1806
  border-radius: calc(var(--spacing) * 7);
1720
- transition-delay: var(--media-error-dialog-transition-delay);
1721
- transition-timing-function: var(--media-error-dialog-transition-timing-function);
1722
- transition-duration: var(--media-error-dialog-transition-duration);
1807
+ transition-delay: var(--error-dialog-transition-delay);
1808
+ transition-timing-function: var(--error-dialog-transition-timing-function);
1809
+ transition-duration: var(--error-dialog-transition-duration);
1723
1810
  transition-property: opacity, scale;
1724
1811
  }
1725
1812
 
1726
1813
  .media-default-skin--video .media-error[data-starting-style] .media-error__dialog,
1727
1814
  .media-default-skin--video .media-error[data-ending-style] .media-error__dialog {
1728
1815
  opacity: 0;
1729
- scale: 0.5;
1816
+ scale: 0.95;
1730
1817
  }
1731
1818
  .media-default-skin--video .media-error[data-ending-style] .media-error__dialog {
1732
1819
  transition-delay: 0ms;
@@ -1744,9 +1831,7 @@
1744
1831
  font-size: var(--font-size-medium);
1745
1832
  }
1746
1833
 
1747
- /* ==========================================================================
1748
- Controls (hide/show behavior)
1749
- ========================================================================== */
1834
+ /* Controls (hide/show behavior) */
1750
1835
 
1751
1836
  .media-default-skin--video .media-controls--root {
1752
1837
  --inset-factor: 2;
@@ -1755,24 +1840,24 @@
1755
1840
 
1756
1841
  z-index: 10;
1757
1842
  display: contents;
1758
- color: var(--media-color-primary, oklch(1 0 0));
1759
- transition-timing-function: var(--media-controls-transition-timing-function);
1843
+ color: oklch(1 0 0);
1844
+ transition-timing-function: var(--controls-transition-timing-function);
1760
1845
  /* Speed up the entry transition */
1761
- transition-duration: calc(var(--media-controls-transition-duration) / 2);
1846
+ transition-duration: calc(var(--controls-transition-duration) / 2);
1762
1847
 
1763
- & .media-controls--primary,
1764
- & .media-controls--secondary {
1848
+ .media-controls--primary,
1849
+ .media-controls--secondary {
1765
1850
  position: absolute;
1766
1851
  z-index: 10;
1767
1852
  }
1768
1853
 
1769
- & .media-controls--primary {
1854
+ .media-controls--primary {
1770
1855
  inset-inline: var(--inset);
1771
1856
  bottom: var(--inset);
1772
1857
  transform-origin: bottom;
1773
1858
  }
1774
1859
 
1775
- & .media-controls--secondary {
1860
+ .media-controls--secondary {
1776
1861
  top: var(--inset);
1777
1862
  right: var(--inset);
1778
1863
  container-type: normal;
@@ -1780,8 +1865,8 @@
1780
1865
  }
1781
1866
 
1782
1867
  @container media-root (width < 32rem) {
1783
- & .media-controls--primary,
1784
- & .media-controls--secondary {
1868
+ .media-controls--primary,
1869
+ .media-controls--secondary {
1785
1870
  transition-timing-function: inherit;
1786
1871
  transition-duration: inherit;
1787
1872
 
@@ -1801,12 +1886,12 @@
1801
1886
  }
1802
1887
 
1803
1888
  &:not([data-visible]) {
1804
- & .media-controls--primary,
1805
- & .media-controls--secondary {
1889
+ .media-controls--primary,
1890
+ .media-controls--secondary {
1806
1891
  pointer-events: none;
1807
1892
  opacity: 0;
1808
1893
  scale: 0.95;
1809
- transition-duration: var(--media-controls-transition-duration);
1894
+ transition-duration: var(--controls-transition-duration);
1810
1895
 
1811
1896
  @media (pointer: fine) and (prefers-reduced-motion: no-preference) {
1812
1897
  filter: blur(8px);
@@ -1817,13 +1902,13 @@
1817
1902
  }
1818
1903
  }
1819
1904
 
1820
- & .media-controls--primary {
1905
+ .media-controls--primary {
1821
1906
  @media (prefers-reduced-motion: no-preference) {
1822
1907
  translate: 0 4px;
1823
1908
  }
1824
1909
  }
1825
1910
 
1826
- & .media-controls--secondary {
1911
+ .media-controls--secondary {
1827
1912
  @media (prefers-reduced-motion: no-preference) {
1828
1913
  translate: 0 -4px;
1829
1914
  }
@@ -1838,8 +1923,8 @@
1838
1923
  display: flex;
1839
1924
  transform-origin: bottom;
1840
1925
 
1841
- & .media-controls--primary,
1842
- & .media-controls--secondary {
1926
+ .media-controls--primary,
1927
+ .media-controls--secondary {
1843
1928
  display: contents;
1844
1929
 
1845
1930
  &::after {
@@ -1851,7 +1936,7 @@
1851
1936
  pointer-events: none;
1852
1937
  opacity: 0;
1853
1938
  scale: 0.95;
1854
- transition-duration: var(--media-controls-transition-duration);
1939
+ transition-duration: var(--controls-transition-duration);
1855
1940
 
1856
1941
  @media (pointer: fine) and (prefers-reduced-motion: no-preference) {
1857
1942
  filter: blur(8px);
@@ -1867,7 +1952,7 @@
1867
1952
  }
1868
1953
  }
1869
1954
 
1870
- & .media-time-controls {
1955
+ .media-time-controls {
1871
1956
  flex: 1;
1872
1957
  padding-inline: calc(var(--spacing) * 3);
1873
1958
  }
@@ -1896,56 +1981,9 @@
1896
1981
  cursor: none;
1897
1982
  }
1898
1983
 
1899
- /* ==========================================================================
1900
- Sliders
1901
- ========================================================================== */
1984
+ /* Sliders */
1902
1985
 
1903
1986
  .media-default-skin--video .media-slider__track {
1904
1987
  background-color: oklch(1 0 0 / 0.2);
1905
- box-shadow: 0 0 0 1px oklch(0 0 0 / 0.05);
1906
- }
1907
-
1908
- .media-default-skin--video .media-slider__thumbnail {
1909
- --max-width: calc(var(--spacing) * 44);
1910
- --max-height: calc(var(--spacing) * 32);
1911
- --padding: calc(var(--spacing) * -4.5);
1912
- /**
1913
- Inset is the difference between the container width and the slider (100%) width.
1914
- Divided by 2 as we render the time on both sides.
1915
- */
1916
- --inset: calc((100cqi - 100%) / 2);
1917
-
1918
- position: absolute;
1919
- bottom: calc(100% + calc(var(--spacing) * 4.8));
1920
- left: clamp(
1921
- calc(var(--max-width) / 2 + var(--padding) - var(--inset)),
1922
- var(--media-slider-pointer),
1923
- calc(100% - var(--max-width) / 2 - var(--padding) + var(--inset))
1924
- );
1925
- pointer-events: none;
1926
- opacity: 0;
1927
- filter: blur(8px);
1928
- transform-origin: bottom;
1929
- scale: 0.8;
1930
- translate: -50%;
1931
- transition-timing-function: ease-out;
1932
- transition-duration: 150ms;
1933
- transition-property: scale, opacity, filter;
1934
-
1935
- & .media-thumbnail__image {
1936
- max-width: var(--max-width);
1937
- max-height: var(--max-height);
1938
- }
1939
- }
1940
- .media-default-skin--video .media-slider[data-pointing] .media-slider__thumbnail:has([role="img"]:not([data-hidden])) {
1941
- opacity: 1;
1942
- filter: blur(0);
1943
- scale: 1;
1944
- }
1945
- .media-default-skin--video
1946
- .media-slider__thumbnail:has([role="img"]:not([data-hidden]))
1947
- + .media-slider__preview
1948
- .media-slider__value {
1949
- display: none;
1950
1988
  }
1951
1989