@remotion/promo-pages 4.0.340 → 4.0.341

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 (183) hide show
  1. package/.turbo/turbo-make.log +2 -2
  2. package/LICENSE.md +7 -7
  3. package/dist/Homepage.js +52 -62
  4. package/dist/tailwind.css +3 -0
  5. package/package.json +10 -10
  6. package/src/components/homepage/CommunityStatsItems.tsx +1 -1
  7. package/src/components/homepage/Demo/icons.tsx +2 -2
  8. package/src/components/homepage/GitHubButton.tsx +1 -1
  9. package/src/components/homepage/VideoAppsShowcase.tsx +70 -90
  10. package/dist/cn.d.ts +0 -2
  11. package/dist/cn.js +0 -5
  12. package/dist/components/Homepage.d.ts +0 -6
  13. package/dist/components/Homepage.js +0 -20
  14. package/dist/components/homepage/BackgroundAnimation.d.ts +0 -2
  15. package/dist/components/homepage/BackgroundAnimation.js +0 -66
  16. package/dist/components/homepage/ChooseTemplate.d.ts +0 -2
  17. package/dist/components/homepage/ChooseTemplate.js +0 -27
  18. package/dist/components/homepage/CommunityStats.d.ts +0 -3
  19. package/dist/components/homepage/CommunityStats.js +0 -6
  20. package/dist/components/homepage/CommunityStatsItems.d.ts +0 -7
  21. package/dist/components/homepage/CommunityStatsItems.js +0 -58
  22. package/dist/components/homepage/Counter.d.ts +0 -9
  23. package/dist/components/homepage/Counter.js +0 -55
  24. package/dist/components/homepage/Demo/Card.d.ts +0 -15
  25. package/dist/components/homepage/Demo/Card.js +0 -174
  26. package/dist/components/homepage/Demo/Cards.d.ts +0 -15
  27. package/dist/components/homepage/Demo/Cards.js +0 -57
  28. package/dist/components/homepage/Demo/Comp.d.ts +0 -38
  29. package/dist/components/homepage/Demo/Comp.js +0 -71
  30. package/dist/components/homepage/Demo/CurrentCountry.d.ts +0 -9
  31. package/dist/components/homepage/Demo/CurrentCountry.js +0 -48
  32. package/dist/components/homepage/Demo/DemoError.d.ts +0 -2
  33. package/dist/components/homepage/Demo/DemoError.js +0 -10
  34. package/dist/components/homepage/Demo/DemoErrorIcon.d.ts +0 -2
  35. package/dist/components/homepage/Demo/DemoErrorIcon.js +0 -16
  36. package/dist/components/homepage/Demo/DemoRender.d.ts +0 -102
  37. package/dist/components/homepage/Demo/DemoRender.js +0 -95
  38. package/dist/components/homepage/Demo/DigitWheel.d.ts +0 -9
  39. package/dist/components/homepage/Demo/DigitWheel.js +0 -94
  40. package/dist/components/homepage/Demo/DisplayedEmoji.d.ts +0 -5
  41. package/dist/components/homepage/Demo/DisplayedEmoji.js +0 -63
  42. package/dist/components/homepage/Demo/DoneCheckmark.d.ts +0 -2
  43. package/dist/components/homepage/Demo/DoneCheckmark.js +0 -20
  44. package/dist/components/homepage/Demo/DownloadNudge.d.ts +0 -2
  45. package/dist/components/homepage/Demo/DownloadNudge.js +0 -27
  46. package/dist/components/homepage/Demo/DragAndDropNudge.d.ts +0 -3
  47. package/dist/components/homepage/Demo/DragAndDropNudge.js +0 -26
  48. package/dist/components/homepage/Demo/EmojiCard.d.ts +0 -10
  49. package/dist/components/homepage/Demo/EmojiCard.js +0 -119
  50. package/dist/components/homepage/Demo/Minus.d.ts +0 -5
  51. package/dist/components/homepage/Demo/Minus.js +0 -11
  52. package/dist/components/homepage/Demo/PlayPauseButton.d.ts +0 -5
  53. package/dist/components/homepage/Demo/PlayPauseButton.js +0 -47
  54. package/dist/components/homepage/Demo/PlayerControls.d.ts +0 -8
  55. package/dist/components/homepage/Demo/PlayerControls.js +0 -15
  56. package/dist/components/homepage/Demo/PlayerSeekBar.d.ts +0 -11
  57. package/dist/components/homepage/Demo/PlayerSeekBar.js +0 -216
  58. package/dist/components/homepage/Demo/PlayerVolume.d.ts +0 -5
  59. package/dist/components/homepage/Demo/PlayerVolume.js +0 -53
  60. package/dist/components/homepage/Demo/Progress.d.ts +0 -4
  61. package/dist/components/homepage/Demo/Progress.js +0 -14
  62. package/dist/components/homepage/Demo/Spinner.d.ts +0 -5
  63. package/dist/components/homepage/Demo/Spinner.js +0 -37
  64. package/dist/components/homepage/Demo/Switcher.d.ts +0 -6
  65. package/dist/components/homepage/Demo/Switcher.js +0 -25
  66. package/dist/components/homepage/Demo/Temperature.d.ts +0 -6
  67. package/dist/components/homepage/Demo/Temperature.js +0 -21
  68. package/dist/components/homepage/Demo/TemperatureNumber.d.ts +0 -5
  69. package/dist/components/homepage/Demo/TemperatureNumber.js +0 -36
  70. package/dist/components/homepage/Demo/ThemeNudge.d.ts +0 -3
  71. package/dist/components/homepage/Demo/ThemeNudge.js +0 -35
  72. package/dist/components/homepage/Demo/TimeDisplay.d.ts +0 -6
  73. package/dist/components/homepage/Demo/TimeDisplay.js +0 -27
  74. package/dist/components/homepage/Demo/TrendingRepos.d.ts +0 -6
  75. package/dist/components/homepage/Demo/TrendingRepos.js +0 -65
  76. package/dist/components/homepage/Demo/icons.d.ts +0 -10
  77. package/dist/components/homepage/Demo/icons.js +0 -22
  78. package/dist/components/homepage/Demo/index.d.ts +0 -2
  79. package/dist/components/homepage/Demo/index.js +0 -95
  80. package/dist/components/homepage/Demo/math.d.ts +0 -10
  81. package/dist/components/homepage/Demo/math.js +0 -29
  82. package/dist/components/homepage/Demo/types.d.ts +0 -6
  83. package/dist/components/homepage/Demo/types.js +0 -0
  84. package/dist/components/homepage/EvaluateRemotion.d.ts +0 -3
  85. package/dist/components/homepage/EvaluateRemotion.js +0 -39
  86. package/dist/components/homepage/FreePricing.d.ts +0 -4
  87. package/dist/components/homepage/FreePricing.js +0 -75
  88. package/dist/components/homepage/GetStartedStrip.d.ts +0 -2
  89. package/dist/components/homepage/GetStartedStrip.js +0 -14
  90. package/dist/components/homepage/GitHubButton.d.ts +0 -2
  91. package/dist/components/homepage/GitHubButton.js +0 -7
  92. package/dist/components/homepage/IconForTemplate.d.ts +0 -6
  93. package/dist/components/homepage/IconForTemplate.js +0 -98
  94. package/dist/components/homepage/IfYouKnowReact.d.ts +0 -3
  95. package/dist/components/homepage/IfYouKnowReact.js +0 -23
  96. package/dist/components/homepage/InfoTooltip.d.ts +0 -6
  97. package/dist/components/homepage/InfoTooltip.js +0 -6
  98. package/dist/components/homepage/MoreTemplatesButton.d.ts +0 -2
  99. package/dist/components/homepage/MoreTemplatesButton.js +0 -10
  100. package/dist/components/homepage/MoreVideoPowerSection.d.ts +0 -2
  101. package/dist/components/homepage/MoreVideoPowerSection.js +0 -16
  102. package/dist/components/homepage/MuxVideo.d.ts +0 -7
  103. package/dist/components/homepage/MuxVideo.js +0 -45
  104. package/dist/components/homepage/NewsletterButton.d.ts +0 -2
  105. package/dist/components/homepage/NewsletterButton.js +0 -39
  106. package/dist/components/homepage/ParameterizeAndEdit.d.ts +0 -2
  107. package/dist/components/homepage/ParameterizeAndEdit.js +0 -22
  108. package/dist/components/homepage/Pricing.d.ts +0 -2
  109. package/dist/components/homepage/Pricing.js +0 -15
  110. package/dist/components/homepage/PricingBulletPoint.d.ts +0 -6
  111. package/dist/components/homepage/PricingBulletPoint.js +0 -19
  112. package/dist/components/homepage/RealMp4Videos.d.ts +0 -2
  113. package/dist/components/homepage/RealMp4Videos.js +0 -41
  114. package/dist/components/homepage/Spacer.d.ts +0 -2
  115. package/dist/components/homepage/Spacer.js +0 -4
  116. package/dist/components/homepage/TemplateIcon.d.ts +0 -5
  117. package/dist/components/homepage/TemplateIcon.js +0 -24
  118. package/dist/components/homepage/TextInput.d.ts +0 -7
  119. package/dist/components/homepage/TextInput.js +0 -34
  120. package/dist/components/homepage/TrustedByBanner.d.ts +0 -2
  121. package/dist/components/homepage/TrustedByBanner.js +0 -32
  122. package/dist/components/homepage/VideoApps.d.ts +0 -4
  123. package/dist/components/homepage/VideoApps.js +0 -72
  124. package/dist/components/homepage/VideoAppsShowcase.d.ts +0 -3
  125. package/dist/components/homepage/VideoAppsShowcase.js +0 -163
  126. package/dist/components/homepage/VideoAppsTitle.d.ts +0 -4
  127. package/dist/components/homepage/VideoAppsTitle.js +0 -4
  128. package/dist/components/homepage/VideoPlayerWithControls.d.ts +0 -20
  129. package/dist/components/homepage/VideoPlayerWithControls.js +0 -104
  130. package/dist/components/homepage/WriteInReact.d.ts +0 -2
  131. package/dist/components/homepage/WriteInReact.js +0 -10
  132. package/dist/components/homepage/YouAreHere.d.ts +0 -2
  133. package/dist/components/homepage/YouAreHere.js +0 -23
  134. package/dist/components/homepage/layout/Button.d.ts +0 -19
  135. package/dist/components/homepage/layout/Button.js +0 -29
  136. package/dist/components/homepage/layout/colors.d.ts +0 -13
  137. package/dist/components/homepage/layout/colors.js +0 -14
  138. package/dist/components/homepage/layout/use-color-mode.d.ts +0 -21
  139. package/dist/components/homepage/layout/use-color-mode.js +0 -22
  140. package/dist/components/homepage/layout/use-el-size.d.ts +0 -5
  141. package/dist/components/homepage/layout/use-el-size.js +0 -40
  142. package/dist/components/homepage/layout/use-mobile-layout.d.ts +0 -1
  143. package/dist/components/homepage/layout/use-mobile-layout.js +0 -6
  144. package/dist/components/icons/blank.d.ts +0 -3
  145. package/dist/components/icons/blank.js +0 -4
  146. package/dist/components/icons/clone.d.ts +0 -2
  147. package/dist/components/icons/clone.js +0 -2
  148. package/dist/components/icons/code-hike.d.ts +0 -3
  149. package/dist/components/icons/code-hike.js +0 -4
  150. package/dist/components/icons/cubes.d.ts +0 -3
  151. package/dist/components/icons/cubes.js +0 -4
  152. package/dist/components/icons/js.d.ts +0 -3
  153. package/dist/components/icons/js.js +0 -4
  154. package/dist/components/icons/music.d.ts +0 -2
  155. package/dist/components/icons/music.js +0 -4
  156. package/dist/components/icons/next.d.ts +0 -4
  157. package/dist/components/icons/next.js +0 -4
  158. package/dist/components/icons/overlay.d.ts +0 -3
  159. package/dist/components/icons/overlay.js +0 -4
  160. package/dist/components/icons/recorder.d.ts +0 -3
  161. package/dist/components/icons/recorder.js +0 -4
  162. package/dist/components/icons/remix.d.ts +0 -3
  163. package/dist/components/icons/remix.js +0 -4
  164. package/dist/components/icons/skia.d.ts +0 -3
  165. package/dist/components/icons/skia.js +0 -4
  166. package/dist/components/icons/stargazer.d.ts +0 -3
  167. package/dist/components/icons/stargazer.js +0 -4
  168. package/dist/components/icons/still.d.ts +0 -3
  169. package/dist/components/icons/still.js +0 -4
  170. package/dist/components/icons/tailwind.d.ts +0 -3
  171. package/dist/components/icons/tailwind.js +0 -4
  172. package/dist/components/icons/tiktok.d.ts +0 -3
  173. package/dist/components/icons/tiktok.js +0 -4
  174. package/dist/components/icons/ts.d.ts +0 -3
  175. package/dist/components/icons/ts.js +0 -4
  176. package/dist/components/icons/tts.d.ts +0 -3
  177. package/dist/components/icons/tts.js +0 -4
  178. package/dist/components/icons/undo.d.ts +0 -3
  179. package/dist/components/icons/undo.js +0 -2
  180. package/dist/components/icons/waveform.d.ts +0 -3
  181. package/dist/components/icons/waveform.js +0 -4
  182. package/dist/main.d.ts +0 -1
  183. package/dist/main.js +0 -6
