@videojs/react 10.0.0-beta.6 → 10.0.0-beta.8

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 (285) 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 +22 -12
  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 +19 -14
  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 +101 -63
  85. package/dist/default/presets/video/minimal-skin.js +45 -31
  86. package/dist/default/presets/video/minimal-skin.js.map +1 -1
  87. package/dist/default/presets/video/minimal-skin.tailwind.js +51 -34
  88. package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
  89. package/dist/default/presets/video/skin.css +98 -64
  90. package/dist/default/presets/video/skin.js +45 -31
  91. package/dist/default/presets/video/skin.js.map +1 -1
  92. package/dist/default/presets/video/skin.tailwind.js +51 -34
  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/controls.js +1 -1
  97. package/dist/default/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  98. package/dist/default/skins/dist/default/default/tailwind/components/error.js +1 -1
  99. package/dist/default/skins/dist/default/default/tailwind/components/error.js.map +1 -1
  100. package/dist/default/skins/dist/default/default/tailwind/components/poster.js +16 -0
  101. package/dist/default/skins/dist/default/default/tailwind/components/poster.js.map +1 -0
  102. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +6 -5
  103. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  104. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +1 -1
  105. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  106. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  107. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  108. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js +1 -1
  109. package/dist/default/skins/dist/default/minimal/tailwind/components/error.js.map +1 -1
  110. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js +16 -0
  111. package/dist/default/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -0
  112. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js +1 -1
  113. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  114. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +5 -4
  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 +5 -0
  117. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  118. package/dist/default/ui/popover/popover-popup.js +11 -2
  119. package/dist/default/ui/popover/popover-popup.js.map +1 -1
  120. package/dist/default/ui/time-slider/time-slider-root.js +1 -1
  121. package/dist/default/ui/time-slider/time-slider-root.js.map +1 -1
  122. package/dist/default/ui/tooltip/tooltip-popup.js +11 -2
  123. package/dist/default/ui/tooltip/tooltip-popup.js.map +1 -1
  124. package/dist/default/ui/volume-slider/volume-slider-root.js +3 -3
  125. package/dist/default/ui/volume-slider/volume-slider-root.js.map +1 -1
  126. package/dist/default/utils/use-render.js +5 -1
  127. package/dist/default/utils/use-render.js.map +1 -1
  128. package/dist/dev/icons/dist/react/default/captions-off.js +0 -1
  129. package/dist/dev/icons/dist/react/default/captions-off.js.map +1 -1
  130. package/dist/dev/icons/dist/react/default/captions-on.js +0 -1
  131. package/dist/dev/icons/dist/react/default/captions-on.js.map +1 -1
  132. package/dist/dev/icons/dist/react/default/fullscreen-enter.js +0 -1
  133. package/dist/dev/icons/dist/react/default/fullscreen-enter.js.map +1 -1
  134. package/dist/dev/icons/dist/react/default/fullscreen-exit.js +0 -1
  135. package/dist/dev/icons/dist/react/default/fullscreen-exit.js.map +1 -1
  136. package/dist/dev/icons/dist/react/default/pause.js +0 -1
  137. package/dist/dev/icons/dist/react/default/pause.js.map +1 -1
  138. package/dist/dev/icons/dist/react/default/pip-enter.js +33 -0
  139. package/dist/dev/icons/dist/react/default/pip-enter.js.map +1 -0
  140. package/dist/dev/icons/dist/react/default/pip-exit.js +33 -0
  141. package/dist/dev/icons/dist/react/default/pip-exit.js.map +1 -0
  142. package/dist/dev/icons/dist/react/default/play.js +0 -1
  143. package/dist/dev/icons/dist/react/default/play.js.map +1 -1
  144. package/dist/dev/icons/dist/react/default/restart.js +0 -1
  145. package/dist/dev/icons/dist/react/default/restart.js.map +1 -1
  146. package/dist/dev/icons/dist/react/default/seek.js +0 -1
  147. package/dist/dev/icons/dist/react/default/seek.js.map +1 -1
  148. package/dist/dev/icons/dist/react/default/spinner.js +0 -1
  149. package/dist/dev/icons/dist/react/default/spinner.js.map +1 -1
  150. package/dist/dev/icons/dist/react/default/volume-high.js +0 -1
  151. package/dist/dev/icons/dist/react/default/volume-high.js.map +1 -1
  152. package/dist/dev/icons/dist/react/default/volume-low.js +0 -1
  153. package/dist/dev/icons/dist/react/default/volume-low.js.map +1 -1
  154. package/dist/dev/icons/dist/react/default/volume-off.js +0 -1
  155. package/dist/dev/icons/dist/react/default/volume-off.js.map +1 -1
  156. package/dist/dev/icons/dist/react/minimal/captions-off.js +0 -1
  157. package/dist/dev/icons/dist/react/minimal/captions-off.js.map +1 -1
  158. package/dist/dev/icons/dist/react/minimal/captions-on.js +0 -1
  159. package/dist/dev/icons/dist/react/minimal/captions-on.js.map +1 -1
  160. package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js +0 -1
  161. package/dist/dev/icons/dist/react/minimal/fullscreen-enter.js.map +1 -1
  162. package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js +0 -1
  163. package/dist/dev/icons/dist/react/minimal/fullscreen-exit.js.map +1 -1
  164. package/dist/dev/icons/dist/react/minimal/pause.js +0 -1
  165. package/dist/dev/icons/dist/react/minimal/pause.js.map +1 -1
  166. package/dist/dev/icons/dist/react/minimal/pip-enter.js +37 -0
  167. package/dist/dev/icons/dist/react/minimal/pip-enter.js.map +1 -0
  168. package/dist/dev/icons/dist/react/minimal/pip-exit.js +37 -0
  169. package/dist/dev/icons/dist/react/minimal/pip-exit.js.map +1 -0
  170. package/dist/dev/icons/dist/react/minimal/play.js +0 -1
  171. package/dist/dev/icons/dist/react/minimal/play.js.map +1 -1
  172. package/dist/dev/icons/dist/react/minimal/restart.js +0 -1
  173. package/dist/dev/icons/dist/react/minimal/restart.js.map +1 -1
  174. package/dist/dev/icons/dist/react/minimal/seek.js +0 -1
  175. package/dist/dev/icons/dist/react/minimal/seek.js.map +1 -1
  176. package/dist/dev/icons/dist/react/minimal/spinner.js +0 -1
  177. package/dist/dev/icons/dist/react/minimal/spinner.js.map +1 -1
  178. package/dist/dev/icons/dist/react/minimal/volume-high.js +0 -1
  179. package/dist/dev/icons/dist/react/minimal/volume-high.js.map +1 -1
  180. package/dist/dev/icons/dist/react/minimal/volume-low.js +0 -1
  181. package/dist/dev/icons/dist/react/minimal/volume-low.js.map +1 -1
  182. package/dist/dev/icons/dist/react/minimal/volume-off.js +0 -1
  183. package/dist/dev/icons/dist/react/minimal/volume-off.js.map +1 -1
  184. package/dist/dev/index.d.ts +2 -2
  185. package/dist/dev/index.js +2 -2
  186. package/dist/dev/media/audio.d.ts.map +1 -1
  187. package/dist/dev/media/audio.js +3 -6
  188. package/dist/dev/media/audio.js.map +1 -1
  189. package/dist/dev/media/background-video/index.js +2 -2
  190. package/dist/dev/media/background-video/index.js.map +1 -1
  191. package/dist/dev/media/dash-video/index.d.ts +11 -0
  192. package/dist/dev/media/dash-video/index.d.ts.map +1 -0
  193. package/dist/dev/media/dash-video/index.js +26 -0
  194. package/dist/dev/media/dash-video/index.js.map +1 -0
  195. package/dist/dev/media/hls-video/index.js +2 -2
  196. package/dist/dev/media/hls-video/index.js.map +1 -1
  197. package/dist/dev/media/simple-hls-video/index.js +2 -2
  198. package/dist/dev/media/simple-hls-video/index.js.map +1 -1
  199. package/dist/dev/media/video.d.ts.map +1 -1
  200. package/dist/dev/media/video.js +3 -6
  201. package/dist/dev/media/video.js.map +1 -1
  202. package/dist/dev/player/context.d.ts +10 -4
  203. package/dist/dev/player/context.d.ts.map +1 -1
  204. package/dist/dev/player/context.js +16 -10
  205. package/dist/dev/player/context.js.map +1 -1
  206. package/dist/dev/player/create-player.js +16 -2
  207. package/dist/dev/player/create-player.js.map +1 -1
  208. package/dist/dev/presets/audio/minimal-skin.css +22 -12
  209. package/dist/dev/presets/audio/minimal-skin.d.ts.map +1 -1
  210. package/dist/dev/presets/audio/minimal-skin.js +32 -26
  211. package/dist/dev/presets/audio/minimal-skin.js.map +1 -1
  212. package/dist/dev/presets/audio/minimal-skin.tailwind.d.ts.map +1 -1
  213. package/dist/dev/presets/audio/minimal-skin.tailwind.js +36 -30
  214. package/dist/dev/presets/audio/minimal-skin.tailwind.js.map +1 -1
  215. package/dist/dev/presets/audio/skin.css +19 -14
  216. package/dist/dev/presets/audio/skin.d.ts.map +1 -1
  217. package/dist/dev/presets/audio/skin.js +32 -26
  218. package/dist/dev/presets/audio/skin.js.map +1 -1
  219. package/dist/dev/presets/audio/skin.tailwind.d.ts.map +1 -1
  220. package/dist/dev/presets/audio/skin.tailwind.js +37 -32
  221. package/dist/dev/presets/audio/skin.tailwind.js.map +1 -1
  222. package/dist/dev/presets/types.d.ts +6 -1
  223. package/dist/dev/presets/types.d.ts.map +1 -1
  224. package/dist/dev/presets/video/minimal-skin.css +101 -63
  225. package/dist/dev/presets/video/minimal-skin.d.ts +2 -2
  226. package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
  227. package/dist/dev/presets/video/minimal-skin.js +45 -31
  228. package/dist/dev/presets/video/minimal-skin.js.map +1 -1
  229. package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
  230. package/dist/dev/presets/video/minimal-skin.tailwind.js +51 -34
  231. package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
  232. package/dist/dev/presets/video/skin.css +98 -64
  233. package/dist/dev/presets/video/skin.d.ts +2 -2
  234. package/dist/dev/presets/video/skin.d.ts.map +1 -1
  235. package/dist/dev/presets/video/skin.js +45 -31
  236. package/dist/dev/presets/video/skin.js.map +1 -1
  237. package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
  238. package/dist/dev/presets/video/skin.tailwind.js +51 -34
  239. package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
  240. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +6 -5
  241. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  242. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js +1 -1
  243. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  244. package/dist/dev/skins/dist/default/default/tailwind/components/error.js +1 -1
  245. package/dist/dev/skins/dist/default/default/tailwind/components/error.js.map +1 -1
  246. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js +16 -0
  247. package/dist/dev/skins/dist/default/default/tailwind/components/poster.js.map +1 -0
  248. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +6 -5
  249. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  250. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +1 -1
  251. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  252. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  253. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  254. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js +1 -1
  255. package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js.map +1 -1
  256. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js +16 -0
  257. package/dist/dev/skins/dist/default/minimal/tailwind/components/poster.js.map +1 -0
  258. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js +1 -1
  259. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  260. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +5 -4
  261. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  262. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js +5 -0
  263. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  264. package/dist/dev/ui/popover/popover-popup.d.ts.map +1 -1
  265. package/dist/dev/ui/popover/popover-popup.js +11 -2
  266. package/dist/dev/ui/popover/popover-popup.js.map +1 -1
  267. package/dist/dev/ui/time-slider/time-slider-root.js +1 -1
  268. package/dist/dev/ui/time-slider/time-slider-root.js.map +1 -1
  269. package/dist/dev/ui/tooltip/tooltip-popup.d.ts.map +1 -1
  270. package/dist/dev/ui/tooltip/tooltip-popup.js +11 -2
  271. package/dist/dev/ui/tooltip/tooltip-popup.js.map +1 -1
  272. package/dist/dev/ui/volume-slider/volume-slider-root.js +3 -3
  273. package/dist/dev/ui/volume-slider/volume-slider-root.js.map +1 -1
  274. package/dist/dev/utils/use-render.d.ts.map +1 -1
  275. package/dist/dev/utils/use-render.js +5 -1
  276. package/dist/dev/utils/use-render.js.map +1 -1
  277. package/package.json +7 -7
  278. package/dist/default/icons/dist/react/default/pip.js +0 -27
  279. package/dist/default/icons/dist/react/default/pip.js.map +0 -1
  280. package/dist/default/icons/dist/react/minimal/pip.js +0 -27
  281. package/dist/default/icons/dist/react/minimal/pip.js.map +0 -1
  282. package/dist/dev/icons/dist/react/default/pip.js +0 -27
  283. package/dist/dev/icons/dist/react/default/pip.js.map +0 -1
  284. package/dist/dev/icons/dist/react/minimal/pip.js +0 -27
  285. package/dist/dev/icons/dist/react/minimal/pip.js.map +0 -1
