@videojs/react 10.0.0-beta.5 → 10.0.0-beta.7

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 (332) hide show
  1. package/dist/default/icons/dist/react/default/captions-off.js +0 -1
  2. package/dist/default/icons/dist/react/default/captions-off.js.map +1 -1
  3. package/dist/default/icons/dist/react/default/captions-on.js +0 -1
  4. package/dist/default/icons/dist/react/default/captions-on.js.map +1 -1
  5. package/dist/default/icons/dist/react/default/fullscreen-enter.js +0 -1
  6. package/dist/default/icons/dist/react/default/fullscreen-enter.js.map +1 -1
  7. package/dist/default/icons/dist/react/default/fullscreen-exit.js +0 -1
  8. package/dist/default/icons/dist/react/default/fullscreen-exit.js.map +1 -1
  9. package/dist/default/icons/dist/react/default/pause.js +0 -1
  10. package/dist/default/icons/dist/react/default/pause.js.map +1 -1
  11. package/dist/default/icons/dist/react/default/pip-enter.js +33 -0
  12. package/dist/default/icons/dist/react/default/pip-enter.js.map +1 -0
  13. package/dist/default/icons/dist/react/default/pip-exit.js +33 -0
  14. package/dist/default/icons/dist/react/default/pip-exit.js.map +1 -0
  15. package/dist/default/icons/dist/react/default/play.js +0 -1
  16. package/dist/default/icons/dist/react/default/play.js.map +1 -1
  17. package/dist/default/icons/dist/react/default/restart.js +0 -1
  18. package/dist/default/icons/dist/react/default/restart.js.map +1 -1
  19. package/dist/default/icons/dist/react/default/seek.js +0 -1
  20. package/dist/default/icons/dist/react/default/seek.js.map +1 -1
  21. package/dist/default/icons/dist/react/default/spinner.js +0 -1
  22. package/dist/default/icons/dist/react/default/spinner.js.map +1 -1
  23. package/dist/default/icons/dist/react/default/volume-high.js +0 -1
  24. package/dist/default/icons/dist/react/default/volume-high.js.map +1 -1
  25. package/dist/default/icons/dist/react/default/volume-low.js +0 -1
  26. package/dist/default/icons/dist/react/default/volume-low.js.map +1 -1
  27. package/dist/default/icons/dist/react/default/volume-off.js +0 -1
  28. package/dist/default/icons/dist/react/default/volume-off.js.map +1 -1
  29. package/dist/default/icons/dist/react/minimal/captions-off.js +0 -1
  30. package/dist/default/icons/dist/react/minimal/captions-off.js.map +1 -1
  31. package/dist/default/icons/dist/react/minimal/captions-on.js +0 -1
  32. package/dist/default/icons/dist/react/minimal/captions-on.js.map +1 -1
  33. package/dist/default/icons/dist/react/minimal/fullscreen-enter.js +0 -1
  34. package/dist/default/icons/dist/react/minimal/fullscreen-enter.js.map +1 -1
  35. package/dist/default/icons/dist/react/minimal/fullscreen-exit.js +0 -1
  36. package/dist/default/icons/dist/react/minimal/fullscreen-exit.js.map +1 -1
  37. package/dist/default/icons/dist/react/minimal/pause.js +0 -1
  38. package/dist/default/icons/dist/react/minimal/pause.js.map +1 -1
  39. package/dist/default/icons/dist/react/minimal/pip-enter.js +37 -0
  40. package/dist/default/icons/dist/react/minimal/pip-enter.js.map +1 -0
  41. package/dist/default/icons/dist/react/minimal/pip-exit.js +37 -0
  42. package/dist/default/icons/dist/react/minimal/pip-exit.js.map +1 -0
  43. package/dist/default/icons/dist/react/minimal/play.js +0 -1
  44. package/dist/default/icons/dist/react/minimal/play.js.map +1 -1
  45. package/dist/default/icons/dist/react/minimal/restart.js +0 -1
  46. package/dist/default/icons/dist/react/minimal/restart.js.map +1 -1
  47. package/dist/default/icons/dist/react/minimal/seek.js +0 -1
  48. package/dist/default/icons/dist/react/minimal/seek.js.map +1 -1
  49. package/dist/default/icons/dist/react/minimal/spinner.js +0 -1
  50. package/dist/default/icons/dist/react/minimal/spinner.js.map +1 -1
  51. package/dist/default/icons/dist/react/minimal/volume-high.js +0 -1
  52. package/dist/default/icons/dist/react/minimal/volume-high.js.map +1 -1
  53. package/dist/default/icons/dist/react/minimal/volume-low.js +0 -1
  54. package/dist/default/icons/dist/react/minimal/volume-low.js.map +1 -1
  55. package/dist/default/icons/dist/react/minimal/volume-off.js +0 -1
  56. package/dist/default/icons/dist/react/minimal/volume-off.js.map +1 -1
  57. package/dist/default/index.js +2 -2
  58. package/dist/default/media/audio.js +3 -6
  59. package/dist/default/media/audio.js.map +1 -1
  60. package/dist/default/media/background-video/index.js +2 -2
  61. package/dist/default/media/background-video/index.js.map +1 -1
  62. package/dist/default/media/dash-video/index.js +26 -0
  63. package/dist/default/media/dash-video/index.js.map +1 -0
  64. package/dist/default/media/hls-video/index.js +2 -2
  65. package/dist/default/media/hls-video/index.js.map +1 -1
  66. package/dist/default/media/simple-hls-video/index.js +2 -2
  67. package/dist/default/media/simple-hls-video/index.js.map +1 -1
  68. package/dist/default/media/video.js +3 -6
  69. package/dist/default/media/video.js.map +1 -1
  70. package/dist/default/player/context.js +16 -10
  71. package/dist/default/player/context.js.map +1 -1
  72. package/dist/default/player/create-player.js +16 -2
  73. package/dist/default/player/create-player.js.map +1 -1
  74. package/dist/default/presets/audio/minimal-skin.css +77 -20
  75. package/dist/default/presets/audio/minimal-skin.js +32 -26
  76. package/dist/default/presets/audio/minimal-skin.js.map +1 -1
  77. package/dist/default/presets/audio/minimal-skin.tailwind.js +36 -30
  78. package/dist/default/presets/audio/minimal-skin.tailwind.js.map +1 -1
  79. package/dist/default/presets/audio/skin.css +74 -24
  80. package/dist/default/presets/audio/skin.js +32 -26
  81. package/dist/default/presets/audio/skin.js.map +1 -1
  82. package/dist/default/presets/audio/skin.tailwind.js +37 -32
  83. package/dist/default/presets/audio/skin.tailwind.js.map +1 -1
  84. package/dist/default/presets/video/minimal-skin.css +259 -77
  85. package/dist/default/presets/video/minimal-skin.js +68 -35
  86. package/dist/default/presets/video/minimal-skin.js.map +1 -1
  87. package/dist/default/presets/video/minimal-skin.tailwind.js +79 -43
  88. package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
  89. package/dist/default/presets/video/skin.css +244 -72
  90. package/dist/default/presets/video/skin.js +66 -36
  91. package/dist/default/presets/video/skin.js.map +1 -1
  92. package/dist/default/presets/video/skin.tailwind.js +77 -44
  93. package/dist/default/presets/video/skin.tailwind.js.map +1 -1
  94. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js +6 -5
  95. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  96. package/dist/default/skins/dist/default/default/tailwind/components/button.js +1 -1
  97. package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  98. package/dist/default/skins/dist/default/default/tailwind/components/controls.js +1 -1
  99. package/dist/default/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  100. package/dist/default/skins/dist/default/default/tailwind/components/error.js +1 -1
  101. package/dist/default/skins/dist/default/default/tailwind/components/error.js.map +1 -1
  102. package/dist/default/skins/dist/default/default/tailwind/components/popup.js +3 -3
  103. package/dist/default/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  104. package/dist/default/skins/dist/default/default/tailwind/components/poster.js +16 -0
  105. package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -0
  106. package/dist/default/skins/dist/default/default/tailwind/components/preview.js +13 -0
  107. package/dist/default/skins/dist/default/default/tailwind/components/preview.js.map +1 -0
  108. package/dist/default/skins/dist/default/default/tailwind/components/root.js +1 -1
  109. package/dist/default/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  110. package/dist/default/skins/dist/default/default/tailwind/components/slider.js +1 -1
  111. package/dist/default/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  112. package/dist/default/skins/dist/default/default/tailwind/components/surface.js +1 -1
  113. package/dist/default/skins/dist/default/default/tailwind/components/surface.js.map +1 -1
  114. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +21 -15
  115. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  116. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +2 -2
  117. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  118. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js +1 -1
  119. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  120. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  121. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  122. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js +1 -1
  123. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js.map +1 -1
  124. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js +4 -3
  125. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  126. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +16 -0
  127. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -0
  128. package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js +14 -0
  129. package/dist/default/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -0
  130. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js +1 -1
  131. package/dist/default/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
  132. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js +1 -1
  133. package/dist/default/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  134. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js +1 -1
  135. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  136. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +22 -15
  137. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  138. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +5 -0
  139. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  140. package/dist/default/ui/popover/popover-popup.js +11 -2
  141. package/dist/default/ui/popover/popover-popup.js.map +1 -1
  142. package/dist/default/ui/thumbnail/index.js +3 -0
  143. package/dist/default/ui/time-slider/time-slider-root.js +1 -1
  144. package/dist/default/ui/time-slider/time-slider-root.js.map +1 -1
  145. package/dist/default/ui/tooltip/tooltip-popup.js +11 -2
  146. package/dist/default/ui/tooltip/tooltip-popup.js.map +1 -1
  147. package/dist/default/ui/volume-slider/volume-slider-root.js +3 -3
  148. package/dist/default/ui/volume-slider/volume-slider-root.js.map +1 -1
  149. package/dist/default/utils/use-render.js +5 -1
  150. package/dist/default/utils/use-render.js.map +1 -1
  151. package/dist/dev/icons/dist/react/default/captions-off.js +0 -1
  152. package/dist/dev/icons/dist/react/default/captions-off.js.map +1 -1
  153. package/dist/dev/icons/dist/react/default/captions-on.js +0 -1
  154. package/dist/dev/icons/dist/react/default/captions-on.js.map +1 -1
  155. package/dist/dev/icons/dist/react/default/fullscreen-enter.js +0 -1
  156. package/dist/dev/icons/dist/react/default/fullscreen-enter.js.map +1 -1
  157. package/dist/dev/icons/dist/react/default/fullscreen-exit.js +0 -1
  158. package/dist/dev/icons/dist/react/default/fullscreen-exit.js.map +1 -1
  159. package/dist/dev/icons/dist/react/default/pause.js +0 -1
  160. package/dist/dev/icons/dist/react/default/pause.js.map +1 -1
  161. package/dist/dev/icons/dist/react/default/pip-enter.js +33 -0
  162. package/dist/dev/icons/dist/react/default/pip-enter.js.map +1 -0
  163. package/dist/dev/icons/dist/react/default/pip-exit.js +33 -0
  164. package/dist/dev/icons/dist/react/default/pip-exit.js.map +1 -0
  165. package/dist/dev/icons/dist/react/default/play.js +0 -1
  166. package/dist/dev/icons/dist/react/default/play.js.map +1 -1
  167. package/dist/dev/icons/dist/react/default/restart.js +0 -1
  168. package/dist/dev/icons/dist/react/default/restart.js.map +1 -1
  169. package/dist/dev/icons/dist/react/default/seek.js +0 -1
  170. package/dist/dev/icons/dist/react/default/seek.js.map +1 -1
  171. package/dist/dev/icons/dist/react/default/spinner.js +0 -1
  172. package/dist/dev/icons/dist/react/default/spinner.js.map +1 -1
  173. package/dist/dev/icons/dist/react/default/volume-high.js +0 -1
  174. package/dist/dev/icons/dist/react/default/volume-high.js.map +1 -1
  175. package/dist/dev/icons/dist/react/default/volume-low.js +0 -1
  176. package/dist/dev/icons/dist/react/default/volume-low.js.map +1 -1
  177. package/dist/dev/icons/dist/react/default/volume-off.js +0 -1
  178. package/dist/dev/icons/dist/react/default/volume-off.js.map +1 -1
  179. package/dist/dev/icons/dist/react/minimal/captions-off.js +0 -1
  180. package/dist/dev/icons/dist/react/minimal/captions-off.js.map +1 -1
  181. package/dist/dev/icons/dist/react/minimal/captions-on.js +0 -1
  182. package/dist/dev/icons/dist/react/minimal/captions-on.js.map +1 -1
  183. package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js +0 -1
  184. package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js.map +1 -1
  185. package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js +0 -1
  186. package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js.map +1 -1
  187. package/dist/dev/icons/dist/react/minimal/pause.js +0 -1
  188. package/dist/dev/icons/dist/react/minimal/pause.js.map +1 -1
  189. package/dist/dev/icons/dist/react/minimal/pip-enter.js +37 -0
  190. package/dist/dev/icons/dist/react/minimal/pip-enter.js.map +1 -0
  191. package/dist/dev/icons/dist/react/minimal/pip-exit.js +37 -0
  192. package/dist/dev/icons/dist/react/minimal/pip-exit.js.map +1 -0
  193. package/dist/dev/icons/dist/react/minimal/play.js +0 -1
  194. package/dist/dev/icons/dist/react/minimal/play.js.map +1 -1
  195. package/dist/dev/icons/dist/react/minimal/restart.js +0 -1
  196. package/dist/dev/icons/dist/react/minimal/restart.js.map +1 -1
  197. package/dist/dev/icons/dist/react/minimal/seek.js +0 -1
  198. package/dist/dev/icons/dist/react/minimal/seek.js.map +1 -1
  199. package/dist/dev/icons/dist/react/minimal/spinner.js +0 -1
  200. package/dist/dev/icons/dist/react/minimal/spinner.js.map +1 -1
  201. package/dist/dev/icons/dist/react/minimal/volume-high.js +0 -1
  202. package/dist/dev/icons/dist/react/minimal/volume-high.js.map +1 -1
  203. package/dist/dev/icons/dist/react/minimal/volume-low.js +0 -1
  204. package/dist/dev/icons/dist/react/minimal/volume-low.js.map +1 -1
  205. package/dist/dev/icons/dist/react/minimal/volume-off.js +0 -1
  206. package/dist/dev/icons/dist/react/minimal/volume-off.js.map +1 -1
  207. package/dist/dev/index.d.ts +2 -2
  208. package/dist/dev/index.js +2 -2
  209. package/dist/dev/media/audio.d.ts.map +1 -1
  210. package/dist/dev/media/audio.js +3 -6
  211. package/dist/dev/media/audio.js.map +1 -1
  212. package/dist/dev/media/background-video/index.js +2 -2
  213. package/dist/dev/media/background-video/index.js.map +1 -1
  214. package/dist/dev/media/dash-video/index.d.ts +11 -0
  215. package/dist/dev/media/dash-video/index.d.ts.map +1 -0
  216. package/dist/dev/media/dash-video/index.js +26 -0
  217. package/dist/dev/media/dash-video/index.js.map +1 -0
  218. package/dist/dev/media/hls-video/index.js +2 -2
  219. package/dist/dev/media/hls-video/index.js.map +1 -1
  220. package/dist/dev/media/simple-hls-video/index.js +2 -2
  221. package/dist/dev/media/simple-hls-video/index.js.map +1 -1
  222. package/dist/dev/media/video.d.ts.map +1 -1
  223. package/dist/dev/media/video.js +3 -6
  224. package/dist/dev/media/video.js.map +1 -1
  225. package/dist/dev/player/context.d.ts +10 -4
  226. package/dist/dev/player/context.d.ts.map +1 -1
  227. package/dist/dev/player/context.js +16 -10
  228. package/dist/dev/player/context.js.map +1 -1
  229. package/dist/dev/player/create-player.js +16 -2
  230. package/dist/dev/player/create-player.js.map +1 -1
  231. package/dist/dev/presets/audio/minimal-skin.css +77 -20
  232. package/dist/dev/presets/audio/minimal-skin.d.ts.map +1 -1
  233. package/dist/dev/presets/audio/minimal-skin.js +32 -26
  234. package/dist/dev/presets/audio/minimal-skin.js.map +1 -1
  235. package/dist/dev/presets/audio/minimal-skin.tailwind.d.ts.map +1 -1
  236. package/dist/dev/presets/audio/minimal-skin.tailwind.js +36 -30
  237. package/dist/dev/presets/audio/minimal-skin.tailwind.js.map +1 -1
  238. package/dist/dev/presets/audio/skin.css +74 -24
  239. package/dist/dev/presets/audio/skin.d.ts.map +1 -1
  240. package/dist/dev/presets/audio/skin.js +32 -26
  241. package/dist/dev/presets/audio/skin.js.map +1 -1
  242. package/dist/dev/presets/audio/skin.tailwind.d.ts.map +1 -1
  243. package/dist/dev/presets/audio/skin.tailwind.js +37 -32
  244. package/dist/dev/presets/audio/skin.tailwind.js.map +1 -1
  245. package/dist/dev/presets/types.d.ts +6 -1
  246. package/dist/dev/presets/types.d.ts.map +1 -1
  247. package/dist/dev/presets/video/minimal-skin.css +259 -77
  248. package/dist/dev/presets/video/minimal-skin.d.ts +2 -2
  249. package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
  250. package/dist/dev/presets/video/minimal-skin.js +68 -35
  251. package/dist/dev/presets/video/minimal-skin.js.map +1 -1
  252. package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
  253. package/dist/dev/presets/video/minimal-skin.tailwind.js +78 -42
  254. package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
  255. package/dist/dev/presets/video/skin.css +244 -72
  256. package/dist/dev/presets/video/skin.d.ts +2 -2
  257. package/dist/dev/presets/video/skin.d.ts.map +1 -1
  258. package/dist/dev/presets/video/skin.js +65 -35
  259. package/dist/dev/presets/video/skin.js.map +1 -1
  260. package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
  261. package/dist/dev/presets/video/skin.tailwind.js +75 -42
  262. package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
  263. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +6 -5
  264. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  265. package/dist/dev/skins/dist/default/default/tailwind/components/button.js +1 -1
  266. package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  267. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js +1 -1
  268. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  269. package/dist/dev/skins/dist/default/default/tailwind/components/error.js +1 -1
  270. package/dist/dev/skins/dist/default/default/tailwind/components/error.js.map +1 -1
  271. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js +3 -3
  272. package/dist/dev/skins/dist/default/default/tailwind/components/popup.js.map +1 -1
  273. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js +16 -0
  274. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js.map +1 -0
  275. package/dist/dev/skins/dist/default/default/tailwind/components/preview.js +13 -0
  276. package/dist/dev/skins/dist/default/default/tailwind/components/preview.js.map +1 -0
  277. package/dist/dev/skins/dist/default/default/tailwind/components/root.js +1 -1
  278. package/dist/dev/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  279. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js +1 -1
  280. package/dist/dev/skins/dist/default/default/tailwind/components/slider.js.map +1 -1
  281. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js +1 -1
  282. package/dist/dev/skins/dist/default/default/tailwind/components/surface.js.map +1 -1
  283. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +21 -15
  284. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  285. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +2 -2
  286. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  287. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js +1 -1
  288. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  289. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  290. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  291. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js +1 -1
  292. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js.map +1 -1
  293. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js +4 -3
  294. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  295. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js +16 -0
  296. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -0
  297. package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js +14 -0
  298. package/dist/dev/skins/dist/default/minimal/tailwind/components/preview.js.map +1 -0
  299. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js +1 -1
  300. package/dist/dev/skins/dist/default/minimal/tailwind/components/root.js.map +1 -1
  301. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js +1 -1
  302. package/dist/dev/skins/dist/default/minimal/tailwind/components/slider.js.map +1 -1
  303. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js +1 -1
  304. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  305. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +22 -15
  306. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  307. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js +5 -0
  308. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  309. package/dist/dev/ui/popover/popover-popup.d.ts.map +1 -1
  310. package/dist/dev/ui/popover/popover-popup.js +11 -2
  311. package/dist/dev/ui/popover/popover-popup.js.map +1 -1
  312. package/dist/dev/ui/thumbnail/index.d.ts +2 -0
  313. package/dist/dev/ui/thumbnail/index.js +3 -0
  314. package/dist/dev/ui/time-slider/time-slider-root.js +1 -1
  315. package/dist/dev/ui/time-slider/time-slider-root.js.map +1 -1
  316. package/dist/dev/ui/tooltip/tooltip-popup.d.ts.map +1 -1
  317. package/dist/dev/ui/tooltip/tooltip-popup.js +11 -2
  318. package/dist/dev/ui/tooltip/tooltip-popup.js.map +1 -1
  319. package/dist/dev/ui/volume-slider/volume-slider-root.js +3 -3
  320. package/dist/dev/ui/volume-slider/volume-slider-root.js.map +1 -1
  321. package/dist/dev/utils/use-render.d.ts.map +1 -1
  322. package/dist/dev/utils/use-render.js +5 -1
  323. package/dist/dev/utils/use-render.js.map +1 -1
  324. package/package.json +7 -7
  325. package/dist/default/icons/dist/react/default/pip.js +0 -27
  326. package/dist/default/icons/dist/react/default/pip.js.map +0 -1
  327. package/dist/default/icons/dist/react/minimal/pip.js +0 -27
  328. package/dist/default/icons/dist/react/minimal/pip.js.map +0 -1
  329. package/dist/dev/icons/dist/react/default/pip.js +0 -27
  330. package/dist/dev/icons/dist/react/default/pip.js.map +0 -1
  331. package/dist/dev/icons/dist/react/minimal/pip.js +0 -27
  332. package/dist/dev/icons/dist/react/minimal/pip.js.map +0 -1
