@docyrus/shadcn 1.1.0 → 1.2.0

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 (766) hide show
  1. package/dist/base-lyra/accordion.js.map +1 -1
  2. package/dist/base-lyra/alert-dialog.js.map +1 -1
  3. package/dist/base-lyra/alert.js.map +1 -1
  4. package/dist/base-lyra/aspect-ratio.js.map +1 -1
  5. package/dist/base-lyra/avatar.js.map +1 -1
  6. package/dist/base-lyra/badge.js.map +1 -1
  7. package/dist/base-lyra/breadcrumb.js.map +1 -1
  8. package/dist/base-lyra/button-group.js.map +1 -1
  9. package/dist/base-lyra/button.js.map +1 -1
  10. package/dist/base-lyra/calendar.js.map +1 -1
  11. package/dist/base-lyra/card.js.map +1 -1
  12. package/dist/base-lyra/carousel.js.map +1 -1
  13. package/dist/base-lyra/chart.js.map +1 -1
  14. package/dist/base-lyra/checkbox.js.map +1 -1
  15. package/dist/base-lyra/combobox.js.map +1 -1
  16. package/dist/base-lyra/command.js.map +1 -1
  17. package/dist/base-lyra/context-menu.js.map +1 -1
  18. package/dist/base-lyra/dialog.js.map +1 -1
  19. package/dist/base-lyra/drawer.js.map +1 -1
  20. package/dist/base-lyra/dropdown-menu.js.map +1 -1
  21. package/dist/base-lyra/empty.js.map +1 -1
  22. package/dist/base-lyra/field.js.map +1 -1
  23. package/dist/base-lyra/hover-card.js.map +1 -1
  24. package/dist/base-lyra/index.js +8 -6
  25. package/dist/base-lyra/index.js.map +1 -1
  26. package/dist/base-lyra/input-group.js.map +1 -1
  27. package/dist/base-lyra/input-otp.js.map +1 -1
  28. package/dist/base-lyra/input.js.map +1 -1
  29. package/dist/base-lyra/item.js.map +1 -1
  30. package/dist/base-lyra/kbd.js.map +1 -1
  31. package/dist/base-lyra/label.js.map +1 -1
  32. package/dist/base-lyra/menubar.js.map +1 -1
  33. package/dist/base-lyra/native-select.js.map +1 -1
  34. package/dist/base-lyra/navigation-menu.js.map +1 -1
  35. package/dist/base-lyra/pagination.js.map +1 -1
  36. package/dist/base-lyra/popover.js.map +1 -1
  37. package/dist/base-lyra/progress.js.map +1 -1
  38. package/dist/base-lyra/radio-group.js.map +1 -1
  39. package/dist/base-lyra/resizable.js.map +1 -1
  40. package/dist/base-lyra/scroll-area.js.map +1 -1
  41. package/dist/base-lyra/select.js.map +1 -1
  42. package/dist/base-lyra/separator.js.map +1 -1
  43. package/dist/base-lyra/sheet.js.map +1 -1
  44. package/dist/base-lyra/sidebar.js +8 -6
  45. package/dist/base-lyra/sidebar.js.map +1 -1
  46. package/dist/base-lyra/skeleton.js.map +1 -1
  47. package/dist/base-lyra/slider.js.map +1 -1
  48. package/dist/base-lyra/spinner.js.map +1 -1
  49. package/dist/base-lyra/switch.js.map +1 -1
  50. package/dist/base-lyra/table.js.map +1 -1
  51. package/dist/base-lyra/tabs.js.map +1 -1
  52. package/dist/base-lyra/textarea.js.map +1 -1
  53. package/dist/base-lyra/toggle-group.js.map +1 -1
  54. package/dist/base-lyra/toggle.js.map +1 -1
  55. package/dist/base-lyra/tooltip.js.map +1 -1
  56. package/dist/base-maia/accordion.js.map +1 -1
  57. package/dist/base-maia/alert-dialog.js.map +1 -1
  58. package/dist/base-maia/alert.js.map +1 -1
  59. package/dist/base-maia/aspect-ratio.js.map +1 -1
  60. package/dist/base-maia/avatar.js.map +1 -1
  61. package/dist/base-maia/badge.js.map +1 -1
  62. package/dist/base-maia/breadcrumb.js.map +1 -1
  63. package/dist/base-maia/button-group.js.map +1 -1
  64. package/dist/base-maia/button.js.map +1 -1
  65. package/dist/base-maia/calendar.js.map +1 -1
  66. package/dist/base-maia/card.js.map +1 -1
  67. package/dist/base-maia/carousel.js.map +1 -1
  68. package/dist/base-maia/chart.js.map +1 -1
  69. package/dist/base-maia/checkbox.js.map +1 -1
  70. package/dist/base-maia/combobox.js.map +1 -1
  71. package/dist/base-maia/command.js.map +1 -1
  72. package/dist/base-maia/context-menu.js.map +1 -1
  73. package/dist/base-maia/dialog.js.map +1 -1
  74. package/dist/base-maia/drawer.js.map +1 -1
  75. package/dist/base-maia/dropdown-menu.js.map +1 -1
  76. package/dist/base-maia/empty.js.map +1 -1
  77. package/dist/base-maia/field.js.map +1 -1
  78. package/dist/base-maia/hover-card.js.map +1 -1
  79. package/dist/base-maia/index.js +8 -6
  80. package/dist/base-maia/index.js.map +1 -1
  81. package/dist/base-maia/input-group.js.map +1 -1
  82. package/dist/base-maia/input-otp.js.map +1 -1
  83. package/dist/base-maia/input.js.map +1 -1
  84. package/dist/base-maia/item.js.map +1 -1
  85. package/dist/base-maia/kbd.js.map +1 -1
  86. package/dist/base-maia/label.js.map +1 -1
  87. package/dist/base-maia/menubar.js.map +1 -1
  88. package/dist/base-maia/native-select.js.map +1 -1
  89. package/dist/base-maia/navigation-menu.js.map +1 -1
  90. package/dist/base-maia/pagination.js.map +1 -1
  91. package/dist/base-maia/popover.js.map +1 -1
  92. package/dist/base-maia/progress.js.map +1 -1
  93. package/dist/base-maia/radio-group.js.map +1 -1
  94. package/dist/base-maia/resizable.js.map +1 -1
  95. package/dist/base-maia/scroll-area.js.map +1 -1
  96. package/dist/base-maia/select.js.map +1 -1
  97. package/dist/base-maia/separator.js.map +1 -1
  98. package/dist/base-maia/sheet.js.map +1 -1
  99. package/dist/base-maia/sidebar.js +8 -6
  100. package/dist/base-maia/sidebar.js.map +1 -1
  101. package/dist/base-maia/skeleton.js.map +1 -1
  102. package/dist/base-maia/slider.js.map +1 -1
  103. package/dist/base-maia/spinner.js.map +1 -1
  104. package/dist/base-maia/switch.js.map +1 -1
  105. package/dist/base-maia/table.js.map +1 -1
  106. package/dist/base-maia/tabs.js.map +1 -1
  107. package/dist/base-maia/textarea.js.map +1 -1
  108. package/dist/base-maia/toggle-group.js.map +1 -1
  109. package/dist/base-maia/toggle.js.map +1 -1
  110. package/dist/base-maia/tooltip.js.map +1 -1
  111. package/dist/base-mira/accordion.js.map +1 -1
  112. package/dist/base-mira/alert-dialog.js.map +1 -1
  113. package/dist/base-mira/alert.js.map +1 -1
  114. package/dist/base-mira/aspect-ratio.js.map +1 -1
  115. package/dist/base-mira/avatar.js.map +1 -1
  116. package/dist/base-mira/badge.js.map +1 -1
  117. package/dist/base-mira/breadcrumb.js.map +1 -1
  118. package/dist/base-mira/button-group.js.map +1 -1
  119. package/dist/base-mira/button.js.map +1 -1
  120. package/dist/base-mira/calendar.js.map +1 -1
  121. package/dist/base-mira/card.js.map +1 -1
  122. package/dist/base-mira/carousel.js.map +1 -1
  123. package/dist/base-mira/chart.js.map +1 -1
  124. package/dist/base-mira/checkbox.js.map +1 -1
  125. package/dist/base-mira/combobox.js.map +1 -1
  126. package/dist/base-mira/command.js.map +1 -1
  127. package/dist/base-mira/context-menu.js.map +1 -1
  128. package/dist/base-mira/dialog.js.map +1 -1
  129. package/dist/base-mira/drawer.js.map +1 -1
  130. package/dist/base-mira/dropdown-menu.js.map +1 -1
  131. package/dist/base-mira/empty.js.map +1 -1
  132. package/dist/base-mira/field.js.map +1 -1
  133. package/dist/base-mira/hover-card.js.map +1 -1
  134. package/dist/base-mira/index.js +8 -6
  135. package/dist/base-mira/index.js.map +1 -1
  136. package/dist/base-mira/input-group.js.map +1 -1
  137. package/dist/base-mira/input-otp.js.map +1 -1
  138. package/dist/base-mira/input.js.map +1 -1
  139. package/dist/base-mira/item.js.map +1 -1
  140. package/dist/base-mira/kbd.js.map +1 -1
  141. package/dist/base-mira/label.js.map +1 -1
  142. package/dist/base-mira/menubar.js.map +1 -1
  143. package/dist/base-mira/native-select.js.map +1 -1
  144. package/dist/base-mira/navigation-menu.js.map +1 -1
  145. package/dist/base-mira/pagination.js.map +1 -1
  146. package/dist/base-mira/popover.js.map +1 -1
  147. package/dist/base-mira/progress.js.map +1 -1
  148. package/dist/base-mira/radio-group.js.map +1 -1
  149. package/dist/base-mira/resizable.js.map +1 -1
  150. package/dist/base-mira/scroll-area.js.map +1 -1
  151. package/dist/base-mira/select.js.map +1 -1
  152. package/dist/base-mira/separator.js.map +1 -1
  153. package/dist/base-mira/sheet.js.map +1 -1
  154. package/dist/base-mira/sidebar.js +8 -6
  155. package/dist/base-mira/sidebar.js.map +1 -1
  156. package/dist/base-mira/skeleton.js.map +1 -1
  157. package/dist/base-mira/slider.js.map +1 -1
  158. package/dist/base-mira/spinner.js.map +1 -1
  159. package/dist/base-mira/switch.js.map +1 -1
  160. package/dist/base-mira/table.js.map +1 -1
  161. package/dist/base-mira/tabs.js.map +1 -1
  162. package/dist/base-mira/textarea.js.map +1 -1
  163. package/dist/base-mira/toggle-group.js.map +1 -1
  164. package/dist/base-mira/toggle.js.map +1 -1
  165. package/dist/base-mira/tooltip.js.map +1 -1
  166. package/dist/base-nova/accordion.js.map +1 -1
  167. package/dist/base-nova/alert-dialog.js.map +1 -1
  168. package/dist/base-nova/alert.js.map +1 -1
  169. package/dist/base-nova/aspect-ratio.js.map +1 -1
  170. package/dist/base-nova/avatar.js.map +1 -1
  171. package/dist/base-nova/badge.js.map +1 -1
  172. package/dist/base-nova/breadcrumb.js.map +1 -1
  173. package/dist/base-nova/button-group.js.map +1 -1
  174. package/dist/base-nova/button.js.map +1 -1
  175. package/dist/base-nova/calendar.js.map +1 -1
  176. package/dist/base-nova/card.js.map +1 -1
  177. package/dist/base-nova/carousel.js.map +1 -1
  178. package/dist/base-nova/chart.js.map +1 -1
  179. package/dist/base-nova/checkbox.js.map +1 -1
  180. package/dist/base-nova/combobox.js.map +1 -1
  181. package/dist/base-nova/command.js.map +1 -1
  182. package/dist/base-nova/context-menu.js.map +1 -1
  183. package/dist/base-nova/dialog.js.map +1 -1
  184. package/dist/base-nova/drawer.js.map +1 -1
  185. package/dist/base-nova/dropdown-menu.js.map +1 -1
  186. package/dist/base-nova/empty.js.map +1 -1
  187. package/dist/base-nova/field.js.map +1 -1
  188. package/dist/base-nova/hover-card.js.map +1 -1
  189. package/dist/base-nova/index.js +8 -6
  190. package/dist/base-nova/index.js.map +1 -1
  191. package/dist/base-nova/input-group.js.map +1 -1
  192. package/dist/base-nova/input-otp.js.map +1 -1
  193. package/dist/base-nova/input.js.map +1 -1
  194. package/dist/base-nova/item.js.map +1 -1
  195. package/dist/base-nova/kbd.js.map +1 -1
  196. package/dist/base-nova/label.js.map +1 -1
  197. package/dist/base-nova/menubar.js.map +1 -1
  198. package/dist/base-nova/native-select.js.map +1 -1
  199. package/dist/base-nova/navigation-menu.js.map +1 -1
  200. package/dist/base-nova/pagination.js.map +1 -1
  201. package/dist/base-nova/popover.js.map +1 -1
  202. package/dist/base-nova/progress.js.map +1 -1
  203. package/dist/base-nova/radio-group.js.map +1 -1
  204. package/dist/base-nova/resizable.js.map +1 -1
  205. package/dist/base-nova/scroll-area.js.map +1 -1
  206. package/dist/base-nova/select.js.map +1 -1
  207. package/dist/base-nova/separator.js.map +1 -1
  208. package/dist/base-nova/sheet.js.map +1 -1
  209. package/dist/base-nova/sidebar.js +8 -6
  210. package/dist/base-nova/sidebar.js.map +1 -1
  211. package/dist/base-nova/skeleton.js.map +1 -1
  212. package/dist/base-nova/slider.js.map +1 -1
  213. package/dist/base-nova/spinner.js.map +1 -1
  214. package/dist/base-nova/switch.js.map +1 -1
  215. package/dist/base-nova/table.js.map +1 -1
  216. package/dist/base-nova/tabs.js.map +1 -1
  217. package/dist/base-nova/textarea.js.map +1 -1
  218. package/dist/base-nova/toggle-group.js.map +1 -1
  219. package/dist/base-nova/toggle.js.map +1 -1
  220. package/dist/base-nova/tooltip.js.map +1 -1
  221. package/dist/base-vega/accordion.js.map +1 -1
  222. package/dist/base-vega/alert-dialog.js.map +1 -1
  223. package/dist/base-vega/alert.js.map +1 -1
  224. package/dist/base-vega/aspect-ratio.js.map +1 -1
  225. package/dist/base-vega/avatar.js.map +1 -1
  226. package/dist/base-vega/badge.js.map +1 -1
  227. package/dist/base-vega/breadcrumb.js.map +1 -1
  228. package/dist/base-vega/button-group.js.map +1 -1
  229. package/dist/base-vega/button.js.map +1 -1
  230. package/dist/base-vega/calendar.js.map +1 -1
  231. package/dist/base-vega/card.js.map +1 -1
  232. package/dist/base-vega/carousel.js.map +1 -1
  233. package/dist/base-vega/chart.js.map +1 -1
  234. package/dist/base-vega/checkbox.js.map +1 -1
  235. package/dist/base-vega/combobox.js.map +1 -1
  236. package/dist/base-vega/command.js.map +1 -1
  237. package/dist/base-vega/context-menu.js.map +1 -1
  238. package/dist/base-vega/dialog.js.map +1 -1
  239. package/dist/base-vega/drawer.js.map +1 -1
  240. package/dist/base-vega/dropdown-menu.js.map +1 -1
  241. package/dist/base-vega/empty.js.map +1 -1
  242. package/dist/base-vega/field.js.map +1 -1
  243. package/dist/base-vega/hover-card.js.map +1 -1
  244. package/dist/base-vega/index.js +8 -6
  245. package/dist/base-vega/index.js.map +1 -1
  246. package/dist/base-vega/input-group.js.map +1 -1
  247. package/dist/base-vega/input-otp.js.map +1 -1
  248. package/dist/base-vega/input.js.map +1 -1
  249. package/dist/base-vega/item.js.map +1 -1
  250. package/dist/base-vega/kbd.js.map +1 -1
  251. package/dist/base-vega/label.js.map +1 -1
  252. package/dist/base-vega/menubar.js.map +1 -1
  253. package/dist/base-vega/native-select.js.map +1 -1
  254. package/dist/base-vega/navigation-menu.js.map +1 -1
  255. package/dist/base-vega/pagination.js.map +1 -1
  256. package/dist/base-vega/popover.js.map +1 -1
  257. package/dist/base-vega/progress.js.map +1 -1
  258. package/dist/base-vega/radio-group.js.map +1 -1
  259. package/dist/base-vega/resizable.js.map +1 -1
  260. package/dist/base-vega/scroll-area.js.map +1 -1
  261. package/dist/base-vega/select.js.map +1 -1
  262. package/dist/base-vega/separator.js.map +1 -1
  263. package/dist/base-vega/sheet.js.map +1 -1
  264. package/dist/base-vega/sidebar.js +8 -6
  265. package/dist/base-vega/sidebar.js.map +1 -1
  266. package/dist/base-vega/skeleton.js.map +1 -1
  267. package/dist/base-vega/slider.js.map +1 -1
  268. package/dist/base-vega/spinner.js.map +1 -1
  269. package/dist/base-vega/switch.js.map +1 -1
  270. package/dist/base-vega/table.js.map +1 -1
  271. package/dist/base-vega/tabs.js.map +1 -1
  272. package/dist/base-vega/textarea.js.map +1 -1
  273. package/dist/base-vega/toggle-group.js.map +1 -1
  274. package/dist/base-vega/toggle.js.map +1 -1
  275. package/dist/base-vega/tooltip.js.map +1 -1
  276. package/dist/hooks/index.d.ts +7 -0
  277. package/dist/hooks/index.js +181 -10
  278. package/dist/hooks/index.js.map +1 -1
  279. package/dist/hooks/use-as-ref.d.ts +5 -0
  280. package/dist/hooks/use-as-ref.js +17 -0
  281. package/dist/hooks/use-as-ref.js.map +1 -0
  282. package/dist/hooks/use-badge-overflow.d.ts +24 -0
  283. package/dist/hooks/use-badge-overflow.js +130 -0
  284. package/dist/hooks/use-badge-overflow.js.map +1 -0
  285. package/dist/hooks/use-callback-ref.d.ts +10 -0
  286. package/dist/hooks/use-callback-ref.js +17 -0
  287. package/dist/hooks/use-callback-ref.js.map +1 -0
  288. package/dist/hooks/use-debounced-callback.d.ts +3 -0
  289. package/dist/hooks/use-debounced-callback.js +38 -0
  290. package/dist/hooks/use-debounced-callback.js.map +1 -0
  291. package/dist/hooks/use-file-upload.d.ts +48 -0
  292. package/dist/hooks/use-file-upload.js +279 -0
  293. package/dist/hooks/use-file-upload.js.map +1 -0
  294. package/dist/hooks/use-isomorphic-layout-effect.d.ts +5 -0
  295. package/dist/hooks/use-isomorphic-layout-effect.js +8 -0
  296. package/dist/hooks/use-isomorphic-layout-effect.js.map +1 -0
  297. package/dist/hooks/use-lazy-ref.d.ts +5 -0
  298. package/dist/hooks/use-lazy-ref.js +14 -0
  299. package/dist/hooks/use-lazy-ref.js.map +1 -0
  300. package/dist/hooks/use-mobile.d.ts +1 -1
  301. package/dist/hooks/use-mobile.js +8 -6
  302. package/dist/hooks/use-mobile.js.map +1 -1
  303. package/dist/index.d.ts +1561 -57
  304. package/dist/index.js +23035 -2534
  305. package/dist/index.js.map +1 -1
  306. package/dist/lib/compose-refs.d.ts +15 -0
  307. package/dist/lib/compose-refs.js +42 -0
  308. package/dist/lib/compose-refs.js.map +1 -0
  309. package/dist/lib/format.d.ts +3 -0
  310. package/dist/lib/format.js +18 -0
  311. package/dist/lib/format.js.map +1 -0
  312. package/dist/lib/index.d.ts +3 -0
  313. package/dist/lib/index.js +53 -2
  314. package/dist/lib/index.js.map +1 -1
  315. package/dist/lib/utils.d.ts +6 -0
  316. package/dist/lib/utils.js.map +1 -1
  317. package/dist/new-york/accordion.js.map +1 -1
  318. package/dist/new-york/alert-dialog.js.map +1 -1
  319. package/dist/new-york/alert.js.map +1 -1
  320. package/dist/new-york/avatar.js.map +1 -1
  321. package/dist/new-york/badge.js.map +1 -1
  322. package/dist/new-york/breadcrumb.js.map +1 -1
  323. package/dist/new-york/button-group.js.map +1 -1
  324. package/dist/new-york/button.js.map +1 -1
  325. package/dist/new-york/calendar.js.map +1 -1
  326. package/dist/new-york/card.js.map +1 -1
  327. package/dist/new-york/carousel.js.map +1 -1
  328. package/dist/new-york/chart.js.map +1 -1
  329. package/dist/new-york/checkbox.js.map +1 -1
  330. package/dist/new-york/combobox.js.map +1 -1
  331. package/dist/new-york/command.js.map +1 -1
  332. package/dist/new-york/context-menu.js.map +1 -1
  333. package/dist/new-york/dialog.js.map +1 -1
  334. package/dist/new-york/drawer.js.map +1 -1
  335. package/dist/new-york/dropdown-menu.js.map +1 -1
  336. package/dist/new-york/empty.js.map +1 -1
  337. package/dist/new-york/field.js.map +1 -1
  338. package/dist/new-york/form.js.map +1 -1
  339. package/dist/new-york/hover-card.js.map +1 -1
  340. package/dist/new-york/index.js +8 -6
  341. package/dist/new-york/index.js.map +1 -1
  342. package/dist/new-york/input-group.js.map +1 -1
  343. package/dist/new-york/input-otp.js.map +1 -1
  344. package/dist/new-york/input.js.map +1 -1
  345. package/dist/new-york/item.js.map +1 -1
  346. package/dist/new-york/kbd.js.map +1 -1
  347. package/dist/new-york/label.js.map +1 -1
  348. package/dist/new-york/menubar.js.map +1 -1
  349. package/dist/new-york/native-select.js.map +1 -1
  350. package/dist/new-york/navigation-menu.js.map +1 -1
  351. package/dist/new-york/pagination.js.map +1 -1
  352. package/dist/new-york/popover.js.map +1 -1
  353. package/dist/new-york/progress.js.map +1 -1
  354. package/dist/new-york/radio-group.js.map +1 -1
  355. package/dist/new-york/resizable.js.map +1 -1
  356. package/dist/new-york/scroll-area.js.map +1 -1
  357. package/dist/new-york/select.js.map +1 -1
  358. package/dist/new-york/separator.js.map +1 -1
  359. package/dist/new-york/sheet.js.map +1 -1
  360. package/dist/new-york/sidebar.js +8 -6
  361. package/dist/new-york/sidebar.js.map +1 -1
  362. package/dist/new-york/skeleton.js.map +1 -1
  363. package/dist/new-york/slider.js.map +1 -1
  364. package/dist/new-york/spinner.js.map +1 -1
  365. package/dist/new-york/switch.js.map +1 -1
  366. package/dist/new-york/table.js.map +1 -1
  367. package/dist/new-york/tabs.js.map +1 -1
  368. package/dist/new-york/textarea.js.map +1 -1
  369. package/dist/new-york/toggle-group.js.map +1 -1
  370. package/dist/new-york/toggle.js.map +1 -1
  371. package/dist/new-york/tooltip.js.map +1 -1
  372. package/dist/radix-lyra/accordion.js.map +1 -1
  373. package/dist/radix-lyra/alert-dialog.js.map +1 -1
  374. package/dist/radix-lyra/alert.js.map +1 -1
  375. package/dist/radix-lyra/avatar.js.map +1 -1
  376. package/dist/radix-lyra/badge.js.map +1 -1
  377. package/dist/radix-lyra/breadcrumb.js.map +1 -1
  378. package/dist/radix-lyra/button-group.js.map +1 -1
  379. package/dist/radix-lyra/button.js.map +1 -1
  380. package/dist/radix-lyra/calendar.js.map +1 -1
  381. package/dist/radix-lyra/card.js.map +1 -1
  382. package/dist/radix-lyra/carousel.js.map +1 -1
  383. package/dist/radix-lyra/chart.js.map +1 -1
  384. package/dist/radix-lyra/checkbox.js.map +1 -1
  385. package/dist/radix-lyra/combobox.js.map +1 -1
  386. package/dist/radix-lyra/command.js.map +1 -1
  387. package/dist/radix-lyra/context-menu.js.map +1 -1
  388. package/dist/radix-lyra/dialog.js.map +1 -1
  389. package/dist/radix-lyra/drawer.js.map +1 -1
  390. package/dist/radix-lyra/dropdown-menu.js.map +1 -1
  391. package/dist/radix-lyra/empty.js.map +1 -1
  392. package/dist/radix-lyra/field.js.map +1 -1
  393. package/dist/radix-lyra/hover-card.js.map +1 -1
  394. package/dist/radix-lyra/index.js +8 -6
  395. package/dist/radix-lyra/index.js.map +1 -1
  396. package/dist/radix-lyra/input-group.js.map +1 -1
  397. package/dist/radix-lyra/input-otp.js.map +1 -1
  398. package/dist/radix-lyra/input.js.map +1 -1
  399. package/dist/radix-lyra/item.js.map +1 -1
  400. package/dist/radix-lyra/kbd.js.map +1 -1
  401. package/dist/radix-lyra/label.js.map +1 -1
  402. package/dist/radix-lyra/menubar.js.map +1 -1
  403. package/dist/radix-lyra/native-select.js.map +1 -1
  404. package/dist/radix-lyra/navigation-menu.js.map +1 -1
  405. package/dist/radix-lyra/pagination.js.map +1 -1
  406. package/dist/radix-lyra/popover.js.map +1 -1
  407. package/dist/radix-lyra/progress.js.map +1 -1
  408. package/dist/radix-lyra/radio-group.js.map +1 -1
  409. package/dist/radix-lyra/resizable.js.map +1 -1
  410. package/dist/radix-lyra/scroll-area.js.map +1 -1
  411. package/dist/radix-lyra/select.js.map +1 -1
  412. package/dist/radix-lyra/separator.js.map +1 -1
  413. package/dist/radix-lyra/sheet.js.map +1 -1
  414. package/dist/radix-lyra/sidebar.js +8 -6
  415. package/dist/radix-lyra/sidebar.js.map +1 -1
  416. package/dist/radix-lyra/skeleton.js.map +1 -1
  417. package/dist/radix-lyra/slider.js.map +1 -1
  418. package/dist/radix-lyra/spinner.js.map +1 -1
  419. package/dist/radix-lyra/switch.js.map +1 -1
  420. package/dist/radix-lyra/table.js.map +1 -1
  421. package/dist/radix-lyra/tabs.js.map +1 -1
  422. package/dist/radix-lyra/textarea.js.map +1 -1
  423. package/dist/radix-lyra/toggle-group.js.map +1 -1
  424. package/dist/radix-lyra/toggle.js.map +1 -1
  425. package/dist/radix-lyra/tooltip.js.map +1 -1
  426. package/dist/radix-maia/accordion.js.map +1 -1
  427. package/dist/radix-maia/alert-dialog.js.map +1 -1
  428. package/dist/radix-maia/alert.js.map +1 -1
  429. package/dist/radix-maia/avatar.js.map +1 -1
  430. package/dist/radix-maia/badge.js.map +1 -1
  431. package/dist/radix-maia/breadcrumb.js.map +1 -1
  432. package/dist/radix-maia/button-group.js.map +1 -1
  433. package/dist/radix-maia/button.js.map +1 -1
  434. package/dist/radix-maia/calendar.js.map +1 -1
  435. package/dist/radix-maia/card.js.map +1 -1
  436. package/dist/radix-maia/carousel.js.map +1 -1
  437. package/dist/radix-maia/chart.js.map +1 -1
  438. package/dist/radix-maia/checkbox.js.map +1 -1
  439. package/dist/radix-maia/combobox.js.map +1 -1
  440. package/dist/radix-maia/command.js.map +1 -1
  441. package/dist/radix-maia/context-menu.js.map +1 -1
  442. package/dist/radix-maia/dialog.js.map +1 -1
  443. package/dist/radix-maia/drawer.js.map +1 -1
  444. package/dist/radix-maia/dropdown-menu.js.map +1 -1
  445. package/dist/radix-maia/empty.js.map +1 -1
  446. package/dist/radix-maia/field.js.map +1 -1
  447. package/dist/radix-maia/hover-card.js.map +1 -1
  448. package/dist/radix-maia/index.js +8 -6
  449. package/dist/radix-maia/index.js.map +1 -1
  450. package/dist/radix-maia/input-group.js.map +1 -1
  451. package/dist/radix-maia/input-otp.js.map +1 -1
  452. package/dist/radix-maia/input.js.map +1 -1
  453. package/dist/radix-maia/item.js.map +1 -1
  454. package/dist/radix-maia/kbd.js.map +1 -1
  455. package/dist/radix-maia/label.js.map +1 -1
  456. package/dist/radix-maia/menubar.js.map +1 -1
  457. package/dist/radix-maia/native-select.js.map +1 -1
  458. package/dist/radix-maia/navigation-menu.js.map +1 -1
  459. package/dist/radix-maia/pagination.js.map +1 -1
  460. package/dist/radix-maia/popover.js.map +1 -1
  461. package/dist/radix-maia/progress.js.map +1 -1
  462. package/dist/radix-maia/radio-group.js.map +1 -1
  463. package/dist/radix-maia/resizable.js.map +1 -1
  464. package/dist/radix-maia/scroll-area.js.map +1 -1
  465. package/dist/radix-maia/select.js.map +1 -1
  466. package/dist/radix-maia/separator.js.map +1 -1
  467. package/dist/radix-maia/sheet.js.map +1 -1
  468. package/dist/radix-maia/sidebar.js +8 -6
  469. package/dist/radix-maia/sidebar.js.map +1 -1
  470. package/dist/radix-maia/skeleton.js.map +1 -1
  471. package/dist/radix-maia/slider.js.map +1 -1
  472. package/dist/radix-maia/spinner.js.map +1 -1
  473. package/dist/radix-maia/switch.js.map +1 -1
  474. package/dist/radix-maia/table.js.map +1 -1
  475. package/dist/radix-maia/tabs.js.map +1 -1
  476. package/dist/radix-maia/textarea.js.map +1 -1
  477. package/dist/radix-maia/toggle-group.js.map +1 -1
  478. package/dist/radix-maia/toggle.js.map +1 -1
  479. package/dist/radix-maia/tooltip.js.map +1 -1
  480. package/dist/radix-mira/accordion.js.map +1 -1
  481. package/dist/radix-mira/alert-dialog.js.map +1 -1
  482. package/dist/radix-mira/alert.js.map +1 -1
  483. package/dist/radix-mira/avatar.js.map +1 -1
  484. package/dist/radix-mira/badge.js.map +1 -1
  485. package/dist/radix-mira/breadcrumb.js.map +1 -1
  486. package/dist/radix-mira/button-group.js.map +1 -1
  487. package/dist/radix-mira/button.js.map +1 -1
  488. package/dist/radix-mira/calendar.js.map +1 -1
  489. package/dist/radix-mira/card.js.map +1 -1
  490. package/dist/radix-mira/carousel.js.map +1 -1
  491. package/dist/radix-mira/chart.js.map +1 -1
  492. package/dist/radix-mira/checkbox.js.map +1 -1
  493. package/dist/radix-mira/combobox.js.map +1 -1
  494. package/dist/radix-mira/command.js.map +1 -1
  495. package/dist/radix-mira/context-menu.js.map +1 -1
  496. package/dist/radix-mira/dialog.js.map +1 -1
  497. package/dist/radix-mira/drawer.js.map +1 -1
  498. package/dist/radix-mira/dropdown-menu.js.map +1 -1
  499. package/dist/radix-mira/empty.js.map +1 -1
  500. package/dist/radix-mira/field.js.map +1 -1
  501. package/dist/radix-mira/hover-card.js.map +1 -1
  502. package/dist/radix-mira/index.js +8 -6
  503. package/dist/radix-mira/index.js.map +1 -1
  504. package/dist/radix-mira/input-group.js.map +1 -1
  505. package/dist/radix-mira/input-otp.js.map +1 -1
  506. package/dist/radix-mira/input.js.map +1 -1
  507. package/dist/radix-mira/item.js.map +1 -1
  508. package/dist/radix-mira/kbd.js.map +1 -1
  509. package/dist/radix-mira/label.js.map +1 -1
  510. package/dist/radix-mira/menubar.js.map +1 -1
  511. package/dist/radix-mira/native-select.js.map +1 -1
  512. package/dist/radix-mira/navigation-menu.js.map +1 -1
  513. package/dist/radix-mira/pagination.js.map +1 -1
  514. package/dist/radix-mira/popover.js.map +1 -1
  515. package/dist/radix-mira/progress.js.map +1 -1
  516. package/dist/radix-mira/radio-group.js.map +1 -1
  517. package/dist/radix-mira/resizable.js.map +1 -1
  518. package/dist/radix-mira/scroll-area.js.map +1 -1
  519. package/dist/radix-mira/select.js.map +1 -1
  520. package/dist/radix-mira/separator.js.map +1 -1
  521. package/dist/radix-mira/sheet.js.map +1 -1
  522. package/dist/radix-mira/sidebar.js +8 -6
  523. package/dist/radix-mira/sidebar.js.map +1 -1
  524. package/dist/radix-mira/skeleton.js.map +1 -1
  525. package/dist/radix-mira/slider.js.map +1 -1
  526. package/dist/radix-mira/spinner.js.map +1 -1
  527. package/dist/radix-mira/switch.js.map +1 -1
  528. package/dist/radix-mira/table.js.map +1 -1
  529. package/dist/radix-mira/tabs.js.map +1 -1
  530. package/dist/radix-mira/textarea.js.map +1 -1
  531. package/dist/radix-mira/toggle-group.js.map +1 -1
  532. package/dist/radix-mira/toggle.js.map +1 -1
  533. package/dist/radix-mira/tooltip.js.map +1 -1
  534. package/dist/radix-nova/accordion.js.map +1 -1
  535. package/dist/radix-nova/alert-dialog.js.map +1 -1
  536. package/dist/radix-nova/alert.js.map +1 -1
  537. package/dist/radix-nova/avatar.js.map +1 -1
  538. package/dist/radix-nova/badge.js.map +1 -1
  539. package/dist/radix-nova/breadcrumb.js.map +1 -1
  540. package/dist/radix-nova/button-group.js.map +1 -1
  541. package/dist/radix-nova/button.js.map +1 -1
  542. package/dist/radix-nova/calendar.js.map +1 -1
  543. package/dist/radix-nova/card.js.map +1 -1
  544. package/dist/radix-nova/carousel.js.map +1 -1
  545. package/dist/radix-nova/chart.js.map +1 -1
  546. package/dist/radix-nova/checkbox.js.map +1 -1
  547. package/dist/radix-nova/combobox.js.map +1 -1
  548. package/dist/radix-nova/command.js.map +1 -1
  549. package/dist/radix-nova/context-menu.js.map +1 -1
  550. package/dist/radix-nova/dialog.js.map +1 -1
  551. package/dist/radix-nova/drawer.js.map +1 -1
  552. package/dist/radix-nova/dropdown-menu.js.map +1 -1
  553. package/dist/radix-nova/empty.js.map +1 -1
  554. package/dist/radix-nova/field.js.map +1 -1
  555. package/dist/radix-nova/hover-card.js.map +1 -1
  556. package/dist/radix-nova/index.js +8 -6
  557. package/dist/radix-nova/index.js.map +1 -1
  558. package/dist/radix-nova/input-group.js.map +1 -1
  559. package/dist/radix-nova/input-otp.js.map +1 -1
  560. package/dist/radix-nova/input.js.map +1 -1
  561. package/dist/radix-nova/item.js.map +1 -1
  562. package/dist/radix-nova/kbd.js.map +1 -1
  563. package/dist/radix-nova/label.js.map +1 -1
  564. package/dist/radix-nova/menubar.js.map +1 -1
  565. package/dist/radix-nova/native-select.js.map +1 -1
  566. package/dist/radix-nova/navigation-menu.js.map +1 -1
  567. package/dist/radix-nova/pagination.js.map +1 -1
  568. package/dist/radix-nova/popover.js.map +1 -1
  569. package/dist/radix-nova/progress.js.map +1 -1
  570. package/dist/radix-nova/radio-group.js.map +1 -1
  571. package/dist/radix-nova/resizable.js.map +1 -1
  572. package/dist/radix-nova/scroll-area.js.map +1 -1
  573. package/dist/radix-nova/select.js.map +1 -1
  574. package/dist/radix-nova/separator.js.map +1 -1
  575. package/dist/radix-nova/sheet.js.map +1 -1
  576. package/dist/radix-nova/sidebar.js +8 -6
  577. package/dist/radix-nova/sidebar.js.map +1 -1
  578. package/dist/radix-nova/skeleton.js.map +1 -1
  579. package/dist/radix-nova/slider.js.map +1 -1
  580. package/dist/radix-nova/spinner.js.map +1 -1
  581. package/dist/radix-nova/switch.js.map +1 -1
  582. package/dist/radix-nova/table.js.map +1 -1
  583. package/dist/radix-nova/tabs.js.map +1 -1
  584. package/dist/radix-nova/textarea.js.map +1 -1
  585. package/dist/radix-nova/toggle-group.js.map +1 -1
  586. package/dist/radix-nova/toggle.js.map +1 -1
  587. package/dist/radix-nova/tooltip.js.map +1 -1
  588. package/dist/radix-vega/accordion.js.map +1 -1
  589. package/dist/radix-vega/action-bar.d.ts +41 -0
  590. package/dist/radix-vega/action-bar.js +589 -0
  591. package/dist/radix-vega/action-bar.js.map +1 -0
  592. package/dist/radix-vega/alert-dialog.js.map +1 -1
  593. package/dist/radix-vega/alert.js.map +1 -1
  594. package/dist/radix-vega/avatar-group.d.ts +19 -0
  595. package/dist/radix-vega/avatar-group.js +193 -0
  596. package/dist/radix-vega/avatar-group.js.map +1 -0
  597. package/dist/radix-vega/avatar.d.ts +1 -3
  598. package/dist/radix-vega/avatar.js +1 -27
  599. package/dist/radix-vega/avatar.js.map +1 -1
  600. package/dist/radix-vega/badge-overflow.d.ts +21 -0
  601. package/dist/radix-vega/badge-overflow.js +223 -0
  602. package/dist/radix-vega/badge-overflow.js.map +1 -0
  603. package/dist/radix-vega/badge.d.ts +1 -1
  604. package/dist/radix-vega/badge.js.map +1 -1
  605. package/dist/radix-vega/breadcrumb.js.map +1 -1
  606. package/dist/radix-vega/button-group.js.map +1 -1
  607. package/dist/radix-vega/button.d.ts +2 -2
  608. package/dist/radix-vega/button.js.map +1 -1
  609. package/dist/radix-vega/calendar.js.map +1 -1
  610. package/dist/radix-vega/card.js.map +1 -1
  611. package/dist/radix-vega/carousel.js.map +1 -1
  612. package/dist/radix-vega/chart.js.map +1 -1
  613. package/dist/radix-vega/checkbox-group.d.ts +12 -0
  614. package/dist/radix-vega/checkbox-group.js +119 -0
  615. package/dist/radix-vega/checkbox-group.js.map +1 -0
  616. package/dist/radix-vega/checkbox.js.map +1 -1
  617. package/dist/radix-vega/circular-progress.d.ts +27 -0
  618. package/dist/radix-vega/circular-progress.js +252 -0
  619. package/dist/radix-vega/circular-progress.js.map +1 -0
  620. package/dist/radix-vega/color-picker.d.ts +85 -0
  621. package/dist/radix-vega/color-picker.js +1683 -0
  622. package/dist/radix-vega/color-picker.js.map +1 -0
  623. package/dist/radix-vega/color-swatch.d.ts +17 -0
  624. package/dist/radix-vega/color-swatch.js +95 -0
  625. package/dist/radix-vega/color-swatch.js.map +1 -0
  626. package/dist/radix-vega/combobox.d.ts +18 -22
  627. package/dist/radix-vega/combobox.js +118 -276
  628. package/dist/radix-vega/combobox.js.map +1 -1
  629. package/dist/radix-vega/command.js.map +1 -1
  630. package/dist/radix-vega/compare-slider.d.ts +32 -0
  631. package/dist/radix-vega/compare-slider.js +393 -0
  632. package/dist/radix-vega/compare-slider.js.map +1 -0
  633. package/dist/radix-vega/context-menu.js.map +1 -1
  634. package/dist/radix-vega/cropper.d.ts +89 -0
  635. package/dist/radix-vega/cropper.js +1396 -0
  636. package/dist/radix-vega/cropper.js.map +1 -0
  637. package/dist/radix-vega/dialog.js.map +1 -1
  638. package/dist/radix-vega/drawer.js.map +1 -1
  639. package/dist/radix-vega/dropdown-menu.js.map +1 -1
  640. package/dist/radix-vega/editable.d.ts +100 -0
  641. package/dist/radix-vega/editable.js +684 -0
  642. package/dist/radix-vega/editable.js.map +1 -0
  643. package/dist/radix-vega/empty.js.map +1 -1
  644. package/dist/radix-vega/field.js.map +1 -1
  645. package/dist/radix-vega/file-upload.d.ts +89 -0
  646. package/dist/radix-vega/file-upload.js +1089 -0
  647. package/dist/radix-vega/file-upload.js.map +1 -0
  648. package/dist/radix-vega/gauge.d.ts +27 -0
  649. package/dist/radix-vega/gauge.js +359 -0
  650. package/dist/radix-vega/gauge.js.map +1 -0
  651. package/dist/radix-vega/hover-card.js.map +1 -1
  652. package/dist/radix-vega/index.d.ts +50 -3
  653. package/dist/radix-vega/index.js +23001 -2667
  654. package/dist/radix-vega/index.js.map +1 -1
  655. package/dist/radix-vega/input-group.d.ts +1 -1
  656. package/dist/radix-vega/input-group.js.map +1 -1
  657. package/dist/radix-vega/input-otp.js.map +1 -1
  658. package/dist/radix-vega/input.js.map +1 -1
  659. package/dist/radix-vega/item.d.ts +2 -2
  660. package/dist/radix-vega/item.js.map +1 -1
  661. package/dist/radix-vega/kanban.d.ts +62 -0
  662. package/dist/radix-vega/kanban.js +831 -0
  663. package/dist/radix-vega/kanban.js.map +1 -0
  664. package/dist/radix-vega/kbd.js.map +1 -1
  665. package/dist/radix-vega/key-value.d.ts +82 -0
  666. package/dist/radix-vega/key-value.js +765 -0
  667. package/dist/radix-vega/key-value.js.map +1 -0
  668. package/dist/radix-vega/label.js.map +1 -1
  669. package/dist/radix-vega/listbox.d.ts +11 -0
  670. package/dist/radix-vega/listbox.js +90 -0
  671. package/dist/radix-vega/listbox.js.map +1 -0
  672. package/dist/radix-vega/mask-input.d.ts +64 -0
  673. package/dist/radix-vega/mask-input.js +1186 -0
  674. package/dist/radix-vega/mask-input.js.map +1 -0
  675. package/dist/radix-vega/media-player.d.ts +127 -0
  676. package/dist/radix-vega/media-player.js +2696 -0
  677. package/dist/radix-vega/media-player.js.map +1 -0
  678. package/dist/radix-vega/mention.d.ts +11 -0
  679. package/dist/radix-vega/mention.js +94 -0
  680. package/dist/radix-vega/mention.js.map +1 -0
  681. package/dist/radix-vega/menubar.js.map +1 -1
  682. package/dist/radix-vega/native-select.js.map +1 -1
  683. package/dist/radix-vega/navigation-menu.js.map +1 -1
  684. package/dist/radix-vega/pagination.js.map +1 -1
  685. package/dist/radix-vega/phone-input.d.ts +48 -0
  686. package/dist/radix-vega/phone-input.js +957 -0
  687. package/dist/radix-vega/phone-input.js.map +1 -0
  688. package/dist/radix-vega/popover.js.map +1 -1
  689. package/dist/radix-vega/progress.js.map +1 -1
  690. package/dist/radix-vega/qr-code.d.ts +53 -0
  691. package/dist/radix-vega/qr-code.js +396 -0
  692. package/dist/radix-vega/qr-code.js.map +1 -0
  693. package/dist/radix-vega/radio-group.js.map +1 -1
  694. package/dist/radix-vega/rating.d.ts +47 -0
  695. package/dist/radix-vega/rating.js +749 -0
  696. package/dist/radix-vega/rating.js.map +1 -0
  697. package/dist/radix-vega/relative-time-card.d.ts +22 -0
  698. package/dist/radix-vega/relative-time-card.js +236 -0
  699. package/dist/radix-vega/relative-time-card.js.map +1 -0
  700. package/dist/radix-vega/resizable.js.map +1 -1
  701. package/dist/radix-vega/responsive-dialog.d.ts +20 -0
  702. package/dist/radix-vega/responsive-dialog.js +483 -0
  703. package/dist/radix-vega/responsive-dialog.js.map +1 -0
  704. package/dist/radix-vega/scroll-area.js.map +1 -1
  705. package/dist/radix-vega/scroll-spy.d.ts +39 -0
  706. package/dist/radix-vega/scroll-spy.js +372 -0
  707. package/dist/radix-vega/scroll-spy.js.map +1 -0
  708. package/dist/radix-vega/scroller.d.ts +20 -0
  709. package/dist/radix-vega/scroller.js +352 -0
  710. package/dist/radix-vega/scroller.js.map +1 -0
  711. package/dist/radix-vega/segmented-input.d.ts +29 -0
  712. package/dist/radix-vega/segmented-input.js +178 -0
  713. package/dist/radix-vega/segmented-input.js.map +1 -0
  714. package/dist/radix-vega/select.js.map +1 -1
  715. package/dist/radix-vega/separator.js.map +1 -1
  716. package/dist/radix-vega/sheet.js.map +1 -1
  717. package/dist/radix-vega/sidebar.js +8 -6
  718. package/dist/radix-vega/sidebar.js.map +1 -1
  719. package/dist/radix-vega/skeleton.js.map +1 -1
  720. package/dist/radix-vega/slider.js.map +1 -1
  721. package/dist/radix-vega/sortable.d.ts +51 -0
  722. package/dist/radix-vega/sortable.js +444 -0
  723. package/dist/radix-vega/sortable.js.map +1 -0
  724. package/dist/radix-vega/speed-dial.d.ts +46 -0
  725. package/dist/radix-vega/speed-dial.js +898 -0
  726. package/dist/radix-vega/speed-dial.js.map +1 -0
  727. package/dist/radix-vega/spinner.js.map +1 -1
  728. package/dist/radix-vega/stack.d.ts +21 -0
  729. package/dist/radix-vega/stack.js +268 -0
  730. package/dist/radix-vega/stack.js.map +1 -0
  731. package/dist/radix-vega/stat.d.ts +24 -0
  732. package/dist/radix-vega/stat.js +147 -0
  733. package/dist/radix-vega/stat.js.map +1 -0
  734. package/dist/radix-vega/status.d.ts +18 -0
  735. package/dist/radix-vega/status.js +71 -0
  736. package/dist/radix-vega/status.js.map +1 -0
  737. package/dist/radix-vega/stepper.d.ts +73 -0
  738. package/dist/radix-vega/stepper.js +973 -0
  739. package/dist/radix-vega/stepper.js.map +1 -0
  740. package/dist/radix-vega/swap.d.ts +29 -0
  741. package/dist/radix-vega/swap.js +214 -0
  742. package/dist/radix-vega/swap.js.map +1 -0
  743. package/dist/radix-vega/switch.js.map +1 -1
  744. package/dist/radix-vega/table.js.map +1 -1
  745. package/dist/radix-vega/tabs.d.ts +1 -1
  746. package/dist/radix-vega/tabs.js.map +1 -1
  747. package/dist/radix-vega/tags-input.d.ts +12 -0
  748. package/dist/radix-vega/tags-input.js +98 -0
  749. package/dist/radix-vega/tags-input.js.map +1 -0
  750. package/dist/radix-vega/textarea.js.map +1 -1
  751. package/dist/radix-vega/time-picker.d.ts +88 -0
  752. package/dist/radix-vega/time-picker.js +1750 -0
  753. package/dist/radix-vega/time-picker.js.map +1 -0
  754. package/dist/radix-vega/timeline.d.ts +32 -0
  755. package/dist/radix-vega/timeline.js +611 -0
  756. package/dist/radix-vega/timeline.js.map +1 -0
  757. package/dist/radix-vega/toggle-group.js.map +1 -1
  758. package/dist/radix-vega/toggle.js.map +1 -1
  759. package/dist/radix-vega/tooltip.js.map +1 -1
  760. package/dist/radix-vega/tour.d.ts +109 -0
  761. package/dist/radix-vega/tour.js +1314 -0
  762. package/dist/radix-vega/tour.js.map +1 -0
  763. package/dist/radix-vega/visually-hidden-input.d.ts +8 -0
  764. package/dist/radix-vega/visually-hidden-input.js +33 -0
  765. package/dist/radix-vega/visually-hidden-input.js.map +1 -0
  766. package/package.json +29 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/utils.ts","../../src/radix-vega/badge.tsx","../../src/radix-vega/button.tsx","../../src/radix-vega/dropdown-menu.tsx","../../src/radix-vega/tooltip.tsx","../../src/lib/compose-refs.ts","../../src/hooks/use-lazy-ref.ts","../../src/radix-vega/media-player.tsx"],"names":["Slot","cva","jsx","DropdownMenuPrimitive","TooltipPrimitive","jsxs","React","React2","duration","open","CheckIcon"],"mappings":"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","file":"media-player.js","sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * Merges Tailwind class names, resolving any conflicts.\n *\n * @param inputs - An array of class names to merge.\n * @returns A string of merged and optimized class names.\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"h-5 gap-1 rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3! inline-flex items-center justify-center w-fit whitespace-nowrap shrink-0 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive overflow-hidden group/badge\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary: \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive: \"bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20\",\n outline: \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n ghost: \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n data-variant={variant}\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-md border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-3 aria-invalid:ring-3 [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/80\",\n outline: \"border-border bg-background hover:bg-muted hover:text-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 aria-expanded:bg-muted aria-expanded:text-foreground shadow-xs\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost: \"hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n destructive: \"bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 gap-1.5 px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),8px)] px-2 text-xs in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-8 gap-1 rounded-[min(var(--radius-md),10px)] px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5\",\n lg: \"h-10 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-9\",\n \"icon-xs\": \"size-6 rounded-[min(var(--radius-md),8px)] in-data-[slot=button-group]:rounded-md [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-8 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-md\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { CheckIcon, ChevronRightIcon } from \"lucide-react\"\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n align = \"start\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n align={align}\n className={cn(\"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-md p-1 shadow-md ring-1 duration-100 z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto data-[state=closed]:overflow-hidden\", className )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-sm px-2 py-1.5 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4 group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span\n className=\"absolute right-2 flex items-center justify-center pointer-events-none\"\n data-slot=\"dropdown-menu-checkbox-item-indicator\"\n >\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon\n />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n >\n <span\n className=\"absolute right-2 flex items-center justify-center pointer-events-none\"\n data-slot=\"dropdown-menu-radio-item-indicator\"\n >\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon\n />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs font-medium data-inset:pl-8\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\"text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-sm px-2 py-1.5 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4 flex cursor-default items-center outline-hidden select-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-[96px] rounded-md p-1 shadow-lg ring-1 duration-100 z-50 origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden\", className )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Tooltip as TooltipPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 rounded-md px-3 py-1.5 text-xs bg-foreground text-background z-50 w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin)\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"size-2.5 rotate-45 rounded-[2px] bg-foreground fill-foreground z-50 translate-y-[calc(-50%_-_2px)]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger }\n","import * as React from \"react\";\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === \"function\") {\n return ref(value);\n }\n\n if (ref !== null && ref !== undefined) {\n ref.current = value;\n }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup === \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n\n // React <19 will log an error to the console if a callback ref returns a\n // value. We don't use ref cleanups internally so this will only happen if a\n // user's ref callback returns a value, which we only expect if they are\n // using the cleanup functionality added in React 19.\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup === \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n // biome-ignore lint/correctness/useExhaustiveDependencies: we want to memoize by all values\n return React.useCallback(composeRefs(...refs), refs);\n}\n\nexport { composeRefs, useComposedRefs };\n","import * as React from \"react\";\n\nfunction useLazyRef<T>(fn: () => T) {\n const ref = React.useRef<T | null>(null);\n\n if (ref.current === null) {\n ref.current = fn();\n }\n\n return ref as React.RefObject<T>;\n}\n\nexport { useLazyRef };\n","\"use client\";\n\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n AlertTriangleIcon,\n CaptionsOffIcon,\n CheckIcon,\n DownloadIcon,\n FastForwardIcon,\n Loader2Icon,\n Maximize2Icon,\n Minimize2Icon,\n PauseIcon,\n PictureInPicture2Icon,\n PictureInPictureIcon,\n PlayIcon,\n RefreshCcwIcon,\n RepeatIcon,\n RewindIcon,\n RotateCcwIcon,\n SettingsIcon,\n SubtitlesIcon,\n Volume1Icon,\n Volume2Icon,\n VolumeXIcon,\n} from \"lucide-react\";\nimport {\n MediaActionTypes,\n MediaProvider,\n timeUtils,\n useMediaDispatch,\n useMediaFullscreenRef,\n useMediaRef,\n useMediaSelector,\n} from \"media-chrome/react/media-store\";\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { Badge } from \"@/radix-vega/badge\";\nimport { Button } from \"@/radix-vega/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"@/radix-vega/dropdown-menu\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"@/radix-vega/tooltip\";\nimport { useComposedRefs } from \"@/lib/compose-refs\";\nimport { cn } from \"@/lib/utils\";\nimport { useLazyRef } from \"@/hooks/use-lazy-ref\";\n\nconst ROOT_NAME = \"MediaPlayer\";\nconst SEEK_NAME = \"MediaPlayerSeek\";\nconst SETTINGS_NAME = \"MediaPlayerSettings\";\nconst VOLUME_NAME = \"MediaPlayerVolume\";\nconst PLAYBACK_SPEED_NAME = \"MediaPlayerPlaybackSpeed\";\n\nconst FLOATING_MENU_SIDE_OFFSET = 10;\nconst SPEEDS = [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2];\n\nconst SEEK_STEP_SHORT = 5;\nconst SEEK_STEP_LONG = 10;\nconst SEEK_COLLISION_PADDING = 10;\nconst SEEK_TOOLTIP_WIDTH_FALLBACK = 240;\n\nconst SEEK_HOVER_PERCENT = \"--seek-hover-percent\";\nconst SEEK_TOOLTIP_X = \"--seek-tooltip-x\";\nconst SEEK_TOOLTIP_Y = \"--seek-tooltip-y\";\n\nconst SPRITE_CONTAINER_WIDTH = 224;\nconst SPRITE_CONTAINER_HEIGHT = 128;\n\ninterface DivProps extends React.ComponentProps<\"div\"> {\n asChild?: boolean;\n}\n\ntype RootElement = React.ComponentRef<typeof MediaPlayer>;\n\ntype Direction = \"ltr\" | \"rtl\";\n\ninterface StoreState {\n controlsVisible: boolean;\n dragging: boolean;\n menuOpen: boolean;\n volumeIndicatorVisible: boolean;\n}\n\ninterface Store {\n subscribe: (cb: () => void) => () => void;\n getState: () => StoreState;\n setState: (\n key: keyof StoreState,\n value: StoreState[keyof StoreState],\n ) => void;\n notify: () => void;\n}\n\nconst StoreContext = React.createContext<Store | null>(null);\n\nfunction useStoreContext(consumerName: string) {\n const context = React.useContext(StoreContext);\n if (!context) {\n throw new Error(`\\`${consumerName}\\` must be used within \\`${ROOT_NAME}\\``);\n }\n return context;\n}\n\nfunction useStore<T>(selector: (state: StoreState) => T): T {\n const store = useStoreContext(\"useStore\");\n\n const getSnapshot = React.useCallback(\n () => selector(store.getState()),\n [store, selector],\n );\n\n return React.useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);\n}\n\ninterface MediaPlayerContextValue {\n mediaId: string;\n labelId: string;\n descriptionId: string;\n dir: Direction;\n rootRef: React.RefObject<RootElement | null>;\n mediaRef: React.RefObject<HTMLVideoElement | HTMLAudioElement | null>;\n portalContainer: Element | DocumentFragment | null;\n tooltipDelayDuration: number;\n tooltipSideOffset: number;\n disabled: boolean;\n isVideo: boolean;\n withoutTooltip: boolean;\n}\n\nconst MediaPlayerContext = React.createContext<MediaPlayerContextValue | null>(\n null,\n);\n\nfunction useMediaPlayerContext(consumerName: string) {\n const context = React.useContext(MediaPlayerContext);\n if (!context) {\n throw new Error(`\\`${consumerName}\\` must be used within \\`${ROOT_NAME}\\``);\n }\n return context;\n}\n\ninterface MediaPlayerProps\n extends Omit<DivProps, \"onTimeUpdate\" | \"onVolumeChange\"> {\n onPlay?: () => void;\n onPause?: () => void;\n onEnded?: () => void;\n onTimeUpdate?: (time: number) => void;\n onVolumeChange?: (volume: number) => void;\n onMuted?: (muted: boolean) => void;\n onMediaError?: (error: MediaError | null) => void;\n onPipError?: (error: unknown, state: \"enter\" | \"exit\") => void;\n onFullscreenChange?: (fullscreen: boolean) => void;\n dir?: Direction;\n label?: string;\n tooltipDelayDuration?: number;\n tooltipSideOffset?: number;\n autoHide?: boolean;\n disabled?: boolean;\n withoutTooltip?: boolean;\n}\n\nfunction MediaPlayer(props: MediaPlayerProps) {\n const listenersRef = useLazyRef(() => new Set<() => void>());\n const stateRef = useLazyRef<StoreState>(() => ({\n controlsVisible: true,\n dragging: false,\n menuOpen: false,\n volumeIndicatorVisible: false,\n }));\n\n const store: Store = React.useMemo(() => {\n return {\n subscribe: (cb) => {\n listenersRef.current.add(cb);\n return () => listenersRef.current.delete(cb);\n },\n getState: () => stateRef.current,\n setState: (key, value) => {\n if (Object.is(stateRef.current[key], value)) return;\n stateRef.current[key] = value;\n store.notify();\n },\n notify: () => {\n for (const cb of listenersRef.current) {\n cb();\n }\n },\n };\n }, [listenersRef, stateRef]);\n\n return (\n <MediaProvider>\n <StoreContext.Provider value={store}>\n <MediaPlayerImpl {...props} />\n </StoreContext.Provider>\n </MediaProvider>\n );\n}\n\nfunction MediaPlayerImpl(props: MediaPlayerProps) {\n const {\n onPlay,\n onPause,\n onEnded,\n onTimeUpdate,\n onFullscreenChange,\n onVolumeChange,\n onMuted,\n onMediaError,\n onPipError,\n dir: dirProp,\n label,\n tooltipDelayDuration = 600,\n tooltipSideOffset = FLOATING_MENU_SIDE_OFFSET,\n asChild,\n autoHide = false,\n disabled = false,\n withoutTooltip = false,\n children,\n className,\n ref,\n ...rootImplProps\n } = props;\n\n const mediaId = React.useId();\n const labelId = React.useId();\n const descriptionId = React.useId();\n\n const rootRef = React.useRef<RootElement | null>(null);\n const fullscreenRef = useMediaFullscreenRef();\n const composedRef = useComposedRefs(ref, rootRef, fullscreenRef);\n\n const dir = useDirection(dirProp);\n const dispatch = useMediaDispatch();\n const mediaRef = React.useRef<HTMLVideoElement | HTMLAudioElement | null>(\n null,\n );\n\n const store = useStoreContext(ROOT_NAME);\n\n const controlsVisible = useStore((state) => state.controlsVisible);\n const dragging = useStore((state) => state.dragging);\n const menuOpen = useStore((state) => state.menuOpen);\n\n const hideControlsTimeoutRef = React.useRef<NodeJS.Timeout | null>(null);\n const lastMouseMoveRef = React.useRef<number>(Date.now());\n const volumeIndicatorTimeoutRef = React.useRef<NodeJS.Timeout | null>(null);\n\n const mediaPaused = useMediaSelector((state) => state.mediaPaused ?? true);\n const isFullscreen = useMediaSelector(\n (state) => state.mediaIsFullscreen ?? false,\n );\n\n const [mounted, setMounted] = React.useState(false);\n React.useLayoutEffect(() => {\n setMounted(true);\n }, []);\n\n const portalContainer = mounted\n ? isFullscreen\n ? rootRef.current\n : globalThis.document.body\n : null;\n\n const isVideo =\n (typeof HTMLVideoElement !== \"undefined\" &&\n mediaRef.current instanceof HTMLVideoElement) ||\n mediaRef.current?.tagName?.toLowerCase() === \"mux-player\";\n\n const onControlsShow = React.useCallback(() => {\n store.setState(\"controlsVisible\", true);\n lastMouseMoveRef.current = Date.now();\n\n if (hideControlsTimeoutRef.current) {\n clearTimeout(hideControlsTimeoutRef.current);\n }\n\n if (autoHide && !mediaPaused && !menuOpen && !dragging) {\n hideControlsTimeoutRef.current = setTimeout(() => {\n store.setState(\"controlsVisible\", false);\n }, 3000);\n }\n }, [store.setState, autoHide, mediaPaused, menuOpen, dragging]);\n\n const onVolumeIndicatorTrigger = React.useCallback(() => {\n if (menuOpen) return;\n\n store.setState(\"volumeIndicatorVisible\", true);\n\n if (volumeIndicatorTimeoutRef.current) {\n clearTimeout(volumeIndicatorTimeoutRef.current);\n }\n\n volumeIndicatorTimeoutRef.current = setTimeout(() => {\n store.setState(\"volumeIndicatorVisible\", false);\n }, 2000);\n\n if (autoHide) {\n onControlsShow();\n }\n }, [store.setState, menuOpen, autoHide, onControlsShow]);\n\n const onMouseLeave = React.useCallback(\n (event: React.MouseEvent<RootElement>) => {\n rootImplProps.onMouseLeave?.(event);\n\n if (event.defaultPrevented) return;\n\n if (autoHide && !mediaPaused && !menuOpen && !dragging) {\n store.setState(\"controlsVisible\", false);\n }\n },\n [\n store.setState,\n rootImplProps.onMouseLeave,\n autoHide,\n mediaPaused,\n menuOpen,\n dragging,\n ],\n );\n\n const onMouseMove = React.useCallback(\n (event: React.MouseEvent<RootElement>) => {\n rootImplProps.onMouseMove?.(event);\n\n if (event.defaultPrevented) return;\n\n if (autoHide) {\n onControlsShow();\n }\n },\n [autoHide, rootImplProps.onMouseMove, onControlsShow],\n );\n\n React.useEffect(() => {\n if (mediaPaused || menuOpen || dragging) {\n store.setState(\"controlsVisible\", true);\n if (hideControlsTimeoutRef.current) {\n clearTimeout(hideControlsTimeoutRef.current);\n }\n return;\n }\n\n if (autoHide) {\n onControlsShow();\n }\n }, [\n store.setState,\n onControlsShow,\n autoHide,\n menuOpen,\n mediaPaused,\n dragging,\n ]);\n\n const onKeyDown = React.useCallback(\n (event: React.KeyboardEvent<RootElement>) => {\n if (disabled) return;\n\n rootImplProps.onKeyDown?.(event);\n\n if (event.defaultPrevented) return;\n\n const mediaElement = mediaRef.current;\n if (!mediaElement) return;\n\n const isMediaFocused = document.activeElement === mediaElement;\n const isPlayerFocused =\n document.activeElement?.closest('[data-slot=\"media-player\"]') !== null;\n\n if (!isMediaFocused && !isPlayerFocused) return;\n\n if (autoHide) onControlsShow();\n\n switch (event.key.toLowerCase()) {\n case \" \":\n case \"k\":\n event.preventDefault();\n dispatch({\n type: mediaElement.paused\n ? MediaActionTypes.MEDIA_PLAY_REQUEST\n : MediaActionTypes.MEDIA_PAUSE_REQUEST,\n });\n break;\n\n case \"f\":\n event.preventDefault();\n dispatch({\n type: document.fullscreenElement\n ? MediaActionTypes.MEDIA_EXIT_FULLSCREEN_REQUEST\n : MediaActionTypes.MEDIA_ENTER_FULLSCREEN_REQUEST,\n });\n break;\n\n case \"m\": {\n event.preventDefault();\n if (isVideo) {\n onVolumeIndicatorTrigger();\n }\n dispatch({\n type: mediaElement.muted\n ? MediaActionTypes.MEDIA_UNMUTE_REQUEST\n : MediaActionTypes.MEDIA_MUTE_REQUEST,\n });\n break;\n }\n\n case \"arrowright\":\n event.preventDefault();\n if (\n isVideo ||\n (mediaElement instanceof HTMLAudioElement && event.shiftKey)\n ) {\n dispatch({\n type: MediaActionTypes.MEDIA_SEEK_REQUEST,\n detail: Math.min(\n mediaElement.duration,\n mediaElement.currentTime + SEEK_STEP_SHORT,\n ),\n });\n }\n break;\n\n case \"arrowleft\":\n event.preventDefault();\n if (\n isVideo ||\n (mediaElement instanceof HTMLAudioElement && event.shiftKey)\n ) {\n dispatch({\n type: MediaActionTypes.MEDIA_SEEK_REQUEST,\n detail: Math.max(0, mediaElement.currentTime - SEEK_STEP_SHORT),\n });\n }\n break;\n\n case \"arrowup\":\n event.preventDefault();\n if (isVideo) {\n onVolumeIndicatorTrigger();\n dispatch({\n type: MediaActionTypes.MEDIA_VOLUME_REQUEST,\n detail: Math.min(1, mediaElement.volume + 0.1),\n });\n }\n break;\n\n case \"arrowdown\":\n event.preventDefault();\n if (isVideo) {\n onVolumeIndicatorTrigger();\n dispatch({\n type: MediaActionTypes.MEDIA_VOLUME_REQUEST,\n detail: Math.max(0, mediaElement.volume - 0.1),\n });\n }\n break;\n\n case \"<\": {\n event.preventDefault();\n const currentRate = mediaElement.playbackRate;\n const currentIndex = SPEEDS.indexOf(currentRate);\n const newIndex = Math.max(0, currentIndex - 1);\n const newRate = SPEEDS[newIndex] ?? 1;\n dispatch({\n type: MediaActionTypes.MEDIA_PLAYBACK_RATE_REQUEST,\n detail: newRate,\n });\n break;\n }\n\n case \">\": {\n event.preventDefault();\n const currentRate = mediaElement.playbackRate;\n const currentIndex = SPEEDS.indexOf(currentRate);\n const newIndex = Math.min(SPEEDS.length - 1, currentIndex + 1);\n const newRate = SPEEDS[newIndex] ?? 1;\n dispatch({\n type: MediaActionTypes.MEDIA_PLAYBACK_RATE_REQUEST,\n detail: newRate,\n });\n break;\n }\n\n case \"c\":\n event.preventDefault();\n if (isVideo && mediaElement.textTracks.length > 0) {\n dispatch({\n type: MediaActionTypes.MEDIA_TOGGLE_SUBTITLES_REQUEST,\n });\n }\n break;\n\n case \"d\": {\n const hasDownload = mediaElement.querySelector(\n '[data-slot=\"media-player-download\"]',\n );\n\n if (!hasDownload) break;\n\n event.preventDefault();\n if (mediaElement.currentSrc) {\n const link = document.createElement(\"a\");\n link.href = mediaElement.currentSrc;\n link.download = \"\";\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n break;\n }\n\n case \"p\": {\n event.preventDefault();\n if (isVideo && \"requestPictureInPicture\" in mediaElement) {\n const isPip = document.pictureInPictureElement === mediaElement;\n dispatch({\n type: isPip\n ? MediaActionTypes.MEDIA_EXIT_PIP_REQUEST\n : MediaActionTypes.MEDIA_ENTER_PIP_REQUEST,\n });\n if (isPip) {\n document.exitPictureInPicture().catch((error) => {\n onPipError?.(error, \"exit\");\n });\n } else {\n mediaElement.requestPictureInPicture().catch((error) => {\n onPipError?.(error, \"enter\");\n });\n }\n }\n break;\n }\n\n case \"r\": {\n event.preventDefault();\n mediaElement.loop = !mediaElement.loop;\n break;\n }\n\n case \"j\": {\n event.preventDefault();\n dispatch({\n type: MediaActionTypes.MEDIA_SEEK_REQUEST,\n detail: Math.max(0, mediaElement.currentTime - SEEK_STEP_LONG),\n });\n break;\n }\n\n case \"l\": {\n event.preventDefault();\n dispatch({\n type: MediaActionTypes.MEDIA_SEEK_REQUEST,\n detail: Math.min(\n mediaElement.duration,\n mediaElement.currentTime + SEEK_STEP_LONG,\n ),\n });\n break;\n }\n\n case \"0\":\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\":\n case \"8\":\n case \"9\": {\n event.preventDefault();\n const percent = Number.parseInt(event.key, 10) / 10;\n const seekTime = mediaElement.duration * percent;\n dispatch({\n type: MediaActionTypes.MEDIA_SEEK_REQUEST,\n detail: seekTime,\n });\n break;\n }\n\n case \"home\": {\n event.preventDefault();\n dispatch({\n type: MediaActionTypes.MEDIA_SEEK_REQUEST,\n detail: 0,\n });\n break;\n }\n\n case \"end\": {\n event.preventDefault();\n dispatch({\n type: MediaActionTypes.MEDIA_SEEK_REQUEST,\n detail: mediaElement.duration,\n });\n break;\n }\n }\n },\n [\n dispatch,\n rootImplProps.onKeyDown,\n onVolumeIndicatorTrigger,\n onPipError,\n disabled,\n isVideo,\n onControlsShow,\n autoHide,\n ],\n );\n\n const onKeyUp = React.useCallback(\n (event: React.KeyboardEvent<RootElement>) => {\n rootImplProps.onKeyUp?.(event);\n\n const key = event.key.toLowerCase();\n if (key === \"arrowup\" || key === \"arrowdown\" || key === \"m\") {\n onVolumeIndicatorTrigger();\n }\n },\n [rootImplProps.onKeyUp, onVolumeIndicatorTrigger],\n );\n\n React.useEffect(() => {\n const mediaElement = mediaRef.current;\n if (!mediaElement) return;\n\n if (onPlay) mediaElement.addEventListener(\"play\", onPlay);\n if (onPause) mediaElement.addEventListener(\"pause\", onPause);\n if (onEnded) mediaElement.addEventListener(\"ended\", onEnded);\n if (onTimeUpdate)\n mediaElement.addEventListener(\"timeupdate\", () =>\n onTimeUpdate?.(mediaElement.currentTime),\n );\n if (onVolumeChange)\n mediaElement.addEventListener(\"volumechange\", () => {\n onVolumeChange?.(mediaElement.volume);\n onMuted?.(mediaElement.muted);\n });\n if (onMediaError)\n mediaElement.addEventListener(\"error\", () =>\n onMediaError?.(mediaElement.error),\n );\n if (onFullscreenChange) {\n document.addEventListener(\"fullscreenchange\", () =>\n onFullscreenChange?.(!!document.fullscreenElement),\n );\n }\n\n return () => {\n if (onPlay) mediaElement.removeEventListener(\"play\", onPlay);\n if (onPause) mediaElement.removeEventListener(\"pause\", onPause);\n if (onEnded) mediaElement.removeEventListener(\"ended\", onEnded);\n if (onTimeUpdate)\n mediaElement.removeEventListener(\"timeupdate\", () =>\n onTimeUpdate?.(mediaElement.currentTime),\n );\n if (onVolumeChange)\n mediaElement.removeEventListener(\"volumechange\", () => {\n onVolumeChange?.(mediaElement.volume);\n onMuted?.(mediaElement.muted);\n });\n if (onMediaError)\n mediaElement.removeEventListener(\"error\", () =>\n onMediaError?.(mediaElement.error),\n );\n if (onFullscreenChange) {\n document.removeEventListener(\"fullscreenchange\", () =>\n onFullscreenChange?.(!!document.fullscreenElement),\n );\n }\n if (volumeIndicatorTimeoutRef.current) {\n clearTimeout(volumeIndicatorTimeoutRef.current);\n }\n if (hideControlsTimeoutRef.current) {\n clearTimeout(hideControlsTimeoutRef.current);\n }\n };\n }, [\n onPlay,\n onPause,\n onEnded,\n onTimeUpdate,\n onVolumeChange,\n onMuted,\n onMediaError,\n onFullscreenChange,\n ]);\n\n const contextValue = React.useMemo<MediaPlayerContextValue>(\n () => ({\n mediaId,\n labelId,\n descriptionId,\n dir,\n rootRef,\n mediaRef,\n portalContainer,\n tooltipDelayDuration,\n tooltipSideOffset,\n disabled,\n isVideo,\n withoutTooltip,\n }),\n [\n mediaId,\n labelId,\n descriptionId,\n dir,\n portalContainer,\n tooltipDelayDuration,\n tooltipSideOffset,\n disabled,\n isVideo,\n withoutTooltip,\n ],\n );\n\n const RootPrimitive = asChild ? Slot : \"div\";\n\n return (\n <MediaPlayerContext.Provider value={contextValue}>\n <RootPrimitive\n aria-labelledby={labelId}\n aria-describedby={descriptionId}\n aria-disabled={disabled}\n data-disabled={disabled ? \"\" : undefined}\n data-controls-visible={controlsVisible ? \"\" : undefined}\n data-slot=\"media-player\"\n data-state={isFullscreen ? \"fullscreen\" : \"windowed\"}\n dir={dir}\n tabIndex={disabled ? undefined : 0}\n {...rootImplProps}\n ref={composedRef}\n onMouseLeave={onMouseLeave}\n onMouseMove={onMouseMove}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n className={cn(\n \"dark relative isolate flex flex-col overflow-hidden rounded-lg bg-background outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 data-disabled:pointer-events-none data-disabled:opacity-50 [&_video]:relative [&_video]:object-contain\",\n \"in-[:fullscreen]:flex in-[:fullscreen]:h-full in-[:fullscreen]:max-h-screen in-[:fullscreen]:flex-col in-[:fullscreen]:justify-between data-[state=fullscreen]:[&_video]:size-full\",\n \"**:data-slider:relative [&_[data-slider]::before]:absolute [&_[data-slider]::before]:inset-x-0 [&_[data-slider]::before]:-top-4 [&_[data-slider]::before]:-bottom-2 [&_[data-slider]::before]:z-10 [&_[data-slider]::before]:h-8 [&_[data-slider]::before]:cursor-pointer [&_[data-slider]::before]:content-[''] [&_[data-slot='media-player-seek']:not([data-hovering])::before]:cursor-default\",\n \"[&_video::-webkit-media-text-track-display]:top-auto! [&_video::-webkit-media-text-track-display]:bottom-[4%]! [&_video::-webkit-media-text-track-display]:mb-0! data-[state=fullscreen]:data-controls-visible:[&_video::-webkit-media-text-track-display]:bottom-[9%]! data-[state=fullscreen]:[&_video::-webkit-media-text-track-display]:bottom-[7%]! data-controls-visible:[&_video::-webkit-media-text-track-display]:bottom-[13%]!\",\n className,\n )}\n >\n <span id={labelId} className=\"sr-only\">\n {label ?? \"Media player\"}\n </span>\n <span id={descriptionId} className=\"sr-only\">\n {isVideo\n ? \"Video player with custom controls for playback, volume, seeking, and more. Use space bar to play/pause, arrow keys (←/→) to seek, and arrow keys (↑/↓) to adjust volume.\"\n : \"Audio player with custom controls for playback, volume, seeking, and more. Use space bar to play/pause, Shift + arrow keys (←/→) to seek, and arrow keys (↑/↓) to adjust volume.\"}\n </span>\n {children}\n <MediaPlayerVolumeIndicator />\n </RootPrimitive>\n </MediaPlayerContext.Provider>\n );\n}\n\ninterface MediaPlayerVideoProps extends React.ComponentProps<\"video\"> {\n asChild?: boolean;\n}\n\nfunction MediaPlayerVideo(props: MediaPlayerVideoProps) {\n const { asChild, ref, ...videoProps } = props;\n\n const context = useMediaPlayerContext(\"MediaPlayerVideo\");\n const dispatch = useMediaDispatch();\n const mediaRefCallback = useMediaRef();\n const composedRef = useComposedRefs(ref, context.mediaRef, mediaRefCallback);\n\n const onPlayToggle = React.useCallback(\n (event: React.MouseEvent<HTMLVideoElement>) => {\n props.onClick?.(event);\n\n if (event.defaultPrevented) return;\n\n const mediaElement = event.currentTarget;\n if (!mediaElement) return;\n\n dispatch({\n type: mediaElement.paused\n ? MediaActionTypes.MEDIA_PLAY_REQUEST\n : MediaActionTypes.MEDIA_PAUSE_REQUEST,\n });\n },\n [dispatch, props.onClick],\n );\n\n const VideoPrimitive = asChild ? Slot : \"video\";\n\n return (\n <VideoPrimitive\n aria-describedby={context.descriptionId}\n aria-labelledby={context.labelId}\n data-slot=\"media-player-video\"\n {...videoProps}\n id={context.mediaId}\n ref={composedRef}\n onClick={onPlayToggle}\n />\n );\n}\n\ninterface MediaPlayerAudioProps extends React.ComponentProps<\"audio\"> {\n asChild?: boolean;\n}\n\nfunction MediaPlayerAudio(props: MediaPlayerAudioProps) {\n const { asChild, ref, ...audioProps } = props;\n\n const context = useMediaPlayerContext(\"MediaPlayerAudio\");\n const mediaRefCallback = useMediaRef();\n const composedRef = useComposedRefs(ref, context.mediaRef, mediaRefCallback);\n\n const AudioPrimitive = asChild ? Slot : \"audio\";\n\n return (\n <AudioPrimitive\n aria-describedby={context.descriptionId}\n aria-labelledby={context.labelId}\n data-slot=\"media-player-audio\"\n {...audioProps}\n id={context.mediaId}\n ref={composedRef}\n />\n );\n}\n\nfunction MediaPlayerControls(props: DivProps) {\n const { asChild, className, ...controlsProps } = props;\n\n const context = useMediaPlayerContext(\"MediaPlayerControls\");\n const isFullscreen = useMediaSelector(\n (state) => state.mediaIsFullscreen ?? false,\n );\n const controlsVisible = useStore((state) => state.controlsVisible);\n\n const ControlsPrimitive = asChild ? Slot : \"div\";\n\n return (\n <ControlsPrimitive\n data-disabled={context.disabled ? \"\" : undefined}\n data-slot=\"media-player-controls\"\n data-state={isFullscreen ? \"fullscreen\" : \"windowed\"}\n data-visible={controlsVisible ? \"\" : undefined}\n dir={context.dir}\n className={cn(\n \"dark pointer-events-none absolute right-0 bottom-0 left-0 z-50 flex items-center gap-2 in-[:fullscreen]:px-6 px-4 in-[:fullscreen]:py-4 py-3 opacity-0 transition-opacity duration-200 data-visible:pointer-events-auto data-visible:opacity-100\",\n className,\n )}\n {...controlsProps}\n />\n );\n}\n\ninterface MediaPlayerLoadingProps extends DivProps {\n delayMs?: number;\n}\n\nfunction MediaPlayerLoading(props: MediaPlayerLoadingProps) {\n const {\n delayMs = 500,\n asChild,\n className,\n children,\n ...loadingProps\n } = props;\n\n const isLoading = useMediaSelector((state) => state.mediaLoading ?? false);\n const isPaused = useMediaSelector((state) => state.mediaPaused ?? true);\n const hasPlayed = useMediaSelector((state) => state.mediaHasPlayed ?? false);\n\n const shouldShowLoading = isLoading && !isPaused;\n const shouldUseDelay = hasPlayed && shouldShowLoading;\n const loadingDelayMs = shouldUseDelay ? delayMs : 0;\n\n const [shouldRender, setShouldRender] = React.useState(false);\n const timeoutRef = React.useRef<NodeJS.Timeout | null>(null);\n\n React.useEffect(() => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n\n if (shouldShowLoading) {\n if (loadingDelayMs > 0) {\n timeoutRef.current = setTimeout(() => {\n setShouldRender(true);\n timeoutRef.current = null;\n }, loadingDelayMs);\n } else {\n setShouldRender(true);\n }\n } else {\n setShouldRender(false);\n }\n\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n };\n }, [shouldShowLoading, loadingDelayMs]);\n\n if (!shouldRender) return null;\n\n const LoadingPrimitive = asChild ? Slot : \"div\";\n\n return (\n <LoadingPrimitive\n role=\"status\"\n aria-live=\"polite\"\n data-slot=\"media-player-loading\"\n {...loadingProps}\n className={cn(\n \"fade-in-0 zoom-in-95 pointer-events-none absolute inset-0 z-50 flex animate-in items-center justify-center duration-200\",\n className,\n )}\n >\n {children ?? (\n <Loader2Icon className=\"size-20 animate-spin stroke-[.0938rem] text-primary\" />\n )}\n </LoadingPrimitive>\n );\n}\n\ninterface MediaPlayerErrorProps extends DivProps {\n error?: MediaError | null;\n label?: string;\n description?: string;\n onRetry?: () => void;\n onReload?: () => void;\n asChild?: boolean;\n}\n\nfunction MediaPlayerError(props: MediaPlayerErrorProps) {\n const {\n error: errorProp,\n label,\n description,\n onRetry: onRetryProp,\n onReload: onReloadProp,\n asChild,\n className,\n children,\n ...errorProps\n } = props;\n\n const context = useMediaPlayerContext(\"MediaPlayerError\");\n const isFullscreen = useMediaSelector(\n (state) => state.mediaIsFullscreen ?? false,\n );\n const mediaError = useMediaSelector((state) => state.mediaError);\n\n const error = errorProp ?? mediaError;\n\n const labelId = React.useId();\n const descriptionId = React.useId();\n\n const [actionState, setActionState] = React.useState<{\n retryPending: boolean;\n reloadPending: boolean;\n }>({\n retryPending: false,\n reloadPending: false,\n });\n\n const onRetry = React.useCallback(() => {\n setActionState((prev) => ({ ...prev, retryPending: true }));\n\n requestAnimationFrame(() => {\n const mediaElement = context.mediaRef.current;\n if (!mediaElement) {\n setActionState((prev) => ({ ...prev, retryPending: false }));\n return;\n }\n\n if (onRetryProp) {\n onRetryProp();\n } else {\n const currentSrc = mediaElement.currentSrc ?? mediaElement.src;\n if (currentSrc) {\n mediaElement.load();\n }\n }\n\n setActionState((prev) => ({ ...prev, retryPending: false }));\n });\n }, [context.mediaRef, onRetryProp]);\n\n const onReload = React.useCallback(() => {\n setActionState((prev) => ({ ...prev, reloadPending: true }));\n\n requestAnimationFrame(() => {\n if (onReloadProp) {\n onReloadProp();\n } else {\n window.location.reload();\n }\n });\n }, [onReloadProp]);\n\n const errorLabel = React.useMemo(() => {\n if (label) return label;\n\n if (!error) return \"Playback Error\";\n\n const labelMap: Record<number, string> = {\n [MediaError.MEDIA_ERR_ABORTED]: \"Playback Interrupted\",\n [MediaError.MEDIA_ERR_NETWORK]: \"Connection Problem\",\n [MediaError.MEDIA_ERR_DECODE]: \"Media Error\",\n [MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED]: \"Unsupported Format\",\n };\n\n return labelMap[error.code] ?? \"Playback Error\";\n }, [label, error]);\n\n const errorDescription = React.useMemo(() => {\n if (description) return description;\n\n if (!error) return \"An unknown error occurred\";\n\n const descriptionMap: Record<number, string> = {\n [MediaError.MEDIA_ERR_ABORTED]: \"Media playback was aborted\",\n [MediaError.MEDIA_ERR_NETWORK]:\n \"A network error occurred while loading the media\",\n [MediaError.MEDIA_ERR_DECODE]:\n \"An error occurred while decoding the media\",\n [MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED]:\n \"The media format is not supported\",\n };\n\n return descriptionMap[error.code] ?? \"An unknown error occurred\";\n }, [description, error]);\n\n if (!error) return null;\n\n const ErrorPrimitive = asChild ? Slot : \"div\";\n\n return (\n <ErrorPrimitive\n role=\"alert\"\n aria-describedby={descriptionId}\n aria-labelledby={labelId}\n aria-live=\"assertive\"\n data-slot=\"media-player-error\"\n data-state={isFullscreen ? \"fullscreen\" : \"windowed\"}\n {...errorProps}\n className={cn(\n \"pointer-events-auto absolute inset-0 z-50 flex flex-col items-center justify-center bg-black/80 text-white backdrop-blur-sm\",\n className,\n )}\n >\n {children ?? (\n <div className=\"flex max-w-md flex-col items-center gap-4 px-6 py-8 text-center\">\n <AlertTriangleIcon className=\"size-12 text-destructive\" />\n <div className=\"flex flex-col gap-px text-center\">\n <h3 className=\"font-semibold text-xl tracking-tight\">\n {errorLabel}\n </h3>\n <p className=\"text-balance text-muted-foreground text-sm leading-relaxed\">\n {errorDescription}\n </p>\n </div>\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={onRetry}\n disabled={actionState.retryPending}\n >\n {actionState.retryPending ? (\n <Loader2Icon className=\"animate-spin\" />\n ) : (\n <RefreshCcwIcon />\n )}\n Try again\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={onReload}\n disabled={actionState.reloadPending}\n >\n {actionState.reloadPending ? (\n <Loader2Icon className=\"animate-spin\" />\n ) : (\n <RotateCcwIcon />\n )}\n Reload page\n </Button>\n </div>\n </div>\n )}\n </ErrorPrimitive>\n );\n}\n\nfunction MediaPlayerVolumeIndicator(props: DivProps) {\n const { asChild, className, ...indicatorProps } = props;\n\n const mediaVolume = useMediaSelector((state) => state.mediaVolume ?? 1);\n const mediaMuted = useMediaSelector((state) => state.mediaMuted ?? false);\n const mediaVolumeLevel = useMediaSelector(\n (state) => state.mediaVolumeLevel ?? \"high\",\n );\n const volumeIndicatorVisible = useStore(\n (state) => state.volumeIndicatorVisible,\n );\n\n if (!volumeIndicatorVisible) return null;\n\n const effectiveVolume = mediaMuted ? 0 : mediaVolume;\n const volumePercentage = Math.round(effectiveVolume * 100);\n const barCount = 10;\n const activeBarCount = Math.ceil(effectiveVolume * barCount);\n\n const VolumeIndicatorPrimitive = asChild ? Slot : \"div\";\n\n return (\n <VolumeIndicatorPrimitive\n role=\"status\"\n aria-live=\"polite\"\n aria-label={`Volume ${mediaMuted ? \"muted\" : `${volumePercentage}%`}`}\n data-slot=\"media-player-volume-indicator\"\n {...indicatorProps}\n className={cn(\n \"pointer-events-none absolute inset-0 z-50 flex items-center justify-center\",\n className,\n )}\n >\n <div className=\"fade-in-0 zoom-in-95 flex animate-in flex-col items-center gap-3 rounded-lg bg-black/30 px-6 py-4 text-white backdrop-blur-xs duration-200\">\n <div className=\"flex items-center gap-2\">\n {mediaVolumeLevel === \"off\" || mediaMuted ? (\n <VolumeXIcon className=\"size-6\" />\n ) : mediaVolumeLevel === \"high\" ? (\n <Volume2Icon className=\"size-6\" />\n ) : (\n <Volume1Icon className=\"size-6\" />\n )}\n <span className=\"font-medium text-sm tabular-nums\">\n {mediaMuted ? \"Muted\" : `${volumePercentage}%`}\n </span>\n </div>\n <div className=\"flex items-center gap-1\">\n {Array.from({ length: barCount }, (_, index) => (\n <div\n key={index}\n className={cn(\n \"w-1.5 rounded-full transition-all duration-150\",\n index < activeBarCount && !mediaMuted\n ? \"scale-100 bg-white\"\n : \"scale-90 bg-white/30\",\n )}\n style={{\n height: `${12 + index * 2}px`,\n animationDelay: `${index * 50}ms`,\n }}\n />\n ))}\n </div>\n </div>\n </VolumeIndicatorPrimitive>\n );\n}\n\nfunction MediaPlayerControlsOverlay(props: DivProps) {\n const { asChild, className, ...overlayProps } = props;\n\n const isFullscreen = useMediaSelector(\n (state) => state.mediaIsFullscreen ?? false,\n );\n const controlsVisible = useStore((state) => state.controlsVisible);\n\n const OverlayPrimitive = asChild ? Slot : \"div\";\n\n return (\n <OverlayPrimitive\n data-slot=\"media-player-controls-overlay\"\n data-state={isFullscreen ? \"fullscreen\" : \"windowed\"}\n data-visible={controlsVisible ? \"\" : undefined}\n {...overlayProps}\n className={cn(\n \"pointer-events-none absolute inset-0 -z-10 bg-linear-to-t from-black/80 to-transparent opacity-0 transition-opacity duration-200 data-visible:opacity-100\",\n className,\n )}\n />\n );\n}\n\nfunction MediaPlayerPlay(props: React.ComponentProps<typeof Button>) {\n const { children, className, disabled, ...playButtonProps } = props;\n\n const context = useMediaPlayerContext(\"MediaPlayerPlay\");\n const dispatch = useMediaDispatch();\n const mediaPaused = useMediaSelector((state) => state.mediaPaused ?? true);\n\n const isDisabled = disabled || context.disabled;\n\n const onPlayToggle = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n props.onClick?.(event);\n\n if (event.defaultPrevented) return;\n\n dispatch({\n type: mediaPaused\n ? MediaActionTypes.MEDIA_PLAY_REQUEST\n : MediaActionTypes.MEDIA_PAUSE_REQUEST,\n });\n },\n [dispatch, props.onClick, mediaPaused],\n );\n\n return (\n <MediaPlayerTooltip\n tooltip={mediaPaused ? \"Play\" : \"Pause\"}\n shortcut=\"Space\"\n >\n <Button\n type=\"button\"\n aria-controls={context.mediaId}\n aria-label={mediaPaused ? \"Play\" : \"Pause\"}\n aria-pressed={!mediaPaused}\n data-disabled={isDisabled ? \"\" : undefined}\n data-slot=\"media-player-play-button\"\n data-state={mediaPaused ? \"off\" : \"on\"}\n disabled={isDisabled}\n {...playButtonProps}\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\n \"size-8 [&_svg:not([class*='fill-'])]:fill-current\",\n className,\n )}\n onClick={onPlayToggle}\n >\n {children ?? (mediaPaused ? <PlayIcon /> : <PauseIcon />)}\n </Button>\n </MediaPlayerTooltip>\n );\n}\n\ninterface MediaPlayerSeekBackwardProps\n extends React.ComponentProps<typeof Button> {\n seconds?: number;\n}\n\nfunction MediaPlayerSeekBackward(props: MediaPlayerSeekBackwardProps) {\n const {\n seconds = SEEK_STEP_SHORT,\n children,\n className,\n disabled,\n ...seekBackwardProps\n } = props;\n\n const context = useMediaPlayerContext(\"MediaPlayerSeekBackward\");\n const dispatch = useMediaDispatch();\n const mediaCurrentTime = useMediaSelector(\n (state) => state.mediaCurrentTime ?? 0,\n );\n\n const isDisabled = disabled || context.disabled;\n\n const onSeekBackward = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n props.onClick?.(event);\n\n if (event.defaultPrevented) return;\n\n dispatch({\n type: MediaActionTypes.MEDIA_SEEK_REQUEST,\n detail: Math.max(0, mediaCurrentTime - seconds),\n });\n },\n [dispatch, props.onClick, mediaCurrentTime, seconds],\n );\n\n return (\n <MediaPlayerTooltip\n tooltip={`Back ${seconds}s`}\n shortcut={context.isVideo ? [\"←\"] : [\"Shift ←\"]}\n >\n <Button\n type=\"button\"\n aria-controls={context.mediaId}\n aria-label={`Back ${seconds} seconds`}\n data-disabled={isDisabled ? \"\" : undefined}\n data-slot=\"media-player-seek-backward\"\n disabled={isDisabled}\n {...seekBackwardProps}\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"size-8\", className)}\n onClick={onSeekBackward}\n >\n {children ?? <RewindIcon />}\n </Button>\n </MediaPlayerTooltip>\n );\n}\n\ninterface MediaPlayerSeekForwardProps\n extends React.ComponentProps<typeof Button> {\n seconds?: number;\n}\n\nfunction MediaPlayerSeekForward(props: MediaPlayerSeekForwardProps) {\n const {\n seconds = SEEK_STEP_LONG,\n children,\n className,\n disabled,\n ...seekForwardProps\n } = props;\n\n const context = useMediaPlayerContext(\"MediaPlayerSeekForward\");\n const dispatch = useMediaDispatch();\n const mediaCurrentTime = useMediaSelector(\n (state) => state.mediaCurrentTime ?? 0,\n );\n const [, seekableEnd] = useMediaSelector(\n (state) => state.mediaSeekable ?? [0, 0],\n );\n const isDisabled = disabled || context.disabled;\n\n const onSeekForward = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n props.onClick?.(event);\n\n if (event.defaultPrevented) return;\n\n dispatch({\n type: MediaActionTypes.MEDIA_SEEK_REQUEST,\n detail: Math.min(\n seekableEnd ?? Number.POSITIVE_INFINITY,\n mediaCurrentTime + seconds,\n ),\n });\n },\n [dispatch, props.onClick, mediaCurrentTime, seekableEnd, seconds],\n );\n\n return (\n <MediaPlayerTooltip\n tooltip={`Forward ${seconds}s`}\n shortcut={context.isVideo ? [\"→\"] : [\"Shift →\"]}\n >\n <Button\n type=\"button\"\n aria-controls={context.mediaId}\n aria-label={`Forward ${seconds} seconds`}\n data-disabled={isDisabled ? \"\" : undefined}\n data-slot=\"media-player-seek-forward\"\n disabled={isDisabled}\n {...seekForwardProps}\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"size-8\", className)}\n onClick={onSeekForward}\n >\n {children ?? <FastForwardIcon />}\n </Button>\n </MediaPlayerTooltip>\n );\n}\n\ninterface SeekState {\n isHovering: boolean;\n pendingSeekTime: number | null;\n hasInitialPosition: boolean;\n}\n\ninterface MediaPlayerSeekProps\n extends React.ComponentProps<typeof SliderPrimitive.Root> {\n withTime?: boolean;\n withoutChapter?: boolean;\n withoutTooltip?: boolean;\n tooltipThumbnailSrc?: string | ((time: number) => string);\n tooltipTimeVariant?: \"current\" | \"progress\";\n tooltipSideOffset?: number;\n tooltipCollisionBoundary?: Element | Element[];\n tooltipCollisionPadding?:\n | number\n | Partial<Record<\"top\" | \"right\" | \"bottom\" | \"left\", number>>;\n}\n\nfunction MediaPlayerSeek(props: MediaPlayerSeekProps) {\n const {\n withTime = false,\n withoutChapter = false,\n withoutTooltip = false,\n tooltipTimeVariant = \"current\",\n tooltipThumbnailSrc,\n tooltipSideOffset,\n tooltipCollisionPadding = SEEK_COLLISION_PADDING,\n tooltipCollisionBoundary,\n className,\n disabled,\n ...seekProps\n } = props;\n\n const context = useMediaPlayerContext(SEEK_NAME);\n const store = useStoreContext(SEEK_NAME);\n const dispatch = useMediaDispatch();\n const mediaCurrentTime = useMediaSelector(\n (state) => state.mediaCurrentTime ?? 0,\n );\n const [seekableStart = 0, seekableEnd = 0] = useMediaSelector(\n (state) => state.mediaSeekable ?? [0, 0],\n );\n const mediaBuffered = useMediaSelector((state) => state.mediaBuffered ?? []);\n const mediaEnded = useMediaSelector((state) => state.mediaEnded ?? false);\n\n const chapterCues = useMediaSelector(\n (state) => state.mediaChaptersCues ?? [],\n );\n const mediaPreviewTime = useMediaSelector((state) => state.mediaPreviewTime);\n const mediaPreviewImage = useMediaSelector(\n (state) => state.mediaPreviewImage,\n );\n const mediaPreviewCoords = useMediaSelector(\n (state) => state.mediaPreviewCoords,\n );\n\n const seekRef = React.useRef<HTMLDivElement>(null);\n const tooltipRef = React.useRef<HTMLDivElement>(null);\n const justCommittedRef = React.useRef<boolean>(false);\n\n const hoverTimeRef = React.useRef(0);\n const tooltipXRef = React.useRef(0);\n const tooltipYRef = React.useRef(0);\n const seekRectRef = React.useRef<DOMRect | null>(null);\n const collisionDataRef = React.useRef<{\n padding: { top: number; right: number; bottom: number; left: number };\n boundaries: Element[];\n } | null>(null);\n\n const [seekState, setSeekState] = React.useState<SeekState>({\n isHovering: false,\n pendingSeekTime: null,\n hasInitialPosition: false,\n });\n\n const rafIdRef = React.useRef<number | null>(null);\n const seekThrottleRef = React.useRef<number | null>(null);\n const hoverTimeoutRef = React.useRef<number | null>(null);\n const lastPointerXRef = React.useRef<number>(0);\n const lastPointerYRef = React.useRef<number>(0);\n const previewDebounceRef = React.useRef<number | null>(null);\n const pointerEnterTimeRef = React.useRef<number>(0);\n const horizontalMovementRef = React.useRef<number>(0);\n const verticalMovementRef = React.useRef<number>(0);\n const lastSeekCommitTimeRef = React.useRef<number>(0);\n\n const timeCache = React.useRef<Map<number, string>>(new Map());\n\n const displayValue = seekState.pendingSeekTime ?? mediaCurrentTime;\n\n const isDisabled = disabled || context.disabled;\n const tooltipDisabled =\n withoutTooltip || context.withoutTooltip || store.getState().menuOpen;\n\n const currentTooltipSideOffset =\n tooltipSideOffset ?? context.tooltipSideOffset;\n\n const getCachedTime = React.useCallback((time: number, duration: number) => {\n const roundedTime = Math.floor(time);\n const key = roundedTime + duration * 10000;\n\n if (timeCache.current.has(key)) {\n return timeCache.current.get(key) as string;\n }\n\n const formatted = timeUtils.formatTime(time, duration);\n timeCache.current.set(key, formatted);\n\n if (timeCache.current.size > 100) {\n timeCache.current.clear();\n }\n\n return formatted;\n }, []);\n\n const currentTime = getCachedTime(displayValue, seekableEnd);\n const duration = getCachedTime(seekableEnd, seekableEnd);\n const remainingTime = getCachedTime(seekableEnd - displayValue, seekableEnd);\n\n const onCollisionDataUpdate = React.useCallback(() => {\n if (collisionDataRef.current) return collisionDataRef.current;\n\n const padding =\n typeof tooltipCollisionPadding === \"number\"\n ? {\n top: tooltipCollisionPadding,\n right: tooltipCollisionPadding,\n bottom: tooltipCollisionPadding,\n left: tooltipCollisionPadding,\n }\n : { top: 0, right: 0, bottom: 0, left: 0, ...tooltipCollisionPadding };\n\n const boundaries = tooltipCollisionBoundary\n ? Array.isArray(tooltipCollisionBoundary)\n ? tooltipCollisionBoundary\n : [tooltipCollisionBoundary]\n : ([context.rootRef.current].filter(Boolean) as Element[]);\n\n collisionDataRef.current = { padding, boundaries };\n return collisionDataRef.current;\n }, [tooltipCollisionPadding, tooltipCollisionBoundary, context.rootRef]);\n\n const getCurrentChapterCue = React.useCallback(\n (time: number) => {\n if (withoutChapter || chapterCues.length === 0) return null;\n return chapterCues.find((c) => time >= c.startTime && time < c.endTime);\n },\n [chapterCues, withoutChapter],\n );\n\n const getThumbnail = React.useCallback(\n (time: number) => {\n if (tooltipDisabled) return null;\n\n if (tooltipThumbnailSrc) {\n const src =\n typeof tooltipThumbnailSrc === \"function\"\n ? tooltipThumbnailSrc(time)\n : tooltipThumbnailSrc;\n return { src, coords: null };\n }\n\n if (\n mediaPreviewTime !== undefined &&\n Math.abs(time - mediaPreviewTime) < 0.1 &&\n mediaPreviewImage\n ) {\n return {\n src: mediaPreviewImage,\n coords: mediaPreviewCoords ?? null,\n };\n }\n\n return null;\n },\n [\n tooltipThumbnailSrc,\n mediaPreviewTime,\n mediaPreviewImage,\n mediaPreviewCoords,\n tooltipDisabled,\n ],\n );\n\n const onPreviewUpdate = React.useCallback(\n (time: number) => {\n if (tooltipDisabled) return;\n\n if (previewDebounceRef.current) {\n cancelAnimationFrame(previewDebounceRef.current);\n }\n\n previewDebounceRef.current = requestAnimationFrame(() => {\n dispatch({\n type: MediaActionTypes.MEDIA_PREVIEW_REQUEST,\n detail: time,\n });\n previewDebounceRef.current = null;\n });\n },\n [dispatch, tooltipDisabled],\n );\n\n const onTooltipPositionUpdate = React.useCallback(\n (clientX: number) => {\n if (!seekRef.current) return;\n\n const tooltipWidth =\n tooltipRef.current?.offsetWidth ?? SEEK_TOOLTIP_WIDTH_FALLBACK;\n\n let x = clientX;\n const y = seekRectRef.current?.top ?? 0;\n\n const collisionData = onCollisionDataUpdate();\n const halfTooltipWidth = tooltipWidth / 2;\n\n let minLeft = 0;\n let maxRight = window.innerWidth;\n\n for (const boundary of collisionData.boundaries) {\n const boundaryRect = boundary.getBoundingClientRect();\n minLeft = Math.max(\n minLeft,\n boundaryRect.left + collisionData.padding.left,\n );\n maxRight = Math.min(\n maxRight,\n boundaryRect.right - collisionData.padding.right,\n );\n }\n\n if (x - halfTooltipWidth < minLeft) {\n x = minLeft + halfTooltipWidth;\n } else if (x + halfTooltipWidth > maxRight) {\n x = maxRight - halfTooltipWidth;\n }\n\n const viewportPadding = SEEK_COLLISION_PADDING;\n if (x - halfTooltipWidth < viewportPadding) {\n x = viewportPadding + halfTooltipWidth;\n } else if (x + halfTooltipWidth > window.innerWidth - viewportPadding) {\n x = window.innerWidth - viewportPadding - halfTooltipWidth;\n }\n\n tooltipXRef.current = x;\n tooltipYRef.current = y;\n\n if (tooltipRef.current) {\n tooltipRef.current.style.setProperty(SEEK_TOOLTIP_X, `${x}px`);\n tooltipRef.current.style.setProperty(SEEK_TOOLTIP_Y, `${y}px`);\n }\n\n if (!seekState.hasInitialPosition) {\n setSeekState((prev) => ({ ...prev, hasInitialPosition: true }));\n }\n },\n [onCollisionDataUpdate, seekState.hasInitialPosition],\n );\n\n const onHoverProgressUpdate = React.useCallback(() => {\n if (!seekRef.current || seekableEnd <= 0) return;\n\n const hoverPercent = Math.min(\n 100,\n (hoverTimeRef.current / seekableEnd) * 100,\n );\n seekRef.current.style.setProperty(\n SEEK_HOVER_PERCENT,\n `${hoverPercent.toFixed(4)}%`,\n );\n }, [seekableEnd]);\n\n React.useEffect(() => {\n if (seekState.pendingSeekTime !== null) {\n const diff = Math.abs(mediaCurrentTime - seekState.pendingSeekTime);\n if (diff < 0.5) {\n setSeekState((prev) => ({ ...prev, pendingSeekTime: null }));\n }\n }\n }, [mediaCurrentTime, seekState.pendingSeekTime]);\n\n React.useEffect(() => {\n if (!seekState.isHovering || tooltipDisabled) return;\n\n function onScroll() {\n setSeekState((prev) => ({\n ...prev,\n isHovering: false,\n hasInitialPosition: false,\n }));\n dispatch({\n type: MediaActionTypes.MEDIA_PREVIEW_REQUEST,\n detail: undefined,\n });\n }\n\n document.addEventListener(\"scroll\", onScroll, { passive: true });\n return () => {\n document.removeEventListener(\"scroll\", onScroll);\n };\n }, [dispatch, seekState.isHovering, tooltipDisabled]);\n\n const bufferedProgress = React.useMemo(() => {\n if (mediaBuffered.length === 0 || seekableEnd <= 0) return 0;\n\n if (mediaEnded) return 1;\n\n const containingRange = mediaBuffered.find(\n ([start, end]) => start <= mediaCurrentTime && mediaCurrentTime <= end,\n );\n\n if (containingRange) {\n return Math.min(1, containingRange[1] / seekableEnd);\n }\n\n return Math.min(1, seekableStart / seekableEnd);\n }, [mediaBuffered, mediaCurrentTime, seekableEnd, mediaEnded, seekableStart]);\n\n const onPointerEnter = React.useCallback(() => {\n if (seekRef.current) {\n seekRectRef.current = seekRef.current.getBoundingClientRect();\n }\n\n collisionDataRef.current = null;\n pointerEnterTimeRef.current = Date.now();\n horizontalMovementRef.current = 0;\n verticalMovementRef.current = 0;\n\n if (seekableEnd > 0) {\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current);\n }\n\n if (!tooltipDisabled) {\n if (lastPointerXRef.current && seekRectRef.current) {\n const clientX = Math.max(\n seekRectRef.current.left,\n Math.min(lastPointerXRef.current, seekRectRef.current.right),\n );\n onTooltipPositionUpdate(clientX);\n }\n }\n }\n }, [seekableEnd, onTooltipPositionUpdate, tooltipDisabled]);\n\n const onPointerLeave = React.useCallback(() => {\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current);\n hoverTimeoutRef.current = null;\n }\n if (rafIdRef.current) {\n cancelAnimationFrame(rafIdRef.current);\n rafIdRef.current = null;\n }\n if (previewDebounceRef.current) {\n cancelAnimationFrame(previewDebounceRef.current);\n previewDebounceRef.current = null;\n }\n\n setSeekState((prev) => ({\n ...prev,\n isHovering: false,\n hasInitialPosition: false,\n }));\n\n justCommittedRef.current = false;\n seekRectRef.current = null;\n collisionDataRef.current = null;\n\n pointerEnterTimeRef.current = 0;\n horizontalMovementRef.current = 0;\n verticalMovementRef.current = 0;\n lastPointerXRef.current = 0;\n lastPointerYRef.current = 0;\n lastSeekCommitTimeRef.current = 0;\n\n if (!tooltipDisabled) {\n dispatch({\n type: MediaActionTypes.MEDIA_PREVIEW_REQUEST,\n detail: undefined,\n });\n }\n }, [dispatch, tooltipDisabled]);\n\n const onPointerMove = React.useCallback(\n (event: React.PointerEvent<HTMLDivElement>) => {\n if (seekableEnd <= 0) return;\n\n if (!seekRectRef.current && seekRef.current) {\n seekRectRef.current = seekRef.current.getBoundingClientRect();\n }\n\n if (!seekRectRef.current) return;\n\n const currentX = event.clientX;\n const currentY = event.clientY;\n\n if (lastPointerXRef.current !== 0 && lastPointerYRef.current !== 0) {\n const deltaX = Math.abs(currentX - lastPointerXRef.current);\n const deltaY = Math.abs(currentY - lastPointerYRef.current);\n\n horizontalMovementRef.current += deltaX;\n verticalMovementRef.current += deltaY;\n }\n\n lastPointerXRef.current = currentX;\n lastPointerYRef.current = currentY;\n\n if (rafIdRef.current) {\n cancelAnimationFrame(rafIdRef.current);\n }\n\n rafIdRef.current = requestAnimationFrame(() => {\n const wasJustCommitted = justCommittedRef.current;\n if (wasJustCommitted) {\n justCommittedRef.current = false;\n }\n\n const seekRect = seekRectRef.current;\n if (!seekRect) {\n rafIdRef.current = null;\n return;\n }\n\n const clientX = lastPointerXRef.current;\n const offsetXOnSeekBar = Math.max(\n 0,\n Math.min(clientX - seekRect.left, seekRect.width),\n );\n const relativeX = offsetXOnSeekBar / seekRect.width;\n const calculatedHoverTime = relativeX * seekableEnd;\n\n hoverTimeRef.current = calculatedHoverTime;\n\n onHoverProgressUpdate();\n\n const wasHovering = seekState.isHovering;\n const isCurrentlyHovering =\n clientX >= seekRect.left && clientX <= seekRect.right;\n\n const timeHovering = Date.now() - pointerEnterTimeRef.current;\n const totalMovement =\n horizontalMovementRef.current + verticalMovementRef.current;\n const horizontalRatio =\n totalMovement > 0 ? horizontalMovementRef.current / totalMovement : 0;\n\n const timeSinceSeekCommit = Date.now() - lastSeekCommitTimeRef.current;\n const isInSeekCooldown = timeSinceSeekCommit < 300;\n\n const shouldShowTooltip =\n !wasJustCommitted &&\n !isInSeekCooldown &&\n (timeHovering > 150 ||\n horizontalRatio > 0.6 ||\n (totalMovement < 10 && timeHovering > 50));\n\n if (\n !wasHovering &&\n isCurrentlyHovering &&\n shouldShowTooltip &&\n !tooltipDisabled\n ) {\n setSeekState((prev) => ({ ...prev, isHovering: true }));\n }\n\n if (!tooltipDisabled) {\n onPreviewUpdate(calculatedHoverTime);\n\n if (isCurrentlyHovering && (wasHovering || shouldShowTooltip)) {\n onTooltipPositionUpdate(clientX);\n }\n }\n\n rafIdRef.current = null;\n });\n },\n [\n onPreviewUpdate,\n onTooltipPositionUpdate,\n onHoverProgressUpdate,\n seekableEnd,\n seekState.isHovering,\n tooltipDisabled,\n ],\n );\n\n const onSeek = React.useCallback(\n (value: number[]) => {\n const time = value[0] ?? 0;\n\n setSeekState((prev) => ({ ...prev, pendingSeekTime: time }));\n\n if (!store.getState().dragging) {\n store.setState(\"dragging\", true);\n }\n\n if (seekThrottleRef.current) {\n cancelAnimationFrame(seekThrottleRef.current);\n }\n\n seekThrottleRef.current = requestAnimationFrame(() => {\n dispatch({\n type: MediaActionTypes.MEDIA_SEEK_REQUEST,\n detail: time,\n });\n seekThrottleRef.current = null;\n });\n },\n [dispatch, store.getState, store.setState],\n );\n\n const onSeekCommit = React.useCallback(\n (value: number[]) => {\n const time = value[0] ?? 0;\n\n if (seekThrottleRef.current) {\n cancelAnimationFrame(seekThrottleRef.current);\n seekThrottleRef.current = null;\n }\n\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current);\n hoverTimeoutRef.current = null;\n }\n if (rafIdRef.current) {\n cancelAnimationFrame(rafIdRef.current);\n rafIdRef.current = null;\n }\n if (previewDebounceRef.current) {\n cancelAnimationFrame(previewDebounceRef.current);\n previewDebounceRef.current = null;\n }\n\n setSeekState((prev) => ({\n ...prev,\n pendingSeekTime: time,\n isHovering: false,\n hasInitialPosition: false,\n }));\n\n justCommittedRef.current = true;\n collisionDataRef.current = null;\n lastSeekCommitTimeRef.current = Date.now();\n\n // Reset movement tracking after seek commit\n pointerEnterTimeRef.current = Date.now();\n horizontalMovementRef.current = 0;\n verticalMovementRef.current = 0;\n\n if (store.getState().dragging) {\n store.setState(\"dragging\", false);\n }\n\n dispatch({\n type: MediaActionTypes.MEDIA_SEEK_REQUEST,\n detail: time,\n });\n\n dispatch({\n type: MediaActionTypes.MEDIA_PREVIEW_REQUEST,\n detail: undefined,\n });\n },\n [dispatch, store.getState, store.setState],\n );\n\n React.useEffect(() => {\n return () => {\n if (seekThrottleRef.current) {\n cancelAnimationFrame(seekThrottleRef.current);\n }\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current);\n }\n if (rafIdRef.current) {\n cancelAnimationFrame(rafIdRef.current);\n }\n if (previewDebounceRef.current) {\n cancelAnimationFrame(previewDebounceRef.current);\n }\n };\n }, []);\n\n const currentChapterCue = getCurrentChapterCue(hoverTimeRef.current);\n const thumbnail = getThumbnail(hoverTimeRef.current);\n const hoverTime = getCachedTime(hoverTimeRef.current, seekableEnd);\n\n const chapterSeparators = React.useMemo(() => {\n if (withoutChapter || chapterCues.length <= 1 || seekableEnd <= 0) {\n return null;\n }\n\n return chapterCues.slice(1).map((chapterCue, index) => {\n const position = (chapterCue.startTime / seekableEnd) * 100;\n\n return (\n <div\n key={`chapter-${index}-${chapterCue.startTime}`}\n role=\"presentation\"\n aria-hidden=\"true\"\n data-slot=\"media-player-seek-chapter-separator\"\n className=\"absolute top-0 h-full bg-zinc-50 dark:bg-zinc-950\"\n style={{\n width: \".1563rem\",\n left: `${position}%`,\n transform: \"translateX(-50%)\",\n }}\n />\n );\n });\n }, [chapterCues, seekableEnd, withoutChapter]);\n\n const spriteStyle = React.useMemo<React.CSSProperties>(() => {\n if (!thumbnail?.coords || !thumbnail?.src) {\n return {};\n }\n\n const coordX = thumbnail.coords[0];\n const coordY = thumbnail.coords[1];\n\n const spriteWidth = Number.parseFloat(thumbnail.coords[2] ?? \"0\");\n const spriteHeight = Number.parseFloat(thumbnail.coords[3] ?? \"0\");\n\n const scaleX = spriteWidth > 0 ? SPRITE_CONTAINER_WIDTH / spriteWidth : 1;\n const scaleY =\n spriteHeight > 0 ? SPRITE_CONTAINER_HEIGHT / spriteHeight : 1;\n const scale = Math.min(scaleX, scaleY);\n\n return {\n width: `${spriteWidth}px`,\n height: `${spriteHeight}px`,\n backgroundImage: `url(${thumbnail.src})`,\n backgroundPosition: `-${coordX}px -${coordY}px`,\n backgroundRepeat: \"no-repeat\",\n transform: `scale(${scale})`,\n transformOrigin: \"top left\",\n };\n }, [thumbnail?.coords, thumbnail?.src]);\n\n const SeekSlider = (\n <div data-slot=\"media-player-seek-container\" className=\"relative w-full\">\n <SliderPrimitive.Root\n aria-controls={context.mediaId}\n aria-valuetext={`${currentTime} of ${duration}`}\n data-hovering={seekState.isHovering ? \"\" : undefined}\n data-slider=\"\"\n data-slot=\"media-player-seek\"\n disabled={isDisabled}\n {...seekProps}\n ref={seekRef}\n min={seekableStart}\n max={seekableEnd}\n step={0.01}\n className={cn(\n \"relative flex w-full touch-none select-none items-center data-disabled:pointer-events-none data-disabled:opacity-50\",\n className,\n )}\n value={[displayValue]}\n onValueChange={onSeek}\n onValueCommit={onSeekCommit}\n onPointerEnter={onPointerEnter}\n onPointerLeave={onPointerLeave}\n onPointerMove={onPointerMove}\n >\n <SliderPrimitive.Track className=\"relative h-1 w-full grow overflow-hidden rounded-full bg-primary/40\">\n <div\n data-slot=\"media-player-seek-buffered\"\n className=\"absolute h-full bg-primary/70 will-change-[width]\"\n style={{\n width: `${bufferedProgress * 100}%`,\n }}\n />\n <SliderPrimitive.Range className=\"absolute h-full bg-primary will-change-[width]\" />\n {seekState.isHovering && seekableEnd > 0 && (\n <div\n data-slot=\"media-player-seek-hover-range\"\n className=\"absolute h-full bg-primary/70 will-change-[width,opacity]\"\n style={{\n width: `var(${SEEK_HOVER_PERCENT}, 0%)`,\n transition: \"opacity 150ms ease-out\",\n }}\n />\n )}\n {chapterSeparators}\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"relative z-10 block size-2.5 shrink-0 rounded-full bg-primary shadow-sm ring-ring/50 transition-[color,box-shadow] will-change-transform hover:ring-4 focus-visible:outline-hidden focus-visible:ring-4 disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n {!withoutTooltip &&\n !context.withoutTooltip &&\n seekState.isHovering &&\n seekableEnd > 0 && (\n <MediaPlayerPortal>\n <div\n ref={tooltipRef}\n className=\"backface-hidden contain-[layout_style] pointer-events-none z-50 [transition:opacity_150ms_ease-in-out]\"\n style={{\n position: \"fixed\" as const,\n left: `var(${SEEK_TOOLTIP_X}, 0rem)`,\n top: `var(${SEEK_TOOLTIP_Y}, 0rem)`,\n transform: `translateX(-50%) translateY(calc(-100% - ${currentTooltipSideOffset}px))`,\n visibility: seekState.hasInitialPosition ? \"visible\" : \"hidden\",\n opacity: seekState.hasInitialPosition ? 1 : 0,\n }}\n >\n <div\n className={cn(\n \"flex flex-col items-center gap-1.5 rounded-md border bg-background text-foreground shadow-sm dark:bg-zinc-900\",\n thumbnail && \"min-h-10\",\n !thumbnail && currentChapterCue && \"px-3 py-1.5\",\n )}\n >\n {thumbnail?.src && (\n <div\n data-slot=\"media-player-seek-thumbnail\"\n className=\"overflow-hidden rounded-md rounded-b-none\"\n style={{\n width: `${SPRITE_CONTAINER_WIDTH}px`,\n height: `${SPRITE_CONTAINER_HEIGHT}px`,\n }}\n >\n {thumbnail.coords ? (\n <div style={spriteStyle} />\n ) : (\n // biome-ignore lint/performance/noImgElement: dynamic thumbnail URLs from media don't work well with Next.js Image optimization\n <img\n src={thumbnail.src}\n alt={`Preview at ${hoverTime}`}\n className=\"size-full object-cover\"\n />\n )}\n </div>\n )}\n {currentChapterCue && (\n <div\n data-slot=\"media-player-seek-chapter-title\"\n className=\"line-clamp-2 max-w-48 text-balance text-center text-xs\"\n >\n {currentChapterCue.text}\n </div>\n )}\n <div\n data-slot=\"media-player-seek-time\"\n className={cn(\n \"whitespace-nowrap text-center text-xs tabular-nums\",\n thumbnail && \"pb-1.5\",\n !(thumbnail || currentChapterCue) && \"px-2.5 py-1\",\n )}\n >\n {tooltipTimeVariant === \"progress\"\n ? `${hoverTime} / ${duration}`\n : hoverTime}\n </div>\n </div>\n </div>\n </MediaPlayerPortal>\n )}\n </div>\n );\n\n if (withTime) {\n return (\n <div className=\"flex w-full items-center gap-2\">\n <span className=\"text-sm tabular-nums\">{currentTime}</span>\n {SeekSlider}\n <span className=\"text-sm tabular-nums\">{remainingTime}</span>\n </div>\n );\n }\n\n return SeekSlider;\n}\n\ninterface MediaPlayerVolumeProps\n extends React.ComponentProps<typeof SliderPrimitive.Root> {\n asChild?: boolean;\n expandable?: boolean;\n}\n\nfunction MediaPlayerVolume(props: MediaPlayerVolumeProps) {\n const { expandable = false, className, disabled, ...volumeProps } = props;\n\n const context = useMediaPlayerContext(VOLUME_NAME);\n const store = useStoreContext(VOLUME_NAME);\n const dispatch = useMediaDispatch();\n const mediaVolume = useMediaSelector((state) => state.mediaVolume ?? 1);\n const mediaMuted = useMediaSelector((state) => state.mediaMuted ?? false);\n const mediaVolumeLevel = useMediaSelector(\n (state) => state.mediaVolumeLevel ?? \"high\",\n );\n\n const sliderId = React.useId();\n const volumeTriggerId = React.useId();\n\n const isDisabled = disabled || context.disabled;\n\n const onMute = React.useCallback(() => {\n dispatch({\n type: mediaMuted\n ? MediaActionTypes.MEDIA_UNMUTE_REQUEST\n : MediaActionTypes.MEDIA_MUTE_REQUEST,\n });\n }, [dispatch, mediaMuted]);\n\n const onVolumeChange = React.useCallback(\n (value: number[]) => {\n const volume = value[0] ?? 0;\n\n if (!store.getState().dragging) {\n store.setState(\"dragging\", true);\n }\n\n dispatch({\n type: MediaActionTypes.MEDIA_VOLUME_REQUEST,\n detail: volume,\n });\n },\n [dispatch, store.getState, store.setState],\n );\n\n const onVolumeCommit = React.useCallback(\n (value: number[]) => {\n const volume = value[0] ?? 0;\n\n if (store.getState().dragging) {\n store.setState(\"dragging\", false);\n }\n\n dispatch({\n type: MediaActionTypes.MEDIA_VOLUME_REQUEST,\n detail: volume,\n });\n },\n [dispatch, store],\n );\n\n const effectiveVolume = mediaMuted ? 0 : mediaVolume;\n\n return (\n <div\n data-disabled={isDisabled ? \"\" : undefined}\n data-slot=\"media-player-volume-container\"\n className={cn(\n \"group flex items-center\",\n expandable\n ? \"gap-0 group-focus-within:gap-2 group-hover:gap-1.5\"\n : \"gap-1.5\",\n className,\n )}\n >\n <MediaPlayerTooltip tooltip=\"Volume\" shortcut=\"M\">\n <Button\n id={volumeTriggerId}\n type=\"button\"\n aria-controls={`${context.mediaId} ${sliderId}`}\n aria-label={mediaMuted ? \"Unmute\" : \"Mute\"}\n aria-pressed={mediaMuted}\n data-slot=\"media-player-volume-trigger\"\n data-state={mediaMuted ? \"on\" : \"off\"}\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-8\"\n disabled={isDisabled}\n onClick={onMute}\n >\n {mediaVolumeLevel === \"off\" || mediaMuted ? (\n <VolumeXIcon />\n ) : mediaVolumeLevel === \"high\" ? (\n <Volume2Icon />\n ) : (\n <Volume1Icon />\n )}\n </Button>\n </MediaPlayerTooltip>\n <SliderPrimitive.Root\n id={sliderId}\n aria-controls={context.mediaId}\n aria-valuetext={`${Math.round(effectiveVolume * 100)}% volume`}\n data-slider=\"\"\n data-slot=\"media-player-volume\"\n {...volumeProps}\n min={0}\n max={1}\n step={0.1}\n className={cn(\n \"relative flex touch-none select-none items-center\",\n expandable\n ? \"w-0 opacity-0 transition-[width,opacity] duration-200 ease-in-out group-focus-within:w-16 group-focus-within:opacity-100 group-hover:w-16 group-hover:opacity-100\"\n : \"w-16\",\n className,\n )}\n disabled={isDisabled}\n value={[effectiveVolume]}\n onValueChange={onVolumeChange}\n onValueCommit={onVolumeCommit}\n >\n <SliderPrimitive.Track className=\"relative h-1 w-full grow overflow-hidden rounded-full bg-zinc-500\">\n <SliderPrimitive.Range className=\"absolute h-full bg-primary will-change-[width]\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block size-2.5 shrink-0 rounded-full bg-primary shadow-sm ring-ring/50 transition-[color,box-shadow] will-change-transform hover:ring-4 focus-visible:outline-hidden focus-visible:ring-4 disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n </div>\n );\n}\n\ninterface MediaPlayerTimeProps extends React.ComponentProps<\"div\"> {\n variant?: \"progress\" | \"remaining\" | \"duration\";\n asChild?: boolean;\n}\n\nfunction MediaPlayerTime(props: MediaPlayerTimeProps) {\n const { variant = \"progress\", asChild, className, ...timeProps } = props;\n\n const context = useMediaPlayerContext(\"MediaPlayerTime\");\n const mediaCurrentTime = useMediaSelector(\n (state) => state.mediaCurrentTime ?? 0,\n );\n const [, seekableEnd = 0] = useMediaSelector(\n (state) => state.mediaSeekable ?? [0, 0],\n );\n\n const times = React.useMemo(() => {\n if (variant === \"remaining\") {\n return {\n remaining: timeUtils.formatTime(\n seekableEnd - mediaCurrentTime,\n seekableEnd,\n ),\n };\n }\n\n if (variant === \"duration\") {\n return {\n duration: timeUtils.formatTime(seekableEnd, seekableEnd),\n };\n }\n\n return {\n current: timeUtils.formatTime(mediaCurrentTime, seekableEnd),\n duration: timeUtils.formatTime(seekableEnd, seekableEnd),\n };\n }, [variant, mediaCurrentTime, seekableEnd]);\n\n const TimePrimitive = asChild ? Slot : \"div\";\n\n if (variant === \"remaining\" || variant === \"duration\") {\n return (\n <TimePrimitive\n data-slot=\"media-player-time\"\n data-variant={variant}\n dir={context.dir}\n {...timeProps}\n className={cn(\"text-foreground/80 text-sm tabular-nums\", className)}\n >\n {times[variant]}\n </TimePrimitive>\n );\n }\n\n return (\n <TimePrimitive\n data-slot=\"media-player-time\"\n data-variant={variant}\n dir={context.dir}\n {...timeProps}\n className={cn(\n \"flex items-center gap-1 text-foreground/80 text-sm\",\n className,\n )}\n >\n <span className=\"tabular-nums\">{times.current}</span>\n <span role=\"separator\" aria-hidden=\"true\" aria-valuenow={0} tabIndex={-1}>\n /\n </span>\n <span className=\"tabular-nums\">{times.duration}</span>\n </TimePrimitive>\n );\n}\n\ninterface MediaPlayerPlaybackSpeedProps\n extends React.ComponentProps<typeof DropdownMenuTrigger>,\n React.ComponentProps<typeof Button>,\n Omit<React.ComponentProps<typeof DropdownMenu>, \"dir\">,\n Pick<React.ComponentProps<typeof DropdownMenuContent>, \"sideOffset\"> {\n speeds?: number[];\n}\n\nfunction MediaPlayerPlaybackSpeed(props: MediaPlayerPlaybackSpeedProps) {\n const {\n open,\n defaultOpen,\n onOpenChange: onOpenChangeProp,\n sideOffset = FLOATING_MENU_SIDE_OFFSET,\n speeds = SPEEDS,\n modal = false,\n className,\n disabled,\n ...playbackSpeedProps\n } = props;\n\n const context = useMediaPlayerContext(PLAYBACK_SPEED_NAME);\n const store = useStoreContext(PLAYBACK_SPEED_NAME);\n const dispatch = useMediaDispatch();\n const mediaPlaybackRate = useMediaSelector(\n (state) => state.mediaPlaybackRate ?? 1,\n );\n\n const isDisabled = disabled || context.disabled;\n\n const onPlaybackRateChange = React.useCallback(\n (rate: number) => {\n dispatch({\n type: MediaActionTypes.MEDIA_PLAYBACK_RATE_REQUEST,\n detail: rate,\n });\n },\n [dispatch],\n );\n\n const onOpenChange = React.useCallback(\n (open: boolean) => {\n store.setState(\"menuOpen\", open);\n onOpenChangeProp?.(open);\n },\n [store.setState, onOpenChangeProp],\n );\n\n return (\n <DropdownMenu\n modal={modal}\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n >\n <MediaPlayerTooltip tooltip=\"Playback speed\" shortcut={[\"<\", \">\"]}>\n <DropdownMenuTrigger asChild>\n <Button\n type=\"button\"\n aria-controls={context.mediaId}\n disabled={isDisabled}\n {...playbackSpeedProps}\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"h-8 w-16 aria-expanded:bg-accent/50\", className)}\n >\n {mediaPlaybackRate}x\n </Button>\n </DropdownMenuTrigger>\n </MediaPlayerTooltip>\n <DropdownMenuContent\n sideOffset={sideOffset}\n align=\"center\"\n className=\"min-w-(--radix-dropdown-menu-trigger-width) data-[side=top]:mb-3.5\"\n >\n {speeds.map((speed) => (\n <DropdownMenuItem\n key={speed}\n className=\"justify-between\"\n onSelect={() => onPlaybackRateChange(speed)}\n >\n {speed}x{mediaPlaybackRate === speed && <CheckIcon />}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\ninterface MediaPlayerLoopProps extends React.ComponentProps<typeof Button> {}\n\nfunction MediaPlayerLoop(props: MediaPlayerLoopProps) {\n const { children, className, disabled, ...loopProps } = props;\n\n const context = useMediaPlayerContext(\"MediaPlayerLoop\");\n const isDisabled = disabled || context.disabled;\n\n const [isLooping, setIsLooping] = React.useState(() => {\n const mediaElement = context.mediaRef.current;\n return mediaElement?.loop ?? false;\n });\n\n React.useEffect(() => {\n const mediaElement = context.mediaRef.current;\n if (!mediaElement) return;\n\n setIsLooping(mediaElement.loop);\n\n const checkLoop = () => setIsLooping(mediaElement.loop);\n const observer = new MutationObserver(checkLoop);\n observer.observe(mediaElement, {\n attributes: true,\n attributeFilter: [\"loop\"],\n });\n\n return () => observer.disconnect();\n }, [context.mediaRef]);\n\n const onLoopToggle = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n props.onClick?.(event);\n if (event.defaultPrevented) return;\n\n const mediaElement = context.mediaRef.current;\n if (mediaElement) {\n const newLoopState = !mediaElement.loop;\n mediaElement.loop = newLoopState;\n setIsLooping(newLoopState);\n }\n },\n [context.mediaRef, props.onClick],\n );\n\n return (\n <MediaPlayerTooltip\n tooltip={isLooping ? \"Disable loop\" : \"Enable loop\"}\n shortcut=\"R\"\n >\n <Button\n type=\"button\"\n aria-controls={context.mediaId}\n aria-label={isLooping ? \"Disable loop\" : \"Enable loop\"}\n aria-pressed={isLooping}\n data-disabled={isDisabled ? \"\" : undefined}\n data-slot=\"media-player-loop\"\n data-state={isLooping ? \"on\" : \"off\"}\n disabled={isDisabled}\n {...loopProps}\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"size-8\", className)}\n onClick={onLoopToggle}\n >\n {children ??\n (isLooping ? (\n <RepeatIcon className=\"text-muted-foreground\" />\n ) : (\n <RepeatIcon />\n ))}\n </Button>\n </MediaPlayerTooltip>\n );\n}\n\ninterface MediaPlayerFullscreenProps\n extends React.ComponentProps<typeof Button> {}\n\nfunction MediaPlayerFullscreen(props: MediaPlayerFullscreenProps) {\n const { children, className, disabled, ...fullscreenProps } = props;\n\n const context = useMediaPlayerContext(\"MediaPlayerFullscreen\");\n const dispatch = useMediaDispatch();\n const isFullscreen = useMediaSelector(\n (state) => state.mediaIsFullscreen ?? false,\n );\n\n const isDisabled = disabled || context.disabled;\n\n const onFullscreen = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n props.onClick?.(event);\n\n if (event.defaultPrevented) return;\n\n dispatch({\n type: isFullscreen\n ? MediaActionTypes.MEDIA_EXIT_FULLSCREEN_REQUEST\n : MediaActionTypes.MEDIA_ENTER_FULLSCREEN_REQUEST,\n });\n },\n [dispatch, props.onClick, isFullscreen],\n );\n\n return (\n <MediaPlayerTooltip tooltip=\"Fullscreen\" shortcut=\"F\">\n <Button\n type=\"button\"\n aria-label={isFullscreen ? \"Exit fullscreen\" : \"Enter fullscreen\"}\n data-disabled={isDisabled ? \"\" : undefined}\n data-slot=\"media-player-fullscreen\"\n data-state={isFullscreen ? \"on\" : \"off\"}\n disabled={isDisabled}\n {...fullscreenProps}\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"size-8\", className)}\n onClick={onFullscreen}\n >\n {children ?? (isFullscreen ? <Minimize2Icon /> : <Maximize2Icon />)}\n </Button>\n </MediaPlayerTooltip>\n );\n}\n\ninterface MediaPlayerPiPProps\n extends Omit<React.ComponentProps<typeof Button>, \"children\"> {\n children?:\n | React.ReactNode\n | ((isPictureInPicture: boolean) => React.ReactNode);\n onPipError?: (error: unknown, state: \"enter\" | \"exit\") => void;\n}\n\nfunction MediaPlayerPiP(props: MediaPlayerPiPProps) {\n const { children, className, onPipError, disabled, ...pipButtonProps } =\n props;\n\n const context = useMediaPlayerContext(\"MediaPlayerPiP\");\n const dispatch = useMediaDispatch();\n const isPictureInPicture = useMediaSelector(\n (state) => state.mediaIsPip ?? false,\n );\n\n const isDisabled = disabled || context.disabled;\n\n const onPictureInPicture = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n props.onClick?.(event);\n\n if (event.defaultPrevented) return;\n\n dispatch({\n type: isPictureInPicture\n ? MediaActionTypes.MEDIA_EXIT_PIP_REQUEST\n : MediaActionTypes.MEDIA_ENTER_PIP_REQUEST,\n });\n\n const mediaElement = context.mediaRef.current;\n\n if (mediaElement instanceof HTMLVideoElement) {\n if (isPictureInPicture) {\n document.exitPictureInPicture().catch((error) => {\n onPipError?.(error, \"exit\");\n });\n } else {\n mediaElement.requestPictureInPicture().catch((error) => {\n onPipError?.(error, \"enter\");\n });\n }\n }\n },\n [dispatch, props.onClick, isPictureInPicture, onPipError, context.mediaRef],\n );\n\n return (\n <MediaPlayerTooltip tooltip=\"Picture in picture\" shortcut=\"P\">\n <Button\n type=\"button\"\n aria-controls={context.mediaId}\n aria-label={isPictureInPicture ? \"Exit pip\" : \"Enter pip\"}\n data-disabled={isDisabled ? \"\" : undefined}\n data-slot=\"media-player-pip\"\n data-state={isPictureInPicture ? \"on\" : \"off\"}\n disabled={isDisabled}\n {...pipButtonProps}\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"size-8\", className)}\n onClick={onPictureInPicture}\n >\n {typeof children === \"function\"\n ? children(isPictureInPicture)\n : (children ??\n (isPictureInPicture ? (\n <PictureInPicture2Icon />\n ) : (\n <PictureInPictureIcon />\n )))}\n </Button>\n </MediaPlayerTooltip>\n );\n}\n\nfunction MediaPlayerCaptions(props: React.ComponentProps<typeof Button>) {\n const { children, className, disabled, ...captionsProps } = props;\n\n const context = useMediaPlayerContext(\"MediaPlayerCaptions\");\n const dispatch = useMediaDispatch();\n const isSubtitlesActive = useMediaSelector(\n (state) => (state.mediaSubtitlesShowing ?? []).length > 0,\n );\n\n const isDisabled = disabled || context.disabled;\n const onCaptionsToggle = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n props.onClick?.(event);\n\n if (event.defaultPrevented) return;\n\n dispatch({\n type: MediaActionTypes.MEDIA_TOGGLE_SUBTITLES_REQUEST,\n });\n },\n [dispatch, props.onClick],\n );\n\n return (\n <MediaPlayerTooltip tooltip=\"Captions\" shortcut=\"C\">\n <Button\n type=\"button\"\n aria-controls={context.mediaId}\n aria-label={isSubtitlesActive ? \"Disable captions\" : \"Enable captions\"}\n aria-pressed={isSubtitlesActive}\n data-disabled={isDisabled ? \"\" : undefined}\n data-slot=\"media-player-captions\"\n data-state={isSubtitlesActive ? \"on\" : \"off\"}\n disabled={isDisabled}\n {...captionsProps}\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"size-8\", className)}\n onClick={onCaptionsToggle}\n >\n {children ??\n (isSubtitlesActive ? <SubtitlesIcon /> : <CaptionsOffIcon />)}\n </Button>\n </MediaPlayerTooltip>\n );\n}\n\nfunction MediaPlayerDownload(props: React.ComponentProps<typeof Button>) {\n const { children, className, disabled, ...downloadProps } = props;\n\n const context = useMediaPlayerContext(\"MediaPlayerDownload\");\n\n const isDisabled = disabled || context.disabled;\n\n const onDownload = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n props.onClick?.(event);\n\n if (event.defaultPrevented) return;\n\n const mediaElement = context.mediaRef.current;\n\n if (!mediaElement || !mediaElement.currentSrc) return;\n\n const link = document.createElement(\"a\");\n link.href = mediaElement.currentSrc;\n link.download = \"\";\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n },\n [context.mediaRef, props.onClick],\n );\n\n return (\n <MediaPlayerTooltip tooltip=\"Download\" shortcut=\"D\">\n <Button\n type=\"button\"\n aria-controls={context.mediaId}\n aria-label=\"Download\"\n data-disabled={isDisabled ? \"\" : undefined}\n data-slot=\"media-player-download\"\n disabled={isDisabled}\n {...downloadProps}\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"size-8\", className)}\n onClick={onDownload}\n >\n {children ?? <DownloadIcon />}\n </Button>\n </MediaPlayerTooltip>\n );\n}\n\ninterface MediaPlayerSettingsProps extends MediaPlayerPlaybackSpeedProps {}\n\nfunction MediaPlayerSettings(props: MediaPlayerSettingsProps) {\n const {\n open,\n defaultOpen,\n onOpenChange: onOpenChangeProp,\n sideOffset = FLOATING_MENU_SIDE_OFFSET,\n speeds = SPEEDS,\n modal = false,\n className,\n disabled,\n ...settingsProps\n } = props;\n\n const context = useMediaPlayerContext(SETTINGS_NAME);\n const store = useStoreContext(SETTINGS_NAME);\n const dispatch = useMediaDispatch();\n\n const mediaPlaybackRate = useMediaSelector(\n (state) => state.mediaPlaybackRate ?? 1,\n );\n const mediaSubtitlesList = useMediaSelector(\n (state) => state.mediaSubtitlesList ?? [],\n );\n const mediaSubtitlesShowing = useMediaSelector(\n (state) => state.mediaSubtitlesShowing ?? [],\n );\n const mediaRenditionList = useMediaSelector(\n (state) => state.mediaRenditionList ?? [],\n );\n const selectedRenditionId = useMediaSelector(\n (state) => state.mediaRenditionSelected,\n );\n\n const isDisabled = disabled || context.disabled;\n const isSubtitlesActive = mediaSubtitlesShowing.length > 0;\n\n const onPlaybackRateChange = React.useCallback(\n (rate: number) => {\n dispatch({\n type: MediaActionTypes.MEDIA_PLAYBACK_RATE_REQUEST,\n detail: rate,\n });\n },\n [dispatch],\n );\n\n const onRenditionChange = React.useCallback(\n (renditionId: string) => {\n dispatch({\n type: MediaActionTypes.MEDIA_RENDITION_REQUEST,\n detail: renditionId === \"auto\" ? undefined : renditionId,\n });\n },\n [dispatch],\n );\n\n const onSubtitlesToggle = React.useCallback(() => {\n dispatch({\n type: MediaActionTypes.MEDIA_TOGGLE_SUBTITLES_REQUEST,\n detail: false,\n });\n }, [dispatch]);\n\n const onShowSubtitleTrack = React.useCallback(\n (subtitleTrack: (typeof mediaSubtitlesList)[number]) => {\n dispatch({\n type: MediaActionTypes.MEDIA_TOGGLE_SUBTITLES_REQUEST,\n detail: false,\n });\n dispatch({\n type: MediaActionTypes.MEDIA_SHOW_SUBTITLES_REQUEST,\n detail: subtitleTrack,\n });\n },\n [dispatch],\n );\n\n const selectedSubtitleLabel = React.useMemo(() => {\n if (!isSubtitlesActive) return \"Off\";\n if (mediaSubtitlesShowing.length > 0) {\n return mediaSubtitlesShowing[0]?.label ?? \"On\";\n }\n return \"Off\";\n }, [isSubtitlesActive, mediaSubtitlesShowing]);\n\n const selectedRenditionLabel = React.useMemo(() => {\n if (!selectedRenditionId) return \"Auto\";\n\n const currentRendition = mediaRenditionList?.find(\n (rendition) => rendition.id === selectedRenditionId,\n );\n if (!currentRendition) return \"Auto\";\n\n if (currentRendition.height) return `${currentRendition.height}p`;\n if (currentRendition.width) return `${currentRendition.width}p`;\n return currentRendition.id ?? \"Auto\";\n }, [selectedRenditionId, mediaRenditionList]);\n\n const onOpenChange = React.useCallback(\n (open: boolean) => {\n store.setState(\"menuOpen\", open);\n onOpenChangeProp?.(open);\n },\n [store.setState, onOpenChangeProp],\n );\n\n return (\n <DropdownMenu\n modal={modal}\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n >\n <MediaPlayerTooltip tooltip=\"Settings\">\n <DropdownMenuTrigger asChild>\n <Button\n type=\"button\"\n aria-controls={context.mediaId}\n aria-label=\"Settings\"\n data-disabled={isDisabled ? \"\" : undefined}\n data-slot=\"media-player-settings\"\n disabled={isDisabled}\n {...settingsProps}\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"size-8 aria-expanded:bg-accent/50\", className)}\n >\n <SettingsIcon />\n </Button>\n </DropdownMenuTrigger>\n </MediaPlayerTooltip>\n <DropdownMenuContent\n align=\"end\"\n side=\"top\"\n sideOffset={sideOffset}\n className=\"w-56 data-[side=top]:mb-3.5\"\n >\n <DropdownMenuLabel className=\"sr-only\">Settings</DropdownMenuLabel>\n <DropdownMenuSub>\n <DropdownMenuSubTrigger>\n <span className=\"flex-1\">Speed</span>\n <Badge variant=\"outline\" className=\"rounded-sm\">\n {mediaPlaybackRate}x\n </Badge>\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent>\n {speeds.map((speed) => (\n <DropdownMenuItem\n key={speed}\n className=\"justify-between\"\n onSelect={() => onPlaybackRateChange(speed)}\n >\n {speed}x{mediaPlaybackRate === speed && <CheckIcon />}\n </DropdownMenuItem>\n ))}\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n {context.isVideo && mediaRenditionList.length > 0 && (\n <DropdownMenuSub>\n <DropdownMenuSubTrigger>\n <span className=\"flex-1\">Quality</span>\n <Badge variant=\"outline\" className=\"rounded-sm\">\n {selectedRenditionLabel}\n </Badge>\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent>\n <DropdownMenuItem\n className=\"justify-between\"\n onSelect={() => onRenditionChange(\"auto\")}\n >\n Auto\n {!selectedRenditionId && <CheckIcon />}\n </DropdownMenuItem>\n {mediaRenditionList\n .slice()\n .sort((a, b) => {\n const aHeight = a.height ?? 0;\n const bHeight = b.height ?? 0;\n return bHeight - aHeight;\n })\n .map((rendition) => {\n const label = rendition.height\n ? `${rendition.height}p`\n : rendition.width\n ? `${rendition.width}p`\n : (rendition.id ?? \"Unknown\");\n\n const selected = rendition.id === selectedRenditionId;\n\n return (\n <DropdownMenuItem\n key={rendition.id}\n className=\"justify-between\"\n onSelect={() => onRenditionChange(rendition.id ?? \"\")}\n >\n {label}\n {selected && <CheckIcon />}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n )}\n <DropdownMenuSub>\n <DropdownMenuSubTrigger>\n <span className=\"flex-1\">Captions</span>\n <Badge variant=\"outline\" className=\"rounded-sm\">\n {selectedSubtitleLabel}\n </Badge>\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent>\n <DropdownMenuItem\n className=\"justify-between\"\n onSelect={onSubtitlesToggle}\n >\n Off\n {!isSubtitlesActive && <CheckIcon />}\n </DropdownMenuItem>\n {mediaSubtitlesList.map((subtitleTrack) => {\n const isSelected = mediaSubtitlesShowing.some(\n (showingSubtitle) =>\n showingSubtitle.label === subtitleTrack.label,\n );\n return (\n <DropdownMenuItem\n key={`${subtitleTrack.kind}-${subtitleTrack.label}-${subtitleTrack.language}`}\n className=\"justify-between\"\n onSelect={() => onShowSubtitleTrack(subtitleTrack)}\n >\n {subtitleTrack.label}\n {isSelected && <CheckIcon />}\n </DropdownMenuItem>\n );\n })}\n {mediaSubtitlesList.length === 0 && (\n <DropdownMenuItem disabled>\n No captions available\n </DropdownMenuItem>\n )}\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\ninterface MediaPlayerPortalProps {\n container?: Element | DocumentFragment | null;\n children?: React.ReactNode;\n}\n\nfunction MediaPlayerPortal(props: MediaPlayerPortalProps) {\n const { container: containerProp, children } = props;\n\n const context = useMediaPlayerContext(\"MediaPlayerPortal\");\n const container = containerProp ?? context.portalContainer;\n\n if (!container) return null;\n\n return ReactDOM.createPortal(children, container);\n}\n\ninterface MediaPlayerTooltipProps\n extends React.ComponentProps<typeof Tooltip>,\n Pick<React.ComponentProps<typeof TooltipContent>, \"sideOffset\"> {\n tooltip?: string;\n shortcut?: string | string[];\n}\n\nfunction MediaPlayerTooltip(props: MediaPlayerTooltipProps) {\n const {\n tooltip,\n shortcut,\n delayDuration,\n sideOffset,\n children,\n ...tooltipProps\n } = props;\n\n const context = useMediaPlayerContext(\"MediaPlayerTooltip\");\n const tooltipDelayDuration = delayDuration ?? context.tooltipDelayDuration;\n const tooltipSideOffset = sideOffset ?? context.tooltipSideOffset;\n\n if ((!tooltip && !shortcut) || context.withoutTooltip) return <>{children}</>;\n\n return (\n <Tooltip {...tooltipProps} delayDuration={tooltipDelayDuration}>\n <TooltipTrigger\n className=\"text-foreground focus-visible:ring-ring/50\"\n asChild\n >\n {children}\n </TooltipTrigger>\n <TooltipContent\n sideOffset={tooltipSideOffset}\n className=\"flex items-center gap-2 border bg-accent px-2 py-1 font-medium text-foreground data-[side=top]:mb-3.5 dark:bg-zinc-900 [&>span]:hidden\"\n >\n <p>{tooltip}</p>\n {Array.isArray(shortcut) ? (\n <div className=\"flex items-center gap-1\">\n {shortcut.map((shortcutKey) => (\n <kbd\n key={shortcutKey}\n className=\"select-none rounded border bg-secondary px-1.5 py-0.5 font-mono text-[11.2px] text-foreground shadow-xs\"\n >\n <abbr title={shortcutKey} className=\"no-underline\">\n {shortcutKey}\n </abbr>\n </kbd>\n ))}\n </div>\n ) : (\n shortcut && (\n <kbd\n key={shortcut}\n className=\"select-none rounded border bg-secondary px-1.5 py-px font-mono text-[11.2px] text-foreground shadow-xs\"\n >\n <abbr title={shortcut} className=\"no-underline\">\n {shortcut}\n </abbr>\n </kbd>\n )\n )}\n </TooltipContent>\n </Tooltip>\n );\n}\n\nexport {\n MediaPlayer,\n MediaPlayerVideo,\n MediaPlayerAudio,\n MediaPlayerControls,\n MediaPlayerControlsOverlay,\n MediaPlayerLoading,\n MediaPlayerError,\n MediaPlayerVolumeIndicator,\n MediaPlayerPlay,\n MediaPlayerSeekBackward,\n MediaPlayerSeekForward,\n MediaPlayerSeek,\n MediaPlayerVolume,\n MediaPlayerTime,\n MediaPlayerPlaybackSpeed,\n MediaPlayerLoop,\n MediaPlayerFullscreen,\n MediaPlayerPiP,\n MediaPlayerCaptions,\n MediaPlayerDownload,\n MediaPlayerSettings,\n MediaPlayerPortal,\n MediaPlayerTooltip,\n //\n useMediaSelector as useMediaPlayer,\n useStore as useMediaPlayerStore,\n //\n type MediaPlayerProps,\n};\n"]}
