@remotion/promo-pages 4.0.434 → 4.0.435

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 (284) hide show
  1. package/dist/Homepage.js +111 -28
  2. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/Homepage.js +111 -28
  3. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/design.js +1 -1
  4. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/experts/experts-data.js +69 -18
  5. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/experts.js +70 -19
  6. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/homepage/Pricing.js +1 -1
  7. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/prompts/PromptsGallery.js +1 -1
  8. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/prompts/PromptsShow.js +1 -1
  9. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/prompts/PromptsSubmit.js +1 -1
  10. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/template-modal-content.js +1 -1
  11. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/templates.js +3 -1
  12. package/dist/cn.d.ts +2 -0
  13. package/dist/cn.js +5 -0
  14. package/dist/components/3DEngine/ButtonDemo.d.ts +2 -0
  15. package/dist/components/3DEngine/ButtonDemo.js +43 -0
  16. package/dist/components/3DEngine/Faces.d.ts +5 -0
  17. package/dist/components/3DEngine/Faces.js +7 -0
  18. package/dist/components/3DEngine/Outer.d.ts +8 -0
  19. package/dist/components/3DEngine/Outer.js +56 -0
  20. package/dist/components/3DEngine/Switch.d.ts +4 -0
  21. package/dist/components/3DEngine/Switch.js +4 -0
  22. package/dist/components/3DEngine/get-child-node-from.d.ts +1 -0
  23. package/dist/components/3DEngine/get-child-node-from.js +14 -0
  24. package/dist/components/3DEngine/hover-transforms.d.ts +9 -0
  25. package/dist/components/3DEngine/hover-transforms.js +177 -0
  26. package/dist/components/BackButton.d.ts +6 -0
  27. package/dist/components/BackButton.js +9 -0
  28. package/dist/components/CommandCopyButton.d.ts +5 -0
  29. package/dist/components/CommandCopyButton.js +4 -0
  30. package/dist/components/Homepage.d.ts +6 -0
  31. package/dist/components/Homepage.js +20 -0
  32. package/dist/components/ManageTeamMembers.d.ts +2 -0
  33. package/dist/components/ManageTeamMembers.js +42 -0
  34. package/dist/components/Spinner.d.ts +3 -0
  35. package/dist/components/Spinner.js +4 -0
  36. package/dist/components/TeamPicture.d.ts +1 -0
  37. package/dist/components/TeamPicture.js +4 -0
  38. package/dist/components/design.d.ts +1 -0
  39. package/dist/components/design.js +33 -0
  40. package/dist/components/experts/ExpertsPage.d.ts +11 -0
  41. package/dist/components/experts/ExpertsPage.js +50 -0
  42. package/dist/components/experts/experts-data.d.ts +15 -0
  43. package/dist/components/experts/experts-data.js +263 -0
  44. package/dist/components/experts/experts-icons.d.ts +7 -0
  45. package/dist/components/experts/experts-icons.js +36 -0
  46. package/dist/components/experts.d.ts +3 -0
  47. package/dist/components/experts.js +2 -0
  48. package/dist/components/homepage/BackgroundAnimation.d.ts +2 -0
  49. package/dist/components/homepage/BackgroundAnimation.js +66 -0
  50. package/dist/components/homepage/ChooseTemplate.d.ts +2 -0
  51. package/dist/components/homepage/ChooseTemplate.js +25 -0
  52. package/dist/components/homepage/CommunityStats.d.ts +3 -0
  53. package/dist/components/homepage/CommunityStats.js +6 -0
  54. package/dist/components/homepage/CommunityStatsItems.d.ts +7 -0
  55. package/dist/components/homepage/CommunityStatsItems.js +58 -0
  56. package/dist/components/homepage/Demo/Card.d.ts +15 -0
  57. package/dist/components/homepage/Demo/Card.js +174 -0
  58. package/dist/components/homepage/Demo/Cards.d.ts +15 -0
  59. package/dist/components/homepage/Demo/Cards.js +57 -0
  60. package/dist/components/homepage/Demo/Comp.d.ts +38 -0
  61. package/dist/components/homepage/Demo/Comp.js +72 -0
  62. package/dist/components/homepage/Demo/CurrentCountry.d.ts +9 -0
  63. package/dist/components/homepage/Demo/CurrentCountry.js +48 -0
  64. package/dist/components/homepage/Demo/DemoError.d.ts +2 -0
  65. package/dist/components/homepage/Demo/DemoError.js +10 -0
  66. package/dist/components/homepage/Demo/DemoErrorIcon.d.ts +2 -0
  67. package/dist/components/homepage/Demo/DemoErrorIcon.js +16 -0
  68. package/dist/components/homepage/Demo/DemoRender.d.ts +33 -0
  69. package/dist/components/homepage/Demo/DemoRender.js +107 -0
  70. package/dist/components/homepage/Demo/DigitWheel.d.ts +9 -0
  71. package/dist/components/homepage/Demo/DigitWheel.js +94 -0
  72. package/dist/components/homepage/Demo/DisplayedEmoji.d.ts +5 -0
  73. package/dist/components/homepage/Demo/DisplayedEmoji.js +59 -0
  74. package/dist/components/homepage/Demo/DoneCheckmark.d.ts +2 -0
  75. package/dist/components/homepage/Demo/DoneCheckmark.js +20 -0
  76. package/dist/components/homepage/Demo/DownloadNudge.d.ts +2 -0
  77. package/dist/components/homepage/Demo/DownloadNudge.js +27 -0
  78. package/dist/components/homepage/Demo/DragAndDropNudge.d.ts +3 -0
  79. package/dist/components/homepage/Demo/DragAndDropNudge.js +26 -0
  80. package/dist/components/homepage/Demo/EmojiCard.d.ts +10 -0
  81. package/dist/components/homepage/Demo/EmojiCard.js +120 -0
  82. package/dist/components/homepage/Demo/Minus.d.ts +5 -0
  83. package/dist/components/homepage/Demo/Minus.js +11 -0
  84. package/dist/components/homepage/Demo/PlayPauseButton.d.ts +5 -0
  85. package/dist/components/homepage/Demo/PlayPauseButton.js +47 -0
  86. package/dist/components/homepage/Demo/PlayerControls.d.ts +8 -0
  87. package/dist/components/homepage/Demo/PlayerControls.js +15 -0
  88. package/dist/components/homepage/Demo/PlayerSeekBar.d.ts +11 -0
  89. package/dist/components/homepage/Demo/PlayerSeekBar.js +216 -0
  90. package/dist/components/homepage/Demo/PlayerVolume.d.ts +5 -0
  91. package/dist/components/homepage/Demo/PlayerVolume.js +53 -0
  92. package/dist/components/homepage/Demo/Progress.d.ts +4 -0
  93. package/dist/components/homepage/Demo/Progress.js +14 -0
  94. package/dist/components/homepage/Demo/Spinner.d.ts +5 -0
  95. package/dist/components/homepage/Demo/Spinner.js +37 -0
  96. package/dist/components/homepage/Demo/Switcher.d.ts +6 -0
  97. package/dist/components/homepage/Demo/Switcher.js +25 -0
  98. package/dist/components/homepage/Demo/Temperature.d.ts +6 -0
  99. package/dist/components/homepage/Demo/Temperature.js +21 -0
  100. package/dist/components/homepage/Demo/TemperatureNumber.d.ts +5 -0
  101. package/dist/components/homepage/Demo/TemperatureNumber.js +36 -0
  102. package/dist/components/homepage/Demo/ThemeNudge.d.ts +3 -0
  103. package/dist/components/homepage/Demo/ThemeNudge.js +35 -0
  104. package/dist/components/homepage/Demo/TimeDisplay.d.ts +6 -0
  105. package/dist/components/homepage/Demo/TimeDisplay.js +27 -0
  106. package/dist/components/homepage/Demo/TrendingRepos.d.ts +6 -0
  107. package/dist/components/homepage/Demo/TrendingRepos.js +65 -0
  108. package/dist/components/homepage/Demo/icons.d.ts +10 -0
  109. package/dist/components/homepage/Demo/icons.js +22 -0
  110. package/dist/components/homepage/Demo/index.d.ts +2 -0
  111. package/dist/components/homepage/Demo/index.js +95 -0
  112. package/dist/components/homepage/Demo/math.d.ts +10 -0
  113. package/dist/components/homepage/Demo/math.js +29 -0
  114. package/dist/components/homepage/Demo/types.d.ts +6 -0
  115. package/dist/components/homepage/Demo/types.js +0 -0
  116. package/dist/components/homepage/EditorStarterSection.d.ts +3 -0
  117. package/dist/components/homepage/EditorStarterSection.js +8 -0
  118. package/dist/components/homepage/EvaluateRemotion.d.ts +3 -0
  119. package/dist/components/homepage/EvaluateRemotion.js +21 -0
  120. package/dist/components/homepage/FreePricing.d.ts +4 -0
  121. package/dist/components/homepage/FreePricing.js +134 -0
  122. package/dist/components/homepage/GetStartedStrip.d.ts +2 -0
  123. package/dist/components/homepage/GetStartedStrip.js +14 -0
  124. package/dist/components/homepage/GitHubButton.d.ts +2 -0
  125. package/dist/components/homepage/GitHubButton.js +7 -0
  126. package/dist/components/homepage/IconForTemplate.d.ts +6 -0
  127. package/dist/components/homepage/IconForTemplate.js +101 -0
  128. package/dist/components/homepage/IfYouKnowReact.d.ts +3 -0
  129. package/dist/components/homepage/IfYouKnowReact.js +23 -0
  130. package/dist/components/homepage/InfoTooltip.d.ts +6 -0
  131. package/dist/components/homepage/InfoTooltip.js +6 -0
  132. package/dist/components/homepage/MoreTemplatesButton.d.ts +2 -0
  133. package/dist/components/homepage/MoreTemplatesButton.js +11 -0
  134. package/dist/components/homepage/MuxVideo.d.ts +7 -0
  135. package/dist/components/homepage/MuxVideo.js +45 -0
  136. package/dist/components/homepage/NewsletterButton.d.ts +2 -0
  137. package/dist/components/homepage/NewsletterButton.js +38 -0
  138. package/dist/components/homepage/ParameterizeAndEdit.d.ts +2 -0
  139. package/dist/components/homepage/ParameterizeAndEdit.js +22 -0
  140. package/dist/components/homepage/Pricing.d.ts +2 -0
  141. package/dist/components/homepage/Pricing.js +15 -0
  142. package/dist/components/homepage/PricingBulletPoint.d.ts +6 -0
  143. package/dist/components/homepage/PricingBulletPoint.js +19 -0
  144. package/dist/components/homepage/RealMp4Videos.d.ts +2 -0
  145. package/dist/components/homepage/RealMp4Videos.js +41 -0
  146. package/dist/components/homepage/Spacer.d.ts +2 -0
  147. package/dist/components/homepage/Spacer.js +4 -0
  148. package/dist/components/homepage/TemplateIcon.d.ts +5 -0
  149. package/dist/components/homepage/TemplateIcon.js +24 -0
  150. package/dist/components/homepage/TextInput.d.ts +7 -0
  151. package/dist/components/homepage/TextInput.js +34 -0
  152. package/dist/components/homepage/TrustedByBanner.d.ts +2 -0
  153. package/dist/components/homepage/TrustedByBanner.js +27 -0
  154. package/dist/components/homepage/VideoApps.d.ts +4 -0
  155. package/dist/components/homepage/VideoApps.js +72 -0
  156. package/dist/components/homepage/VideoAppsShowcase.d.ts +3 -0
  157. package/dist/components/homepage/VideoAppsShowcase.js +139 -0
  158. package/dist/components/homepage/VideoAppsTitle.d.ts +4 -0
  159. package/dist/components/homepage/VideoAppsTitle.js +4 -0
  160. package/dist/components/homepage/VideoPlayerWithControls.d.ts +20 -0
  161. package/dist/components/homepage/VideoPlayerWithControls.js +105 -0
  162. package/dist/components/homepage/WriteInReact.d.ts +2 -0
  163. package/dist/components/homepage/WriteInReact.js +10 -0
  164. package/dist/components/homepage/YouAreHere.d.ts +2 -0
  165. package/dist/components/homepage/YouAreHere.js +23 -0
  166. package/dist/components/homepage/layout/Button.d.ts +22 -0
  167. package/dist/components/homepage/layout/Button.js +30 -0
  168. package/dist/components/homepage/layout/colors.d.ts +13 -0
  169. package/dist/components/homepage/layout/colors.js +14 -0
  170. package/dist/components/homepage/layout/use-color-mode.d.ts +21 -0
  171. package/dist/components/homepage/layout/use-color-mode.js +22 -0
  172. package/dist/components/homepage/layout/use-el-size.d.ts +5 -0
  173. package/dist/components/homepage/layout/use-el-size.js +40 -0
  174. package/dist/components/homepage/layout/use-mobile-layout.d.ts +1 -0
  175. package/dist/components/homepage/layout/use-mobile-layout.js +6 -0
  176. package/dist/components/icons/blank.d.ts +3 -0
  177. package/dist/components/icons/blank.js +4 -0
  178. package/dist/components/icons/brain.d.ts +2 -0
  179. package/dist/components/icons/brain.js +4 -0
  180. package/dist/components/icons/clone.d.ts +2 -0
  181. package/dist/components/icons/clone.js +2 -0
  182. package/dist/components/icons/code-hike.d.ts +3 -0
  183. package/dist/components/icons/code-hike.js +4 -0
  184. package/dist/components/icons/cubes.d.ts +3 -0
  185. package/dist/components/icons/cubes.js +4 -0
  186. package/dist/components/icons/editor.d.ts +3 -0
  187. package/dist/components/icons/editor.js +4 -0
  188. package/dist/components/icons/js.d.ts +3 -0
  189. package/dist/components/icons/js.js +4 -0
  190. package/dist/components/icons/music.d.ts +2 -0
  191. package/dist/components/icons/music.js +4 -0
  192. package/dist/components/icons/next.d.ts +4 -0
  193. package/dist/components/icons/next.js +4 -0
  194. package/dist/components/icons/overlay.d.ts +3 -0
  195. package/dist/components/icons/overlay.js +4 -0
  196. package/dist/components/icons/prompt-to-video.d.ts +2 -0
  197. package/dist/components/icons/prompt-to-video.js +4 -0
  198. package/dist/components/icons/recorder.d.ts +3 -0
  199. package/dist/components/icons/recorder.js +4 -0
  200. package/dist/components/icons/remix.d.ts +3 -0
  201. package/dist/components/icons/remix.js +4 -0
  202. package/dist/components/icons/render-server.d.ts +3 -0
  203. package/dist/components/icons/render-server.js +4 -0
  204. package/dist/components/icons/skia.d.ts +3 -0
  205. package/dist/components/icons/skia.js +4 -0
  206. package/dist/components/icons/stargazer.d.ts +3 -0
  207. package/dist/components/icons/stargazer.js +4 -0
  208. package/dist/components/icons/still.d.ts +3 -0
  209. package/dist/components/icons/still.js +4 -0
  210. package/dist/components/icons/tailwind.d.ts +3 -0
  211. package/dist/components/icons/tailwind.js +4 -0
  212. package/dist/components/icons/tiktok.d.ts +3 -0
  213. package/dist/components/icons/tiktok.js +4 -0
  214. package/dist/components/icons/timeline.d.ts +3 -0
  215. package/dist/components/icons/timeline.js +4 -0
  216. package/dist/components/icons/ts.d.ts +3 -0
  217. package/dist/components/icons/ts.js +4 -0
  218. package/dist/components/icons/undo.d.ts +3 -0
  219. package/dist/components/icons/undo.js +2 -0
  220. package/dist/components/icons/vercel.d.ts +4 -0
  221. package/dist/components/icons/vercel.js +4 -0
  222. package/dist/components/icons/waveform.d.ts +3 -0
  223. package/dist/components/icons/waveform.js +4 -0
  224. package/dist/components/prompts/CardLikeButton.d.ts +5 -0
  225. package/dist/components/prompts/CardLikeButton.js +49 -0
  226. package/dist/components/prompts/ClipboardIcon.d.ts +5 -0
  227. package/dist/components/prompts/ClipboardIcon.js +4 -0
  228. package/dist/components/prompts/CopyPromptButton.d.ts +4 -0
  229. package/dist/components/prompts/CopyPromptButton.js +13 -0
  230. package/dist/components/prompts/LikeButton.d.ts +5 -0
  231. package/dist/components/prompts/LikeButton.js +49 -0
  232. package/dist/components/prompts/MuxPlayer.d.ts +8 -0
  233. package/dist/components/prompts/MuxPlayer.js +21 -0
  234. package/dist/components/prompts/NewBackButton.d.ts +5 -0
  235. package/dist/components/prompts/NewBackButton.js +8 -0
  236. package/dist/components/prompts/Page.d.ts +8 -0
  237. package/dist/components/prompts/Page.js +7 -0
  238. package/dist/components/prompts/PromptsGallery.d.ts +7 -0
  239. package/dist/components/prompts/PromptsGallery.js +60 -0
  240. package/dist/components/prompts/PromptsShow.d.ts +5 -0
  241. package/dist/components/prompts/PromptsShow.js +17 -0
  242. package/dist/components/prompts/PromptsSubmit.d.ts +2 -0
  243. package/dist/components/prompts/PromptsSubmit.js +173 -0
  244. package/dist/components/prompts/config.d.ts +1 -0
  245. package/dist/components/prompts/config.js +1 -0
  246. package/dist/components/prompts/prompt-helpers.d.ts +8 -0
  247. package/dist/components/prompts/prompt-helpers.js +76 -0
  248. package/dist/components/prompts/prompt-types.d.ts +14 -0
  249. package/dist/components/prompts/prompt-types.js +0 -0
  250. package/dist/components/prompts/use-heart-animation.d.ts +5 -0
  251. package/dist/components/prompts/use-heart-animation.js +29 -0
  252. package/dist/components/team/TeamCards.d.ts +6 -0
  253. package/dist/components/team/TeamCards.js +19 -0
  254. package/dist/components/team/TitleTeamCards.d.ts +2 -0
  255. package/dist/components/team/TitleTeamCards.js +6 -0
  256. package/dist/components/team.d.ts +3 -0
  257. package/dist/components/team.js +14 -0
  258. package/dist/components/template-modal-content.d.ts +5 -0
  259. package/dist/components/template-modal-content.js +73 -0
  260. package/dist/components/templates.d.ts +2 -0
  261. package/dist/components/templates.js +27 -0
  262. package/dist/design.js +1 -1
  263. package/dist/experts/experts-data.js +69 -18
  264. package/dist/experts.js +70 -19
  265. package/dist/helpers/mobile-layout.d.ts +1 -0
  266. package/dist/helpers/mobile-layout.js +6 -0
  267. package/dist/helpers/use-el-size.d.ts +5 -0
  268. package/dist/helpers/use-el-size.js +40 -0
  269. package/dist/homepage/Pricing.js +1 -1
  270. package/dist/main.d.ts +1 -0
  271. package/dist/main.js +6 -0
  272. package/dist/prompts/PromptsGallery.js +1 -1
  273. package/dist/prompts/PromptsShow.js +1 -1
  274. package/dist/prompts/PromptsSubmit.js +1 -1
  275. package/dist/prompts-show.d.ts +1 -0
  276. package/dist/prompts-show.js +20 -0
  277. package/dist/prompts-submit.d.ts +1 -0
  278. package/dist/prompts-submit.js +6 -0
  279. package/dist/prompts.d.ts +1 -0
  280. package/dist/prompts.js +6 -0
  281. package/dist/team.d.ts +1 -0
  282. package/dist/template-modal-content.js +1 -1
  283. package/dist/templates.js +3 -1
  284. package/package.json +13 -13
