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

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 (865) hide show
  1. package/dist/default/__generated__/skins/default-video/styles/buttons.css +132 -18
  2. package/dist/default/__generated__/skins/default-video/styles/captions.css +22 -0
  3. package/dist/default/__generated__/skins/default-video/styles/container.css +121 -8
  4. package/dist/default/__generated__/skins/default-video/styles/controls.css +436 -21
  5. package/dist/default/__generated__/skins/default-video/styles/dialog.css +169 -0
  6. package/dist/default/__generated__/skins/default-video/styles/indicator.css +459 -0
  7. package/dist/default/__generated__/skins/default-video/styles/menus.css +254 -0
  8. package/dist/default/__generated__/skins/default-video/styles/overlays.css +26 -2
  9. package/dist/default/__generated__/skins/default-video/styles/popups.css +338 -12
  10. package/dist/default/__generated__/skins/default-video/styles/poster.css +4 -4
  11. package/dist/default/__generated__/skins/default-video/styles/sliders.css +355 -31
  12. package/dist/default/__generated__/skins/default-video/styles/styles.css +2455 -216
  13. package/dist/default/__generated__/skins/default-video/styles/theme.css +4 -19
  14. package/dist/default/__generated__/skins/default-video/styles/video.css +29 -0
  15. package/dist/default/__generated__/skins/minimal-video/styles/base.css +25 -0
  16. package/dist/default/__generated__/skins/minimal-video/styles/buttons.css +266 -0
  17. package/dist/default/__generated__/skins/minimal-video/styles/captions.css +22 -0
  18. package/dist/default/__generated__/skins/minimal-video/styles/container.css +158 -0
  19. package/dist/default/__generated__/skins/minimal-video/styles/controls.css +182 -0
  20. package/dist/default/__generated__/skins/minimal-video/styles/dialog.css +77 -0
  21. package/dist/default/__generated__/skins/minimal-video/styles/indicator.css +322 -0
  22. package/dist/default/__generated__/skins/minimal-video/styles/menus.css +254 -0
  23. package/dist/default/__generated__/skins/minimal-video/styles/overlays.css +35 -0
  24. package/dist/default/__generated__/skins/minimal-video/styles/popups.css +371 -0
  25. package/dist/default/__generated__/skins/minimal-video/styles/poster.css +47 -0
  26. package/dist/default/__generated__/skins/minimal-video/styles/sliders.css +436 -0
  27. package/dist/default/__generated__/skins/minimal-video/styles/styles.css +2246 -0
  28. package/dist/default/__generated__/skins/minimal-video/styles/theme.css +7 -0
  29. package/dist/default/__generated__/skins/minimal-video/styles/video.css +29 -0
  30. package/dist/default/i18n/context.js +0 -1
  31. package/dist/default/i18n/context.js.map +1 -1
  32. package/dist/default/i18n/create-i18n.js +0 -1
  33. package/dist/default/i18n/create-i18n.js.map +1 -1
  34. package/dist/default/i18n/index.js +2 -1
  35. package/dist/default/i18n/text.js +20 -0
  36. package/dist/default/i18n/text.js.map +1 -0
  37. package/dist/default/icons/dist/react/default/airplay-exit.js +3 -3
  38. package/dist/default/icons/dist/react/default/airplay-exit.js.map +1 -1
  39. package/dist/default/icons/dist/react/minimal/airplay-exit.js +3 -3
  40. package/dist/default/icons/dist/react/minimal/airplay-exit.js.map +1 -1
  41. package/dist/default/index.js +2 -1
  42. package/dist/default/media/audio.js +0 -1
  43. package/dist/default/media/audio.js.map +1 -1
  44. package/dist/default/media/hls-background-video/media.js +18 -3
  45. package/dist/default/media/hls-background-video/media.js.map +1 -1
  46. package/dist/default/media/video.js +0 -1
  47. package/dist/default/media/video.js.map +1 -1
  48. package/dist/default/player/container.js +0 -1
  49. package/dist/default/player/container.js.map +1 -1
  50. package/dist/default/player/context.js +0 -1
  51. package/dist/default/player/context.js.map +1 -1
  52. package/dist/default/player/create-player.js +0 -1
  53. package/dist/default/player/create-player.js.map +1 -1
  54. package/dist/default/player/popup-group-context.js +0 -1
  55. package/dist/default/player/popup-group-context.js.map +1 -1
  56. package/dist/default/presets/audio/minimal-skin.css +117 -118
  57. package/dist/default/presets/audio/minimal-skin.js +2 -1
  58. package/dist/default/presets/audio/minimal-skin.js.map +1 -1
  59. package/dist/default/presets/audio/minimal-skin.tailwind.js +2 -1
  60. package/dist/default/presets/audio/minimal-skin.tailwind.js.map +1 -1
  61. package/dist/default/presets/audio/skin.css +95 -99
  62. package/dist/default/presets/audio/skin.js +2 -1
  63. package/dist/default/presets/audio/skin.js.map +1 -1
  64. package/dist/default/presets/audio/skin.tailwind.js +2 -1
  65. package/dist/default/presets/audio/skin.tailwind.js.map +1 -1
  66. package/dist/default/presets/background/skin.js +1 -0
  67. package/dist/default/presets/background/skin.js.map +1 -1
  68. package/dist/default/presets/live-audio/minimal-skin.css +117 -118
  69. package/dist/default/presets/live-audio/minimal-skin.js +1 -0
  70. package/dist/default/presets/live-audio/minimal-skin.js.map +1 -1
  71. package/dist/default/presets/live-audio/minimal-skin.tailwind.js +1 -0
  72. package/dist/default/presets/live-audio/minimal-skin.tailwind.js.map +1 -1
  73. package/dist/default/presets/live-audio/skin.css +95 -99
  74. package/dist/default/presets/live-audio/skin.js +1 -0
  75. package/dist/default/presets/live-audio/skin.js.map +1 -1
  76. package/dist/default/presets/live-audio/skin.tailwind.js +1 -0
  77. package/dist/default/presets/live-audio/skin.tailwind.js.map +1 -1
  78. package/dist/default/presets/live-video/minimal-skin.css +158 -137
  79. package/dist/default/presets/live-video/minimal-skin.js +4 -8
  80. package/dist/default/presets/live-video/minimal-skin.js.map +1 -1
  81. package/dist/default/presets/live-video/minimal-skin.tailwind.js +6 -8
  82. package/dist/default/presets/live-video/minimal-skin.tailwind.js.map +1 -1
  83. package/dist/default/presets/live-video/skin.css +120 -106
  84. package/dist/default/presets/live-video/skin.js +4 -8
  85. package/dist/default/presets/live-video/skin.js.map +1 -1
  86. package/dist/default/presets/live-video/skin.tailwind.js +8 -10
  87. package/dist/default/presets/live-video/skin.tailwind.js.map +1 -1
  88. package/dist/default/presets/video/minimal-skin.css +158 -137
  89. package/dist/default/presets/video/minimal-skin.js +4 -8
  90. package/dist/default/presets/video/minimal-skin.js.map +1 -1
  91. package/dist/default/presets/video/minimal-skin.tailwind.js +6 -8
  92. package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
  93. package/dist/default/presets/video/skin.css +120 -106
  94. package/dist/default/presets/video/skin.js +4 -8
  95. package/dist/default/presets/video/skin.js.map +1 -1
  96. package/dist/default/presets/video/skin.tailwind.js +7 -9
  97. package/dist/default/presets/video/skin.tailwind.js.map +1 -1
  98. package/dist/default/skins/dist/default/default/tailwind/components/button.js +3 -1
  99. package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  100. package/dist/default/skins/dist/default/default/tailwind/components/poster.js +8 -1
  101. package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
  102. package/dist/default/skins/dist/default/default/tailwind/components/slider.js +13 -13
  103. package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  104. package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js +1 -1
  105. package/dist/default/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -1
  106. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +3 -3
  107. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  108. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +8 -1
  109. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
  110. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +13 -12
  111. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  112. package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js +1 -1
  113. package/dist/default/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -1
  114. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +7 -6
  115. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  116. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +4 -4
  117. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  118. package/dist/default/ui/airplay-button/airplay-button.js +0 -1
  119. package/dist/default/ui/airplay-button/airplay-button.js.map +1 -1
  120. package/dist/default/ui/alert-dialog/alert-dialog-close.js +0 -1
  121. package/dist/default/ui/alert-dialog/alert-dialog-close.js.map +1 -1
  122. package/dist/default/ui/alert-dialog/alert-dialog-description.js +0 -1
  123. package/dist/default/ui/alert-dialog/alert-dialog-description.js.map +1 -1
  124. package/dist/default/ui/alert-dialog/alert-dialog-popup.js +0 -1
  125. package/dist/default/ui/alert-dialog/alert-dialog-popup.js.map +1 -1
  126. package/dist/default/ui/alert-dialog/alert-dialog-root.js +0 -1
  127. package/dist/default/ui/alert-dialog/alert-dialog-root.js.map +1 -1
  128. package/dist/default/ui/alert-dialog/alert-dialog-title.js +0 -1
  129. package/dist/default/ui/alert-dialog/alert-dialog-title.js.map +1 -1
  130. package/dist/default/ui/alert-dialog/context.js +0 -1
  131. package/dist/default/ui/alert-dialog/context.js.map +1 -1
  132. package/dist/default/ui/audio-track/use-audio-track-options.js +0 -1
  133. package/dist/default/ui/audio-track/use-audio-track-options.js.map +1 -1
  134. package/dist/default/ui/audio-track-radio-group/audio-track-radio-group.js +0 -1
  135. package/dist/default/ui/audio-track-radio-group/audio-track-radio-group.js.map +1 -1
  136. package/dist/default/ui/buffering-indicator/buffering-indicator.js +0 -1
  137. package/dist/default/ui/buffering-indicator/buffering-indicator.js.map +1 -1
  138. package/dist/default/ui/captions-button/captions-button.js +0 -1
  139. package/dist/default/ui/captions-button/captions-button.js.map +1 -1
  140. package/dist/default/ui/captions-radio-group/captions-radio-group.js +0 -1
  141. package/dist/default/ui/captions-radio-group/captions-radio-group.js.map +1 -1
  142. package/dist/default/ui/captions-radio-group/use-captions-options.js +0 -1
  143. package/dist/default/ui/captions-radio-group/use-captions-options.js.map +1 -1
  144. package/dist/default/ui/cast-button/cast-button.js +0 -1
  145. package/dist/default/ui/cast-button/cast-button.js.map +1 -1
  146. package/dist/default/ui/controls/context.js +0 -1
  147. package/dist/default/ui/controls/context.js.map +1 -1
  148. package/dist/default/ui/controls/controls-group.js +0 -1
  149. package/dist/default/ui/controls/controls-group.js.map +1 -1
  150. package/dist/default/ui/controls/controls-root.js +0 -1
  151. package/dist/default/ui/controls/controls-root.js.map +1 -1
  152. package/dist/default/ui/create-context-part.js +0 -1
  153. package/dist/default/ui/create-context-part.js.map +1 -1
  154. package/dist/default/ui/create-media-button.js +0 -1
  155. package/dist/default/ui/create-media-button.js.map +1 -1
  156. package/dist/default/ui/error-dialog/context.js +0 -1
  157. package/dist/default/ui/error-dialog/context.js.map +1 -1
  158. package/dist/default/ui/error-dialog/error-dialog-close.js +0 -1
  159. package/dist/default/ui/error-dialog/error-dialog-close.js.map +1 -1
  160. package/dist/default/ui/error-dialog/error-dialog-description.js +0 -1
  161. package/dist/default/ui/error-dialog/error-dialog-description.js.map +1 -1
  162. package/dist/default/ui/error-dialog/error-dialog-root.js +0 -1
  163. package/dist/default/ui/error-dialog/error-dialog-root.js.map +1 -1
  164. package/dist/default/ui/error-dialog/error-dialog-title.js +0 -1
  165. package/dist/default/ui/error-dialog/error-dialog-title.js.map +1 -1
  166. package/dist/default/ui/fullscreen-button/fullscreen-button.js +0 -1
  167. package/dist/default/ui/fullscreen-button/fullscreen-button.js.map +1 -1
  168. package/dist/default/ui/gesture/gesture.js +0 -1
  169. package/dist/default/ui/gesture/gesture.js.map +1 -1
  170. package/dist/default/ui/gesture/use-doubletap-gesture.js +0 -1
  171. package/dist/default/ui/gesture/use-doubletap-gesture.js.map +1 -1
  172. package/dist/default/ui/gesture/use-tap-gesture.js +0 -1
  173. package/dist/default/ui/gesture/use-tap-gesture.js.map +1 -1
  174. package/dist/default/ui/hooks/create-radio-options-hook.js +0 -1
  175. package/dist/default/ui/hooks/create-radio-options-hook.js.map +1 -1
  176. package/dist/default/ui/hooks/use-button.js +0 -1
  177. package/dist/default/ui/hooks/use-button.js.map +1 -1
  178. package/dist/default/ui/hooks/use-positioned-state.js +0 -1
  179. package/dist/default/ui/hooks/use-positioned-state.js.map +1 -1
  180. package/dist/default/ui/hooks/use-slider.js +0 -1
  181. package/dist/default/ui/hooks/use-slider.js.map +1 -1
  182. package/dist/default/ui/hotkey/hotkey.js +0 -1
  183. package/dist/default/ui/hotkey/hotkey.js.map +1 -1
  184. package/dist/default/ui/hotkey/use-hotkey-shortcut.js +0 -1
  185. package/dist/default/ui/hotkey/use-hotkey-shortcut.js.map +1 -1
  186. package/dist/default/ui/hotkey/use-hotkey.js +0 -1
  187. package/dist/default/ui/hotkey/use-hotkey.js.map +1 -1
  188. package/dist/default/ui/input-indicator/use-indicator-visibility.js +0 -1
  189. package/dist/default/ui/input-indicator/use-indicator-visibility.js.map +1 -1
  190. package/dist/default/ui/input-indicator/use-input-action-subscription.js +0 -1
  191. package/dist/default/ui/input-indicator/use-input-action-subscription.js.map +1 -1
  192. package/dist/default/ui/input-indicator/use-input-indicator-root.js +0 -1
  193. package/dist/default/ui/input-indicator/use-input-indicator-root.js.map +1 -1
  194. package/dist/default/ui/input-indicator/use-rendered-indicator-state.js +0 -1
  195. package/dist/default/ui/input-indicator/use-rendered-indicator-state.js.map +1 -1
  196. package/dist/default/ui/live-button/live-button.js +0 -1
  197. package/dist/default/ui/live-button/live-button.js.map +1 -1
  198. package/dist/default/ui/menu/context.js +6 -2
  199. package/dist/default/ui/menu/context.js.map +1 -1
  200. package/dist/default/ui/menu/menu-checkbox-item.js +0 -1
  201. package/dist/default/ui/menu/menu-checkbox-item.js.map +1 -1
  202. package/dist/default/ui/menu/menu-content.js +0 -1
  203. package/dist/default/ui/menu/menu-content.js.map +1 -1
  204. package/dist/default/ui/menu/menu-group-label.js +0 -1
  205. package/dist/default/ui/menu/menu-group-label.js.map +1 -1
  206. package/dist/default/ui/menu/menu-group.js +0 -1
  207. package/dist/default/ui/menu/menu-group.js.map +1 -1
  208. package/dist/default/ui/menu/menu-item-indicator.js +3 -3
  209. package/dist/default/ui/menu/menu-item-indicator.js.map +1 -1
  210. package/dist/default/ui/menu/menu-item.js +0 -1
  211. package/dist/default/ui/menu/menu-item.js.map +1 -1
  212. package/dist/default/ui/menu/menu-radio-group.js +0 -1
  213. package/dist/default/ui/menu/menu-radio-group.js.map +1 -1
  214. package/dist/default/ui/menu/menu-radio-item.js +19 -16
  215. package/dist/default/ui/menu/menu-radio-item.js.map +1 -1
  216. package/dist/default/ui/menu/menu-root.js +5 -7
  217. package/dist/default/ui/menu/menu-root.js.map +1 -1
  218. package/dist/default/ui/menu/menu-separator.js +0 -1
  219. package/dist/default/ui/menu/menu-separator.js.map +1 -1
  220. package/dist/default/ui/menu/menu-trigger.js +26 -12
  221. package/dist/default/ui/menu/menu-trigger.js.map +1 -1
  222. package/dist/default/ui/menu/use-menu-group.js +0 -1
  223. package/dist/default/ui/menu/use-menu-group.js.map +1 -1
  224. package/dist/default/ui/mute-button/mute-button.js +0 -1
  225. package/dist/default/ui/mute-button/mute-button.js.map +1 -1
  226. package/dist/default/ui/pip-button/pip-button.js +0 -1
  227. package/dist/default/ui/pip-button/pip-button.js.map +1 -1
  228. package/dist/default/ui/play-button/play-button.js +0 -1
  229. package/dist/default/ui/play-button/play-button.js.map +1 -1
  230. package/dist/default/ui/playback-rate/use-playback-rate-options.js +0 -1
  231. package/dist/default/ui/playback-rate/use-playback-rate-options.js.map +1 -1
  232. package/dist/default/ui/playback-rate-button/playback-rate-button.js +0 -1
  233. package/dist/default/ui/playback-rate-button/playback-rate-button.js.map +1 -1
  234. package/dist/default/ui/playback-rate-radio-group/playback-rate-radio-group.js +0 -1
  235. package/dist/default/ui/playback-rate-radio-group/playback-rate-radio-group.js.map +1 -1
  236. package/dist/default/ui/popover/context.js +0 -1
  237. package/dist/default/ui/popover/context.js.map +1 -1
  238. package/dist/default/ui/popover/popover-arrow.js +0 -1
  239. package/dist/default/ui/popover/popover-arrow.js.map +1 -1
  240. package/dist/default/ui/popover/popover-popup.js +0 -1
  241. package/dist/default/ui/popover/popover-popup.js.map +1 -1
  242. package/dist/default/ui/popover/popover-root.js +0 -1
  243. package/dist/default/ui/popover/popover-root.js.map +1 -1
  244. package/dist/default/ui/popover/popover-trigger.js +0 -1
  245. package/dist/default/ui/popover/popover-trigger.js.map +1 -1
  246. package/dist/default/ui/popover/use-popup-position.js +0 -1
  247. package/dist/default/ui/popover/use-popup-position.js.map +1 -1
  248. package/dist/default/ui/poster/poster.js +64 -18
  249. package/dist/default/ui/poster/poster.js.map +1 -1
  250. package/dist/default/ui/quality/use-quality-options.js +0 -1
  251. package/dist/default/ui/quality/use-quality-options.js.map +1 -1
  252. package/dist/default/ui/quality-radio-group/quality-radio-group.js +0 -1
  253. package/dist/default/ui/quality-radio-group/quality-radio-group.js.map +1 -1
  254. package/dist/default/ui/seek-button/seek-button.js +0 -1
  255. package/dist/default/ui/seek-button/seek-button.js.map +1 -1
  256. package/dist/default/ui/seek-indicator/context.js +0 -1
  257. package/dist/default/ui/seek-indicator/context.js.map +1 -1
  258. package/dist/default/ui/seek-indicator/seek-indicator-root.js +0 -1
  259. package/dist/default/ui/seek-indicator/seek-indicator-root.js.map +1 -1
  260. package/dist/default/ui/seek-indicator/seek-indicator-value.js +0 -1
  261. package/dist/default/ui/seek-indicator/seek-indicator-value.js.map +1 -1
  262. package/dist/default/ui/slider/context.js +0 -1
  263. package/dist/default/ui/slider/context.js.map +1 -1
  264. package/dist/default/ui/slider/slider-buffer.js +0 -1
  265. package/dist/default/ui/slider/slider-buffer.js.map +1 -1
  266. package/dist/default/ui/slider/slider-fill.js +0 -1
  267. package/dist/default/ui/slider/slider-fill.js.map +1 -1
  268. package/dist/default/ui/slider/slider-preview.js +0 -1
  269. package/dist/default/ui/slider/slider-preview.js.map +1 -1
  270. package/dist/default/ui/slider/slider-root.js +0 -1
  271. package/dist/default/ui/slider/slider-root.js.map +1 -1
  272. package/dist/default/ui/slider/slider-thumb.js +0 -1
  273. package/dist/default/ui/slider/slider-thumb.js.map +1 -1
  274. package/dist/default/ui/slider/slider-thumbnail.js +0 -1
  275. package/dist/default/ui/slider/slider-thumbnail.js.map +1 -1
  276. package/dist/default/ui/slider/slider-track.js +0 -1
  277. package/dist/default/ui/slider/slider-track.js.map +1 -1
  278. package/dist/default/ui/slider/slider-value.js +0 -1
  279. package/dist/default/ui/slider/slider-value.js.map +1 -1
  280. package/dist/default/ui/status-announcer/status-announcer.js +0 -1
  281. package/dist/default/ui/status-announcer/status-announcer.js.map +1 -1
  282. package/dist/default/ui/status-indicator/context.js +0 -1
  283. package/dist/default/ui/status-indicator/context.js.map +1 -1
  284. package/dist/default/ui/status-indicator/status-indicator-root.js +0 -1
  285. package/dist/default/ui/status-indicator/status-indicator-root.js.map +1 -1
  286. package/dist/default/ui/status-indicator/status-indicator-value.js +0 -1
  287. package/dist/default/ui/status-indicator/status-indicator-value.js.map +1 -1
  288. package/dist/default/ui/thumbnail/thumbnail.js +0 -1
  289. package/dist/default/ui/thumbnail/thumbnail.js.map +1 -1
  290. package/dist/default/ui/time/time-group.js +0 -1
  291. package/dist/default/ui/time/time-group.js.map +1 -1
  292. package/dist/default/ui/time/time-separator.js +0 -1
  293. package/dist/default/ui/time/time-separator.js.map +1 -1
  294. package/dist/default/ui/time/time-value.js +0 -1
  295. package/dist/default/ui/time/time-value.js.map +1 -1
  296. package/dist/default/ui/time-slider/time-slider-chapters/slider-segments.js +0 -1
  297. package/dist/default/ui/time-slider/time-slider-chapters/slider-segments.js.map +1 -1
  298. package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js +0 -1
  299. package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js.map +1 -1
  300. package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapters.js +0 -1
  301. package/dist/default/ui/time-slider/time-slider-chapters/time-slider-chapters.js.map +1 -1
  302. package/dist/default/ui/time-slider/time-slider-root.js +0 -1
  303. package/dist/default/ui/time-slider/time-slider-root.js.map +1 -1
  304. package/dist/default/ui/tooltip/context.js +0 -1
  305. package/dist/default/ui/tooltip/context.js.map +1 -1
  306. package/dist/default/ui/tooltip/group-context.js +0 -1
  307. package/dist/default/ui/tooltip/group-context.js.map +1 -1
  308. package/dist/default/ui/tooltip/tooltip-arrow.js +0 -1
  309. package/dist/default/ui/tooltip/tooltip-arrow.js.map +1 -1
  310. package/dist/default/ui/tooltip/tooltip-label.js +0 -1
  311. package/dist/default/ui/tooltip/tooltip-label.js.map +1 -1
  312. package/dist/default/ui/tooltip/tooltip-popup.js +0 -1
  313. package/dist/default/ui/tooltip/tooltip-popup.js.map +1 -1
  314. package/dist/default/ui/tooltip/tooltip-provider.js +0 -1
  315. package/dist/default/ui/tooltip/tooltip-provider.js.map +1 -1
  316. package/dist/default/ui/tooltip/tooltip-root.js +0 -1
  317. package/dist/default/ui/tooltip/tooltip-root.js.map +1 -1
  318. package/dist/default/ui/tooltip/tooltip-shortcut.js +0 -1
  319. package/dist/default/ui/tooltip/tooltip-shortcut.js.map +1 -1
  320. package/dist/default/ui/tooltip/tooltip-trigger.js +0 -1
  321. package/dist/default/ui/tooltip/tooltip-trigger.js.map +1 -1
  322. package/dist/default/ui/volume-indicator/context.js +0 -1
  323. package/dist/default/ui/volume-indicator/context.js.map +1 -1
  324. package/dist/default/ui/volume-indicator/volume-indicator-fill.js +0 -1
  325. package/dist/default/ui/volume-indicator/volume-indicator-fill.js.map +1 -1
  326. package/dist/default/ui/volume-indicator/volume-indicator-root.js +0 -1
  327. package/dist/default/ui/volume-indicator/volume-indicator-root.js.map +1 -1
  328. package/dist/default/ui/volume-indicator/volume-indicator-value.js +0 -1
  329. package/dist/default/ui/volume-indicator/volume-indicator-value.js.map +1 -1
  330. package/dist/default/ui/volume-slider/volume-slider-root.js +0 -1
  331. package/dist/default/ui/volume-slider/volume-slider-root.js.map +1 -1
  332. package/dist/default/utils/merge-props.js +0 -1
  333. package/dist/default/utils/merge-props.js.map +1 -1
  334. package/dist/default/utils/use-attach-iframe.js +0 -1
  335. package/dist/default/utils/use-attach-iframe.js.map +1 -1
  336. package/dist/default/utils/use-attach-media.js +0 -1
  337. package/dist/default/utils/use-attach-media.js.map +1 -1
  338. package/dist/default/utils/use-composed-refs.js +0 -1
  339. package/dist/default/utils/use-composed-refs.js.map +1 -1
  340. package/dist/default/utils/use-destroy.js +0 -1
  341. package/dist/default/utils/use-destroy.js.map +1 -1
  342. package/dist/default/utils/use-force-render.js +0 -1
  343. package/dist/default/utils/use-force-render.js.map +1 -1
  344. package/dist/default/utils/use-latest-ref.js +0 -1
  345. package/dist/default/utils/use-latest-ref.js.map +1 -1
  346. package/dist/default/utils/use-media-component.js +0 -1
  347. package/dist/default/utils/use-media-component.js.map +1 -1
  348. package/dist/default/utils/use-media-instance.js +0 -1
  349. package/dist/default/utils/use-media-instance.js.map +1 -1
  350. package/dist/default/utils/use-render.js +2 -9
  351. package/dist/default/utils/use-render.js.map +1 -1
  352. package/dist/default/utils/use-safe-id.js +0 -1
  353. package/dist/default/utils/use-safe-id.js.map +1 -1
  354. package/dist/dev/__generated__/skins/default-video/styles/buttons.css +132 -18
  355. package/dist/dev/__generated__/skins/default-video/styles/captions.css +22 -0
  356. package/dist/dev/__generated__/skins/default-video/styles/container.css +121 -8
  357. package/dist/dev/__generated__/skins/default-video/styles/controls.css +436 -21
  358. package/dist/dev/__generated__/skins/default-video/styles/dialog.css +169 -0
  359. package/dist/dev/__generated__/skins/default-video/styles/indicator.css +459 -0
  360. package/dist/dev/__generated__/skins/default-video/styles/menus.css +254 -0
  361. package/dist/dev/__generated__/skins/default-video/styles/overlays.css +26 -2
  362. package/dist/dev/__generated__/skins/default-video/styles/popups.css +338 -12
  363. package/dist/dev/__generated__/skins/default-video/styles/poster.css +4 -4
  364. package/dist/dev/__generated__/skins/default-video/styles/sliders.css +355 -31
  365. package/dist/dev/__generated__/skins/default-video/styles/styles.css +2455 -216
  366. package/dist/dev/__generated__/skins/default-video/styles/theme.css +4 -19
  367. package/dist/dev/__generated__/skins/default-video/styles/video.css +29 -0
  368. package/dist/dev/__generated__/skins/minimal-video/styles/base.css +25 -0
  369. package/dist/dev/__generated__/skins/minimal-video/styles/buttons.css +266 -0
  370. package/dist/dev/__generated__/skins/minimal-video/styles/captions.css +22 -0
  371. package/dist/dev/__generated__/skins/minimal-video/styles/container.css +158 -0
  372. package/dist/dev/__generated__/skins/minimal-video/styles/controls.css +182 -0
  373. package/dist/dev/__generated__/skins/minimal-video/styles/dialog.css +77 -0
  374. package/dist/dev/__generated__/skins/minimal-video/styles/indicator.css +322 -0
  375. package/dist/dev/__generated__/skins/minimal-video/styles/menus.css +254 -0
  376. package/dist/dev/__generated__/skins/minimal-video/styles/overlays.css +35 -0
  377. package/dist/dev/__generated__/skins/minimal-video/styles/popups.css +371 -0
  378. package/dist/dev/__generated__/skins/minimal-video/styles/poster.css +47 -0
  379. package/dist/dev/__generated__/skins/minimal-video/styles/sliders.css +436 -0
  380. package/dist/dev/__generated__/skins/minimal-video/styles/styles.css +2246 -0
  381. package/dist/dev/__generated__/skins/minimal-video/styles/theme.css +7 -0
  382. package/dist/dev/__generated__/skins/minimal-video/styles/video.css +29 -0
  383. package/dist/dev/i18n/context.d.ts.map +1 -1
  384. package/dist/dev/i18n/context.js +0 -1
  385. package/dist/dev/i18n/context.js.map +1 -1
  386. package/dist/dev/i18n/create-i18n.d.ts.map +1 -1
  387. package/dist/dev/i18n/create-i18n.js +0 -1
  388. package/dist/dev/i18n/create-i18n.js.map +1 -1
  389. package/dist/dev/i18n/index.d.ts +2 -1
  390. package/dist/dev/i18n/index.js +2 -1
  391. package/dist/dev/i18n/text.d.ts +11 -0
  392. package/dist/dev/i18n/text.d.ts.map +1 -0
  393. package/dist/dev/i18n/text.js +20 -0
  394. package/dist/dev/i18n/text.js.map +1 -0
  395. package/dist/dev/icons/dist/react/default/airplay-exit.js +3 -3
  396. package/dist/dev/icons/dist/react/default/airplay-exit.js.map +1 -1
  397. package/dist/dev/icons/dist/react/minimal/airplay-exit.js +3 -3
  398. package/dist/dev/icons/dist/react/minimal/airplay-exit.js.map +1 -1
  399. package/dist/dev/icons/index.d.ts +6 -1
  400. package/dist/dev/icons/index.d.ts.map +1 -0
  401. package/dist/dev/icons/minimal/index.d.ts +6 -1
  402. package/dist/dev/icons/minimal/index.d.ts.map +1 -0
  403. package/dist/dev/index.d.ts +3 -2
  404. package/dist/dev/index.js +2 -1
  405. package/dist/dev/media/audio.d.ts.map +1 -1
  406. package/dist/dev/media/audio.js +0 -1
  407. package/dist/dev/media/audio.js.map +1 -1
  408. package/dist/dev/media/hls-background-video/media.d.ts +8 -0
  409. package/dist/dev/media/hls-background-video/media.d.ts.map +1 -1
  410. package/dist/dev/media/hls-background-video/media.js +18 -3
  411. package/dist/dev/media/hls-background-video/media.js.map +1 -1
  412. package/dist/dev/media/video.d.ts.map +1 -1
  413. package/dist/dev/media/video.js +0 -1
  414. package/dist/dev/media/video.js.map +1 -1
  415. package/dist/dev/player/container.d.ts.map +1 -1
  416. package/dist/dev/player/container.js +0 -1
  417. package/dist/dev/player/container.js.map +1 -1
  418. package/dist/dev/player/context.d.ts.map +1 -1
  419. package/dist/dev/player/context.js +0 -1
  420. package/dist/dev/player/context.js.map +1 -1
  421. package/dist/dev/player/create-player.d.ts.map +1 -1
  422. package/dist/dev/player/create-player.js +0 -1
  423. package/dist/dev/player/create-player.js.map +1 -1
  424. package/dist/dev/player/popup-group-context.js +0 -1
  425. package/dist/dev/player/popup-group-context.js.map +1 -1
  426. package/dist/dev/presets/audio/minimal-skin.css +117 -118
  427. package/dist/dev/presets/audio/minimal-skin.d.ts.map +1 -1
  428. package/dist/dev/presets/audio/minimal-skin.js +2 -1
  429. package/dist/dev/presets/audio/minimal-skin.js.map +1 -1
  430. package/dist/dev/presets/audio/minimal-skin.tailwind.d.ts.map +1 -1
  431. package/dist/dev/presets/audio/minimal-skin.tailwind.js +2 -1
  432. package/dist/dev/presets/audio/minimal-skin.tailwind.js.map +1 -1
  433. package/dist/dev/presets/audio/player.d.ts +2 -2
  434. package/dist/dev/presets/audio/skin.css +95 -99
  435. package/dist/dev/presets/audio/skin.d.ts.map +1 -1
  436. package/dist/dev/presets/audio/skin.js +2 -1
  437. package/dist/dev/presets/audio/skin.js.map +1 -1
  438. package/dist/dev/presets/audio/skin.tailwind.d.ts.map +1 -1
  439. package/dist/dev/presets/audio/skin.tailwind.js +2 -1
  440. package/dist/dev/presets/audio/skin.tailwind.js.map +1 -1
  441. package/dist/dev/presets/background/skin.d.ts.map +1 -1
  442. package/dist/dev/presets/background/skin.js +1 -0
  443. package/dist/dev/presets/background/skin.js.map +1 -1
  444. package/dist/dev/presets/live-audio/minimal-skin.css +117 -118
  445. package/dist/dev/presets/live-audio/minimal-skin.d.ts.map +1 -1
  446. package/dist/dev/presets/live-audio/minimal-skin.js +1 -0
  447. package/dist/dev/presets/live-audio/minimal-skin.js.map +1 -1
  448. package/dist/dev/presets/live-audio/minimal-skin.tailwind.d.ts.map +1 -1
  449. package/dist/dev/presets/live-audio/minimal-skin.tailwind.js +1 -0
  450. package/dist/dev/presets/live-audio/minimal-skin.tailwind.js.map +1 -1
  451. package/dist/dev/presets/live-audio/player.d.ts +2 -2
  452. package/dist/dev/presets/live-audio/skin.css +95 -99
  453. package/dist/dev/presets/live-audio/skin.d.ts.map +1 -1
  454. package/dist/dev/presets/live-audio/skin.js +1 -0
  455. package/dist/dev/presets/live-audio/skin.js.map +1 -1
  456. package/dist/dev/presets/live-audio/skin.tailwind.d.ts.map +1 -1
  457. package/dist/dev/presets/live-audio/skin.tailwind.js +1 -0
  458. package/dist/dev/presets/live-audio/skin.tailwind.js.map +1 -1
  459. package/dist/dev/presets/live-video/minimal-skin.css +158 -137
  460. package/dist/dev/presets/live-video/minimal-skin.js +4 -8
  461. package/dist/dev/presets/live-video/minimal-skin.js.map +1 -1
  462. package/dist/dev/presets/live-video/minimal-skin.tailwind.js +6 -8
  463. package/dist/dev/presets/live-video/minimal-skin.tailwind.js.map +1 -1
  464. package/dist/dev/presets/live-video/player.d.ts +2 -2
  465. package/dist/dev/presets/live-video/skin.css +120 -106
  466. package/dist/dev/presets/live-video/skin.js +4 -8
  467. package/dist/dev/presets/live-video/skin.js.map +1 -1
  468. package/dist/dev/presets/live-video/skin.tailwind.js +8 -10
  469. package/dist/dev/presets/live-video/skin.tailwind.js.map +1 -1
  470. package/dist/dev/presets/types.d.ts +15 -2
  471. package/dist/dev/presets/types.d.ts.map +1 -1
  472. package/dist/dev/presets/video/minimal-skin.css +158 -137
  473. package/dist/dev/presets/video/minimal-skin.js +4 -8
  474. package/dist/dev/presets/video/minimal-skin.js.map +1 -1
  475. package/dist/dev/presets/video/minimal-skin.tailwind.js +6 -8
  476. package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
  477. package/dist/dev/presets/video/player.d.ts +2 -2
  478. package/dist/dev/presets/video/skin.css +120 -106
  479. package/dist/dev/presets/video/skin.js +4 -8
  480. package/dist/dev/presets/video/skin.js.map +1 -1
  481. package/dist/dev/presets/video/skin.tailwind.js +7 -9
  482. package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
  483. package/dist/dev/skins/dist/default/default/tailwind/components/button.js +3 -1
  484. package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  485. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js +8 -1
  486. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js.map +1 -1
  487. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js +13 -13
  488. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  489. package/dist/dev/skins/dist/default/default/tailwind/components/thumbnail.js +1 -1
  490. package/dist/dev/skins/dist/default/default/tailwind/components/thumbnail.js.map +1 -1
  491. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +3 -3
  492. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  493. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js +8 -1
  494. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -1
  495. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js +13 -12
  496. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  497. package/dist/dev/skins/dist/default/minimal/tailwind/components/thumbnail.js +1 -1
  498. package/dist/dev/skins/dist/default/minimal/tailwind/components/thumbnail.js.map +1 -1
  499. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +7 -6
  500. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  501. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js +4 -4
  502. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  503. package/dist/dev/ui/airplay-button/airplay-button.d.ts.map +1 -1
  504. package/dist/dev/ui/airplay-button/airplay-button.js +0 -1
  505. package/dist/dev/ui/airplay-button/airplay-button.js.map +1 -1
  506. package/dist/dev/ui/alert-dialog/alert-dialog-close.d.ts.map +1 -1
  507. package/dist/dev/ui/alert-dialog/alert-dialog-close.js +0 -1
  508. package/dist/dev/ui/alert-dialog/alert-dialog-close.js.map +1 -1
  509. package/dist/dev/ui/alert-dialog/alert-dialog-description.d.ts.map +1 -1
  510. package/dist/dev/ui/alert-dialog/alert-dialog-description.js +0 -1
  511. package/dist/dev/ui/alert-dialog/alert-dialog-description.js.map +1 -1
  512. package/dist/dev/ui/alert-dialog/alert-dialog-popup.d.ts.map +1 -1
  513. package/dist/dev/ui/alert-dialog/alert-dialog-popup.js +0 -1
  514. package/dist/dev/ui/alert-dialog/alert-dialog-popup.js.map +1 -1
  515. package/dist/dev/ui/alert-dialog/alert-dialog-root.d.ts.map +1 -1
  516. package/dist/dev/ui/alert-dialog/alert-dialog-root.js +0 -1
  517. package/dist/dev/ui/alert-dialog/alert-dialog-root.js.map +1 -1
  518. package/dist/dev/ui/alert-dialog/alert-dialog-title.d.ts.map +1 -1
  519. package/dist/dev/ui/alert-dialog/alert-dialog-title.js +0 -1
  520. package/dist/dev/ui/alert-dialog/alert-dialog-title.js.map +1 -1
  521. package/dist/dev/ui/alert-dialog/context.d.ts.map +1 -1
  522. package/dist/dev/ui/alert-dialog/context.js +0 -1
  523. package/dist/dev/ui/alert-dialog/context.js.map +1 -1
  524. package/dist/dev/ui/audio-track/use-audio-track-options.d.ts.map +1 -1
  525. package/dist/dev/ui/audio-track/use-audio-track-options.js +0 -1
  526. package/dist/dev/ui/audio-track/use-audio-track-options.js.map +1 -1
  527. package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group.d.ts.map +1 -1
  528. package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group.js +0 -1
  529. package/dist/dev/ui/audio-track-radio-group/audio-track-radio-group.js.map +1 -1
  530. package/dist/dev/ui/buffering-indicator/buffering-indicator.d.ts.map +1 -1
  531. package/dist/dev/ui/buffering-indicator/buffering-indicator.js +0 -1
  532. package/dist/dev/ui/buffering-indicator/buffering-indicator.js.map +1 -1
  533. package/dist/dev/ui/captions-button/captions-button.d.ts.map +1 -1
  534. package/dist/dev/ui/captions-button/captions-button.js +0 -1
  535. package/dist/dev/ui/captions-button/captions-button.js.map +1 -1
  536. package/dist/dev/ui/captions-radio-group/captions-radio-group.d.ts.map +1 -1
  537. package/dist/dev/ui/captions-radio-group/captions-radio-group.js +0 -1
  538. package/dist/dev/ui/captions-radio-group/captions-radio-group.js.map +1 -1
  539. package/dist/dev/ui/captions-radio-group/use-captions-options.d.ts.map +1 -1
  540. package/dist/dev/ui/captions-radio-group/use-captions-options.js +0 -1
  541. package/dist/dev/ui/captions-radio-group/use-captions-options.js.map +1 -1
  542. package/dist/dev/ui/cast-button/cast-button.d.ts.map +1 -1
  543. package/dist/dev/ui/cast-button/cast-button.js +0 -1
  544. package/dist/dev/ui/cast-button/cast-button.js.map +1 -1
  545. package/dist/dev/ui/controls/context.js +0 -1
  546. package/dist/dev/ui/controls/context.js.map +1 -1
  547. package/dist/dev/ui/controls/controls-group.d.ts.map +1 -1
  548. package/dist/dev/ui/controls/controls-group.js +0 -1
  549. package/dist/dev/ui/controls/controls-group.js.map +1 -1
  550. package/dist/dev/ui/controls/controls-root.d.ts.map +1 -1
  551. package/dist/dev/ui/controls/controls-root.js +0 -1
  552. package/dist/dev/ui/controls/controls-root.js.map +1 -1
  553. package/dist/dev/ui/create-context-part.js +0 -1
  554. package/dist/dev/ui/create-context-part.js.map +1 -1
  555. package/dist/dev/ui/create-media-button.js +0 -1
  556. package/dist/dev/ui/create-media-button.js.map +1 -1
  557. package/dist/dev/ui/error-dialog/context.d.ts.map +1 -1
  558. package/dist/dev/ui/error-dialog/context.js +0 -1
  559. package/dist/dev/ui/error-dialog/context.js.map +1 -1
  560. package/dist/dev/ui/error-dialog/error-dialog-close.d.ts.map +1 -1
  561. package/dist/dev/ui/error-dialog/error-dialog-close.js +0 -1
  562. package/dist/dev/ui/error-dialog/error-dialog-close.js.map +1 -1
  563. package/dist/dev/ui/error-dialog/error-dialog-description.d.ts.map +1 -1
  564. package/dist/dev/ui/error-dialog/error-dialog-description.js +0 -1
  565. package/dist/dev/ui/error-dialog/error-dialog-description.js.map +1 -1
  566. package/dist/dev/ui/error-dialog/error-dialog-root.d.ts.map +1 -1
  567. package/dist/dev/ui/error-dialog/error-dialog-root.js +0 -1
  568. package/dist/dev/ui/error-dialog/error-dialog-root.js.map +1 -1
  569. package/dist/dev/ui/error-dialog/error-dialog-title.d.ts.map +1 -1
  570. package/dist/dev/ui/error-dialog/error-dialog-title.js +0 -1
  571. package/dist/dev/ui/error-dialog/error-dialog-title.js.map +1 -1
  572. package/dist/dev/ui/fullscreen-button/fullscreen-button.d.ts.map +1 -1
  573. package/dist/dev/ui/fullscreen-button/fullscreen-button.js +0 -1
  574. package/dist/dev/ui/fullscreen-button/fullscreen-button.js.map +1 -1
  575. package/dist/dev/ui/gesture/gesture.d.ts +6 -13
  576. package/dist/dev/ui/gesture/gesture.d.ts.map +1 -1
  577. package/dist/dev/ui/gesture/gesture.js +0 -1
  578. package/dist/dev/ui/gesture/gesture.js.map +1 -1
  579. package/dist/dev/ui/gesture/use-doubletap-gesture.d.ts +2 -5
  580. package/dist/dev/ui/gesture/use-doubletap-gesture.d.ts.map +1 -1
  581. package/dist/dev/ui/gesture/use-doubletap-gesture.js +0 -1
  582. package/dist/dev/ui/gesture/use-doubletap-gesture.js.map +1 -1
  583. package/dist/dev/ui/gesture/use-tap-gesture.d.ts +2 -5
  584. package/dist/dev/ui/gesture/use-tap-gesture.d.ts.map +1 -1
  585. package/dist/dev/ui/gesture/use-tap-gesture.js +0 -1
  586. package/dist/dev/ui/gesture/use-tap-gesture.js.map +1 -1
  587. package/dist/dev/ui/hooks/create-radio-options-hook.d.ts.map +1 -1
  588. package/dist/dev/ui/hooks/create-radio-options-hook.js +0 -1
  589. package/dist/dev/ui/hooks/create-radio-options-hook.js.map +1 -1
  590. package/dist/dev/ui/hooks/use-button.d.ts.map +1 -1
  591. package/dist/dev/ui/hooks/use-button.js +0 -1
  592. package/dist/dev/ui/hooks/use-button.js.map +1 -1
  593. package/dist/dev/ui/hooks/use-positioned-state.js +0 -1
  594. package/dist/dev/ui/hooks/use-positioned-state.js.map +1 -1
  595. package/dist/dev/ui/hooks/use-slider.d.ts.map +1 -1
  596. package/dist/dev/ui/hooks/use-slider.js +0 -1
  597. package/dist/dev/ui/hooks/use-slider.js.map +1 -1
  598. package/dist/dev/ui/hotkey/hotkey.d.ts +6 -12
  599. package/dist/dev/ui/hotkey/hotkey.d.ts.map +1 -1
  600. package/dist/dev/ui/hotkey/hotkey.js +0 -1
  601. package/dist/dev/ui/hotkey/hotkey.js.map +1 -1
  602. package/dist/dev/ui/hotkey/use-hotkey-shortcut.d.ts.map +1 -1
  603. package/dist/dev/ui/hotkey/use-hotkey-shortcut.js +0 -1
  604. package/dist/dev/ui/hotkey/use-hotkey-shortcut.js.map +1 -1
  605. package/dist/dev/ui/hotkey/use-hotkey.d.ts.map +1 -1
  606. package/dist/dev/ui/hotkey/use-hotkey.js +0 -1
  607. package/dist/dev/ui/hotkey/use-hotkey.js.map +1 -1
  608. package/dist/dev/ui/input-indicator/use-indicator-visibility.js +0 -1
  609. package/dist/dev/ui/input-indicator/use-indicator-visibility.js.map +1 -1
  610. package/dist/dev/ui/input-indicator/use-input-action-subscription.js +0 -1
  611. package/dist/dev/ui/input-indicator/use-input-action-subscription.js.map +1 -1
  612. package/dist/dev/ui/input-indicator/use-input-indicator-root.js +0 -1
  613. package/dist/dev/ui/input-indicator/use-input-indicator-root.js.map +1 -1
  614. package/dist/dev/ui/input-indicator/use-rendered-indicator-state.js +0 -1
  615. package/dist/dev/ui/input-indicator/use-rendered-indicator-state.js.map +1 -1
  616. package/dist/dev/ui/live-button/live-button.d.ts.map +1 -1
  617. package/dist/dev/ui/live-button/live-button.js +0 -1
  618. package/dist/dev/ui/live-button/live-button.js.map +1 -1
  619. package/dist/dev/ui/menu/context.d.ts.map +1 -1
  620. package/dist/dev/ui/menu/context.js +6 -2
  621. package/dist/dev/ui/menu/context.js.map +1 -1
  622. package/dist/dev/ui/menu/menu-checkbox-item.d.ts.map +1 -1
  623. package/dist/dev/ui/menu/menu-checkbox-item.js +0 -1
  624. package/dist/dev/ui/menu/menu-checkbox-item.js.map +1 -1
  625. package/dist/dev/ui/menu/menu-content.d.ts.map +1 -1
  626. package/dist/dev/ui/menu/menu-content.js +0 -1
  627. package/dist/dev/ui/menu/menu-content.js.map +1 -1
  628. package/dist/dev/ui/menu/menu-group-label.d.ts.map +1 -1
  629. package/dist/dev/ui/menu/menu-group-label.js +0 -1
  630. package/dist/dev/ui/menu/menu-group-label.js.map +1 -1
  631. package/dist/dev/ui/menu/menu-group.d.ts.map +1 -1
  632. package/dist/dev/ui/menu/menu-group.js +0 -1
  633. package/dist/dev/ui/menu/menu-group.js.map +1 -1
  634. package/dist/dev/ui/menu/menu-item-indicator.d.ts.map +1 -1
  635. package/dist/dev/ui/menu/menu-item-indicator.js +3 -3
  636. package/dist/dev/ui/menu/menu-item-indicator.js.map +1 -1
  637. package/dist/dev/ui/menu/menu-item.d.ts.map +1 -1
  638. package/dist/dev/ui/menu/menu-item.js +0 -1
  639. package/dist/dev/ui/menu/menu-item.js.map +1 -1
  640. package/dist/dev/ui/menu/menu-radio-group.d.ts.map +1 -1
  641. package/dist/dev/ui/menu/menu-radio-group.js +0 -1
  642. package/dist/dev/ui/menu/menu-radio-group.js.map +1 -1
  643. package/dist/dev/ui/menu/menu-radio-item.d.ts.map +1 -1
  644. package/dist/dev/ui/menu/menu-radio-item.js +19 -16
  645. package/dist/dev/ui/menu/menu-radio-item.js.map +1 -1
  646. package/dist/dev/ui/menu/menu-root.d.ts.map +1 -1
  647. package/dist/dev/ui/menu/menu-root.js +5 -7
  648. package/dist/dev/ui/menu/menu-root.js.map +1 -1
  649. package/dist/dev/ui/menu/menu-separator.d.ts.map +1 -1
  650. package/dist/dev/ui/menu/menu-separator.js +0 -1
  651. package/dist/dev/ui/menu/menu-separator.js.map +1 -1
  652. package/dist/dev/ui/menu/menu-trigger.d.ts.map +1 -1
  653. package/dist/dev/ui/menu/menu-trigger.js +26 -12
  654. package/dist/dev/ui/menu/menu-trigger.js.map +1 -1
  655. package/dist/dev/ui/menu/use-menu-group.js +0 -1
  656. package/dist/dev/ui/menu/use-menu-group.js.map +1 -1
  657. package/dist/dev/ui/mute-button/mute-button.d.ts.map +1 -1
  658. package/dist/dev/ui/mute-button/mute-button.js +0 -1
  659. package/dist/dev/ui/mute-button/mute-button.js.map +1 -1
  660. package/dist/dev/ui/pip-button/pip-button.d.ts.map +1 -1
  661. package/dist/dev/ui/pip-button/pip-button.js +0 -1
  662. package/dist/dev/ui/pip-button/pip-button.js.map +1 -1
  663. package/dist/dev/ui/play-button/play-button.d.ts.map +1 -1
  664. package/dist/dev/ui/play-button/play-button.js +0 -1
  665. package/dist/dev/ui/play-button/play-button.js.map +1 -1
  666. package/dist/dev/ui/playback-rate/use-playback-rate-options.d.ts.map +1 -1
  667. package/dist/dev/ui/playback-rate/use-playback-rate-options.js +0 -1
  668. package/dist/dev/ui/playback-rate/use-playback-rate-options.js.map +1 -1
  669. package/dist/dev/ui/playback-rate-button/playback-rate-button.d.ts.map +1 -1
  670. package/dist/dev/ui/playback-rate-button/playback-rate-button.js +0 -1
  671. package/dist/dev/ui/playback-rate-button/playback-rate-button.js.map +1 -1
  672. package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group.d.ts.map +1 -1
  673. package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group.js +0 -1
  674. package/dist/dev/ui/playback-rate-radio-group/playback-rate-radio-group.js.map +1 -1
  675. package/dist/dev/ui/popover/context.d.ts.map +1 -1
  676. package/dist/dev/ui/popover/context.js +0 -1
  677. package/dist/dev/ui/popover/context.js.map +1 -1
  678. package/dist/dev/ui/popover/popover-arrow.d.ts.map +1 -1
  679. package/dist/dev/ui/popover/popover-arrow.js +0 -1
  680. package/dist/dev/ui/popover/popover-arrow.js.map +1 -1
  681. package/dist/dev/ui/popover/popover-popup.d.ts.map +1 -1
  682. package/dist/dev/ui/popover/popover-popup.js +0 -1
  683. package/dist/dev/ui/popover/popover-popup.js.map +1 -1
  684. package/dist/dev/ui/popover/popover-root.d.ts.map +1 -1
  685. package/dist/dev/ui/popover/popover-root.js +0 -1
  686. package/dist/dev/ui/popover/popover-root.js.map +1 -1
  687. package/dist/dev/ui/popover/popover-trigger.d.ts.map +1 -1
  688. package/dist/dev/ui/popover/popover-trigger.js +0 -1
  689. package/dist/dev/ui/popover/popover-trigger.js.map +1 -1
  690. package/dist/dev/ui/popover/use-popup-position.js +0 -1
  691. package/dist/dev/ui/popover/use-popup-position.js.map +1 -1
  692. package/dist/dev/ui/poster/poster.d.ts +15 -4
  693. package/dist/dev/ui/poster/poster.d.ts.map +1 -1
  694. package/dist/dev/ui/poster/poster.js +64 -18
  695. package/dist/dev/ui/poster/poster.js.map +1 -1
  696. package/dist/dev/ui/quality/use-quality-options.d.ts.map +1 -1
  697. package/dist/dev/ui/quality/use-quality-options.js +0 -1
  698. package/dist/dev/ui/quality/use-quality-options.js.map +1 -1
  699. package/dist/dev/ui/quality-radio-group/quality-radio-group.d.ts.map +1 -1
  700. package/dist/dev/ui/quality-radio-group/quality-radio-group.js +0 -1
  701. package/dist/dev/ui/quality-radio-group/quality-radio-group.js.map +1 -1
  702. package/dist/dev/ui/seek-button/seek-button.d.ts.map +1 -1
  703. package/dist/dev/ui/seek-button/seek-button.js +0 -1
  704. package/dist/dev/ui/seek-button/seek-button.js.map +1 -1
  705. package/dist/dev/ui/seek-indicator/context.js +0 -1
  706. package/dist/dev/ui/seek-indicator/context.js.map +1 -1
  707. package/dist/dev/ui/seek-indicator/seek-indicator-root.d.ts.map +1 -1
  708. package/dist/dev/ui/seek-indicator/seek-indicator-root.js +0 -1
  709. package/dist/dev/ui/seek-indicator/seek-indicator-root.js.map +1 -1
  710. package/dist/dev/ui/seek-indicator/seek-indicator-value.d.ts.map +1 -1
  711. package/dist/dev/ui/seek-indicator/seek-indicator-value.js +0 -1
  712. package/dist/dev/ui/seek-indicator/seek-indicator-value.js.map +1 -1
  713. package/dist/dev/ui/slider/context.js +0 -1
  714. package/dist/dev/ui/slider/context.js.map +1 -1
  715. package/dist/dev/ui/slider/slider-buffer.d.ts.map +1 -1
  716. package/dist/dev/ui/slider/slider-buffer.js +0 -1
  717. package/dist/dev/ui/slider/slider-buffer.js.map +1 -1
  718. package/dist/dev/ui/slider/slider-fill.d.ts.map +1 -1
  719. package/dist/dev/ui/slider/slider-fill.js +0 -1
  720. package/dist/dev/ui/slider/slider-fill.js.map +1 -1
  721. package/dist/dev/ui/slider/slider-preview.d.ts +5 -9
  722. package/dist/dev/ui/slider/slider-preview.d.ts.map +1 -1
  723. package/dist/dev/ui/slider/slider-preview.js +0 -1
  724. package/dist/dev/ui/slider/slider-preview.js.map +1 -1
  725. package/dist/dev/ui/slider/slider-root.d.ts.map +1 -1
  726. package/dist/dev/ui/slider/slider-root.js +0 -1
  727. package/dist/dev/ui/slider/slider-root.js.map +1 -1
  728. package/dist/dev/ui/slider/slider-thumb.d.ts.map +1 -1
  729. package/dist/dev/ui/slider/slider-thumb.js +0 -1
  730. package/dist/dev/ui/slider/slider-thumb.js.map +1 -1
  731. package/dist/dev/ui/slider/slider-thumbnail.d.ts.map +1 -1
  732. package/dist/dev/ui/slider/slider-thumbnail.js +0 -1
  733. package/dist/dev/ui/slider/slider-thumbnail.js.map +1 -1
  734. package/dist/dev/ui/slider/slider-track.d.ts.map +1 -1
  735. package/dist/dev/ui/slider/slider-track.js +0 -1
  736. package/dist/dev/ui/slider/slider-track.js.map +1 -1
  737. package/dist/dev/ui/slider/slider-value.d.ts.map +1 -1
  738. package/dist/dev/ui/slider/slider-value.js +0 -1
  739. package/dist/dev/ui/slider/slider-value.js.map +1 -1
  740. package/dist/dev/ui/status-announcer/status-announcer.d.ts.map +1 -1
  741. package/dist/dev/ui/status-announcer/status-announcer.js +0 -1
  742. package/dist/dev/ui/status-announcer/status-announcer.js.map +1 -1
  743. package/dist/dev/ui/status-indicator/context.js +0 -1
  744. package/dist/dev/ui/status-indicator/context.js.map +1 -1
  745. package/dist/dev/ui/status-indicator/status-indicator-root.d.ts.map +1 -1
  746. package/dist/dev/ui/status-indicator/status-indicator-root.js +0 -1
  747. package/dist/dev/ui/status-indicator/status-indicator-root.js.map +1 -1
  748. package/dist/dev/ui/status-indicator/status-indicator-value.d.ts.map +1 -1
  749. package/dist/dev/ui/status-indicator/status-indicator-value.js +0 -1
  750. package/dist/dev/ui/status-indicator/status-indicator-value.js.map +1 -1
  751. package/dist/dev/ui/thumbnail/thumbnail.d.ts.map +1 -1
  752. package/dist/dev/ui/thumbnail/thumbnail.js +0 -1
  753. package/dist/dev/ui/thumbnail/thumbnail.js.map +1 -1
  754. package/dist/dev/ui/time/time-group.d.ts.map +1 -1
  755. package/dist/dev/ui/time/time-group.js +0 -1
  756. package/dist/dev/ui/time/time-group.js.map +1 -1
  757. package/dist/dev/ui/time/time-separator.d.ts.map +1 -1
  758. package/dist/dev/ui/time/time-separator.js +0 -1
  759. package/dist/dev/ui/time/time-separator.js.map +1 -1
  760. package/dist/dev/ui/time/time-value.d.ts.map +1 -1
  761. package/dist/dev/ui/time/time-value.js +0 -1
  762. package/dist/dev/ui/time/time-value.js.map +1 -1
  763. package/dist/dev/ui/time-slider/time-slider-chapters/slider-segments.js +0 -1
  764. package/dist/dev/ui/time-slider/time-slider-chapters/slider-segments.js.map +1 -1
  765. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapter-title.d.ts.map +1 -1
  766. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js +0 -1
  767. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapter-title.js.map +1 -1
  768. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapters.d.ts.map +1 -1
  769. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapters.js +0 -1
  770. package/dist/dev/ui/time-slider/time-slider-chapters/time-slider-chapters.js.map +1 -1
  771. package/dist/dev/ui/time-slider/time-slider-root.d.ts.map +1 -1
  772. package/dist/dev/ui/time-slider/time-slider-root.js +0 -1
  773. package/dist/dev/ui/time-slider/time-slider-root.js.map +1 -1
  774. package/dist/dev/ui/tooltip/context.d.ts.map +1 -1
  775. package/dist/dev/ui/tooltip/context.js +0 -1
  776. package/dist/dev/ui/tooltip/context.js.map +1 -1
  777. package/dist/dev/ui/tooltip/group-context.js +0 -1
  778. package/dist/dev/ui/tooltip/group-context.js.map +1 -1
  779. package/dist/dev/ui/tooltip/tooltip-arrow.d.ts.map +1 -1
  780. package/dist/dev/ui/tooltip/tooltip-arrow.js +0 -1
  781. package/dist/dev/ui/tooltip/tooltip-arrow.js.map +1 -1
  782. package/dist/dev/ui/tooltip/tooltip-label.d.ts.map +1 -1
  783. package/dist/dev/ui/tooltip/tooltip-label.js +0 -1
  784. package/dist/dev/ui/tooltip/tooltip-label.js.map +1 -1
  785. package/dist/dev/ui/tooltip/tooltip-popup.d.ts.map +1 -1
  786. package/dist/dev/ui/tooltip/tooltip-popup.js +0 -1
  787. package/dist/dev/ui/tooltip/tooltip-popup.js.map +1 -1
  788. package/dist/dev/ui/tooltip/tooltip-provider.d.ts.map +1 -1
  789. package/dist/dev/ui/tooltip/tooltip-provider.js +0 -1
  790. package/dist/dev/ui/tooltip/tooltip-provider.js.map +1 -1
  791. package/dist/dev/ui/tooltip/tooltip-root.d.ts.map +1 -1
  792. package/dist/dev/ui/tooltip/tooltip-root.js +0 -1
  793. package/dist/dev/ui/tooltip/tooltip-root.js.map +1 -1
  794. package/dist/dev/ui/tooltip/tooltip-shortcut.d.ts.map +1 -1
  795. package/dist/dev/ui/tooltip/tooltip-shortcut.js +0 -1
  796. package/dist/dev/ui/tooltip/tooltip-shortcut.js.map +1 -1
  797. package/dist/dev/ui/tooltip/tooltip-trigger.d.ts.map +1 -1
  798. package/dist/dev/ui/tooltip/tooltip-trigger.js +0 -1
  799. package/dist/dev/ui/tooltip/tooltip-trigger.js.map +1 -1
  800. package/dist/dev/ui/volume-indicator/context.js +0 -1
  801. package/dist/dev/ui/volume-indicator/context.js.map +1 -1
  802. package/dist/dev/ui/volume-indicator/volume-indicator-fill.d.ts.map +1 -1
  803. package/dist/dev/ui/volume-indicator/volume-indicator-fill.js +0 -1
  804. package/dist/dev/ui/volume-indicator/volume-indicator-fill.js.map +1 -1
  805. package/dist/dev/ui/volume-indicator/volume-indicator-root.d.ts.map +1 -1
  806. package/dist/dev/ui/volume-indicator/volume-indicator-root.js +0 -1
  807. package/dist/dev/ui/volume-indicator/volume-indicator-root.js.map +1 -1
  808. package/dist/dev/ui/volume-indicator/volume-indicator-value.d.ts.map +1 -1
  809. package/dist/dev/ui/volume-indicator/volume-indicator-value.js +0 -1
  810. package/dist/dev/ui/volume-indicator/volume-indicator-value.js.map +1 -1
  811. package/dist/dev/ui/volume-slider/volume-slider-root.d.ts.map +1 -1
  812. package/dist/dev/ui/volume-slider/volume-slider-root.js +0 -1
  813. package/dist/dev/ui/volume-slider/volume-slider-root.js.map +1 -1
  814. package/dist/dev/utils/merge-props.d.ts.map +1 -1
  815. package/dist/dev/utils/merge-props.js +0 -1
  816. package/dist/dev/utils/merge-props.js.map +1 -1
  817. package/dist/dev/utils/use-attach-iframe.js +0 -1
  818. package/dist/dev/utils/use-attach-iframe.js.map +1 -1
  819. package/dist/dev/utils/use-attach-media.d.ts.map +1 -1
  820. package/dist/dev/utils/use-attach-media.js +0 -1
  821. package/dist/dev/utils/use-attach-media.js.map +1 -1
  822. package/dist/dev/utils/use-composed-refs.d.ts.map +1 -1
  823. package/dist/dev/utils/use-composed-refs.js +0 -1
  824. package/dist/dev/utils/use-composed-refs.js.map +1 -1
  825. package/dist/dev/utils/use-destroy.d.ts.map +1 -1
  826. package/dist/dev/utils/use-destroy.js +0 -1
  827. package/dist/dev/utils/use-destroy.js.map +1 -1
  828. package/dist/dev/utils/use-force-render.js +0 -1
  829. package/dist/dev/utils/use-force-render.js.map +1 -1
  830. package/dist/dev/utils/use-latest-ref.d.ts.map +1 -1
  831. package/dist/dev/utils/use-latest-ref.js +0 -1
  832. package/dist/dev/utils/use-latest-ref.js.map +1 -1
  833. package/dist/dev/utils/use-media-component.d.ts.map +1 -1
  834. package/dist/dev/utils/use-media-component.js +0 -1
  835. package/dist/dev/utils/use-media-component.js.map +1 -1
  836. package/dist/dev/utils/use-media-instance.d.ts.map +1 -1
  837. package/dist/dev/utils/use-media-instance.js +0 -1
  838. package/dist/dev/utils/use-media-instance.js.map +1 -1
  839. package/dist/dev/utils/use-render.d.ts.map +1 -1
  840. package/dist/dev/utils/use-render.js +2 -9
  841. package/dist/dev/utils/use-render.js.map +1 -1
  842. package/dist/dev/utils/use-safe-id.js +0 -1
  843. package/dist/dev/utils/use-safe-id.js.map +1 -1
  844. package/docs/README.md +1 -1
  845. package/docs/concepts/features.md +2 -2
  846. package/docs/concepts/media-sources.md +79 -1
  847. package/docs/concepts/skins.md +128 -126
  848. package/docs/how-to/build-your-own-component.md +1 -1
  849. package/docs/how-to/customize-skins.md +511 -505
  850. package/docs/how-to/migrate-from-media-chrome.md +412 -0
  851. package/docs/how-to/migrate-from-mux-player.md +551 -0
  852. package/docs/how-to/migrate-from-plyr.md +385 -0
  853. package/docs/how-to/migrate-from-video-js-8.md +594 -0
  854. package/docs/llms.txt +9 -0
  855. package/docs/reference/create-player.md +2 -2
  856. package/docs/reference/feature-volume.md +4 -2
  857. package/docs/reference/menu.md +6 -18
  858. package/docs/reference/mute-button.md +34 -0
  859. package/docs/reference/popover.md +6 -6
  860. package/docs/reference/poster.md +187 -13
  861. package/docs/reference/slider.md +1 -1
  862. package/docs/reference/time-slider.md +1 -1
  863. package/docs/reference/tooltip.md +10 -10
  864. package/docs/reference/volume-slider.md +2 -2
  865. package/package.json +13 -8