@@ -45,6 +45,37 @@ function PlayLabel() {
45
45
  if (usePlayer((s) => Boolean(s.ended))) return /* @__PURE__ */ jsx(Fragment, { children: "Replay" });
46
46
  return paused ? /* @__PURE__ */ jsx(Fragment, { children: "Play" }) : /* @__PURE__ */ jsx(Fragment, { children: "Pause" });
47
47
  }
48
+ function VolumePopover() {
49
+ const volumeUnsupported = usePlayer((s) => s.volumeAvailability === "unsupported");
50
+ const muteButton = /* @__PURE__ */ jsx(MuteButton, { render: (props) => /* @__PURE__ */ jsxs(Button, {
51
+ ...props,
52
+ className: "media-button--icon media-button--mute",
53
+ children: [
54
+ /* @__PURE__ */ jsx(VolumeOffIcon, { className: "media-icon media-icon--volume-off" }),
55
+ /* @__PURE__ */ jsx(VolumeLowIcon, { className: "media-icon media-icon--volume-low" }),
56
+ /* @__PURE__ */ jsx(VolumeHighIcon, { className: "media-icon media-icon--volume-high" })
57
+ ]
58
+ }) });
59
+ if (volumeUnsupported) return muteButton;
60
+ return /* @__PURE__ */ jsxs(PopoverRoot, {
61
+ openOnHover: true,
62
+ delay: 200,
63
+ closeDelay: 100,
64
+ side: "left",
65
+ children: [/* @__PURE__ */ jsx(PopoverTrigger, { render: muteButton }), /* @__PURE__ */ jsx(PopoverPopup, {
66
+ className: "media-popover media-popover--volume",
67
+ children: /* @__PURE__ */ jsxs(VolumeSliderRoot, {
68
+ className: "media-slider",
69
+ orientation: "horizontal",
70
+ thumbAlignment: "edge",
71
+ children: [/* @__PURE__ */ jsx(SliderTrack, {
72
+ className: "media-slider__track",
73
+ children: /* @__PURE__ */ jsx(SliderFill, { className: "media-slider__fill" })
74
+ }), /* @__PURE__ */ jsx(SliderThumb, { className: "media-slider__thumb media-slider__thumb--persistent" })]
75
+ })
76
+ })]
77
+ });
78
+ }
48
79
  function MinimalAudioSkin(props) {
49
80
  const { children, className, ...rest } = props;
50
81
  return /* @__PURE__ */ jsxs(Container, {
@@ -155,32 +186,7 @@ function MinimalAudioSkin(props) {
155
186
  className: "media-tooltip",
156
187
  children: "Toggle playback rate"
157
188
  })]
158
- }), /* @__PURE__ */ jsxs(PopoverRoot, {
159
- openOnHover: true,
160
- delay: 200,
161
- closeDelay: 100,
162
- side: "left",
163
- children: [/* @__PURE__ */ jsx(PopoverTrigger, { render: /* @__PURE__ */ jsx(MuteButton, { render: (props) => /* @__PURE__ */ jsxs(Button, {
164
- ...props,
165
- className: "media-button--icon media-button--mute",
166
- children: [
167
- /* @__PURE__ */ jsx(VolumeOffIcon, { className: "media-icon media-icon--volume-off" }),
168
- /* @__PURE__ */ jsx(VolumeLowIcon, { className: "media-icon media-icon--volume-low" }),
169
- /* @__PURE__ */ jsx(VolumeHighIcon, { className: "media-icon media-icon--volume-high" })
170
- ]
171
- }) }) }), /* @__PURE__ */ jsx(PopoverPopup, {
172
- className: "media-popover media-popover--volume",
173
- children: /* @__PURE__ */ jsxs(VolumeSliderRoot, {
174
- className: "media-slider",
175
- orientation: "horizontal",
176
- thumbAlignment: "edge",
177
- children: [/* @__PURE__ */ jsx(SliderTrack, {
178
- className: "media-slider__track",
179
- children: /* @__PURE__ */ jsx(SliderFill, { className: "media-slider__fill" })
180
- }), /* @__PURE__ */ jsx(SliderThumb, { className: "media-slider__thumb media-slider__thumb--persistent" })]
181
- })
182
- })]
183
- })]
189
+ }), /* @__PURE__ */ jsx(VolumePopover, {})]
184
190
  })
