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