@@ -93,10 +93,10 @@ skin.css
93
93
  ```
94
94
  'use client';
95
95
 
96
- import { type CSSProperties, type ComponentProps, forwardRef, type ReactNode, isValidElement } from 'react';
96
+ import { type CSSProperties, type ComponentProps, forwardRef, type ReactNode } from 'react';
97
97
  import { audioText, captionsText, playbackRateText, qualityText, settingsText, speedText } from '@videojs/core/i18n/text/menu';
98
98
  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';
99
- 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';
99
+ 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 } from '@videojs/react';
100
100
  import { Video } from '@videojs/react/video';
101
101
  import './player.css';
102
102
  import { Player } from './player';
@@ -379,9 +379,11 @@ const SEEK_TIME = 10;
379
379
 
380
380
  export interface VideoPlayerProps {
381
381
  src: string;
382
+ poster?: string | undefined;
382
383
  style?: CSSProperties;
383
384
  className?: string;
384
- poster?: string | RenderProp<Poster.State> | undefined;
385
+ renderPoster?: Poster.Props['render'];
386
+ placeholder?: string | undefined;
385
387
  }
386
388
 
387
389
  /**
@@ -393,13 +395,13 @@ export interface VideoPlayerProps {
393
395
  * />
394
396
  * ```
395
397
  */