@@ -152,7 +152,7 @@
152
152
  color: oklch(1 0 0);
153
153
  font-size: 0.875rem;
154
154
  text-shadow: 0 1px 0 oklch(0 0 0 / 0.5);
155
- transition-property: opacity, transform;
155
+ transition-property: opacity, scale;
156
156
  transition-duration: 500ms;
157
157
  transition-delay: 100ms;
158
158
  transition-timing-function: linear(
@@ -178,7 +178,7 @@
178
178
  .media-minimal-skin .media-error[data-starting-style] .media-error__dialog,
179
179
  .media-minimal-skin .media-error[data-ending-style] .media-error__dialog {
180
180
  opacity: 0;
181
- transform: scale(0.5);
181
+ scale: 0.5;
182
182
  }
183
183
 
184
184
  .media-minimal-skin .media-error__content {
@@ -195,6 +195,7 @@
195
195
 
196
196
  .media-minimal-skin .media-error__description {
197
197
  opacity: 0.7;
198
+ overflow-wrap: anywhere;
198
199
  }
199
200
 
200
201
  .media-minimal-skin .media-error__actions {
@@ -214,12 +215,12 @@
214
215
  container: media-controls / inline-size;
215
216
  display: flex;
216
217
  align-items: center;
217
- --media-controls-current-shadow-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - 0.5) * 0.5), 0.25));
218
+ --media-controls-current-shadow-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - 0.5) * 0.5), 0.15));
218
219
  --media-controls-current-shadow-color-subtle: oklch(
219
220
  from var(--media-controls-current-shadow-color) l c h /
220
221
  calc(alpha * 0.4)
221
222
  );