185
191
  ] })
186
192
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"minimal-skin.js","names":["Tooltip.Provider","Tooltip.Root","Tooltip.Trigger","Tooltip.Popup","Time.Group","Time.Value","Time.Separator","TimeSlider.Root","TimeSlider.Track","TimeSlider.Fill","TimeSlider.Buffer","TimeSlider.Thumb","Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb"],"sources":["../../../../src/presets/audio/minimal-skin.tsx"],"sourcesContent":["import {\n PauseIcon,\n PlayIcon,\n RestartIcon,\n SeekIcon,\n VolumeHighIcon,\n VolumeLowIcon,\n VolumeOffIcon,\n} from '@videojs/icons/react/minimal';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { Container, usePlayer } from '@/player/context';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { PlaybackRateButton } from '@/ui/playback-rate-button';\nimport { Popover } from '@/ui/popover';\nimport { SeekButton } from '@/ui/seek-button';\nimport { Time } from '@/ui/time';\nimport { TimeSlider } from '@/ui/time-slider';\nimport { Tooltip } from '@/ui/tooltip';\nimport { VolumeSlider } from '@/ui/volume-slider';\nimport type { BaseSkinProps } from '../types';\n\nconst SEEK_TIME = 10;\n\nexport type MinimalAudioSkinProps = BaseSkinProps;\n\nconst Button = forwardRef<HTMLButtonElement, ComponentProps<'button'>>(function Button({ className, ...props }, ref) {\n return <button ref={ref} type=\"button\" className={cn('media-button', className)} {...props} />;\n});\n\nfunction PlayLabel(): ReactNode {\n const paused = usePlayer((s) => Boolean(s.paused));\n const ended = usePlayer((s) => Boolean(s.ended));\n if (ended) return <>Replay</>;\n return paused ? <>Play</> : <>Pause</>;\n}\n\nexport function MinimalAudioSkin(props: MinimalAudioSkinProps): ReactNode {\n const { children, className, ...rest } = props;\n\n return (\n <Container className={cn('media-minimal-skin media-minimal-skin--audio', className)} {...rest}>\n {children}\n\n <div className=\"media-controls\">\n <Tooltip.Provider>\n <div className=\"media-button-group\">\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlayButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--play\">\n <RestartIcon className=\"media-icon media-icon--restart\" />\n <PlayIcon className=\"media-icon media-icon--play\" />\n <PauseIcon className=\"media-icon media-icon--pause\" />\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">\n <PlayLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton\n seconds={-SEEK_TIME}\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--seek\">\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek media-icon--flipped\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">Seek backward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton\n seconds={SEEK_TIME}\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--seek\">\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">Seek forward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n </div>\n\n <div className=\"media-time-controls\">\n <Time.Group className=\"media-time\">\n <Time.Value type=\"current\" className=\"media-time__value media-time__value--current\" />\n <Time.Separator className=\"media-time__separator\" />\n <Time.Value type=\"duration\" className=\"media-time__value media-time__value--duration\" />\n </Time.Group>\n\n <TimeSlider.Root className=\"media-slider\">\n <TimeSlider.Track className=\"media-slider__track\">\n <TimeSlider.Fill className=\"media-slider__fill\" />\n <TimeSlider.Buffer className=\"media-slider__buffer\" />\n </TimeSlider.Track>\n <TimeSlider.Thumb className=\"media-slider__thumb\" />\n </TimeSlider.Root>\n </div>\n\n <div className=\"media-button-group\">\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlaybackRateButton\n render={(props) => <Button {...props} className=\"media-button--icon media-button--playback-rate\" />}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">Toggle playback rate</Tooltip.Popup>\n </Tooltip.Root>\n\n <Popover.Root openOnHover delay={200} closeDelay={100} side=\"left\">\n <Popover.Trigger\n render={\n <MuteButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--mute\">\n <VolumeOffIcon className=\"media-icon media-icon--volume-off\" />\n <VolumeLowIcon className=\"media-icon media-icon--volume-low\" />\n <VolumeHighIcon className=\"media-icon media-icon--volume-high\" />\n </Button>\n )}\n />\n }\n />\n <Popover.Popup className=\"media-popover media-popover--volume\">\n <VolumeSlider.Root className=\"media-slider\" orientation=\"horizontal\" thumbAlignment=\"edge\">\n <VolumeSlider.Track className=\"media-slider__track\">\n <VolumeSlider.Fill className=\"media-slider__fill\" />\n </VolumeSlider.Track>\n <VolumeSlider.Thumb className=\"media-slider__thumb media-slider__thumb--persistent\" />\n </VolumeSlider.Root>\n </Popover.Popup>\n </Popover.Root>\n </div>\n </Tooltip.Provider>\n </div>\n </Container>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"minimal-skin.js","names":["Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb","Tooltip.Provider","Tooltip.Root","Tooltip.Trigger","Tooltip.Popup","Time.Group","Time.Value","Time.Separator","TimeSlider.Root","TimeSlider.Track","TimeSlider.Fill","TimeSlider.Buffer","TimeSlider.Thumb"],"sources":["../../../../src/presets/audio/minimal-skin.tsx"],"sourcesContent":["import {\n PauseIcon,\n PlayIcon,\n RestartIcon,\n SeekIcon,\n VolumeHighIcon,\n VolumeLowIcon,\n VolumeOffIcon,\n} from '@videojs/icons/react/minimal';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { Container, usePlayer } from '@/player/context';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { PlaybackRateButton } from '@/ui/playback-rate-button';\nimport { Popover } from '@/ui/popover';\nimport { SeekButton } from '@/ui/seek-button';\nimport { Time } from '@/ui/time';\nimport { TimeSlider } from '@/ui/time-slider';\nimport { Tooltip } from '@/ui/tooltip';\nimport { VolumeSlider } from '@/ui/volume-slider';\nimport type { BaseSkinProps } from '../types';\n\nconst SEEK_TIME = 10;\n\nexport type MinimalAudioSkinProps = BaseSkinProps;\n\nconst Button = forwardRef<HTMLButtonElement, ComponentProps<'button'>>(function Button({ className, ...props }, ref) {\n return <button ref={ref} type=\"button\" className={cn('media-button', className)} {...props} />;\n});\n\nfunction PlayLabel(): ReactNode {\n const paused = usePlayer((s) => Boolean(s.paused));\n const ended = usePlayer((s) => Boolean(s.ended));\n if (ended) return <>Replay</>;\n return paused ? <>Play</> : <>Pause</>;\n}\n\nfunction VolumePopover(): ReactNode {\n const volumeUnsupported = usePlayer((s) => s.volumeAvailability === 'unsupported');\n\n const muteButton = (\n <MuteButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--mute\">\n <VolumeOffIcon className=\"media-icon media-icon--volume-off\" />\n <VolumeLowIcon className=\"media-icon media-icon--volume-low\" />\n <VolumeHighIcon className=\"media-icon media-icon--volume-high\" />\n </Button>\n )}\n />\n );\n\n if (volumeUnsupported) return muteButton;\n\n return (\n <Popover.Root openOnHover delay={200} closeDelay={100} side=\"left\">\n <Popover.Trigger render={muteButton} />\n <Popover.Popup className=\"media-popover media-popover--volume\">\n <VolumeSlider.Root className=\"media-slider\" orientation=\"horizontal\" thumbAlignment=\"edge\">\n <VolumeSlider.Track className=\"media-slider__track\">\n <VolumeSlider.Fill className=\"media-slider__fill\" />\n </VolumeSlider.Track>\n <VolumeSlider.Thumb className=\"media-slider__thumb media-slider__thumb--persistent\" />\n </VolumeSlider.Root>\n </Popover.Popup>\n </Popover.Root>\n );\n}\n\nexport function MinimalAudioSkin(props: MinimalAudioSkinProps): ReactNode {\n const { children, className, ...rest } = props;\n\n return (\n <Container className={cn('media-minimal-skin media-minimal-skin--audio', className)} {...rest}>\n {children}\n\n <div className=\"media-controls\">\n <Tooltip.Provider>\n <div className=\"media-button-group\">\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlayButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--play\">\n <RestartIcon className=\"media-icon media-icon--restart\" />\n <PlayIcon className=\"media-icon media-icon--play\" />\n <PauseIcon className=\"media-icon media-icon--pause\" />\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">\n <PlayLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton\n seconds={-SEEK_TIME}\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--seek\">\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek media-icon--flipped\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">Seek backward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton\n seconds={SEEK_TIME}\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--seek\">\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">Seek forward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n </div>\n\n <div className=\"media-time-controls\">\n <Time.Group className=\"media-time\">\n <Time.Value type=\"current\" className=\"media-time__value media-time__value--current\" />\n <Time.Separator className=\"media-time__separator\" />\n <Time.Value type=\"duration\" className=\"media-time__value media-time__value--duration\" />\n </Time.Group>\n\n <TimeSlider.Root className=\"media-slider\">\n <TimeSlider.Track className=\"media-slider__track\">\n <TimeSlider.Fill className=\"media-slider__fill\" />\n <TimeSlider.Buffer className=\"media-slider__buffer\" />\n </TimeSlider.Track>\n <TimeSlider.Thumb className=\"media-slider__thumb\" />\n </TimeSlider.Root>\n </div>\n\n <div className=\"media-button-group\">\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlaybackRateButton\n render={(props) => <Button {...props} className=\"media-button--icon media-button--playback-rate\" />}\n />\n }\n />\n <Tooltip.Popup className=\"media-tooltip\">Toggle playback rate</Tooltip.Popup>\n </Tooltip.Root>\n\n <VolumePopover />\n </div>\n </Tooltip.Provider>\n </div>\n </Container>\n );\n}\n"],"mappings":"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"}
@@ -82,6 +82,41 @@ function PlayLabel() {
82
82
  if (usePlayer((s) => Boolean(s.ended))) return /* @__PURE__ */ jsx(Fragment, { children: "Replay" });
83
83
  return paused ? /* @__PURE__ */ jsx(Fragment, { children: "Play" }) : /* @__PURE__ */ jsx(Fragment, { children: "Pause" });
84
84
  }
85
+ function VolumePopover() {
86
+ const volumeUnsupported = usePlayer((s) => s.volumeAvailability === "unsupported");
87
+ const muteButton = /* @__PURE__ */ jsx(MuteButton, { render: (props) => /* @__PURE__ */ jsxs(Button, {
88
+ variant: "icon",
89
+ ...props,
90
+ className: iconState.mute.button,
91
+ children: [
92
+ /* @__PURE__ */ jsx(VolumeOffIcon, { className: cn(icon, iconState.mute.volumeOff) }),
93
+ /* @__PURE__ */ jsx(VolumeLowIcon, { className: cn(icon, iconState.mute.volumeLow) }),
94
+ /* @__PURE__ */ jsx(VolumeHighIcon, { className: cn(icon, iconState.mute.volumeHigh) })
95
+ ]
96
+ }) });
97
+ if (volumeUnsupported) return muteButton;
98
+ return /* @__PURE__ */ jsxs(PopoverRoot, {
99
+ openOnHover: true,
100
+ delay: 200,
101
+ closeDelay: 100,
102
+ side: "left",
103
+ children: [/* @__PURE__ */ jsx(PopoverTrigger, { render: muteButton }), /* @__PURE__ */ jsx(PopoverPopup, {
104
+ className: cn(popup.volume),
105
+ children: /* @__PURE__ */ jsxs(VolumeSliderRoot, {
106
+ orientation: "horizontal",
107
+ thumbAlignment: "edge",
108
+ render: (props) => /* @__PURE__ */ jsx(SliderRoot, { ...props }),
109
+ children: [/* @__PURE__ */ jsx(SliderTrack$1, {
110
+ render: (props) => /* @__PURE__ */ jsx(SliderTrack, { ...props }),
111
+ children: /* @__PURE__ */ jsx(SliderFill$1, { render: (props) => /* @__PURE__ */ jsx(SliderFill, { ...props }) })
112
+ }), /* @__PURE__ */ jsx(SliderThumb$1, { render: (props) => /* @__PURE__ */ jsx(SliderThumb, {
113
+ persistent: true,
114
+ ...props
115
+ }) })]
116
+ })
117
+ })]
118
+ });
119
+ }
85
120
  function MinimalAudioSkinTailwind(props) {
86
121
  const { children, className, ...rest } = props;
87
122
  return /* @__PURE__ */ jsxs(Container, {
@@ -199,36 +234,7 @@ function MinimalAudioSkinTailwind(props) {
199
234
  className: cn(popup.tooltip),
200
235
  children: "Toggle playback rate"
201
236
  })]
202
- }), /* @__PURE__ */ jsxs(PopoverRoot, {
203
- openOnHover: true,
204
- delay: 200,
205
- closeDelay: 100,
206
- side: "left",
207
- children: [/* @__PURE__ */ jsx(PopoverTrigger, { render: /* @__PURE__ */ jsx(MuteButton, { render: (props) => /* @__PURE__ */ jsxs(Button, {
208
- variant: "icon",
209
- ...props,
210
- className: iconState.mute.button,
211
- children: [
212
- /* @__PURE__ */ jsx(VolumeOffIcon, { className: cn(icon, iconState.mute.volumeOff) }),
213
- /* @__PURE__ */ jsx(VolumeLowIcon, { className: cn(icon, iconState.mute.volumeLow) }),
214
- /* @__PURE__ */ jsx(VolumeHighIcon, { className: cn(icon, iconState.mute.volumeHigh) })
215
- ]
216
- }) }) }), /* @__PURE__ */ jsx(PopoverPopup, {
217
- className: cn(popup.volume),
218
- children: /* @__PURE__ */ jsxs(VolumeSliderRoot, {
219
- orientation: "horizontal",
220
- thumbAlignment: "edge",
221
- render: (props) => /* @__PURE__ */ jsx(SliderRoot, { ...props }),
222
- children: [/* @__PURE__ */ jsx(SliderTrack$1, {
223
- render: (props) => /* @__PURE__ */ jsx(SliderTrack, { ...props }),
224
- children: /* @__PURE__ */ jsx(SliderFill$1, { render: (props) => /* @__PURE__ */ jsx(SliderFill, { ...props }) })
225
- }), /* @__PURE__ */ jsx(SliderThumb$1, { render: (props) => /* @__PURE__ */ jsx(SliderThumb, {
226
- persistent: true,
227
- ...props
228
- }) })]
229
- })
230
- })]
231
- })]
237
+ }), /* @__PURE__ */ jsx(VolumePopover, {})]
232
238
  })
