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

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