222
- text-shadow: 0 0 1px var(--media-controls-current-shadow-color);
223
+ text-shadow: 0 1px 0 var(--media-controls-current-shadow-color);
223
224
  }
224
225
 
225
226
  /* ==========================================================================
@@ -293,7 +294,7 @@
293
294
  font-weight: 500;
294
295
  text-align: center;
295
296
  text-shadow: inherit;
296
- transition-property: background-color, color, outline-offset, transform;
297
+ transition-property: background-color, color, outline-offset, scale;
297
298
  transition-duration: 150ms;
298
299
  transition-timing-function: ease-out;
299
300
  cursor: pointer;
@@ -333,7 +334,7 @@
333
334
  }
334
335
 
335
336
  &:active {
336
- transform: scale(0.9);
337
+ scale: 0.9;
337
338
  }
338
339
 
339
340
  & .media-icon {
@@ -444,7 +445,7 @@
444
445
  /* Thumb */
445
446
  .media-minimal-skin .media-slider__thumb {
446
447
  position: absolute;
447
- transform: translate(-50%, -50%);
448
+ translate: -50% -50%;
448
449
  z-index: 10;
449
450
  width: 0.75rem;
450
451
  height: 0.75rem;
@@ -547,13 +548,13 @@
547
548
  border: 0;
548
549
  color: inherit;
549
550
  overflow: visible;
550
- transition-property: transform, scale, opacity, filter;
551
+ transition-property: scale, opacity, filter;
551
552
  transition-duration: 150ms;
552
553
 
553
554
  &[data-starting-style],
554
555
  &[data-ending-style] {
555
556
  opacity: 0;
556
- transform: scale(0.5);
557
+ scale: 0.5;
557
558
  filter: blur(8px);
558
559
  }
559
560
 
@@ -647,22 +648,31 @@
647
648
  }
