@remotion/promo-pages 4.0.435 → 4.0.437

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 (282) hide show
  1. package/dist/Homepage.js +305 -217
  2. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/Homepage.js +98 -52
  3. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/design.js +2 -2
  4. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/experts.js +2 -2
  5. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/homepage/Pricing.js +2 -2
  6. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/prompts/PromptsGallery.js +2 -2
  7. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/prompts/PromptsShow.js +2 -2
  8. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/prompts/PromptsSubmit.js +2 -2
  9. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/template-modal-content.js +2 -2
  10. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/templates.js +3 -3
  11. package/dist/design.js +2 -2
  12. package/dist/experts.js +2 -2
  13. package/dist/homepage/Pricing.js +2 -2
  14. package/dist/prompts/PromptsGallery.js +2 -2
  15. package/dist/prompts/PromptsShow.js +2 -2
  16. package/dist/prompts/PromptsSubmit.js +2 -2
  17. package/dist/template-modal-content.js +2 -2
  18. package/dist/templates.js +158 -116
  19. package/package.json +17 -17
  20. package/dist/cn.d.ts +0 -2
  21. package/dist/cn.js +0 -5
  22. package/dist/components/3DEngine/ButtonDemo.d.ts +0 -2
  23. package/dist/components/3DEngine/ButtonDemo.js +0 -43
  24. package/dist/components/3DEngine/Faces.d.ts +0 -5
  25. package/dist/components/3DEngine/Faces.js +0 -7
  26. package/dist/components/3DEngine/Outer.d.ts +0 -8
  27. package/dist/components/3DEngine/Outer.js +0 -56
  28. package/dist/components/3DEngine/Switch.d.ts +0 -4
  29. package/dist/components/3DEngine/Switch.js +0 -4
  30. package/dist/components/3DEngine/get-child-node-from.d.ts +0 -1
  31. package/dist/components/3DEngine/get-child-node-from.js +0 -14
  32. package/dist/components/3DEngine/hover-transforms.d.ts +0 -9
  33. package/dist/components/3DEngine/hover-transforms.js +0 -177
  34. package/dist/components/BackButton.d.ts +0 -6
  35. package/dist/components/BackButton.js +0 -9
  36. package/dist/components/CommandCopyButton.d.ts +0 -5
  37. package/dist/components/CommandCopyButton.js +0 -4
  38. package/dist/components/Homepage.d.ts +0 -6
  39. package/dist/components/Homepage.js +0 -20
  40. package/dist/components/ManageTeamMembers.d.ts +0 -2
  41. package/dist/components/ManageTeamMembers.js +0 -42
  42. package/dist/components/Spinner.d.ts +0 -3
  43. package/dist/components/Spinner.js +0 -4
  44. package/dist/components/TeamPicture.d.ts +0 -1
  45. package/dist/components/TeamPicture.js +0 -4
  46. package/dist/components/design.d.ts +0 -1
  47. package/dist/components/design.js +0 -33
  48. package/dist/components/experts/ExpertsPage.d.ts +0 -11
  49. package/dist/components/experts/ExpertsPage.js +0 -50
  50. package/dist/components/experts/experts-data.d.ts +0 -15
  51. package/dist/components/experts/experts-data.js +0 -263
  52. package/dist/components/experts/experts-icons.d.ts +0 -7
  53. package/dist/components/experts/experts-icons.js +0 -36
  54. package/dist/components/experts.d.ts +0 -3
  55. package/dist/components/experts.js +0 -2
  56. package/dist/components/homepage/BackgroundAnimation.d.ts +0 -2
  57. package/dist/components/homepage/BackgroundAnimation.js +0 -66
  58. package/dist/components/homepage/ChooseTemplate.d.ts +0 -2
  59. package/dist/components/homepage/ChooseTemplate.js +0 -25
  60. package/dist/components/homepage/CommunityStats.d.ts +0 -3
  61. package/dist/components/homepage/CommunityStats.js +0 -6
  62. package/dist/components/homepage/CommunityStatsItems.d.ts +0 -7
  63. package/dist/components/homepage/CommunityStatsItems.js +0 -58
  64. package/dist/components/homepage/Demo/Card.d.ts +0 -15
  65. package/dist/components/homepage/Demo/Card.js +0 -174
  66. package/dist/components/homepage/Demo/Cards.d.ts +0 -15
  67. package/dist/components/homepage/Demo/Cards.js +0 -57
  68. package/dist/components/homepage/Demo/Comp.d.ts +0 -38
  69. package/dist/components/homepage/Demo/Comp.js +0 -72
  70. package/dist/components/homepage/Demo/CurrentCountry.d.ts +0 -9
  71. package/dist/components/homepage/Demo/CurrentCountry.js +0 -48
  72. package/dist/components/homepage/Demo/DemoError.d.ts +0 -2
  73. package/dist/components/homepage/Demo/DemoError.js +0 -10
  74. package/dist/components/homepage/Demo/DemoErrorIcon.d.ts +0 -2
  75. package/dist/components/homepage/Demo/DemoErrorIcon.js +0 -16
  76. package/dist/components/homepage/Demo/DemoRender.d.ts +0 -33
  77. package/dist/components/homepage/Demo/DemoRender.js +0 -107
  78. package/dist/components/homepage/Demo/DigitWheel.d.ts +0 -9
  79. package/dist/components/homepage/Demo/DigitWheel.js +0 -94
  80. package/dist/components/homepage/Demo/DisplayedEmoji.d.ts +0 -5
  81. package/dist/components/homepage/Demo/DisplayedEmoji.js +0 -59
  82. package/dist/components/homepage/Demo/DoneCheckmark.d.ts +0 -2
  83. package/dist/components/homepage/Demo/DoneCheckmark.js +0 -20
  84. package/dist/components/homepage/Demo/DownloadNudge.d.ts +0 -2
  85. package/dist/components/homepage/Demo/DownloadNudge.js +0 -27
  86. package/dist/components/homepage/Demo/DragAndDropNudge.d.ts +0 -3
  87. package/dist/components/homepage/Demo/DragAndDropNudge.js +0 -26
  88. package/dist/components/homepage/Demo/EmojiCard.d.ts +0 -10
  89. package/dist/components/homepage/Demo/EmojiCard.js +0 -120
  90. package/dist/components/homepage/Demo/Minus.d.ts +0 -5
  91. package/dist/components/homepage/Demo/Minus.js +0 -11
  92. package/dist/components/homepage/Demo/PlayPauseButton.d.ts +0 -5
  93. package/dist/components/homepage/Demo/PlayPauseButton.js +0 -47
  94. package/dist/components/homepage/Demo/PlayerControls.d.ts +0 -8
  95. package/dist/components/homepage/Demo/PlayerControls.js +0 -15
  96. package/dist/components/homepage/Demo/PlayerSeekBar.d.ts +0 -11
  97. package/dist/components/homepage/Demo/PlayerSeekBar.js +0 -216
  98. package/dist/components/homepage/Demo/PlayerVolume.d.ts +0 -5
  99. package/dist/components/homepage/Demo/PlayerVolume.js +0 -53
  100. package/dist/components/homepage/Demo/Progress.d.ts +0 -4
  101. package/dist/components/homepage/Demo/Progress.js +0 -14
  102. package/dist/components/homepage/Demo/Spinner.d.ts +0 -5
  103. package/dist/components/homepage/Demo/Spinner.js +0 -37
  104. package/dist/components/homepage/Demo/Switcher.d.ts +0 -6
  105. package/dist/components/homepage/Demo/Switcher.js +0 -25
  106. package/dist/components/homepage/Demo/Temperature.d.ts +0 -6
  107. package/dist/components/homepage/Demo/Temperature.js +0 -21
  108. package/dist/components/homepage/Demo/TemperatureNumber.d.ts +0 -5
  109. package/dist/components/homepage/Demo/TemperatureNumber.js +0 -36
  110. package/dist/components/homepage/Demo/ThemeNudge.d.ts +0 -3
  111. package/dist/components/homepage/Demo/ThemeNudge.js +0 -35
  112. package/dist/components/homepage/Demo/TimeDisplay.d.ts +0 -6
  113. package/dist/components/homepage/Demo/TimeDisplay.js +0 -27
  114. package/dist/components/homepage/Demo/TrendingRepos.d.ts +0 -6
  115. package/dist/components/homepage/Demo/TrendingRepos.js +0 -65
  116. package/dist/components/homepage/Demo/icons.d.ts +0 -10
  117. package/dist/components/homepage/Demo/icons.js +0 -22
  118. package/dist/components/homepage/Demo/index.d.ts +0 -2
  119. package/dist/components/homepage/Demo/index.js +0 -95
  120. package/dist/components/homepage/Demo/math.d.ts +0 -10
  121. package/dist/components/homepage/Demo/math.js +0 -29
  122. package/dist/components/homepage/Demo/types.d.ts +0 -6
  123. package/dist/components/homepage/Demo/types.js +0 -0
  124. package/dist/components/homepage/EditorStarterSection.d.ts +0 -3
  125. package/dist/components/homepage/EditorStarterSection.js +0 -8
  126. package/dist/components/homepage/EvaluateRemotion.d.ts +0 -3
  127. package/dist/components/homepage/EvaluateRemotion.js +0 -21
  128. package/dist/components/homepage/FreePricing.d.ts +0 -4
  129. package/dist/components/homepage/FreePricing.js +0 -134
  130. package/dist/components/homepage/GetStartedStrip.d.ts +0 -2
  131. package/dist/components/homepage/GetStartedStrip.js +0 -14
  132. package/dist/components/homepage/GitHubButton.d.ts +0 -2
  133. package/dist/components/homepage/GitHubButton.js +0 -7
  134. package/dist/components/homepage/IconForTemplate.d.ts +0 -6
  135. package/dist/components/homepage/IconForTemplate.js +0 -101
  136. package/dist/components/homepage/IfYouKnowReact.d.ts +0 -3
  137. package/dist/components/homepage/IfYouKnowReact.js +0 -23
  138. package/dist/components/homepage/InfoTooltip.d.ts +0 -6
  139. package/dist/components/homepage/InfoTooltip.js +0 -6
  140. package/dist/components/homepage/MoreTemplatesButton.d.ts +0 -2
  141. package/dist/components/homepage/MoreTemplatesButton.js +0 -11
  142. package/dist/components/homepage/MuxVideo.d.ts +0 -7
  143. package/dist/components/homepage/MuxVideo.js +0 -45
  144. package/dist/components/homepage/NewsletterButton.d.ts +0 -2
  145. package/dist/components/homepage/NewsletterButton.js +0 -38
  146. package/dist/components/homepage/ParameterizeAndEdit.d.ts +0 -2
  147. package/dist/components/homepage/ParameterizeAndEdit.js +0 -22
  148. package/dist/components/homepage/Pricing.d.ts +0 -2
  149. package/dist/components/homepage/Pricing.js +0 -15
  150. package/dist/components/homepage/PricingBulletPoint.d.ts +0 -6
  151. package/dist/components/homepage/PricingBulletPoint.js +0 -19
  152. package/dist/components/homepage/RealMp4Videos.d.ts +0 -2
  153. package/dist/components/homepage/RealMp4Videos.js +0 -41
  154. package/dist/components/homepage/Spacer.d.ts +0 -2
  155. package/dist/components/homepage/Spacer.js +0 -4
  156. package/dist/components/homepage/TemplateIcon.d.ts +0 -5
  157. package/dist/components/homepage/TemplateIcon.js +0 -24
  158. package/dist/components/homepage/TextInput.d.ts +0 -7
  159. package/dist/components/homepage/TextInput.js +0 -34
  160. package/dist/components/homepage/TrustedByBanner.d.ts +0 -2
  161. package/dist/components/homepage/TrustedByBanner.js +0 -27
  162. package/dist/components/homepage/VideoApps.d.ts +0 -4
  163. package/dist/components/homepage/VideoApps.js +0 -72
  164. package/dist/components/homepage/VideoAppsShowcase.d.ts +0 -3
  165. package/dist/components/homepage/VideoAppsShowcase.js +0 -139
  166. package/dist/components/homepage/VideoAppsTitle.d.ts +0 -4
  167. package/dist/components/homepage/VideoAppsTitle.js +0 -4
  168. package/dist/components/homepage/VideoPlayerWithControls.d.ts +0 -20
  169. package/dist/components/homepage/VideoPlayerWithControls.js +0 -105
  170. package/dist/components/homepage/WriteInReact.d.ts +0 -2
  171. package/dist/components/homepage/WriteInReact.js +0 -10
  172. package/dist/components/homepage/YouAreHere.d.ts +0 -2
  173. package/dist/components/homepage/YouAreHere.js +0 -23
  174. package/dist/components/homepage/layout/Button.d.ts +0 -22
  175. package/dist/components/homepage/layout/Button.js +0 -30
  176. package/dist/components/homepage/layout/colors.d.ts +0 -13
  177. package/dist/components/homepage/layout/colors.js +0 -14
  178. package/dist/components/homepage/layout/use-color-mode.d.ts +0 -21
  179. package/dist/components/homepage/layout/use-color-mode.js +0 -22
  180. package/dist/components/homepage/layout/use-el-size.d.ts +0 -5
  181. package/dist/components/homepage/layout/use-el-size.js +0 -40
  182. package/dist/components/homepage/layout/use-mobile-layout.d.ts +0 -1
  183. package/dist/components/homepage/layout/use-mobile-layout.js +0 -6
  184. package/dist/components/icons/blank.d.ts +0 -3
  185. package/dist/components/icons/blank.js +0 -4
  186. package/dist/components/icons/brain.d.ts +0 -2
  187. package/dist/components/icons/brain.js +0 -4
  188. package/dist/components/icons/clone.d.ts +0 -2
  189. package/dist/components/icons/clone.js +0 -2
  190. package/dist/components/icons/code-hike.d.ts +0 -3
  191. package/dist/components/icons/code-hike.js +0 -4
  192. package/dist/components/icons/cubes.d.ts +0 -3
  193. package/dist/components/icons/cubes.js +0 -4
  194. package/dist/components/icons/editor.d.ts +0 -3
  195. package/dist/components/icons/editor.js +0 -4
  196. package/dist/components/icons/js.d.ts +0 -3
  197. package/dist/components/icons/js.js +0 -4
  198. package/dist/components/icons/music.d.ts +0 -2
  199. package/dist/components/icons/music.js +0 -4
  200. package/dist/components/icons/next.d.ts +0 -4
  201. package/dist/components/icons/next.js +0 -4
  202. package/dist/components/icons/overlay.d.ts +0 -3
  203. package/dist/components/icons/overlay.js +0 -4
  204. package/dist/components/icons/prompt-to-video.d.ts +0 -2
  205. package/dist/components/icons/prompt-to-video.js +0 -4
  206. package/dist/components/icons/recorder.d.ts +0 -3
  207. package/dist/components/icons/recorder.js +0 -4
  208. package/dist/components/icons/remix.d.ts +0 -3
  209. package/dist/components/icons/remix.js +0 -4
  210. package/dist/components/icons/render-server.d.ts +0 -3
  211. package/dist/components/icons/render-server.js +0 -4
  212. package/dist/components/icons/skia.d.ts +0 -3
  213. package/dist/components/icons/skia.js +0 -4
  214. package/dist/components/icons/stargazer.d.ts +0 -3
  215. package/dist/components/icons/stargazer.js +0 -4
  216. package/dist/components/icons/still.d.ts +0 -3
  217. package/dist/components/icons/still.js +0 -4
  218. package/dist/components/icons/tailwind.d.ts +0 -3
  219. package/dist/components/icons/tailwind.js +0 -4
  220. package/dist/components/icons/tiktok.d.ts +0 -3
  221. package/dist/components/icons/tiktok.js +0 -4
  222. package/dist/components/icons/timeline.d.ts +0 -3
  223. package/dist/components/icons/timeline.js +0 -4
  224. package/dist/components/icons/ts.d.ts +0 -3
  225. package/dist/components/icons/ts.js +0 -4
  226. package/dist/components/icons/undo.d.ts +0 -3
  227. package/dist/components/icons/undo.js +0 -2
  228. package/dist/components/icons/vercel.d.ts +0 -4
  229. package/dist/components/icons/vercel.js +0 -4
  230. package/dist/components/icons/waveform.d.ts +0 -3
  231. package/dist/components/icons/waveform.js +0 -4
  232. package/dist/components/prompts/CardLikeButton.d.ts +0 -5
  233. package/dist/components/prompts/CardLikeButton.js +0 -49
  234. package/dist/components/prompts/ClipboardIcon.d.ts +0 -5
  235. package/dist/components/prompts/ClipboardIcon.js +0 -4
  236. package/dist/components/prompts/CopyPromptButton.d.ts +0 -4
  237. package/dist/components/prompts/CopyPromptButton.js +0 -13
  238. package/dist/components/prompts/LikeButton.d.ts +0 -5
  239. package/dist/components/prompts/LikeButton.js +0 -49
  240. package/dist/components/prompts/MuxPlayer.d.ts +0 -8
  241. package/dist/components/prompts/MuxPlayer.js +0 -21
  242. package/dist/components/prompts/NewBackButton.d.ts +0 -5
  243. package/dist/components/prompts/NewBackButton.js +0 -8
  244. package/dist/components/prompts/Page.d.ts +0 -8
  245. package/dist/components/prompts/Page.js +0 -7
  246. package/dist/components/prompts/PromptsGallery.d.ts +0 -7
  247. package/dist/components/prompts/PromptsGallery.js +0 -60
  248. package/dist/components/prompts/PromptsShow.d.ts +0 -5
  249. package/dist/components/prompts/PromptsShow.js +0 -17
  250. package/dist/components/prompts/PromptsSubmit.d.ts +0 -2
  251. package/dist/components/prompts/PromptsSubmit.js +0 -173
  252. package/dist/components/prompts/config.d.ts +0 -1
  253. package/dist/components/prompts/config.js +0 -1
  254. package/dist/components/prompts/prompt-helpers.d.ts +0 -8
  255. package/dist/components/prompts/prompt-helpers.js +0 -76
  256. package/dist/components/prompts/prompt-types.d.ts +0 -14
  257. package/dist/components/prompts/prompt-types.js +0 -0
  258. package/dist/components/prompts/use-heart-animation.d.ts +0 -5
  259. package/dist/components/prompts/use-heart-animation.js +0 -29
  260. package/dist/components/team/TeamCards.d.ts +0 -6
  261. package/dist/components/team/TeamCards.js +0 -19
  262. package/dist/components/team/TitleTeamCards.d.ts +0 -2
  263. package/dist/components/team/TitleTeamCards.js +0 -6
  264. package/dist/components/team.d.ts +0 -3
  265. package/dist/components/team.js +0 -14
  266. package/dist/components/template-modal-content.d.ts +0 -5
  267. package/dist/components/template-modal-content.js +0 -73
  268. package/dist/components/templates.d.ts +0 -2
  269. package/dist/components/templates.js +0 -27
  270. package/dist/helpers/mobile-layout.d.ts +0 -1
  271. package/dist/helpers/mobile-layout.js +0 -6
  272. package/dist/helpers/use-el-size.d.ts +0 -5
  273. package/dist/helpers/use-el-size.js +0 -40
  274. package/dist/main.d.ts +0 -1
  275. package/dist/main.js +0 -6
  276. package/dist/prompts-show.d.ts +0 -1
  277. package/dist/prompts-show.js +0 -20
  278. package/dist/prompts-submit.d.ts +0 -1
  279. package/dist/prompts-submit.js +0 -6
  280. package/dist/prompts.d.ts +0 -1
  281. package/dist/prompts.js +0 -6
  282. package/dist/team.d.ts +0 -1