@@ -1,8 +1,8 @@
1
1
 
2
2
  
3
- > @remotion/promo-pages@4.0.340 make /Users/jonathanburger/remotion/packages/promo-pages
3
+ > @remotion/promo-pages@4.0.341 make /Users/jonathanburger/remotion/packages/promo-pages
4
4
  > bun --env-file=../.env.bundle bundle.ts
5
5
 
6
6
  ≈ tailwindcss v4.1.1
7
7
 
8
- Done in 27ms
8
+ Done in 30ms
package/LICENSE.md CHANGED
@@ -6,10 +6,10 @@ In Remotion 5.0, the license will slightly change. [View the changes here](https
6
6
 
7
7
  Depending on the type of your legal entity, you are granted permission to use Remotion for your project. Individuals and small companies are allowed to use Remotion to create videos for free (even commercial), while a company license is required for for-profit organizations of a certain size. This two-tier system was designed to ensure funding for this project while still allowing the source code to be available and the program to be free for most. Read below for the exact terms of use.
8
8
 
9
- - [Free license](#free-license)
10
- - [Company license](#company-license)
9
+ - [Free License](#free-license)
10
+ - [Company License](#company-license)
11
11
 
12
- ## Free license
12
+ ## Free License
13
13
 
14
14
  Copyright © 2025 [Remotion](https://www.remotion.dev)
15
15
 
@@ -24,7 +24,7 @@ You are eligible to use Remotion for free if you are:
24
24
 
25
25
  ### Allowed use cases
26
26
 
27
- Permission is hereby granted, free of charge, to any person eligible for the "Free license", to use the software non-commercially or commercially for the purpose of creating videos and images and to modify the software to their own liking, for the purpose of fulfilling their custom use case or to contribute bug fixes or improvements back to Remotion.
27
+ Permission is hereby granted, free of charge, to any person eligible for the "Free License", to use the software non-commercially or commercially for the purpose of creating videos and images and to modify the software to their own liking, for the purpose of fulfilling their custom use case or to contribute bug fixes or improvements back to Remotion.
28
28
 
29
29
  ### Disallowed use cases
30
30
 
@@ -38,12 +38,12 @@ The software is provided "as is", without warranty of any kind, express or impli
38
38
 
39
39
  Support is provided on a best-we-can-do basis via GitHub Issues and Discord.
40
40
 
41
- ## Company license
41
+ ## Company License
42
42
 
43
- You are required to obtain a company license to use Remotion if you are not within the group of entities eligible for a free license. This license will enable you to use Remotion for the allowed use cases specified in the free license, and give you access to prioritized support (read the [Support Policy](https://www.remotion.dev/docs/support)).
43
+ You are required to obtain a Company License to use Remotion if you are not within the group of entities eligible for a Free License. This license will enable you to use Remotion for the allowed use cases specified in the Free License, and give you access to prioritized support (read the [Support Policy](https://www.remotion.dev/docs/support)).
44
44
 
45
45
  Visit [remotion.pro](https://www.remotion.pro/license) for pricing and to buy a license.
46
46
 
47
47
  ### FAQs
48
48
 
49
- Are you not sure whether you need a company license because of an edge case? Here are some [frequently asked questions](https://www.remotion.pro/faq).
49
+ Are you not sure whether you need a Company License because of an edge case? Here are some [frequently asked questions](https://www.remotion.pro/faq).
package/dist/Homepage.js CHANGED
@@ -735,7 +735,7 @@ var __defProp2, __export2 = (target, all) => {
735
735
  });
736
736
  }, useIsPlayer = () => {
737
737
  return useContext(IsPlayerContext);
738
- }, VERSION = "4.0.340", checkMultipleRemotionVersions = () => {
738
+ }, VERSION = "4.0.341", checkMultipleRemotionVersions = () => {
739
739
  if (typeof globalThis === "undefined") {
740
740
  return;
741
741
  }
@@ -11497,7 +11497,7 @@ var GitHubStars = () => {
11497
11497
  width: "45px"
11498
11498
  }),
11499
11499
  /* @__PURE__ */ jsx7(StatItemContent, {
11500
- content: "23k",
11500
+ content: "24k",
11501
11501
  width: "80px",
11502
11502
  fontSize: "2.5rem",
11503
11503
  fontWeight: "bold"
@@ -18471,7 +18471,7 @@ var PausedIcon = (props) => {
18471
18471
  className: "svg-inline--fa fa-play fa-w-14",
18472
18472
  role: "img",
18473
18473
  xmlns: "http://www.w3.org/2000/svg",
18474
- viewBox: "0 0 448 512",
18474
+ viewBox: "0 0 480 512",
18475
18475
  ...props,
18476
18476
  children: /* @__PURE__ */ jsx71("path", {
18477
18477
  fill: "currentColor",
@@ -18482,7 +18482,7 @@ var PausedIcon = (props) => {
18482
18482
  var PlayingIcon = (props) => {
18483
18483
  return /* @__PURE__ */ jsx71("svg", {
18484
18484
  xmlns: "http://www.w3.org/2000/svg",
18485
- viewBox: "0 0 320 512",
18485
+ viewBox: "0 0 400 512",
18486
18486
  fill: "currentColor",
18487
18487
  ...props,
18488
18488
  children: /* @__PURE__ */ jsx71("path", {
@@ -20000,7 +20000,7 @@ var videoApps = [
20000
20000
  link: "https://banger.show?ref=remotion",
20001
20001
  videoWidth: 1080,
20002
20002
  videoHeight: 1080,
20003
- muxId: "riYdneJ2zu1Vqiayoe1qAZXcSIRq0201tHgSBbh9JbtlU",
20003
+ muxId: "Kg02XHfkR6x8400BtO4Ica54XlSPimmmTRpqDHHUaeACk",
20004
20004
  buttonText: "Banger.Show website"
20005
20005
  },
20006
20006
  {
@@ -20040,59 +20040,16 @@ var icon5 = {
20040
20040
  var VideoAppsShowcase = () => {
20041
20041
  const [activeTab, setActiveTab] = useState40(0);
20042
20042
  const [isMuted, setIsMuted] = useState40(true);
20043
+ const [isPlaying, setIsPlaying] = useState40(false);
20043
20044
  const videoRef = useRef35(null);
20044
20045
  const containerRef = useRef35(null);
20045
- useEffect47(() => {
20046
- const observer = new IntersectionObserver((entries) => {
20047
- if (entries[0].isIntersecting) {
20048
- if (videoRef.current && videoRef.current.paused) {
20049
- videoRef.current.muted = true;
20050
- setIsMuted(true);
20051
- videoRef.current.play().then(() => {}).catch((error) => {
20052
- console.error("Playback error:", error);
20053
- });
20054
- }
20055
- } else if (videoRef.current && !videoRef.current.paused) {
20056
- videoRef.current.pause();
20057
- }
20058
- }, { threshold: 0.5 });
20059
- const currentContainer = containerRef.current;
20060
- if (currentContainer) {
20061
- observer.observe(currentContainer);
20062
- }
20063
- return () => {
20064
- if (currentContainer) {
20065
- observer.unobserve(currentContainer);
20066
- }
20067
- };
20068
- }, []);
20069
20046
  useEffect47(() => {
20070
20047
  const video = videoRef.current;
20071
20048
  if (video) {
20072
20049
  video.pause();
20050
+ setIsPlaying(false);
20073
20051
  video.currentTime = 0;
20074
20052
  video.load();
20075
- const observer = new IntersectionObserver((entries) => {
20076
- if (entries[0].isIntersecting) {
20077
- if (video) {
20078
- video.muted = true;
20079
- setIsMuted(true);
20080
- video.play().then(() => {}).catch((error) => {
20081
- console.error("Playback error:", error);
20082
- });
20083
- }
20084
- }
20085
- }, { threshold: 0.5 });
20086
- observer.observe(video);
20087
- return () => {
20088
- observer.disconnect();
20089
- video.muted = false;
20090
- if (video) {
20091
- video.pause();
20092
- video.currentTime = 0;
20093
- video.load();
20094
- }
20095
- };
20096
20053
  }
20097
20054
  }, [activeTab]);
20098
20055
  const handlePlayPause = () => {
@@ -20100,12 +20057,16 @@ var VideoAppsShowcase = () => {
20100
20057
  if (videoRef.current.paused) {
20101
20058
  const playPromise = videoRef.current.play();
20102
20059
  if (playPromise !== undefined) {
20103
- playPromise.then(() => {}).catch((error) => {
20060
+ playPromise.then(() => {
20061
+ setIsPlaying(true);
20062
+ }).catch((error) => {
20104
20063
  console.error("Playback error:", error);
20064
+ setIsPlaying(false);
20105
20065
  });
20106
20066
  }
20107
20067
  } else {
20108
20068
  videoRef.current.pause();
20069
+ setIsPlaying(false);
20109
20070
  }
20110
20071
  }
20111
20072
  };
@@ -20138,7 +20099,7 @@ var VideoAppsShowcase = () => {
20138
20099
  className: "flex-1 flex flex-col lg:flex-row justify-center",
20139
20100
  children: [
20140
20101
  /* @__PURE__ */ jsxs45("div", {
20141
- className: "w-full max-w-[500px] aspect-square relative overflow-hidden bg-[#eee]",
20102
+ className: "w-full max-w-[500px] aspect-square relative overflow-hidden bg-[#eee] cursor-pointer",
20142
20103
  onClick: handlePlayPause,
20143
20104
  children: [
20144
20105
  /* @__PURE__ */ jsx104(MuxVideo, {
@@ -20149,20 +20110,48 @@ var VideoAppsShowcase = () => {
20149
20110
  playsInline: true,
20150
20111
  muted: isMuted
20151
20112
  }),
20152
- isMuted && /* @__PURE__ */ jsx104("button", {
20113
+ /* @__PURE__ */ jsx104("button", {
20114
+ type: "button",
20115
+ className: "absolute bottom-2.5 left-2.5 bg-white text-black rounded-full w-8 h-8 flex justify-center items-center text-base cursor-pointer transition-colors border-2 border-black border-solid",
20116
+ onClick: (e) => {
20117
+ e.stopPropagation();
20118
+ handlePlayPause();
20119
+ },
20120
+ children: isPlaying ? /* @__PURE__ */ jsx104(PlayingIcon, {
20121
+ style: {
20122
+ width: 12,
20123
+ height: 20,
20124
+ marginLeft: "2px",
20125
+ marginTop: "1px"
20126
+ }
20127
+ }) : /* @__PURE__ */ jsx104(PausedIcon, {
20128
+ style: {
20129
+ width: 14,
20130
+ height: 16,
20131
+ marginLeft: "2px",
20132
+ marginTop: "0.5px"
20133
+ }
20134
+ })
20135
+ }),
20136
+ /* @__PURE__ */ jsx104("button", {
20153
20137
  type: "button",
20154
20138
  className: "absolute bottom-2.5 right-2.5 bg-white text-black rounded-full w-8 h-8 flex justify-center items-center text-base cursor-pointer transition-colors border-2 border-black border-solid",
20155
20139
  onClick: (e) => {
20156
20140
  e.stopPropagation();
20157
20141
  handleMuteToggle();
20158
20142
  },
20159
- children: /* @__PURE__ */ jsx104("svg", {
20160
- style: { width: 24 },
20161
- viewBox: "0 0 576 512",
20162
- children: /* @__PURE__ */ jsx104("path", {
20163
- fill: "black",
20164
- d: "M0 160L0 352l128 0L272 480l48 0 0-448-48 0L128 160 0 160zm441 23l-17-17L390.1 200l17 17 39 39-39 39-17 17L424 345.9l17-17 39-39 39 39 17 17L569.9 312l-17-17-39-39 39-39 17-17L536 166.1l-17 17-39 39-39-39z"
20165
- })
20143
+ children: isMuted ? /* @__PURE__ */ jsx104(IsMutedIcon, {
20144
+ style: {
20145
+ width: 16,
20146
+ height: 16,
20147
+ marginTop: "1px"
20148
+ }
20149
+ }) : /* @__PURE__ */ jsx104(NotMutedIcon, {
20150
+ style: {
20151
+ width: 16,
20152
+ height: 16,
20153
+ marginTop: "1px"
20154
+ }
20166
20155
  })
20167
20156
  })
20168
20157
  ]
@@ -20312,7 +20301,8 @@ var listOfRemotionPackages = [
20312
20301
  "@remotion/compositor",
20313
20302
  "@remotion/example-videos",
20314
20303
  "@remotion/whisper-web",
20315
- "@remotion/video"
20304
+ "@remotion/video",
20305
+ "@remotion/web-renderer"
20316
20306
  ];
20317
20307
  function truthy3(value) {
20318
20308
  return Boolean(value);
@@ -21359,7 +21349,7 @@ var GithubButton = () => {
21359
21349
  " ",
21360
21350
  /* @__PURE__ */ jsx130("div", {
21361
21351
  className: "text-xs inline-block ml-2 leading-none mt-[3px] self-center",
21362
- children: "22k"
21352
+ children: "24k"
21363
21353
  })
21364
21354
  ]
21365
21355
  });
package/dist/tailwind.css CHANGED
@@ -118,6 +118,9 @@
118
118
  .left-1\/2 {
119
119
  left: calc(1/2 * 100%);
120
120
  }
121
+ .left-2\.5 {
122
+ left: calc(var(--spacing) * 2.5);
123
+ }
121
124
  .z-0 {
122
125
  z-index: 0;
123
126
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remotion/promo-pages",
3
- "version": "4.0.340",
3
+ "version": "4.0.341",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -10,14 +10,14 @@
10
10
  "polished": "4.3.1",
11
11
  "zod": "3.22.3",
12
12
  "bun-plugin-tailwind": "0.0.15",
13
- "@remotion/animated-emoji": "4.0.340",
14
- "@remotion/lottie": "4.0.340",
15
- "@remotion/lambda": "4.0.340",
16
- "@remotion/player": "4.0.340",
17
- "@remotion/shapes": "4.0.340",
18
- "create-video": "4.0.340",
19
- "remotion": "4.0.340",
20
- "@remotion/paths": "4.0.340"
13
+ "@remotion/animated-emoji": "4.0.341",
14
+ "@remotion/player": "4.0.341",
15
+ "@remotion/lambda": "4.0.341",
16
+ "@remotion/shapes": "4.0.341",
17
+ "@remotion/lottie": "4.0.341",
18
+ "@remotion/paths": "4.0.341",
19
+ "create-video": "4.0.341",
20
+ "remotion": "4.0.341"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@eslint/eslintrc": "3.1.0",
@@ -34,7 +34,7 @@
34
34
  "tailwind-merge": "2.5.2",
35
35
  "bun-plugin-tailwind": "0.0.13",
36
36
  "clsx": "2.1.1",
37
- "@remotion/eslint-config-internal": "4.0.340"
37
+ "@remotion/eslint-config-internal": "4.0.341"
38
38
  },
39
39
  "repository": {
40
40
  "url": "https://github.com/remotion-dev/remotion/tree/main/packages/promo-pages"
@@ -177,7 +177,7 @@ export const GitHubStars: React.FC = () => {
177
177
  width="45px"
178
178
  />
179
179
  <StatItemContent
180
- content="23k"
180
+ content="24k"
181
181
  width="80px"
182
182
  fontSize="2.5rem"
183
183
  fontWeight="bold"
@@ -50,7 +50,7 @@ export const PausedIcon: React.FC<SVGProps<SVGSVGElement>> = (props) => {
50
50
  className="svg-inline--fa fa-play fa-w-14"
51
51
  role="img"
52
52
  xmlns="http://www.w3.org/2000/svg"
53
- viewBox="0 0 448 512"
53
+ viewBox="0 0 480 512"
54
54
  {...props}
55
55
  >
56
56
  <path
@@ -65,7 +65,7 @@ export const PlayingIcon: React.FC<SVGProps<SVGSVGElement>> = (props) => {
65
65
  return (
66
66
  <svg
67
67
  xmlns="http://www.w3.org/2000/svg"
68
- viewBox="0 0 320 512"
68
+ viewBox="0 0 400 512"
69
69
  fill="currentColor"
70
70
  {...props}
71
71
  >
@@ -16,7 +16,7 @@ export const GithubButton: React.FC = () => {
16
16
  <div className="flex flex-row items-center text-base">
17
17
  <GithubIcon /> <span>GitHub</span>{' '}
18
18
  <div className="text-xs inline-block ml-2 leading-none mt-[3px] self-center">
19
- {'22k'}
19
+ {'24k'}
20
20
  </div>
21
21
  </div>
22
22
  );
@@ -1,5 +1,6 @@
1
1
  import React, {useEffect, useRef, useState} from 'react';
2
2
 
3
+ import {IsMutedIcon, NotMutedIcon, PausedIcon, PlayingIcon} from './Demo/icons';
3
4
  import {MuxVideo} from './MuxVideo';
4
5
  import {SectionTitle} from './VideoAppsTitle';
5
6
 
@@ -18,7 +19,7 @@ const videoApps = [
18
19
  link: 'https://banger.show?ref=remotion',
19
20
  videoWidth: 1080,
20
21
  videoHeight: 1080,
21
- muxId: 'riYdneJ2zu1Vqiayoe1qAZXcSIRq0201tHgSBbh9JbtlU',
22
+ muxId: 'Kg02XHfkR6x8400BtO4Ica54XlSPimmmTRpqDHHUaeACk',
22
23
  buttonText: 'Banger.Show website',
23
24
  },
24
25
  {
@@ -64,82 +65,18 @@ const icon: React.CSSProperties = {
64
65
  const VideoAppsShowcase: React.FC = () => {
65
66
  const [activeTab, setActiveTab] = useState(0);
66
67
  const [isMuted, setIsMuted] = useState(true);
68
+ const [isPlaying, setIsPlaying] = useState(false);
67
69
  const videoRef = useRef<HTMLVideoElement>(null);
68
70
  const containerRef = useRef<HTMLDivElement>(null);
69
71
 
70
- useEffect(() => {
71
- const observer = new IntersectionObserver(
72
- (entries) => {
73
- if (entries[0].isIntersecting) {
74
- if (videoRef.current && videoRef.current.paused) {
75
- videoRef.current.muted = true; // Ensure video is muted before autoplay
76
- setIsMuted(true); // Update state to reflect muted status
77
- videoRef.current
78
- .play()
79
- .then(() => {})
80
- .catch((error) => {
81
- // eslint-disable-next-line no-console
82
- console.error('Playback error:', error);
83
- });
84
- }
85
- } else if (videoRef.current && !videoRef.current.paused) {
86
- videoRef.current.pause();
87
- }
88
- },
89
- {threshold: 0.5},
90
- );
91
-
92
- const currentContainer = containerRef.current;
93
- if (currentContainer) {
94
- observer.observe(currentContainer);
95
- }
96
-
97
- return () => {
98
- if (currentContainer) {
99
- observer.unobserve(currentContainer);
100
- }
101
- };
102
- }, []);
103
-
72
+ // Remove the intersection observer autoplay logic
104
73
  useEffect(() => {
105
74
  const video = videoRef.current;
106
75
  if (video) {
107
76
  video.pause();
77
+ setIsPlaying(false);
108
78
  video.currentTime = 0;
109
79
  video.load();
110
-
111
- // Check if the video is visible and play it if it is
112
- const observer = new IntersectionObserver(
113
- (entries) => {
114
- if (entries[0].isIntersecting) {
115
- // Introduce a delay before playing the video
116
- if (video) {
117
- video.muted = true; // Ensure video is muted before autoplay
118
- setIsMuted(true); // Update state to reflect muted status
119
- video
120
- .play()
121
- .then(() => {})
122
- .catch((error) => {
123
- // eslint-disable-next-line no-console
124
- console.error('Playback error:', error);
125
- });
126
- }
127
- }
128
- },
129
- {threshold: 0.5},
130
- );
131
-
132
- observer.observe(video);
133
-
134
- return () => {
135
- observer.disconnect();
136
- video.muted = false; // Unmute the video when it's no longer visible
137
- if (video) {
138
- video.pause();
139
- video.currentTime = 0;
140
- video.load();
141
- }
142
- };
143
80
  }
144
81
  }, [activeTab]);
145
82
 
@@ -151,16 +88,17 @@ const VideoAppsShowcase: React.FC = () => {
151
88
  if (playPromise !== undefined) {
152
89
  playPromise
153
90
  .then(() => {
154
- // Playback started successfully
91
+ setIsPlaying(true);
155
92
  })
156
93
  .catch((error) => {
157
- // Auto-play was prevented or there was an error
158
94
  // eslint-disable-next-line no-console
159
95
  console.error('Playback error:', error);
96
+ setIsPlaying(false);
160
97
  });
161
98
  }
162
99
  } else {
163
100
  videoRef.current.pause();
101
+ setIsPlaying(false);
164
102
  }
165
103
  }
166
104
  };
@@ -197,7 +135,7 @@ const VideoAppsShowcase: React.FC = () => {
197
135
  <div className={'flex-1 flex flex-col lg:flex-row justify-center'}>
198
136
  <div
199
137
  className={
200
- 'w-full max-w-[500px] aspect-square relative overflow-hidden bg-[#eee]'
138
+ 'w-full max-w-[500px] aspect-square relative overflow-hidden bg-[#eee] cursor-pointer'
201
139
  }
202
140
  onClick={handlePlayPause}
203
141
  >
@@ -212,25 +150,67 @@ const VideoAppsShowcase: React.FC = () => {
212
150
  muted={isMuted}
213
151
  />
214
152
 
215
- {isMuted && (
216
- <button
217
- type="button"
218
- className={
219
- 'absolute bottom-2.5 right-2.5 bg-white text-black rounded-full w-8 h-8 flex justify-center items-center text-base cursor-pointer transition-colors border-2 border-black border-solid'
220
- }
221
- onClick={(e) => {
222
- e.stopPropagation();
223
- handleMuteToggle();
224
- }}
225
- >
226
- <svg style={{width: 24}} viewBox="0 0 576 512">
227
- <path
228
- fill="black"
229
- d="M0 160L0 352l128 0L272 480l48 0 0-448-48 0L128 160 0 160zm441 23l-17-17L390.1 200l17 17 39 39-39 39-17 17L424 345.9l17-17 39-39 39 39 17 17L569.9 312l-17-17-39-39 39-39 17-17L536 166.1l-17 17-39 39-39-39z"
230
- />
231
- </svg>
232
- </button>
233
- )}
153
+ {/* Play/Pause Button - bottom left corner */}
154
+ <button
155
+ type="button"
156
+ className={
157
+ 'absolute bottom-2.5 left-2.5 bg-white text-black rounded-full w-8 h-8 flex justify-center items-center text-base cursor-pointer transition-colors border-2 border-black border-solid'
158
+ }
159
+ onClick={(e) => {
160
+ e.stopPropagation();
161
+ handlePlayPause();
162
+ }}
163
+ >
164
+ {isPlaying ? (
165
+ <PlayingIcon
166
+ style={{
167
+ width: 12,
168
+ height: 20,
169
+ marginLeft: '2px',
170
+ marginTop: '1px',
171
+ }}
172
+ />
173
+ ) : (
174
+ <PausedIcon
175
+ style={{
176
+ width: 14,
177
+ height: 16,
178
+ marginLeft: '2px',
179
+ marginTop: '0.5px',
180
+ }}
181
+ />
182
+ )}
183
+ </button>
184
+
185
+ {/* Mute/Unmute Button - bottom right corner */}
186
+ <button
187
+ type="button"
188
+ className={
189
+ 'absolute bottom-2.5 right-2.5 bg-white text-black rounded-full w-8 h-8 flex justify-center items-center text-base cursor-pointer transition-colors border-2 border-black border-solid'
190
+ }
191
+ onClick={(e) => {
192
+ e.stopPropagation();
193
+ handleMuteToggle();
194
+ }}
195
+ >
196
+ {isMuted ? (
197
+ <IsMutedIcon
198
+ style={{
199
+ width: 16,
200
+ height: 16,
201
+ marginTop: '1px',
202
+ }}
203
+ />
204
+ ) : (
205
+ <NotMutedIcon
206
+ style={{
207
+ width: 16,
208
+ height: 16,
209
+ marginTop: '1px',
210
+ }}
211
+ />
212
+ )}
213
+ </button>
234
214
  </div>
235
215
  <div className={'p-6 flex-1 flex flex-col h-full'}>
236
216
  <div className="text-4xl font-bold fontbrand mt-0">
package/dist/cn.d.ts DELETED
@@ -1,2 +0,0 @@
1
- import { type ClassValue } from 'clsx';
2
- export declare function cn(...inputs: ClassValue[]): string;
package/dist/cn.js DELETED
@@ -1,5 +0,0 @@
1
- import { clsx } from 'clsx';
2
- import { twMerge } from 'tailwind-merge';
3
- export function cn(...inputs) {
4
- return twMerge(clsx(inputs));
5
- }
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- import type { ColorMode } from './homepage/layout/use-color-mode';
3
- export declare const NewLanding: React.FC<{
4
- readonly colorMode: ColorMode;
5
- readonly setColorMode: (colorMode: ColorMode) => void;
6
- }>;
@@ -1,20 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { BackgroundAnimation } from './homepage/BackgroundAnimation';
4
- import CommunityStats from './homepage/CommunityStats';
5
- import { Demo } from './homepage/Demo';
6
- import EvaluateRemotionSection from './homepage/EvaluateRemotion';
7
- import { IfYouKnowReact } from './homepage/IfYouKnowReact';
8
- import { ColorModeProvider } from './homepage/layout/use-color-mode';
9
- import { MoreVideoPowerSection } from './homepage/MoreVideoPowerSection';
10
- import { NewsletterButton } from './homepage/NewsletterButton';
11
- import { ParameterizeAndEdit } from './homepage/ParameterizeAndEdit';
12
- import { Pricing } from './homepage/Pricing';
13
- import { RealMP4Videos } from './homepage/RealMp4Videos';
14
- import TrustedByBanner from './homepage/TrustedByBanner';
15
- import VideoAppsShowcase from './homepage/VideoAppsShowcase';
16
- import { SectionTitle } from './homepage/VideoAppsTitle';
17
- import { WriteInReact } from './homepage/WriteInReact';
18
- export const NewLanding = ({ colorMode, setColorMode }) => {
19
- return (_jsx(ColorModeProvider, { colorMode: colorMode, setColorMode: setColorMode, children: _jsx("div", { className: "bg-[var(--background)] relative", children: _jsxs("div", { style: { overflow: 'hidden' }, children: [_jsx("div", { children: _jsx(BackgroundAnimation, {}) }), _jsx("br", {}), _jsx("br", {}), _jsx("br", {}), _jsx("br", {}), _jsxs("div", { className: "max-w-[500px] lg:max-w-[1000px] m-auto pl-5 pr-5 overflow-x-clip md:overflow-x-visible relative", children: [_jsx(WriteInReact, {}), _jsx("br", {}), _jsx(IfYouKnowReact, {}), _jsx(ParameterizeAndEdit, {}), _jsx(RealMP4Videos, {}), _jsx("br", {}), _jsx("br", {}), _jsx("br", {}), _jsx(VideoAppsShowcase, {}), _jsx("br", {}), _jsx("br", {}), _jsx(Demo, {}), _jsx("br", {}), _jsx("br", {}), _jsx("br", {}), _jsx(SectionTitle, { children: "Pricing" }), _jsx(Pricing, {}), _jsx(TrustedByBanner, {}), _jsx("br", {}), _jsx(EvaluateRemotionSection, {}), _jsx("br", {}), _jsx("br", {}), _jsx("br", {}), _jsx(CommunityStats, {}), _jsx("br", {}), _jsx("br", {}), _jsx("br", {}), _jsx(SectionTitle, { children: "Even more power to developers" }), _jsx("div", { className: 'fontbrand text-center mb-10 -mt-4', children: "Innovative video products that you might enjoy." }), _jsx(MoreVideoPowerSection, {}), _jsx("br", {}), _jsx("br", {}), _jsx("br", {}), _jsx(NewsletterButton, {}), _jsx("br", {}), _jsx("br", {}), _jsx("br", {})] })] }) }) }));
20
- };
@@ -1,2 +0,0 @@
1
- import React from 'react';
2
- export declare const BackgroundAnimation: React.FC;