648
649
  }
649
650
 
651
+ .media-minimal-skin .media-popover--volume:has(media-volume-slider[data-availability="unsupported"]) {
652
+ display: none;
653
+ }
654
+
650
655
 
651
656
  /* ==========================================================================
652
- Controls
657
+ Root
653
658
  ========================================================================== */
654
659
 
655
660
  .media-minimal-skin--audio {
656
661
  --media-controls-background-color: oklch(1 0 0);
657
662
  --media-controls-border-color: oklch(0 0 0 / 0.1);
658
- --media-controls-text-color: oklch(0 0 0);
663
+ --media-controls-text-color: var(--media-color-primary, oklch(0 0 0));
659
664
 
660
665
  @media (prefers-color-scheme: dark) {
661
666
  --media-controls-background-color: oklch(0 0 0);
662
667
  --media-controls-border-color: oklch(1 0 0 / 0.1);
663
- --media-controls-text-color: oklch(1 0 0);
668
+ --media-controls-text-color: var(--media-color-primary, oklch(1 0 0));
664
669
  }
665
670
  }
671
+
672
+ /* ==========================================================================
673
+ Controls
674
+ ========================================================================== */
675
+
666
676
  .media-minimal-skin--audio .media-controls {
667
677
  gap: 0.5rem;
668
678
  padding: 0.375rem;
@@ -1 +1 @@
1
- {"version":3,"file":"minimal-skin.d.ts","names":[],"sources":["../../../../src/presets/audio/minimal-skin.tsx"],"mappings":";;;;KAyBY,qBAAA,GAAwB,aAAA;AAAA,iBAapB,gBAAA,CAAiB,KAAA,EAAO,qBAAA,GAAwB,SAAA"}
1
+ {"version":3,"file":"minimal-skin.d.ts","names":[],"sources":["../../../../src/presets/audio/minimal-skin.tsx"],"mappings":";;;;KAyBY,qBAAA,GAAwB,aAAA;AAAA,iBA6CpB,gBAAA,CAAiB,KAAA,EAAO,qBAAA,GAAwB,SAAA"}
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"minimal-skin.tailwind.d.ts","names":[],"sources":["../../../../src/presets/audio/minimal-skin.tailwind.tsx"],"mappings":";;;;iBAsGgB,wBAAA,CAAyB,KAAA,EAAO,qBAAA,GAAwB,SAAA"}
1
+ {"version":3,"file":"minimal-skin.tailwind.d.ts","names":[],"sources":["../../../../src/presets/audio/minimal-skin.tailwind.tsx"],"mappings":";;;;iBAsIgB,wBAAA,CAAyB,KAAA,EAAO,qBAAA,GAAwB,SAAA"}
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,MAAM,YAAY;AAIlB,MAAM,SAAS,WAA+E,SAAS,OACrG,EAAE,WAAW,SAAS,GAAG,SACzB,KACA;AACA,QACE,oBAAC;EACM;EACL,MAAK;EACL,WAAW,GAAG,OAAO,MAAM,YAAY,SAAS,OAAO,OAAO,OAAO,SAAS,UAAU;EACxF,GAAI;GACJ;EAEJ;AAEF,MAAM,aAAa,WAAkD,SAAS,WAAW,EAAE,WAAW,GAAG,SAAS,KAAK;AACrH,QAAO,oBAAC;EAAS;EAAK,WAAW,GAAG,OAAO,MAAM,UAAU;EAAE,GAAI;GAAS;EAC1E;AAEF,MAAM,cAAc,WAAkD,SAAS,YAC7E,EAAE,WAAW,GAAG,SAChB,KACA;AACA,QAAO,oBAAC;EAAS;EAAK,WAAW,GAAG,OAAO,OAAO,UAAU;EAAE,GAAI;GAAS;EAC3E;AAEF,MAAM,aAAa,WAAiF,SAAS,WAC3G,EAAE,OAAO,QAAQ,WAAW,GAAG,SAC/B,KACA;AACA,QACE,oBAAC;EACM;EACL,WAAW,GAAG,OAAO,KAAK,MAAM,SAAS,SAAS,OAAO,KAAK,OAAO,OAAO,KAAK,QAAQ,UAAU;EACnG,GAAI;GACJ;EAEJ;AAEF,MAAM,cAAc,WAA6E,SAAS,YACxG,EAAE,YAAY,WAAW,GAAG,SAC5B,KACA;AACA,QACE,oBAAC;EACM;EACL,WAAW,GAAG,OAAO,MAAM,MAAM,aAAa,SAAY,OAAO,MAAM,aAAa,UAAU;EAC9F,GAAI;GACJ;EAEJ;AAEF,SAAS,YAAuB;CAC9B,MAAM,SAAS,WAAW,MAAM,QAAQ,EAAE,OAAO,CAAC;AAElD,KADc,WAAW,MAAM,QAAQ,EAAE,MAAM,CAAC,CACrC,QAAO,0CAAE,WAAS;AAC7B,QAAO,SAAS,0CAAE,SAAO,GAAG,0CAAE,UAAQ;;AAKxC,SAAgB,yBAAyB,OAAyC;CAChF,MAAM,EAAE,UAAU,WAAW,GAAG,SAAS;AAEzC,QACE,qBAAC;EAAU,WAAW,GAAG,MAAM,UAAU;EAAE,GAAI;aAC5C,UAED,oBAAC;GAAI,WAAW;aACd,qBAACA;IACC,qBAAC;KAAI,WAAW;;MACd,qBAACC;OAAa,MAAK;kBACjB,oBAACC,kBACC,QACE,oBAAC,cACC,SAAS,UACP,qBAAC;QAAO,SAAQ;QAAO,GAAI;QAAO,WAAW,UAAU,KAAK;;SAC1D,oBAAC,eAAY,WAAW,GAAG,MAAM,UAAU,KAAK,QAAQ,GAAI;SAC5D,oBAAC,YAAS,WAAW,GAAG,MAAM,UAAU,KAAK,KAAK,GAAI;SACtD,oBAAC,aAAU,WAAW,GAAG,MAAM,UAAU,KAAK,MAAM,GAAI;;SACjD,GAEX,GAEJ,EACF,oBAACC;QAAc,WAAW,GAAG,MAAM,QAAQ;kBACzC,oBAAC,cAAY;SACC;QACH;MAEf,qBAACF;OAAa,MAAK;kBACjB,oBAACC,kBACC,QACE,oBAAC;QACC,SAAS,CAAC;QACV,SAAS,UACP,oBAAC;SAAO,SAAQ;SAAO,GAAI;SAAO,WAAW,KAAK;mBAChD,qBAAC;UAAK,WAAW;qBACf,oBAAC,YAAS,WAAW,GAAG,MAAM,YAAY,GAAI,EAC9C,oBAAC;WAAK,WAAW,GAAG,KAAK,OAAO,KAAK,cAAc;qBAAG;YAAiB;WAClE;UACA;SAEX,GAEJ,EACF,qBAACC;QAAc,WAAW,GAAG,MAAM,QAAQ;;SAAE;SAAe;SAAU;;SAAwB;QACjF;MAEf,qBAACF;OAAa,MAAK;kBACjB,oBAACC,kBACC,QACE,oBAAC;QACC,SAAS;QACT,SAAS,UACP,oBAAC;SAAO,SAAQ;SAAO,GAAI;SAAO,WAAW,KAAK;mBAChD,qBAAC;UAAK,WAAW;qBACf,oBAAC,YAAS,WAAW,OAAQ,EAC7B,oBAAC;WAAK,WAAW,GAAG,KAAK,OAAO,KAAK,aAAa;qBAAG;YAAiB;WACjE;UACA;SAEX,GAEJ,EACF,qBAACC;QAAc,WAAW,GAAG,MAAM,QAAQ;;SAAE;SAAc;SAAU;;SAAwB;QAChF;;MACX;IAEN,qBAAC;KAAI,WAAW,KAAK;gBACnB,qBAACC;MAAW,WAAW,KAAK;;OAC1B,oBAACC;QAAW,MAAK;QAAU,WAAW,KAAK;SAAW;OACtD,oBAACC,aAAe,WAAW,KAAK,YAAa;OAC7C,oBAACD;QAAW,MAAK;QAAW,WAAW,KAAK;SAAY;;OAC7C,EAEb,qBAACE;MAAgB,SAAS,UAAU,oBAAC,cAAW,GAAI,QAAS;iBAC3D,qBAACC;OAAiB,SAAS,UAAU,oBAAC,eAAY,GAAI,QAAS;kBAC7D,oBAACC,gBAAgB,SAAS,UAAU,oBAAC,cAAW,GAAI,QAAS,GAAI,EACjE,oBAACC,gBAAkB,SAAS,UAAU,oBAAC;QAAW,MAAK;QAAS,GAAI;SAAS,GAAI;QAChE,EACnB,oBAACC,iBAAiB,SAAS,UAAU,oBAAC,eAAY,GAAI,QAAS,GAAI;OACnD;MACd;IAEN,qBAAC;KAAI,WAAW;gBACd,qBAACV;MAAa,MAAK;iBACjB,oBAACC,kBACC,QACE,oBAAC,sBACC,SAAS,UAAU,oBAAC;OAAO,SAAQ;OAAO,GAAI;OAAO,WAAW,aAAa;QAAU,GACvF,GAEJ,EACF,oBAACC;OAAc,WAAW,GAAG,MAAM,QAAQ;iBAAE;QAAoC;OACpE,EAEf,qBAACS;MAAa;MAAY,OAAO;MAAK,YAAY;MAAK,MAAK;iBAC1D,oBAACC,kBACC,QACE,oBAAC,cACC,SAAS,UACP,qBAAC;OAAO,SAAQ;OAAO,GAAI;OAAO,WAAW,UAAU,KAAK;;QAC1D,oBAAC,iBAAc,WAAW,GAAG,MAAM,UAAU,KAAK,UAAU,GAAI;QAChE,oBAAC,iBAAc,WAAW,GAAG,MAAM,UAAU,KAAK,UAAU,GAAI;QAChE,oBAAC,kBAAe,WAAW,GAAG,MAAM,UAAU,KAAK,WAAW,GAAI;;QAC3D,GAEX,GAEJ,EACF,oBAACC;OAAc,WAAW,GAAG,MAAM,OAAO;iBACxC,qBAACC;QACC,aAAY;QACZ,gBAAe;QACf,SAAS,UAAU,oBAAC,cAAW,GAAI,QAAS;mBAE5C,oBAACC;SAAmB,SAAS,UAAU,oBAAC,eAAY,GAAI,QAAS;mBAC/D,oBAACC,gBAAkB,SAAS,UAAU,oBAAC,cAAW,GAAI,QAAS,GAAI;UAChD,EACrB,oBAACC,iBAAmB,SAAS,UAAU,oBAAC;SAAY;SAAW,GAAI;UAAS,GAAI;SAC9D;QACN;OACH;MACX;OACW;IACf;GACI"}
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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"}
@@ -188,7 +188,7 @@
188
188
  border-radius: 1.75rem;