233
239
  ] })
234
240
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"minimal-skin.tailwind.js","names":["Tooltip.Provider","Tooltip.Root","Tooltip.Trigger","Tooltip.Popup","Time.Group","Time.Value","Time.Separator","TimeSlider.Root","TimeSlider.Track","TimeSlider.Fill","TimeSlider.Buffer","TimeSlider.Thumb","Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb"],"sources":["../../../../src/presets/audio/minimal-skin.tailwind.tsx"],"sourcesContent":["import {\n PauseIcon,\n PlayIcon,\n RestartIcon,\n SeekIcon,\n VolumeHighIcon,\n VolumeLowIcon,\n VolumeOffIcon,\n} from '@videojs/icons/react/minimal';\nimport { playbackRate } from '@videojs/skins/default/tailwind/audio.tailwind';\nimport {\n button,\n buttonGroup,\n controls,\n icon,\n iconContainer,\n iconFlipped,\n iconState,\n popup,\n root,\n seek,\n slider,\n time,\n} from '@videojs/skins/minimal/tailwind/audio.tailwind';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { Container, usePlayer } from '@/player/context';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { PlaybackRateButton } from '@/ui/playback-rate-button';\nimport { Popover } from '@/ui/popover';\nimport { SeekButton } from '@/ui/seek-button';\nimport { Time } from '@/ui/time';\nimport { TimeSlider } from '@/ui/time-slider';\nimport { Tooltip } from '@/ui/tooltip';\nimport { VolumeSlider } from '@/ui/volume-slider';\nimport type { MinimalAudioSkinProps } from './minimal-skin';\n\nconst SEEK_TIME = 10;\n\n/* --------------------------------------- Components ---------------------------------------- */\n\nconst Button = forwardRef<HTMLButtonElement, ComponentProps<'button'> & { variant?: 'icon' }>(function Button(\n { className, variant, ...props },\n ref\n) {\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn(button.base, variant === 'icon' ? button.icon : button.default, className)}\n {...props}\n />\n );\n});\n\nconst SliderRoot = forwardRef<HTMLDivElement, ComponentProps<'div'>>(function SliderRoot({ className, ...props }, ref) {\n return <div ref={ref} className={cn(slider.root, className)} {...props} />;\n});\n\nconst SliderTrack = forwardRef<HTMLDivElement, ComponentProps<'div'>>(function SliderTrack(\n { className, ...props },\n ref\n) {\n return <div ref={ref} className={cn(slider.track, className)} {...props} />;\n});\n\nconst SliderFill = forwardRef<HTMLDivElement, ComponentProps<'div'> & { type?: 'fill' | 'buffer' }>(function SliderFill(\n { type = 'fill', className, ...props },\n ref\n) {\n return (\n <div\n ref={ref}\n className={cn(slider.fill.base, type === 'fill' ? slider.fill.fill : slider.fill.buffer, className)}\n {...props}\n />\n );\n});\n\nconst SliderThumb = forwardRef<HTMLDivElement, ComponentProps<'div'> & { persistent?: boolean }>(function SliderThumb(\n { persistent, className, ...props },\n ref\n) {\n return (\n <div\n ref={ref}\n className={cn(slider.thumb.base, persistent ? undefined : slider.thumb.interactive, className)}\n {...props}\n />\n );\n});\n\nfunction PlayLabel(): ReactNode {\n const paused = usePlayer((s) => Boolean(s.paused));\n const ended = usePlayer((s) => Boolean(s.ended));\n if (ended) return <>Replay</>;\n return paused ? <>Play</> : <>Pause</>;\n}\n\n/* ------------------------------------------ Skin ------------------------------------------- */\n\nexport function MinimalAudioSkinTailwind(props: MinimalAudioSkinProps): ReactNode {\n const { children, className, ...rest } = props;\n\n return (\n <Container className={cn(root, className)} {...rest}>\n {children}\n\n <div className={controls}>\n <Tooltip.Provider>\n <div className={buttonGroup}>\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlayButton\n render={(props) => (\n <Button variant=\"icon\" {...props} className={iconState.play.button}>\n <RestartIcon className={cn(icon, iconState.play.restart)} />\n <PlayIcon className={cn(icon, iconState.play.play)} />\n <PauseIcon className={cn(icon, iconState.play.pause)} />\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>\n <PlayLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton\n seconds={-SEEK_TIME}\n render={(props) => (\n <Button variant=\"icon\" {...props} className={seek.button}>\n <span className={iconContainer}>\n <SeekIcon className={cn(icon, iconFlipped)} />\n <span className={cn(seek.label, seek.labelBackward)}>{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>Seek backward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton\n seconds={SEEK_TIME}\n render={(props) => (\n <Button variant=\"icon\" {...props} className={seek.button}>\n <span className={iconContainer}>\n <SeekIcon className={icon} />\n <span className={cn(seek.label, seek.labelForward)}>{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>Seek forward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n </div>\n\n <div className={time.controls}>\n <Time.Group className={time.group}>\n <Time.Value type=\"current\" className={time.current} />\n <Time.Separator className={time.separator} />\n <Time.Value type=\"duration\" className={time.duration} />\n </Time.Group>\n\n <TimeSlider.Root render={(props) => <SliderRoot {...props} />}>\n <TimeSlider.Track render={(props) => <SliderTrack {...props} />}>\n <TimeSlider.Fill render={(props) => <SliderFill {...props} />} />\n <TimeSlider.Buffer render={(props) => <SliderFill type=\"buffer\" {...props} />} />\n </TimeSlider.Track>\n <TimeSlider.Thumb render={(props) => <SliderThumb {...props} />} />\n </TimeSlider.Root>\n </div>\n\n <div className={buttonGroup}>\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlaybackRateButton\n render={(props) => <Button variant=\"icon\" {...props} className={playbackRate.button} />}\n />\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>Toggle playback rate</Tooltip.Popup>\n </Tooltip.Root>\n\n <Popover.Root openOnHover delay={200} closeDelay={100} side=\"left\">\n <Popover.Trigger\n render={\n <MuteButton\n render={(props) => (\n <Button variant=\"icon\" {...props} className={iconState.mute.button}>\n <VolumeOffIcon className={cn(icon, iconState.mute.volumeOff)} />\n <VolumeLowIcon className={cn(icon, iconState.mute.volumeLow)} />\n <VolumeHighIcon className={cn(icon, iconState.mute.volumeHigh)} />\n </Button>\n )}\n />\n }\n />\n <Popover.Popup className={cn(popup.volume)}>\n <VolumeSlider.Root\n orientation=\"horizontal\"\n thumbAlignment=\"edge\"\n render={(props) => <SliderRoot {...props} />}\n >\n <VolumeSlider.Track render={(props) => <SliderTrack {...props} />}>\n <VolumeSlider.Fill render={(props) => <SliderFill {...props} />} />\n </VolumeSlider.Track>\n <VolumeSlider.Thumb render={(props) => <SliderThumb persistent {...props} />} />\n </VolumeSlider.Root>\n </Popover.Popup>\n </Popover.Root>\n </div>\n </Tooltip.Provider>\n </div>\n </Container>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"minimal-skin.tailwind.js","names":["Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb","Tooltip.Provider","Tooltip.Root","Tooltip.Trigger","Tooltip.Popup","Time.Group","Time.Value","Time.Separator","TimeSlider.Root","TimeSlider.Track","TimeSlider.Fill","TimeSlider.Buffer","TimeSlider.Thumb"],"sources":["../../../../src/presets/audio/minimal-skin.tailwind.tsx"],"sourcesContent":["import {\n PauseIcon,\n PlayIcon,\n RestartIcon,\n SeekIcon,\n VolumeHighIcon,\n VolumeLowIcon,\n VolumeOffIcon,\n} from '@videojs/icons/react/minimal';\nimport { playbackRate } from '@videojs/skins/default/tailwind/audio.tailwind';\nimport {\n button,\n buttonGroup,\n controls,\n icon,\n iconContainer,\n iconFlipped,\n iconState,\n popup,\n root,\n seek,\n slider,\n time,\n} from '@videojs/skins/minimal/tailwind/audio.tailwind';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { Container, usePlayer } from '@/player/context';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { PlaybackRateButton } from '@/ui/playback-rate-button';\nimport { Popover } from '@/ui/popover';\nimport { SeekButton } from '@/ui/seek-button';\nimport { Time } from '@/ui/time';\nimport { TimeSlider } from '@/ui/time-slider';\nimport { Tooltip } from '@/ui/tooltip';\nimport { VolumeSlider } from '@/ui/volume-slider';\nimport type { MinimalAudioSkinProps } from './minimal-skin';\n\nconst SEEK_TIME = 10;\n\n/* --------------------------------------- Components ---------------------------------------- */\n\nconst Button = forwardRef<HTMLButtonElement, ComponentProps<'button'> & { variant?: 'icon' }>(function Button(\n { className, variant, ...props },\n ref\n) {\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn(button.base, variant === 'icon' ? button.icon : button.default, className)}\n {...props}\n />\n );\n});\n\nconst SliderRoot = forwardRef<HTMLDivElement, ComponentProps<'div'>>(function SliderRoot({ className, ...props }, ref) {\n return <div ref={ref} className={cn(slider.root, className)} {...props} />;\n});\n\nconst SliderTrack = forwardRef<HTMLDivElement, ComponentProps<'div'>>(function SliderTrack(\n { className, ...props },\n ref\n) {\n return <div ref={ref} className={cn(slider.track, className)} {...props} />;\n});\n\nconst SliderFill = forwardRef<HTMLDivElement, ComponentProps<'div'> & { type?: 'fill' | 'buffer' }>(function SliderFill(\n { type = 'fill', className, ...props },\n ref\n) {\n return (\n <div\n ref={ref}\n className={cn(slider.fill.base, type === 'fill' ? slider.fill.fill : slider.fill.buffer, className)}\n {...props}\n />\n );\n});\n\nconst SliderThumb = forwardRef<HTMLDivElement, ComponentProps<'div'> & { persistent?: boolean }>(function SliderThumb(\n { persistent, className, ...props },\n ref\n) {\n return (\n <div\n ref={ref}\n className={cn(slider.thumb.base, persistent ? undefined : slider.thumb.interactive, className)}\n {...props}\n />\n );\n});\n\nfunction PlayLabel(): ReactNode {\n const paused = usePlayer((s) => Boolean(s.paused));\n const ended = usePlayer((s) => Boolean(s.ended));\n if (ended) return <>Replay</>;\n return paused ? <>Play</> : <>Pause</>;\n}\n\nfunction VolumePopover(): ReactNode {\n const volumeUnsupported = usePlayer((s) => s.volumeAvailability === 'unsupported');\n\n const muteButton = (\n <MuteButton\n render={(props) => (\n <Button variant=\"icon\" {...props} className={iconState.mute.button}>\n <VolumeOffIcon className={cn(icon, iconState.mute.volumeOff)} />\n <VolumeLowIcon className={cn(icon, iconState.mute.volumeLow)} />\n <VolumeHighIcon className={cn(icon, iconState.mute.volumeHigh)} />\n </Button>\n )}\n />\n );\n\n if (volumeUnsupported) return muteButton;\n\n return (\n <Popover.Root openOnHover delay={200} closeDelay={100} side=\"left\">\n <Popover.Trigger render={muteButton} />\n <Popover.Popup className={cn(popup.volume)}>\n <VolumeSlider.Root orientation=\"horizontal\" thumbAlignment=\"edge\" render={(props) => <SliderRoot {...props} />}>\n <VolumeSlider.Track render={(props) => <SliderTrack {...props} />}>\n <VolumeSlider.Fill render={(props) => <SliderFill {...props} />} />\n </VolumeSlider.Track>\n <VolumeSlider.Thumb render={(props) => <SliderThumb persistent {...props} />} />\n </VolumeSlider.Root>\n </Popover.Popup>\n </Popover.Root>\n );\n}\n\n/* ------------------------------------------ Skin ------------------------------------------- */\n\nexport function MinimalAudioSkinTailwind(props: MinimalAudioSkinProps): ReactNode {\n const { children, className, ...rest } = props;\n\n return (\n <Container className={cn(root, className)} {...rest}>\n {children}\n\n <div className={controls}>\n <Tooltip.Provider>\n <div className={buttonGroup}>\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlayButton\n render={(props) => (\n <Button variant=\"icon\" {...props} className={iconState.play.button}>\n <RestartIcon className={cn(icon, iconState.play.restart)} />\n <PlayIcon className={cn(icon, iconState.play.play)} />\n <PauseIcon className={cn(icon, iconState.play.pause)} />\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>\n <PlayLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton\n seconds={-SEEK_TIME}\n render={(props) => (\n <Button variant=\"icon\" {...props} className={seek.button}>\n <span className={iconContainer}>\n <SeekIcon className={cn(icon, iconFlipped)} />\n <span className={cn(seek.label, seek.labelBackward)}>{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>Seek backward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton\n seconds={SEEK_TIME}\n render={(props) => (\n <Button variant=\"icon\" {...props} className={seek.button}>\n <span className={iconContainer}>\n <SeekIcon className={icon} />\n <span className={cn(seek.label, seek.labelForward)}>{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>Seek forward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n </div>\n\n <div className={time.controls}>\n <Time.Group className={time.group}>\n <Time.Value type=\"current\" className={time.current} />\n <Time.Separator className={time.separator} />\n <Time.Value type=\"duration\" className={time.duration} />\n </Time.Group>\n\n <TimeSlider.Root render={(props) => <SliderRoot {...props} />}>\n <TimeSlider.Track render={(props) => <SliderTrack {...props} />}>\n <TimeSlider.Fill render={(props) => <SliderFill {...props} />} />\n <TimeSlider.Buffer render={(props) => <SliderFill type=\"buffer\" {...props} />} />\n </TimeSlider.Track>\n <TimeSlider.Thumb render={(props) => <SliderThumb {...props} />} />\n </TimeSlider.Root>\n </div>\n\n <div className={buttonGroup}>\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlaybackRateButton\n render={(props) => <Button variant=\"icon\" {...props} className={playbackRate.button} />}\n />\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>Toggle playback rate</Tooltip.Popup>\n </Tooltip.Root>\n\n <VolumePopover />\n </div>\n </Tooltip.Provider>\n </div>\n </Container>\n );\n}\n"],"mappings":"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"}
@@ -70,7 +70,6 @@
70
70
  .media-default-skin *::before,
71
71
  .media-default-skin *::after {
72
72
  box-sizing: border-box;
73
- margin: 0;
74
73
  }
75
74
  .media-default-skin img,
76
75
  .media-default-skin video,
@@ -120,7 +119,7 @@
120
119
  background-color: var(--media-surface-background-color);
121
120
  backdrop-filter: var(--media-surface-backdrop-filter);
122
121
  box-shadow:
123
- inset 0 0 0 1px var(--media-surface-inner-border-color),
122
+ 0 0 0 1px var(--media-surface-outer-border-color),
124
123
  0 1px 3px 0 var(--media-surface-shadow-color),
125
124
  0 1px 2px -1px var(--media-surface-shadow-color);
126
125
 
@@ -131,7 +130,7 @@
131
130
  inset: 0;
132
131
  z-index: 10;
133
132
  border-radius: inherit;
134
- box-shadow: 0 0 0 1px var(--media-surface-outer-border-color);
133
+ box-shadow: inset 0 0 0 1px var(--media-surface-inner-border-color);
135
134
  pointer-events: none;
136
135
  }
137
136
 
@@ -189,7 +188,7 @@
189
188
  border-radius: 1.75rem;
190
189
  color: oklch(1 0 0);
191
190
  font-size: 0.875rem;
192
- transition-property: opacity, transform;
191
+ transition-property: opacity, scale;
193
192
  transition-duration: 500ms;
194
193
  transition-delay: 100ms;
195
194
  transition-timing-function: linear(
@@ -215,7 +214,7 @@
215
214
  .media-default-skin .media-error[data-starting-style] .media-error__dialog,
216
215
  .media-default-skin .media-error[data-ending-style] .media-error__dialog {
217
216
  opacity: 0;
218
- transform: scale(0.5);
217
+ scale: 0.5;
219
218
  }
220
219
 
221
220
  .media-default-skin .media-error__content {
@@ -232,6 +231,7 @@
232
231
 
233
232
  .media-default-skin .media-error__description {
234
233
  opacity: 0.7;
234
+ overflow-wrap: anywhere;
235
235
  }
236
236
 
237
237
  .media-default-skin .media-error__actions {
@@ -254,12 +254,12 @@
254
254
  gap: 0.075rem;
255
255
  padding: 0.175rem;
256
256
  border-radius: calc(infinity * 1px);
257
- --media-controls-current-shadow-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - 0.5) * 0.5), 0.25));
257
+ --media-controls-current-shadow-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - 0.5) * 0.5), 0.15));
258
258
  --media-controls-current-shadow-color-subtle: oklch(
259
259
  from var(--media-controls-current-shadow-color) l c h /
260
260
  calc(alpha * 0.4)
261
261
  );