396
- export function VideoPlayer({ src, className, poster, placeholder, style, ...rest }: VideoPlayerProps): ReactNode {
398
+ export function VideoPlayer({ src, poster, className, renderPoster, placeholder, style, ...rest }: VideoPlayerProps): ReactNode {
397
399
  const containerStyle = placeholder
398
400
  ? ({ '--media-poster-placeholder': `url(${placeholder})`, ...style } as CSSProperties)
399
401
  : style;
400
402
 
401
403
  return (
402
- <Player>
404
+ <Player poster={poster}>
403
405
  <Container
404
406
  className={`media-default-skin media-default-skin--video ${className ?? ''}`}
405
407
  style={containerStyle}
@@ -407,9 +409,7 @@ export function VideoPlayer({ src, className, poster, placeholder, style, ...res
407
409
  >
408
410
  <Video src={src} playsInline />
409
411
 
410
- {poster && (
411
- <Poster src={isString(poster) ? poster : undefined} render={isRenderProp(poster) ? poster : undefined} />
412
- )}
412
+ <Poster render={renderPoster} />
413
413
 
414
414
  <BufferingIndicator
415
415
  render={(props) => (
@@ -633,18 +633,6 @@ function VolumePopover(): ReactNode {
633
633
  </Popover.Root>
634
634
  );
635
635
  }
636
-
637
- // ================================================================
638
- // Utilities
639
- // ================================================================
640
-
641
- function isString(value: unknown): value is string {
642
- return typeof value === 'string';
643
- }
644
-
645
- function isRenderProp(value: unknown): value is RenderProp<unknown> {
646
- return typeof value === 'function' || isValidElement(value);
647
- }
648
636
  ```
649
637
  ```
650
638
  import { createPlayer } from '@videojs/react';
@@ -1212,7 +1200,7 @@ export const { Player } = createPlayer({ features: videoFeatures });
1212
1200
  position: relative;
1213
1201
  display: block;
1214
1202
  max-width: var(--thumbnail-max-width);
1215
- max-height: var(--max-height);
1203
+ max-height: var(--thumbnail-max-height);
1216
1204
  overflow: clip;
1217
1205
  border-radius: inherit;
1218
1206
 
@@ -1264,9 +1252,13 @@ export const { Player } = createPlayer({ features: videoFeatures });
1264
1252
  }
1265
1253
 
1266
1254
  .media-default-skin .media-slider {
1267
- --thumb-size: calc(var(--spacing) * 2.5);
1268
- --thumb-active-size: calc(var(--spacing) * 3);
1269
- --track-border-radius: calc(Infinity * 1px);
1255
+ --track-size: calc(var(--spacing) * 1);
1256
+ --track-highlighted-size: calc(var(--spacing) * 1.75);
1257
+ --track-border-radius: 99px;
1258
+ --thumb-size: calc(var(--spacing) * 3);
1259
+ --chapter-gap: calc(var(--spacing) * 1);
1260
+ --chapter-inset-start: calc(var(--chapter-gap) / 2);
1261
+ --chapter-inset-end: calc(var(--chapter-gap) / 2);
1270
1262
 
1271
1263
  position: relative;
1272
1264
  display: flex;
@@ -1297,10 +1289,10 @@ export const { Player } = createPlayer({ features: videoFeatures });
1297
1289
 
1298
1290
  &[data-orientation="horizontal"] {
1299
1291
  width: 100%;
1300
- height: calc(var(--spacing) * 1);
1292
+ height: var(--track-size);
1301
1293
  }
1302
1294
  &[data-orientation="vertical"] {
1303
- width: calc(var(--spacing) * 1);
1295
+ width: var(--track-size);
1304
1296
  height: 100%;
1305
1297
  }
1306
1298
  }
@@ -1316,13 +1308,22 @@ export const { Player } = createPlayer({ features: videoFeatures });
1316
1308
  inset-block: 0;
1317
1309
  left: 0;
1318
1310
  width: 100%;
1319
- transition-property: clip-path;
1320
1311
  }
1321
1312
  &[data-orientation="vertical"] {
1322
1313
  inset-inline: 0;
1323
1314
  bottom: 0;
1324
1315
  height: 100%;
1325
- transition-property: clip-path;
1316
+ }
1317
+
1318
+ @media (prefers-reduced-motion: no-preference) {
1319
+ transition: clip-path 200ms ease-out;
1320
+ }
1321
+ }
1322
+ &[data-dragging],
1323
+ &[data-seeking] {
1324
+ .media-slider__fill,
1325
+ .media-slider__buffer {
1326
+ transition-duration: 0ms;
1326
1327
  }
1327
1328
  }
1328
1329
 
@@ -1349,6 +1350,14 @@ export const { Player } = createPlayer({ features: videoFeatures });
1349
1350
  clip-path: inset(calc(100% - var(--media-slider-fill)) 0 0 0 round var(--track-border-radius));
1350
1351
  }
1351
1352
  }
1353
+ &[data-dragging] {
1354
+ .media-slider__fill[data-orientation="horizontal"] {
1355
+ clip-path: inset(0 calc(100% - var(--media-slider-pointer)) 0 0 round var(--track-border-radius));
1356
+ }
1357
+ .media-slider__fill[data-orientation="vertical"] {
1358
+ clip-path: inset(calc(100% - var(--media-slider-pointer)) 0 0 0 round var(--track-border-radius));
1359
+ }
1360
+ }
1352
1361
 
1353
1362
  /* Chapters */
1354
1363
  .media-slider__chapters {
@@ -1372,10 +1381,6 @@ export const { Player } = createPlayer({ features: videoFeatures });
1372
1381
  }
1373
1382
 
1374
1383
  .media-slider__chapter {
1375
- --chapter-gap: calc(var(--spacing) * 1);
1376
- --chapter-inset-start: 0.5;
1377
- --chapter-inset-end: 0.5;
1378
-
1379
1384
  position: absolute;
1380
1385
  inset: 0;
1381
1386
  display: flex;
@@ -1386,16 +1391,13 @@ export const { Player } = createPlayer({ features: videoFeatures });
1386
1391
  border-radius: inherit;
1387
1392
 
1388
1393
  &:first-child {
1389
- --chapter-inset-start: 0;
1394
+ --chapter-inset-start: 0px;
1390
1395
  }
1391
1396
  &:last-child {
1392
- --chapter-inset-end: 0;
1397
+ --chapter-inset-end: 0px;
1393
1398
  }
1394
1399
 
1395
1400
  .media-slider__chapter-track {
1396
- --chapter-track-size: calc(var(--spacing) * 1);
1397
- --chapter-track-highlighted-size: calc(var(--spacing) * 1.75);
1398
-
1399
1401
  border-radius: inherit;
1400
1402
 
1401
1403
  @media (prefers-reduced-motion: no-preference) {
@@ -1408,16 +1410,15 @@ export const { Player } = createPlayer({ features: videoFeatures });
1408
1410
  clip-path: inset(0 calc(100% - var(--media-slider-chapter-end)) 0 var(--media-slider-chapter-start));
1409
1411
 
1410
1412
  .media-slider__chapter-track {
1411
- height: var(--chapter-track-size);
1413
+ height: var(--track-size);
1412
1414
  clip-path: inset(
1413
- 0 calc(100% - var(--media-slider-chapter-end) + var(--chapter-gap) * var(--chapter-inset-end)) 0
1414
- calc(var(--media-slider-chapter-start) + var(--chapter-gap) * var(--chapter-inset-start)) round
1415
- var(--track-border-radius)
1415
+ 0 calc(100% - var(--media-slider-chapter-end) + var(--chapter-inset-end)) 0
1416
+ calc(var(--media-slider-chapter-start) + var(--chapter-inset-start)) round var(--track-border-radius)
1416
1417
  );
1417
1418
  }
1418
1419
 
1419
1420
  &[data-highlighted] .media-slider__chapter-track {
1420
- height: var(--chapter-track-highlighted-size);
1421
+ height: var(--track-highlighted-size);
1421
1422
  }
1422
1423
  }
1423
1424
 
@@ -1425,59 +1426,19 @@ export const { Player } = createPlayer({ features: videoFeatures });
1425
1426
  clip-path: inset(calc(100% - var(--media-slider-chapter-end)) 0 var(--media-slider-chapter-start) 0);
1426
1427
 
1427
1428
  .media-slider__chapter-track {
1428
- width: var(--chapter-track-size);
1429
+ width: var(--track-size);
1429
1430
  clip-path: inset(
1430
- calc(100% - var(--media-slider-chapter-end) + var(--chapter-gap) * var(--chapter-inset-end)) 0
1431
- calc(var(--media-slider-chapter-start) + var(--chapter-gap) * var(--chapter-inset-start)) 0 round
1432
- var(--track-border-radius)
1431
+ calc(100% - var(--media-slider-chapter-end) + var(--chapter-inset-end)) 0
1432
+ calc(var(--media-slider-chapter-start) + var(--chapter-inset-start)) 0 round var(--track-border-radius)
1433
1433
  );
1434
1434
  }
1435
1435
 
1436
1436
  &[data-highlighted] .media-slider__chapter-track {
1437
- width: var(--chapter-track-highlighted-size);
1437
+ width: var(--track-highlighted-size);
1438
1438
  }
1439
1439
  }
1440
1440
  }
1441
1441
 
1442
- /* Dragging — thumb and fill follow the pointer position */
1443
- &[data-dragging] {
1444
- .media-slider__thumb[data-orientation="horizontal"] {
1445
- left: var(--media-slider-pointer);
1446
- }
1447
- .media-slider__thumb[data-orientation="vertical"] {
1448
- top: calc(100% - var(--media-slider-pointer));
1449
- }
1450
- .media-slider__fill[data-orientation="horizontal"] {
1451
- clip-path: inset(0 calc(100% - var(--media-slider-pointer)) 0 0 round var(--track-border-radius));
1452
- }
1453
- .media-slider__fill[data-orientation="vertical"] {
1454
- clip-path: inset(calc(100% - var(--media-slider-pointer)) 0 0 0 round var(--track-border-radius));
1455
- }
1456
- }
1457
-
1458
- @media (prefers-reduced-motion: no-preference) {
1459
- .media-slider__thumb {
1460
- transition-property: opacity, height, width, outline-offset, left, top;
1461
- }
1462
- .media-slider__fill {
1463
- transition-timing-function: linear;
1464
- transition-duration: 200ms;
1465
- }
1466
- .media-slider__buffer {
1467
- transition-timing-function: ease-out;
1468
- transition-duration: 250ms;
1469
- }
1470
- }
1471
-
1472
- &[data-dragging],
1473
- &[data-seeking] {
1474
- .media-slider__thumb,
1475
- .media-slider__fill,
1476
- .media-slider__buffer {
1477
- transition-duration: 0ms;
1478
- }
1479
- }
1480
-
1481
1442
  /* Thumb */
1482
1443
  .media-slider__thumb {
1483
1444
  position: absolute;
@@ -1494,10 +1455,8 @@ export const { Player } = createPlayer({ features: videoFeatures });
1494
1455
  0 1px 3px 0 oklch(0 0 0 / 0.35),
1495
1456
  0 1px 2px -1px oklch(0 0 0 / 0.35);
1496
1457
  opacity: 0;
1458
+ scale: 0.8;
1497
1459
  translate: -50% -50%;
1498
- transition-timing-function: ease-out;
1499
- transition-duration: 150ms;
1500
- transition-property: opacity, height, width, outline-offset;
1501
1460
 
1502
1461
  &[data-orientation="horizontal"] {
1503
1462
  top: 50%;
@@ -1514,22 +1473,12 @@ export const { Player } = createPlayer({ features: videoFeatures });
1514
1473
  opacity: 1;
1515
1474
  }
1516
1475
 
1517
- @media (hover: hover) and (pointer: fine) {
1518
- &:hover {
1519
- outline-color: oklch(from currentColor l c h / 0.15);
1520
- outline-offset: 0;
1521
- }
1522
- }
1523
-
1524
1476
  &::after {
1525
1477
  position: absolute;
1526
1478
  inset: -4px;
1527
1479
  content: "";
1528
1480
  border-radius: inherit;
1529
1481
  box-shadow: 0 0 0 2px currentColor;
1530
- transition-timing-function: ease-out;
1531
- transition-duration: 150ms;
1532
- transition-property: opacity, scale;
1533
1482
  }
1534
1483
 
1535
1484
  &:not(:focus-visible)::after {
@@ -1538,37 +1487,70 @@ export const { Player } = createPlayer({ features: videoFeatures });
1538
1487
  }
1539
1488
 
1540
1489
  &.media-slider__thumb--persistent {
1541
- width: var(--thumb-active-size);
1542
- height: var(--thumb-active-size);
1543
1490
  opacity: 1;
1491
+ scale: 1;
1544
1492
  }
1545
- }
1546
1493
 
1547
- &:active .media-slider__thumb,
1548
- &:focus-within .media-slider__thumb {
1549
- width: var(--thumb-active-size);
1550
- height: var(--thumb-active-size);
1494
+ @media (hover: hover) and (pointer: fine) {
1495
+ &:hover {
1496
+ outline-color: oklch(from currentColor l c h / 0.15);
1497
+ outline-offset: 0;
1498
+ }
1499
+ }
1500
+
1501
+ @media (prefers-reduced-motion: no-preference) {
1502
+ transition-timing-function: ease-out;
1503
+ transition-duration: 150ms;
1504
+ transition-property: opacity, outline-offset, left, top, scale;
1505
+
1506
+ &::after {
1507
+ transition-timing-function: ease-out;
1508
+ transition-duration: 150ms;
1509
+ transition-property: opacity, scale;
1510
+ }
1511
+ }
1551
1512
  }
1552
1513
 
1553
1514
  @media (hover: hover) and (pointer: fine) {
1554
1515
  &:hover .media-slider__thumb {
1555
1516
  opacity: 1;
1517
+ scale: 1;
1518
+ }
1519
+ }
1520
+
1521
+ &[data-dragging] .media-slider__thumb {
1522
+ opacity: 1;
1523
+ scale: 0.9;
1524
+
1525
+ @media (prefers-reduced-motion: no-preference) {
1526
+ transition-property: opacity, outline-offset, scale;
1527
+ }
1528
+
1529
+ &[data-orientation="horizontal"] {
1530
+ left: var(--media-slider-pointer);
1531
+ }
1532
+ &[data-orientation="vertical"] {
1533
+ top: calc(100% - var(--media-slider-pointer));
1556
1534
  }
1557
1535
  }
1558
1536
 
1559
1537
  /* Preview */
1560
1538
  .media-slider__preview {
1561
- --max-width: min(calc(var(--spacing) * 48), 100cqi);
1562
- --max-height: calc(var(--spacing) * 32);
1539
+ --max-size-factor: 36;
1540
+ --max-size: min(calc(var(--spacing) * var(--max-size-factor)), 100cqi);
1563
1541
 
1564
- min-width: var(--max-width);
1542
+ min-width: var(--max-size);
1565
1543
  height: calc(var(--spacing) * 1);
1566
1544
 
1545
+ @container media-root (width > 42rem) {
1546
+ --max-size-factor: 48;
1547
+ }
1548
+
1567
1549
  .media-slider__thumbnail,
1568
1550
  .media-slider__value {
1569
1551
  position: absolute;
1570
1552
  left: 50%;
1571
- max-width: var(--max-width);
1553
+ max-width: var(--max-size);
1572
1554
  opacity: 0;
1573
1555
  filter: blur(8px);
1574
1556
  transform-origin: bottom;
@@ -1579,7 +1561,8 @@ export const { Player } = createPlayer({ features: videoFeatures });
1579
1561
  }
1580
1562
 
1581
1563
  .media-slider__thumbnail {
1582
- --thumbnail-max-width: var(--max-width);
1564
+ --thumbnail-max-width: var(--max-size);
1565
+ --thumbnail-max-height: var(--max-size);
1583
1566
  bottom: calc(100% + (var(--spacing) * 9));
1584
1567
  }
1585
1568
 
@@ -1593,8 +1576,8 @@ export const { Player } = createPlayer({ features: videoFeatures });
1593
1576
 
1594
1577
  .media-slider__chapter-title {
1595
1578
  min-width: 0;
1596
- max-width: var(--max-width);
1597
- padding-inline: calc(var(--spacing) * 3);
1579
+ max-width: var(--max-size);
1580
+ padding-inline: calc(var(--spacing) * 6);
1598
1581
  overflow: hidden;
1599
1582
  text-overflow: ellipsis;
1600
1583
  white-space: nowrap;
@@ -1625,14 +1608,15 @@ export const { Player } = createPlayer({ features: videoFeatures });
1625
1608
  transition-duration: 200ms;
1626
1609
  transition-property: opacity, scale;
1627
1610
  }
1611
+ }
1628
1612
 
1629
- &[data-pointing]:not([data-dragging])::before,
1630
- &[data-pointing] :is(.media-slider__thumbnail, .media-slider__value),
1631
- &[data-interactive]:not([data-pointing]):not([data-dragging]) :is(.media-slider__value, .media-slider__thumbnail) {
1632
- opacity: 1;
1633
- filter: blur(0);
1634
- scale: 1;
1635
- }
1613
+ &:is([data-pointing], :has(:focus-visible))
1614
+ .media-slider__preview
1615
+ :is(.media-slider__value, .media-slider__thumbnail),
1616
+ .media-slider__preview[data-pointing]:not([data-dragging])::before {
1617
+ opacity: 1;
1618
+ filter: blur(0);
1619
+ scale: 1;
1636
1620
  }
1637
1621
  }
