@videojs/react 10.0.0-beta.21 → 10.0.0-beta.23

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 (295) hide show
  1. package/dist/default/icons/dist/react/default/cast-enter.js +32 -0
  2. package/dist/default/icons/dist/react/default/cast-enter.js.map +1 -0
  3. package/dist/default/icons/dist/react/default/cast-exit.js +36 -0
  4. package/dist/default/icons/dist/react/default/cast-exit.js.map +1 -0
  5. package/dist/default/icons/dist/react/minimal/cast-enter.js +28 -0
  6. package/dist/default/icons/dist/react/minimal/cast-enter.js.map +1 -0
  7. package/dist/default/icons/dist/react/minimal/cast-exit.js +32 -0
  8. package/dist/default/icons/dist/react/minimal/cast-exit.js.map +1 -0
  9. package/dist/default/index.js +5 -5
  10. package/dist/default/media/dash-video/index.js +6 -6
  11. package/dist/default/media/dash-video/index.js.map +1 -1
  12. package/dist/default/media/hls-video/index.js +6 -6
  13. package/dist/default/media/hls-video/index.js.map +1 -1
  14. package/dist/default/media/mux-audio/index.js +9 -8
  15. package/dist/default/media/mux-audio/index.js.map +1 -1
  16. package/dist/default/media/mux-video/index.js +6 -6
  17. package/dist/default/media/mux-video/index.js.map +1 -1
  18. package/dist/default/media/native-hls-video/index.js +6 -6
  19. package/dist/default/media/native-hls-video/index.js.map +1 -1
  20. package/dist/default/media/simple-hls-video/index.js +6 -5
  21. package/dist/default/media/simple-hls-video/index.js.map +1 -1
  22. package/dist/default/presets/audio/minimal-skin.css +2 -1
  23. package/dist/default/presets/audio/skin.css +2 -1
  24. package/dist/default/presets/audio/skin.js +15 -15
  25. package/dist/default/presets/audio/skin.js.map +1 -1
  26. package/dist/default/presets/live-audio/index.js +7 -0
  27. package/dist/default/presets/live-audio/minimal-skin.css +736 -0
  28. package/dist/default/presets/live-audio/minimal-skin.js +136 -0
  29. package/dist/default/presets/live-audio/minimal-skin.js.map +1 -0
  30. package/dist/default/presets/live-audio/minimal-skin.tailwind.js +166 -0
  31. package/dist/default/presets/live-audio/minimal-skin.tailwind.js.map +1 -0
  32. package/dist/default/presets/live-audio/skin.css +752 -0
  33. package/dist/default/presets/live-audio/skin.js +158 -0
  34. package/dist/default/presets/live-audio/skin.js.map +1 -0
  35. package/dist/default/presets/live-audio/skin.tailwind.js +165 -0
  36. package/dist/default/presets/live-audio/skin.tailwind.js.map +1 -0
  37. package/dist/default/presets/live-video/index.js +7 -0
  38. package/dist/default/presets/live-video/minimal-skin.css +1127 -0
  39. package/dist/default/presets/live-video/minimal-skin.js +198 -0
  40. package/dist/default/presets/live-video/minimal-skin.js.map +1 -0
  41. package/dist/default/presets/live-video/minimal-skin.tailwind.js +231 -0
  42. package/dist/default/presets/live-video/minimal-skin.tailwind.js.map +1 -0
  43. package/dist/default/presets/live-video/skin.css +1117 -0
  44. package/dist/default/presets/live-video/skin.js +252 -0
  45. package/dist/default/presets/live-video/skin.js.map +1 -0
  46. package/dist/default/presets/live-video/skin.tailwind.js +233 -0
  47. package/dist/default/presets/live-video/skin.tailwind.js.map +1 -0
  48. package/dist/default/presets/video/minimal-skin.css +8 -1
  49. package/dist/default/presets/video/minimal-skin.js +11 -0
  50. package/dist/default/presets/video/minimal-skin.js.map +1 -1
  51. package/dist/default/presets/video/minimal-skin.tailwind.js +11 -0
  52. package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
  53. package/dist/default/presets/video/skin.css +8 -1
  54. package/dist/default/presets/video/skin.js +35 -24
  55. package/dist/default/presets/video/skin.js.map +1 -1
  56. package/dist/default/presets/video/skin.tailwind.js +11 -0
  57. package/dist/default/presets/video/skin.tailwind.js.map +1 -1
  58. package/dist/default/skins/dist/default/default/tailwind/components/button.js +1 -1
  59. package/dist/default/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  60. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js +1 -1
  61. package/dist/default/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  62. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js +5 -0
  63. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  64. package/dist/default/ui/cast-button/cast-button.js +17 -0
  65. package/dist/default/ui/cast-button/cast-button.js.map +1 -0
  66. package/dist/default/ui/cast-button/index.js +2 -0
  67. package/dist/default/ui/gesture/{media-gesture.js → gesture.js} +6 -4
  68. package/dist/default/ui/gesture/gesture.js.map +1 -0
  69. package/dist/default/ui/hotkey/{media-hotkey.js → hotkey.js} +6 -4
  70. package/dist/default/ui/hotkey/hotkey.js.map +1 -0
  71. package/dist/default/utils/use-attach-media.js +14 -0
  72. package/dist/default/utils/use-attach-media.js.map +1 -0
  73. package/dist/default/utils/use-sync-props.js +14 -0
  74. package/dist/default/utils/use-sync-props.js.map +1 -0
  75. package/dist/dev/icons/dist/react/default/cast-enter.js +32 -0
  76. package/dist/dev/icons/dist/react/default/cast-enter.js.map +1 -0
  77. package/dist/dev/icons/dist/react/default/cast-exit.js +36 -0
  78. package/dist/dev/icons/dist/react/default/cast-exit.js.map +1 -0
  79. package/dist/dev/icons/dist/react/minimal/cast-enter.js +28 -0
  80. package/dist/dev/icons/dist/react/minimal/cast-enter.js.map +1 -0
  81. package/dist/dev/icons/dist/react/minimal/cast-exit.js +32 -0
  82. package/dist/dev/icons/dist/react/minimal/cast-exit.js.map +1 -0
  83. package/dist/dev/index.d.ts +5 -5
  84. package/dist/dev/index.js +5 -5
  85. package/dist/dev/media/audio.d.ts +2 -2
  86. package/dist/dev/media/audio.d.ts.map +1 -1
  87. package/dist/dev/media/background-video/index.d.ts +2 -2
  88. package/dist/dev/media/background-video/index.d.ts.map +1 -1
  89. package/dist/dev/media/dash-video/index.d.ts +7 -8
  90. package/dist/dev/media/dash-video/index.d.ts.map +1 -1
  91. package/dist/dev/media/dash-video/index.js +6 -6
  92. package/dist/dev/media/dash-video/index.js.map +1 -1
  93. package/dist/dev/media/hls-video/index.d.ts +7 -8
  94. package/dist/dev/media/hls-video/index.d.ts.map +1 -1
  95. package/dist/dev/media/hls-video/index.js +6 -6
  96. package/dist/dev/media/hls-video/index.js.map +1 -1
  97. package/dist/dev/media/mux-audio/index.d.ts +11 -9
  98. package/dist/dev/media/mux-audio/index.d.ts.map +1 -1
  99. package/dist/dev/media/mux-audio/index.js +9 -8
  100. package/dist/dev/media/mux-audio/index.js.map +1 -1
  101. package/dist/dev/media/mux-video/index.d.ts +7 -8
  102. package/dist/dev/media/mux-video/index.d.ts.map +1 -1
  103. package/dist/dev/media/mux-video/index.js +6 -6
  104. package/dist/dev/media/mux-video/index.js.map +1 -1
  105. package/dist/dev/media/native-hls-video/index.d.ts +7 -8
  106. package/dist/dev/media/native-hls-video/index.d.ts.map +1 -1
  107. package/dist/dev/media/native-hls-video/index.js +6 -6
  108. package/dist/dev/media/native-hls-video/index.js.map +1 -1
  109. package/dist/dev/media/simple-hls-video/index.d.ts +7 -6
  110. package/dist/dev/media/simple-hls-video/index.d.ts.map +1 -1
  111. package/dist/dev/media/simple-hls-video/index.js +6 -5
  112. package/dist/dev/media/simple-hls-video/index.js.map +1 -1
  113. package/dist/dev/media/video.d.ts +2 -2
  114. package/dist/dev/media/video.d.ts.map +1 -1
  115. package/dist/dev/player/context.d.ts +2 -2
  116. package/dist/dev/player/context.d.ts.map +1 -1
  117. package/dist/dev/presets/audio/minimal-skin.css +2 -1
  118. package/dist/dev/presets/audio/skin.css +2 -1
  119. package/dist/dev/presets/audio/skin.js +15 -15
  120. package/dist/dev/presets/audio/skin.js.map +1 -1
  121. package/dist/dev/presets/background/skin.d.ts +2 -2
  122. package/dist/dev/presets/background/skin.d.ts.map +1 -1
  123. package/dist/dev/presets/live-audio/index.d.ts +7 -0
  124. package/dist/dev/presets/live-audio/index.js +7 -0
  125. package/dist/dev/presets/live-audio/minimal-skin.css +736 -0
  126. package/dist/dev/presets/live-audio/minimal-skin.d.ts +16 -0
  127. package/dist/dev/presets/live-audio/minimal-skin.d.ts.map +1 -0
  128. package/dist/dev/presets/live-audio/minimal-skin.js +136 -0
  129. package/dist/dev/presets/live-audio/minimal-skin.js.map +1 -0
  130. package/dist/dev/presets/live-audio/minimal-skin.tailwind.d.ts +8 -0
  131. package/dist/dev/presets/live-audio/minimal-skin.tailwind.d.ts.map +1 -0
  132. package/dist/dev/presets/live-audio/minimal-skin.tailwind.js +166 -0
  133. package/dist/dev/presets/live-audio/minimal-skin.tailwind.js.map +1 -0
  134. package/dist/dev/presets/live-audio/skin.css +752 -0
  135. package/dist/dev/presets/live-audio/skin.d.ts +15 -0
  136. package/dist/dev/presets/live-audio/skin.d.ts.map +1 -0
  137. package/dist/dev/presets/live-audio/skin.js +158 -0
  138. package/dist/dev/presets/live-audio/skin.js.map +1 -0
  139. package/dist/dev/presets/live-audio/skin.tailwind.d.ts +8 -0
  140. package/dist/dev/presets/live-audio/skin.tailwind.d.ts.map +1 -0
  141. package/dist/dev/presets/live-audio/skin.tailwind.js +165 -0
  142. package/dist/dev/presets/live-audio/skin.tailwind.js.map +1 -0
  143. package/dist/dev/presets/live-video/index.d.ts +7 -0
  144. package/dist/dev/presets/live-video/index.js +7 -0
  145. package/dist/dev/presets/live-video/minimal-skin.css +1127 -0
  146. package/dist/dev/presets/live-video/minimal-skin.d.ts +16 -0
  147. package/dist/dev/presets/live-video/minimal-skin.d.ts.map +1 -0
  148. package/dist/dev/presets/live-video/minimal-skin.js +198 -0
  149. package/dist/dev/presets/live-video/minimal-skin.js.map +1 -0
  150. package/dist/dev/presets/live-video/minimal-skin.tailwind.d.ts +8 -0
  151. package/dist/dev/presets/live-video/minimal-skin.tailwind.d.ts.map +1 -0
  152. package/dist/dev/presets/live-video/minimal-skin.tailwind.js +231 -0
  153. package/dist/dev/presets/live-video/minimal-skin.tailwind.js.map +1 -0
  154. package/dist/dev/presets/live-video/skin.css +1117 -0
  155. package/dist/dev/presets/live-video/skin.d.ts +15 -0
  156. package/dist/dev/presets/live-video/skin.d.ts.map +1 -0
  157. package/dist/dev/presets/live-video/skin.js +252 -0
  158. package/dist/dev/presets/live-video/skin.js.map +1 -0
  159. package/dist/dev/presets/live-video/skin.tailwind.d.ts +8 -0
  160. package/dist/dev/presets/live-video/skin.tailwind.d.ts.map +1 -0
  161. package/dist/dev/presets/live-video/skin.tailwind.js +233 -0
  162. package/dist/dev/presets/live-video/skin.tailwind.js.map +1 -0
  163. package/dist/dev/presets/video/minimal-skin.css +8 -1
  164. package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
  165. package/dist/dev/presets/video/minimal-skin.js +11 -0
  166. package/dist/dev/presets/video/minimal-skin.js.map +1 -1
  167. package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
  168. package/dist/dev/presets/video/minimal-skin.tailwind.js +11 -0
  169. package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
  170. package/dist/dev/presets/video/skin.css +8 -1
  171. package/dist/dev/presets/video/skin.d.ts.map +1 -1
  172. package/dist/dev/presets/video/skin.js +35 -24
  173. package/dist/dev/presets/video/skin.js.map +1 -1
  174. package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
  175. package/dist/dev/presets/video/skin.tailwind.js +11 -0
  176. package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
  177. package/dist/dev/skins/dist/default/default/tailwind/components/button.js +1 -1
  178. package/dist/dev/skins/dist/default/default/tailwind/components/button.js.map +1 -1
  179. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js +1 -1
  180. package/dist/dev/skins/dist/default/minimal/tailwind/components/button.js.map +1 -1
  181. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js +5 -0
  182. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -1
  183. package/dist/dev/ui/alert-dialog/alert-dialog-close.d.ts +2 -2
  184. package/dist/dev/ui/alert-dialog/alert-dialog-close.d.ts.map +1 -1
  185. package/dist/dev/ui/alert-dialog/alert-dialog-description.d.ts +2 -2
  186. package/dist/dev/ui/alert-dialog/alert-dialog-description.d.ts.map +1 -1
  187. package/dist/dev/ui/alert-dialog/alert-dialog-popup.d.ts +2 -2
  188. package/dist/dev/ui/alert-dialog/alert-dialog-popup.d.ts.map +1 -1
  189. package/dist/dev/ui/alert-dialog/alert-dialog-title.d.ts +2 -2
  190. package/dist/dev/ui/alert-dialog/alert-dialog-title.d.ts.map +1 -1
  191. package/dist/dev/ui/buffering-indicator/buffering-indicator.d.ts +2 -2
  192. package/dist/dev/ui/buffering-indicator/buffering-indicator.d.ts.map +1 -1
  193. package/dist/dev/ui/captions-button/captions-button.d.ts +2 -2
  194. package/dist/dev/ui/captions-button/captions-button.d.ts.map +1 -1
  195. package/dist/dev/ui/cast-button/cast-button.d.ts +15 -0
  196. package/dist/dev/ui/cast-button/cast-button.d.ts.map +1 -0
  197. package/dist/dev/ui/cast-button/cast-button.js +17 -0
  198. package/dist/dev/ui/cast-button/cast-button.js.map +1 -0
  199. package/dist/dev/ui/cast-button/index.d.ts +2 -0
  200. package/dist/dev/ui/cast-button/index.js +2 -0
  201. package/dist/dev/ui/controls/controls-group.d.ts +2 -2
  202. package/dist/dev/ui/controls/controls-group.d.ts.map +1 -1
  203. package/dist/dev/ui/controls/controls-root.d.ts +2 -2
  204. package/dist/dev/ui/controls/controls-root.d.ts.map +1 -1
  205. package/dist/dev/ui/error-dialog/error-dialog-description.d.ts +2 -2
  206. package/dist/dev/ui/error-dialog/error-dialog-description.d.ts.map +1 -1
  207. package/dist/dev/ui/fullscreen-button/fullscreen-button.d.ts +2 -2
  208. package/dist/dev/ui/fullscreen-button/fullscreen-button.d.ts.map +1 -1
  209. package/dist/dev/ui/gesture/gesture.d.ts +30 -0
  210. package/dist/dev/ui/gesture/gesture.d.ts.map +1 -0
  211. package/dist/dev/ui/gesture/{media-gesture.js → gesture.js} +6 -4
  212. package/dist/dev/ui/gesture/gesture.js.map +1 -0
  213. package/dist/dev/ui/hotkey/hotkey.d.ts +28 -0
  214. package/dist/dev/ui/hotkey/hotkey.d.ts.map +1 -0
  215. package/dist/dev/ui/hotkey/{media-hotkey.js → hotkey.js} +6 -4
  216. package/dist/dev/ui/hotkey/hotkey.js.map +1 -0
  217. package/dist/dev/ui/mute-button/mute-button.d.ts +2 -2
  218. package/dist/dev/ui/mute-button/mute-button.d.ts.map +1 -1
  219. package/dist/dev/ui/pip-button/pip-button.d.ts +2 -2
  220. package/dist/dev/ui/pip-button/pip-button.d.ts.map +1 -1
  221. package/dist/dev/ui/play-button/play-button.d.ts +2 -2
  222. package/dist/dev/ui/play-button/play-button.d.ts.map +1 -1
  223. package/dist/dev/ui/playback-rate-button/playback-rate-button.d.ts +2 -2
  224. package/dist/dev/ui/playback-rate-button/playback-rate-button.d.ts.map +1 -1
  225. package/dist/dev/ui/popover/popover-arrow.d.ts +2 -2
  226. package/dist/dev/ui/popover/popover-arrow.d.ts.map +1 -1
  227. package/dist/dev/ui/popover/popover-popup.d.ts +2 -2
  228. package/dist/dev/ui/popover/popover-popup.d.ts.map +1 -1
  229. package/dist/dev/ui/popover/popover-trigger.d.ts +2 -2
  230. package/dist/dev/ui/popover/popover-trigger.d.ts.map +1 -1
  231. package/dist/dev/ui/poster/poster.d.ts +2 -2
  232. package/dist/dev/ui/poster/poster.d.ts.map +1 -1
  233. package/dist/dev/ui/seek-button/seek-button.d.ts +2 -2
  234. package/dist/dev/ui/seek-button/seek-button.d.ts.map +1 -1
  235. package/dist/dev/ui/slider/slider-buffer.d.ts +2 -2
  236. package/dist/dev/ui/slider/slider-buffer.d.ts.map +1 -1
  237. package/dist/dev/ui/slider/slider-fill.d.ts +2 -2
  238. package/dist/dev/ui/slider/slider-fill.d.ts.map +1 -1
  239. package/dist/dev/ui/slider/slider-preview.d.ts +2 -2
  240. package/dist/dev/ui/slider/slider-preview.d.ts.map +1 -1
  241. package/dist/dev/ui/slider/slider-root.d.ts +2 -2
  242. package/dist/dev/ui/slider/slider-root.d.ts.map +1 -1
  243. package/dist/dev/ui/slider/slider-thumb.d.ts +2 -2
  244. package/dist/dev/ui/slider/slider-thumb.d.ts.map +1 -1
  245. package/dist/dev/ui/slider/slider-thumbnail.d.ts +2 -2
  246. package/dist/dev/ui/slider/slider-thumbnail.d.ts.map +1 -1
  247. package/dist/dev/ui/slider/slider-track.d.ts +2 -2
  248. package/dist/dev/ui/slider/slider-track.d.ts.map +1 -1
  249. package/dist/dev/ui/slider/slider-value.d.ts +2 -2
  250. package/dist/dev/ui/slider/slider-value.d.ts.map +1 -1
  251. package/dist/dev/ui/thumbnail/thumbnail.d.ts +2 -2
  252. package/dist/dev/ui/thumbnail/thumbnail.d.ts.map +1 -1
  253. package/dist/dev/ui/time/time-group.d.ts +2 -2
  254. package/dist/dev/ui/time/time-group.d.ts.map +1 -1
  255. package/dist/dev/ui/time/time-separator.d.ts +2 -2
  256. package/dist/dev/ui/time/time-separator.d.ts.map +1 -1
  257. package/dist/dev/ui/time/time-value.d.ts +2 -2
  258. package/dist/dev/ui/time/time-value.d.ts.map +1 -1
  259. package/dist/dev/ui/time-slider/time-slider-root.d.ts +2 -2
  260. package/dist/dev/ui/time-slider/time-slider-root.d.ts.map +1 -1
  261. package/dist/dev/ui/tooltip/tooltip-arrow.d.ts +2 -2
  262. package/dist/dev/ui/tooltip/tooltip-arrow.d.ts.map +1 -1
  263. package/dist/dev/ui/tooltip/tooltip-popup.d.ts +2 -2
  264. package/dist/dev/ui/tooltip/tooltip-popup.d.ts.map +1 -1
  265. package/dist/dev/ui/tooltip/tooltip-trigger.d.ts +2 -2
  266. package/dist/dev/ui/tooltip/tooltip-trigger.d.ts.map +1 -1
  267. package/dist/dev/ui/volume-slider/volume-slider-root.d.ts +2 -2
  268. package/dist/dev/ui/volume-slider/volume-slider-root.d.ts.map +1 -1
  269. package/dist/dev/utils/use-attach-media.d.ts +8 -0
  270. package/dist/dev/utils/use-attach-media.d.ts.map +1 -0
  271. package/dist/dev/utils/use-attach-media.js +14 -0
  272. package/dist/dev/utils/use-attach-media.js.map +1 -0
  273. package/dist/dev/utils/use-sync-props.js +14 -0
  274. package/dist/dev/utils/use-sync-props.js.map +1 -0
  275. package/package.json +30 -9
  276. package/dist/default/ui/gesture/media-gesture.js.map +0 -1
  277. package/dist/default/ui/hotkey/media-hotkey.js.map +0 -1
  278. package/dist/default/utils/attach-media-element.js +0 -12
  279. package/dist/default/utils/attach-media-element.js.map +0 -1
  280. package/dist/default/utils/media-props.js +0 -19
  281. package/dist/default/utils/media-props.js.map +0 -1
  282. package/dist/dev/ui/gesture/media-gesture.d.ts +0 -23
  283. package/dist/dev/ui/gesture/media-gesture.d.ts.map +0 -1
  284. package/dist/dev/ui/gesture/media-gesture.js.map +0 -1
  285. package/dist/dev/ui/hotkey/media-hotkey.d.ts +0 -21
  286. package/dist/dev/ui/hotkey/media-hotkey.d.ts.map +0 -1
  287. package/dist/dev/ui/hotkey/media-hotkey.js.map +0 -1
  288. package/dist/dev/utils/attach-media-element.d.ts +0 -9
  289. package/dist/dev/utils/attach-media-element.d.ts.map +0 -1
  290. package/dist/dev/utils/attach-media-element.js +0 -12
  291. package/dist/dev/utils/attach-media-element.js.map +0 -1
  292. package/dist/dev/utils/media-props.d.ts +0 -8
  293. package/dist/dev/utils/media-props.d.ts.map +0 -1
  294. package/dist/dev/utils/media-props.js +0 -19
  295. package/dist/dev/utils/media-props.js.map +0 -1