262
- text-shadow: 0 0 1px var(--media-controls-current-shadow-color);
262
+ text-shadow: 0 1px 0 var(--media-controls-current-shadow-color);
263
263
 
264
264
  @container media-root (width > 40rem) {
265
265
  gap: 0.125rem;
@@ -311,11 +311,12 @@
311
311
  color: oklch(0 0 0);
312
312
  font-weight: 500;
313
313
  text-align: center;
314
- transition-property: background-color, color, outline-offset, transform;
314
+ transition-property: background-color, color, outline-offset, scale;
315
315
  transition-duration: 150ms;
316
316
  transition-timing-function: ease-out;
317
317
  cursor: pointer;
318
318
  user-select: none;
319
+ touch-action: manipulation;
319
320
 
320
321
  &:focus-visible {
321
322
  outline-color: oklch(62.3% 0.214 259.815);
@@ -351,7 +352,7 @@
351
352
  }
352
353
 
353
354
  &:active {
354
- transform: scale(0.9);
355
+ scale: 0.9;
355
356
  }
356
357
 
357
358
  & .media-icon {
@@ -425,6 +426,7 @@
425
426
  flex: 1;
426
427
  border-radius: calc(infinity * 1px);
427
428
  outline: none;
429
+ cursor: pointer;
428
430
 
429
431
  &[data-orientation="horizontal"] {
430
432
  min-width: 5rem;
@@ -461,7 +463,7 @@
461
463
  .media-default-skin .media-slider__thumb {
462
464
  z-index: 10;
463
465
  position: absolute;
464
- transform: translate(-50%, -50%);
466
+ translate: -50% -50%;
465
467
  width: 0.625rem;
466
468
  height: 0.625rem;
467
469
  background-color: currentColor;
@@ -557,11 +559,6 @@
557
559
  }
558
560
  }
559
561
 
560
- /* Time display within slider */
561
- .media-default-skin .media-slider__time-display {
562
- font-variant-numeric: tabular-nums;
563
- }
564
-
565
562
  /* ==========================================================================
566
563
  Popups & Tooltips
567
564
  ========================================================================== */
@@ -572,13 +569,13 @@
572
569
  border: 0;
573
570
  color: inherit;
574
571
  overflow: visible;
575
- transition-property: transform, scale, opacity, filter;
576
- transition-duration: 200ms;
572
+ transition-property: scale, opacity, filter;
573
+ transition-duration: 150ms;
577
574
 
578
575
  &[data-starting-style],
579
576
  &[data-ending-style] {
580
577
  opacity: 0;
581
- transform: scale(0);
578
+ scale: 0.5;
582
579
  filter: blur(8px);
583
580
  }
584
581
 
@@ -598,14 +595,58 @@
598
595
  &[data-side="right"] {
599
596
  transform-origin: left;
600
597
  }
598
+
599
+ /* Safe area between trigger and popup */
600
+ &::before {
601
+ content: "";
602
+ position: absolute;
603
+ pointer-events: inherit;
604
+ }
605
+
606
+ &[data-side="top"]::before,
607
+ &[data-side="bottom"]::before {
608
+ width: 100%;
609
+ inset-inline: 0;
610
+ }
611
+ &[data-side="top"]::before {
612
+ top: 100%;
613
+ }
614
+ &[data-side="bottom"]::before {
615
+ bottom: 100%;
616
+ }
617
+
618
+ &[data-side="left"]::before,
619
+ &[data-side="right"]::before {
620
+ height: 100%;
621
+ inset-block: 0;
622
+ }
623
+ &[data-side="left"]::before {
624
+ left: 100%;
625
+ }
626
+ &[data-side="right"]::before {
627
+ right: 100%;
628
+ }
601
629
  }
602
630
 
603
631
  .media-default-skin .media-popover {
604
632
  --media-popover-side-offset: 0.5rem;
633
+
634
+ &[data-side="top"]::before,
635
+ &[data-side="bottom"]::before {
636
+ height: var(--media-popover-side-offset);
637
+ }
638
+ &[data-side="left"]::before,
639
+ &[data-side="right"]::before {
640
+ width: var(--media-popover-side-offset);
641
+ }
605
642
  }
606
643
  .media-default-skin .media-popover--volume {
607
644
  padding: 0.625rem 0.25rem;
608
645
  border-radius: calc(infinity * 1px);
646
+
647
+ &:has(media-volume-slider[data-availability="unsupported"]) {
648
+ display: none;
649
+ }
609
650
  }
610
651
 
611
652
  .media-default-skin .media-tooltip {
@@ -613,7 +654,16 @@
613
654
  border-radius: calc(infinity * 1px);
614
655
  font-size: 0.75rem;
615
656
  white-space: nowrap;
616
- --media-tooltip-side-offset: 0.5rem;
657
+ --media-tooltip-side-offset: 0.75rem;
658
+
659
+ &[data-side="top"]::before,
660
+ &[data-side="bottom"]::before {
661
+ height: var(--media-tooltip-side-offset);
662
+ }
663
+ &[data-side="left"]::before,
664
+ &[data-side="right"]::before {
665
+ width: var(--media-tooltip-side-offset);
666
+ }
617
667
  }
618
668
 
619
669
 
@@ -628,21 +678,21 @@
628
678
  --media-surface-outer-border-color: oklch(0 0 0 / 0.05);
629
679
  --media-surface-shadow-color: oklch(0 0 0 / 0.15);
630
680
  --media-surface-backdrop-filter: blur(16px) saturate(1.5);
681
+ --media-controls-text-color: var(--media-color-primary, oklch(0 0 0));
631
682
 
632
683
  @media (prefers-color-scheme: dark) {
633
684
  --media-border-color: oklch(1 0 0 / 0.1);
634
685
  --media-surface-background-color: oklch(0 0 0 / 0.4);
686
+ --media-controls-text-color: var(--media-color-primary, oklch(1 0 0));
635
687
  }
636
688
  }
