@remotion/promo-pages 4.0.445 → 4.0.446

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 (28) hide show
  1. package/dist/Homepage.js +61 -42
  2. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/Homepage.js +101 -54
  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 +4 -3
  11. package/dist/components/experts/experts-data.js +0 -13
  12. package/dist/components/homepage/CommunityStatsItems.js +4 -4
  13. package/dist/components/homepage/GitHubButton.js +1 -1
  14. package/dist/components/homepage/RealMp4Videos.js +1 -1
  15. package/dist/components/prompts/PromptsGallery.js +1 -1
  16. package/dist/components/prompts/PromptsSubmit.js +2 -2
  17. package/dist/components/team/TitleTeamCards.js +1 -1
  18. package/dist/components/team.js +1 -2
  19. package/dist/design.js +1 -1
  20. package/dist/experts.js +1 -1
  21. package/dist/homepage/Pricing.js +1 -1
  22. package/dist/prompts/PromptsGallery.js +1 -1
  23. package/dist/prompts/PromptsShow.js +1 -1
  24. package/dist/prompts/PromptsSubmit.js +1 -1
  25. package/dist/team.js +1 -1
  26. package/dist/template-modal-content.js +1 -1
  27. package/dist/templates.js +1 -1
  28. package/package.json +13 -13
package/dist/Homepage.js CHANGED
@@ -2042,7 +2042,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
2042
2042
  var addSequenceStackTraces = (component) => {
2043
2043
  componentsToAddStacksTo.push(component);
2044
2044
  };