1638
1622
 
@@ -2339,8 +2323,8 @@ export const { Player } = createPlayer({ features: videoFeatures });
2339
2323
  still in the DOM — just `display: none` — so its animations would keep
2340
2324
  running. Set the variables to `none` to short-circuit the keyframes. */
2341
2325
  .media-button--airplay:not([data-airplay-state="connected"]) {
2342
- --media-icon--airplay__fill-animation: none;
2343
- --media-icon--airplay__triangle-animation: none;
2326
+ --media-icon-airplay-fill-animation: none;
2327
+ --media-icon-airplay-triangle-animation: none;
2344
2328
  }
2345
2329
 
2346
2330
  @media (prefers-reduced-motion: reduce) {
@@ -2436,6 +2420,10 @@ export const { Player } = createPlayer({ features: videoFeatures });
2436
2420
  --scale: 1.75;
2437
2421
  }
2438
2422
  }
2423
+
2424
+ * {
2425
+ --focus-ring-color: oklch(1 0 0);
2426
+ }
2439
2427
  }
2440
2428
 
2441
2429
  /* Error Dialog */
@@ -2503,6 +2491,12 @@ export const { Player } = createPlayer({ features: videoFeatures });
2503
2491
  .media-controls--primary,
2504
2492
  .media-controls--secondary {
2505
2493
  position: absolute;
2494
+ }
2495
+ /* Primary must be higher for the preview/thumbnail */
2496
+ .media-controls--primary {
2497
+ z-index: 20;
2498
+ }
2499
+ .media-controls--secondary {
2506
2500
  z-index: 10;
2507
2501
  }