637
689
 
638
690
  /* ==========================================================================
639
- Controls
640
- ========================================================================== */
691
+ Controls
692
+ ========================================================================== */
641
693
 
642
694
  .media-default-skin--audio .media-controls {
643
- @media (prefers-color-scheme: dark) {
644
- color: oklch(1 0 0);
645
- }
695
+ color: var(--media-controls-text-color);
646
696
  }
647
697
 
648
698
  /* ==========================================================================
@@ -44,6 +44,37 @@ function PlayLabel() {
44
44
  if (usePlayer((s) => Boolean(s.ended))) return /* @__PURE__ */ jsx(Fragment, { children: "Replay" });
45
45
  return paused ? /* @__PURE__ */ jsx(Fragment, { children: "Play" }) : /* @__PURE__ */ jsx(Fragment, { children: "Pause" });
46
46
  }
47
+ function VolumePopover() {
48
+ const volumeUnsupported = usePlayer((s) => s.volumeAvailability === "unsupported");
49
+ const muteButton = /* @__PURE__ */ jsx(MuteButton, { render: (props) => /* @__PURE__ */ jsxs(Button, {
50
+ ...props,
51
+ className: "media-button--icon media-button--mute",
52
+ children: [
53
+ /* @__PURE__ */ jsx(VolumeOffIcon, { className: "media-icon media-icon--volume-off" }),
54
+ /* @__PURE__ */ jsx(VolumeLowIcon, { className: "media-icon media-icon--volume-low" }),
55
+ /* @__PURE__ */ jsx(VolumeHighIcon, { className: "media-icon media-icon--volume-high" })
56
+ ]
57
+ }) });
58
+ if (volumeUnsupported) return muteButton;
59
+ return /* @__PURE__ */ jsxs(PopoverRoot, {
60
+ openOnHover: true,
61
+ delay: 200,
62
+ closeDelay: 100,
63
+ side: "top",
64
+ children: [/* @__PURE__ */ jsx(PopoverTrigger, { render: muteButton }), /* @__PURE__ */ jsx(PopoverPopup, {
65
+ className: "media-surface media-popover media-popover--volume",
66
+ children: /* @__PURE__ */ jsxs(VolumeSliderRoot, {
67
+ className: "media-slider",
68
+ orientation: "vertical",
69
+ thumbAlignment: "edge",
70
+ children: [/* @__PURE__ */ jsx(SliderTrack, {
71
+ className: "media-slider__track",
72
+ children: /* @__PURE__ */ jsx(SliderFill, { className: "media-slider__fill" })
73
+ }), /* @__PURE__ */ jsx(SliderThumb, { className: "media-slider__thumb media-slider__thumb--persistent" })]
74
+ })
75
+ })]
76
+ });
77
+ }
47
78
  function AudioSkin(props) {
48
79
  const { children, className, ...rest } = props;
49
80
  return /* @__PURE__ */ jsxs(Container, {
@@ -145,32 +176,7 @@ function AudioSkin(props) {
145
176
  children: "Toggle playback rate"
146
177
  })]
147
178
  }),
