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