2508
2502
 
@@ -2519,6 +2513,11 @@ export const { Player } = createPlayer({ features: videoFeatures });
2519
2513
  transform-origin: top;
2520
2514
  }
2521
2515
 
2516
+ .media-time-controls {
2517
+ flex: 1;
2518
+ padding-inline: calc(var(--spacing) * 2);
2519
+ }
2520
+
2522
2521
  @container media-root (width < 32rem) {
2523
2522
  .media-controls--primary,
2524
2523
  .media-controls--secondary {
@@ -2569,6 +2568,10 @@ export const { Player } = createPlayer({ features: videoFeatures });
2569
2568
  }
2570
2569
  }
2571
2570
  }
2571
+
2572
+ .media-button--captions {
2573
+ display: none;
2574
+ }
2572
2575
  }
2573
2576
 
2574
2577
  @container media-root (width >= 32rem) {
@@ -2605,11 +2608,10 @@ export const { Player } = createPlayer({ features: videoFeatures });
2605
2608
  translate: 0 4px;
2606
2609
  }
2607
2610
  }
2608
- }
2609
2611
 
2610
- .media-time-controls {
2611
- flex: 1;
2612
- padding-inline: calc(var(--spacing) * 3);
2612
+ .media-time-controls {
2613
+ padding-inline: calc(var(--spacing) * 3);
2614
+ }
2613
2615
  }
2614
2616
 
2615
2617
  @media (pointer: fine) {
@@ -2658,7 +2660,7 @@ skin.css
2658
2660
  import { type CSSProperties, type ComponentProps, forwardRef, type ReactNode } from 'react';
2659
2661
  import { playbackRateText } from '@videojs/core/i18n/text/menu';
2660
2662
  import { CheckIcon, PauseIcon, PlayIcon, RestartIcon, SeekIcon, SpinnerIcon, VolumeHighIcon, VolumeLowIcon, VolumeOffIcon } from '@videojs/react/icons';
2661
- import { useTranslator, Container, usePlayer, BufferingIndicator, ErrorDialog, Hotkey, Menu, MuteButton, PlayButton, usePlaybackRateOptions, PlaybackRateButton, PlaybackRateRadioGroup as PlaybackRateRadioGroupComponent, Popover, SeekButton, StatusAnnouncer, Time, TimeSlider, Tooltip, VolumeSlider, type Poster, type RenderProp } from '@videojs/react';
2663
+ import { useTranslator, Container, usePlayer, BufferingIndicator, ErrorDialog, Hotkey, Menu, MuteButton, PlayButton, usePlaybackRateOptions, PlaybackRateButton, PlaybackRateRadioGroup as PlaybackRateRadioGroupComponent, Popover, SeekButton, StatusAnnouncer, Time, TimeSlider, Tooltip, VolumeSlider, type Poster } from '@videojs/react';
2662
2664
  import { Audio } from '@videojs/react/audio';
2663
2665
  import './player.css';
2664
2666
  import { Player } from './player';
@@ -3336,9 +3338,13 @@ export const { Player } = createPlayer({ features: audioFeatures });
3336
3338
  }
3337
3339
 
3338
3340
  .media-default-skin .media-slider {
3339
- --thumb-size: calc(var(--spacing) * 2.5);
3340
- --thumb-active-size: calc(var(--spacing) * 3);
3341
- --track-border-radius: calc(Infinity * 1px);
3341
+ --track-size: calc(var(--spacing) * 1);
3342
+ --track-highlighted-size: calc(var(--spacing) * 1.75);
3343
+ --track-border-radius: 99px;
3344
+ --thumb-size: calc(var(--spacing) * 3);
3345
+ --chapter-gap: calc(var(--spacing) * 1);
3346
+ --chapter-inset-start: calc(var(--chapter-gap) / 2);
3347
+ --chapter-inset-end: calc(var(--chapter-gap) / 2);
3342
3348
 
3343
3349
  position: relative;
3344
3350
  display: flex;
@@ -3369,10 +3375,10 @@ export const { Player } = createPlayer({ features: audioFeatures });
3369
3375
 
3370
3376
  &[data-orientation="horizontal"] {
3371
3377
  width: 100%;
3372
- height: calc(var(--spacing) * 1);
3378
+ height: var(--track-size);
3373
3379
  }
3374
3380
  &[data-orientation="vertical"] {
3375
- width: calc(var(--spacing) * 1);
3381
+ width: var(--track-size);
3376
3382
  height: 100%;
3377
3383
  }
3378
3384
  }
@@ -3388,13 +3394,22 @@ export const { Player } = createPlayer({ features: audioFeatures });
3388
3394
  inset-block: 0;
3389
3395
  left: 0;
3390
3396
  width: 100%;
3391
- transition-property: clip-path;
3392
3397
  }
3393
3398
  &[data-orientation="vertical"] {
3394
3399
  inset-inline: 0;
3395
3400
  bottom: 0;
3396
3401
  height: 100%;
3397
- transition-property: clip-path;
3402
+ }
3403
+
3404
+ @media (prefers-reduced-motion: no-preference) {
3405
+ transition: clip-path 200ms ease-out;
3406
+ }
3407
+ }
3408
+ &[data-dragging],
3409
+ &[data-seeking] {
3410
+ .media-slider__fill,
3411
+ .media-slider__buffer {
3412
+ transition-duration: 0ms;
3398
3413
  }
3399
3414
  }