148
- /* @__PURE__ */ jsxs(PopoverRoot, {
149
- openOnHover: true,
150
- delay: 200,
151
- closeDelay: 100,
152
- side: "top",
153
- children: [/* @__PURE__ */ jsx(PopoverTrigger, { render: /* @__PURE__ */ jsx(MuteButton, { render: (props) => /* @__PURE__ */ jsxs(Button, {
154
- ...props,
155
- className: "media-button--icon media-button--mute",
156
- children: [
157
- /* @__PURE__ */ jsx(VolumeOffIcon, { className: "media-icon media-icon--volume-off" }),
158
- /* @__PURE__ */ jsx(VolumeLowIcon, { className: "media-icon media-icon--volume-low" }),
159
- /* @__PURE__ */ jsx(VolumeHighIcon, { className: "media-icon media-icon--volume-high" })
160
- ]
161
- }) }) }), /* @__PURE__ */ jsx(PopoverPopup, {
162
- className: "media-surface media-popover media-popover--volume",
163
- children: /* @__PURE__ */ jsxs(VolumeSliderRoot, {
164
- className: "media-slider",
165
- orientation: "vertical",
166
- thumbAlignment: "edge",
167
- children: [/* @__PURE__ */ jsx(SliderTrack, {
168
- className: "media-slider__track",
169
- children: /* @__PURE__ */ jsx(SliderFill, { className: "media-slider__fill" })
170
- }), /* @__PURE__ */ jsx(SliderThumb, { className: "media-slider__thumb media-slider__thumb--persistent" })]
171
- })
172
- })]
173
- })
179
+ /* @__PURE__ */ jsx(VolumePopover, {})
174
180
  ] })
