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

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