3400
3415
 
@@ -3421,6 +3436,14 @@ export const { Player } = createPlayer({ features: audioFeatures });
3421
3436
  clip-path: inset(calc(100% - var(--media-slider-fill)) 0 0 0 round var(--track-border-radius));
3422
3437
  }
3423
3438
  }
3439
+ &[data-dragging] {
3440
+ .media-slider__fill[data-orientation="horizontal"] {
3441
+ clip-path: inset(0 calc(100% - var(--media-slider-pointer)) 0 0 round var(--track-border-radius));
3442
+ }
3443
+ .media-slider__fill[data-orientation="vertical"] {
3444
+ clip-path: inset(calc(100% - var(--media-slider-pointer)) 0 0 0 round var(--track-border-radius));
3445
+ }
3446
+ }
3424
3447
 
3425
3448
  /* Chapters */
3426
3449
  .media-slider__chapters {
@@ -3444,10 +3467,6 @@ export const { Player } = createPlayer({ features: audioFeatures });
3444
3467
  }
3445
3468
 
3446
3469
  .media-slider__chapter {
3447
- --chapter-gap: calc(var(--spacing) * 1);
3448
- --chapter-inset-start: 0.5;
3449
- --chapter-inset-end: 0.5;
3450
-
3451
3470
  position: absolute;
3452
3471
  inset: 0;
3453
3472
  display: flex;
@@ -3458,16 +3477,13 @@ export const { Player } = createPlayer({ features: audioFeatures });
3458
3477
  border-radius: inherit;
3459
3478
 
3460
3479
  &:first-child {
3461
- --chapter-inset-start: 0;
3480
+ --chapter-inset-start: 0px;
3462
3481
  }
3463
3482
  &:last-child {
3464
- --chapter-inset-end: 0;
3483
+ --chapter-inset-end: 0px;
3465
3484
  }
3466
3485
 
3467
3486
  .media-slider__chapter-track {
3468
- --chapter-track-size: calc(var(--spacing) * 1);
3469
- --chapter-track-highlighted-size: calc(var(--spacing) * 1.75);
3470
-
3471
3487
  border-radius: inherit;
3472
3488
 
3473
3489
  @media (prefers-reduced-motion: no-preference) {
@@ -3480,16 +3496,15 @@ export const { Player } = createPlayer({ features: audioFeatures });
3480
3496
  clip-path: inset(0 calc(100% - var(--media-slider-chapter-end)) 0 var(--media-slider-chapter-start));
3481
3497
 
3482
3498
  .media-slider__chapter-track {
3483
- height: var(--chapter-track-size);
3499
+ height: var(--track-size);
3484
3500
  clip-path: inset(
3485
- 0 calc(100% - var(--media-slider-chapter-end) + var(--chapter-gap) * var(--chapter-inset-end)) 0
3486
- calc(var(--media-slider-chapter-start) + var(--chapter-gap) * var(--chapter-inset-start)) round
3487
- var(--track-border-radius)
3501
+ 0 calc(100% - var(--media-slider-chapter-end) + var(--chapter-inset-end)) 0
3502
+ calc(var(--media-slider-chapter-start) + var(--chapter-inset-start)) round var(--track-border-radius)
3488
3503
  );
3489
3504
  }
3490
3505
 
3491
3506
  &[data-highlighted] .media-slider__chapter-track {
3492
- height: var(--chapter-track-highlighted-size);
3507
+ height: var(--track-highlighted-size);
3493
3508
  }
3494
3509
  }
3495
3510
 
@@ -3497,59 +3512,19 @@ export const { Player } = createPlayer({ features: audioFeatures });
3497
3512
  clip-path: inset(calc(100% - var(--media-slider-chapter-end)) 0 var(--media-slider-chapter-start) 0);
3498
3513
 
3499
3514
  .media-slider__chapter-track {
3500
- width: var(--chapter-track-size);
3515
+ width: var(--track-size);
3501
3516
  clip-path: inset(
3502
- calc(100% - var(--media-slider-chapter-end) + var(--chapter-gap) * var(--chapter-inset-end)) 0
3503
- calc(var(--media-slider-chapter-start) + var(--chapter-gap) * var(--chapter-inset-start)) 0 round
3504
- var(--track-border-radius)
3517
+ calc(100% - var(--media-slider-chapter-end) + var(--chapter-inset-end)) 0
3518
+ calc(var(--media-slider-chapter-start) + var(--chapter-inset-start)) 0 round var(--track-border-radius)
3505
3519
  );
3506
3520
  }
3507
3521
 
3508
3522
  &[data-highlighted] .media-slider__chapter-track {
3509
- width: var(--chapter-track-highlighted-size);
3523
+ width: var(--track-highlighted-size);
3510
3524
  }
3511
3525
  }
3512
3526
  }
3513
3527
 
3514
- /* Dragging — thumb and fill follow the pointer position */
3515
- &[data-dragging] {
3516
- .media-slider__thumb[data-orientation="horizontal"] {
3517
- left: var(--media-slider-pointer);
3518
- }
3519
- .media-slider__thumb[data-orientation="vertical"] {
3520
- top: calc(100% - var(--media-slider-pointer));
3521
- }
3522
- .media-slider__fill[data-orientation="horizontal"] {
3523
- clip-path: inset(0 calc(100% - var(--media-slider-pointer)) 0 0 round var(--track-border-radius));
3524
- }
3525
- .media-slider__fill[data-orientation="vertical"] {
3526
- clip-path: inset(calc(100% - var(--media-slider-pointer)) 0 0 0 round var(--track-border-radius));
3527
- }
3528
- }
3529
-
3530
- @media (prefers-reduced-motion: no-preference) {
3531
- .media-slider__thumb {
3532
- transition-property: opacity, height, width, outline-offset, left, top;
3533
- }
3534
- .media-slider__fill {
3535
- transition-timing-function: linear;
3536
- transition-duration: 200ms;
3537
- }
3538
- .media-slider__buffer {
3539
- transition-timing-function: ease-out;
3540
- transition-duration: 250ms;
3541
- }
3542
- }
3543
-
3544
- &[data-dragging],
3545
- &[data-seeking] {
3546
- .media-slider__thumb,
3547
- .media-slider__fill,
3548
- .media-slider__buffer {
3549
- transition-duration: 0ms;
3550
- }
3551
- }
3552
-
3553
3528
  /* Thumb */
3554
3529
  .media-slider__thumb {
3555
3530
  position: absolute;
@@ -3566,10 +3541,8 @@ export const { Player } = createPlayer({ features: audioFeatures });
3566
3541
  0 1px 3px 0 oklch(0 0 0 / 0.35),
3567
3542
  0 1px 2px -1px oklch(0 0 0 / 0.35);
3568
3543
  opacity: 0;
3544
+ scale: 0.8;
3569
3545
  translate: -50% -50%;
3570
- transition-timing-function: ease-out;
3571
- transition-duration: 150ms;
3572
- transition-property: opacity, height, width, outline-offset;
3573
3546
 
3574
3547
  &[data-orientation="horizontal"] {
3575
3548
  top: 50%;
@@ -3586,22 +3559,12 @@ export const { Player } = createPlayer({ features: audioFeatures });
3586
3559
  opacity: 1;
3587
3560
  }
3588
3561
 
3589
- @media (hover: hover) and (pointer: fine) {
3590
- &:hover {
3591
- outline-color: oklch(from currentColor l c h / 0.15);
3592
- outline-offset: 0;
3593
- }
3594
- }
3595
-
3596
3562
  &::after {
3597
3563
  position: absolute;
3598
3564
  inset: -4px;
3599
3565
  content: "";
3600
3566
  border-radius: inherit;
3601
3567
  box-shadow: 0 0 0 2px currentColor;
3602
- transition-timing-function: ease-out;
3603
- transition-duration: 150ms;
3604
- transition-property: opacity, scale;
3605
3568
  }
3606
3569
 
3607
3570
  &:not(:focus-visible)::after {
@@ -3610,37 +3573,70 @@ export const { Player } = createPlayer({ features: audioFeatures });
3610
3573
  }
3611
3574
 
3612
3575
  &.media-slider__thumb--persistent {
3613
- width: var(--thumb-active-size);
3614
- height: var(--thumb-active-size);
3615
3576
  opacity: 1;
3577
+ scale: 1;
3616
3578
  }
3617
- }
3618
3579
 
3619
- &:active .media-slider__thumb,
3620
- &:focus-within .media-slider__thumb {
3621
- width: var(--thumb-active-size);
3622
- height: var(--thumb-active-size);
3580
+ @media (hover: hover) and (pointer: fine) {
3581
+ &:hover {
3582
+ outline-color: oklch(from currentColor l c h / 0.15);
3583
+ outline-offset: 0;
3584
+ }
3585
+ }
3586
+
3587
+ @media (prefers-reduced-motion: no-preference) {
3588
+ transition-timing-function: ease-out;
3589
+ transition-duration: 150ms;
3590
+ transition-property: opacity, outline-offset, left, top, scale;
3591
+
3592
+ &::after {
3593
+ transition-timing-function: ease-out;
3594
+ transition-duration: 150ms;
3595
+ transition-property: opacity, scale;
3596
+ }
3597
+ }
3623
3598
  }
3624
3599
 
3625
3600
  @media (hover: hover) and (pointer: fine) {
3626
3601
  &:hover .media-slider__thumb {
3627
3602
  opacity: 1;
3603
+ scale: 1;
3604
+ }
3605
+ }
3606
+
3607
+ &[data-dragging] .media-slider__thumb {
3608
+ opacity: 1;
3609
+ scale: 0.9;
3610
+
3611
+ @media (prefers-reduced-motion: no-preference) {
3612
+ transition-property: opacity, outline-offset, scale;
3613
+ }
3614
+
3615
+ &[data-orientation="horizontal"] {
3616
+ left: var(--media-slider-pointer);
3617
+ }
3618
+ &[data-orientation="vertical"] {
3619
+ top: calc(100% - var(--media-slider-pointer));
3628
3620
  }
3629
3621
  }
3630
3622
 
3631
3623
  /* Preview */
3632
3624
  .media-slider__preview {
3633
- --max-width: min(calc(var(--spacing) * 48), 100cqi);
3634
- --max-height: calc(var(--spacing) * 32);
3625
+ --max-size-factor: 36;
3626
+ --max-size: min(calc(var(--spacing) * var(--max-size-factor)), 100cqi);
3635
3627
 
3636
- min-width: var(--max-width);
3628
+ min-width: var(--max-size);
3637
3629
  height: calc(var(--spacing) * 1);
3638
3630
 
3631
+ @container media-root (width > 42rem) {
3632
+ --max-size-factor: 48;
3633
+ }
3634
+
3639
3635
  .media-slider__thumbnail,
3640
3636
  .media-slider__value {
3641
3637
  position: absolute;
3642
3638
  left: 50%;
3643
- max-width: var(--max-width);
3639
+ max-width: var(--max-size);
3644
3640
  opacity: 0;
3645
3641
  filter: blur(8px);
3646
3642
  transform-origin: bottom;
@@ -3651,7 +3647,8 @@ export const { Player } = createPlayer({ features: audioFeatures });
3651
3647
  }
3652
3648
 
3653
3649
  .media-slider__thumbnail {
3654
- --thumbnail-max-width: var(--max-width);
3650
+ --thumbnail-max-width: var(--max-size);
3651
+ --thumbnail-max-height: var(--max-size);
3655
3652
  bottom: calc(100% + (var(--spacing) * 9));
3656
3653
  }
3657
3654
 
@@ -3665,8 +3662,8 @@ export const { Player } = createPlayer({ features: audioFeatures });
3665
3662
 
3666
3663
  .media-slider__chapter-title {
3667
3664
  min-width: 0;
3668
- max-width: var(--max-width);
3669
- padding-inline: calc(var(--spacing) * 3);
3665
+ max-width: var(--max-size);
3666
+ padding-inline: calc(var(--spacing) * 6);
3670
3667
  overflow: hidden;
3671
3668
  text-overflow: ellipsis;
3672
3669
  white-space: nowrap;
@@ -3697,14 +3694,15 @@ export const { Player } = createPlayer({ features: audioFeatures });
3697
3694
  transition-duration: 200ms;
3698
3695
  transition-property: opacity, scale;
3699
3696
  }
3697
+ }
3700
3698
 
3701
- &[data-pointing]:not([data-dragging])::before,
3702
- &[data-pointing] :is(.media-slider__thumbnail, .media-slider__value),
3703
- &[data-interactive]:not([data-pointing]):not([data-dragging]) :is(.media-slider__value, .media-slider__thumbnail) {
3704
- opacity: 1;
3705
- filter: blur(0);
3706
- scale: 1;
3707
- }
3699
+ &:is([data-pointing], :has(:focus-visible))
3700
+ .media-slider__preview
3701
+ :is(.media-slider__value, .media-slider__thumbnail),
3702
+ .media-slider__preview[data-pointing]:not([data-dragging])::before {
3703
+ opacity: 1;
3704
+ filter: blur(0);
3705
+ scale: 1;
3708
3706
  }
3709
3707
  }
3710
3708
 
@@ -4245,10 +4243,10 @@ skin.css
4245
4243
  ```
4246
4244
  'use client';
4247
4245
 
4248
- import { type CSSProperties, type ComponentProps, forwardRef, type ReactNode, isValidElement } from 'react';
4246
+ import { type CSSProperties, type ComponentProps, forwardRef, type ReactNode } from 'react';
4249
4247
  import { audioText, captionsText, playbackRateText, qualityText, settingsText, speedText } from '@videojs/core/i18n/text/menu';
4250
4248
  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/minimal';
4251
- 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';
4249
+ 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 } from '@videojs/react';
4252
4250
  import { Video } from '@videojs/react/video';
4253
4251
  import './player.css';
4254
4252
  import { Player } from './player';
@@ -4455,9 +4453,11 @@ const SEEK_TIME = 10;
4455
4453
 
4456
4454
  export interface VideoPlayerProps {
4457
4455
  src: string;
4456
+ poster?: string | undefined;
4458
4457
  style?: CSSProperties;
4459
4458
  className?: string;
4460
- poster?: string | RenderProp<Poster.State> | undefined;
4459
+ renderPoster?: Poster.Props['render'];
4460
+ placeholder?: string | undefined;
4461
4461
  }
4462
4462
 
4463
4463
  /**
@@ -4469,13 +4469,13 @@ export interface VideoPlayerProps {
4469
4469
  * />
4470
4470
  * ```
4471
4471
  */