175
181
  })]
176
182
  });
@@ -1 +1 @@
1
- {"version":3,"file":"skin.js","names":["Tooltip.Provider","Tooltip.Root","Tooltip.Trigger","Tooltip.Popup","Time.Group","Time.Value","TimeSlider.Root","TimeSlider.Track","TimeSlider.Fill","TimeSlider.Buffer","TimeSlider.Thumb","Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb"],"sources":["../../../../src/presets/audio/skin.tsx"],"sourcesContent":["import {\n PauseIcon,\n PlayIcon,\n RestartIcon,\n SeekIcon,\n VolumeHighIcon,\n VolumeLowIcon,\n VolumeOffIcon,\n} from '@videojs/icons/react';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { Container, usePlayer } from '@/player/context';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { PlaybackRateButton } from '@/ui/playback-rate-button';\nimport { Popover } from '@/ui/popover';\nimport { SeekButton } from '@/ui/seek-button';\nimport { Time } from '@/ui/time';\nimport { TimeSlider } from '@/ui/time-slider';\nimport { Tooltip } from '@/ui/tooltip';\nimport { VolumeSlider } from '@/ui/volume-slider';\nimport type { BaseSkinProps } from '../types';\n\nconst SEEK_TIME = 10;\n\nexport type AudioSkinProps = BaseSkinProps;\n\nconst Button = forwardRef<HTMLButtonElement, ComponentProps<'button'>>(function Button({ className, ...props }, ref) {\n return <button ref={ref} type=\"button\" className={cn('media-button', className)} {...props} />;\n});\n\nfunction PlayLabel(): ReactNode {\n const paused = usePlayer((s) => Boolean(s.paused));\n const ended = usePlayer((s) => Boolean(s.ended));\n if (ended) return <>Replay</>;\n return paused ? <>Play</> : <>Pause</>;\n}\n\nexport function AudioSkin(props: AudioSkinProps): ReactNode {\n const { children, className, ...rest } = props;\n\n return (\n <Container className={cn('media-default-skin media-default-skin--audio', className)} {...rest}>\n {children}\n\n <div className=\"media-surface media-controls\">\n <Tooltip.Provider>\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlayButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--play\">\n <RestartIcon className=\"media-icon media-icon--restart\" />\n <PlayIcon className=\"media-icon media-icon--play\" />\n <PauseIcon className=\"media-icon media-icon--pause\" />\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">\n <PlayLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton\n seconds={-SEEK_TIME}\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--seek\">\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek media-icon--flipped\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">Seek backward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton\n seconds={SEEK_TIME}\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--seek\">\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">Seek forward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n\n <Time.Group className=\"media-time\">\n <Time.Value type=\"current\" className=\"media-time__value\" />\n <TimeSlider.Root className=\"media-slider\">\n <TimeSlider.Track className=\"media-slider__track\">\n <TimeSlider.Fill className=\"media-slider__fill\" />\n <TimeSlider.Buffer className=\"media-slider__buffer\" />\n </TimeSlider.Track>\n <TimeSlider.Thumb className=\"media-slider__thumb\" />\n </TimeSlider.Root>\n <Time.Value type=\"duration\" className=\"media-time__value\" />\n </Time.Group>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlaybackRateButton\n render={(props) => <Button {...props} className=\"media-button--icon media-button--playback-rate\" />}\n />\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">Toggle playback rate</Tooltip.Popup>\n </Tooltip.Root>\n\n <Popover.Root openOnHover delay={200} closeDelay={100} side=\"top\">\n <Popover.Trigger\n render={\n <MuteButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--mute\">\n <VolumeOffIcon className=\"media-icon media-icon--volume-off\" />\n <VolumeLowIcon className=\"media-icon media-icon--volume-low\" />\n <VolumeHighIcon className=\"media-icon media-icon--volume-high\" />\n </Button>\n )}\n />\n }\n />\n <Popover.Popup className=\"media-surface media-popover media-popover--volume\">\n <VolumeSlider.Root className=\"media-slider\" orientation=\"vertical\" thumbAlignment=\"edge\">\n <VolumeSlider.Track className=\"media-slider__track\">\n <VolumeSlider.Fill className=\"media-slider__fill\" />\n </VolumeSlider.Track>\n <VolumeSlider.Thumb className=\"media-slider__thumb media-slider__thumb--persistent\" />\n </VolumeSlider.Root>\n </Popover.Popup>\n </Popover.Root>\n </Tooltip.Provider>\n </div>\n </Container>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"skin.js","names":["Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb","Tooltip.Provider","Tooltip.Root","Tooltip.Trigger","Tooltip.Popup","Time.Group","Time.Value","TimeSlider.Root","TimeSlider.Track","TimeSlider.Fill","TimeSlider.Buffer","TimeSlider.Thumb"],"sources":["../../../../src/presets/audio/skin.tsx"],"sourcesContent":["import {\n PauseIcon,\n PlayIcon,\n RestartIcon,\n SeekIcon,\n VolumeHighIcon,\n VolumeLowIcon,\n VolumeOffIcon,\n} from '@videojs/icons/react';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { Container, usePlayer } from '@/player/context';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { PlaybackRateButton } from '@/ui/playback-rate-button';\nimport { Popover } from '@/ui/popover';\nimport { SeekButton } from '@/ui/seek-button';\nimport { Time } from '@/ui/time';\nimport { TimeSlider } from '@/ui/time-slider';\nimport { Tooltip } from '@/ui/tooltip';\nimport { VolumeSlider } from '@/ui/volume-slider';\nimport type { BaseSkinProps } from '../types';\n\nconst SEEK_TIME = 10;\n\nexport type AudioSkinProps = BaseSkinProps;\n\nconst Button = forwardRef<HTMLButtonElement, ComponentProps<'button'>>(function Button({ className, ...props }, ref) {\n return <button ref={ref} type=\"button\" className={cn('media-button', className)} {...props} />;\n});\n\nfunction PlayLabel(): ReactNode {\n const paused = usePlayer((s) => Boolean(s.paused));\n const ended = usePlayer((s) => Boolean(s.ended));\n if (ended) return <>Replay</>;\n return paused ? <>Play</> : <>Pause</>;\n}\n\nfunction VolumePopover(): ReactNode {\n const volumeUnsupported = usePlayer((s) => s.volumeAvailability === 'unsupported');\n\n const muteButton = (\n <MuteButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--mute\">\n <VolumeOffIcon className=\"media-icon media-icon--volume-off\" />\n <VolumeLowIcon className=\"media-icon media-icon--volume-low\" />\n <VolumeHighIcon className=\"media-icon media-icon--volume-high\" />\n </Button>\n )}\n />\n );\n\n if (volumeUnsupported) return muteButton;\n\n return (\n <Popover.Root openOnHover delay={200} closeDelay={100} side=\"top\">\n <Popover.Trigger render={muteButton} />\n <Popover.Popup className=\"media-surface media-popover media-popover--volume\">\n <VolumeSlider.Root className=\"media-slider\" orientation=\"vertical\" thumbAlignment=\"edge\">\n <VolumeSlider.Track className=\"media-slider__track\">\n <VolumeSlider.Fill className=\"media-slider__fill\" />\n </VolumeSlider.Track>\n <VolumeSlider.Thumb className=\"media-slider__thumb media-slider__thumb--persistent\" />\n </VolumeSlider.Root>\n </Popover.Popup>\n </Popover.Root>\n );\n}\n\nexport function AudioSkin(props: AudioSkinProps): ReactNode {\n const { children, className, ...rest } = props;\n\n return (\n <Container className={cn('media-default-skin media-default-skin--audio', className)} {...rest}>\n {children}\n\n <div className=\"media-surface media-controls\">\n <Tooltip.Provider>\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlayButton\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--play\">\n <RestartIcon className=\"media-icon media-icon--restart\" />\n <PlayIcon className=\"media-icon media-icon--play\" />\n <PauseIcon className=\"media-icon media-icon--pause\" />\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">\n <PlayLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton\n seconds={-SEEK_TIME}\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--seek\">\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek media-icon--flipped\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">Seek backward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton\n seconds={SEEK_TIME}\n render={(props) => (\n <Button {...props} className=\"media-button--icon media-button--seek\">\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </Button>\n )}\n />\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">Seek forward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n\n <Time.Group className=\"media-time\">\n <Time.Value type=\"current\" className=\"media-time__value\" />\n <TimeSlider.Root className=\"media-slider\">\n <TimeSlider.Track className=\"media-slider__track\">\n <TimeSlider.Fill className=\"media-slider__fill\" />\n <TimeSlider.Buffer className=\"media-slider__buffer\" />\n </TimeSlider.Track>\n <TimeSlider.Thumb className=\"media-slider__thumb\" />\n </TimeSlider.Root>\n <Time.Value type=\"duration\" className=\"media-time__value\" />\n </Time.Group>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlaybackRateButton\n render={(props) => <Button {...props} className=\"media-button--icon media-button--playback-rate\" />}\n />\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">Toggle playback rate</Tooltip.Popup>\n </Tooltip.Root>\n\n <VolumePopover />\n </Tooltip.Provider>\n </div>\n </Container>\n );\n}\n"],"mappings":"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"}