package/dist/Homepage.js CHANGED
@@ -1003,7 +1003,7 @@ var useIsPlayer = () => {
1003
1003
  function truthy(value) {
1004
1004
  return Boolean(value);
1005
1005
  }
1006
- var VERSION = "4.0.435";
1006
+ var VERSION = "4.0.437";
1007
1007
  var checkMultipleRemotionVersions = () => {
1008
1008
  if (typeof globalThis === "undefined") {
1009
1009
  return;
@@ -4081,7 +4081,7 @@ var useBasicMediaInTimeline = ({
4081
4081
  const videoConfig = useVideoConfig();
4082
4082
  const [initialVolume] = useState10(() => volume);
4083
4083
  const mediaDuration = calculateMediaDuration({
4084
- mediaDurationInFrames: videoConfig.durationInFrames,
4084
+ mediaDurationInFrames: videoConfig.durationInFrames + (trimBefore ?? 0),
4085
4085
  playbackRate,
4086
4086
  trimBefore,
4087
4087
  trimAfter
@@ -28459,7 +28459,12 @@ var setGlobalTimeAnchor = ({
28459
28459
  }
28460
28460
  audioSyncAnchor.value = newAnchor;
28461
28461
  };
28462
- var makeAudioIterator = (startFromSecond, maximumTimestamp, cache2, debugAudioScheduling) => {
28462
+ var makeAudioIterator = ({
28463
+ startFromSecond,
28464
+ maximumTimestamp,
28465
+ cache: cache2,
28466
+ debugAudioScheduling
28467
+ }) => {
28463
28468
  let destroyed = false;
28464
28469
  const iterator = cache2.makeIteratorOrUsePrewarmed(startFromSecond, maximumTimestamp);
28465
28470
  const queuedAudioNodes = [];
@@ -28469,15 +28474,15 @@ var makeAudioIterator = (startFromSecond, maximumTimestamp, cache2, debugAudioSc
28469
28474
  const cleanupAudioQueue = (audioContext) => {
28470
28475
  for (const node of queuedAudioNodes) {
28471
28476
  try {
28472
- const currentlyHearing = audioContext.getOutputTimestamp().contextTime;
28473
- const nodeEndTime = node.scheduledTime + node.buffer.duration / node.playbackRate;
28474
- const isAlreadyPlaying = node.scheduledTime - ALLOWED_GLOBAL_TIME_ANCHOR_SHIFT < audioContext.currentTime;
28475
- const shouldKeep = isAlreadyPlaying;
28476
- if (shouldKeep) {
28477
+ const isAlreadyPlaying = node.scheduledTime - ALLOWED_GLOBAL_TIME_ANCHOR_SHIFT < audioContext.audioContext.currentTime;
28478
+ const wasScheduledForThisAnchor = node.scheduledAtAnchor === audioContext.audioSyncAnchor.value;
28479
+ if (isAlreadyPlaying && wasScheduledForThisAnchor) {
28477
28480
  continue;
28478
28481
  }
28479
28482
  if (debugAudioScheduling) {
28480
- Internals.Log.info({ logLevel: "trace", tag: "audio-scheduling" }, `Stopping node ${node.timestamp.toFixed(3)}, currently hearing = ${currentlyHearing.toFixed(3)} currentTime = ${audioContext.currentTime.toFixed(3)} nodeEndTime = ${nodeEndTime.toFixed(3)} scheduledTime = ${node.scheduledTime.toFixed(3)}`);
28483
+ const currentlyHearing = audioContext.audioContext.getOutputTimestamp().contextTime;
28484
+ const nodeEndTime = node.scheduledTime + node.buffer.duration / node.playbackRate;
28485
+ Internals.Log.info({ logLevel: "trace", tag: "audio-scheduling" }, `Stopping node ${node.timestamp.toFixed(3)}, currently hearing = ${currentlyHearing.toFixed(3)} currentTime = ${audioContext.audioContext.currentTime.toFixed(3)} nodeEndTime = ${nodeEndTime.toFixed(3)} scheduledTime = ${node.scheduledTime.toFixed(3)}`);
28481
28486
  }
28482
28487
  node.node.stop();
28483
28488
  } catch {}
@@ -28638,14 +28643,16 @@ var makeAudioIterator = (startFromSecond, maximumTimestamp, cache2, debugAudioSc
28638
28643
  timestamp,
28639
28644
  buffer,
28640
28645
  scheduledTime,
28641
- playbackRate
28646
+ playbackRate,
28647
+ scheduledAtAnchor
28642
28648
  }) => {
28643
28649
  queuedAudioNodes.push({
28644
28650
  node,
28645
28651
  timestamp,
28646
28652
  buffer,
28647
28653
  scheduledTime,
28648
- playbackRate
28654
+ playbackRate,
28655
+ scheduledAtAnchor
28649
28656
  });
28650
28657
  },
28651
28658
  removeQueuedAudioNode: (node) => {
@@ -28884,8 +28891,8 @@ var audioIteratorManager = ({
28884
28891
  }) => {
28885
28892
  let muted = initialMuted;
28886
28893
  let currentVolume = 1;
28887
- const gainNode = sharedAudioContext.createGain();
28888
- gainNode.connect(sharedAudioContext.destination);
28894
+ const gainNode = sharedAudioContext.audioContext.createGain();
28895
+ gainNode.connect(sharedAudioContext.audioContext.destination);
28889
28896
  const audioSink = new AudioBufferSink(audioTrack);
28890
28897
  const prewarmedAudioIteratorCache = makePrewarmedAudioIteratorCache(audioSink);
28891
28898
  let audioBufferIterator = null;
@@ -28901,13 +28908,13 @@ var audioIteratorManager = ({
28901
28908
  if (!audioBufferIterator) {
28902
28909
  throw new Error("Audio buffer iterator not found");
28903
28910
  }
28904
- if (sharedAudioContext.state !== "running") {
28911
+ if (sharedAudioContext.audioContext.state !== "running") {
28905
28912
  throw new Error("Tried to schedule node while audio context is not running");
28906
28913
  }
28907
28914
  if (muted) {
28908
28915
  return;
28909
28916
  }
28910
- const node = sharedAudioContext.createBufferSource();
28917
+ const node = sharedAudioContext.audioContext.createBufferSource();
28911
28918
  node.buffer = buffer;
28912
28919
  node.playbackRate.value = playbackRate;
28913
28920
  node.connect(gainNode);
@@ -28925,7 +28932,8 @@ var audioIteratorManager = ({
28925
28932
  timestamp: mediaTimestamp,
28926
28933
  buffer,
28927
28934
  scheduledTime: started.scheduledTime,
28928
- playbackRate
28935
+ playbackRate,
28936
+ scheduledAtAnchor: sharedAudioContext.audioSyncAnchor.value
28929
28937
  });
28930
28938
  node.onended = () => {
28931
28939
  setTimeout(() => {
@@ -28972,7 +28980,7 @@ var audioIteratorManager = ({
28972
28980
  if (buffer.timestamp >= endTime) {
28973
28981
  return;
28974
28982
  }
28975
- if (getIsPlaying() && sharedAudioContext.state === "running" && (sharedAudioContext.getOutputTimestamp().contextTime ?? 0) > 0) {
28983
+ if (getIsPlaying() && sharedAudioContext.audioContext.state === "running" && (sharedAudioContext.audioContext.getOutputTimestamp().contextTime ?? 0) > 0) {
28976
28984
  resumeScheduledAudioChunks({
28977
28985
  playbackRate,
28978
28986
  scheduleAudioNode,
@@ -29012,7 +29020,12 @@ var audioIteratorManager = ({
29012
29020
  audioBufferIterator?.destroy(sharedAudioContext);
29013
29021
  const delayHandle = __using(__stack, delayPlaybackHandleIfNotPremounting(), 0);
29014
29022
  currentDelayHandle = delayHandle;
29015
- const iterator = makeAudioIterator(startFromSecond, getEndTime(), prewarmedAudioIteratorCache, debugAudioScheduling);
29023
+ const iterator = makeAudioIterator({
29024
+ startFromSecond,
29025
+ maximumTimestamp: getEndTime(),
29026
+ cache: prewarmedAudioIteratorCache,
29027
+ debugAudioScheduling
29028
+ });
29016
29029
  audioIteratorsCreated++;
29017
29030
  audioBufferIterator = iterator;
29018
29031
  try {
@@ -29096,7 +29109,7 @@ var audioIteratorManager = ({
29096
29109
  }
29097
29110
  const queuedPeriod = audioBufferIterator.getQueuedPeriod();
29098
29111
  const queuedPeriodMinusLatency = queuedPeriod ? {
29099
- from: queuedPeriod.from - ALLOWED_GLOBAL_TIME_ANCHOR_SHIFT - sharedAudioContext.baseLatency - sharedAudioContext.outputLatency,
29112
+ from: queuedPeriod.from - ALLOWED_GLOBAL_TIME_ANCHOR_SHIFT - sharedAudioContext.audioContext.baseLatency - sharedAudioContext.audioContext.outputLatency,
29100
29113
  until: queuedPeriod.until
29101
29114
  } : null;
29102
29115
  const currentTimeIsAlreadyQueued = isAlreadyQueued(newTime, queuedPeriodMinusLatency);
@@ -29521,7 +29534,8 @@ class MediaPlayer {
29521
29534
  durationInFrames,
29522
29535
  onVideoFrameCallback,
29523
29536
  playing,
29524
- sequenceOffset
29537
+ sequenceOffset,
29538
+ credentials
29525
29539
  }) {
29526
29540
  this.canvas = canvas ?? null;
29527
29541
  this.src = src;
@@ -29545,7 +29559,9 @@ class MediaPlayer {
29545
29559
  this.playing = playing;
29546
29560
  this.sequenceOffset = sequenceOffset;
29547
29561
  this.input = new Input2({
29548
- source: new UrlSource(this.src),
29562
+ source: new UrlSource(this.src, credentials ? {
29563
+ requestInit: { credentials }
29564
+ } : undefined),
29549
29565
  formats: ALL_FORMATS
29550
29566
  });
29551
29567
  if (canvas) {
@@ -29659,7 +29675,7 @@ class MediaPlayer {
29659
29675
  this.audioIteratorManager = audioIteratorManager({
29660
29676
  audioTrack,
29661
29677
  delayPlaybackHandleIfNotPremounting: this.delayPlaybackHandleIfNotPremounting,
29662
- sharedAudioContext: this.sharedAudioContext.audioContext,
29678
+ sharedAudioContext: this.sharedAudioContext,
29663
29679
  getIsLooping: () => this.loop,
29664
29680
  getEndTime: () => this.getEndTime(),
29665
29681
  getStartTime: () => this.getStartTime(),
@@ -30328,6 +30344,7 @@ var AudioForPreviewAssertedShowing = ({
30328
30344
  fallbackHtml5AudioProps,
30329
30345
  debugAudioScheduling,
30330
30346
  onError,
30347
+ credentials,
30331
30348
  controls
30332
30349
  }) => {
30333
30350
  const videoConfig = useUnsafeVideoConfig2();
@@ -30454,7 +30471,8 @@ var AudioForPreviewAssertedShowing = ({
30454
30471
  durationInFrames: videoConfig.durationInFrames,
30455
30472
  onVideoFrameCallback: null,
30456
30473
  playing: initialPlaying.current,
30457
- sequenceOffset: initialSequenceOffset.current
30474
+ sequenceOffset: initialSequenceOffset.current,
30475
+ credentials
30458
30476
  });
30459
30477
  mediaPlayerRef.current = player;
30460
30478
  player.initialize(currentTimeRef.current, initialMuted.current).then((result) => {
@@ -30546,7 +30564,8 @@ var AudioForPreviewAssertedShowing = ({
30546
30564
  debugAudioScheduling,
30547
30565
  buffer,
30548
30566
  onError,
30549
- videoConfig.durationInFrames
30567
+ videoConfig.durationInFrames,
30568
+ credentials
30550
30569
  ]);
30551
30570
  if (shouldFallbackToNativeAudio && !disallowFallbackToHtml5Audio) {
30552
30571
  return /* @__PURE__ */ jsx58(Audio, {
@@ -30589,6 +30608,7 @@ var AudioForPreview2 = ({
30589
30608
  fallbackHtml5AudioProps,
30590
30609
  debugAudioScheduling,
30591
30610
  onError,
30611
+ credentials,
30592
30612
  controls
30593
30613
  }) => {
30594
30614
  const preloadedSrc = usePreload2(src);
@@ -30638,6 +30658,7 @@ var AudioForPreview2 = ({
30638
30658
  toneFrequency,
30639
30659
  debugAudioScheduling: debugAudioScheduling ?? false,
30640
30660
  onError,
30661
+ credentials,
30641
30662
  fallbackHtml5AudioProps,
30642
30663
  controls
30643
30664
  });
@@ -31732,11 +31753,12 @@ var getFormatOrNullOrNetworkError = async (input) => {
31732
31753
  return null;
31733
31754
  }
31734
31755
  };
31735
- var getSinks = async (src) => {
31756
+ var getSinks = async (src, credentials) => {
31736
31757
  const input = new Input22({
31737
31758
  formats: ALL_FORMATS2,
31738
31759
  source: new UrlSource2(src, {
31739
- getRetryDelay
31760
+ getRetryDelay,
31761
+ ...credentials ? { requestInit: { credentials } } : undefined
31740
31762
  })
31741
31763
  });
31742
31764
  const format = await getFormatOrNullOrNetworkError(input);
@@ -31816,15 +31838,16 @@ var getSinks = async (src) => {
31816
31838
  };
31817
31839
  };
31818
31840
  var sinkPromises = {};
31819
- var getSink = (src, logLevel) => {
31820
- let promise = sinkPromises[src];
31841
+ var getSink = (src, logLevel, credentials) => {
31842
+ const cacheKey = credentials ? `${src}::${credentials}` : src;
31843
+ let promise = sinkPromises[cacheKey];
31821
31844
  if (!promise) {
31822
31845
  Internals.Log.verbose({
31823
31846
  logLevel,
31824
31847
  tag: "@remotion/media"
31825
31848
  }, `Sink for ${src} was not found, creating new sink`);
31826
- promise = getSinks(src);
31827
- sinkPromises[src] = promise;
31849
+ promise = getSinks(src, credentials);
31850
+ sinkPromises[cacheKey] = promise;
31828
31851
  }
31829
31852
  return promise;
31830
31853
  };
@@ -31839,9 +31862,10 @@ var extractAudioInternal = async ({
31839
31862
  trimBefore,
31840
31863
  trimAfter,
31841
31864
  fps,
31842
- maxCacheSize
31865
+ maxCacheSize,
31866
+ credentials
31843
31867
  }) => {
31844
- const { getAudio, actualMatroskaTimestamps, isMatroska, getDuration } = await getSink(src, logLevel);
31868
+ const { getAudio, actualMatroskaTimestamps, isMatroska, getDuration } = await getSink(src, logLevel, credentials);
31845
31869
  let mediaDurationInSeconds = null;
31846
31870
  if (loop) {
31847
31871
  mediaDurationInSeconds = await getDuration();
@@ -31964,9 +31988,10 @@ var extractFrameInternal = async ({
31964
31988
  trimBefore,
31965
31989
  playbackRate,
31966
31990
  fps,
31967
- maxCacheSize
31991
+ maxCacheSize,
31992
+ credentials
31968
31993
  }) => {
31969
- const sink = await getSink(src, logLevel);
31994
+ const sink = await getSink(src, logLevel, credentials);
31970
31995
  const [video, mediaDurationInSecondsRaw] = await Promise.all([
31971
31996
  sink.getVideo(),
31972
31997
  loop ? sink.getDuration() : Promise.resolve(null)
@@ -32088,7 +32113,8 @@ var extractFrameAndAudio = async ({
32088
32113
  trimAfter,
32089
32114
  trimBefore,
32090
32115
  fps,
32091
- maxCacheSize
32116
+ maxCacheSize,
32117
+ credentials
32092
32118
  }) => {
32093
32119
  try {
32094
32120
  const [video, audio] = await Promise.all([
@@ -32101,7 +32127,8 @@ var extractFrameAndAudio = async ({
32101
32127
  playbackRate,
32102
32128
  trimBefore,
32103
32129
  fps,
32104
- maxCacheSize
32130
+ maxCacheSize,
32131
+ credentials
32105
32132
  }) : null,
32106
32133
  includeAudio ? extractAudio({
32107
32134
  src,
@@ -32114,7 +32141,8 @@ var extractFrameAndAudio = async ({
32114
32141
  trimAfter,
32115
32142
  fps,
32116
32143
  trimBefore,
32117
- maxCacheSize
32144
+ maxCacheSize,
32145
+ credentials
32118
32146
  }) : null
32119
32147
  ]);
32120
32148
  if (video?.type === "cannot-decode") {
@@ -32195,7 +32223,8 @@ var addBroadcastChannelListener = () => {
32195
32223
  trimAfter: data.trimAfter,
32196
32224
  trimBefore: data.trimBefore,
32197
32225
  fps: data.fps,
32198
- maxCacheSize: data.maxCacheSize
32226
+ maxCacheSize: data.maxCacheSize,
32227
+ credentials: data.credentials
32199
32228
  });
32200
32229
  if (result.type === "cannot-decode") {
32201
32230
  const cannotDecodeResponse = {
@@ -32290,7 +32319,8 @@ var extractFrameViaBroadcastChannel = async ({
32290
32319
  trimAfter,
32291
32320
  trimBefore,
32292
32321
  fps,
32293
- maxCacheSize
32322
+ maxCacheSize,
32323
+ credentials
32294
32324
  }) => {
32295
32325
  if (isClientSideRendering || window.remotion_isMainTab) {
32296
32326
  return extractFrameAndAudio({
@@ -32306,7 +32336,8 @@ var extractFrameViaBroadcastChannel = async ({
32306
32336
  trimAfter,
32307
32337
  trimBefore,
32308
32338
  fps,
32309
- maxCacheSize
32339
+ maxCacheSize,
32340
+ credentials
32310
32341
  });
32311
32342
  }
32312
32343
  await waitForMainTabToBeReady(window.remotion_broadcastChannel);
@@ -32383,7 +32414,8 @@ var extractFrameViaBroadcastChannel = async ({
32383
32414
  trimAfter,
32384
32415
  trimBefore,
32385
32416
  fps,
32386
- maxCacheSize
32417
+ maxCacheSize,
32418
+ credentials
32387
32419
  };
32388
32420
  window.remotion_broadcastChannel.postMessage(request);
32389
32421
  let timeoutId;
@@ -32418,7 +32450,8 @@ var AudioForRendering2 = ({
32418
32450
  toneFrequency,
32419
32451
  trimAfter,
32420
32452
  trimBefore,
32421
- onError
32453
+ onError,
32454
+ credentials
32422
32455
  }) => {
32423
32456
  const defaultLogLevel = Internals.useLogLevel();
32424
32457
  const logLevel = overriddenLogLevel ?? defaultLogLevel;
@@ -32482,7 +32515,8 @@ var AudioForRendering2 = ({
32482
32515
  trimAfter,
32483
32516
  trimBefore,
32484
32517
  fps,
32485
- maxCacheSize
32518
+ maxCacheSize,
32519
+ credentials
32486
32520
  }).then((result) => {
32487
32521
  const handleError = (error2, clientSideError, fallbackMessage) => {
32488
32522
  const [action, errorToUse] = callOnErrorAndResolve({
@@ -32576,7 +32610,8 @@ var AudioForRendering2 = ({
32576
32610
  replaceWithHtml5Audio,
32577
32611
  maxCacheSize,
32578
32612
  audioEnabled,
32579
- onError
32613
+ onError,
32614
+ credentials
32580
32615
  ]);
32581
32616
  if (replaceWithHtml5Audio) {
32582
32617
  return /* @__PURE__ */ jsx216(Html5Audio, {
@@ -32676,6 +32711,7 @@ var VideoForPreviewAssertedShowing = ({
32676
32711
  debugAudioScheduling,
32677
32712
  headless,
32678
32713
  onError,
32714
+ credentials,
32679
32715
  controls
32680
32716
  }) => {
32681
32717
  const src = usePreload22(unpreloadedSrc);
@@ -32779,7 +32815,8 @@ var VideoForPreviewAssertedShowing = ({
32779
32815
  durationInFrames: videoConfig.durationInFrames,
32780
32816
  onVideoFrameCallback: initialOnVideoFrameRef.current ?? null,
32781
32817
  playing: initialPlaying.current,
32782
- sequenceOffset: initialSequenceOffset.current
32818
+ sequenceOffset: initialSequenceOffset.current,
32819
+ credentials
32783
32820
  });
32784
32821
  mediaPlayerRef.current = player;
32785
32822
  player.initialize(currentTimeRef.current, initialMuted.current).then((result) => {
@@ -32869,7 +32906,8 @@ var VideoForPreviewAssertedShowing = ({
32869
32906
  sharedAudioContext,
32870
32907
  videoConfig.fps,
32871
32908
  onError,
32872
- videoConfig.durationInFrames
32909
+ videoConfig.durationInFrames,
32910
+ credentials
32873
32911
  ]);
32874
32912
  const classNameValue = useMemo412(() => {
32875
32913
  return [Internals.OBJECTFIT_CONTAIN_CLASS_NAME, className2].filter(Internals.truthy).join(" ");
@@ -33001,7 +33039,8 @@ var VideoForRendering2 = ({
33001
33039
  trimAfterValue,
33002
33040
  trimBeforeValue,
33003
33041
  headless,
33004
- onError
33042
+ onError,
33043
+ credentials
33005
33044
  }) => {
33006
33045
  if (!src) {
33007
33046
  throw new TypeError("No `src` was passed to <Video>.");
@@ -33068,7 +33107,8 @@ var VideoForRendering2 = ({
33068
33107
  trimAfter: trimAfterValue,
33069
33108
  trimBefore: trimBeforeValue,
33070
33109
  fps,
33071
- maxCacheSize
33110
+ maxCacheSize,
33111
+ credentials
33072
33112
  }).then((result) => {
33073
33113
  const handleError = (err, clientSideError, fallbackMessage, mediaDurationInSeconds) => {
33074
33114
  if (environment.isClientSideRendering) {
@@ -33200,7 +33240,8 @@ var VideoForRendering2 = ({
33200
33240
  maxCacheSize,
33201
33241
  cancelRender3,
33202
33242
  headless,
33203
- onError
33243
+ onError,
33244
+ credentials
33204
33245
  ]);
33205
33246
  const classNameValue = useMemo53(() => {
33206
33247
  return [Internals.OBJECTFIT_CONTAIN_CLASS_NAME, className2].filter(Internals.truthy).join(" ");
@@ -33339,6 +33380,7 @@ var InnerVideo = ({
33339
33380
  debugAudioScheduling,
33340
33381
  headless,
33341
33382
  onError,
33383
+ credentials,
33342
33384
  controls
33343
33385
  }) => {
33344
33386
  const environment = useRemotionEnvironment();
@@ -33381,7 +33423,8 @@ var InnerVideo = ({
33381
33423
  trimAfterValue,
33382
33424
  trimBeforeValue,
33383
33425
  headless,
33384
- onError
33426
+ onError,
33427
+ credentials
33385
33428
  });
33386
33429
  }
33387
33430
  return /* @__PURE__ */ jsx65(VideoForPreview2, {
@@ -33407,6 +33450,7 @@ var InnerVideo = ({
33407
33450
  debugAudioScheduling: debugAudioScheduling ?? false,
33408
33451
  headless: headless ?? false,
33409
33452
  onError,
33453
+ credentials,
33410
33454
  controls
33411
33455
  });
33412
33456
  };
@@ -33436,6 +33480,7 @@ var VideoInner = ({
33436
33480
  debugAudioScheduling,
33437
33481
  headless,
33438
33482
  onError,
33483
+ credentials,
33439
33484
  controls
33440
33485
  }) => {
33441
33486
  const fallbackLogLevel = Internals.useLogLevel();
@@ -33465,6 +33510,7 @@ var VideoInner = ({
33465
33510
  debugAudioScheduling: debugAudioScheduling ?? false,
33466
33511
  headless: headless ?? false,
33467
33512
  onError,
33513
+ credentials,
33468
33514
  controls
33469
33515
  });
33470
33516
  };
@@ -34772,7 +34818,7 @@ import {
34772
34818
  import { BufferTarget, StreamTarget } from "mediabunny";
34773
34819
 
34774
34820
  // ../core/dist/esm/version.mjs
34775
- var VERSION2 = "4.0.435";
34821
+ var VERSION2 = "4.0.437";
34776
34822
 
34777
34823
  // ../web-renderer/dist/esm/index.mjs
34778
34824
  import { AudioSample, VideoSample } from "mediabunny";
@@ -41376,7 +41422,7 @@ var FEATURED_TEMPLATES = [
41376
41422
  shortName: "Prompt to Motion Graphics SaaS Starter Kit",
41377
41423
  org: "remotion-dev",
41378
41424
  repoName: "template-prompt-to-motion-graphics-saas",
41379
- description: "SaaS template for AI-powered code generation with Remotion",
41425
+ description: "SaaS template for AI-powered animation generation",
41380
41426
  longerDescription: 'A SaaS template for "Prompt to Motion Graphics" products. Generates Remotion code, streams it to the frontend, and compiles and previews it in the browser. See the <a href="/docs/ai/ai-saas-template">documentation page</a> for more details.',
41381
41427
  promoBanner: {
41382
41428
  width: 2880,
@@ -41440,6 +41486,29 @@ var FEATURED_TEMPLATES = [
41440
41486
  contributedBy: null,
41441
41487
  showStackblitz: true
41442
41488
  },
41489
+ {
41490
+ homePageLabel: "Electron",
41491
+ shortName: "Electron",
41492
+ org: "remotion-dev",
41493
+ repoName: "template-electron",
41494
+ description: "Render Remotion videos from a desktop app",
41495
+ longerDescription: "An Electron Forge + Vite starter template that renders Remotion videos from the Electron main process.",
41496
+ promoVideo: {
41497
+ muxId: "EvaWtUbbZ5zuYQ5EZFcZ501fg4JPtdVXXt9K02Rf62xcM",
41498
+ width: 1920,
41499
+ height: 1080
41500
+ },
41501
+ cliId: "electron",
41502
+ type: "video",
41503
+ defaultBranch: "main",
41504
+ featuredOnHomePage: null,
41505
+ previewURL: null,
41506
+ previewLabel: null,
41507
+ templateInMonorepo: "template-electron",
41508
+ allowEnableTailwind: false,
41509
+ contributedBy: null,
41510
+ showStackblitz: false
41511
+ },
41443
41512
  {
41444
41513
  homePageLabel: "React Router 7",
41445
41514
  shortName: "React Router",
@@ -41824,14 +41893,28 @@ var Cubes = (props) => {
41824
41893
  });
41825
41894
  };
41826
41895
 
41827
- // src/components/icons/js.tsx
41896
+ // src/components/icons/electron.tsx
41828
41897
  import { jsx as jsx136 } from "react/jsx-runtime";
41829
- var JSIcon = (props) => {
41898
+ var ElectronIcon = ({ style: style4 }) => {
41830
41899
  return /* @__PURE__ */ jsx136("svg", {
41900
+ viewBox: "0 0 640 640",
41901
+ style: style4,
41902
+ xmlns: "http://www.w3.org/2000/svg",
41903
+ children: /* @__PURE__ */ jsx136("path", {
41904
+ d: "M402 488.7C376.3 484 348.5 475.2 320 462.8C291.4 475.3 263.7 484.1 238 488.7C238.8 490.5 239.6 492.3 240.5 494.1C261.3 538 289.1 559.9 320 559.9C350.9 559.9 378.7 537.9 399.5 494.1C400.3 492.3 401.2 490.5 402 488.7zM320 576C277.2 576 243.6 543.3 221.6 491.2C168.9 497.3 126.6 484.4 106.4 448C85.7 410.9 97 365.2 130 320C97 274.8 85.7 229.1 106.4 192C126.6 155.7 168.9 142.7 221.6 148.8C243.6 96.7 277.3 64 320 64C362.7 64 396.4 96.7 418.4 148.8C471.1 142.7 513.4 155.6 533.6 192C554.3 229.1 543 274.8 510 320C543 365.2 554.3 410.9 533.6 448C513.4 484.3 471.1 497.3 418.4 491.2C396.4 543.3 362.7 576 320 576zM300.3 453.7C286.4 446.9 272.4 439.3 258.3 430.9C242.6 421.5 227.7 411.6 213.8 401.4C217.8 428 223.9 452.4 231.8 473.7C253.1 470.1 276.2 463.4 300.3 453.8zM408.2 473.6C416 452.4 422.1 428 426.2 401.3C412.3 411.6 397.4 421.5 381.7 430.8C367.7 439.2 353.6 446.8 339.7 453.6C363.8 463.2 386.9 469.9 408.2 473.5zM373.5 417.2C393.6 405.2 412.2 392.4 429.1 379.1C431.1 360.3 432.1 340.5 432.1 320.1C432.1 299.7 431.1 279.9 429.1 261.1C412.2 247.8 393.6 235 373.5 223C355.5 212.2 337.6 202.8 320.1 194.8C302.6 202.8 284.7 212.2 266.7 223C246.6 235 228 247.8 211.1 261.1C209.1 279.9 208.1 299.7 208.1 320.1C208.1 340.5 209.1 360.3 211.1 379.1C228 392.4 246.6 405.2 266.7 417.2C284.7 428 302.6 437.4 320.1 445.4C337.6 437.4 355.5 428 373.5 417.2zM424.5 475.8C425.4 475.9 426.3 476 427.2 476C473.5 479.9 504.8 467 519.7 440.2C534.8 413.1 529.6 377.9 503.1 337.9C502 336.3 501 334.7 499.8 333.1C484.5 351.6 465.8 369.9 444.2 387.3C440.4 419.8 433.7 449.7 424.5 475.6zM446.4 364.7C463.2 350.1 477.8 335 489.9 320C477.9 305 463.2 290 446.4 275.3C447.5 289.8 448.1 304.7 448.1 320C448.1 335.3 447.5 350.2 446.4 364.7zM503 302C529.6 262 534.7 226.8 519.6 199.7C504.7 172.9 473.3 160.1 427.1 164C426.2 164.1 425.3 164.2 424.4 164.2C433.6 190.2 440.3 220.1 444.1 252.5C465.7 270 484.4 288.2 499.7 306.7C500.8 305.1 501.9 303.5 503 301.9zM399.5 145.8C378.7 102 351 80 320 80C289 80 261.3 102 240.5 145.8C239.7 147.6 238.8 149.4 238 151.2C263.7 155.9 291.5 164.7 320 177.1C348.6 164.6 376.3 155.8 402 151.2C401.2 149.4 400.4 147.6 399.5 145.8zM408.1 166.4C386.8 170 363.7 176.7 339.6 186.3C353.5 193.1 367.5 200.7 381.6 209.1C397.3 218.5 412.2 228.4 426.1 238.6C422.1 212 416 187.6 408.1 166.3zM231.7 166.4C223.9 187.6 217.8 212 213.7 238.7C227.6 228.4 242.5 218.6 258.2 209.2C272.2 200.8 286.3 193.2 300.2 186.4C276.1 176.8 253 170.1 231.7 166.5zM215.5 164.2C214.6 164.1 213.7 164 212.8 164C166.5 160.1 135.2 173 120.3 199.7C105.2 226.8 110.4 262 136.9 302C138 303.6 139 305.2 140.2 306.8C155.5 288.3 174.2 270 195.8 252.6C199.6 220.1 206.3 190.2 215.5 164.3zM195.8 387.4C174.2 369.9 155.5 351.7 140.2 333.2C139.1 334.8 138 336.4 136.9 338C110.3 378 105.2 413.2 120.3 440.3C135.2 467.1 166.6 479.9 212.8 476.1C213.7 476 214.6 475.9 215.5 475.9C206.3 449.9 199.6 420 195.8 387.6zM193.7 275.3C176.9 289.9 162.3 305 150.2 320C162.2 335 176.9 350 193.7 364.7C192.6 350.2 192 335.3 192 320C192 304.7 192.6 289.8 193.7 275.3zM320 272C346.5 272 368 293.5 368 320C368 346.5 346.5 368 320 368C293.5 368 272 346.5 272 320C272 293.5 293.5 272 320 272zM352 320C352 302.3 337.7 288 320 288C302.3 288 288 302.3 288 320C288 337.7 302.3 352 320 352C337.7 352 352 337.7 352 320z",
41905
+ fill: "currentColor"
41906
+ })
41907
+ });
41908
+ };
41909
+
41910
+ // src/components/icons/js.tsx
41911
+ import { jsx as jsx137 } from "react/jsx-runtime";
41912
+ var JSIcon = (props) => {
41913
+ return /* @__PURE__ */ jsx137("svg", {
41831
41914
  className: "svg-inline--fa fa-js-square fa-w-14",
41832
41915
  viewBox: "0 0 448 512",
41833
41916
  ...props,
41834
- children: /* @__PURE__ */ jsx136("path", {
41917
+ children: /* @__PURE__ */ jsx137("path", {
41835
41918
  fill: "currentColor",
41836
41919
  d: "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM243.8 381.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z"
41837
41920
  })
@@ -41839,13 +41922,13 @@ var JSIcon = (props) => {
41839
41922
  };
41840
41923
 
41841
41924
  // src/components/icons/music.tsx
41842
- import { jsx as jsx137 } from "react/jsx-runtime";
41925
+ import { jsx as jsx138 } from "react/jsx-runtime";
41843
41926
  var MusicIcon = (props) => {
41844
- return /* @__PURE__ */ jsx137("svg", {
41927
+ return /* @__PURE__ */ jsx138("svg", {
41845
41928
  ...props,
41846
41929
  xmlns: "http://www.w3.org/2000/svg",
41847
41930
  viewBox: "0 0 512 512",
41848
- children: /* @__PURE__ */ jsx137("path", {
41931
+ children: /* @__PURE__ */ jsx138("path", {
41849
41932
  fill: "currentColor",
41850
41933
  d: "M499.1 6.3c8.1 6 12.9 15.6 12.9 25.7l0 72 0 264c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6L448 147 192 223.8 192 432c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6L128 200l0-72c0-14.1 9.3-26.6 22.8-30.7l320-96c9.7-2.9 20.2-1.1 28.3 5z"
41851
41934
  })
@@ -41853,7 +41936,7 @@ var MusicIcon = (props) => {
41853
41936
  };
41854
41937
 
41855
41938
  // src/components/icons/next.tsx
41856
- import { jsx as jsx138, jsxs as jsxs56 } from "react/jsx-runtime";
41939
+ import { jsx as jsx139, jsxs as jsxs56 } from "react/jsx-runtime";
41857
41940
  var NextIcon = ({ style: style4 }) => {
41858
41941
  return /* @__PURE__ */ jsxs56("svg", {
41859
41942
  fill: "none",
@@ -41861,7 +41944,7 @@ var NextIcon = ({ style: style4 }) => {
41861
41944
  style: style4,
41862
41945
  xmlns: "http://www.w3.org/2000/svg",
41863
41946
  children: [
41864
- /* @__PURE__ */ jsx138("mask", {
41947
+ /* @__PURE__ */ jsx139("mask", {
41865
41948
  height: "180",
41866
41949
  id: "mask0_292_250",
41867
41950
  maskUnits: "userSpaceOnUse",
@@ -41869,7 +41952,7 @@ var NextIcon = ({ style: style4 }) => {
41869
41952
  width: "180",
41870
41953
  x: "0",
41871
41954
  y: "0",
41872
- children: /* @__PURE__ */ jsx138("circle", {
41955
+ children: /* @__PURE__ */ jsx139("circle", {
41873
41956
  cx: "90",
41874
41957
  cy: "90",
41875
41958
  fill: "currentcolor",
@@ -41879,17 +41962,17 @@ var NextIcon = ({ style: style4 }) => {
41879
41962
  /* @__PURE__ */ jsxs56("g", {
41880
41963
  mask: "url(#mask0_292_250)",
41881
41964
  children: [
41882
- /* @__PURE__ */ jsx138("circle", {
41965
+ /* @__PURE__ */ jsx139("circle", {
41883
41966
  cx: "90",
41884
41967
  cy: "90",
41885
41968
  fill: "currentcolor",
41886
41969
  r: "90"
41887
41970
  }),
41888
- /* @__PURE__ */ jsx138("path", {
41971
+ /* @__PURE__ */ jsx139("path", {
41889
41972
  d: "M149.508 157.52L69.142 54H54V125.97H66.1136V69.3836L139.999 164.845C143.333 162.614 146.509 160.165 149.508 157.52Z",
41890
41973
  fill: "url(#paint0_linear_292_250)"
41891
41974
  }),
41892
- /* @__PURE__ */ jsx138("rect", {
41975
+ /* @__PURE__ */ jsx139("rect", {
41893
41976
  fill: "url(#paint1_linear_292_250)",
41894
41977
  height: "72",
41895
41978
  width: "12",
@@ -41908,10 +41991,10 @@ var NextIcon = ({ style: style4 }) => {
41908
41991
  y1: "116.5",
41909
41992
  y2: "160.5",
41910
41993
  children: [
41911
- /* @__PURE__ */ jsx138("stop", {
41994
+ /* @__PURE__ */ jsx139("stop", {
41912
41995
  stopColor: "var(--background)"
41913
41996
  }),
41914
- /* @__PURE__ */ jsx138("stop", {
41997
+ /* @__PURE__ */ jsx139("stop", {
41915
41998
  offset: "1",
41916
41999
  stopColor: "var(--background)",
41917
42000
  stopOpacity: "0"
@@ -41926,10 +42009,10 @@ var NextIcon = ({ style: style4 }) => {
41926
42009
  y1: "54",
41927
42010
  y2: "106.875",
41928
42011
  children: [
41929
- /* @__PURE__ */ jsx138("stop", {
42012
+ /* @__PURE__ */ jsx139("stop", {
41930
42013
  stopColor: "var(--background)"
41931
42014
  }),
41932
- /* @__PURE__ */ jsx138("stop", {
42015
+ /* @__PURE__ */ jsx139("stop", {
41933
42016
  offset: "1",
41934
42017
  stopColor: "var(--background)",
41935
42018
  stopOpacity: "0"
@@ -41943,7 +42026,7 @@ var NextIcon = ({ style: style4 }) => {
41943
42026
  };
41944
42027
 
41945
42028
  // src/components/icons/overlay.tsx
41946
- import { jsx as jsx139, jsxs as jsxs57 } from "react/jsx-runtime";
42029
+ import { jsx as jsx140, jsxs as jsxs57 } from "react/jsx-runtime";
41947
42030
  var OverlayIcon = (props) => {
41948
42031
  return /* @__PURE__ */ jsxs57("svg", {
41949
42032
  viewBox: "0 0 576 512",
@@ -41951,11 +42034,11 @@ var OverlayIcon = (props) => {
41951
42034
  xmlns: "http://www.w3.org/2000/svg",
41952
42035
  ...props,
41953
42036
  children: [
41954
- /* @__PURE__ */ jsx139("path", {
42037
+ /* @__PURE__ */ jsx140("path", {
41955
42038
  d: "M251.1 407.9C274.5 418.7 301.5 418.7 324.9 407.9V407.8L476.9 337.6L530.1 362.2C538.6 366.1 544 374.6 544 384C544 393.4 538.6 401.9 530.1 405.8L311.5 506.8C296.6 513.7 279.4 513.7 264.5 506.8L45.9 405.8C37.4 401.9 32 393.4 32 384C32 374.6 37.4 366.1 45.9 362.2L99.1 337.7L251.1 407.9Z",
41956
42039
  fill: "currentcolor"
41957
42040
  }),
41958
- /* @__PURE__ */ jsx139("path", {
42041
+ /* @__PURE__ */ jsx140("path", {
41959
42042
  d: "M277.8 132.7L495.2 230.1C505.4 234.7 512 244.8 512 256C512 267.2 505.4 277.3 495.2 281.9L277.8 379.3C270.1 382.4 263.5 384 256 384C248.5 384 241 382.4 234.2 379.3L16.76 281.9C6.561 277.3 0.0003 267.2 0.0003 256C0.0003 244.8 6.561 234.7 16.76 230.1L234.2 132.7C241 129.6 248.5 128 256 128C263.5 128 270.1 129.6 277.8 132.7Z",
41960
42043
  stroke: "currentcolor",
41961
42044
  transform: "translate(32, -25)",
@@ -41966,13 +42049,13 @@ var OverlayIcon = (props) => {
41966
42049
  };
41967
42050
 
41968
42051
  // src/components/icons/prompt-to-video.tsx
41969
- import { jsx as jsx140 } from "react/jsx-runtime";
42052
+ import { jsx as jsx141 } from "react/jsx-runtime";
41970
42053
  var PromptToVideoIcon = (props) => {
41971
- return /* @__PURE__ */ jsx140("svg", {
42054
+ return /* @__PURE__ */ jsx141("svg", {
41972
42055
  xmlns: "http://www.w3.org/2000/svg",
41973
42056
  viewBox: "0 0 512 512",
41974
42057
  ...props,
41975
- children: /* @__PURE__ */ jsx140("path", {
42058
+ children: /* @__PURE__ */ jsx141("path", {
41976
42059
  d: "M278.5 15.6C275 6.2 266 0 256 0s-19 6.2-22.5 15.6L174.2 174.2 15.6 233.5C6.2 237 0 246 0 256s6.2 19 15.6 22.5l158.6 59.4 59.4 158.6C237 505.8 246 512 256 512s19-6.2 22.5-15.6l59.4-158.6 158.6-59.4C505.8 275 512 266 512 256s-6.2-19-15.6-22.5L337.8 174.2 278.5 15.6z",
41977
42060
  fill: "currentColor"
41978
42061
  })
@@ -41980,23 +42063,23 @@ var PromptToVideoIcon = (props) => {
41980
42063
  };
41981
42064
 
41982
42065
  // src/components/icons/recorder.tsx
41983
- import { jsx as jsx141, jsxs as jsxs58 } from "react/jsx-runtime";
42066
+ import { jsx as jsx144, jsxs as jsxs58 } from "react/jsx-runtime";
41984
42067
  var Recorder = (props) => {
41985
42068
  return /* @__PURE__ */ jsxs58("svg", {
41986
42069
  viewBox: "0 0 700 700",
41987
42070
  ...props,
41988
42071
  children: [
41989
- /* @__PURE__ */ jsx141("path", {
42072
+ /* @__PURE__ */ jsx144("path", {
41990
42073
  d: "M0 350C0 115.5 115.5 0 350 0C584.5 0 700 115.5 700 350C700 584.5 584.5 700 350 700C115.5 700 0 584.5 0 350Z",
41991
42074
  fill: "#F43B00",
41992
42075
  fillOpacity: "0.15"
41993
42076
  }),
41994
- /* @__PURE__ */ jsx141("path", {
42077
+ /* @__PURE__ */ jsx144("path", {
41995
42078
  d: "M79.4595 344.324C79.4595 161.794 169.362 71.8915 351.892 71.8915C534.422 71.8915 624.324 161.794 624.324 344.324C624.324 526.854 534.422 616.756 351.892 616.756C169.362 616.756 79.4595 526.854 79.4595 344.324Z",
41996
42079
  fill: "#F43B00",
41997
42080
  fillOpacity: "0.3"
41998
42081
  }),
41999
- /* @__PURE__ */ jsx141("path", {
42082
+ /* @__PURE__ */ jsx144("path", {
42000
42083
  d: "M155.135 343.378C155.135 212.185 219.752 147.567 350.946 147.567C482.139 147.567 546.756 212.185 546.756 343.378C546.756 474.571 482.139 539.189 350.946 539.189C219.752 539.189 155.135 474.571 155.135 343.378Z",
42001
42084
  fill: "#F43B00"
42002
42085
  })
@@ -42005,9 +42088,9 @@ var Recorder = (props) => {
42005
42088
  };
42006
42089
 
42007
42090
  // src/components/icons/remix.tsx
42008
- import { jsx as jsx144, jsxs as jsxs59 } from "react/jsx-runtime";
42091
+ import { jsx as jsx146, jsxs as jsxs59 } from "react/jsx-runtime";
42009
42092
  var ReactRouterIcon = (props) => {
42010
- return /* @__PURE__ */ jsx144("svg", {
42093
+ return /* @__PURE__ */ jsx146("svg", {
42011
42094
  xmlns: "http://www.w3.org/2000/svg",
42012
42095
  width: "800px",
42013
42096
  height: "800px",
@@ -42017,11 +42100,11 @@ var ReactRouterIcon = (props) => {
42017
42100
  ...props,
42018
42101
  children: /* @__PURE__ */ jsxs59("g", {
42019
42102
  children: [
42020
- /* @__PURE__ */ jsx144("path", {
42103
+ /* @__PURE__ */ jsx146("path", {
42021
42104
  d: "M78.0659341,92.5875806 C90.8837956,92.5875806 101.274726,82.1966508 101.274726,69.3787894 C101.274726,56.5609279 90.8837956,46.1699982 78.0659341,46.1699982 C65.2480726,46.1699982 54.8571429,56.5609279 54.8571429,69.3787894 C54.8571429,82.1966508 65.2480726,92.5875806 78.0659341,92.5875806 Z M23.2087913,139.005163 C36.0266526,139.005163 46.4175825,128.614233 46.4175825,115.796372 C46.4175825,102.97851 36.0266526,92.5875806 23.2087913,92.5875806 C10.3909298,92.5875806 0,102.97851 0,115.796372 C0,128.614233 10.3909298,139.005163 23.2087913,139.005163 Z M232.791209,139.005163 C245.60907,139.005163 256,128.614233 256,115.796372 C256,102.97851 245.60907,92.5875806 232.791209,92.5875806 C219.973347,92.5875806 209.582418,102.97851 209.582418,115.796372 C209.582418,128.614233 219.973347,139.005163 232.791209,139.005163 Z",
42022
42105
  fill: "currentcolor"
42023
42106
  }),
42024
- /* @__PURE__ */ jsx144("path", {
42107
+ /* @__PURE__ */ jsx146("path", {
42025
42108
  d: "M156.565464,70.3568084 C155.823426,62.6028163 155.445577,56.1490255 149.505494,51.6131676 C141.982638,45.8687002 133.461166,49.5960243 122.964463,45.8072968 C112.650326,43.3121427 105,34.1545727 105,23.2394367 C105,10.4046502 115.577888,0 128.626373,0 C138.29063,0 146.599638,5.70747659 150.259573,13.8825477 C155.861013,24.5221258 152.220489,35.3500418 159.258242,40.8041273 C167.591489,47.2621895 178.826167,42.5329154 191.362109,48.6517412 C195.390112,50.5026944 198.799584,53.4384578 201.202056,57.0769224 C203.604528,60.7153869 205,65.0565524 205,69.7183101 C205,80.633446 197.349674,89.7910161 187.035538,92.2861702 C176.538834,96.0748977 168.017363,92.3475736 160.494506,98.092041 C152.03503,104.551712 156.563892,115.358642 149.669352,126.774447 C145.756163,134.291567 137.802119,139.43662 128.626373,139.43662 C115.577888,139.43662 105,129.03197 105,116.197184 C105,106.873668 110.581887,98.832521 118.637891,95.1306146 C131.173833,89.0117889 142.408511,93.7410629 150.741758,87.2830007 C155.549106,83.5574243 156.565464,77.8102648 156.565464,70.3568084 Z",
42026
42109
  fill: "currentcolor"
42027
42110
  })
@@ -42031,7 +42114,7 @@ var ReactRouterIcon = (props) => {
42031
42114
  };
42032
42115
 
42033
42116
  // src/components/icons/render-server.tsx
42034
- import { jsx as jsx146, jsxs as jsxs60 } from "react/jsx-runtime";
42117
+ import { jsx as jsx147, jsxs as jsxs60 } from "react/jsx-runtime";
42035
42118
  var RenderServerIcon = (props) => {
42036
42119
  return /* @__PURE__ */ jsxs60("svg", {
42037
42120
  ...props,
@@ -42043,14 +42126,14 @@ var RenderServerIcon = (props) => {
42043
42126
  strokeLinecap: "round",
42044
42127
  strokeLinejoin: "round",
42045
42128
  children: [
42046
- /* @__PURE__ */ jsx146("rect", {
42129
+ /* @__PURE__ */ jsx147("rect", {
42047
42130
  width: "18",
42048
42131
  height: "18",
42049
42132
  x: "3",
42050
42133
  y: "3",
42051
42134
  rx: "2"
42052
42135
  }),
42053
- /* @__PURE__ */ jsx146("path", {
42136
+ /* @__PURE__ */ jsx147("path", {
42054
42137
  d: "m10 8 4 4-4 4"
42055
42138
  })
42056
42139
  ]
@@ -42058,13 +42141,13 @@ var RenderServerIcon = (props) => {
42058
42141
  };
42059
42142
 
42060
42143
  // src/components/icons/skia.tsx
42061
- import { jsx as jsx147 } from "react/jsx-runtime";
42144
+ import { jsx as jsx148 } from "react/jsx-runtime";
42062
42145
  var SkiaIcon = (props) => {
42063
- return /* @__PURE__ */ jsx147("svg", {
42146
+ return /* @__PURE__ */ jsx148("svg", {
42064
42147
  ...props,
42065
42148
  xmlns: "http://www.w3.org/2000/svg",
42066
42149
  viewBox: "0 0 576 512",
42067
- children: /* @__PURE__ */ jsx147("path", {
42150
+ children: /* @__PURE__ */ jsx148("path", {
42068
42151
  fill: "currentColor",
42069
42152
  d: "M288 400C288 461.9 237.9 512 176 512H32C14.33 512 0 497.7 0 480C0 462.3 14.33 448 32 448H36.81C54.44 448 66.4 429.1 64.59 411.6C64.2 407.8 64 403.9 64 400C64 338.1 114.1 288 176 288C178.8 288 181.5 288.1 184.3 288.3C184.1 285.7 183.1 282.1 183.1 280.3C183.1 244.6 201.1 210.1 229.1 189.1L474.3 12.25C499.7-6.279 534.9-3.526 557.2 18.74C579.4 41 582.2 76.16 563.7 101.6L386.1 345.1C365 374.9 331.4 392 295.7 392C293 392 290.3 391.9 287.7 391.7C287.9 394.5 287.1 397.2 287.1 400H288zM295.7 360C321.2 360 345.2 347.8 360.2 327.2L537.8 82.82C547.1 70.08 545.7 52.5 534.5 41.37C523.4 30.24 505.8 28.86 493.1 38.12L248.8 215.8C228.2 230.8 215.1 254.8 215.1 280.3C215.1 285.7 216.5 290.9 217.5 295.1L217.6 295.1C217.9 297.3 218.2 298.6 218.5 299.9L276.1 357.5C277.4 357.8 278.7 358.1 280 358.4L280 358.5C285.1 359.5 290.3 360 295.7 360L295.7 360zM253.5 380.1L195.9 322.5C194.5 322.2 193.2 321.8 191.9 321.6C186.7 320.5 181.4 320 176 320C131.8 320 96 355.8 96 400C96 402.8 96.14 405.6 96.43 408.3C98.15 425 93.42 441.9 83.96 455.1C74.31 468.5 58 480 36.81 480H176C220.2 480 256 444.2 256 400C256 394.6 255.5 389.3 254.4 384.1C254.2 382.8 253.9 381.5 253.5 380.1V380.1z"
42070
42153
  })
@@ -42072,13 +42155,13 @@ var SkiaIcon = (props) => {
42072
42155
  };
42073
42156
 
42074
42157
  // src/components/icons/stargazer.tsx
42075
- import { jsx as jsx148 } from "react/jsx-runtime";
42158
+ import { jsx as jsx149 } from "react/jsx-runtime";
42076
42159
  var Stargazer = (props) => {
42077
- return /* @__PURE__ */ jsx148("svg", {
42160
+ return /* @__PURE__ */ jsx149("svg", {
42078
42161
  height: "1em",
42079
42162
  viewBox: "0 0 512 512",
42080
42163
  ...props,
42081
- children: /* @__PURE__ */ jsx148("path", {
42164
+ children: /* @__PURE__ */ jsx149("path", {
42082
42165
  fill: "currentcolor",
42083
42166
  d: "M325.8 152.3c1.3 4.6 5.5 7.7 10.2 7.7s8.9-3.1 10.2-7.7L360 104l48.3-13.8c4.6-1.3 7.7-5.5 7.7-10.2s-3.1-8.9-7.7-10.2L360 56 346.2 7.7C344.9 3.1 340.7 0 336 0s-8.9 3.1-10.2 7.7L312 56 263.7 69.8c-4.6 1.3-7.7 5.5-7.7 10.2s3.1 8.9 7.7 10.2L312 104l13.8 48.3zM115.7 346.2L75.5 307l55.5-8.1c15.6-2.3 29.2-12.1 36.1-26.3l24.8-50.3 24.8 50.3c7 14.2 20.5 24 36.1 26.3l55.5 8.1-40.2 39.2c-11.3 11-16.4 26.9-13.8 42.4l9.5 55.4-49.5-26.1c-14-7.4-30.7-7.4-44.7 0L120 444l9.5-55.4c2.7-15.6-2.5-31.4-13.8-42.4zm54.7-188.8l-46.3 94L20.5 266.5C.9 269.3-7 293.5 7.2 307.4l74.9 73.2L64.5 483.9c-3.4 19.6 17.2 34.6 34.8 25.3l92.6-48.8 92.6 48.8c17.6 9.3 38.2-5.7 34.8-25.3L301.6 380.6l74.9-73.2c14.2-13.9 6.4-38.1-13.3-40.9L259.7 251.4l-46.3-94c-8.8-17.9-34.3-17.9-43.1 0zm258.4 85.8l11 38.6c1 3.6 4.4 6.2 8.2 6.2s7.1-2.5 8.2-6.2l11-38.6 38.6-11c3.6-1 6.2-4.4 6.2-8.2s-2.5-7.1-6.2-8.2l-38.6-11-11-38.6c-1-3.6-4.4-6.2-8.2-6.2s-7.1 2.5-8.2 6.2l-11 38.6-38.6 11c-3.6 1-6.2 4.4-6.2 8.2s2.5 7.1 6.2 8.2l38.6 11z"
42084
42167
  })
@@ -42086,13 +42169,13 @@ var Stargazer = (props) => {
42086
42169
  };
42087
42170
 
42088
42171
  // src/components/icons/still.tsx
42089
- import { jsx as jsx149 } from "react/jsx-runtime";
42172
+ import { jsx as jsx150 } from "react/jsx-runtime";
42090
42173
  var StillIcon = (props) => {
42091
- return /* @__PURE__ */ jsx149("svg", {
42174
+ return /* @__PURE__ */ jsx150("svg", {
42092
42175
  xmlns: "http://www.w3.org/2000/svg",
42093
42176
  viewBox: "0 0 512 512",
42094
42177
  ...props,
42095
- children: /* @__PURE__ */ jsx149("path", {
42178
+ children: /* @__PURE__ */ jsx150("path", {
42096
42179
  fill: "currentColor",
42097
42180
  d: "M324.9 157.8c-11.38-17.38-39.89-17.31-51.23-.0625L200.5 268.5L184.1 245.9C172.7 229.1 145.9 229.9 134.4 245.9l-64.52 89.16c-6.797 9.406-7.75 21.72-2.547 32C72.53 377.5 83.05 384 94.75 384h322.5c11.41 0 21.8-6.281 27.14-16.38c5.312-10 4.734-22.09-1.516-31.56L324.9 157.8zM95.8 352l62.39-87.38l29.91 41.34C191.2 310.2 196.4 313.2 201.4 312.6c5.25-.125 10.12-2.781 13.02-7.188l83.83-129.9L415 352H95.8zM447.1 32h-384C28.65 32-.0091 60.65-.0091 96v320c0 35.35 28.65 64 63.1 64h384c35.35 0 64-28.65 64-64V96C511.1 60.65 483.3 32 447.1 32zM480 416c0 17.64-14.36 32-32 32H64c-17.64 0-32-14.36-32-32V96c0-17.64 14.36-32 32-32h384c17.64 0 32 14.36 32 32V416zM144 192C170.5 192 192 170.5 192 144S170.5 96 144 96S96 117.5 96 144S117.5 192 144 192zM144 128c8.822 0 15.1 7.178 15.1 16S152.8 160 144 160S128 152.8 128 144S135.2 128 144 128z"
42098
42181
  })
@@ -42100,12 +42183,12 @@ var StillIcon = (props) => {
42100
42183
  };
42101
42184
 
42102
42185
  // src/components/icons/tiktok.tsx
42103
- import { jsx as jsx150 } from "react/jsx-runtime";
42186
+ import { jsx as jsx151 } from "react/jsx-runtime";
42104
42187
  var TikTok = (props) => {
42105
- return /* @__PURE__ */ jsx150("svg", {
42188
+ return /* @__PURE__ */ jsx151("svg", {
42106
42189
  ...props,
42107
42190
  viewBox: "0 0 448 512",
42108
- children: /* @__PURE__ */ jsx150("path", {
42191
+ children: /* @__PURE__ */ jsx151("path", {
42109
42192
  fill: "currentcolor",
42110
42193
  d: "M448 209.9a210.1 210.1 0 0 1 -122.8-39.3V349.4A162.6 162.6 0 1 1 185 188.3V278.2a74.6 74.6 0 1 0 52.2 71.2V0l88 0a121.2 121.2 0 0 0 1.9 22.2h0A122.2 122.2 0 0 0 381 102.4a121.4 121.4 0 0 0 67 20.1z"
42111
42194
  })
@@ -42113,14 +42196,14 @@ var TikTok = (props) => {
42113
42196
  };
42114
42197
 
42115
42198
  // src/components/icons/ts.tsx
42116
- import { jsx as jsx151 } from "react/jsx-runtime";
42199
+ import { jsx as jsx154 } from "react/jsx-runtime";
42117
42200
  var TypeScriptIcon = (props) => {
42118
- return /* @__PURE__ */ jsx151("svg", {
42201
+ return /* @__PURE__ */ jsx154("svg", {
42119
42202
  fill: "#000000",
42120
42203
  xmlns: "http://www.w3.org/2000/svg",
42121
42204
  viewBox: "0 0 24 24",
42122
42205
  ...props,
42123
- children: /* @__PURE__ */ jsx151("path", {
42206
+ children: /* @__PURE__ */ jsx154("path", {
42124
42207
  fill: "currentColor",
42125
42208
  d: "M3,5v14c0,1.105,0.895,2,2,2h14c1.105,0,2-0.895,2-2V5c0-1.105-0.895-2-2-2H5C3.895,3,3,3.895,3,5z M13.666,12.451h-2.118\tV19H9.841v-6.549H7.767V11h5.899V12.451z M13.998,18.626v-1.751c0,0,0.956,0.721,2.104,0.721c1.148,0,1.103-0.75,1.103-0.853\tc0-1.089-3.251-1.089-3.251-3.501c0-3.281,4.737-1.986,4.737-1.986l-0.059,1.559c0,0-0.794-0.53-1.692-0.53\tc-0.897,0-1.221,0.427-1.221,0.883c0,1.177,3.281,1.059,3.281,3.428C19,20.244,13.998,18.626,13.998,18.626z"
42126
42209
  })
@@ -42128,27 +42211,27 @@ var TypeScriptIcon = (props) => {
42128
42211
  };
42129
42212
 
42130
42213
  // src/components/icons/vercel.tsx
42131
- import { jsx as jsx154 } from "react/jsx-runtime";
42214
+ import { jsx as jsx156 } from "react/jsx-runtime";
42132
42215
  var VercelIcon = ({ style: style4 }) => {
42133
- return /* @__PURE__ */ jsx154("svg", {
42216
+ return /* @__PURE__ */ jsx156("svg", {
42134
42217
  fill: "currentcolor",
42135
42218
  viewBox: "0 0 76 65",
42136
42219
  style: style4,
42137
42220
  xmlns: "http://www.w3.org/2000/svg",
42138
- children: /* @__PURE__ */ jsx154("path", {
42221
+ children: /* @__PURE__ */ jsx156("path", {
42139
42222
  d: "M37.5274 0L75.0548 65H0L37.5274 0Z"
42140
42223
  })
42141
42224
  });
42142
42225
  };
42143
42226
 
42144
42227
  // src/components/icons/waveform.tsx
42145
- import { jsx as jsx156 } from "react/jsx-runtime";
42228
+ import { jsx as jsx157 } from "react/jsx-runtime";
42146
42229
  var Waveform = (props) => {
42147
- return /* @__PURE__ */ jsx156("svg", {
42230
+ return /* @__PURE__ */ jsx157("svg", {
42148
42231
  xmlns: "http://www.w3.org/2000/svg",
42149
42232
  viewBox: "0 0 640 512",
42150
42233
  ...props,
42151
- children: /* @__PURE__ */ jsx156("path", {
42234
+ children: /* @__PURE__ */ jsx157("path", {
42152
42235
  fill: "currentColor",
42153
42236
  d: "M224 96C215.2 96 208 103.2 208 111.1v288C208 408.8 215.2 416 223.1 416C232.8 416 240 408.8 240 400V111.1C240 103.2 232.8 96 224 96zM128 192C119.2 192 112 199.2 112 207.1V304C112 312.8 119.2 320 127.1 320S144 312.8 144 304V207.1C144 199.2 136.8 192 128 192zM32 224C23.2 224 16 231.2 16 239.1V272C16 280.8 23.2 288 31.1 288S48 280.8 48 272V239.1C48 231.2 40.8 224 32 224zM416 128C407.2 128 400 135.2 400 143.1v224C400 376.8 407.2 384 415.1 384S432 376.8 432 368V143.1C432 135.2 424.8 128 416 128zM608 224c-8.8 0-16 7.2-16 15.1V272C592 280.8 599.2 288 608 288s16-7.2 16-15.1V239.1C624 231.2 616.8 224 608 224zM512 64c-8.8 0-16 7.2-16 15.1V432C496 440.8 503.2 448 511.1 448C520.8 448 528 440.8 528 432V79.1C528 71.2 520.8 64 512 64zM320 0C311.2 0 304 7.2 304 15.1V496C304 504.8 311.2 512 319.1 512S336 504.8 336 496V15.1C336 7.2 328.8 0 320 0z"
42154
42237
  })
@@ -42156,17 +42239,17 @@ var Waveform = (props) => {
42156
42239
  };
42157
42240
 
42158
42241
  // src/components/homepage/IconForTemplate.tsx
42159
- import { jsx as jsx157 } from "react/jsx-runtime";
42242
+ import { jsx as jsx158 } from "react/jsx-runtime";
42160
42243
  var IconForTemplate = ({ template, scale: scale4 = 1 }) => {
42161
42244
  if (template.cliId === "hello-world") {
42162
- return /* @__PURE__ */ jsx157(TypeScriptIcon, {
42245
+ return /* @__PURE__ */ jsx158(TypeScriptIcon, {
42163
42246
  style: {
42164
42247
  height: scale4 * 48
42165
42248
  }
42166
42249
  });
42167
42250
  }
42168
42251
  if (template.cliId === "blank") {
42169
- return /* @__PURE__ */ jsx157(Blank, {
42252
+ return /* @__PURE__ */ jsx158(Blank, {
42170
42253
  style: {
42171
42254
  height: scale4 * 36,
42172
42255
  overflow: "visible"
@@ -42174,101 +42257,106 @@ var IconForTemplate = ({ template, scale: scale4 = 1 }) => {
42174
42257
  });
42175
42258
  }
42176
42259
  if (template.cliId === "javascript") {
42177
- return /* @__PURE__ */ jsx157(JSIcon, {
42260
+ return /* @__PURE__ */ jsx158(JSIcon, {
42178
42261
  style: {
42179
42262
  height: scale4 * 40
42180
42263
  }
42181
42264
  });
42182
42265
  }
42183
42266
  if (template.cliId === "three") {
42184
- return /* @__PURE__ */ jsx157(Cubes, {
42267
+ return /* @__PURE__ */ jsx158(Cubes, {
42185
42268
  style: {
42186
42269
  height: scale4 * 36
42187
42270
  }
42188
42271
  });
42189
42272
  }
42190
42273
  if (template.cliId === "still") {
42191
- return /* @__PURE__ */ jsx157(StillIcon, {
42274
+ return /* @__PURE__ */ jsx158(StillIcon, {
42192
42275
  style: {
42193
42276
  height: scale4 * 36
42194
42277
  }
42195
42278
  });
42196
42279
  }
42197
42280
  if (template.cliId === "audiogram") {
42198
- return /* @__PURE__ */ jsx157(Waveform, {
42281
+ return /* @__PURE__ */ jsx158(Waveform, {
42199
42282
  style: {
42200
42283
  height: scale4 * 36
42201
42284
  }
42202
42285
  });
42203
42286
  }
42204
42287
  if (template.cliId === "skia") {
42205
- return /* @__PURE__ */ jsx157(SkiaIcon, {
42288
+ return /* @__PURE__ */ jsx158(SkiaIcon, {
42206
42289
  style: {
42207
42290
  height: scale4 * 32
42208
42291
  }
42209
42292
  });
42210
42293
  }
42211
42294
  if (template.cliId === "music-visualization") {
42212
- return /* @__PURE__ */ jsx157(MusicIcon, {
42295
+ return /* @__PURE__ */ jsx158(MusicIcon, {
42213
42296
  style: {
42214
42297
  height: scale4 * 32
42215
42298
  }
42216
42299
  });
42217
42300
  }
42218
42301
  if (template.cliId === "react-router") {
42219
- return /* @__PURE__ */ jsx157(ReactRouterIcon, {
42302
+ return /* @__PURE__ */ jsx158(ReactRouterIcon, {
42220
42303
  style: {
42221
42304
  height: scale4 * 32
42222
42305
  }
42223
42306
  });
42224
42307
  }
42225
42308
  if (template.cliId === "overlay") {
42226
- return /* @__PURE__ */ jsx157(OverlayIcon, {
42309
+ return /* @__PURE__ */ jsx158(OverlayIcon, {
42227
42310
  style: { height: scale4 * 42 }
42228
42311
  });
42229
42312
  }
42230
42313
  if (template.cliId === "render-server") {
42231
- return /* @__PURE__ */ jsx157(RenderServerIcon, {
42314
+ return /* @__PURE__ */ jsx158(RenderServerIcon, {
42315
+ style: { height: scale4 * 36 }
42316
+ });
42317
+ }
42318
+ if (template.cliId === "electron") {
42319
+ return /* @__PURE__ */ jsx158(ElectronIcon, {
42232
42320
  style: { height: scale4 * 36 }
42233
42321
  });
42234
42322
  }
42235
42323
  if (template.cliId === "recorder") {
42236
- return /* @__PURE__ */ jsx157(Recorder, {
42324
+ return /* @__PURE__ */ jsx158(Recorder, {
42237
42325
  style: { height: scale4 * 36 }
42238
42326
  });
42239
42327
  }
42240
42328
  if (template.cliId === "next" || template.cliId === "next-no-tailwind" || template.cliId === "next-pages-dir") {
42241
- return /* @__PURE__ */ jsx157(NextIcon, {
42329
+ return /* @__PURE__ */ jsx158(NextIcon, {
42242
42330
  style: { height: scale4 * 36 }
42243
42331
  });
42244
42332
  }
42245
42333
  if (template.cliId === "stargazer") {
42246
- return /* @__PURE__ */ jsx157(Stargazer, {
42334
+ return /* @__PURE__ */ jsx158(Stargazer, {
42247
42335
  style: { height: scale4 * 36 }
42248
42336
  });
42249
42337
  }
42250
42338
  if (template.cliId === "tiktok") {
42251
- return /* @__PURE__ */ jsx157(TikTok, {
42339
+ return /* @__PURE__ */ jsx158(TikTok, {
42252
42340
  style: { height: scale4 * 36 }
42253
42341
  });
42254
42342
  }
42255
42343
  if (template.cliId === "code-hike") {
42256
- return /* @__PURE__ */ jsx157(CodeHike, {
42344
+ return /* @__PURE__ */ jsx158(CodeHike, {
42257
42345
  style: { height: scale4 * 36 }
42258
42346
  });
42259
42347
  }
42260
42348
  if (template.cliId === "prompt-to-video") {
42261
- return /* @__PURE__ */ jsx157(PromptToVideoIcon, {
42349
+ return /* @__PURE__ */ jsx158(PromptToVideoIcon, {
42262
42350
  style: { height: scale4 * 36 }
42263
42351
  });
42264
42352
  }
42265
42353
  if (template.cliId === "prompt-to-motion-graphics") {
42266
- return /* @__PURE__ */ jsx157(BrainIcon, {
42354
+ return /* @__PURE__ */ jsx158(BrainIcon, {
42267
42355
  style: { height: scale4 * 36 }
42268
42356
  });
42269
42357
  }
42270
42358
  if (template.cliId === "vercel") {
42271
- return /* @__PURE__ */ jsx157(VercelIcon, {
42359
+ return /* @__PURE__ */ jsx158(VercelIcon, {
42272
42360
  style: { height: scale4 * 28 }
42273
42361
  });
42274
42362
  }
@@ -42282,7 +42370,7 @@ var useMobileLayout = () => {
42282
42370
  };
42283
42371
 
42284
42372
  // src/components/homepage/MoreTemplatesButton.tsx
42285
- import { jsx as jsx158, jsxs as jsxs61 } from "react/jsx-runtime";
42373
+ import { jsx as jsx159, jsxs as jsxs61 } from "react/jsx-runtime";
42286
42374
  var icon6 = {
42287
42375
  height: 16,
42288
42376
  marginLeft: 10
@@ -42294,11 +42382,11 @@ var MoreTemplatesButton = () => {
42294
42382
  className: "right-0 border-2 rounded-full text-inherit px-4 py-2 fontbrand font-semibold text-sm flex flex-row items-center h-10",
42295
42383
  children: [
42296
42384
  mobileLayout ? "Templates" : "Find a template",
42297
- /* @__PURE__ */ jsx158("svg", {
42385
+ /* @__PURE__ */ jsx159("svg", {
42298
42386
  style: icon6,
42299
42387
  xmlns: "http://www.w3.org/2000/svg",
42300
42388
  viewBox: "0 0 448 512",
42301
- children: /* @__PURE__ */ jsx158("path", {
42389
+ children: /* @__PURE__ */ jsx159("path", {
42302
42390
  fill: "currentColor",
42303
42391
  d: "M438.6 278.6l-160 160C272.4 444.9 264.2 448 256 448s-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L338.8 288H32C14.33 288 .0016 273.7 .0016 256S14.33 224 32 224h306.8l-105.4-105.4c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l160 160C451.1 245.9 451.1 266.1 438.6 278.6z"
42304
42392
  })
@@ -42308,7 +42396,7 @@ var MoreTemplatesButton = () => {
42308
42396
  };
42309
42397
 
42310
42398
  // src/components/homepage/TemplateIcon.tsx
42311
- import { jsx as jsx159, jsxs as jsxs63 } from "react/jsx-runtime";
42399
+ import { jsx as jsx160, jsxs as jsxs63 } from "react/jsx-runtime";
42312
42400
  var icon7 = {
42313
42401
  display: "flex",
42314
42402
  width: 36,
@@ -42332,11 +42420,11 @@ var TemplateIcon = ({ children, label: label3 }) => {
42332
42420
  return /* @__PURE__ */ jsxs63("span", {
42333
42421
  style: outer,
42334
42422
  children: [
42335
- /* @__PURE__ */ jsx159("div", {
42423
+ /* @__PURE__ */ jsx160("div", {
42336
42424
  style: icon7,
42337
42425
  children
42338
42426
  }),
42339
- mobileLayout ? null : /* @__PURE__ */ jsx159("div", {
42427
+ mobileLayout ? null : /* @__PURE__ */ jsx160("div", {
42340
42428
  className: "text-xs fontbrand",
42341
42429
  children: label3
42342
42430
  })
@@ -42345,14 +42433,14 @@ var TemplateIcon = ({ children, label: label3 }) => {
42345
42433
  };
42346
42434
 
42347
42435
  // src/components/homepage/ChooseTemplate.tsx
42348
- import { jsx as jsx160, jsxs as jsxs65 } from "react/jsx-runtime";
42436
+ import { jsx as jsx161, jsxs as jsxs65 } from "react/jsx-runtime";
42349
42437
  var ChooseTemplate = () => {
42350
- return /* @__PURE__ */ jsx160("div", {
42438
+ return /* @__PURE__ */ jsx161("div", {
42351
42439
  style: {
42352
42440
  display: "flex",
42353
42441
  flexDirection: "column"
42354
42442
  },
42355
- children: /* @__PURE__ */ jsx160("div", {
42443
+ children: /* @__PURE__ */ jsx161("div", {
42356
42444
  style: {
42357
42445
  position: "relative",
42358
42446
  textAlign: "center"
@@ -42371,19 +42459,19 @@ var ChooseTemplate = () => {
42371
42459
  },
42372
42460
  children: [
42373
42461
  CreateVideoInternals.FEATURED_TEMPLATES.filter((f) => f.featuredOnHomePage).map((template) => {
42374
- return /* @__PURE__ */ jsx160("a", {
42462
+ return /* @__PURE__ */ jsx161("a", {
42375
42463
  className: "text-inherit no-underline",
42376
42464
  href: `/templates/${template.cliId}`,
42377
- children: /* @__PURE__ */ jsx160(TemplateIcon, {
42465
+ children: /* @__PURE__ */ jsx161(TemplateIcon, {
42378
42466
  label: template.featuredOnHomePage,
42379
- children: /* @__PURE__ */ jsx160(IconForTemplate, {
42467
+ children: /* @__PURE__ */ jsx161(IconForTemplate, {
42380
42468
  scale: 0.7,
42381
42469
  template
42382
42470
  })
42383
42471
  })
42384
42472
  }, template.cliId);
42385
42473
  }),
42386
- /* @__PURE__ */ jsx160(MoreTemplatesButton, {})
42474
+ /* @__PURE__ */ jsx161(MoreTemplatesButton, {})
42387
42475
  ]
42388
42476
  })
42389
42477
  })
@@ -42394,12 +42482,12 @@ var ChooseTemplate = () => {
42394
42482
  import { useState as useState65 } from "react";
42395
42483
 
42396
42484
  // src/components/homepage/GitHubButton.tsx
42397
- import { jsx as jsx161, jsxs as jsxs66 } from "react/jsx-runtime";
42485
+ import { jsx as jsx164, jsxs as jsxs66 } from "react/jsx-runtime";
42398
42486
  var GithubIcon = () => {
42399
- return /* @__PURE__ */ jsx161("svg", {
42487
+ return /* @__PURE__ */ jsx164("svg", {
42400
42488
  viewBox: "0 0 496 512",
42401
42489
  style: { height: 24, marginRight: 8 },
42402
- children: /* @__PURE__ */ jsx161("path", {
42490
+ children: /* @__PURE__ */ jsx164("path", {
42403
42491
  fill: "currentColor",
42404
42492
  d: "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"
42405
42493
  })
@@ -42409,13 +42497,13 @@ var GithubButton = () => {
42409
42497
  return /* @__PURE__ */ jsxs66("div", {
42410
42498
  className: "flex flex-row items-center text-base",
42411
42499
  children: [
42412
- /* @__PURE__ */ jsx161(GithubIcon, {}),
42500
+ /* @__PURE__ */ jsx164(GithubIcon, {}),
42413
42501
  " ",
42414
- /* @__PURE__ */ jsx161("span", {
42502
+ /* @__PURE__ */ jsx164("span", {
42415
42503
  children: "GitHub"
42416
42504
  }),
42417
42505
  " ",
42418
- /* @__PURE__ */ jsx161("div", {
42506
+ /* @__PURE__ */ jsx164("div", {
42419
42507
  className: "text-xs inline-block ml-2 leading-none mt-[3px] self-center",
42420
42508
  children: "39k"
42421
42509
  })
@@ -42424,18 +42512,18 @@ var GithubButton = () => {
42424
42512
  };
42425
42513
 
42426
42514
  // src/components/homepage/GetStartedStrip.tsx
42427
- import { jsx as jsx164, jsxs as jsxs67 } from "react/jsx-runtime";
42515
+ import { jsx as jsx166, jsxs as jsxs67 } from "react/jsx-runtime";
42428
42516
  var GetStarted = () => {
42429
42517
  const [clicked, setClicked] = useState65(null);
42430
42518
  return /* @__PURE__ */ jsxs67("div", {
42431
42519
  className: "flex flex-col lg:flex-row items-center justify-center text-center w-full",
42432
42520
  children: [
42433
- /* @__PURE__ */ jsx164("div", {
42521
+ /* @__PURE__ */ jsx166("div", {
42434
42522
  className: "w-full lg:w-auto",
42435
42523
  children: /* @__PURE__ */ jsxs67("div", {
42436
42524
  className: "flex flex-row w-full relative",
42437
42525
  children: [
42438
- clicked ? /* @__PURE__ */ jsx164("div", {
42526
+ clicked ? /* @__PURE__ */ jsx166("div", {
42439
42527
  style: {
42440
42528
  animation: "click 0.7s linear",
42441
42529
  animationFillMode: "forwards"
@@ -42443,7 +42531,7 @@ var GetStarted = () => {
42443
42531
  className: "absolute z-0 top-[-10px] font-mono text-sm text-center w-full",
42444
42532
  children: "Copied!"
42445
42533
  }, clicked) : null,
42446
- /* @__PURE__ */ jsx164(Button, {
42534
+ /* @__PURE__ */ jsx166(Button, {
42447
42535
  className: "bg-[#333] text-white rounded-lg px-4 font-mono hover:[#444] cursor-pointer w-full",
42448
42536
  onClick: () => {
42449
42537
  navigator.clipboard.writeText("npx create-video@latest");
@@ -42455,59 +42543,59 @@ var GetStarted = () => {
42455
42543
  ]
42456
42544
  })
42457
42545
  }),
42458
- /* @__PURE__ */ jsx164("div", {
42546
+ /* @__PURE__ */ jsx166("div", {
42459
42547
  style: { width: 10, height: 10 }
42460
42548
  }),
42461
- /* @__PURE__ */ jsx164("div", {
42549
+ /* @__PURE__ */ jsx166("div", {
42462
42550
  className: "w-full lg:w-auto",
42463
- children: /* @__PURE__ */ jsx164(Button, {
42551
+ children: /* @__PURE__ */ jsx166(Button, {
42464
42552
  href: "/docs",
42465
42553
  className: "w-full",
42466
42554
  children: "Docs"
42467
42555
  })
42468
42556
  }),
42469
- /* @__PURE__ */ jsx164("div", {
42557
+ /* @__PURE__ */ jsx166("div", {
42470
42558
  className: "w-2 h-2"
42471
42559
  }),
42472
- /* @__PURE__ */ jsx164("div", {
42560
+ /* @__PURE__ */ jsx166("div", {
42473
42561
  className: "w-full lg:w-auto",
42474
- children: /* @__PURE__ */ jsx164(Button, {
42562
+ children: /* @__PURE__ */ jsx166(Button, {
42475
42563
  href: "https://remotion.dev/discord",
42476
42564
  target: "_blank",
42477
42565
  className: "w-full",
42478
42566
  children: "Discord"
42479
42567
  })
42480
42568
  }),
42481
- /* @__PURE__ */ jsx164("div", {
42569
+ /* @__PURE__ */ jsx166("div", {
42482
42570
  className: "w-2 h-2"
42483
42571
  }),
42484
- /* @__PURE__ */ jsx164("div", {
42572
+ /* @__PURE__ */ jsx166("div", {
42485
42573
  className: "w-full lg:w-auto",
42486
- children: /* @__PURE__ */ jsx164(Button, {
42574
+ children: /* @__PURE__ */ jsx166(Button, {
42487
42575
  href: "https://github.com/remotion-dev/remotion",
42488
42576
  target: "_blank",
42489
42577
  className: "w-full",
42490
- children: /* @__PURE__ */ jsx164(GithubButton, {})
42578
+ children: /* @__PURE__ */ jsx166(GithubButton, {})
42491
42579
  })
42492
42580
  }),
42493
42581
  " ",
42494
- /* @__PURE__ */ jsx164("div", {
42582
+ /* @__PURE__ */ jsx166("div", {
42495
42583
  className: "w-2 h-2"
42496
42584
  }),
42497
- /* @__PURE__ */ jsx164("div", {
42585
+ /* @__PURE__ */ jsx166("div", {
42498
42586
  className: "w-full lg:w-auto",
42499
42587
  children: /* @__PURE__ */ jsxs67(Button, {
42500
42588
  href: "/prompts",
42501
42589
  className: "w-full",
42502
42590
  children: [
42503
- /* @__PURE__ */ jsx164("svg", {
42591
+ /* @__PURE__ */ jsx166("svg", {
42504
42592
  width: "20",
42505
42593
  height: "20",
42506
42594
  viewBox: "0 0 149 149",
42507
42595
  fill: "none",
42508
42596
  xmlns: "http://www.w3.org/2000/svg",
42509
42597
  style: { marginRight: 8 },
42510
- children: /* @__PURE__ */ jsx164("path", {
42598
+ children: /* @__PURE__ */ jsx166("path", {
42511
42599
  d: "M29.05 98.54L58.19 82.19L58.68 80.77L58.19 79.98H56.77L51.9 79.68L35.25 79.23L20.81 78.63L6.82 77.88L3.3 77.13L0 72.78L0.340004 70.61L3.3 68.62L7.54 68.99L16.91 69.63L30.97 70.6L41.17 71.2L56.28 72.77H58.68L59.02 71.8L58.2 71.2L57.56 70.6L43.01 60.74L27.26 50.32L19.01 44.32L14.55 41.28L12.3 38.43L11.33 32.21L15.38 27.75L20.82 28.12L22.21 28.49L27.72 32.73L39.49 41.84L54.86 53.16L57.11 55.03L58.01 54.39L58.12 53.94L57.11 52.25L48.75 37.14L39.83 21.77L35.86 15.4L34.81 11.58C34.44 10.01 34.17 8.69 34.17 7.08L38.78 0.820007L41.33 0L47.48 0.820007L50.07 3.07001L53.89 11.81L60.08 25.57L69.68 44.28L72.49 49.83L73.99 54.97L74.55 56.54H75.52V55.64L76.31 45.1L77.77 32.16L79.19 15.51L79.68 10.82L82 5.2L86.61 2.16L90.21 3.88L93.17 8.12L92.76 10.86L91 22.3L87.55 40.22L85.3 52.22H86.61L88.11 50.72L94.18 42.66L104.38 29.91L108.88 24.85L114.13 19.26L117.5 16.6H123.87L128.56 23.57L126.46 30.77L119.9 39.09L114.46 46.14L106.66 56.64L101.79 65.04L102.24 65.71L103.4 65.6L121.02 61.85L130.54 60.13L141.9 58.18L147.04 60.58L147.6 63.02L145.58 68.01L133.43 71.01L119.18 73.86L97.96 78.88L97.7 79.07L98 79.44L107.56 80.34L111.65 80.56H121.66L140.3 81.95L145.17 85.17L148.09 89.11L147.6 92.11L140.1 95.93L129.98 93.53L106.36 87.91L98.26 85.89H97.14V86.56L103.89 93.16L116.26 104.33L131.75 118.73L132.54 122.29L130.55 125.1L128.45 124.8L114.84 114.56L109.59 109.95L97.7 99.94H96.91V100.99L99.65 105L114.12 126.75L114.87 133.42L113.82 135.59L110.07 136.9L105.95 136.15L97.48 124.26L88.74 110.87L81.69 98.87L80.83 99.36L76.67 144.17L74.72 146.46L70.22 148.18L66.47 145.33L64.48 140.72L66.47 131.61L68.87 119.72L70.82 110.27L72.58 98.53L73.63 94.63L73.56 94.37L72.7 94.48L63.85 106.63L50.39 124.82L39.74 136.22L37.19 137.23L32.77 134.94L33.18 130.85L35.65 127.21L50.39 108.46L59.28 96.84L65.02 90.13L64.98 89.16H64.64L25.49 114.58L18.52 115.48L15.52 112.67L15.89 108.06L17.31 106.56L29.08 98.46L29.04 98.5L29.05 98.54Z",
42512
42600
  fill: "#D97757"
42513
42601
  })
@@ -42521,11 +42609,11 @@ var GetStarted = () => {
42521
42609
  };
42522
42610
 
42523
42611
  // src/components/homepage/WriteInReact.tsx
42524
- import { jsx as jsx166, jsxs as jsxs68 } from "react/jsx-runtime";
42612
+ import { jsx as jsx167, jsxs as jsxs68 } from "react/jsx-runtime";
42525
42613
  var WriteInReact = () => {
42526
42614
  return /* @__PURE__ */ jsxs68("div", {
42527
42615
  children: [
42528
- /* @__PURE__ */ jsx166("h1", {
42616
+ /* @__PURE__ */ jsx167("h1", {
42529
42617
  className: "text-5xl lg:text-[5em] text-center fontbrand font-black leading-none ",
42530
42618
  style: {
42531
42619
  textShadow: "0 5px 30px var(--background)"
@@ -42539,81 +42627,81 @@ var WriteInReact = () => {
42539
42627
  className: "font-medium text-center text-lg",
42540
42628
  children: [
42541
42629
  "Create real MP4 videos with React. ",
42542
- /* @__PURE__ */ jsx166("br", {}),
42630
+ /* @__PURE__ */ jsx167("br", {}),
42543
42631
  "Parametrize content, render server-side and build applications."
42544
42632
  ]
42545
42633
  }),
42546
- /* @__PURE__ */ jsx166("br", {}),
42547
- /* @__PURE__ */ jsx166("div", {
42548
- children: /* @__PURE__ */ jsx166(GetStarted, {})
42634
+ /* @__PURE__ */ jsx167("br", {}),
42635
+ /* @__PURE__ */ jsx167("div", {
42636
+ children: /* @__PURE__ */ jsx167(GetStarted, {})
42549
42637
  }),
42550
- /* @__PURE__ */ jsx166("br", {}),
42551
- /* @__PURE__ */ jsx166("br", {}),
42552
- /* @__PURE__ */ jsx166(ChooseTemplate, {})
42638
+ /* @__PURE__ */ jsx167("br", {}),
42639
+ /* @__PURE__ */ jsx167("br", {}),
42640
+ /* @__PURE__ */ jsx167(ChooseTemplate, {})
42553
42641
  ]
42554
42642
  });
42555
42643
  };
42556
42644
 
42557
42645
  // src/components/Homepage.tsx
42558
- import { jsx as jsx167, jsxs as jsxs69 } from "react/jsx-runtime";
42646
+ import { jsx as jsx168, jsxs as jsxs69 } from "react/jsx-runtime";
42559
42647
  "use client";
42560
42648
  var NewLanding = ({ colorMode, setColorMode }) => {
42561
- return /* @__PURE__ */ jsx167(ColorModeProvider, {
42649
+ return /* @__PURE__ */ jsx168(ColorModeProvider, {
42562
42650
  colorMode,
42563
42651
  setColorMode,
42564
- children: /* @__PURE__ */ jsx167("div", {
42652
+ children: /* @__PURE__ */ jsx168("div", {
42565
42653
  className: "w-full relative",
42566
42654
  children: /* @__PURE__ */ jsxs69("div", {
42567
42655
  style: { overflow: "hidden" },
42568
42656
  children: [
42569
- /* @__PURE__ */ jsx167("div", {
42570
- children: /* @__PURE__ */ jsx167(BackgroundAnimation, {})
42657
+ /* @__PURE__ */ jsx168("div", {
42658
+ children: /* @__PURE__ */ jsx168(BackgroundAnimation, {})
42571
42659
  }),
42572
- /* @__PURE__ */ jsx167("br", {}),
42573
- /* @__PURE__ */ jsx167("br", {}),
42574
- /* @__PURE__ */ jsx167("br", {}),
42575
- /* @__PURE__ */ jsx167("br", {}),
42660
+ /* @__PURE__ */ jsx168("br", {}),
42661
+ /* @__PURE__ */ jsx168("br", {}),
42662
+ /* @__PURE__ */ jsx168("br", {}),
42663
+ /* @__PURE__ */ jsx168("br", {}),
42576
42664
  /* @__PURE__ */ jsxs69("div", {
42577
42665
  className: "max-w-[500px] lg:max-w-[1000px] m-auto pl-5 pr-5 overflow-x-clip md:overflow-x-visible relative",
42578
42666
  children: [
42579
- /* @__PURE__ */ jsx167(WriteInReact, {}),
42580
- /* @__PURE__ */ jsx167("br", {}),
42581
- /* @__PURE__ */ jsx167(IfYouKnowReact, {}),
42582
- /* @__PURE__ */ jsx167(ParameterizeAndEdit, {}),
42583
- /* @__PURE__ */ jsx167(RealMP4Videos, {}),
42584
- /* @__PURE__ */ jsx167("br", {}),
42585
- /* @__PURE__ */ jsx167("br", {}),
42586
- /* @__PURE__ */ jsx167("br", {}),
42587
- /* @__PURE__ */ jsx167(VideoAppsShowcase_default, {}),
42588
- /* @__PURE__ */ jsx167("br", {}),
42589
- /* @__PURE__ */ jsx167("br", {}),
42590
- /* @__PURE__ */ jsx167(Demo, {}),
42591
- /* @__PURE__ */ jsx167("br", {}),
42592
- /* @__PURE__ */ jsx167("br", {}),
42593
- /* @__PURE__ */ jsx167("br", {}),
42594
- /* @__PURE__ */ jsx167(SectionTitle, {
42667
+ /* @__PURE__ */ jsx168(WriteInReact, {}),
42668
+ /* @__PURE__ */ jsx168("br", {}),
42669
+ /* @__PURE__ */ jsx168(IfYouKnowReact, {}),
42670
+ /* @__PURE__ */ jsx168(ParameterizeAndEdit, {}),
42671
+ /* @__PURE__ */ jsx168(RealMP4Videos, {}),
42672
+ /* @__PURE__ */ jsx168("br", {}),
42673
+ /* @__PURE__ */ jsx168("br", {}),
42674
+ /* @__PURE__ */ jsx168("br", {}),
42675
+ /* @__PURE__ */ jsx168(VideoAppsShowcase_default, {}),
42676
+ /* @__PURE__ */ jsx168("br", {}),
42677
+ /* @__PURE__ */ jsx168("br", {}),
42678
+ /* @__PURE__ */ jsx168(Demo, {}),
42679
+ /* @__PURE__ */ jsx168("br", {}),
42680
+ /* @__PURE__ */ jsx168("br", {}),
42681
+ /* @__PURE__ */ jsx168("br", {}),
42682
+ /* @__PURE__ */ jsx168(SectionTitle, {
42595
42683
  children: "Pricing"
42596
42684
  }),
42597
- /* @__PURE__ */ jsx167(Pricing, {}),
42598
- /* @__PURE__ */ jsx167(TrustedByBanner_default, {}),
42599
- /* @__PURE__ */ jsx167("br", {}),
42600
- /* @__PURE__ */ jsx167(EvaluateRemotion_default, {}),
42601
- /* @__PURE__ */ jsx167("br", {}),
42602
- /* @__PURE__ */ jsx167("br", {}),
42603
- /* @__PURE__ */ jsx167("br", {}),
42604
- /* @__PURE__ */ jsx167(CommunityStats_default, {}),
42605
- /* @__PURE__ */ jsx167("br", {}),
42606
- /* @__PURE__ */ jsx167("br", {}),
42607
- /* @__PURE__ */ jsx167("br", {}),
42608
- /* @__PURE__ */ jsx167(EditorStarterSection_default, {}),
42609
- /* @__PURE__ */ jsx167("br", {}),
42610
- /* @__PURE__ */ jsx167("br", {}),
42611
- /* @__PURE__ */ jsx167("br", {}),
42612
- /* @__PURE__ */ jsx167("br", {}),
42613
- /* @__PURE__ */ jsx167(NewsletterButton, {}),
42614
- /* @__PURE__ */ jsx167("br", {}),
42615
- /* @__PURE__ */ jsx167("br", {}),
42616
- /* @__PURE__ */ jsx167("br", {})
42685
+ /* @__PURE__ */ jsx168(Pricing, {}),
42686
+ /* @__PURE__ */ jsx168(TrustedByBanner_default, {}),
42687
+ /* @__PURE__ */ jsx168("br", {}),
42688
+ /* @__PURE__ */ jsx168(EvaluateRemotion_default, {}),
42689
+ /* @__PURE__ */ jsx168("br", {}),
42690
+ /* @__PURE__ */ jsx168("br", {}),
42691
+ /* @__PURE__ */ jsx168("br", {}),
42692
+ /* @__PURE__ */ jsx168(CommunityStats_default, {}),
42693
+ /* @__PURE__ */ jsx168("br", {}),
42694
+ /* @__PURE__ */ jsx168("br", {}),
42695
+ /* @__PURE__ */ jsx168("br", {}),
42696
+ /* @__PURE__ */ jsx168(EditorStarterSection_default, {}),
42697
+ /* @__PURE__ */ jsx168("br", {}),
42698
+ /* @__PURE__ */ jsx168("br", {}),
42699
+ /* @__PURE__ */ jsx168("br", {}),
42700
+ /* @__PURE__ */ jsx168("br", {}),
42701
+ /* @__PURE__ */ jsx168(NewsletterButton, {}),
42702
+ /* @__PURE__ */ jsx168("br", {}),
42703
+ /* @__PURE__ */ jsx168("br", {}),
42704
+ /* @__PURE__ */ jsx168("br", {})
42617
42705
  ]
42618
42706
  })
42619
42707
  ]