4472
- export function VideoPlayer({ src, className, poster, placeholder, style, ...rest }: VideoPlayerProps): ReactNode {
4472
+ export function VideoPlayer({ src, poster, className, renderPoster, placeholder, style, ...rest }: VideoPlayerProps): ReactNode {
4473
4473
  const containerStyle = placeholder
4474
4474
  ? ({ '--media-poster-placeholder': `url(${placeholder})`, ...style } as CSSProperties)
4475
4475
  : style;
4476
4476
 
4477
4477
  return (
4478
- <Player>
4478
+ <Player poster={poster}>
4479
4479
  <Container
4480
4480
  className={`media-minimal-skin media-minimal-skin--video ${className ?? ''}`}
4481
4481
  style={containerStyle}
@@ -4483,9 +4483,7 @@ export function VideoPlayer({ src, className, poster, placeholder, style, ...res
4483
4483
  >
4484
4484
  <Video src={src} playsInline />
4485
4485
 
4486
- {poster && (
4487
- <Poster src={isString(poster) ? poster : undefined} render={isRenderProp(poster) ? poster : undefined} />
4488
- )}
4486
+ <Poster render={renderPoster} />
4489
4487
 
4490
4488
  <BufferingIndicator
4491
4489
  render={(props) => (
@@ -4763,18 +4761,6 @@ function VolumePopover(): ReactNode {
4763
4761
  </Popover.Root>
4764
4762
  );
4765
4763
  }
4766
-
4767
- // ================================================================
4768
- // Utilities
4769
- // ================================================================
4770
-
4771
- function isString(value: unknown): value is string {
4772
- return typeof value === 'string';
4773
- }
4774
-
4775
- function isRenderProp(value: unknown): value is RenderProp<unknown> {
4776
- return typeof value === 'function' || isValidElement(value);
4777
- }
4778
4764
  ```
4779
4765
  ```
4780
4766
  import { createPlayer } from '@videojs/react';
@@ -5367,7 +5353,7 @@ export const { Player } = createPlayer({ features: videoFeatures });
5367
5353
  position: relative;
5368
5354
  display: block;
5369
5355
  max-width: var(--thumbnail-max-width);
5370
- max-height: var(--max-height);
5356
+ max-height: var(--thumbnail-max-height);
5371
5357
  overflow: clip;
5372
5358
  border-radius: inherit;
5373
5359
  }
@@ -5411,9 +5397,13 @@ export const { Player } = createPlayer({ features: videoFeatures });
5411
5397
  }
5412
5398
 
5413
5399
  .media-minimal-skin .media-slider {
5400
+ --track-size: calc(var(--spacing) * 1);
5401
+ --track-highlighted-size: calc(var(--spacing) * 1.75);
5402
+ --track-border-radius: 99px;
5414
5403
  --thumb-size: calc(var(--spacing) * 3);
5415
- --thumb-active-size: calc(var(--spacing) * 3);
5416
- --track-border-radius: calc(Infinity * 1px);
5404
+ --chapter-gap: calc(var(--spacing) * 1);
5405
+ --chapter-inset-start: calc(var(--chapter-gap) / 2);
5406
+ --chapter-inset-end: calc(var(--chapter-gap) / 2);
5417
5407
 
5418
5408
  position: relative;
5419
5409
  display: flex;
@@ -5445,71 +5435,17 @@ export const { Player } = createPlayer({ features: videoFeatures });
5445
5435
 
5446
5436
  &[data-orientation="horizontal"] {
5447
5437
  width: 100%;
5448
- height: calc(var(--spacing) * 0.75);
5438
+ height: var(--track-size);
5449
5439
  }
5450
5440
  &[data-orientation="vertical"] {
5451
- width: calc(var(--spacing) * 0.75);
5441
+ width: var(--track-size);
5452
5442
  height: 100%;
5453
5443
  }
5454
5444
  }
5455
5445
 
5456
- /* Thumb */
5457
- .media-slider__thumb {
5458
- position: absolute;
5459
- z-index: 10;
5460
- width: var(--thumb-size);
5461
- height: var(--thumb-size);
5462
- user-select: none;
5463
- outline: 2px solid transparent;
5464
- outline-offset: -2px;
5465
- background-color: currentColor;
5466
- border-radius: calc(Infinity * 1px);
5467
- box-shadow:
5468
- 0 0 0 1px var(--shadow-current-color, oklch(0 0 0 / 0.15)),
5469
- 0 1px 3px 0 oklch(0 0 0 / 0.15),
5470
- 0 1px 2px -1px oklch(0 0 0 / 0.15);
5471
- opacity: 0;
5472
- transform-origin: center;
5473
- scale: 0.7;
5474
- translate: -50% -50%;
5475
- transition-timing-function: ease-out;
5476
- transition-duration: 150ms;
5477
-
5478
- &[data-orientation="horizontal"] {
5479
- top: 50%;
5480
- left: var(--media-slider-fill);
5481
- }
5482
- &[data-orientation="vertical"] {
5483
- top: calc(100% - var(--media-slider-fill));
5484
- left: 50%;
5485
- }
5486
-
5487
- &:focus-visible {
5488
- outline-color: var(--focus-ring-color);
5489
- outline-offset: 2px;
5490
- }
5491
- }
5492
-
5493
- &:focus-within .media-slider__thumb,
5494
- .media-slider__thumb--persistent {
5495
- width: var(--thumb-active-size);
5496
- height: var(--thumb-active-size);
5497
- opacity: 1;
5498
- scale: 1;
5499
- }
5500
-
5501
- @media (hover: hover) and (pointer: fine) {
5502
- &:hover .media-slider__thumb {
5503
- width: var(--thumb-active-size);
5504
- height: var(--thumb-active-size);
5505
- opacity: 1;
5506
- scale: 1;
5507
- }
5508
- }
5509
-
5510
- /* Shared track fills */
5511
- .media-slider__buffer,
5512
- .media-slider__fill {
5446
+ /* Shared track fills */
5447
+ .media-slider__buffer,
5448
+ .media-slider__fill {
5513
5449
  position: absolute;
5514
5450
  pointer-events: none;
5515
5451
  border-radius: inherit;
@@ -5518,13 +5454,22 @@ export const { Player } = createPlayer({ features: videoFeatures });
5518
5454
  inset-block: 0;
5519
5455
  left: 0;
5520
5456
  width: 100%;
5521
- transition-property: clip-path;
5522
5457
  }
5523
5458
  &[data-orientation="vertical"] {
5524
5459
  inset-inline: 0;
5525
5460
  bottom: 0;
5526
5461
  height: 100%;
5527
- transition-property: clip-path;
5462
+ }
5463
+
5464
+ @media (prefers-reduced-motion: no-preference) {
5465
+ transition: clip-path 200ms ease-out;
5466
+ }
5467
+ }
5468
+ &[data-dragging],
5469
+ &[data-seeking] {
5470
+ .media-slider__fill,
5471
+ .media-slider__buffer {
5472
+ transition-duration: 0ms;
5528
5473
  }
5529
5474
  }
5530
5475
 
@@ -5551,6 +5496,14 @@ export const { Player } = createPlayer({ features: videoFeatures });
5551
5496
  clip-path: inset(calc(100% - var(--media-slider-fill)) 0 0 0 round var(--track-border-radius));
5552
5497
  }
5553
5498
  }
5499
+ &[data-dragging] {
5500
+ .media-slider__fill[data-orientation="horizontal"] {
5501
+ clip-path: inset(0 calc(100% - var(--media-slider-pointer)) 0 0 round var(--track-border-radius));
5502
+ }
5503
+ .media-slider__fill[data-orientation="vertical"] {
5504
+ clip-path: inset(calc(100% - var(--media-slider-pointer)) 0 0 0 round var(--track-border-radius));
5505
+ }
5506
+ }
5554
5507
 
5555
5508
  /* Chapters */
5556
5509
  .media-slider__chapters {
@@ -5574,9 +5527,6 @@ export const { Player } = createPlayer({ features: videoFeatures });
5574
5527
  }
5575
5528
 
5576
5529
  .media-slider__chapter {
5577
- --chapter-gap: calc(var(--spacing) * 1);
5578
- --chapter-inset-start: 0.5;
5579
- --chapter-inset-end: 0.5;
5580
5530
  position: absolute;
5581
5531
  inset: 0;
5582
5532
  display: flex;
@@ -5586,15 +5536,13 @@ export const { Player } = createPlayer({ features: videoFeatures });
5586
5536
  min-height: 0;
5587
5537
 
5588
5538
  &:first-child {
5589
- --chapter-inset-start: 0;
5539
+ --chapter-inset-start: 0px;
5590
5540
  }
5591
5541
  &:last-child {
5592
- --chapter-inset-end: 0;
5542
+ --chapter-inset-end: 0px;
5593
5543
  }
5594
5544
 
5595
5545
  .media-slider__chapter-track {
5596
- --chapter-track-size: calc(var(--spacing) * 0.75);
5597
- --chapter-track-highlighted-size: calc(var(--spacing) * 1.25);
5598
5546
  border-radius: var(--track-border-radius);
5599
5547
 
5600
5548
  @media (prefers-reduced-motion: no-preference) {
@@ -5607,16 +5555,15 @@ export const { Player } = createPlayer({ features: videoFeatures });
5607
5555
  clip-path: inset(0 calc(100% - var(--media-slider-chapter-end)) 0 var(--media-slider-chapter-start));
5608
5556
 
5609
5557
  .media-slider__chapter-track {
5610
- height: var(--chapter-track-size);
5558
+ height: var(--track-size);
5611
5559
  clip-path: inset(
5612
- 0 calc(100% - var(--media-slider-chapter-end) + var(--chapter-gap) * var(--chapter-inset-end)) 0
5613
- calc(var(--media-slider-chapter-start) + var(--chapter-gap) * var(--chapter-inset-start)) round
5614
- var(--track-border-radius)
5560
+ 0 calc(100% - var(--media-slider-chapter-end) + var(--chapter-inset-end)) 0
5561
+ calc(var(--media-slider-chapter-start) + var(--chapter-inset-start)) round var(--track-border-radius)
5615
5562
  );
5616
5563
  }
5617
5564
 
5618
5565
  &[data-highlighted] .media-slider__chapter-track {
5619
- height: var(--chapter-track-highlighted-size);
5566
+ height: var(--track-highlighted-size);
5620
5567
  }
5621
5568
  }
5622
5569
 
@@ -5624,72 +5571,110 @@ export const { Player } = createPlayer({ features: videoFeatures });
5624
5571
  clip-path: inset(calc(100% - var(--media-slider-chapter-end)) 0 var(--media-slider-chapter-start) 0);
5625
5572
 
5626
5573
  .media-slider__chapter-track {
5627
- width: var(--chapter-track-size);
5574
+ width: var(--track-size);
5628
5575
  clip-path: inset(
5629
- calc(100% - var(--media-slider-chapter-end) + var(--chapter-gap) * var(--chapter-inset-end)) 0
5630
- calc(var(--media-slider-chapter-start) + var(--chapter-gap) * var(--chapter-inset-start)) 0 round
5631
- var(--track-border-radius)
5576
+ calc(100% - var(--media-slider-chapter-end) + var(--chapter-inset-end)) 0
5577
+ calc(var(--media-slider-chapter-start) + var(--chapter-inset-start)) 0 round var(--track-border-radius)
5632
5578
  );
5633
5579
  }
5634
5580
 
5635
5581
  &[data-highlighted] .media-slider__chapter-track {
5636
- width: var(--chapter-track-highlighted-size);
5582
+ width: var(--track-highlighted-size);
5637
5583
  }
5638
5584
  }
5639
5585
  }
5640
5586
 
5641
- /* Dragging — thumb and fill follow the pointer position */
5642
- &[data-dragging] {
5643
- .media-slider__thumb[data-orientation="horizontal"] {
5644
- left: var(--media-slider-pointer);
5645
- }
5646
- .media-slider__thumb[data-orientation="vertical"] {
5647
- top: calc(100% - var(--media-slider-pointer));
5648
- }
5649
- .media-slider__fill[data-orientation="horizontal"] {
5650
- clip-path: inset(0 calc(100% - var(--media-slider-pointer)) 0 0 round var(--track-border-radius));
5587
+ /* Thumb */
5588
+ .media-slider__thumb {
5589
+ position: absolute;
5590
+ z-index: 10;
5591
+ width: var(--thumb-size);
5592
+ height: var(--thumb-size);
5593
+ user-select: none;
5594
+ outline: 2px solid transparent;
5595
+ outline-offset: -2px;
5596
+ background-color: currentColor;
5597
+ border-radius: calc(Infinity * 1px);
5598
+ box-shadow:
5599
+ 0 0 0 1px var(--shadow-current-color, oklch(0 0 0 / 0.15)),
5600
+ 0 1px 3px 0 oklch(0 0 0 / 0.15),
5601
+ 0 1px 2px -1px oklch(0 0 0 / 0.15);
5602
+ opacity: 0;
5603
+ transform-origin: center;
5604
+ scale: 0.7;
5605
+ translate: -50% -50%;
5606
+
5607
+ &[data-orientation="horizontal"] {
5608
+ top: 50%;
5609
+ left: var(--media-slider-fill);
5651
5610
  }
5652
- .media-slider__fill[data-orientation="vertical"] {
5653
- clip-path: inset(calc(100% - var(--media-slider-pointer)) 0 0 0 round var(--track-border-radius));
5611
+ &[data-orientation="vertical"] {
5612
+ top: calc(100% - var(--media-slider-fill));
5613
+ left: 50%;
5654
5614
  }
5655
- }
5656
5615
 
5657
- @media (prefers-reduced-motion: no-preference) {
5658
- .media-slider__thumb {
5659
- transition-property: opacity, scale, height, width, outline-offset, left, top;
5616
+ &:focus-visible {
5617
+ outline-color: var(--focus-ring-color);
5618
+ outline-offset: 2px;
5660
5619
  }
5661
- .media-slider__fill {
5662
- transition-timing-function: linear;
5663
- transition-duration: 200ms;
5620
+
5621
+ &:focus-visible,
5622
+ &.media-slider__thumb--persistent {
5623
+ opacity: 1;
5624
+ scale: 1;
5664
5625
  }
5665
- .media-slider__buffer {
5626
+
5627
+ @media (prefers-reduced-motion: no-preference) {
5666
5628
  transition-timing-function: ease-out;
5667
- transition-duration: 250ms;
5629
+ transition-duration: 150ms;
5630
+ transition-property: opacity, outline-offset, left, top, scale;
5668
5631
  }
5669
5632
  }
5670
5633
 
5671
- &[data-dragging],
5672
- &[data-seeking] {
5673
- .media-slider__thumb,
5674
- .media-slider__fill,
5675
- .media-slider__buffer {
5676
- transition-duration: 0ms;
5634
+ @media (hover: hover) and (pointer: fine) {
5635
+ &:hover .media-slider__thumb {
5636
+ opacity: 1;
5637
+ scale: 1;
5638
+ }
5639
+ }
5640
+
5641
+ &[data-dragging] .media-slider__thumb {
5642
+ opacity: 1;
5643
+ scale: 0.9;
5644
+
5645
+ @media (prefers-reduced-motion: no-preference) {
5646
+ transition-property: opacity, outline-offset, scale;
5647
+ }
5648
+
5649
+ &[data-orientation="horizontal"] {
5650
+ left: var(--media-slider-pointer);
5651
+ }
5652
+ &[data-orientation="vertical"] {
5653
+ top: calc(100% - var(--media-slider-pointer));
5677
5654
  }
5678
5655
  }
5679
5656
 
5680
5657
  /* Preview */
5681
5658
  .media-slider__preview {
5682
- --max-width: min(calc(var(--spacing) * 48), 100cqi);
5683
- --max-height: calc(var(--spacing) * 32);
5659
+ --max-size-factor: 28;
5660
+ --max-size: min(calc(var(--spacing) * var(--max-size-factor)), 100cqi);
5684
5661
 
5685
5662
  min-width: 100%;
5686
5663
  height: calc(var(--spacing) * 1);
5687
5664
 
5665
+ @container media-root (width > 32rem) {
5666
+ --max-size-factor: 36;
5667
+ }
5668
+
5669
+ @container media-root (width > 42rem) {
5670
+ --max-size-factor: 48;
5671
+ }
5672
+
5688
5673
  .media-slider__thumbnail,
5689
5674
  .media-slider__value {
5690
5675
  position: absolute;
5691
5676
  left: var(--preview-left, var(--media-slider-pointer));
5692
- max-width: var(--max-width);
5677
+ max-width: var(--max-size);
5693
5678
  opacity: 0;
5694
5679
  filter: blur(8px);
5695
5680
  transform-origin: bottom;
@@ -5701,8 +5686,9 @@ export const { Player } = createPlayer({ features: videoFeatures });
5701
5686
  }
5702
5687
 
5703
5688
  .media-slider__thumbnail {
5704
- --thumbnail-max-width: var(--max-width);
5705
- bottom: calc(100% + (var(--spacing) * 12));
5689
+ --thumbnail-max-width: var(--max-size);
5690
+ --thumbnail-max-height: var(--max-size);
5691
+ bottom: calc(100% + (var(--spacing) * 11));
5706
5692
  }
5707
5693
 
5708
5694
  .media-slider__value {
@@ -5740,15 +5726,6 @@ export const { Player } = createPlayer({ features: videoFeatures });
5740
5726
  transition-property: opacity, scale;
5741
5727
  }
5742
5728
 
5743
- &[data-pointing] .media-slider__value,
5744
- &[data-pointing] .media-slider__thumbnail,
5745
- &[data-interactive]:not([data-pointing]):not([data-dragging]) .media-slider__value,
5746
- &[data-interactive]:not([data-pointing]):not([data-dragging]) .media-slider__thumbnail {
5747
- opacity: 1;
5748
- filter: blur(0);
5749
- scale: 1;
5750
- }
5751
-
5752
5729
  &[data-orientation="horizontal"]::before {
5753
5730
  top: 50%;
5754
5731
  left: var(--media-slider-pointer);
@@ -5767,6 +5744,14 @@ export const { Player } = createPlayer({ features: videoFeatures });
5767
5744
  scale: 1;
5768
5745
  }
5769
5746
  }
5747
+
5748
+ &:is([data-pointing], :has(:focus-visible))
5749
+ .media-slider__preview
5750
+ :is(.media-slider__value, .media-slider__thumbnail) {
5751
+ opacity: 1;
5752
+ filter: blur(0);
5753
+ scale: 1;
5754
+ }
5770
5755
  }
5771
5756
 
5772
5757
  .media-minimal-skin {
@@ -6503,8 +6488,8 @@ export const { Player } = createPlayer({ features: videoFeatures });
6503
6488
  still in the DOM — just `display: none` — so its animations would keep
6504
6489
  running. Set the variables to `none` to short-circuit the keyframes. */
6505
6490
  .media-button--airplay:not([data-airplay-state="connected"]) {
6506
- --media-icon--airplay__fill-animation: none;
6507
- --media-icon--airplay__triangle-animation: none;
6491
+ --media-icon-airplay-fill-animation: none;
6492
+ --media-icon-airplay-triangle-animation: none;
6508
6493
  }
6509
6494
 
6510
6495
  @media (prefers-reduced-motion: reduce) {
@@ -6604,6 +6589,10 @@ export const { Player } = createPlayer({ features: videoFeatures });
6604
6589
  --scale: 1.75;
6605
6590
  }
6606
6591
  }
6592
+
6593
+ * {
6594
+ --focus-ring-color: oklch(1 0 0);
6595
+ }
6607
6596
  }
6608
6597
 
6609
6598
  /* Error Dialog */
@@ -6662,6 +6651,7 @@ export const { Player } = createPlayer({ features: videoFeatures });
6662
6651
  --base-boundary-offset: 1;
6663
6652
  --inset-factor: 1;
6664
6653
  --inset: calc(var(--spacing) * var(--inset-factor));
6654
+ --volume-mask: linear-gradient(to right, transparent 10%, #000 25%, #000 100%);
6665
6655
 
6666
6656
  position: absolute;
6667
6657
  inset-inline: var(--inset);
@@ -6717,6 +6707,37 @@ export const { Player } = createPlayer({ features: videoFeatures });
6717
6707
  justify-content: end;
6718
6708
  }
6719
6709
 
6710
+ :is(.media-time-controls, .media-button-group:last-child) {
6711
+ mask-image: var(--volume-mask-image, none);
6712
+ mask-repeat: no-repeat;
6713
+ mask-position: var(--volume-mask-position, 100% 0);
6714
+ mask-size: var(--volume-mask-size, 200% 100%);
6715
+ transition: mask-position 50ms ease-out;
6716
+ }
6717
+
6718
+ @container media-root (width <= 42rem) {
6719
+ .media-popover--volume {
6720
+ --media-popover-side-offset: calc(var(--spacing) * 3);
6721
+ }
6722
+ }
6723
+
6724
+ &:has(.media-button--mute[aria-expanded="true"]) {
6725
+ @container media-root (width <= 42rem) {
6726
+ .media-button-group:last-child {
6727
+ --volume-mask-image: var(--volume-mask);
6728
+ --volume-mask-position: 0 0;
6729
+ --volume-mask-size: 400% 100%;
6730
+ }
6731
+ }
6732
+
6733
+ @container media-root (width > 42rem) {
6734
+ .media-time-controls {
6735
+ --volume-mask-image: var(--volume-mask);
6736
+ --volume-mask-position: 0 0;
6737
+ }
6738
+ }
6739
+ }
6740
+
6720
6741
  @container media-root (width > 42rem) {
6721
6742
  --inset-factor: 2;
6722
6743
  --base-side-offset: 2;
@@ -6734,20 +6755,6 @@ export const { Player } = createPlayer({ features: videoFeatures });
6734
6755
  .media-button-group:last-child {
6735
6756
  flex: 0 0 auto;
6736
6757
  }
6737
-
6738
- .media-time-controls {
6739
- mask-position: 100% 0;
6740
- mask-size: 200% 100%;
6741
- transition: mask-position 50ms ease-out;
6742
- }
6743
-
6744
- &:has(.media-button--mute[aria-expanded="true"]) .media-time-controls {
6745
- mask-image: linear-gradient(to right, transparent 10%, #000 25%, #000 100%);
6746
- }
6747
-
6748
- &:has(.media-button--mute[aria-expanded="true"]) .media-time-controls {
6749
- mask-position: 0 0;
6750
- }
6751
6758
  }
6752
6759
  }
6753
6760
 
@@ -6772,9 +6779,9 @@ export const { Player } = createPlayer({ features: videoFeatures });
6772
6779
  .media-minimal-skin--video .media-slider .media-slider__preview {
6773
6780
  --preview-end-inset: calc(100cqi - 100%);
6774
6781
  --preview-left: clamp(
6775
- calc(var(--max-width) / 2),
6782
+ calc(var(--max-size) / 2),
6776
6783
  var(--media-slider-pointer),
6777
- calc(100% - var(--max-width) / 2 + var(--preview-end-inset))
6784
+ calc(100% - var(--max-size) / 2 + var(--preview-end-inset))
6778
6785
  );
6779
6786
 
6780
6787
  @container media-root (width > 42rem) {
@@ -6798,7 +6805,7 @@ skin.css
6798
6805
  import { type CSSProperties, type ComponentProps, forwardRef, type ReactNode } from 'react';
6799
6806
  import { playbackRateText } from '@videojs/core/i18n/text/menu';
6800
6807
  import { CheckIcon, PauseIcon, PlayIcon, RestartIcon, SeekIcon, SpinnerIcon, VolumeHighIcon, VolumeLowIcon, VolumeOffIcon } from '@videojs/react/icons/minimal';
6801
- import { useTranslator, Container, usePlayer, BufferingIndicator, ErrorDialog, Hotkey, Menu, MuteButton, PlayButton, usePlaybackRateOptions, PlaybackRateButton, PlaybackRateRadioGroup as PlaybackRateRadioGroupComponent, Popover, SeekButton, StatusAnnouncer, Time, TimeSlider, Tooltip, VolumeSlider, type Poster, type RenderProp } from '@videojs/react';
6808
+ import { useTranslator, Container, usePlayer, BufferingIndicator, ErrorDialog, Hotkey, Menu, MuteButton, PlayButton, usePlaybackRateOptions, PlaybackRateButton, PlaybackRateRadioGroup as PlaybackRateRadioGroupComponent, Popover, SeekButton, StatusAnnouncer, Time, TimeSlider, Tooltip, VolumeSlider, type Poster } from '@videojs/react';
6802
6809
  import { Audio } from '@videojs/react/audio';
6803
6810
  import './player.css';
6804
6811
  import { Player } from './player';
@@ -7489,9 +7496,13 @@ export const { Player } = createPlayer({ features: audioFeatures });
7489
7496
  }
7490
7497
 
7491
7498
  .media-minimal-skin .media-slider {
7499
+ --track-size: calc(var(--spacing) * 1);
7500
+ --track-highlighted-size: calc(var(--spacing) * 1.75);
7501
+ --track-border-radius: 99px;
7492
7502
  --thumb-size: calc(var(--spacing) * 3);
7493
- --thumb-active-size: calc(var(--spacing) * 3);
7494
- --track-border-radius: calc(Infinity * 1px);
7503
+ --chapter-gap: calc(var(--spacing) * 1);
7504
+ --chapter-inset-start: calc(var(--chapter-gap) / 2);
7505
+ --chapter-inset-end: calc(var(--chapter-gap) / 2);
7495
7506
 
7496
7507
  position: relative;
7497
7508
  display: flex;
@@ -7523,68 +7534,14 @@ export const { Player } = createPlayer({ features: audioFeatures });
7523
7534
 
7524
7535
  &[data-orientation="horizontal"] {
7525
7536
  width: 100%;
7526
- height: calc(var(--spacing) * 0.75);
7537
+ height: var(--track-size);
7527
7538
  }
7528
7539
  &[data-orientation="vertical"] {
7529
- width: calc(var(--spacing) * 0.75);
7540
+ width: var(--track-size);
7530
7541
  height: 100%;
7531
7542
  }
7532
7543
  }
7533
7544
 
7534
- /* Thumb */
7535
- .media-slider__thumb {
7536
- position: absolute;
7537
- z-index: 10;
7538
- width: var(--thumb-size);
7539
- height: var(--thumb-size);
7540
- user-select: none;
7541
- outline: 2px solid transparent;
7542
- outline-offset: -2px;
7543
- background-color: currentColor;
7544
- border-radius: calc(Infinity * 1px);
7545
- box-shadow:
7546
- 0 0 0 1px var(--shadow-current-color, oklch(0 0 0 / 0.15)),
7547
- 0 1px 3px 0 oklch(0 0 0 / 0.15),
7548
- 0 1px 2px -1px oklch(0 0 0 / 0.15);
7549
- opacity: 0;
7550
- transform-origin: center;
7551
- scale: 0.7;
7552
- translate: -50% -50%;
7553
- transition-timing-function: ease-out;
7554
- transition-duration: 150ms;
7555
-
7556
- &[data-orientation="horizontal"] {
7557
- top: 50%;
7558
- left: var(--media-slider-fill);
7559
- }
7560
- &[data-orientation="vertical"] {
7561
- top: calc(100% - var(--media-slider-fill));
7562
- left: 50%;
7563
- }
7564
-
7565
- &:focus-visible {
7566
- outline-color: var(--focus-ring-color);
7567
- outline-offset: 2px;
7568
- }
7569
- }
7570
-
7571
- &:focus-within .media-slider__thumb,
7572
- .media-slider__thumb--persistent {
7573
- width: var(--thumb-active-size);
7574
- height: var(--thumb-active-size);
7575
- opacity: 1;
7576
- scale: 1;
7577
- }
7578
-
7579
- @media (hover: hover) and (pointer: fine) {
7580
- &:hover .media-slider__thumb {
7581
- width: var(--thumb-active-size);
7582
- height: var(--thumb-active-size);
7583
- opacity: 1;
7584
- scale: 1;
7585
- }
7586
- }
7587
-
7588
7545
  /* Shared track fills */
7589
7546
  .media-slider__buffer,
7590
7547
  .media-slider__fill {
@@ -7596,13 +7553,22 @@ export const { Player } = createPlayer({ features: audioFeatures });
7596
7553
  inset-block: 0;
7597
7554
  left: 0;
7598
7555
  width: 100%;
7599
- transition-property: clip-path;
7600
7556
  }
7601
7557
  &[data-orientation="vertical"] {
7602
7558
  inset-inline: 0;
7603
7559
  bottom: 0;
7604
7560
  height: 100%;
7605
- transition-property: clip-path;
7561
+ }
7562
+
7563
+ @media (prefers-reduced-motion: no-preference) {
7564
+ transition: clip-path 200ms ease-out;
7565
+ }
7566
+ }
7567
+ &[data-dragging],
7568
+ &[data-seeking] {
7569
+ .media-slider__fill,
7570
+ .media-slider__buffer {
7571
+ transition-duration: 0ms;
7606
7572
  }
7607
7573
  }
7608
7574
 
@@ -7629,6 +7595,14 @@ export const { Player } = createPlayer({ features: audioFeatures });
7629
7595
  clip-path: inset(calc(100% - var(--media-slider-fill)) 0 0 0 round var(--track-border-radius));
7630
7596
  }
7631
7597
  }
7598
+ &[data-dragging] {
7599
+ .media-slider__fill[data-orientation="horizontal"] {
7600
+ clip-path: inset(0 calc(100% - var(--media-slider-pointer)) 0 0 round var(--track-border-radius));
7601
+ }
7602
+ .media-slider__fill[data-orientation="vertical"] {
7603
+ clip-path: inset(calc(100% - var(--media-slider-pointer)) 0 0 0 round var(--track-border-radius));
7604
+ }
7605
+ }
7632
7606
 
7633
7607
  /* Chapters */
7634
7608
  .media-slider__chapters {
@@ -7652,9 +7626,6 @@ export const { Player } = createPlayer({ features: audioFeatures });
7652
7626
  }
7653
7627
 
7654
7628
  .media-slider__chapter {
7655
- --chapter-gap: calc(var(--spacing) * 1);
7656
- --chapter-inset-start: 0.5;
7657
- --chapter-inset-end: 0.5;
7658
7629
  position: absolute;
7659
7630
  inset: 0;
7660
7631
  display: flex;
@@ -7664,15 +7635,13 @@ export const { Player } = createPlayer({ features: audioFeatures });
7664
7635
  min-height: 0;
7665
7636
 
7666
7637
  &:first-child {
7667
- --chapter-inset-start: 0;
7638
+ --chapter-inset-start: 0px;
7668
7639
  }
7669
7640
  &:last-child {
7670
- --chapter-inset-end: 0;
7641
+ --chapter-inset-end: 0px;
7671
7642
  }
7672
7643
 
7673
7644
  .media-slider__chapter-track {
7674
- --chapter-track-size: calc(var(--spacing) * 0.75);
7675
- --chapter-track-highlighted-size: calc(var(--spacing) * 1.25);
7676
7645
  border-radius: var(--track-border-radius);
7677
7646
 
7678
7647
  @media (prefers-reduced-motion: no-preference) {
@@ -7685,16 +7654,15 @@ export const { Player } = createPlayer({ features: audioFeatures });
7685
7654
  clip-path: inset(0 calc(100% - var(--media-slider-chapter-end)) 0 var(--media-slider-chapter-start));
7686
7655
 
7687
7656
  .media-slider__chapter-track {
7688
- height: var(--chapter-track-size);
7657
+ height: var(--track-size);
7689
7658
  clip-path: inset(
7690
- 0 calc(100% - var(--media-slider-chapter-end) + var(--chapter-gap) * var(--chapter-inset-end)) 0
7691
- calc(var(--media-slider-chapter-start) + var(--chapter-gap) * var(--chapter-inset-start)) round
7692
- var(--track-border-radius)
7659
+ 0 calc(100% - var(--media-slider-chapter-end) + var(--chapter-inset-end)) 0
7660
+ calc(var(--media-slider-chapter-start) + var(--chapter-inset-start)) round var(--track-border-radius)
7693
7661
  );
7694
7662
  }
7695
7663
 
7696
7664
  &[data-highlighted] .media-slider__chapter-track {
7697
- height: var(--chapter-track-highlighted-size);
7665
+ height: var(--track-highlighted-size);
7698
7666
  }
7699
7667
  }
7700
7668
 
@@ -7702,72 +7670,110 @@ export const { Player } = createPlayer({ features: audioFeatures });
7702
7670
  clip-path: inset(calc(100% - var(--media-slider-chapter-end)) 0 var(--media-slider-chapter-start) 0);
7703
7671
 
7704
7672
  .media-slider__chapter-track {
7705
- width: var(--chapter-track-size);
7673
+ width: var(--track-size);
7706
7674
  clip-path: inset(
7707
- calc(100% - var(--media-slider-chapter-end) + var(--chapter-gap) * var(--chapter-inset-end)) 0
7708
- calc(var(--media-slider-chapter-start) + var(--chapter-gap) * var(--chapter-inset-start)) 0 round
7709
- var(--track-border-radius)
7675
+ calc(100% - var(--media-slider-chapter-end) + var(--chapter-inset-end)) 0
7676
+ calc(var(--media-slider-chapter-start) + var(--chapter-inset-start)) 0 round var(--track-border-radius)
7710
7677
  );
7711
7678
  }
7712
7679
 
7713
7680
  &[data-highlighted] .media-slider__chapter-track {
7714
- width: var(--chapter-track-highlighted-size);
7681
+ width: var(--track-highlighted-size);
7715
7682
  }
7716
7683
  }
7717
7684
  }
7718
7685
 
7719
- /* Dragging — thumb and fill follow the pointer position */
7720
- &[data-dragging] {
7721
- .media-slider__thumb[data-orientation="horizontal"] {
7722
- left: var(--media-slider-pointer);
7723
- }
7724
- .media-slider__thumb[data-orientation="vertical"] {
7725
- top: calc(100% - var(--media-slider-pointer));
7726
- }
7727
- .media-slider__fill[data-orientation="horizontal"] {
7728
- clip-path: inset(0 calc(100% - var(--media-slider-pointer)) 0 0 round var(--track-border-radius));
7686
+ /* Thumb */
7687
+ .media-slider__thumb {
7688
+ position: absolute;
7689
+ z-index: 10;
7690
+ width: var(--thumb-size);
7691
+ height: var(--thumb-size);
7692
+ user-select: none;
7693
+ outline: 2px solid transparent;
7694
+ outline-offset: -2px;
7695
+ background-color: currentColor;
7696
+ border-radius: calc(Infinity * 1px);
7697
+ box-shadow:
7698
+ 0 0 0 1px var(--shadow-current-color, oklch(0 0 0 / 0.15)),
7699
+ 0 1px 3px 0 oklch(0 0 0 / 0.15),
7700
+ 0 1px 2px -1px oklch(0 0 0 / 0.15);
7701
+ opacity: 0;
7702
+ transform-origin: center;
7703
+ scale: 0.7;
7704
+ translate: -50% -50%;
7705
+
7706
+ &[data-orientation="horizontal"] {
7707
+ top: 50%;
7708
+ left: var(--media-slider-fill);
7729
7709
  }
7730
- .media-slider__fill[data-orientation="vertical"] {
7731
- clip-path: inset(calc(100% - var(--media-slider-pointer)) 0 0 0 round var(--track-border-radius));
7710
+ &[data-orientation="vertical"] {
7711
+ top: calc(100% - var(--media-slider-fill));
7712
+ left: 50%;
7732
7713
  }
7733
- }
7734
7714
 
7735
- @media (prefers-reduced-motion: no-preference) {
7736
- .media-slider__thumb {
7737
- transition-property: opacity, scale, height, width, outline-offset, left, top;
7715
+ &:focus-visible {
7716
+ outline-color: var(--focus-ring-color);
7717
+ outline-offset: 2px;
7738
7718
  }
7739
- .media-slider__fill {
7740
- transition-timing-function: linear;
7741
- transition-duration: 200ms;
7719
+
7720
+ &:focus-visible,
7721
+ &.media-slider__thumb--persistent {
7722
+ opacity: 1;
7723
+ scale: 1;
7742
7724
  }
7743
- .media-slider__buffer {
7725
+
7726
+ @media (prefers-reduced-motion: no-preference) {
7744
7727
  transition-timing-function: ease-out;
7745
- transition-duration: 250ms;
7728
+ transition-duration: 150ms;
7729
+ transition-property: opacity, outline-offset, left, top, scale;
7746
7730
  }
7747
7731
  }
7748
7732
 
7749
- &[data-dragging],
7750
- &[data-seeking] {
7751
- .media-slider__thumb,
7752
- .media-slider__fill,
7753
- .media-slider__buffer {
7754
- transition-duration: 0ms;
7733
+ @media (hover: hover) and (pointer: fine) {
7734
+ &:hover .media-slider__thumb {
7735
+ opacity: 1;
7736
+ scale: 1;
7737
+ }
7738
+ }
7739
+
7740
+ &[data-dragging] .media-slider__thumb {
7741
+ opacity: 1;
7742
+ scale: 0.9;
7743
+
7744
+ @media (prefers-reduced-motion: no-preference) {
7745
+ transition-property: opacity, outline-offset, scale;
7746
+ }
7747
+
7748
+ &[data-orientation="horizontal"] {
7749
+ left: var(--media-slider-pointer);
7750
+ }
7751
+ &[data-orientation="vertical"] {
7752
+ top: calc(100% - var(--media-slider-pointer));
7755
7753
  }
7756
7754
  }
7757
7755
 
7758
7756
  /* Preview */
7759
7757
  .media-slider__preview {
7760
- --max-width: min(calc(var(--spacing) * 48), 100cqi);
7761
- --max-height: calc(var(--spacing) * 32);
7758
+ --max-size-factor: 28;
7759
+ --max-size: min(calc(var(--spacing) * var(--max-size-factor)), 100cqi);
7762
7760
 
7763
7761
  min-width: 100%;
7764
7762
  height: calc(var(--spacing) * 1);
7765
7763
 
7764
+ @container media-root (width > 32rem) {
7765
+ --max-size-factor: 36;
7766
+ }
7767
+
7768
+ @container media-root (width > 42rem) {
7769
+ --max-size-factor: 48;
7770
+ }
7771
+
7766
7772
  .media-slider__thumbnail,
7767
7773
  .media-slider__value {
7768
7774
  position: absolute;
7769
7775
  left: var(--preview-left, var(--media-slider-pointer));
7770
- max-width: var(--max-width);
7776
+ max-width: var(--max-size);
7771
7777
  opacity: 0;
7772
7778
  filter: blur(8px);
7773
7779
  transform-origin: bottom;
@@ -7779,8 +7785,9 @@ export const { Player } = createPlayer({ features: audioFeatures });
7779
7785
  }
7780
7786
 
7781
7787
  .media-slider__thumbnail {
7782
- --thumbnail-max-width: var(--max-width);
7783
- bottom: calc(100% + (var(--spacing) * 12));
7788
+ --thumbnail-max-width: var(--max-size);
7789
+ --thumbnail-max-height: var(--max-size);
7790
+ bottom: calc(100% + (var(--spacing) * 11));
7784
7791
  }
7785
7792
 
7786
7793
  .media-slider__value {
@@ -7818,15 +7825,6 @@ export const { Player } = createPlayer({ features: audioFeatures });
7818
7825
  transition-property: opacity, scale;
7819
7826
  }
7820
7827
 
7821
- &[data-pointing] .media-slider__value,
7822
- &[data-pointing] .media-slider__thumbnail,
7823
- &[data-interactive]:not([data-pointing]):not([data-dragging]) .media-slider__value,
7824
- &[data-interactive]:not([data-pointing]):not([data-dragging]) .media-slider__thumbnail {
7825
- opacity: 1;
7826
- filter: blur(0);
7827
- scale: 1;
7828
- }
7829
-
7830
7828
  &[data-orientation="horizontal"]::before {
7831
7829
  top: 50%;
7832
7830
  left: var(--media-slider-pointer);
@@ -7845,6 +7843,14 @@ export const { Player } = createPlayer({ features: audioFeatures });
7845
7843
  scale: 1;
7846
7844
  }
7847
7845
  }
7846
+
7847
+ &:is([data-pointing], :has(:focus-visible))
7848
+ .media-slider__preview
7849
+ :is(.media-slider__value, .media-slider__thumbnail) {
7850
+ opacity: 1;
7851
+ filter: blur(0);
7852
+ scale: 1;
7853
+ }
7848
7854
  }
7849
7855
 
7850
7856
  .media-minimal-skin {