@@ -0,0 +1,11 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as MentionPrimitive from '@diceui/mention';
3
+ import * as React from 'react';
4
+
5
+ declare function Mention({ className, ...props }: React.ComponentProps<typeof MentionPrimitive.Root>): react_jsx_runtime.JSX.Element;
6
+ declare function MentionLabel({ className, ...props }: React.ComponentProps<typeof MentionPrimitive.Label>): react_jsx_runtime.JSX.Element;
7
+ declare function MentionInput({ className, ...props }: React.ComponentProps<typeof MentionPrimitive.Input>): react_jsx_runtime.JSX.Element;
8
+ declare function MentionContent({ className, children, ...props }: React.ComponentProps<typeof MentionPrimitive.Content>): react_jsx_runtime.JSX.Element;
9
+ declare function MentionItem({ className, children, ...props }: React.ComponentProps<typeof MentionPrimitive.Item>): react_jsx_runtime.JSX.Element;
10
+
11
+ export { Mention, MentionContent, MentionInput, MentionItem, MentionLabel };
@@ -0,0 +1,94 @@
1
+ import * as MentionPrimitive from '@diceui/mention';
2
+ import { clsx } from 'clsx';
3
+ import { twMerge } from 'tailwind-merge';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ // src/radix-vega/mention.tsx
7
+ function cn(...inputs) {
8
+ return twMerge(clsx(inputs));
9
+ }
10
+ function Mention({
11
+ className,
12
+ ...props
13
+ }) {
14
+ return /* @__PURE__ */ jsx(
15
+ MentionPrimitive.Root,
16
+ {
17
+ "data-slot": "mention",
18
+ className: cn(
19
+ "**:data-tag:rounded **:data-tag:bg-blue-200 **:data-tag:py-px **:data-tag:text-blue-950 dark:**:data-tag:bg-blue-800 dark:**:data-tag:text-blue-50",
20
+ className
21
+ ),
22
+ ...props
23
+ }
24
+ );
25
+ }
26
+ function MentionLabel({
27
+ className,
28
+ ...props
29
+ }) {
30
+ return /* @__PURE__ */ jsx(
31
+ MentionPrimitive.Label,
32
+ {
33
+ "data-slot": "mention-label",
34
+ className: cn("px-0.5 py-1.5 font-semibold text-sm", className),
35
+ ...props
36
+ }
37
+ );
38
+ }
39
+ function MentionInput({
40
+ className,
41
+ ...props
42
+ }) {
43
+ return /* @__PURE__ */ jsx(
44
+ MentionPrimitive.Input,
45
+ {
46
+ "data-slot": "mention-input",
47
+ className: cn(
48
+ "flex w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
49
+ className
50
+ ),
51
+ ...props
52
+ }
53
+ );
54
+ }
55
+ function MentionContent({
56
+ className,
57
+ children,
58
+ ...props
59
+ }) {
60
+ return /* @__PURE__ */ jsx(MentionPrimitive.Portal, { children: /* @__PURE__ */ jsx(
61
+ MentionPrimitive.Content,
62
+ {
63
+ "data-slot": "mention-content",
64
+ className: cn(
65
+ "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=closed]:animate-out data-[state=open]:animate-in",
66
+ className
67
+ ),
68
+ ...props,
69
+ children
70
+ }
71
+ ) });
72
+ }
73
+ function MentionItem({
74
+ className,
75
+ children,
76
+ ...props
77
+ }) {
78
+ return /* @__PURE__ */ jsx(
79
+ MentionPrimitive.Item,
80
+ {
81
+ "data-slot": "mention-item",
82
+ className: cn(
83
+ "relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-disabled:opacity-50",
84
+ className
85
+ ),
86
+ ...props,
87
+ children
88
+ }
89
+ );
90
+ }
91
+
92
+ export { Mention, MentionContent, MentionInput, MentionItem, MentionLabel };
93
+ //# sourceMappingURL=mention.js.map
94
+ //# sourceMappingURL=mention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/utils.ts","../../src/radix-vega/mention.tsx"],"names":[],"mappings":";;;;;;AASO,SAAS,MAAM,MAAA,EAA8B;AAClD,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACNA,SAAS,OAAA,CAAQ;AAAA,EACf,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAuD;AACrD,EAAA,uBACE,GAAA;AAAA,IAAkB,gBAAA,CAAA,IAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,SAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,oJAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,YAAA,CAAa;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwD;AACtD,EAAA,uBACE,GAAA;AAAA,IAAkB,gBAAA,CAAA,KAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,qCAAA,EAAuC,SAAS,CAAA;AAAA,MAC7D,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,YAAA,CAAa;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwD;AACtD,EAAA,uBACE,GAAA;AAAA,IAAkB,gBAAA,CAAA,KAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,mPAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0D;AACxD,EAAA,uBACE,GAAA,CAAkB,yBAAjB,EACC,QAAA,kBAAA,GAAA;AAAA,IAAkB,gBAAA,CAAA,OAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,4bAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;AAEA,SAAS,WAAA,CAAY;AAAA,EACnB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAuD;AACrD,EAAA,uBACE,GAAA;AAAA,IAAkB,gBAAA,CAAA,IAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,gPAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ","file":"mention.js","sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * Merges Tailwind class names, resolving any conflicts.\n *\n * @param inputs - An array of class names to merge.\n * @returns A string of merged and optimized class names.\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import * as MentionPrimitive from \"@diceui/mention\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Mention({\n className,\n ...props\n}: React.ComponentProps<typeof MentionPrimitive.Root>) {\n return (\n <MentionPrimitive.Root\n data-slot=\"mention\"\n className={cn(\n \"**:data-tag:rounded **:data-tag:bg-blue-200 **:data-tag:py-px **:data-tag:text-blue-950 dark:**:data-tag:bg-blue-800 dark:**:data-tag:text-blue-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction MentionLabel({\n className,\n ...props\n}: React.ComponentProps<typeof MentionPrimitive.Label>) {\n return (\n <MentionPrimitive.Label\n data-slot=\"mention-label\"\n className={cn(\"px-0.5 py-1.5 font-semibold text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction MentionInput({\n className,\n ...props\n}: React.ComponentProps<typeof MentionPrimitive.Input>) {\n return (\n <MentionPrimitive.Input\n data-slot=\"mention-input\"\n className={cn(\n \"flex w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction MentionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof MentionPrimitive.Content>) {\n return (\n <MentionPrimitive.Portal>\n <MentionPrimitive.Content\n data-slot=\"mention-content\"\n className={cn(\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=closed]:animate-out data-[state=open]:animate-in\",\n className,\n )}\n {...props}\n >\n {children}\n </MentionPrimitive.Content>\n </MentionPrimitive.Portal>\n );\n}\n\nfunction MentionItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof MentionPrimitive.Item>) {\n return (\n <MentionPrimitive.Item\n data-slot=\"mention-item\"\n className={cn(\n \"relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n {children}\n </MentionPrimitive.Item>\n );\n}\n\nexport { Mention, MentionContent, MentionInput, MentionItem, MentionLabel };\n"]}