189
189
  color: oklch(1 0 0);
190
190
  font-size: 0.875rem;
191
- transition-property: opacity, transform;
191
+ transition-property: opacity, scale;
192
192
  transition-duration: 500ms;
193
193
  transition-delay: 100ms;
194
194
  transition-timing-function: linear(
@@ -214,7 +214,7 @@
214
214
  .media-default-skin .media-error[data-starting-style] .media-error__dialog,
215
215
  .media-default-skin .media-error[data-ending-style] .media-error__dialog {
216
216
  opacity: 0;
217
- transform: scale(0.5);
217
+ scale: 0.5;
218
218
  }
219
219
 
220
220
  .media-default-skin .media-error__content {
@@ -231,6 +231,7 @@
231
231
 
232
232
  .media-default-skin .media-error__description {
233
233
  opacity: 0.7;
234
+ overflow-wrap: anywhere;
234
235
  }
235
236
 
236
237
  .media-default-skin .media-error__actions {
@@ -253,12 +254,12 @@
253
254
  gap: 0.075rem;
254
255
  padding: 0.175rem;
255
256
  border-radius: calc(infinity * 1px);
256
- --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));
257
258
  --media-controls-current-shadow-color-subtle: oklch(
258
259
  from var(--media-controls-current-shadow-color) l c h /
259
260
  calc(alpha * 0.4)
260
261
  );
261
- text-shadow: 0 0 1px var(--media-controls-current-shadow-color);
262
+ text-shadow: 0 1px 0 var(--media-controls-current-shadow-color);
262
263
 
263
264
  @container media-root (width > 40rem) {
264
265
  gap: 0.125rem;
@@ -310,7 +311,7 @@
310
311
  color: oklch(0 0 0);
311
312
  font-weight: 500;
312
313
  text-align: center;
313
- transition-property: background-color, color, outline-offset, transform;
314
+ transition-property: background-color, color, outline-offset, scale;
314
315
  transition-duration: 150ms;
315
316
  transition-timing-function: ease-out;
316
317
  cursor: pointer;
@@ -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 {
@@ -462,7 +463,7 @@
462
463
  .media-default-skin .media-slider__thumb {
463
464
  z-index: 10;
464
465
  position: absolute;
465
- transform: translate(-50%, -50%);
466
+ translate: -50% -50%;
466
467
  width: 0.625rem;
467
468
  height: 0.625rem;
468
469
  background-color: currentColor;
@@ -568,13 +569,13 @@
568
569
  border: 0;
569
570
  color: inherit;
570
571
  overflow: visible;
571
- transition-property: transform, scale, opacity, filter;
572
+ transition-property: scale, opacity, filter;
572
573
  transition-duration: 150ms;
573
574
 
574
575
  &[data-starting-style],
575
576
  &[data-ending-style] {
576
577
  opacity: 0;
577
- transform: scale(0.5);
578
+ scale: 0.5;
578
579
  filter: blur(8px);
579
580
  }
580
581
 
@@ -642,6 +643,10 @@
642
643
  .media-default-skin .media-popover--volume {
643
644
  padding: 0.625rem 0.25rem;
644
645
  border-radius: calc(infinity * 1px);
646
+
647
+ &:has(media-volume-slider[data-availability="unsupported"]) {
648
+ display: none;
649
+ }
645
650
  }
646
651
 
647
652
  .media-default-skin .media-tooltip {
@@ -673,21 +678,21 @@
673
678
  --media-surface-outer-border-color: oklch(0 0 0 / 0.05);
674
679
  --media-surface-shadow-color: oklch(0 0 0 / 0.15);
675
680
  --media-surface-backdrop-filter: blur(16px) saturate(1.5);
681
+ --media-controls-text-color: var(--media-color-primary, oklch(0 0 0));
676
682
 
677
683
  @media (prefers-color-scheme: dark) {
678
684
  --media-border-color: oklch(1 0 0 / 0.1);
679
685
  --media-surface-background-color: oklch(0 0 0 / 0.4);
686
+ --media-controls-text-color: var(--media-color-primary, oklch(1 0 0));
680
687
  }
681
688
  }
682
689
 
683
690
  /* ==========================================================================
684
- Controls
685
- ========================================================================== */
691
+ Controls
692
+ ========================================================================== */
686
693
 
687
694
  .media-default-skin--audio .media-controls {
688
- @media (prefers-color-scheme: dark) {
689
- color: oklch(1 0 0);
690
- }
695
+ color: var(--media-controls-text-color);
691
696
  }
692
697
 
693
698
  /* ==========================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"skin.d.ts","names":[],"sources":["../../../../src/presets/audio/skin.tsx"],"mappings":";;;;KAyBY,cAAA,GAAiB,aAAA;AAAA,iBAab,SAAA,CAAU,KAAA,EAAO,cAAA,GAAiB,SAAA"}
1
+ {"version":3,"file":"skin.d.ts","names":[],"sources":["../../../../src/presets/audio/skin.tsx"],"mappings":";;;;KAyBY,cAAA,GAAiB,aAAA;AAAA,iBA6Cb,SAAA,CAAU,KAAA,EAAO,cAAA,GAAiB,SAAA"}
@@ -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
  });