2045
- var VERSION = "4.0.445";
2045
+ var VERSION = "4.0.446";
2046
2046
  var checkMultipleRemotionVersions = () => {
2047
2047
  if (typeof globalThis === "undefined") {
2048
2048
  return;
@@ -32993,22 +32993,33 @@ var audioSchema = {
32993
32993
  loop: { type: "boolean", default: false, description: "Loop" }
32994
32994
  };
32995
32995
  var AudioInner = (props) => {
32996
- const { name, stack, showInTimeline, controls, ...otherProps } = props;
32996
+ const {
32997
+ name,
32998
+ stack,
32999
+ showInTimeline,
33000
+ controls,
33001
+ from,
33002
+ durationInFrames,
33003
+ ...otherProps
33004
+ } = props;
32997
33005
  const environment = useRemotionEnvironment();
32998
33006
  if (typeof props.src !== "string") {
32999
33007
  throw new TypeError(`The \`<Audio>\` tag requires a string for \`src\`, but got ${JSON.stringify(props.src)} instead.`);
33000
33008
  }
33001
33009
  validateMediaProps2({ playbackRate: props.playbackRate, volume: props.volume }, "Audio");
33002
- if (environment.isRendering) {
33003
- return /* @__PURE__ */ jsx313(AudioForRendering2, {
33010
+ return /* @__PURE__ */ jsx313(Sequence, {
33011
+ layout: "none",
33012
+ from: from ?? 0,
33013
+ durationInFrames: durationInFrames ?? Infinity,
33014
+ showInTimeline: false,
33015
+ children: environment.isRendering ? /* @__PURE__ */ jsx313(AudioForRendering2, {
33004
33016
  ...otherProps
33005
- });
33006
- }
33007
- return /* @__PURE__ */ jsx313(AudioForPreview2, {
33008
- name,
33009
- ...otherProps,
33010
- stack: stack ?? null,
33011
- controls
33017
+ }) : /* @__PURE__ */ jsx313(AudioForPreview2, {
33018
+ name,
33019
+ ...otherProps,
33020
+ stack: stack ?? null,
33021
+ controls
33022
+ })
33012
33023
  });
33013
33024
  };
33014
33025
  var Audio2 = Internals.wrapInSchema(AudioInner, audioSchema);
@@ -33851,38 +33862,46 @@ var VideoInner = ({
33851
33862
  onError,
33852
33863
  credentials,
33853
33864
  controls,
33854
- objectFit
33865
+ objectFit,
33866
+ from,
33867
+ durationInFrames
33855
33868
  }) => {
33856
33869
  const fallbackLogLevel = Internals.useLogLevel();
33857
- return /* @__PURE__ */ jsx65(InnerVideo, {
33858
- audioStreamIndex: audioStreamIndex ?? 0,
33859
- className: className2,
33860
- delayRenderRetries: delayRenderRetries ?? null,
33861
- delayRenderTimeoutInMilliseconds: delayRenderTimeoutInMilliseconds ?? null,
33862
- disallowFallbackToOffthreadVideo: disallowFallbackToOffthreadVideo ?? false,
33863
- fallbackOffthreadVideoProps: fallbackOffthreadVideoProps ?? {},
33864
- logLevel: logLevel ?? fallbackLogLevel,
33865
- loop: loop ?? false,
33866
- loopVolumeCurveBehavior: loopVolumeCurveBehavior ?? "repeat",
33867
- muted: muted ?? false,
33868
- name,
33869
- onVideoFrame,
33870
- playbackRate: playbackRate ?? 1,
33871
- showInTimeline: showInTimeline ?? true,
33872
- src,
33873
- style: style2 ?? {},
33874
- trimAfter,
33875
- trimBefore,
33876
- volume: volume ?? 1,
33877
- toneFrequency: toneFrequency ?? 1,
33878
- stack,
33879
- debugOverlay: debugOverlay ?? false,
33880
- debugAudioScheduling: debugAudioScheduling ?? false,
33881
- headless: headless ?? false,
33882
- onError,
33883
- credentials,
33884
- controls,
33885
- objectFit: objectFit ?? "contain"
33870
+ return /* @__PURE__ */ jsx65(Sequence, {
33871
+ layout: "none",
33872
+ from: from ?? 0,
33873
+ durationInFrames: durationInFrames ?? Infinity,
33874
+ showInTimeline: false,
33875
+ children: /* @__PURE__ */ jsx65(InnerVideo, {
33876
+ audioStreamIndex: audioStreamIndex ?? 0,
33877
+ className: className2,
33878
+ delayRenderRetries: delayRenderRetries ?? null,
33879
+ delayRenderTimeoutInMilliseconds: delayRenderTimeoutInMilliseconds ?? null,
33880
+ disallowFallbackToOffthreadVideo: disallowFallbackToOffthreadVideo ?? false,
33881
+ fallbackOffthreadVideoProps: fallbackOffthreadVideoProps ?? {},
33882
+ logLevel: logLevel ?? fallbackLogLevel,
33883
+ loop: loop ?? false,
33884
+ loopVolumeCurveBehavior: loopVolumeCurveBehavior ?? "repeat",
33885
+ muted: muted ?? false,
33886
+ name,
33887
+ onVideoFrame,
33888
+ playbackRate: playbackRate ?? 1,
33889
+ showInTimeline: showInTimeline ?? true,
33890
+ src,
33891
+ style: style2 ?? {},
33892
+ trimAfter,
33893
+ trimBefore,
33894
+ volume: volume ?? 1,
33895
+ toneFrequency: toneFrequency ?? 1,
33896
+ stack,
33897
+ debugOverlay: debugOverlay ?? false,
33898
+ debugAudioScheduling: debugAudioScheduling ?? false,
33899
+ headless: headless ?? false,
33900
+ onError,
33901
+ credentials,
33902
+ controls,
33903
+ objectFit: objectFit ?? "contain"
33904
+ })
33886
33905
  });
33887
33906
  };
33888
33907
  var Video = Internals.wrapInSchema(VideoInner, videoSchema);
@@ -35189,7 +35208,7 @@ import {
35189
35208
  import { BufferTarget, StreamTarget } from "mediabunny";
35190
35209
 
35191
35210
  // ../core/dist/esm/version.mjs
35192
- var VERSION2 = "4.0.445";
35211
+ var VERSION2 = "4.0.446";
35193
35212
 
35194
35213
  // ../web-renderer/dist/esm/index.mjs
35195
35214
  import { AudioSample, VideoSample } from "mediabunny";
@@ -1003,7 +1003,7 @@ var useIsPlayer = () => {
1003
1003
  function truthy(value) {
1004
1004
  return Boolean(value);
1005
1005
  }
1006
- var VERSION = "4.0.434";
1006
+ var VERSION = "4.0.436";
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
@@ -23232,7 +23232,7 @@ var GitHubStars = () => {
23232
23232
  width: "45px"
23233
23233
  }),
23234
23234
  /* @__PURE__ */ jsx50(StatItemContent, {
23235
- content: "38k",
23235
+ content: "39k",
23236
23236
  width: "80px",
23237
23237
  fontSize: "2.5rem",
23238
23238
  fontWeight: "bold"
@@ -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.434";
34821
+ var VERSION2 = "4.0.436";
34776
34822
 
34777
34823
  // ../web-renderer/dist/esm/index.mjs
34778
34824
  import { AudioSample, VideoSample } from "mediabunny";
@@ -41123,6 +41169,7 @@ var listOfRemotionPackages = [
41123
41169
  "@remotion/astro-example",
41124
41170
  "@remotion/babel-loader",
41125
41171
  "@remotion/bugs",
41172
+ "@remotion/brand",
41126
41173
  "@remotion/bundler",
41127
41174
  "@remotion/cli",
41128
41175
  "@remotion/cloudrun",
@@ -41375,7 +41422,7 @@ var FEATURED_TEMPLATES = [
41375
41422
  shortName: "Prompt to Motion Graphics SaaS Starter Kit",
41376
41423
  org: "remotion-dev",
41377
41424
  repoName: "template-prompt-to-motion-graphics-saas",
41378
- description: "SaaS template for AI-powered code generation with Remotion",
41425
+ description: "SaaS template for AI-powered animation generation",
41379
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.',
41380
41427
  promoBanner: {
41381
41428
  width: 2880,
@@ -42416,7 +42463,7 @@ var GithubButton = () => {
42416
42463
  " ",
42417
42464
  /* @__PURE__ */ jsx161("div", {
42418
42465
  className: "text-xs inline-block ml-2 leading-none mt-[3px] self-center",
42419
- children: "38k"
42466
+ children: "39k"
42420
42467
  })
42421
42468
  ]
42422
42469
  });
@@ -5977,7 +5977,7 @@ var useIsPlayer = () => {
5977
5977
  function truthy2(value) {
5978
5978
  return Boolean(value);
5979
5979
  }
5980
- var VERSION = "4.0.434";
5980
+ var VERSION = "4.0.436";
5981
5981
  var checkMultipleRemotionVersions = () => {
5982
5982
  if (typeof globalThis === "undefined") {
5983
5983
  return;
@@ -9055,7 +9055,7 @@ var useBasicMediaInTimeline = ({
9055
9055
  const videoConfig = useVideoConfig();
9056
9056
  const [initialVolume] = useState10(() => volume);
9057
9057
  const mediaDuration = calculateMediaDuration({
9058
- mediaDurationInFrames: videoConfig.durationInFrames,
9058
+ mediaDurationInFrames: videoConfig.durationInFrames + (trimBefore ?? 0),
9059
9059
  playbackRate,
9060
9060
  trimBefore,
9061
9061
  trimAfter
@@ -1003,7 +1003,7 @@ var useIsPlayer = () => {
1003
1003
  function truthy(value) {
1004
1004
  return Boolean(value);
1005
1005
  }
1006
- var VERSION = "4.0.434";
1006
+ var VERSION = "4.0.436";
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
@@ -5977,7 +5977,7 @@ var useIsPlayer = () => {
5977
5977
  function truthy2(value) {
5978
5978
  return Boolean(value);
5979
5979
  }
5980
- var VERSION = "4.0.434";
5980
+ var VERSION = "4.0.436";
5981
5981
  var checkMultipleRemotionVersions = () => {
5982
5982
  if (typeof globalThis === "undefined") {
5983
5983
  return;
@@ -9055,7 +9055,7 @@ var useBasicMediaInTimeline = ({
9055
9055
  const videoConfig = useVideoConfig();
9056
9056
  const [initialVolume] = useState10(() => volume);
9057
9057
  const mediaDuration = calculateMediaDuration({
9058
- mediaDurationInFrames: videoConfig.durationInFrames,
9058
+ mediaDurationInFrames: videoConfig.durationInFrames + (trimBefore ?? 0),
9059
9059
  playbackRate,
9060
9060
  trimBefore,
9061
9061
  trimAfter
@@ -5977,7 +5977,7 @@ var useIsPlayer = () => {
5977
5977
  function truthy2(value) {
5978
5978
  return Boolean(value);
5979
5979
  }
5980
- var VERSION = "4.0.434";
5980
+ var VERSION = "4.0.436";
5981
5981
  var checkMultipleRemotionVersions = () => {
5982
5982
  if (typeof globalThis === "undefined") {
5983
5983
  return;
@@ -9055,7 +9055,7 @@ var useBasicMediaInTimeline = ({
9055
9055
  const videoConfig = useVideoConfig();
9056
9056
  const [initialVolume] = useState10(() => volume);
9057
9057
  const mediaDuration = calculateMediaDuration({
9058
- mediaDurationInFrames: videoConfig.durationInFrames,
9058
+ mediaDurationInFrames: videoConfig.durationInFrames + (trimBefore ?? 0),
9059
9059
  playbackRate,
9060
9060
  trimBefore,
9061
9061
  trimAfter
@@ -23311,7 +23311,7 @@ var useIsPlayer = () => {
23311
23311
  function truthy2(value) {
23312
23312
  return Boolean(value);
23313
23313
  }
23314
- var VERSION = "4.0.434";
23314
+ var VERSION = "4.0.436";
23315
23315
  var checkMultipleRemotionVersions = () => {
23316
23316
  if (typeof globalThis === "undefined") {
23317
23317
  return;
@@ -26389,7 +26389,7 @@ var useBasicMediaInTimeline = ({
26389
26389
  const videoConfig = useVideoConfig();
26390
26390
  const [initialVolume] = useState10(() => volume);
26391
26391
  const mediaDuration = calculateMediaDuration({
26392
- mediaDurationInFrames: videoConfig.durationInFrames,
26392
+ mediaDurationInFrames: videoConfig.durationInFrames + (trimBefore ?? 0),
26393
26393
  playbackRate,
26394
26394
  trimBefore,
26395
26395
  trimAfter
@@ -23311,7 +23311,7 @@ var useIsPlayer = () => {
23311
23311
  function truthy2(value) {
23312
23312
  return Boolean(value);
23313
23313
  }
23314
- var VERSION = "4.0.434";
23314
+ var VERSION = "4.0.436";
23315
23315
  var checkMultipleRemotionVersions = () => {
23316
23316
  if (typeof globalThis === "undefined") {
23317
23317
  return;
@@ -26389,7 +26389,7 @@ var useBasicMediaInTimeline = ({
26389
26389
  const videoConfig = useVideoConfig();
26390
26390
  const [initialVolume] = useState10(() => volume);
26391
26391
  const mediaDuration = calculateMediaDuration({
26392
- mediaDurationInFrames: videoConfig.durationInFrames,
26392
+ mediaDurationInFrames: videoConfig.durationInFrames + (trimBefore ?? 0),
26393
26393
  playbackRate,
26394
26394
  trimBefore,
26395
26395
  trimAfter
@@ -5977,7 +5977,7 @@ var useIsPlayer = () => {
5977
5977
  function truthy2(value) {
5978
5978
  return Boolean(value);
5979
5979
  }
5980
- var VERSION = "4.0.434";
5980
+ var VERSION = "4.0.436";
5981
5981
  var checkMultipleRemotionVersions = () => {
5982
5982
  if (typeof globalThis === "undefined") {
5983
5983
  return;
@@ -9055,7 +9055,7 @@ var useBasicMediaInTimeline = ({
9055
9055
  const videoConfig = useVideoConfig();
9056
9056
  const [initialVolume] = useState10(() => volume);
9057
9057
  const mediaDuration = calculateMediaDuration({
9058
- mediaDurationInFrames: videoConfig.durationInFrames,
9058
+ mediaDurationInFrames: videoConfig.durationInFrames + (trimBefore ?? 0),
9059
9059
  playbackRate,
9060
9060
  trimBefore,
9061
9061
  trimAfter
@@ -5977,7 +5977,7 @@ var useIsPlayer = () => {
5977
5977
  function truthy2(value) {
5978
5978
  return Boolean(value);
5979
5979
  }
5980
- var VERSION = "4.0.434";
5980
+ var VERSION = "4.0.436";
5981
5981
  var checkMultipleRemotionVersions = () => {
5982
5982
  if (typeof globalThis === "undefined") {
5983
5983
  return;
@@ -9055,7 +9055,7 @@ var useBasicMediaInTimeline = ({
9055
9055
  const videoConfig = useVideoConfig();
9056
9056
  const [initialVolume] = useState10(() => volume);
9057
9057
  const mediaDuration = calculateMediaDuration({
9058
- mediaDurationInFrames: videoConfig.durationInFrames,
9058
+ mediaDurationInFrames: videoConfig.durationInFrames + (trimBefore ?? 0),
9059
9059
  playbackRate,
9060
9060
  trimBefore,
9061
9061
  trimAfter
@@ -19911,6 +19911,7 @@ var listOfRemotionPackages = [
19911
19911
  "@remotion/astro-example",
19912
19912
  "@remotion/babel-loader",
19913
19913
  "@remotion/bugs",
19914
+ "@remotion/brand",
19914
19915
  "@remotion/bundler",
19915
19916
  "@remotion/cli",
19916
19917
  "@remotion/cloudrun",
@@ -20163,7 +20164,7 @@ var FEATURED_TEMPLATES = [
20163
20164
  shortName: "Prompt to Motion Graphics SaaS Starter Kit",
20164
20165
  org: "remotion-dev",
20165
20166
  repoName: "template-prompt-to-motion-graphics-saas",
20166
- description: "SaaS template for AI-powered code generation with Remotion",
20167
+ description: "SaaS template for AI-powered animation generation",
20167
20168
  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.',
20168
20169
  promoBanner: {
20169
20170
  width: 2880,
@@ -260,17 +260,4 @@ export const experts = [
260
260
  since: new Date('2026-02-13').getTime(),
261
261
  description: (_jsxs("div", { children: ["Creator of", ' ', _jsx("a", { target: '_blank', href: "https://react-video-editor-mu.vercel.app/", children: "Pablituuu Studio" }), ", a premium AI-powered video editor.", _jsx("br", {}), "I specialize in building complex Remotion applications integrated with AI services like Gemini (for video analysis and highlights) and Deepgram (for automated captions). I also focus on high-performance canvas interactions using Fabric.js and cost-effective AI workflows."] })),
262
262
  },
263
- {
264
- slug: 'hai-nguyen',
265
- name: 'Hai Nguyen',
266
- image: '/img/freelancers/hai.jpg',
267
- website: 'https://haingt.dev',
268
- x: 'haingt_dev',
269
- github: 'haingt-dev',
270
- linkedin: 'in/haingt-dev/',
271
- email: 'hai@haingt.dev',
272
- videocall: null,
273
- since: new Date('2026-04-02').getTime(),
274
- description: (_jsxs("div", { children: ["Built a full", ' ', _jsx("a", { target: '_blank', href: "https://github.com/haingt-dev/Bookie/tree/master/projects/ai-book-video", children: "AI video production pipeline" }), ' ', "using Remotion 4.0 \u2014 orchestrating self-hosted TTS (viXTTS), Gemini API image generation, SRT-driven subtitle timing, and Ken Burns motion presets. The pipeline produces complete book-to-video content in about an hour (1-person operation) with editorial design overlays, cross-dissolve transitions, and audio spectrum visualization. GPU-accelerated rendering on Linux.", _jsx("br", {}), "Available for AI-powered video pipelines, multi-API media orchestration, and Remotion integrations with existing backend infrastructure."] })),
275
- },
276
263
  ];
@@ -23,14 +23,14 @@ export const InstallsPerMonth = () => {
23
23
  display: 'flex',
24
24
  alignItems: 'center',
25
25
  justifyContent: 'center',
26
- }, children: [_jsx(StatItemContent, { content: "1.4M", width: "100px", fontSize: "2.5rem", fontWeight: "bold" }), _jsx(StatItemContent, { content: _jsx("svg", { width: "40", height: "40", viewBox: "0 0 25 25", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M12.6367 2.47534C12.5488 2.44116 12.4512 2.44116 12.3584 2.47534L3.10547 5.98608L12.5 9.67749L21.8945 5.98608L12.6367 2.47534ZM2.34375 18.4519C2.34375 18.613 2.44629 18.7595 2.59766 18.8181L11.3281 22.1287V11.738L2.34375 8.20776V18.4519ZM13.6719 22.1287L22.4023 18.8181C22.5537 18.7595 22.6562 18.613 22.6562 18.4519V8.20776L13.6719 11.738V22.1287ZM11.5283 0.287842C12.1533 0.048584 12.8418 0.048584 13.4668 0.287842L23.2324 3.9939C24.2969 4.39429 25 5.40991 25 6.54761V18.4519C25 19.5896 24.2969 20.6052 23.2373 21.0105L13.4717 24.7166C12.8467 24.9558 12.1582 24.9558 11.5332 24.7166L1.76758 21.0105C0.703125 20.6052 0 19.5896 0 18.4519V6.54761C0 5.40991 0.703125 4.39429 1.7627 3.98901L11.5283 0.282959V0.287842Z", fill: "var(--text-color)" }) }), width: "50px" })] }), _jsx(StatItemContent, { content: "installs per month", width: "75%", fontSize: "1.0rem", fontWeight: "bold" })] }));
26
+ }, children: [_jsx(StatItemContent, { content: "900K", width: "100px", fontSize: "2.5rem", fontWeight: "bold" }), _jsx(StatItemContent, { content: _jsx("svg", { width: "40", height: "40", viewBox: "0 0 25 25", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M12.6367 2.47534C12.5488 2.44116 12.4512 2.44116 12.3584 2.47534L3.10547 5.98608L12.5 9.67749L21.8945 5.98608L12.6367 2.47534ZM2.34375 18.4519C2.34375 18.613 2.44629 18.7595 2.59766 18.8181L11.3281 22.1287V11.738L2.34375 8.20776V18.4519ZM13.6719 22.1287L22.4023 18.8181C22.5537 18.7595 22.6562 18.613 22.6562 18.4519V8.20776L13.6719 11.738V22.1287ZM11.5283 0.287842C12.1533 0.048584 12.8418 0.048584 13.4668 0.287842L23.2324 3.9939C24.2969 4.39429 25 5.40991 25 6.54761V18.4519C25 19.5896 24.2969 20.6052 23.2373 21.0105L13.4717 24.7166C12.8467 24.9558 12.1582 24.9558 11.5332 24.7166L1.76758 21.0105C0.703125 20.6052 0 19.5896 0 18.4519V6.54761C0 5.40991 0.703125 4.39429 1.7627 3.98901L11.5283 0.282959V0.287842Z", fill: "var(--text-color)" }) }), width: "50px" })] }), _jsx(StatItemContent, { content: "installs per month", width: "75%", fontSize: "1.0rem", fontWeight: "bold" })] }));
27
27
  };
28
28
  export const PagesOfDocs = () => {
29
- return (_jsxs(Pill, { className: "flex-col", children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center' }, children: [_jsx(StatItemContent, { content: _jsx("svg", { width: "28", height: "40", viewBox: "0 0 18 21", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M0 3.60938C0 1.61602 1.58304 0 3.53571 0H17.0357H18V0.984375V15.4219V16.4062H17.0357H16.7143V19.0312H17.0357H18V21H17.0357H3.21429C1.43839 21 0 19.5316 0 17.7188C0 17.608 0.00401786 17.4973 0.0160714 17.3906H0V3.60938ZM3.21429 16.4062C2.50312 16.4062 1.92857 16.9928 1.92857 17.7188C1.92857 18.4447 2.50312 19.0312 3.21429 19.0312H14.7857V16.4062H3.21429ZM1.92857 14.7123C2.32232 14.5359 2.75625 14.4375 3.21429 14.4375H16.0714V1.96875H3.53571C2.64777 1.96875 1.92857 2.70293 1.92857 3.60938V14.7123ZM6.10714 4.59375H13.1786H14.1429V6.5625H13.1786H6.10714H5.14286V4.59375H6.10714ZM6.10714 7.875H13.1786H14.1429V9.84375H13.1786H6.10714H5.14286V7.875H6.10714Z", fill: "var(--text-color)" }) }), width: "40px" }), _jsx(StatItemContent, { content: "800", width: "85px", maxWidth: "100px", fontSize: "2.5rem", fontWeight: "bold" })] }), _jsx(StatItemContent, { content: "pages of docs", width: "125px", fontSize: "1.0rem", fontWeight: "bold" })] }));
29
+ return (_jsxs(Pill, { className: "flex-col", children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center' }, children: [_jsx(StatItemContent, { content: _jsx("svg", { width: "28", height: "40", viewBox: "0 0 18 21", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M0 3.60938C0 1.61602 1.58304 0 3.53571 0H17.0357H18V0.984375V15.4219V16.4062H17.0357H16.7143V19.0312H17.0357H18V21H17.0357H3.21429C1.43839 21 0 19.5316 0 17.7188C0 17.608 0.00401786 17.4973 0.0160714 17.3906H0V3.60938ZM3.21429 16.4062C2.50312 16.4062 1.92857 16.9928 1.92857 17.7188C1.92857 18.4447 2.50312 19.0312 3.21429 19.0312H14.7857V16.4062H3.21429ZM1.92857 14.7123C2.32232 14.5359 2.75625 14.4375 3.21429 14.4375H16.0714V1.96875H3.53571C2.64777 1.96875 1.92857 2.70293 1.92857 3.60938V14.7123ZM6.10714 4.59375H13.1786H14.1429V6.5625H13.1786H6.10714H5.14286V4.59375H6.10714ZM6.10714 7.875H13.1786H14.1429V9.84375H13.1786H6.10714H5.14286V7.875H6.10714Z", fill: "var(--text-color)" }) }), width: "40px" }), _jsx(StatItemContent, { content: "700", width: "85px", maxWidth: "100px", fontSize: "2.5rem", fontWeight: "bold" })] }), _jsx(StatItemContent, { content: "pages of docs", width: "125px", fontSize: "1.0rem", fontWeight: "bold" })] }));
30
30
  };
31
31
  export const TemplatesAndExamples = () => (_jsxs(Pill, { className: "w-[30%] flex items-center flex-row", children: [_jsx(StatItemContent, { content: "35", width: "60px", fontSize: "2.7rem", fontWeight: "bold" }), _jsx(StatItemContent, { content: "templates & examples", width: "135px", fontSize: "1.35rem", fontWeight: "bold" })] }));
32
32
  export const GitHubStars = () => {
33
- return (_jsxs(Pill, { className: "w-[30%] flex-col", children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center' }, children: [_jsx(StatItemContent, { content: _jsx("svg", { width: "40", height: "40", viewBox: "0 0 26 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M12.9951 0C13.4424 0 13.8507 0.24375 14.0451 0.632812L17.3799 7.25625L24.8271 8.31562C25.2646 8.37656 25.6292 8.67188 25.7653 9.07969C25.9014 9.4875 25.7896 9.92812 25.4785 10.2281L20.0778 15.3937L21.3514 22.6875C21.4243 23.1094 21.2444 23.5359 20.8799 23.7891C20.5153 24.0422 20.0389 24.0703 19.65 23.8688L12.9903 20.4375L6.34027 23.8641C5.94652 24.0656 5.47014 24.0375 5.11041 23.7844C4.75069 23.5312 4.56597 23.1047 4.63889 22.6828L5.9125 15.3891L0.511803 10.2281C0.195831 9.92812 0.0888863 9.48281 0.224997 9.07969C0.361108 8.67656 0.725692 8.38125 1.16319 8.31562L8.61041 7.25625L11.9451 0.632812C12.1444 0.24375 12.5479 0 12.9951 0ZM12.9951 3.70312L10.4431 8.775C10.2729 9.10781 9.94722 9.34219 9.56319 9.39844L3.8125 10.2141L7.98819 14.2031C8.25555 14.4609 8.38194 14.8266 8.31875 15.1875L7.33194 20.7984L12.4458 18.1641C12.791 17.9859 13.2042 17.9859 13.5444 18.1641L18.6583 20.7984L17.6764 15.1922C17.6132 14.8313 17.7347 14.4656 18.0069 14.2078L22.1826 10.2188L16.4319 9.39844C16.0528 9.34219 15.7222 9.1125 15.5521 8.775L12.9951 3.70312Z", fill: "var(--text-color)" }) }), width: "45px" }), _jsx(StatItemContent, { content: "41k", width: "80px", fontSize: "2.5rem", fontWeight: "bold" })] }), _jsx(StatItemContent, { content: "GitHub stars", width: "125px", fontSize: "1.0rem", fontWeight: "bold" })] }));
33
+ return (_jsxs(Pill, { className: "w-[30%] flex-col", children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center' }, children: [_jsx(StatItemContent, { content: _jsx("svg", { width: "40", height: "40", viewBox: "0 0 26 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M12.9951 0C13.4424 0 13.8507 0.24375 14.0451 0.632812L17.3799 7.25625L24.8271 8.31562C25.2646 8.37656 25.6292 8.67188 25.7653 9.07969C25.9014 9.4875 25.7896 9.92812 25.4785 10.2281L20.0778 15.3937L21.3514 22.6875C21.4243 23.1094 21.2444 23.5359 20.8799 23.7891C20.5153 24.0422 20.0389 24.0703 19.65 23.8688L12.9903 20.4375L6.34027 23.8641C5.94652 24.0656 5.47014 24.0375 5.11041 23.7844C4.75069 23.5312 4.56597 23.1047 4.63889 22.6828L5.9125 15.3891L0.511803 10.2281C0.195831 9.92812 0.0888863 9.48281 0.224997 9.07969C0.361108 8.67656 0.725692 8.38125 1.16319 8.31562L8.61041 7.25625L11.9451 0.632812C12.1444 0.24375 12.5479 0 12.9951 0ZM12.9951 3.70312L10.4431 8.775C10.2729 9.10781 9.94722 9.34219 9.56319 9.39844L3.8125 10.2141L7.98819 14.2031C8.25555 14.4609 8.38194 14.8266 8.31875 15.1875L7.33194 20.7984L12.4458 18.1641C12.791 17.9859 13.2042 17.9859 13.5444 18.1641L18.6583 20.7984L17.6764 15.1922C17.6132 14.8313 17.7347 14.4656 18.0069 14.2078L22.1826 10.2188L16.4319 9.39844C16.0528 9.34219 15.7222 9.1125 15.5521 8.775L12.9951 3.70312Z", fill: "var(--text-color)" }) }), width: "45px" }), _jsx(StatItemContent, { content: "39k", width: "80px", fontSize: "2.5rem", fontWeight: "bold" })] }), _jsx(StatItemContent, { content: "GitHub stars", width: "125px", fontSize: "1.0rem", fontWeight: "bold" })] }));
34
34
  };
35
35
  export const DiscordMembers = () => {
36
36
  return (_jsx(Pill, { className: 'w-[30%]', children: _jsxs("div", { style: {
@@ -43,7 +43,7 @@ export const DiscordMembers = () => {
43
43
  flexDirection: 'column',
44
44
  alignItems: 'center',
45
45
  justifyContent: 'center',
46
- }, children: [_jsx(StatItemContent, { content: "8000+", width: "142px", fontSize: "2.5rem", fontWeight: "bold" }), _jsx(StatItemContent, { content: "Discord members", width: "142px", fontSize: "1rem", fontWeight: "bold" })] }), _jsx("div", { style: {
46
+ }, children: [_jsx(StatItemContent, { content: "6000+", width: "142px", fontSize: "2.5rem", fontWeight: "bold" }), _jsx(StatItemContent, { content: "Discord members", width: "142px", fontSize: "1rem", fontWeight: "bold" })] }), _jsx("div", { style: {
47
47
  display: 'flex',
48
48
  justifyContent: 'center',
49
49
  }, children: _jsx(StatItemContent, { content: _jsx("svg", { width: "61", height: "47", viewBox: "0 0 46 35", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M38.9978 2.95533C38.9843 2.93009 38.962 2.91064 38.9352 2.90065C35.955 1.53492 32.8101 0.560692 29.5791 0.00230404C29.55 -0.00300893 29.5201 0.00092017 29.4934 0.0135365C29.4667 0.0261528 29.4447 0.0468187 29.4304 0.0726144C29.0019 0.84938 28.6129 1.64724 28.2648 2.46316C24.7802 1.93495 21.2356 1.93495 17.7509 2.46316C17.4015 1.64523 17.0072 0.847165 16.5697 0.0726144C16.5546 0.0475873 16.5324 0.0275657 16.506 0.0150584C16.4795 0.00255114 16.45 -0.00188563 16.421 0.00230404C13.1844 0.558177 10.034 1.53248 7.04927 2.90065C7.0231 2.91173 7.00116 2.93089 6.98669 2.95533C1.02568 11.8535 -0.609293 20.5251 0.188637 29.0951C0.190896 29.1167 0.197628 29.1376 0.208402 29.1564C0.219177 29.1752 0.233759 29.1916 0.25122 29.2045C3.7235 31.7693 7.60667 33.7268 11.7352 34.9934C11.7648 35.0025 11.7966 35.0022 11.8261 34.9924C11.8556 34.9826 11.8812 34.9638 11.8994 34.9387C12.7852 33.7344 13.5702 32.4593 14.2463 31.1263C14.2553 31.108 14.2604 31.088 14.2613 31.0676C14.2622 31.0471 14.2589 31.0268 14.2516 31.0077C14.2442 30.9886 14.233 30.9713 14.2186 30.9567C14.2043 30.9422 14.1871 30.9308 14.1681 30.9232C12.9278 30.4486 11.7271 29.8765 10.5774 29.2123C10.5571 29.1999 10.54 29.1828 10.5277 29.1624C10.5154 29.142 10.5082 29.119 10.5067 29.0953C10.5051 29.0715 10.5093 29.0478 10.5189 29.026C10.5285 29.0042 10.5432 28.985 10.5617 28.9701C10.8042 28.7904 11.0468 28.6029 11.2736 28.4155C11.2936 28.3979 11.3182 28.3864 11.3445 28.3822C11.3708 28.3781 11.3978 28.3815 11.4222 28.392C18.9478 31.8216 27.0992 31.8216 34.5388 28.392C34.5625 28.3804 34.589 28.3757 34.6153 28.3785C34.6416 28.3813 34.6666 28.3914 34.6874 28.4076C34.9143 28.5951 35.1568 28.7904 35.3993 28.9701C35.4178 28.985 35.4325 29.0042 35.4421 29.026C35.4517 29.0478 35.4559 29.0715 35.4543 29.0953C35.4528 29.119 35.4456 29.142 35.4333 29.1624C35.421 29.1828 35.4039 29.1999 35.3836 29.2123C34.2369 29.8799 33.0357 30.4496 31.7929 30.9154C31.7739 30.923 31.7567 30.9344 31.7424 30.9489C31.728 30.9635 31.7168 30.9808 31.7095 30.9999C31.7021 31.019 31.6988 31.0393 31.6997 31.0597C31.7006 31.0801 31.7057 31.1001 31.7147 31.1185C32.4026 32.4449 33.187 33.7191 34.0616 34.9309C34.0798 34.956 34.1054 34.9748 34.1349 34.9846C34.1644 34.9944 34.1962 34.9947 34.2258 34.9856C38.3663 33.7246 42.2606 31.7669 45.7411 29.1967C45.7589 29.1841 45.7737 29.1679 45.7846 29.149C45.7954 29.1301 45.8019 29.109 45.8037 29.0873C46.758 19.1892 44.1922 10.5879 38.9978 2.95533ZM15.3728 23.8765C13.1042 23.8765 11.2423 21.7985 11.2423 19.2517C11.2423 16.7049 13.0729 14.619 15.3728 14.619C17.6962 14.619 19.5424 16.7127 19.5032 19.2439C19.5032 21.7985 17.6727 23.8765 15.3728 23.8765ZM30.6586 23.8765C28.39 23.8765 26.5282 21.7985 26.5282 19.2517C26.5282 16.7049 28.3509 14.619 30.6586 14.619C32.982 14.619 34.8282 16.7127 34.7891 19.2439C34.7891 21.7985 32.9742 23.8765 30.6586 23.8765Z", fill: "var(--text-color)" }) }), width: "45px" }) })] }) }));
@@ -3,5 +3,5 @@ const GithubIcon = () => {
3
3
  return (_jsx("svg", { viewBox: "0 0 496 512", style: { height: 24, marginRight: 8 }, children: _jsx("path", { fill: "currentColor", 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" }) }));
4
4
  };
5
5
  export const GithubButton = () => {
6
- return (_jsxs("div", { className: "flex flex-row items-center text-base", children: [_jsx(GithubIcon, {}), " ", _jsx("span", { children: "GitHub" }), ' ', _jsx("div", { className: "text-xs inline-block ml-2 leading-none mt-[3px] self-center", children: '41k' })] }));
6
+ return (_jsxs("div", { className: "flex flex-row items-center text-base", children: [_jsx(GithubIcon, {}), " ", _jsx("span", { children: "GitHub" }), ' ', _jsx("div", { className: "text-xs inline-block ml-2 leading-none mt-[3px] self-center", children: '39k' })] }));
7
7
  };
@@ -37,5 +37,5 @@ export const RealMP4Videos = () => {
37
37
  maxWidth: '100%',
38
38
  borderRadius: 7,
39
39
  overflow: 'hidden',
40
- }, className: "w-[550px] cursor-default! relative lg:translate-x-8 -mt-20 lg:mt-0" }) }), ' ', _jsxs("div", { className: "font-brand", children: [_jsxs("h2", { className: "text-4xl fontbrand", children: [_jsx("span", { className: 'text-brand', children: "Scalable" }), " rendering"] }), _jsxs("p", { className: "leading-relaxed", children: ["Render the video as .mp4 or other formats. ", _jsx("br", {}), "Locally, on the server or serverless."] }), ' ', _jsx("div", { className: "h-4" }), _jsxs("div", { className: "leading-6", children: [_jsxs("a", { className: "no-underline text-brand font-brand font-bold inline-flex flex-row items-center", href: "/docs/render", children: ["Render options", ' ', _jsx("svg", { style: icon, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 448 512", children: _jsx("path", { fill: "currentColor", 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" }) })] }), _jsx("br", {}), _jsxs("a", { className: "no-underline text-brand font-brand font-bold inline-flex flex-row items-center", href: "/lambda", children: ["Remotion Lambda", ' ', _jsx("svg", { style: icon, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 448 512", children: _jsx("path", { fill: "currentColor", 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" }) })] })] })] })] }));
40
+ }, className: "w-[550px] cursor-default! relative lg:translate-x-8 -mt-20 lg:mt-0" }) }), ' ', _jsxs("div", { className: "font-brand", children: [_jsxs("h2", { className: "text-4xl fontbrand", children: [_jsx("span", { className: 'text-brand', children: "Scalable" }), " rendering"] }), _jsxs("p", { className: "leading-relaxed", children: ["Render the video .mp4 or other formats. ", _jsx("br", {}), "Locally, on the server or serverless."] }), ' ', _jsx("div", { className: "h-4" }), _jsxs("div", { className: "leading-6", children: [_jsxs("a", { className: "no-underline text-brand font-brand font-bold inline-flex flex-row items-center", href: "/docs/render", children: ["Render options", ' ', _jsx("svg", { style: icon, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 448 512", children: _jsx("path", { fill: "currentColor", 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" }) })] }), _jsx("br", {}), _jsxs("a", { className: "no-underline text-brand font-brand font-bold inline-flex flex-row items-center", href: "/lambda", children: ["Remotion Lambda", ' ', _jsx("svg", { style: icon, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 448 512", children: _jsx("path", { fill: "currentColor", 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" }) })] })] })] })] }));
41
41
  };
@@ -56,5 +56,5 @@ const Pagination = ({ currentPage, totalPages }) => {
56
56
  : 'text-muted-foreground hover:text-text'}`, children: page }, page))) }), currentPage < totalPages ? (_jsx("a", { href: getPageUrl(currentPage + 1), className: "text-muted-foreground hover:text-text no-underline hover:no-underline", children: "Next \u2192" })) : (_jsx("span", { className: "text-gray-300 cursor-not-allowed", children: "Next \u2192" }))] }));
57
57
  };
58
58
  export const PromptsGalleryPage = ({ promptSubmissions, currentPage, totalPages }) => {
59
- return (_jsx(Page, { className: "flex-col", children: _jsxs("div", { className: "m-auto max-w-[1200px] w-full px-4 py-12", children: [_jsxs("div", { className: "mb-8", children: [_jsx("h1", { className: "text-3xl font-brand font-black", children: "Prompt Showcase" }), _jsxs("p", { className: "font-brand text-muted-foreground mt-4 max-w-[700px]", children: ["See what the community has built using", ' ', _jsx("a", { href: "/docs/ai/skills", className: "underline hover:text-text underline-offset-4", children: "Remotion Skills" }), ' ', "and a coding agent like Claude Code, Codex, or OpenCode. Want to make your own?"] })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs(Button, { href: "/docs/ai/claude-code", className: "font-brand rounded-full bg-[#D97757] flex items-center text-white", children: [_jsx("svg", { width: "20", height: "20", viewBox: "0 0 149 149", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: { marginRight: 8 }, children: _jsx("path", { 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", fill: "#fff" }) }), _jsx("div", { className: "text-sm", children: "Create your own video" })] }), _jsx(Button, { href: "/prompts/submit", className: "font-brand rounded-full text-sm", children: "Share your video" })] }), _jsx("div", { className: "h-12" }), _jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6", children: promptSubmissions.map((p) => (_jsx(PromptSubmissionCard, { promptSubmission: p }, p.id))) }), _jsx(Pagination, { currentPage: currentPage, totalPages: totalPages })] }) }));
59
+ return (_jsx(Page, { className: "flex-col", children: _jsxs("div", { className: "m-auto max-w-[1200px] w-full px-4 py-12", children: [_jsxs("div", { className: "mb-8", children: [_jsx("h1", { className: "text-3xl font-brand font-black", children: "Create a video with just a prompt" }), _jsxs("p", { className: "font-brand text-muted-foreground mt-4 max-w-[700px]", children: ["With", ' ', _jsx("a", { href: "/docs/ai/skills", className: "underline hover:text-text underline-offset-4", children: "Remotion Skills" }), ", you can create videos simply by giving a prompt to your coding agent, whether it's Claude Code, Codex, or OpenCode. Browse the gallery for inspiration!"] })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs(Button, { href: "/docs/ai/claude-code", className: "font-brand rounded-full bg-[#D97757] flex items-center text-white", children: [_jsx("svg", { width: "20", height: "20", viewBox: "0 0 149 149", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: { marginRight: 8 }, children: _jsx("path", { 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", fill: "#fff" }) }), _jsx("div", { className: "text-sm", children: "Create your own video" })] }), _jsx(Button, { href: "/prompts/submit", className: "font-brand rounded-full text-sm", children: "Submit a prompt" })] }), _jsx("div", { className: "h-12" }), _jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6", children: promptSubmissions.map((p) => (_jsx(PromptSubmissionCard, { promptSubmission: p }, p.id))) }), _jsx(Pagination, { currentPage: currentPage, totalPages: totalPages })] }) }));
60
60
  };
@@ -159,11 +159,11 @@ export const PromptsSubmitPage = () => {
159
159
  modelUsed,
160
160
  ]);
161
161
  if (submitStatus.type === 'done') {
162
- return (_jsx(Page, { className: "flex-col", children: _jsx("div", { className: "m-auto max-w-[800px] w-full", children: _jsxs("div", { className: "mx-4 px-8 py-8 mt-12 pt-8", children: [_jsx("h1", { className: "text-3xl font-brand font-black", children: "Submission received!" }), _jsxs("div", { className: "mt-4 text-muted-foreground font-brand", children: ["Thanks for submitting your prompt! Your prompt submission is pending review.", _jsx("br", {}), " Once approved, it will appear on the", ' ', _jsx("a", { href: "/prompts", className: "underline", children: "prompts showcase" }), "."] }), _jsx("div", { className: "mt-4 text-muted-foreground font-brand", children: "Note that this showcase is curated - we may reject submissions if they are repetitive or not up to our quality standards. In that case, we will not give notification or reason." }), _jsx(Button, { onClick: () => {
162
+ return (_jsx(Page, { className: "flex-col", children: _jsx("div", { className: "m-auto max-w-[800px] w-full", children: _jsxs("div", { className: "mx-4 px-8 py-8 mt-12 pt-8", children: [_jsx("h1", { className: "text-3xl font-brand font-black", children: "Submission received!" }), _jsxs("div", { className: "mt-4 text-muted-foreground font-brand", children: ["Thanks for submitting your prompt! Your prompt submission is pending review.", _jsx("br", {}), " Once approved, it will appear on the", ' ', _jsx("a", { href: "/prompts", className: "underline", children: "prompts gallery" }), "."] }), _jsx("div", { className: "mt-4 text-muted-foreground font-brand", children: "Note that this showcase is curated - we may reject submissions if they are repetitive or not up to our quality standards. In that case, we will not give notification or reason." }), _jsx(Button, { onClick: () => {
163
163
  window.location.href = '/prompts';
164
164
  }, className: "font-brand rounded-full mt-4", children: "Back to gallery" })] }) }) }));
165
165
  }
166
- return (_jsx(Page, { className: "flex-col", children: _jsx("div", { className: "m-auto max-w-[800px] w-full", children: _jsxs("div", { className: "mx-4 px-8 py-8 pt-8", children: [_jsx(NewBackButton, { text: "Back to gallery", link: "/prompts" }), _jsx("h1", { className: "text-3xl font-brand font-black", children: "Share your video" }), _jsxs("p", { className: "text-muted-foreground text-sm font-brand", children: ["Share a video you made with Remotion to be featured in the", ' ', _jsx("a", { href: "/prompts", className: "underline hover:text-text underline-offset-4", children: "Prompt Showcase." })] }), _jsx("p", { className: "text-muted-foreground text-sm font-brand", children: "Note that this showcase is curated - we may reject submissions if they are repetitive or not up to our quality standards. In that case, we will not give notification or reason." }), _jsx("h2", { className: "font-brand mt-5 font-bold", children: "Title *" }), _jsx("p", { className: "text-muted-foreground text-sm mb-0 font-brand", children: "A short title for your prompt (max 80 characters)." }), _jsx(Input, { name: "title", placeholder: "Newspaper highlighting animation", className: "font-brand mt-3", value: title, maxLength: 80, onChange: (e) => setTitle(e.target.value) }), _jsxs("p", { className: "text-muted-foreground text-xs mt-1 mb-0 font-brand", children: [title.length, "/80"] }), _jsx("h2", { className: "font-brand mt-5 font-bold", children: "Video *" }), _jsx("p", { className: "text-muted-foreground text-sm mb-0 font-brand", children: "Upload a video showing the result of your prompt." }), _jsx("input", { ref: fileInputRef, type: "file", accept: "video/*", onChange: onFileSelect, className: "hidden" }), _jsxs("div", { onDrop: onDrop, onDragOver: onDragOver, onDragEnter: onDragEnter, onDragLeave: onDragLeave, className: `flex flex-col items-center py-12 mt-3 rounded-lg border-2 border-dashed transition-colors ${isDragging
166
+ return (_jsx(Page, { className: "flex-col", children: _jsx("div", { className: "m-auto max-w-[800px] w-full", children: _jsxs("div", { className: "mx-4 px-8 py-8 pt-8", children: [_jsx(NewBackButton, { text: "Back to gallery", link: "/prompts" }), _jsx("h1", { className: "text-3xl font-brand font-black", children: "Submit a prompt" }), _jsxs("p", { className: "text-muted-foreground text-sm font-brand", children: ["Submit a prompt to be featured in the", ' ', _jsx("a", { href: "/prompts", className: "underline hover:text-text underline-offset-4", children: "prompt gallery." })] }), _jsx("p", { className: "text-muted-foreground text-sm font-brand", children: "Note that this showcase is curated - we may reject submissions if they are repetitive or not up to our quality standards. In that case, we will not give notification or reason." }), _jsx("h2", { className: "font-brand mt-5 font-bold", children: "Title *" }), _jsx("p", { className: "text-muted-foreground text-sm mb-0 font-brand", children: "A short title for your prompt (max 80 characters)." }), _jsx(Input, { name: "title", placeholder: "Newspaper highlighting animation", className: "font-brand mt-3", value: title, maxLength: 80, onChange: (e) => setTitle(e.target.value) }), _jsxs("p", { className: "text-muted-foreground text-xs mt-1 mb-0 font-brand", children: [title.length, "/80"] }), _jsx("h2", { className: "font-brand mt-5 font-bold", children: "Video *" }), _jsx("p", { className: "text-muted-foreground text-sm mb-0 font-brand", children: "Upload a video showing the result of your prompt." }), _jsx("input", { ref: fileInputRef, type: "file", accept: "video/*", onChange: onFileSelect, className: "hidden" }), _jsxs("div", { onDrop: onDrop, onDragOver: onDragOver, onDragEnter: onDragEnter, onDragLeave: onDragLeave, className: `flex flex-col items-center py-12 mt-3 rounded-lg border-2 border-dashed transition-colors ${isDragging
167
167
  ? 'border-brand bg-brand/10'
168
168
  : 'border-muted-foreground/25'}`, children: [uploadState.type === 'idle' &&
169
169
  (isDragging ? (_jsx("div", { className: "font-brand text-sm text-brand font-medium", children: "Drop your video here" })) : (_jsxs(_Fragment, { children: [_jsx(Button, { className: "font-brand rounded-full", onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, children: "Choose video file" }), _jsx("div", { className: "font-brand text-sm mt-3 text-muted-foreground", children: "or drag and drop a video file here" })] }))), uploadState.type === 'uploading' && (_jsxs("div", { className: "text-muted-foreground font-brand font-medium text-sm", children: ["Uploading ", Math.round(uploadState.progress), "%"] })), uploadState.type === 'processing' && (_jsx("div", { className: "text-muted-foreground font-brand font-medium text-sm", children: "Processing video..." })), uploadState.type === 'ready' && (_jsxs("div", { className: "w-full flex flex-col items-center px-4 gap-4", children: [_jsx(MuxPlayer, { playbackId: uploadState.muxPlaybackId, title: title || 'Preview' }), _jsx("button", { type: "button", className: "font-brand text-sm text-muted-foreground hover:text-foreground transition-colors", onClick: () => setUploadState({ type: 'idle' }), children: "Remove video" })] })), uploadState.type === 'error' && (_jsx("div", { className: "text-red-500 font-brand font-medium text-sm", children: uploadState.message }))] }), _jsx("h2", { className: "font-brand mt-5 font-bold", children: "Prompt(s) *" }), _jsx("p", { className: "text-muted-foreground text-sm mb-0 font-brand", children: "The prompts you used to generate this video. Separate multiple prompts with an empty line." }), _jsx(Textarea, { name: "prompt", className: "font-brand mt-3", placeholder: "Enter your full prompt here", value: prompt, onChange: (e) => setPrompt(e.target.value) }), _jsx("h2", { className: "font-brand mt-5 font-bold", children: "Tool used" }), _jsx("p", { className: "text-muted-foreground text-sm mb-0 font-brand", children: "Which tool did you use to generate this video? (e.g. Claude Code, Cursor, Codex)" }), _jsx(Input, { name: "toolUsed", placeholder: "Claude Code", className: "font-brand mt-3", value: toolUsed, onChange: (e) => setToolUsed(e.target.value) }), _jsx("h2", { className: "font-brand mt-5 font-bold", children: "Model used" }), _jsx("p", { className: "text-muted-foreground text-sm mb-0 font-brand", children: "Which AI model did you use? (e.g. Opus 4.5, GPT-5.2)" }), _jsx(Input, { name: "modelUsed", placeholder: "Opus 4.5", className: "font-brand mt-3", value: modelUsed, onChange: (e) => setModelUsed(e.target.value) }), _jsx("h2", { className: "font-brand mt-5 font-bold", children: "How should we credit you? *" }), _jsxs(Tabs, { defaultValue: "github", className: "mt-3", onValueChange: (value) => {
@@ -2,5 +2,5 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { TeamPicture } from '../TeamPicture';
3
3
  import { TeamCardsLayout } from './TeamCards';
4
4
  export const TitleTeamCards = () => {
5
- return (_jsxs("div", { children: [_jsx("h1", { className: "font-brand", children: "Team" }), _jsx(TeamPicture, {}), _jsx(TeamCardsLayout, {})] }));
5
+ return (_jsxs("div", { children: [_jsx("h1", { className: "font-brand", children: "Team" }), _jsx(TeamPicture, {}), _jsx(TeamCardsLayout, {}), _jsx("h1", { className: "font-brand mt-8", children: "Company" }), _jsxs("p", { className: "font-brand leading-normal", children: ["Wonder how we operate? If we are stable? Who is backing us? ", _jsx("br", {}), "Check our our", ' ', _jsx("a", { href: "/investors", className: "font-brand no-underline text-brand", children: "investors page" }), "!"] })] }));
6
6
  };
@@ -1,6 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { TitleTeamCards } from './team/TitleTeamCards';
3
- import { TrustSection } from './team/TrustSection';
4
3
  export const AboutUsHeader = () => {
5
4
  return (_jsx("div", { className: "flex flex-row items-center md:flex-col pt-10", children: _jsxs("div", { className: "flex-1", children: [_jsxs("h1", { className: "text-3xl font-bold font-['GTPlanar'] leading-tight max-w-[1000px] md:text-5xl", children: [_jsx("svg", { className: "h-6 md:h-8 mr-3 md:mr-6", viewBox: "0 0 105 107", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M24.0635 0.00717926C21.8217 0.12886 20.0152 0.48455 18.1946 1.17721C17.2867 1.51886 15.7984 2.26301 14.9794 2.77782C11.5535 4.926 8.94203 8.15529 7.58011 11.9134C7.30866 12.6576 6.57388 15.0304 6.10119 16.6638C2.95146 27.5825 1.16365 39.5215 0.779884 52.1579C0.719043 54.1703 0.719043 58.9628 0.779884 60.9425C1.03729 69.3199 1.83759 76.883 3.28843 84.5958C3.87813 87.7175 4.82352 91.9109 5.37109 93.8157C6.48964 97.6861 8.77354 100.981 12.0216 103.396C14.1978 105.015 16.6689 106.101 19.4068 106.635C20.7266 106.892 22.4676 107.009 23.75 106.925C25.5237 106.808 29.0432 106.335 31.9027 105.825C44.7918 103.527 56.6981 99.4131 67.4951 93.5255C74.3328 89.7954 80.1783 85.7565 85.8178 80.8564C91.4386 75.9797 96.2311 70.7333 100.448 64.8457C101.426 63.4838 101.917 62.6881 102.409 61.6866C103.673 59.1032 104.267 56.5338 104.262 53.6602C104.262 50.9831 103.757 48.6056 102.666 46.172C102.142 44.9973 101.641 44.1548 100.518 42.5542C96.3809 36.662 91.7897 31.5278 86.1922 26.5388C77.5153 18.8073 67.2096 12.4657 55.7012 7.77151C53.2067 6.75593 50.7496 5.86202 47.7918 4.89323C41.5298 2.84802 33.7795 1.07425 27.2226 0.189705C26.193 0.0493011 24.7936 -0.0302582 24.0635 0.00717926Z", fill: "#0B84F3" }) }), "The programmatic video dream", ' '] }), _jsx("p", { className: "leading-relaxed text-balance font-brand", children: "Started as a side project in 2021, we are now a company in Zurich, Switzerland and are pushing to combine the powers of video editing and programming!" })] }) }));
6
5
  };
@@ -11,5 +10,5 @@ const container = {
11
10
  paddingRight: 16,
12
11
  };
13
12
  export const TeamPage = () => {
14
- return (_jsx("div", { className: "bg-[var(--background)]", children: _jsxs("div", { style: container, children: [_jsx("br", {}), _jsx(AboutUsHeader, {}), _jsx("br", {}), _jsx(TitleTeamCards, {}), _jsx("br", {}), _jsx(TrustSection, {}), _jsx("br", {})] }) }));
13
+ return (_jsx("div", { className: "bg-[var(--background)]", children: _jsxs("div", { style: container, children: [_jsx("br", {}), _jsx(AboutUsHeader, {}), _jsx("br", {}), _jsx(TitleTeamCards, {}), _jsx("br", {})] }) }));
15
14
  };
package/dist/design.js CHANGED
@@ -6989,7 +6989,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
6989
6989
  var addSequenceStackTraces = (component) => {
6990
6990
  componentsToAddStacksTo.push(component);
6991
6991
  };
6992
- var VERSION = "4.0.445";
6992
+ var VERSION = "4.0.446";
6993
6993
  var checkMultipleRemotionVersions = () => {
6994
6994
  if (typeof globalThis === "undefined") {
6995
6995
  return;
package/dist/experts.js CHANGED
@@ -2042,7 +2042,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
2042
2042
  var addSequenceStackTraces = (component) => {
2043
2043
  componentsToAddStacksTo.push(component);
2044
2044
  };
2045
- var VERSION = "4.0.445";
2045
+ var VERSION = "4.0.446";
2046
2046
  var checkMultipleRemotionVersions = () => {
2047
2047
  if (typeof globalThis === "undefined") {
2048
2048
  return;
@@ -6989,7 +6989,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
6989
6989
  var addSequenceStackTraces = (component) => {
6990
6990
  componentsToAddStacksTo.push(component);
6991
6991
  };
6992
- var VERSION = "4.0.445";
6992
+ var VERSION = "4.0.446";
6993
6993
  var checkMultipleRemotionVersions = () => {
6994
6994
  if (typeof globalThis === "undefined") {
6995
6995
  return;
@@ -6989,7 +6989,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
6989
6989
  var addSequenceStackTraces = (component) => {
6990
6990
  componentsToAddStacksTo.push(component);
6991
6991
  };
6992
- var VERSION = "4.0.445";
6992
+ var VERSION = "4.0.446";
6993
6993
  var checkMultipleRemotionVersions = () => {
6994
6994
  if (typeof globalThis === "undefined") {
6995
6995
  return;
@@ -24323,7 +24323,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
24323
24323
  var addSequenceStackTraces = (component) => {
24324
24324
  componentsToAddStacksTo.push(component);
24325
24325
  };
24326
- var VERSION = "4.0.445";
24326
+ var VERSION = "4.0.446";
24327
24327
  var checkMultipleRemotionVersions = () => {
24328
24328
  if (typeof globalThis === "undefined") {
24329
24329
  return;
@@ -24323,7 +24323,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
24323
24323
  var addSequenceStackTraces = (component) => {
24324
24324
  componentsToAddStacksTo.push(component);
24325
24325
  };
24326
- var VERSION = "4.0.445";
24326
+ var VERSION = "4.0.446";
24327
24327
  var checkMultipleRemotionVersions = () => {
24328
24328
  if (typeof globalThis === "undefined") {
24329
24329
  return;
package/dist/team.js CHANGED
@@ -7170,7 +7170,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
7170
7170
  var addSequenceStackTraces = (component) => {
7171
7171
  componentsToAddStacksTo.push(component);
7172
7172
  };
7173
- var VERSION = "4.0.445";
7173
+ var VERSION = "4.0.446";
7174
7174
  var checkMultipleRemotionVersions = () => {
7175
7175
  if (typeof globalThis === "undefined") {
7176
7176
  return;
@@ -6989,7 +6989,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
6989
6989
  var addSequenceStackTraces = (component) => {
6990
6990
  componentsToAddStacksTo.push(component);
6991
6991
  };
6992
- var VERSION = "4.0.445";
6992
+ var VERSION = "4.0.446";
6993
6993
  var checkMultipleRemotionVersions = () => {
6994
6994
  if (typeof globalThis === "undefined") {
6995
6995
  return;
package/dist/templates.js CHANGED
@@ -6989,7 +6989,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
6989
6989
  var addSequenceStackTraces = (component) => {
6990
6990
  componentsToAddStacksTo.push(component);
6991
6991
  };
6992
- var VERSION = "4.0.445";
6992
+ var VERSION = "4.0.446";
6993
6993
  var checkMultipleRemotionVersions = () => {
6994
6994
  if (typeof globalThis === "undefined") {
6995
6995
  return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remotion/promo-pages",
3
- "version": "4.0.445",
3
+ "version": "4.0.446",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -11,19 +11,19 @@
11
11
  },
12
12
  "type": "module",
13
13
  "dependencies": {
14
- "@remotion/animated-emoji": "4.0.445",
15
- "@remotion/design": "4.0.445",
16
- "@remotion/web-renderer": "4.0.445",
17
- "@remotion/lottie": "4.0.445",
18
- "@remotion/paths": "4.0.445",
19
- "@remotion/player": "4.0.445",
20
- "@remotion/shapes": "4.0.445",
21
- "@remotion/media": "4.0.445",
22
- "@remotion/svg-3d-engine": "4.0.445",
23
- "create-video": "4.0.445",
14
+ "@remotion/animated-emoji": "4.0.446",
15
+ "@remotion/design": "4.0.446",
16
+ "@remotion/web-renderer": "4.0.446",
17
+ "@remotion/lottie": "4.0.446",
18
+ "@remotion/paths": "4.0.446",
19
+ "@remotion/player": "4.0.446",
20
+ "@remotion/shapes": "4.0.446",
21
+ "@remotion/media": "4.0.446",
22
+ "@remotion/svg-3d-engine": "4.0.446",
23
+ "create-video": "4.0.446",
24
24
  "hls.js": "1.5.19",
25
25
  "polished": "4.3.1",
26
- "remotion": "4.0.445",
26
+ "remotion": "4.0.446",
27
27
  "zod": "4.3.6",
28
28
  "@mux/upchunk": "^3.5.0",
29
29
  "@vidstack/react": "1.12.13",
@@ -34,7 +34,7 @@
34
34
  "@mediabunny/mp3-encoder": "1.39.2"
35
35
  },
36
36
  "devDependencies": {
37
- "@remotion/eslint-config-internal": "4.0.445",
37
+ "@remotion/eslint-config-internal": "4.0.446",
38
38
  "@eslint/eslintrc": "3.1.0",
39
39
  "@types/react": "19.2.7",
40
40
  "@types/react-dom": "19.2.3",