@@ -0,0 +1,736 @@
1
+ /* ==========================================================================
2
+ Reset
3
+ ========================================================================== */
4
+
5
+ .media-minimal-skin *,
6
+ .media-minimal-skin *::before,
7
+ .media-minimal-skin *::after {
8
+ box-sizing: border-box;
9
+ }
10
+ .media-minimal-skin img,
11
+ .media-minimal-skin video,
12
+ .media-minimal-skin svg {
13
+ display: block;
14
+ max-width: 100%;
15
+ }
16
+ .media-minimal-skin button {
17
+ font: inherit;
18
+ }
19
+ @media (prefers-reduced-motion: no-preference) {
20
+ .media-minimal-skin {
21
+ interpolate-size: allow-keywords;
22
+ }
23
+ }
24
+
25
+ /* ==========================================================================
26
+ Root Container
27
+ ========================================================================== */
28
+
29
+ .media-minimal-skin {
30
+ container: media-root / inline-size;
31
+ position: relative;
32
+ isolation: isolate;
33
+ display: block;
34
+ height: 100%;
35
+ width: 100%;
36
+ border-radius: var(--media-border-radius, 0.75rem);
37
+ outline: 2px solid transparent;
38
+ outline-offset: 2px;
39
+
40
+ &:focus-visible {
41
+ outline-color: currentColor;
42
+ }
43
+ font-family:
44
+ Inter Variable,
45
+ Inter,
46
+ ui-sans-serif,
47
+ system-ui,
48
+ sans-serif;
49
+ line-height: 1.5;
50
+ letter-spacing: normal;
51
+ -webkit-font-smoothing: auto;
52
+ -moz-osx-font-smoothing: auto;
53
+
54
+ & > * {
55
+ font-size: 0.75rem; /* 12px at 100% font size */
56
+ }
57
+
58
+ @container media-root (width > 48rem) {
59
+ & > * {
60
+ font-size: 0.875rem; /* 14px at 100% font size */
61
+ }
62
+ }
63
+ }
64
+
65
+ /* ==========================================================================
66
+ Buffering Indicator
67
+ ========================================================================== */
68
+
69
+ .media-minimal-skin .media-buffering-indicator {
70
+ position: absolute;
71
+ inset: 0;
72
+ display: none;
73
+ align-items: center;
74
+ justify-content: center;
75
+ color: oklch(1 0 0);
76
+ pointer-events: none;
77
+
78
+ &[data-visible] {
79
+ display: flex;
80
+ }
81
+ }
82
+
83
+ /* ==========================================================================
84
+ Error Dialog
85
+ ========================================================================== */
86
+
87
+ .media-minimal-skin .media-error:not([data-open]) {
88
+ display: none;
89
+ }
90
+
91
+ .media-minimal-skin .media-error__title {
92
+ font-weight: 600;
93
+ line-height: 1.25;
94
+ }
95
+
96
+ .media-minimal-skin .media-error__description {
97
+ opacity: 0.7;
98
+ overflow-wrap: anywhere;
99
+ }
100
+
101
+ .media-minimal-skin .media-error__actions {
102
+ display: flex;
103
+ gap: 0.5rem;
104
+
105
+ & > * {
106
+ flex: 1;
107
+ }
108
+ }
109
+
110
+ .media-minimal-skin .media-error[data-open] ~ .media-controls * {
111
+ visibility: hidden;
112
+ }
113
+
114
+ /* ==========================================================================
115
+ Controls
116
+ ========================================================================== */
117
+
118
+ .media-minimal-skin .media-controls {
119
+ container: media-controls / inline-size;
120
+ display: flex;
121
+ align-items: center;
122
+ --media-controls-current-shadow-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - 0.5) * 0.5), 0.15));
123
+ --media-controls-current-shadow-color-subtle: oklch(
124
+ from var(--media-controls-current-shadow-color) l c h /
125
+ calc(alpha * 0.4)
126
+ );
127
+ background-color: var(--media-controls-background-color);
128
+ backdrop-filter: var(--media-controls-backdrop-filter);
129
+ text-shadow: 0 1px 0 var(--media-controls-current-shadow-color);
130
+ }
131
+
132
+ /* ==========================================================================
133
+ Time Controls & Display
134
+ ========================================================================== */
135
+
136
+ .media-minimal-skin .media-time-controls {
137
+ container: media-time-controls / inline-size;
138
+ display: flex;
139
+ flex-direction: row-reverse;
140
+ align-items: center;
141
+ flex: 1;
142
+ gap: 0.75rem;
143
+ }
144
+
145
+ .media-minimal-skin .media-time-group {
146
+ display: flex;
147
+ align-items: center;
148
+ gap: 0.25rem;
149
+ }
150
+
151
+ .media-minimal-skin .media-time {
152
+ font-variant-numeric: tabular-nums;
153
+ }
154
+
155
+ .media-minimal-skin .media-time--current,
156
+ .media-minimal-skin .media-time-separator {
157
+ display: none;
158
+ }
159
+
160
+ @container media-root (width > 42rem) {
161
+ .media-minimal-skin .media-time-controls {
162
+ flex-direction: row;
163
+ }
164
+
165
+ .media-minimal-skin .media-time--duration,
166
+ .media-minimal-skin .media-time-separator {
167
+ color: oklch(from currentColor l c h / 0.6);
168
+ }
169
+
170
+ .media-minimal-skin .media-time--current,
171
+ .media-minimal-skin .media-time-separator {
172
+ display: inline;
173
+ }
174
+ }
175
+
176
+ /* ==========================================================================
177
+ Buttons
178
+ ========================================================================== */
179
+
180
+ /* Base button */
181
+ .media-minimal-skin .media-button {
182
+ display: flex;
183
+ align-items: center;
184
+ justify-content: center;
185
+ flex-shrink: 0;
186
+ padding: 0.5rem 1rem;
187
+ border: none;
188
+ border-radius: 0.5rem;
189
+ outline: 2px solid transparent;
190
+ outline-offset: -2px;
191
+ transition-property: background-color, outline-offset, scale;
192
+ /* Fix weird jumping when clicking on the buttons in Safari. */
193
+ will-change: scale;
194
+ transition-duration: 150ms;
195
+ transition-timing-function: ease-out;
196
+ cursor: pointer;
197
+ user-select: none;
198
+ text-align: center;
199
+ touch-action: manipulation;
200
+
201
+ &:focus-visible {
202
+ outline-color: currentColor;
203
+ outline-offset: 2px;
204
+ }
205
+
206
+ &:active {
207
+ scale: 0.98;
208
+ }
209
+
210
+ &[disabled] {
211
+ opacity: 0.5;
212
+ filter: grayscale(1);
213
+ cursor: not-allowed;
214
+ }
215
+
216
+ &[data-availability="unavailable"],
217
+ &[data-availability="unsupported"] {
218
+ display: none;
219
+ }
220
+ }
221
+
222
+ /* biome-ignore lint/correctness/noUnknownProperty: corner-shape is an emerging CSS spec */
223
+ @supports (corner-shape: squircle) {
224
+ .media-minimal-skin .media-button {
225
+ border-radius: 1rem;
226
+ /* biome-ignore lint/correctness/noUnknownProperty: corner-shape is an emerging CSS spec */
227
+ corner-shape: squircle;
228
+ }
229
+ }
230
+
231
+ /* Primary button variant */
232
+ .media-minimal-skin .media-button--primary {
233
+ background: oklch(1 0 0);
234
+ color: oklch(0 0 0);
235
+ font-weight: 500;
236
+ text-shadow: none;
237
+ }
238
+
239
+ /* Subtle button variant */
240
+ .media-minimal-skin .media-button--subtle {
241
+ background: transparent;
242
+ color: inherit;
243
+ text-shadow: inherit;
244
+
245
+ &:hover,
246
+ &:focus-visible,
247
+ &[aria-expanded="true"] {
248
+ background: oklch(from currentColor l c h / 0.1);
249
+ }
250
+ }
251
+
252
+ /* Icon button variant */
253
+ .media-minimal-skin .media-button--icon {
254
+ display: grid;
255
+ width: 2.375rem;
256
+ padding: 0;
257
+ aspect-ratio: 1;
258
+
259
+ &:active {
260
+ scale: 0.9;
261
+ }
262
+
263
+ & .media-icon {
264
+ filter: drop-shadow(0 1px 0 var(--media-controls-current-shadow-color, oklch(0 0 0 / 0.25)));
265
+ }
266
+ }
267
+
268
+ /* Seek button */
269
+ .media-minimal-skin .media-button--seek {
270
+ & .media-icon__label {
271
+ position: absolute;
272
+ right: -1px;
273
+ bottom: -3px;
274
+ font-size: 10px; /* Hard coded due to size limitations. */
275
+ font-weight: 480;
276
+ font-variant-numeric: tabular-nums;
277
+ }
278
+
279
+ &:has(.media-icon--flipped) .media-icon__label {
280
+ right: unset;
281
+ left: -1px;
282
+ }
283
+ }
284
+
285
+ /* Playback rate button */
286
+ .media-minimal-skin .media-button--playback-rate {
287
+ padding: 0;
288
+
289
+ &::after {
290
+ content: attr(data-rate) "\00D7";
291
+ width: 4ch;
292
+ font-variant-numeric: tabular-nums;
293
+ }
294
+ }
295
+
296
+ /* ==========================================================================
297
+ Button Groups
298
+ ========================================================================== */
299
+
300
+ .media-minimal-skin .media-button-group {
301
+ display: flex;
302
+ align-items: center;
303
+ gap: 0.075rem;
304
+
305
+ @container media-root (width > 42rem) {
306
+ gap: 0.125rem;
307
+ }
308
+ }
309
+
310
+ /* ==========================================================================
311
+ Icons
312
+ ========================================================================== */
313
+
314
+ .media-minimal-skin .media-icon__container {
315
+ position: relative;
316
+ }
317
+ .media-minimal-skin .media-icon {
318
+ display: block;
319
+ flex-shrink: 0;
320
+ grid-area: 1 / 1;
321
+ width: 18px;
322
+ height: 18px;
323
+ transition-behavior: allow-discrete;
324
+ transition-property: display, opacity;
325
+ transition-duration: 150ms;
326
+ transition-timing-function: ease-out;
327
+ }
328
+ .media-minimal-skin .media-icon--flipped {
329
+ scale: -1 1;
330
+ }
331
+
332
+ /* ==========================================================================
333
+ Slider
334
+ ========================================================================== */
335
+
336
+ .media-minimal-skin .media-slider {
337
+ position: relative;
338
+ display: flex;
339
+ align-items: center;
340
+ justify-content: center;
341
+ flex: 1;
342
+ border-radius: calc(infinity * 1px);
343
+ outline: none;
344
+ cursor: pointer;
345
+
346
+ &[data-orientation="horizontal"] {
347
+ min-width: 5rem;
348
+ width: 100%;
349
+ height: 2rem;
350
+ }
351
+
352
+ &[data-orientation="vertical"] {
353
+ width: 2rem;
354
+ height: 4.5rem;
355
+ }
356
+ }
357
+
358
+ /* Track */
359
+ .media-minimal-skin .media-slider__track {
360
+ position: relative;
361
+ isolation: isolate;
362
+ overflow: hidden;
363
+ border-radius: inherit;
364
+ user-select: none;
365
+ background-color: oklch(from currentColor l c h / 0.2);
366
+
367
+ &[data-orientation="horizontal"] {
368
+ width: 100%;
369
+ height: 0.1875rem;
370
+ }
371
+
372
+ &[data-orientation="vertical"] {
373
+ width: 0.1875rem;
374
+ height: 100%;
375
+ }
376
+ }
377
+
378
+ /* Thumb */
379
+ .media-minimal-skin .media-slider__thumb {
380
+ position: absolute;
381
+ translate: -50% -50%;
382
+ z-index: 10;
383
+ width: 0.75rem;
384
+ height: 0.75rem;
385
+ background-color: currentColor;
386
+ border-radius: calc(infinity * 1px);
387
+ box-shadow:
388
+ 0 0 0 1px var(--media-controls-current-shadow-color-subtle, oklch(0 0 0 / 0.1)),
389
+ 0 1px 3px 0 oklch(0 0 0 / 0.15),
390
+ 0 1px 2px -1px oklch(0 0 0 / 0.15);
391
+ opacity: 0;
392
+ scale: 0.7;
393
+ transform-origin: center;
394
+ transition-property: opacity, scale, outline-offset;
395
+ transition-duration: 150ms;
396
+ transition-timing-function: ease-out;
397
+ user-select: none;
398
+ outline: 2px solid transparent;
399
+ outline-offset: -2px;
400
+
401
+ &[data-orientation="horizontal"] {
402
+ top: 50%;
403
+ left: var(--media-slider-fill);
404
+ }
405
+
406
+ &[data-orientation="vertical"] {
407
+ left: 50%;
408
+ top: calc(100% - var(--media-slider-fill));
409
+ }
410
+
411
+ &:focus-visible {
412
+ outline-color: currentColor;
413
+ outline-offset: 2px;
414
+ }
415
+ }
416
+
417
+ .media-minimal-skin .media-slider:hover .media-slider__thumb,
418
+ .media-minimal-skin .media-slider:focus-within .media-slider__thumb,
419
+ .media-minimal-skin .media-slider__thumb--persistent {
420
+ opacity: 1;
421
+ scale: 1;
422
+ }
423
+
424
+ /* Shared track fills */
425
+ .media-minimal-skin .media-slider__buffer,
426
+ .media-minimal-skin .media-slider__fill {
427
+ position: absolute;
428
+ border-radius: inherit;
429
+ pointer-events: none;
430
+ }
431
+
432
+ .media-minimal-skin .media-slider__buffer[data-orientation="horizontal"],
433
+ .media-minimal-skin .media-slider__fill[data-orientation="horizontal"] {
434
+ inset-block: 0;
435
+ left: 0;
436
+ }
437
+
438
+ .media-minimal-skin .media-slider__buffer[data-orientation="vertical"],
439
+ .media-minimal-skin .media-slider__fill[data-orientation="vertical"] {
440
+ inset-inline: 0;
441
+ bottom: 0;
442
+ }
443
+
444
+ /* Buffer */
445
+ .media-minimal-skin .media-slider__buffer {
446
+ background-color: oklch(from currentColor l c h / 0.2);
447
+ transition-duration: 0.25s;
448
+ transition-timing-function: ease-out;
449
+
450
+ &[data-orientation="horizontal"] {
451
+ width: var(--media-slider-buffer);
452
+ transition-property: width;
453
+ }
454
+
455
+ &[data-orientation="vertical"] {
456
+ height: var(--media-slider-buffer);
457
+ transition-property: height;
458
+ }
459
+ }
460
+
461
+ /* Fill */
462
+ .media-minimal-skin .media-slider__fill {
463
+ background-color: currentColor;
464
+
465
+ &[data-orientation="horizontal"] {
466
+ width: var(--media-slider-fill);
467
+ }
468
+
469
+ &[data-orientation="vertical"] {
470
+ height: var(--media-slider-fill);
471
+ }
472
+ }
473
+
474
+ /* Dragging — thumb and fill follow the pointer position */
475
+ .media-minimal-skin .media-slider[data-dragging] .media-slider__thumb[data-orientation="horizontal"] {
476
+ left: var(--media-slider-pointer);
477
+ }
478
+
479
+ .media-minimal-skin .media-slider[data-dragging] .media-slider__thumb[data-orientation="vertical"] {
480
+ top: calc(100% - var(--media-slider-pointer));
481
+ }
482
+
483
+ .media-minimal-skin .media-slider[data-dragging] .media-slider__fill[data-orientation="horizontal"] {
484
+ width: var(--media-slider-pointer);
485
+ }
486
+
487
+ .media-minimal-skin .media-slider[data-dragging] .media-slider__fill[data-orientation="vertical"] {
488
+ height: var(--media-slider-pointer);
489
+ }
490
+
491
+ /* ==========================================================================
492
+ Popups & Animations
493
+ ========================================================================== */
494
+
495
+ .media-minimal-skin .media-popover,
496
+ .media-minimal-skin .media-tooltip {
497
+ margin: 0;
498
+ border: 0;
499
+ color: inherit;
500
+ overflow: visible;
501
+ transition-property: scale, opacity, filter;
502
+ transition-duration: var(--media-popup-transition-duration);
503
+ transition-timing-function: var(--media-popup-transition-timing-function);
504
+
505
+ &[data-starting-style],
506
+ &[data-ending-style] {
507
+ opacity: 0;
508
+ scale: 0.5;
509
+ filter: blur(8px);
510
+ }
511
+
512
+ &[data-instant] {
513
+ transition-duration: 0ms;
514
+ }
515
+
516
+ &[data-side="top"] {
517
+ transform-origin: bottom;
518
+ }
519
+ &[data-side="bottom"] {
520
+ transform-origin: top;
521
+ }
522
+ &[data-side="left"] {
523
+ transform-origin: right;
524
+ }
525
+ &[data-side="right"] {
526
+ transform-origin: left;
527
+ }
528
+
529
+ /* Safe area between trigger and popup */
530
+ &::before {
531
+ content: "";
532
+ position: absolute;
533
+ pointer-events: inherit;
534
+ }
535
+
536
+ &[data-side="top"]::before,
537
+ &[data-side="bottom"]::before {
538
+ width: 100%;
539
+ inset-inline: 0;
540
+ }
541
+ &[data-side="top"]::before {
542
+ top: 100%;
543
+ }
544
+ &[data-side="bottom"]::before {
545
+ bottom: 100%;
546
+ }
547
+
548
+ &[data-side="left"]::before,
549
+ &[data-side="right"]::before {
550
+ height: 100%;
551
+ inset-block: 0;
552
+ }
553
+ &[data-side="left"]::before {
554
+ left: 100%;
555
+ }
556
+ &[data-side="right"]::before {
557
+ right: 100%;
558
+ }
559
+ }
560
+
561
+ .media-minimal-skin .media-popover {
562
+ &[data-side="top"]::before,
563
+ &[data-side="bottom"]::before {
564
+ height: var(--media-popover-side-offset);
565
+ }
566
+ &[data-side="left"]::before,
567
+ &[data-side="right"]::before {
568
+ width: var(--media-popover-side-offset);
569
+ }
570
+ }
571
+
572
+ .media-minimal-skin .media-tooltip {
573
+ padding: 0.25rem 0.5rem;
574
+ border-radius: 0.5rem;
575
+ background-color: var(--media-tooltip-background-color);
576
+ backdrop-filter: var(--media-tooltip-backdrop-filter);
577
+ box-shadow:
578
+ 0 0 0 1px var(--media-tooltip-border-color),
579
+ 0 4px 6px -1px oklch(0 0 0 / 0.1),
580
+ 0 2px 4px -2px oklch(0 0 0 / 0.1);
581
+ color: var(--media-tooltip-text-color);
582
+ font-size: 0.75rem; /* 12px at 100% font size */
583
+ white-space: nowrap;
584
+
585
+ &[data-side="top"]::before,
586
+ &[data-side="bottom"]::before {
587
+ height: var(--media-tooltip-side-offset);
588
+ }
589
+ &[data-side="left"]::before,
590
+ &[data-side="right"]::before {
591
+ width: var(--media-tooltip-side-offset);
592
+ }
593
+ }
594
+
595
+ .media-minimal-skin .media-popover--volume:has(media-volume-slider[data-availability="unsupported"]) {
596
+ display: none;
597
+ }
598
+
599
+ /* ==========================================================================
600
+ Icon State Visibility for Audio Skins
601
+
602
+ Data-attribute-driven visibility rules for multi-state icon buttons.
603
+ Uses :is() with both element selectors (for HTML custom element wrappers)
604
+ and class selectors (for React rendered SVG elements).
605
+ ========================================================================== */
606
+
607
+ /* --- All icons hidden by default --- */
608
+
609
+ .media-button--play .media-icon--restart,
610
+ .media-button--play .media-icon--play,
611
+ .media-button--play .media-icon--pause,
612
+ .media-button--mute .media-icon--volume-off,
613
+ .media-button--mute .media-icon--volume-low,
614
+ .media-button--mute .media-icon--volume-high {
615
+ display: none;
616
+ opacity: 0;
617
+ }
618
+
619
+ /* --- Active icon per state --- */
620
+
621
+ /* Play: ended → restart */
622
+ .media-button--play[data-ended] .media-icon--restart,
623
+ /* Play: paused (not ended) → play */
624
+ .media-button--play:not([data-ended])[data-paused] .media-icon--play,
625
+ /* Play: playing (not paused, not ended) → pause */
626
+ .media-button--play:not([data-paused]):not([data-ended]) .media-icon--pause,
627
+ /* Mute: muted → volume off */
628
+ .media-button--mute[data-muted] .media-icon--volume-off,
629
+ /* Mute: volume low (not muted) → volume low */
630
+ .media-button--mute:not([data-muted])[data-volume-level="low"] .media-icon--volume-low,
631
+ /* Mute: volume high (not muted, not low) → volume high */
632
+ .media-button--mute:not([data-muted]):not([data-volume-level="low"]) .media-icon--volume-high {
633
+ display: block;
634
+ opacity: 1;
635
+ }
636
+
637
+
638
+ /* ==========================================================================
639
+ Root
640
+ ========================================================================== */
641
+
642
+ .media-minimal-skin--audio {
643
+ --media-controls-background-color: oklch(1 0 0);
644
+ --media-controls-backdrop-filter: blur(16px) saturate(1.5);
645
+ --media-controls-border-color: oklch(0 0 0 / 0.05);
646
+ --media-controls-text-color: var(--media-color-primary, oklch(0 0 0));
647
+ --media-error-dialog-transition-duration: 250ms;
648
+ --media-error-dialog-transition-delay: 100ms;
649
+ --media-popup-transition-duration: 100ms;
650
+ --media-popup-transition-timing-function: ease-out;
651
+ --media-tooltip-background-color: oklch(1 0 0 / 0.1);
652
+ --media-tooltip-border-color: oklch(0 0 0 / 0.05);
653
+ --media-tooltip-backdrop-filter: blur(16px) saturate(1.5);
654
+ --media-tooltip-text-color: currentColor;
655
+ --media-tooltip-side-offset: 0.75rem;
656
+ --media-popover-side-offset: 0.75rem;
657
+
658
+ @media (prefers-reduced-motion: reduce) {
659
+ --media-error-dialog-transition-duration: 50ms;
660
+ --media-error-dialog-transition-delay: 0ms;
661
+ --media-popup-transition-duration: 0ms;
662
+ }
663
+
664
+ @media (prefers-color-scheme: dark) {
665
+ --media-controls-background-color: oklch(0 0 0);
666
+ --media-controls-border-color: oklch(1 0 0 / 0.1);
667
+ --media-controls-text-color: var(--media-color-primary, oklch(1 0 0));
668
+ }
669
+
670
+ @media (prefers-reduced-transparency: reduce) or (prefers-contrast: more) {
671
+ --media-tooltip-background-color: oklch(1 0 0);
672
+ }
673
+
674
+ @media (prefers-color-scheme: dark) and ((prefers-reduced-transparency: reduce) or (prefers-contrast: more)) {
675
+ --media-tooltip-background-color: oklch(0 0 0);
676
+ }
677
+ }
678
+
679
+ /* ==========================================================================
680
+ Error Dialog
681
+ ========================================================================== */
682
+
683
+ .media-minimal-skin--audio .media-error__dialog {
684
+ position: absolute;
685
+ inset: 0;
686
+ z-index: 20;
687
+ display: flex;
688
+ align-items: center;
689
+ gap: 1rem;
690
+ padding-inline: 1.25rem 0.5rem;
691
+ transition-property: opacity, filter, scale;
692
+ transition-duration: var(--media-error-dialog-transition-duration);
693
+ transition-delay: var(--media-error-dialog-transition-delay);
694
+ transition-timing-function: ease-out;
695
+ border-radius: calc(infinity * 1px);
696
+ background-color: oklch(from var(--media-controls-background-color) l c h / 1);
697
+ }
698
+
699
+ .media-minimal-skin--audio .media-error[data-starting-style] .media-error__dialog,
700
+ .media-minimal-skin--audio .media-error[data-ending-style] .media-error__dialog {
701
+ opacity: 0;
702
+ filter: blur(4px);
703
+ scale: 0.95;
704
+ }
705
+ .media-minimal-skin--audio .media-error[data-ending-style] .media-error__dialog {
706
+ transition-delay: 0ms;
707
+ }
708
+
709
+ .media-minimal-skin--audio .media-error__content {
710
+ flex: 1;
711
+ display: flex;
712
+ gap: 0.5rem;
713
+ align-items: center;
714
+ }
715
+
716
+ /* ==========================================================================
717
+ Controls
718
+ ========================================================================== */
719
+
720
+ .media-minimal-skin--audio .media-controls {
721
+ padding: 0.375rem;
722
+ gap: 0.5rem;
723
+ color: var(--media-controls-text-color);
724
+ box-shadow: 0 0 0 1px var(--media-controls-border-color);
725
+ border-radius: var(--media-border-radius, 1rem);
726
+ }
727
+
728
+ /* ==========================================================================
729
+ Popups & Animations
730
+ ========================================================================== */
731
+
732
+ .media-minimal-skin--audio .media-popover--volume {
733
+ background: linear-gradient(to left, var(--media-controls-background-color) 80%, transparent 100%);
734
+ padding: 0 0 0 4rem;
735
+ }
736
+