package/dist/Homepage.js CHANGED
@@ -547,29 +547,80 @@ var experts = [
547
547
  x: null,
548
548
  github: "sambowenhughes",
549
549
  linkedin: "in/sambowenhughes/",
550
- email: "sambowenhughes@icloud.com",
551
- videocall: "https://calendly.com/hello-reactvideoeditor/30min",
550
+ email: "sam@reactvideoeditor.com",
551
+ videocall: "https://calendly.com/reactvideoeditor/30min",
552
552
  since: new Date("2025-06-03").getTime(),
553
553
  description: /* @__PURE__ */ jsxs("div", {
554
554
  children: [
555
- "Full-stack engineer with 10+ years experience. I built",
556
- " ",
557
- /* @__PURE__ */ jsx("a", {
558
- target: "_blank",
559
- href: "https://reactvideoeditor.com?utm_source=remotion",
560
- children: "React Video Editor"
555
+ /* @__PURE__ */ jsxs("p", {
556
+ children: [
557
+ "Experienced engineer with 10+ years building advanced software products. Creator of",
558
+ " ",
559
+ /* @__PURE__ */ jsx("a", {
560
+ target: "_blank",
561
+ href: "https://reactvideoeditor.com",
562
+ children: "React Video Editor"
563
+ }),
564
+ "and",
565
+ " ",
566
+ /* @__PURE__ */ jsx("a", {
567
+ target: "_blank",
568
+ href: "https://clippkit.com",
569
+ children: "Clippkit"
570
+ }),
571
+ "."
572
+ ]
561
573
  }),
562
- " ",
563
- "and",
564
- " ",
565
- /* @__PURE__ */ jsx("a", {
566
- target: "_blank",
567
- href: "https://clippkit.com?utm_source=remotion",
568
- children: "Clippkit"
574
+ /* @__PURE__ */ jsxs("p", {
575
+ children: [
576
+ "I work with companies building products with",
577
+ " ",
578
+ /* @__PURE__ */ jsx("strong", {
579
+ children: "Remotion at their core"
580
+ }),
581
+ ". Custom video editors, automated video generation tools, and scalable rendering pipelines."
582
+ ]
569
583
  }),
570
- ".",
571
- /* @__PURE__ */ jsx("br", {}),
572
- "I can help with anything Remotion-related, or just be a reliable engineering partner if you need someone who moves fast and builds things right – SaaS, design, backend, whatever's needed."
584
+ /* @__PURE__ */ jsxs("ul", {
585
+ children: [
586
+ /* @__PURE__ */ jsxs("li", {
587
+ children: [
588
+ /* @__PURE__ */ jsx("strong", {
589
+ children: "Custom video editors"
590
+ }),
591
+ " built with Remotion"
592
+ ]
593
+ }),
594
+ /* @__PURE__ */ jsxs("li", {
595
+ children: [
596
+ /* @__PURE__ */ jsx("strong", {
597
+ children: "Automated video generation"
598
+ }),
599
+ " systems"
600
+ ]
601
+ }),
602
+ /* @__PURE__ */ jsxs("li", {
603
+ children: [
604
+ /* @__PURE__ */ jsx("strong", {
605
+ children: "Rendering infrastructure"
606
+ }),
607
+ " and media pipelines"
608
+ ]
609
+ }),
610
+ /* @__PURE__ */ jsx("li", {
611
+ children: /* @__PURE__ */ jsx("strong", {
612
+ children: "UI/UX and full-stack product development"
613
+ })
614
+ })
615
+ ]
616
+ }),
617
+ /* @__PURE__ */ jsxs("p", {
618
+ children: [
619
+ "If you",
620
+ "'",
621
+ "re building software around video, or just need a reliable engineering partner who moves fast and builds things right, feel free to reach out."
622
+ ]
623
+ })
573
624
  ]
574
625
  })
575
626
  },
@@ -952,7 +1003,7 @@ var useIsPlayer = () => {
952
1003
  function truthy(value) {
953
1004
  return Boolean(value);
954
1005
  }
955
- var VERSION = "4.0.434";
1006
+ var VERSION = "4.0.435";
956
1007
  var checkMultipleRemotionVersions = () => {
957
1008
  if (typeof globalThis === "undefined") {
958
1009
  return;
@@ -23181,7 +23232,7 @@ var GitHubStars = () => {
23181
23232
  width: "45px"
23182
23233
  }),
23183
23234
  /* @__PURE__ */ jsx50(StatItemContent, {
23184
- content: "38k",
23235
+ content: "39k",
23185
23236
  width: "80px",
23186
23237
  fontSize: "2.5rem",
23187
23238
  fontWeight: "bold"
@@ -26553,7 +26604,7 @@ var PlayerUI = ({
26553
26604
  throw new TypeError(`setVolume() got a number that is NaN. Volume must be between 0 and 1.`);
26554
26605
  }
26555
26606
  if (vol < 0 || vol > 1) {
26556
- throw new TypeError(`setVolume() got a number that is out of range. Must be between 0 and 1, got ${typeof vol}`);
26607
+ throw new TypeError(`setVolume() got a number that is out of range. Must be between 0 and 1, got ${vol}`);
26557
26608
  }
26558
26609
  setMediaVolume(vol);
26559
26610
  },
@@ -34721,7 +34772,7 @@ import {
34721
34772
  import { BufferTarget, StreamTarget } from "mediabunny";
34722
34773
 
34723
34774
  // ../core/dist/esm/version.mjs
34724
- var VERSION2 = "4.0.434";
34775
+ var VERSION2 = "4.0.435";
34725
34776
 
34726
34777
  // ../web-renderer/dist/esm/index.mjs
34727
34778
  import { AudioSample, VideoSample } from "mediabunny";
@@ -38406,6 +38457,7 @@ var createWebFsTarget = async () => {
38406
38457
  const close = () => writable.close();
38407
38458
  return { stream, getBlob, close };
38408
38459
  };
38460
+ var MAX_RECENT_FRAME_TIMINGS = 150;
38409
38461
  var internalRenderMediaOnWeb = async ({
38410
38462
  composition,
38411
38463
  inputProps,
@@ -38541,6 +38593,10 @@ var internalRenderMediaOnWeb = async ({
38541
38593
  }) : null, 0);
38542
38594
  const totalFrames = realFrameRange[1] - realFrameRange[0] + 1;
38543
38595
  const durationInSeconds = totalFrames / resolved.fps;
38596
+ const renderStart = Date.now();
38597
+ let doneIn = null;
38598
+ let renderEstimatedTime = 0;
38599
+ const recentFrameTimings = [];
38544
38600
  if (videoSampleSource) {
38545
38601
  outputWithCleanup.output.addVideoTrack(videoSampleSource.videoSampleSource, {
38546
38602
  maximumPacketCount: Math.ceil(totalFrames * 1.33)
@@ -38560,10 +38616,21 @@ var internalRenderMediaOnWeb = async ({
38560
38616
  if (signal?.aborted) {
38561
38617
  throw new Error("renderMediaOnWeb() was cancelled");
38562
38618
  }
38619
+ let timeOfLastFrame = Date.now();
38563
38620
  const progress = {
38564
38621
  renderedFrames: 0,
38565
38622
  encodedFrames: 0
38566
38623
  };
38624
+ const getProgressPayload = () => {
38625
+ const overallProgress = Math.round((70 * progress.renderedFrames + 30 * progress.encodedFrames) / totalFrames) / 100;
38626
+ return {
38627
+ renderedFrames: progress.renderedFrames,
38628
+ encodedFrames: progress.encodedFrames,
38629
+ doneIn,
38630
+ renderEstimatedTime,
38631
+ progress: overallProgress
38632
+ };
38633
+ };
38567
38634
  for (let frame = realFrameRange[0];frame <= realFrameRange[1]; frame++) {
38568
38635
  if (signal?.aborted) {
38569
38636
  throw new Error("renderMediaOnWeb() was cancelled");
@@ -38617,8 +38684,19 @@ var internalRenderMediaOnWeb = async ({
38617
38684
  });
38618
38685
  }
38619
38686
  }
38687
+ const now = Date.now();
38688
+ const timeToRenderInMilliseconds = now - timeOfLastFrame;
38689
+ timeOfLastFrame = now;
38620
38690
  progress.renderedFrames++;
38621
- throttledOnProgress?.({ ...progress });
38691
+ recentFrameTimings.push(timeToRenderInMilliseconds);
38692
+ if (recentFrameTimings.length > MAX_RECENT_FRAME_TIMINGS) {
38693
+ recentFrameTimings.shift();
38694
+ }
38695
+ const recentTimingsSum = recentFrameTimings.reduce((sum, time) => sum + time, 0);
38696
+ const newAverage = recentTimingsSum / recentFrameTimings.length;
38697
+ const remainingFrames = totalFrames - progress.renderedFrames;
38698
+ renderEstimatedTime = Math.round(remainingFrames * newAverage);
38699
+ throttledOnProgress?.(getProgressPayload());
38622
38700
  const audioCombineStart = performance.now();
38623
38701
  const assets = collectAssets.current.collectAssets();
38624
38702
  if (onArtifact) {
@@ -38645,12 +38723,15 @@ var internalRenderMediaOnWeb = async ({
38645
38723
  await Promise.all(encodingPromises);
38646
38724
  internalState.addAddSampleTime(performance.now() - addSampleStart);
38647
38725
  progress.encodedFrames++;
38648
- throttledOnProgress?.({ ...progress });
38726
+ if (progress.encodedFrames === totalFrames) {
38727
+ doneIn = Date.now() - renderStart;
38728
+ }
38729
+ throttledOnProgress?.(getProgressPayload());
38649
38730
  if (signal?.aborted) {
38650
38731
  throw new Error("renderMediaOnWeb() was cancelled");
38651
38732
  }
38652
38733
  }
38653
- onProgress?.({ ...progress });
38734
+ onProgress?.(getProgressPayload());
38654
38735
  videoSampleSource?.videoSampleSource.close();
38655
38736
  audioSampleSource?.audioSampleSource.close();
38656
38737
  await outputWithCleanup.output.finalize();
@@ -38977,10 +39058,10 @@ var RenderButton = ({ renderData, onError, playerRef }) => {
38977
39058
  muted: typeof AudioEncoder === "undefined",
38978
39059
  scale: 1,
38979
39060
  inputProps,
38980
- onProgress: ({ renderedFrames }) => {
39061
+ onProgress: ({ progress }) => {
38981
39062
  setState({
38982
39063
  type: "progress",
38983
- progress: renderedFrames / durationInFrames
39064
+ progress
38984
39065
  });
38985
39066
  }
38986
39067
  });
@@ -41042,6 +41123,7 @@ var listOfRemotionPackages = [
41042
41123
  "@remotion/astro-example",
41043
41124
  "@remotion/babel-loader",
41044
41125
  "@remotion/bugs",
41126
+ "@remotion/brand",
41045
41127
  "@remotion/bundler",
41046
41128
  "@remotion/cli",
41047
41129
  "@remotion/cloudrun",
@@ -41120,6 +41202,7 @@ var listOfRemotionPackages = [
41120
41202
  "@remotion/web-renderer",
41121
41203
  "@remotion/design",
41122
41204
  "@remotion/light-leaks",
41205
+ "@remotion/starburst",
41123
41206
  "@remotion/vercel",
41124
41207
  "@remotion/sfx"
41125
41208
  ];
@@ -42334,7 +42417,7 @@ var GithubButton = () => {
42334
42417
  " ",
42335
42418
  /* @__PURE__ */ jsx161("div", {
42336
42419
  className: "text-xs inline-block ml-2 leading-none mt-[3px] self-center",
42337
- children: "38k"
42420
+ children: "39k"
42338
42421
  })
42339
42422
  ]
42340
42423
  });
@@ -547,29 +547,80 @@ var experts = [
547
547
  x: null,
548
548
  github: "sambowenhughes",
549
549
  linkedin: "in/sambowenhughes/",
550
- email: "sambowenhughes@icloud.com",
551
- videocall: "https://calendly.com/hello-reactvideoeditor/30min",
550
+ email: "sam@reactvideoeditor.com",
551
+ videocall: "https://calendly.com/reactvideoeditor/30min",
552
552
  since: new Date("2025-06-03").getTime(),
553
553
  description: /* @__PURE__ */ jsxs("div", {
554
554
  children: [
555
- "Full-stack engineer with 10+ years experience. I built",
556
- " ",
557
- /* @__PURE__ */ jsx("a", {
558
- target: "_blank",
559
- href: "https://reactvideoeditor.com?utm_source=remotion",
560
- children: "React Video Editor"
555
+ /* @__PURE__ */ jsxs("p", {
556
+ children: [
557
+ "Experienced engineer with 10+ years building advanced software products. Creator of",
558
+ " ",
559
+ /* @__PURE__ */ jsx("a", {
560
+ target: "_blank",
561
+ href: "https://reactvideoeditor.com",
562
+ children: "React Video Editor"
563
+ }),
564
+ "and",
565
+ " ",
566
+ /* @__PURE__ */ jsx("a", {
567
+ target: "_blank",
568
+ href: "https://clippkit.com",
569
+ children: "Clippkit"
570
+ }),
571
+ "."
572
+ ]
561
573
  }),
562
- " ",
563
- "and",
564
- " ",
565
- /* @__PURE__ */ jsx("a", {
566
- target: "_blank",
567
- href: "https://clippkit.com?utm_source=remotion",
568
- children: "Clippkit"
574
+ /* @__PURE__ */ jsxs("p", {
575
+ children: [
576
+ "I work with companies building products with",
577
+ " ",
578
+ /* @__PURE__ */ jsx("strong", {
579
+ children: "Remotion at their core"
580
+ }),
581
+ ". Custom video editors, automated video generation tools, and scalable rendering pipelines."
582
+ ]
569
583
  }),
570
- ".",
571
- /* @__PURE__ */ jsx("br", {}),
572
- "I can help with anything Remotion-related, or just be a reliable engineering partner if you need someone who moves fast and builds things right – SaaS, design, backend, whatever's needed."
584
+ /* @__PURE__ */ jsxs("ul", {
585
+ children: [
586
+ /* @__PURE__ */ jsxs("li", {
587
+ children: [
588
+ /* @__PURE__ */ jsx("strong", {
589
+ children: "Custom video editors"
590
+ }),
591
+ " built with Remotion"
592
+ ]
593
+ }),
594
+ /* @__PURE__ */ jsxs("li", {
595
+ children: [
596
+ /* @__PURE__ */ jsx("strong", {
597
+ children: "Automated video generation"
598
+ }),
599
+ " systems"
600
+ ]
601
+ }),
602
+ /* @__PURE__ */ jsxs("li", {
603
+ children: [
604
+ /* @__PURE__ */ jsx("strong", {
605
+ children: "Rendering infrastructure"
606
+ }),
607
+ " and media pipelines"
608
+ ]
609
+ }),
610
+ /* @__PURE__ */ jsx("li", {
611
+ children: /* @__PURE__ */ jsx("strong", {
612
+ children: "UI/UX and full-stack product development"
613
+ })
614
+ })
615
+ ]
616
+ }),
617
+ /* @__PURE__ */ jsxs("p", {
618
+ children: [
619
+ "If you",
620
+ "'",
621
+ "re building software around video, or just need a reliable engineering partner who moves fast and builds things right, feel free to reach out."
622
+ ]
623
+ })
573
624
  ]
574
625
  })
575
626
  },
@@ -952,7 +1003,7 @@ var useIsPlayer = () => {
952
1003
  function truthy(value) {
953
1004
  return Boolean(value);
954
1005
  }
955
- var VERSION = "4.0.434";
1006
+ var VERSION = "4.0.435";
956
1007
  var checkMultipleRemotionVersions = () => {
957
1008
  if (typeof globalThis === "undefined") {
958
1009
  return;
@@ -23181,7 +23232,7 @@ var GitHubStars = () => {
23181
23232
  width: "45px"
23182
23233
  }),
23183
23234
  /* @__PURE__ */ jsx50(StatItemContent, {
23184
- content: "38k",
23235
+ content: "39k",
23185
23236
  width: "80px",
23186
23237
  fontSize: "2.5rem",
23187
23238
  fontWeight: "bold"
@@ -26553,7 +26604,7 @@ var PlayerUI = ({
26553
26604
  throw new TypeError(`setVolume() got a number that is NaN. Volume must be between 0 and 1.`);
26554
26605
  }
26555
26606
  if (vol < 0 || vol > 1) {
26556
- throw new TypeError(`setVolume() got a number that is out of range. Must be between 0 and 1, got ${typeof vol}`);
26607
+ throw new TypeError(`setVolume() got a number that is out of range. Must be between 0 and 1, got ${vol}`);
26557
26608
  }
26558
26609
  setMediaVolume(vol);
26559
26610
  },
@@ -34721,7 +34772,7 @@ import {
34721
34772
  import { BufferTarget, StreamTarget } from "mediabunny";
34722
34773
 
34723
34774
  // ../core/dist/esm/version.mjs
34724
- var VERSION2 = "4.0.434";
34775
+ var VERSION2 = "4.0.435";
34725
34776
 
34726
34777
  // ../web-renderer/dist/esm/index.mjs
34727
34778
  import { AudioSample, VideoSample } from "mediabunny";
@@ -38406,6 +38457,7 @@ var createWebFsTarget = async () => {
38406
38457
  const close = () => writable.close();
38407
38458
  return { stream, getBlob, close };
38408
38459
  };
38460
+ var MAX_RECENT_FRAME_TIMINGS = 150;
38409
38461
  var internalRenderMediaOnWeb = async ({
38410
38462
  composition,
38411
38463
  inputProps,
@@ -38541,6 +38593,10 @@ var internalRenderMediaOnWeb = async ({
38541
38593
  }) : null, 0);
38542
38594
  const totalFrames = realFrameRange[1] - realFrameRange[0] + 1;
38543
38595
  const durationInSeconds = totalFrames / resolved.fps;
38596
+ const renderStart = Date.now();
38597
+ let doneIn = null;
38598
+ let renderEstimatedTime = 0;
38599
+ const recentFrameTimings = [];
38544
38600
  if (videoSampleSource) {
38545
38601
  outputWithCleanup.output.addVideoTrack(videoSampleSource.videoSampleSource, {
38546
38602
  maximumPacketCount: Math.ceil(totalFrames * 1.33)
@@ -38560,10 +38616,21 @@ var internalRenderMediaOnWeb = async ({
38560
38616
  if (signal?.aborted) {
38561
38617
  throw new Error("renderMediaOnWeb() was cancelled");
38562
38618
  }
38619
+ let timeOfLastFrame = Date.now();
38563
38620
  const progress = {
38564
38621
  renderedFrames: 0,
38565
38622
  encodedFrames: 0
38566
38623
  };
38624
+ const getProgressPayload = () => {
38625
+ const overallProgress = Math.round((70 * progress.renderedFrames + 30 * progress.encodedFrames) / totalFrames) / 100;
38626
+ return {
38627
+ renderedFrames: progress.renderedFrames,
38628
+ encodedFrames: progress.encodedFrames,
38629
+ doneIn,
38630
+ renderEstimatedTime,
38631
+ progress: overallProgress
38632
+ };
38633
+ };
38567
38634
  for (let frame = realFrameRange[0];frame <= realFrameRange[1]; frame++) {
38568
38635
  if (signal?.aborted) {
38569
38636
  throw new Error("renderMediaOnWeb() was cancelled");
@@ -38617,8 +38684,19 @@ var internalRenderMediaOnWeb = async ({
38617
38684
  });
38618
38685
  }
38619
38686
  }
38687
+ const now = Date.now();
38688
+ const timeToRenderInMilliseconds = now - timeOfLastFrame;
38689
+ timeOfLastFrame = now;
38620
38690
  progress.renderedFrames++;
38621
- throttledOnProgress?.({ ...progress });
38691
+ recentFrameTimings.push(timeToRenderInMilliseconds);
38692
+ if (recentFrameTimings.length > MAX_RECENT_FRAME_TIMINGS) {
38693
+ recentFrameTimings.shift();
38694
+ }
38695
+ const recentTimingsSum = recentFrameTimings.reduce((sum, time) => sum + time, 0);
38696
+ const newAverage = recentTimingsSum / recentFrameTimings.length;
38697
+ const remainingFrames = totalFrames - progress.renderedFrames;
38698
+ renderEstimatedTime = Math.round(remainingFrames * newAverage);
38699
+ throttledOnProgress?.(getProgressPayload());
38622
38700
  const audioCombineStart = performance.now();
38623
38701
  const assets = collectAssets.current.collectAssets();
38624
38702
  if (onArtifact) {
@@ -38645,12 +38723,15 @@ var internalRenderMediaOnWeb = async ({
38645
38723
  await Promise.all(encodingPromises);
38646
38724
  internalState.addAddSampleTime(performance.now() - addSampleStart);
38647
38725
  progress.encodedFrames++;
38648
- throttledOnProgress?.({ ...progress });
38726
+ if (progress.encodedFrames === totalFrames) {
38727
+ doneIn = Date.now() - renderStart;
38728
+ }
38729
+ throttledOnProgress?.(getProgressPayload());
38649
38730
  if (signal?.aborted) {
38650
38731
  throw new Error("renderMediaOnWeb() was cancelled");
38651
38732
  }
38652
38733
  }
38653
- onProgress?.({ ...progress });
38734
+ onProgress?.(getProgressPayload());
38654
38735
  videoSampleSource?.videoSampleSource.close();
38655
38736
  audioSampleSource?.audioSampleSource.close();
38656
38737
  await outputWithCleanup.output.finalize();
@@ -38977,10 +39058,10 @@ var RenderButton = ({ renderData, onError, playerRef }) => {
38977
39058
  muted: typeof AudioEncoder === "undefined",
38978
39059
  scale: 1,
38979
39060
  inputProps,
38980
- onProgress: ({ renderedFrames }) => {
39061
+ onProgress: ({ progress }) => {
38981
39062
  setState({
38982
39063
  type: "progress",
38983
- progress: renderedFrames / durationInFrames
39064
+ progress
38984
39065
  });
38985
39066
  }
38986
39067
  });
@@ -41042,6 +41123,7 @@ var listOfRemotionPackages = [
41042
41123
  "@remotion/astro-example",
41043
41124
  "@remotion/babel-loader",
41044
41125
  "@remotion/bugs",
41126
+ "@remotion/brand",
41045
41127
  "@remotion/bundler",
41046
41128
  "@remotion/cli",
41047
41129
  "@remotion/cloudrun",
@@ -41120,6 +41202,7 @@ var listOfRemotionPackages = [
41120
41202
  "@remotion/web-renderer",
41121
41203
  "@remotion/design",
41122
41204
  "@remotion/light-leaks",
41205
+ "@remotion/starburst",
41123
41206
  "@remotion/vercel",
41124
41207
  "@remotion/sfx"
41125
41208
  ];
@@ -42334,7 +42417,7 @@ var GithubButton = () => {
42334
42417
  " ",
42335
42418
  /* @__PURE__ */ jsx161("div", {
42336
42419
  className: "text-xs inline-block ml-2 leading-none mt-[3px] self-center",
42337
- children: "38k"
42420
+ children: "39k"
42338
42421
  })
42339
42422
  ]
42340
42423
  });
@@ -5977,7 +5977,7 @@ var useIsPlayer = () => {
5977
5977
  function truthy2(value) {
5978
5978
  return Boolean(value);
5979
5979
  }
5980
- var VERSION = "4.0.434";
5980
+ var VERSION = "4.0.435";
5981
5981
  var checkMultipleRemotionVersions = () => {
5982
5982
  if (typeof globalThis === "undefined") {
5983
5983
  return;
@@ -547,29 +547,80 @@ var experts = [
547
547
  x: null,
548
548
  github: "sambowenhughes",
549
549
  linkedin: "in/sambowenhughes/",
550
- email: "sambowenhughes@icloud.com",
551
- videocall: "https://calendly.com/hello-reactvideoeditor/30min",
550
+ email: "sam@reactvideoeditor.com",
551
+ videocall: "https://calendly.com/reactvideoeditor/30min",
552
552
  since: new Date("2025-06-03").getTime(),
553
553
  description: /* @__PURE__ */ jsxs("div", {
554
554
  children: [
555
- "Full-stack engineer with 10+ years experience. I built",
556
- " ",
557
- /* @__PURE__ */ jsx("a", {
558
- target: "_blank",
559
- href: "https://reactvideoeditor.com?utm_source=remotion",
560
- children: "React Video Editor"
555
+ /* @__PURE__ */ jsxs("p", {
556
+ children: [
557
+ "Experienced engineer with 10+ years building advanced software products. Creator of",
558
+ " ",
559
+ /* @__PURE__ */ jsx("a", {
560
+ target: "_blank",
561
+ href: "https://reactvideoeditor.com",
562
+ children: "React Video Editor"
563
+ }),
564
+ "and",
565
+ " ",
566
+ /* @__PURE__ */ jsx("a", {
567
+ target: "_blank",
568
+ href: "https://clippkit.com",
569
+ children: "Clippkit"
570
+ }),
571
+ "."
572
+ ]
561
573
  }),
562
- " ",
563
- "and",
564
- " ",
565
- /* @__PURE__ */ jsx("a", {
566
- target: "_blank",
567
- href: "https://clippkit.com?utm_source=remotion",
568
- children: "Clippkit"
574
+ /* @__PURE__ */ jsxs("p", {
575
+ children: [
576
+ "I work with companies building products with",
577
+ " ",
578
+ /* @__PURE__ */ jsx("strong", {
579
+ children: "Remotion at their core"
580
+ }),
581
+ ". Custom video editors, automated video generation tools, and scalable rendering pipelines."
582
+ ]
569
583
  }),
570
- ".",
571
- /* @__PURE__ */ jsx("br", {}),
572
- "I can help with anything Remotion-related, or just be a reliable engineering partner if you need someone who moves fast and builds things right – SaaS, design, backend, whatever's needed."
584
+ /* @__PURE__ */ jsxs("ul", {
585
+ children: [
586
+ /* @__PURE__ */ jsxs("li", {
587
+ children: [
588
+ /* @__PURE__ */ jsx("strong", {
589
+ children: "Custom video editors"
590
+ }),
591
+ " built with Remotion"
592
+ ]
593
+ }),
594
+ /* @__PURE__ */ jsxs("li", {
595
+ children: [
596
+ /* @__PURE__ */ jsx("strong", {
597
+ children: "Automated video generation"
598
+ }),
599
+ " systems"
600
+ ]
601
+ }),
602
+ /* @__PURE__ */ jsxs("li", {
603
+ children: [
604
+ /* @__PURE__ */ jsx("strong", {
605
+ children: "Rendering infrastructure"
606
+ }),
607
+ " and media pipelines"
608
+ ]
609
+ }),
610
+ /* @__PURE__ */ jsx("li", {
611
+ children: /* @__PURE__ */ jsx("strong", {
612
+ children: "UI/UX and full-stack product development"
613
+ })
614
+ })
615
+ ]
616
+ }),
617
+ /* @__PURE__ */ jsxs("p", {
618
+ children: [
619
+ "If you",
620
+ "'",
621
+ "re building software around video, or just need a reliable engineering partner who moves fast and builds things right, feel free to reach out."
622
+ ]
623
+ })
573
624
  ]
574
625
  })
575
626
  },