@remotion/promo-pages 4.0.470 → 4.0.471

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.
package/dist/Homepage.js CHANGED
@@ -1089,19 +1089,15 @@ import {
1089
1089
  useCallback as useCallback16,
1090
1090
  useContext as useContext32,
1091
1091
  useEffect as useEffect17,
1092
+ useImperativeHandle as useImperativeHandle7,
1092
1093
  useMemo as useMemo31,
1094
+ useRef as useRef23,
1093
1095
  useState as useState16
1094
1096
  } from "react";
1095
1097
  import { jsx as jsx25 } from "react/jsx-runtime";
1096
1098
  import { forwardRef as forwardRef11, useCallback as useCallback17, useState as useState17 } from "react";
1097
1099
  import { jsx as jsx26 } from "react/jsx-runtime";
1098
- import {
1099
- useCallback as useCallback18,
1100
- useContext as useContext33,
1101
- useImperativeHandle as useImperativeHandle7,
1102
- useLayoutEffect as useLayoutEffect10,
1103
- useRef as useRef23
1104
- } from "react";
1100
+ import { useCallback as useCallback18, useContext as useContext33, useLayoutEffect as useLayoutEffect10, useRef as useRef24 } from "react";
1105
1101
  import { jsx as jsx27 } from "react/jsx-runtime";
1106
1102
  import { createRef as createRef3 } from "react";
1107
1103
  import React28 from "react";
@@ -1109,7 +1105,7 @@ import {
1109
1105
  useCallback as useCallback19,
1110
1106
  useImperativeHandle as useImperativeHandle8,
1111
1107
  useMemo as useMemo32,
1112
- useRef as useRef24,
1108
+ useRef as useRef25,
1113
1109
  useState as useState18
1114
1110
  } from "react";
1115
1111
  import { jsx as jsx28 } from "react/jsx-runtime";
@@ -1136,7 +1132,7 @@ import React34, {
1136
1132
  useEffect as useEffect20,
1137
1133
  useImperativeHandle as useImperativeHandle9,
1138
1134
  useMemo as useMemo36,
1139
- useRef as useRef25,
1135
+ useRef as useRef26,
1140
1136
  useState as useState20,
1141
1137
  useCallback as useCallback21
1142
1138
  } from "react";
@@ -1159,7 +1155,7 @@ import {
1159
1155
  useImperativeHandle as useImperativeHandle10,
1160
1156
  useLayoutEffect as useLayoutEffect12,
1161
1157
  useMemo as useMemo39,
1162
- useRef as useRef26
1158
+ useRef as useRef27
1163
1159
  } from "react";
1164
1160
  import { jsx as jsx37 } from "react/jsx-runtime";
1165
1161
  import { jsx as jsx38 } from "react/jsx-runtime";
@@ -2285,7 +2281,7 @@ var getComponentsToAddStacksTo = () => componentsToAddStacksTo;
2285
2281
  var addSequenceStackTraces = (component) => {
2286
2282
  componentsToAddStacksTo.push(component);
2287
2283
  };
2288
- var VERSION = "4.0.470";
2284
+ var VERSION = "4.0.471";
2289
2285
  var checkMultipleRemotionVersions = () => {
2290
2286
  if (typeof globalThis === "undefined") {
2291
2287
  return;
@@ -4888,13 +4884,14 @@ var getActualTime = ({
4888
4884
  var decodeImage = async ({
4889
4885
  resolvedSrc,
4890
4886
  signal,
4887
+ requestInit,
4891
4888
  currentTime,
4892
4889
  initialLoopBehavior
4893
4890
  }) => {
4894
4891
  if (typeof ImageDecoder === "undefined") {
4895
4892
  throw new Error("Your browser does not support the WebCodecs ImageDecoder API.");
4896
4893
  }
4897
- const res = await fetch(resolvedSrc, { signal });
4894
+ const res = await fetch(resolvedSrc, { ...requestInit, signal });
4898
4895
  const { body } = res;
4899
4896
  if (!body) {
4900
4897
  throw new Error("Got no body");
@@ -5017,6 +5014,18 @@ var decodeImage = async ({
5017
5014
  frameCount: selectedTrack.frameCount
5018
5015
  };
5019
5016
  };
5017
+ var serializeRequestInit = (requestInit) => {
5018
+ if (!requestInit) {
5019
+ return null;
5020
+ }
5021
+ const requestInitWithoutSignal = { ...requestInit };
5022
+ delete requestInitWithoutSignal.signal;
5023
+ const { headers, ...rest } = requestInitWithoutSignal;
5024
+ return JSON.stringify({
5025
+ ...rest,
5026
+ headers: headers ? Array.from(new Headers(headers).entries()) : null
5027
+ });
5028
+ };
5020
5029
  var resolveAnimatedImageSource = (src) => {
5021
5030
  if (typeof window === "undefined") {
5022
5031
  return src;
@@ -5043,6 +5052,7 @@ var AnimatedImageContent = forwardRef4(({
5043
5052
  loopBehavior = "loop",
5044
5053
  playbackRate = 1,
5045
5054
  fit = "fill",
5055
+ requestInit,
5046
5056
  effects,
5047
5057
  controls,
5048
5058
  ...props
@@ -5056,6 +5066,9 @@ var AnimatedImageContent = forwardRef4(({
5056
5066
  const currentTime = frame / playbackRate / fps;
5057
5067
  const currentTimeRef = useRef9(currentTime);
5058
5068
  currentTimeRef.current = currentTime;
5069
+ const requestInitKey = serializeRequestInit(requestInit);
5070
+ const requestInitRef = useRef9(requestInit);
5071
+ requestInitRef.current = requestInit;
5059
5072
  const ref = useRef9(null);
5060
5073
  const memoizedEffects = useMemoizedEffects({
5061
5074
  effects,
@@ -5074,6 +5087,7 @@ var AnimatedImageContent = forwardRef4(({
5074
5087
  decodeImage({
5075
5088
  resolvedSrc,
5076
5089
  signal: controller.signal,
5090
+ requestInit: requestInitRef.current,
5077
5091
  currentTime: currentTimeRef.current,
5078
5092
  initialLoopBehavior
5079
5093
  }).then((d) => {
@@ -5098,6 +5112,7 @@ var AnimatedImageContent = forwardRef4(({
5098
5112
  resolvedSrc,
5099
5113
  decodeHandle,
5100
5114
  onError,
5115
+ requestInitKey,
5101
5116
  initialLoopBehavior,
5102
5117
  continueRender2
5103
5118
  ]);
@@ -5170,6 +5185,7 @@ var AnimatedImageInner = ({
5170
5185
  className,
5171
5186
  style,
5172
5187
  durationInFrames,
5188
+ requestInit,
5173
5189
  effects = [],
5174
5190
  _experimentalControls: controls,
5175
5191
  ref,
@@ -5177,7 +5193,11 @@ var AnimatedImageInner = ({
5177
5193
  }) => {
5178
5194
  const { durationInFrames: videoDuration } = useVideoConfig();
5179
5195
  const resolvedDuration = durationInFrames ?? videoDuration;
5196
+ const actualRef = useRef9(null);
5180
5197
  const memoizedEffectDefinitions = useMemoizedEffectDefinitions(effects);
5198
+ useImperativeHandle2(ref, () => {
5199
+ return actualRef.current;
5200
+ }, []);
5181
5201
  const animatedImageProps = {
5182
5202
  src,
5183
5203
  width,
@@ -5188,7 +5208,8 @@ var AnimatedImageInner = ({
5188
5208
  loopBehavior,
5189
5209
  id,
5190
5210
  className,
5191
- style
5211
+ style,
5212
+ requestInit
5192
5213
  };
5193
5214
  return /* @__PURE__ */ jsx13(Sequence, {
5194
5215
  layout: "none",
@@ -5198,9 +5219,10 @@ var AnimatedImageInner = ({
5198
5219
  _experimentalControls: controls,
5199
5220
  _remotionInternalEffects: memoizedEffectDefinitions,
5200
5221
  ...sequenceProps,
5222
+ _remotionInternalRefForOutline: actualRef,
5201
5223
  children: /* @__PURE__ */ jsx13(AnimatedImageContent, {
5202
5224
  ...animatedImageProps,
5203
- ref,
5225
+ ref: actualRef,
5204
5226
  effects,
5205
5227
  controls
5206
5228
  })
@@ -8524,16 +8546,26 @@ var HtmlInCanvasInner = forwardRef9(({
8524
8546
  const { durationInFrames: videoDuration } = useVideoConfig();
8525
8547
  const resolvedDuration = durationInFrames ?? videoDuration;
8526
8548
  const memoizedEffectDefinitions = useMemoizedEffectDefinitions(effects);
8549
+ const actualRef = useRef22(null);
8550
+ const setCanvasRef = useCallback15((node) => {
8551
+ actualRef.current = node;
8552
+ if (typeof ref === "function") {
8553
+ ref(node);
8554
+ } else if (ref) {
8555
+ ref.current = node;
8556
+ }
8557
+ }, [ref]);
8527
8558
  return /* @__PURE__ */ jsx24(Sequence, {
8528
8559
  durationInFrames: resolvedDuration,
8529
8560
  name: name ?? "<HtmlInCanvas>",
8530
8561
  _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/remotion/html-in-canvas" : undefined,
8531
8562
  _experimentalControls: controls,
8532
8563
  _remotionInternalEffects: memoizedEffectDefinitions,
8564
+ _remotionInternalRefForOutline: actualRef,
8533
8565
  layout: "none",
8534
8566
  ...sequenceProps,
8535
8567
  children: /* @__PURE__ */ jsx24(HtmlInCanvasContent, {
8536
- ref,
8568
+ ref: setCanvasRef,
8537
8569
  width,
8538
8570
  height,
8539
8571
  effects,
@@ -8649,6 +8681,7 @@ var CanvasImageContent = forwardRef10(({
8649
8681
  maxRetries = 2,
8650
8682
  delayRenderRetries,
8651
8683
  delayRenderTimeoutInMilliseconds,
8684
+ refForOutline,
8652
8685
  ...canvasProps
8653
8686
  }, ref) => {
8654
8687
  const { delayRender: delayRender2, continueRender: continueRender2, cancelRender: cancelRender2 } = useDelayRender();
@@ -8669,12 +8702,15 @@ var CanvasImageContent = forwardRef10(({
8669
8702
  }, []);
8670
8703
  const canvasRef = useCallback16((canvas) => {
8671
8704
  setOutputCanvas(canvas);
8705
+ if (refForOutline) {
8706
+ refForOutline.current = canvas;
8707
+ }
8672
8708
  if (typeof ref === "function") {
8673
8709
  ref(canvas);
8674
8710
  } else if (ref) {
8675
8711
  ref.current = canvas;
8676
8712
  }
8677
- }, [ref]);
8713
+ }, [ref, refForOutline]);
8678
8714
  useEffect17(() => {
8679
8715
  if (!outputCanvas || !sourceCanvas) {
8680
8716
  return;
@@ -8817,12 +8853,17 @@ var CanvasImageInner = forwardRef10(({
8817
8853
  stack,
8818
8854
  _experimentalControls: controls,
8819
8855
  _remotionInternalDocumentationLink,
8856
+ _remotionInternalRefForOutline,
8820
8857
  ...canvasProps
8821
8858
  }, ref) => {
8822
8859
  if (!src) {
8823
8860
  throw new Error('No "src" prop was passed to <CanvasImage>.');
8824
8861
  }
8825
8862
  const memoizedEffectDefinitions = useMemoizedEffectDefinitions(effects);
8863
+ const actualRef = useRef23(null);
8864
+ useImperativeHandle7(ref, () => {
8865
+ return actualRef.current;
8866
+ }, []);
8826
8867
  return /* @__PURE__ */ jsx25(Sequence, {
8827
8868
  layout: "none",
8828
8869
  from: from ?? 0,
@@ -8835,8 +8876,9 @@ var CanvasImageInner = forwardRef10(({
8835
8876
  _remotionInternalEffects: memoizedEffectDefinitions,
8836
8877
  _remotionInternalIsMedia: { type: "image", src },
8837
8878
  _remotionInternalStack: stack,
8879
+ _remotionInternalRefForOutline: _remotionInternalRefForOutline ?? actualRef,
8838
8880
  children: /* @__PURE__ */ jsx25(CanvasImageContent, {
8839
- ref,
8881
+ ref: actualRef,
8840
8882
  src,
8841
8883
  width,
8842
8884
  height,
@@ -8851,6 +8893,7 @@ var CanvasImageInner = forwardRef10(({
8851
8893
  maxRetries,
8852
8894
  delayRenderRetries,
8853
8895
  delayRenderTimeoutInMilliseconds,
8896
+ refForOutline: _remotionInternalRefForOutline ?? null,
8854
8897
  ...canvasProps
8855
8898
  })
8856
8899
  });
@@ -8905,19 +8948,26 @@ var ImgContent = ({
8905
8948
  crossOrigin,
8906
8949
  decoding,
8907
8950
  ref,
8951
+ refForOutline,
8908
8952
  ...props2
8909
8953
  }) => {
8910
- const imageRef = useRef23(null);
8911
- const errors = useRef23({});
8954
+ const imageRef = useRef24(null);
8955
+ const errors = useRef24({});
8912
8956
  const { delayPlayback } = useBufferState();
8913
8957
  const sequenceContext = useContext33(SequenceContext);
8914
8958
  const _propsValid = true;
8915
8959
  if (!_propsValid) {
8916
8960
  throw new Error("typecheck error");
8917
8961
  }
8918
- useImperativeHandle7(ref, () => {
8919
- return imageRef.current;
8920
- }, []);
8962
+ const imageCallbackRef = useCallback18((img) => {
8963
+ imageRef.current = img;
8964
+ refForOutline.current = img;
8965
+ if (typeof ref === "function") {
8966
+ ref(img);
8967
+ } else if (ref) {
8968
+ ref.current = img;
8969
+ }
8970
+ }, [ref, refForOutline]);
8921
8971
  const actualSrc = usePreload(src);
8922
8972
  const retryIn = useCallback18((timeout) => {
8923
8973
  if (!imageRef.current) {
@@ -9033,7 +9083,7 @@ var ImgContent = ({
9033
9083
  });
9034
9084
  return /* @__PURE__ */ jsx27("img", {
9035
9085
  ...props2,
9036
- ref: imageRef,
9086
+ ref: imageCallbackRef,
9037
9087
  crossOrigin: crossOriginValue,
9038
9088
  onError: didGetError,
9039
9089
  decoding: isRendering ? "sync" : decoding
@@ -9048,6 +9098,7 @@ var NativeImgInner = ({
9048
9098
  from,
9049
9099
  durationInFrames,
9050
9100
  _experimentalControls: controls,
9101
+ _remotionInternalRefForOutline: refForOutline,
9051
9102
  ...props2
9052
9103
  }) => {
9053
9104
  if (!src) {
@@ -9064,8 +9115,10 @@ var NativeImgInner = ({
9064
9115
  _experimentalControls: controls,
9065
9116
  showInTimeline: showInTimeline ?? true,
9066
9117
  hidden,
9118
+ _remotionInternalRefForOutline: refForOutline,
9067
9119
  children: /* @__PURE__ */ jsx27(ImgContent, {
9068
9120
  src,
9121
+ refForOutline,
9069
9122
  ...props2
9070
9123
  })
9071
9124
  });
@@ -9139,6 +9192,7 @@ var ImgInner = ({
9139
9192
  delayRenderTimeoutInMilliseconds,
9140
9193
  ...props2
9141
9194
  }) => {
9195
+ const refForOutline = useRef24(null);
9142
9196
  if (effects.length === 0) {
9143
9197
  return /* @__PURE__ */ jsx27(NativeImgInner, {
9144
9198
  ...props2,
@@ -9159,7 +9213,8 @@ var ImgInner = ({
9159
9213
  pauseWhenLoading,
9160
9214
  maxRetries,
9161
9215
  delayRenderRetries,
9162
- delayRenderTimeoutInMilliseconds
9216
+ delayRenderTimeoutInMilliseconds,
9217
+ _remotionInternalRefForOutline: refForOutline
9163
9218
  });
9164
9219
  }
9165
9220
  if (!src) {
@@ -9196,6 +9251,7 @@ var ImgInner = ({
9196
9251
  stack,
9197
9252
  _remotionInternalDocumentationLink: name === undefined ? "https://www.remotion.dev/docs/img" : undefined,
9198
9253
  _experimentalControls: controls,
9254
+ _remotionInternalRefForOutline: refForOutline,
9199
9255
  ...canvasProps
9200
9256
  });
9201
9257
  };
@@ -9212,7 +9268,7 @@ var CompositionManagerProvider = ({
9212
9268
  const [folders, setFolders] = useState18([]);
9213
9269
  const [canvasContent, setCanvasContent] = useState18(initialCanvasContent);
9214
9270
  const [compositions, setCompositions] = useState18(initialCompositions);
9215
- const currentcompositionsRef = useRef24(compositions);
9271
+ const currentcompositionsRef = useRef25(compositions);
9216
9272
  const updateCompositions = useCallback19((updateComps) => {
9217
9273
  setCompositions((comps) => {
9218
9274
  const updated = updateComps(comps);
@@ -9952,7 +10008,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
9952
10008
  if (!context) {
9953
10009
  throw new Error("SharedAudioContext not found");
9954
10010
  }
9955
- const videoRef = useRef25(null);
10011
+ const videoRef = useRef26(null);
9956
10012
  const sharedSource = useMemo36(() => {
9957
10013
  if (!context.audioContext) {
9958
10014
  return null;
@@ -10125,7 +10181,7 @@ var VideoForDevelopmentRefForwardingFunction = (props2, ref) => {
10125
10181
  current.removeEventListener("error", errorHandler);
10126
10182
  };
10127
10183
  }, [onError, src]);
10128
- const currentOnDurationCallback = useRef25(onDuration);
10184
+ const currentOnDurationCallback = useRef26(onDuration);
10129
10185
  currentOnDurationCallback.current = onDuration;
10130
10186
  useEmitVideoFrame({ ref: videoRef, onVideoFrame });
10131
10187
  useEffect20(() => {
@@ -11147,7 +11203,7 @@ var VideoForRenderingForwardFunction = ({
11147
11203
  const frame = useCurrentFrame();
11148
11204
  const volumePropsFrame = useFrameForVolumeProp(loopVolumeCurveBehavior ?? "repeat");
11149
11205
  const videoConfig = useUnsafeVideoConfig();
11150
- const videoRef = useRef26(null);
11206
+ const videoRef = useRef27(null);
11151
11207
  const sequenceContext = useContext37(SequenceContext);
11152
11208
  const mediaStartsAt = useMediaStartsAt();
11153
11209
  const environment = useRemotionEnvironment();
@@ -11919,7 +11975,7 @@ var ExpertsPageContent = ({ Link }) => {
11919
11975
  import * as React22 from "react";
11920
11976
  import * as React8 from "react";
11921
11977
  import { Fragment as Fragment22, jsx as jsx45 } from "react/jsx-runtime";
11922
- import React52, { useCallback as useCallback25, useRef as useRef27, useState as useState22 } from "react";
11978
+ import React52, { useCallback as useCallback25, useRef as useRef28, useState as useState22 } from "react";
11923
11979
 
11924
11980
  // ../../node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
11925
11981
  function r(e) {
@@ -17601,7 +17657,7 @@ var extrudeAndTransformElement = (options) => {
17601
17657
  // ../design/dist/esm/index.mjs
17602
17658
  import { jsx as jsx212, Fragment as Fragment3 } from "react/jsx-runtime";
17603
17659
  import { jsx as jsx312, jsxs as jsxs6 } from "react/jsx-runtime";
17604
- import { useEffect as useEffect23, useMemo as useMemo210, useRef as useRef28 } from "react";
17660
+ import { useEffect as useEffect23, useMemo as useMemo210, useRef as useRef29 } from "react";
17605
17661
  import { jsx as jsx46 } from "react/jsx-runtime";
17606
17662
  import { jsx as jsx53, jsxs as jsxs23 } from "react/jsx-runtime";
17607
17663
  import React62 from "react";
@@ -18123,7 +18179,7 @@ var Spinner = ({ size, duration }) => {
18123
18179
  height: size
18124
18180
  };
18125
18181
  }, [size]);
18126
- const pathsRef = useRef28([]);
18182
+ const pathsRef = useRef29([]);
18127
18183
  useEffect23(() => {
18128
18184
  const animate = () => {
18129
18185
  const now = performance.now();
@@ -18169,7 +18225,7 @@ var Button = ({
18169
18225
  ...rest
18170
18226
  }) => {
18171
18227
  const [dimensions, setDimensions] = useState22(null);
18172
- const ref = useRef27(null);
18228
+ const ref = useRef28(null);
18173
18229
  const { isActive, progress } = useHoverTransforms(ref, Boolean(disabled || loading));
18174
18230
  const onPointerEnter = useCallback25((e) => {
18175
18231
  if (e.pointerType !== "mouse") {
@@ -26238,9 +26294,358 @@ var Pricing = () => {
26238
26294
  });
26239
26295
  };
26240
26296
 
26297
+ // src/components/homepage/VideoAppsTitle.tsx
26298
+ import { jsx as jsx50 } from "react/jsx-runtime";
26299
+ var SectionTitle = ({
26300
+ children
26301
+ }) => {
26302
+ return /* @__PURE__ */ jsx50("div", {
26303
+ className: "text-center",
26304
+ children: /* @__PURE__ */ jsx50("h2", {
26305
+ className: "fontbrand text-4xl",
26306
+ children
26307
+ })
26308
+ });
26309
+ };
26310
+
26311
+ // src/components/homepage/AutomationsSection.tsx
26312
+ import { jsx as jsx51, jsxs as jsxs10, Fragment as Fragment11 } from "react/jsx-runtime";
26313
+ var appPipeline = [
26314
+ {
26315
+ step: "01",
26316
+ title: "Design a template",
26317
+ description: "Start in Remotion Studio and build a reusable composition for your video workflow.",
26318
+ link: "/docs/studio",
26319
+ buttonText: "Remotion Studio",
26320
+ illustration: "studio"
26321
+ },
26322
+ {
26323
+ step: "02",
26324
+ title: "Build an app around it",
26325
+ description: "Expose props for text, images, colors, timing, and layouts to power editors, generators, and automations.",
26326
+ link: "/docs/parameterized-rendering",
26327
+ buttonText: "Parameterized rendering",
26328
+ illustration: "preview"
26329
+ },
26330
+ {
26331
+ step: "03",
26332
+ title: "Preview and render",
26333
+ description: /* @__PURE__ */ jsxs10(Fragment11, {
26334
+ children: [
26335
+ "Use the",
26336
+ " ",
26337
+ /* @__PURE__ */ jsx51("a", {
26338
+ href: "/player",
26339
+ className: "font-semibold text-text no-underline",
26340
+ children: "Player"
26341
+ }),
26342
+ " ",
26343
+ "for interactive previews, then render locally, on servers, serverlessly, or in-browser."
26344
+ ]
26345
+ }),
26346
+ link: "/docs/render",
26347
+ buttonText: "Rendering options",
26348
+ illustration: "render"
26349
+ }
26350
+ ];
26351
+ var launchOptions = [
26352
+ {
26353
+ title: "Start from a template",
26354
+ description: "Use starter projects for SaaS workflows, social videos, slideshows, captions, and repeatable video products.",
26355
+ link: "/templates",
26356
+ buttonText: "Browse templates"
26357
+ },
26358
+ {
26359
+ title: "Build a video editor",
26360
+ description: "Editor Starter is an official paid template for a timeline, canvas, asset uploads, and rendering.",
26361
+ link: "/docs/editor-starter",
26362
+ buttonText: "Editor Starter"
26363
+ },
26364
+ {
26365
+ title: "See what teams ship",
26366
+ description: "Audiograms, captioning tools, year-in-review generators, creative editors, and other products built with Remotion.",
26367
+ link: "/showcase",
26368
+ buttonText: "Showcase"
26369
+ }
26370
+ ];
26371
+ var icon2 = {
26372
+ height: 16,
26373
+ marginLeft: 10
26374
+ };
26375
+ var Arrow3 = () => /* @__PURE__ */ jsx51("svg", {
26376
+ style: icon2,
26377
+ viewBox: "0 0 448 512",
26378
+ children: /* @__PURE__ */ jsx51("path", {
26379
+ fill: "currentColor",
26380
+ 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"
26381
+ })
26382
+ });
26383
+ var InlineLink = ({ href, children }) => {
26384
+ return /* @__PURE__ */ jsxs10("a", {
26385
+ href,
26386
+ className: "mt-3 inline-flex flex-row items-center font-brand text-base font-semibold text-text no-underline sm:text-sm",
26387
+ children: [
26388
+ children,
26389
+ /* @__PURE__ */ jsx51(Arrow3, {})
26390
+ ]
26391
+ });
26392
+ };
26393
+ var illustrationFrame = "relative mb-5 flex h-40 w-full items-center justify-center px-3";
26394
+ var StudioIllustration = () => {
26395
+ return /* @__PURE__ */ jsx51("div", {
26396
+ className: illustrationFrame,
26397
+ "aria-hidden": "true",
26398
+ children: /* @__PURE__ */ jsxs10("div", {
26399
+ className: "relative w-full max-w-[220px] rounded-md bg-pane px-4 py-6 fontbrand",
26400
+ children: [
26401
+ /* @__PURE__ */ jsxs10("div", {
26402
+ className: "absolute bottom-5 left-1/2 top-3 flex -translate-x-1/2 flex-col items-center",
26403
+ children: [
26404
+ /* @__PURE__ */ jsx51("div", {
26405
+ className: "h-2 w-1 rounded-full bg-brand"
26406
+ }),
26407
+ /* @__PURE__ */ jsx51("div", {
26408
+ className: "w-px flex-1 bg-brand/50"
26409
+ })
26410
+ ]
26411
+ }),
26412
+ /* @__PURE__ */ jsxs10("div", {
26413
+ className: "space-y-4",
26414
+ children: [
26415
+ /* @__PURE__ */ jsxs10("div", {
26416
+ className: "grid grid-cols-[28px_1fr] items-center gap-3",
26417
+ children: [
26418
+ /* @__PURE__ */ jsx51("div", {
26419
+ className: "h-2 rounded-full bg-muted"
26420
+ }),
26421
+ /* @__PURE__ */ jsx51("div", {
26422
+ className: "h-3 rounded-full bg-brand"
26423
+ })
26424
+ ]
26425
+ }),
26426
+ /* @__PURE__ */ jsxs10("div", {
26427
+ className: "grid grid-cols-[28px_1fr] items-center gap-3",
26428
+ children: [
26429
+ /* @__PURE__ */ jsx51("div", {
26430
+ className: "h-2 rounded-full bg-muted"
26431
+ }),
26432
+ /* @__PURE__ */ jsx51("div", {
26433
+ className: "ml-8 h-3 rounded-full bg-muted"
26434
+ })
26435
+ ]
26436
+ }),
26437
+ /* @__PURE__ */ jsxs10("div", {
26438
+ className: "grid grid-cols-[28px_1fr] items-center gap-3",
26439
+ children: [
26440
+ /* @__PURE__ */ jsx51("div", {
26441
+ className: "h-2 rounded-full bg-muted"
26442
+ }),
26443
+ /* @__PURE__ */ jsx51("div", {
26444
+ className: "mr-10 h-3 rounded-full bg-muted"
26445
+ })
26446
+ ]
26447
+ })
26448
+ ]
26449
+ })
26450
+ ]
26451
+ })
26452
+ });
26453
+ };
26454
+ var PropsIllustration = () => {
26455
+ return /* @__PURE__ */ jsx51("div", {
26456
+ className: illustrationFrame,
26457
+ "aria-hidden": "true",
26458
+ children: /* @__PURE__ */ jsxs10("div", {
26459
+ className: "flex h-[124px] w-full max-w-[240px] flex-col justify-center whitespace-nowrap rounded-md bg-pane p-4 text-left font-mono text-base leading-6 text-text sm:text-sm sm:leading-5",
26460
+ children: [
26461
+ /* @__PURE__ */ jsx51("div", {
26462
+ className: "text-brand",
26463
+ children: "{"
26464
+ }),
26465
+ /* @__PURE__ */ jsx51("div", {
26466
+ className: "pl-4",
26467
+ children: "title: 'Sale',"
26468
+ }),
26469
+ /* @__PURE__ */ jsx51("div", {
26470
+ className: "pl-4",
26471
+ children: "color: '#0B84F3',"
26472
+ }),
26473
+ /* @__PURE__ */ jsx51("div", {
26474
+ className: "pl-4",
26475
+ children: "items: 42"
26476
+ }),
26477
+ /* @__PURE__ */ jsx51("div", {
26478
+ className: "text-brand",
26479
+ children: "}"
26480
+ })
26481
+ ]
26482
+ })
26483
+ });
26484
+ };
26485
+ var PreviewIllustration = () => {
26486
+ return /* @__PURE__ */ jsx51("div", {
26487
+ className: illustrationFrame,
26488
+ "aria-hidden": "true",
26489
+ children: /* @__PURE__ */ jsxs10("div", {
26490
+ className: "w-full max-w-[240px] rounded-md border border-solid border-muted bg-card-bg p-2 fontbrand",
26491
+ children: [
26492
+ /* @__PURE__ */ jsx51("div", {
26493
+ className: "relative flex h-[92px] items-center justify-center rounded-sm border border-solid border-muted bg-pane text-brand",
26494
+ children: /* @__PURE__ */ jsxs10("svg", {
26495
+ className: "h-14 w-14 text-brand",
26496
+ viewBox: "-11.5 -10.23174 23 20.46348",
26497
+ fill: "none",
26498
+ children: [
26499
+ /* @__PURE__ */ jsx51("circle", {
26500
+ cx: "0",
26501
+ cy: "0",
26502
+ r: "2.05",
26503
+ fill: "currentColor"
26504
+ }),
26505
+ /* @__PURE__ */ jsx51("ellipse", {
26506
+ cx: "0",
26507
+ cy: "0",
26508
+ rx: "11",
26509
+ ry: "4.2",
26510
+ stroke: "currentColor",
26511
+ strokeWidth: "1"
26512
+ }),
26513
+ /* @__PURE__ */ jsx51("ellipse", {
26514
+ cx: "0",
26515
+ cy: "0",
26516
+ rx: "11",
26517
+ ry: "4.2",
26518
+ stroke: "currentColor",
26519
+ strokeWidth: "1",
26520
+ transform: "rotate(60)"
26521
+ }),
26522
+ /* @__PURE__ */ jsx51("ellipse", {
26523
+ cx: "0",
26524
+ cy: "0",
26525
+ rx: "11",
26526
+ ry: "4.2",
26527
+ stroke: "currentColor",
26528
+ strokeWidth: "1",
26529
+ transform: "rotate(120)"
26530
+ })
26531
+ ]
26532
+ })
26533
+ }),
26534
+ /* @__PURE__ */ jsxs10("div", {
26535
+ className: "mt-2 flex items-center gap-2",
26536
+ children: [
26537
+ /* @__PURE__ */ jsx51("div", {
26538
+ className: "fontbrand text-xs font-semibold text-text",
26539
+ children: "0:12"
26540
+ }),
26541
+ /* @__PURE__ */ jsx51("div", {
26542
+ className: "h-1.5 flex-1 rounded-full bg-muted",
26543
+ children: /* @__PURE__ */ jsx51("div", {
26544
+ className: "h-full w-2/5 rounded-full bg-brand"
26545
+ })
26546
+ }),
26547
+ /* @__PURE__ */ jsx51("div", {
26548
+ className: "fontbrand text-xs font-semibold text-text",
26549
+ children: "0:30"
26550
+ })
26551
+ ]
26552
+ })
26553
+ ]
26554
+ })
26555
+ });
26556
+ };
26557
+ var RenderIllustration = () => {
26558
+ return /* @__PURE__ */ jsx51("div", {
26559
+ className: illustrationFrame,
26560
+ "aria-hidden": "true",
26561
+ children: /* @__PURE__ */ jsx51("div", {
26562
+ className: "grid w-full max-w-[240px] grid-cols-2 gap-2 fontbrand text-base font-semibold",
26563
+ children: [".mp4", ".webm", ".gif", ".png"].map((format) => /* @__PURE__ */ jsx51("div", {
26564
+ className: "rounded-md bg-pane px-4 py-3 text-center text-brand",
26565
+ children: format
26566
+ }, format))
26567
+ })
26568
+ });
26569
+ };
26570
+ var PipelineIllustration = ({ kind }) => {
26571
+ if (kind === "studio") {
26572
+ return /* @__PURE__ */ jsx51(StudioIllustration, {});
26573
+ }
26574
+ if (kind === "props") {
26575
+ return /* @__PURE__ */ jsx51(PropsIllustration, {});
26576
+ }
26577
+ if (kind === "preview") {
26578
+ return /* @__PURE__ */ jsx51(PreviewIllustration, {});
26579
+ }
26580
+ return /* @__PURE__ */ jsx51(RenderIllustration, {});
26581
+ };
26582
+ var AutomationsSection = () => {
26583
+ return /* @__PURE__ */ jsxs10("div", {
26584
+ children: [
26585
+ /* @__PURE__ */ jsx51(SectionTitle, {
26586
+ children: "Create video apps and automations"
26587
+ }),
26588
+ /* @__PURE__ */ jsx51("div", {
26589
+ className: "mx-auto mb-8 mt-3 max-w-[70ch] text-center fontbrand text-base leading-relaxed text-muted text-pretty",
26590
+ children: "Design a reusable video template in Remotion, expose props for app UIs and automations, then preview and render it wherever your workflow runs."
26591
+ }),
26592
+ /* @__PURE__ */ jsx51("div", {
26593
+ className: "py-4",
26594
+ children: /* @__PURE__ */ jsx51("dl", {
26595
+ className: "grid grid-cols-1 justify-items-stretch gap-5 lg:grid-cols-3 lg:justify-items-center lg:gap-0",
26596
+ children: appPipeline.map((item) => /* @__PURE__ */ jsxs10("div", {
26597
+ className: "flex w-full flex-col rounded-lg border border-solid border-text/10 bg-card-bg px-4 py-5 text-left sm:px-5 lg:max-w-[300px] lg:rounded-none lg:border-y-0 lg:border-r-0 lg:border-l lg:bg-transparent lg:px-6 lg:py-0 lg:first:border-l-0",
26598
+ children: [
26599
+ /* @__PURE__ */ jsx51(PipelineIllustration, {
26600
+ kind: item.illustration
26601
+ }),
26602
+ /* @__PURE__ */ jsxs10("div", {
26603
+ className: "mb-2 flex items-center gap-2.5",
26604
+ children: [
26605
+ /* @__PURE__ */ jsx51("div", {
26606
+ className: "flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-pane fontbrand text-xs font-semibold text-brand",
26607
+ children: item.step
26608
+ }),
26609
+ /* @__PURE__ */ jsx51("dt", {
26610
+ className: "fontbrand text-xl font-semibold tracking-tight text-text text-balance",
26611
+ children: item.title
26612
+ })
26613
+ ]
26614
+ }),
26615
+ /* @__PURE__ */ jsx51("dd", {
26616
+ className: "m-0 mt-1 flex-1 fontbrand text-base leading-relaxed text-muted text-pretty sm:text-sm",
26617
+ children: item.description
26618
+ }),
26619
+ /* @__PURE__ */ jsx51(InlineLink, {
26620
+ href: item.link,
26621
+ children: item.buttonText
26622
+ })
26623
+ ]
26624
+ }, item.step))
26625
+ })
26626
+ }),
26627
+ /* @__PURE__ */ jsxs10("div", {
26628
+ className: "mt-8 flex flex-wrap justify-center gap-x-5 gap-y-2 fontbrand text-base text-muted sm:text-sm",
26629
+ children: [
26630
+ /* @__PURE__ */ jsx51("span", {
26631
+ children: "Explore:"
26632
+ }),
26633
+ launchOptions.map((item) => /* @__PURE__ */ jsx51("a", {
26634
+ href: item.link,
26635
+ className: "font-semibold text-text no-underline",
26636
+ title: item.description,
26637
+ children: item.buttonText
26638
+ }, item.link))
26639
+ ]
26640
+ })
26641
+ ]
26642
+ });
26643
+ };
26644
+ var AutomationsSection_default = AutomationsSection;
26645
+
26241
26646
  // src/components/homepage/BackgroundAnimation.tsx
26242
26647
  import { useEffect as useEffect41 } from "react";
26243
- import { jsx as jsx50, jsxs as jsxs10 } from "react/jsx-runtime";
26648
+ import { jsx as jsx54, jsxs as jsxs11 } from "react/jsx-runtime";
26244
26649
  "use client";
26245
26650
  var rx = 0.2;
26246
26651
  var ry = 0.45;
@@ -26270,9 +26675,9 @@ var BackgroundAnimation = () => {
26270
26675
  _style.innerHTML = css;
26271
26676
  document.head.appendChild(_style);
26272
26677
  }, [css]);
26273
- return /* @__PURE__ */ jsx50("div", {
26678
+ return /* @__PURE__ */ jsx54("div", {
26274
26679
  className: " w-full h-full min-w-0 m-auto lg:relative lg:min-w-[700px] lg:max-w-[1200px] lg:ml-auto lg:left-auto pointer-events-none",
26275
- children: /* @__PURE__ */ jsxs10("svg", {
26680
+ children: /* @__PURE__ */ jsxs11("svg", {
26276
26681
  className: "translate-y-[-30%] lg:translate-y-[-50%]",
26277
26682
  viewBox: "0 0 1 1",
26278
26683
  style: {
@@ -26280,7 +26685,7 @@ var BackgroundAnimation = () => {
26280
26685
  position: "absolute"
26281
26686
  },
26282
26687
  children: [
26283
- /* @__PURE__ */ jsx50("path", {
26688
+ /* @__PURE__ */ jsx54("path", {
26284
26689
  d: d2,
26285
26690
  fill: "none",
26286
26691
  stroke: "var(--ifm-color-primary)",
@@ -26293,7 +26698,7 @@ var BackgroundAnimation = () => {
26293
26698
  strokeDasharray: `${length2 * 0.2} ${length2 * 0.8}`
26294
26699
  }
26295
26700
  }),
26296
- /* @__PURE__ */ jsx50("path", {
26701
+ /* @__PURE__ */ jsx54("path", {
26297
26702
  d: d2,
26298
26703
  fill: "none",
26299
26704
  stroke: "var(--ifm-color-primary)",
@@ -26307,7 +26712,7 @@ var BackgroundAnimation = () => {
26307
26712
  strokeDasharray: `${length2 * 0.2} ${length2 * 0.8}`
26308
26713
  }
26309
26714
  }),
26310
- /* @__PURE__ */ jsx50("path", {
26715
+ /* @__PURE__ */ jsx54("path", {
26311
26716
  d: d2,
26312
26717
  fill: "none",
26313
26718
  stroke: "var(--ifm-color-primary)",
@@ -26327,7 +26732,7 @@ var BackgroundAnimation = () => {
26327
26732
  };
26328
26733
 
26329
26734
  // src/components/homepage/CommunityStatsItems.tsx
26330
- import { jsx as jsx51, jsxs as jsxs11 } from "react/jsx-runtime";
26735
+ import { jsx as jsx56, jsxs as jsxs12 } from "react/jsx-runtime";
26331
26736
  var StatItemContent = ({
26332
26737
  content,
26333
26738
  width,
@@ -26336,7 +26741,7 @@ var StatItemContent = ({
26336
26741
  height = "auto",
26337
26742
  fontSize,
26338
26743
  fontWeight
26339
- }) => /* @__PURE__ */ jsx51("div", {
26744
+ }) => /* @__PURE__ */ jsx56("div", {
26340
26745
  style: {
26341
26746
  width,
26342
26747
  minWidth,
@@ -26354,36 +26759,36 @@ var StatItemContent = ({
26354
26759
  children: content
26355
26760
  });
26356
26761
  var Pill = ({ children, className }) => {
26357
- return /* @__PURE__ */ jsx51("div", {
26762
+ return /* @__PURE__ */ jsx56("div", {
26358
26763
  className: cn2(className, "card leading-none flex flex-wrap justify-center items-center min-w-[200px] min-h-[80px] max-h-[110px] flex-1 p-0"),
26359
26764
  children
26360
26765
  });
26361
26766
  };
26362
26767
  var InstallsPerMonth = () => {
26363
- return /* @__PURE__ */ jsxs11(Pill, {
26768
+ return /* @__PURE__ */ jsxs12(Pill, {
26364
26769
  className: "w-[30%] flex-col",
26365
26770
  children: [
26366
- /* @__PURE__ */ jsxs11("div", {
26771
+ /* @__PURE__ */ jsxs12("div", {
26367
26772
  style: {
26368
26773
  display: "flex",
26369
26774
  alignItems: "center",
26370
26775
  justifyContent: "center"
26371
26776
  },
26372
26777
  children: [
26373
- /* @__PURE__ */ jsx51(StatItemContent, {
26778
+ /* @__PURE__ */ jsx56(StatItemContent, {
26374
26779
  content: "3M",
26375
26780
  width: "100px",
26376
26781
  fontSize: "2.5rem",
26377
26782
  fontWeight: "bold"
26378
26783
  }),
26379
- /* @__PURE__ */ jsx51(StatItemContent, {
26380
- content: /* @__PURE__ */ jsx51("svg", {
26784
+ /* @__PURE__ */ jsx56(StatItemContent, {
26785
+ content: /* @__PURE__ */ jsx56("svg", {
26381
26786
  width: "40",
26382
26787
  height: "40",
26383
26788
  viewBox: "0 0 25 25",
26384
26789
  fill: "none",
26385
26790
  xmlns: "http://www.w3.org/2000/svg",
26386
- children: /* @__PURE__ */ jsx51("path", {
26791
+ children: /* @__PURE__ */ jsx56("path", {
26387
26792
  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",
26388
26793
  fill: "var(--text-color)"
26389
26794
  })
@@ -26392,7 +26797,7 @@ var InstallsPerMonth = () => {
26392
26797
  })
26393
26798
  ]
26394
26799
  }),
26395
- /* @__PURE__ */ jsx51(StatItemContent, {
26800
+ /* @__PURE__ */ jsx56(StatItemContent, {
26396
26801
  content: "installs",
26397
26802
  width: "75%",
26398
26803
  fontSize: "1.0rem",
@@ -26402,27 +26807,27 @@ var InstallsPerMonth = () => {
26402
26807
  });
26403
26808
  };
26404
26809
  var PagesOfDocs = () => {
26405
- return /* @__PURE__ */ jsxs11(Pill, {
26810
+ return /* @__PURE__ */ jsxs12(Pill, {
26406
26811
  className: "flex-col",
26407
26812
  children: [
26408
- /* @__PURE__ */ jsxs11("div", {
26813
+ /* @__PURE__ */ jsxs12("div", {
26409
26814
  style: { display: "flex", alignItems: "center" },
26410
26815
  children: [
26411
- /* @__PURE__ */ jsx51(StatItemContent, {
26412
- content: /* @__PURE__ */ jsx51("svg", {
26816
+ /* @__PURE__ */ jsx56(StatItemContent, {
26817
+ content: /* @__PURE__ */ jsx56("svg", {
26413
26818
  width: "28",
26414
26819
  height: "40",
26415
26820
  viewBox: "0 0 18 21",
26416
26821
  fill: "none",
26417
26822
  xmlns: "http://www.w3.org/2000/svg",
26418
- children: /* @__PURE__ */ jsx51("path", {
26823
+ children: /* @__PURE__ */ jsx56("path", {
26419
26824
  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",
26420
26825
  fill: "var(--text-color)"
26421
26826
  })
26422
26827
  }),
26423
26828
  width: "40px"
26424
26829
  }),
26425
- /* @__PURE__ */ jsx51(StatItemContent, {
26830
+ /* @__PURE__ */ jsx56(StatItemContent, {
26426
26831
  content: "800",
26427
26832
  width: "85px",
26428
26833
  maxWidth: "100px",
@@ -26431,7 +26836,7 @@ var PagesOfDocs = () => {
26431
26836
  })
26432
26837
  ]
26433
26838
  }),
26434
- /* @__PURE__ */ jsx51(StatItemContent, {
26839
+ /* @__PURE__ */ jsx56(StatItemContent, {
26435
26840
  content: "pages of docs",
26436
26841
  width: "125px",
26437
26842
  fontSize: "1.0rem",
@@ -26440,16 +26845,16 @@ var PagesOfDocs = () => {
26440
26845
  ]
26441
26846
  });
26442
26847
  };
26443
- var TemplatesAndExamples = () => /* @__PURE__ */ jsxs11(Pill, {
26848
+ var TemplatesAndExamples = () => /* @__PURE__ */ jsxs12(Pill, {
26444
26849
  className: "w-[30%] flex items-center flex-row",
26445
26850
  children: [
26446
- /* @__PURE__ */ jsx51(StatItemContent, {
26851
+ /* @__PURE__ */ jsx56(StatItemContent, {
26447
26852
  content: "35",
26448
26853
  width: "60px",
26449
26854
  fontSize: "2.7rem",
26450
26855
  fontWeight: "bold"
26451
26856
  }),
26452
- /* @__PURE__ */ jsx51(StatItemContent, {
26857
+ /* @__PURE__ */ jsx56(StatItemContent, {
26453
26858
  content: "templates & examples",
26454
26859
  width: "135px",
26455
26860
  fontSize: "1.35rem",
@@ -26458,27 +26863,27 @@ var TemplatesAndExamples = () => /* @__PURE__ */ jsxs11(Pill, {
26458
26863
  ]
26459
26864
  });
26460
26865
  var GitHubStars = () => {
26461
- return /* @__PURE__ */ jsxs11(Pill, {
26866
+ return /* @__PURE__ */ jsxs12(Pill, {
26462
26867
  className: "w-[30%] flex-col",
26463
26868
  children: [
26464
- /* @__PURE__ */ jsxs11("div", {
26869
+ /* @__PURE__ */ jsxs12("div", {
26465
26870
  style: { display: "flex", alignItems: "center" },
26466
26871
  children: [
26467
- /* @__PURE__ */ jsx51(StatItemContent, {
26468
- content: /* @__PURE__ */ jsx51("svg", {
26872
+ /* @__PURE__ */ jsx56(StatItemContent, {
26873
+ content: /* @__PURE__ */ jsx56("svg", {
26469
26874
  width: "40",
26470
26875
  height: "40",
26471
26876
  viewBox: "0 0 26 24",
26472
26877
  fill: "none",
26473
26878
  xmlns: "http://www.w3.org/2000/svg",
26474
- children: /* @__PURE__ */ jsx51("path", {
26879
+ children: /* @__PURE__ */ jsx56("path", {
26475
26880
  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",
26476
26881
  fill: "var(--text-color)"
26477
26882
  })
26478
26883
  }),
26479
26884
  width: "45px"
26480
26885
  }),
26481
- /* @__PURE__ */ jsx51(StatItemContent, {
26886
+ /* @__PURE__ */ jsx56(StatItemContent, {
26482
26887
  content: "48k",
26483
26888
  width: "80px",
26484
26889
  fontSize: "2.5rem",
@@ -26486,7 +26891,7 @@ var GitHubStars = () => {
26486
26891
  })
26487
26892
  ]
26488
26893
  }),
26489
- /* @__PURE__ */ jsx51(StatItemContent, {
26894
+ /* @__PURE__ */ jsx56(StatItemContent, {
26490
26895
  content: "GitHub stars",
26491
26896
  width: "125px",
26492
26897
  fontSize: "1.0rem",
@@ -26496,9 +26901,9 @@ var GitHubStars = () => {
26496
26901
  });
26497
26902
  };
26498
26903
  var DiscordMembers = () => {
26499
- return /* @__PURE__ */ jsx51(Pill, {
26904
+ return /* @__PURE__ */ jsx56(Pill, {
26500
26905
  className: "w-[30%]",
26501
- children: /* @__PURE__ */ jsxs11("div", {
26906
+ children: /* @__PURE__ */ jsxs12("div", {
26502
26907
  style: {
26503
26908
  width: "80%",
26504
26909
  display: "flex",
@@ -26506,7 +26911,7 @@ var DiscordMembers = () => {
26506
26911
  justifyContent: "center"
26507
26912
  },
26508
26913
  children: [
26509
- /* @__PURE__ */ jsxs11("div", {
26914
+ /* @__PURE__ */ jsxs12("div", {
26510
26915
  style: {
26511
26916
  display: "flex",
26512
26917
  flexDirection: "column",
@@ -26514,13 +26919,13 @@ var DiscordMembers = () => {
26514
26919
  justifyContent: "center"
26515
26920
  },
26516
26921
  children: [
26517
- /* @__PURE__ */ jsx51(StatItemContent, {
26922
+ /* @__PURE__ */ jsx56(StatItemContent, {
26518
26923
  content: "8000+",
26519
26924
  width: "142px",
26520
26925
  fontSize: "2.5rem",
26521
26926
  fontWeight: "bold"
26522
26927
  }),
26523
- /* @__PURE__ */ jsx51(StatItemContent, {
26928
+ /* @__PURE__ */ jsx56(StatItemContent, {
26524
26929
  content: "Discord members",
26525
26930
  width: "142px",
26526
26931
  fontSize: "1rem",
@@ -26528,19 +26933,19 @@ var DiscordMembers = () => {
26528
26933
  })
26529
26934
  ]
26530
26935
  }),
26531
- /* @__PURE__ */ jsx51("div", {
26936
+ /* @__PURE__ */ jsx56("div", {
26532
26937
  style: {
26533
26938
  display: "flex",
26534
26939
  justifyContent: "center"
26535
26940
  },
26536
- children: /* @__PURE__ */ jsx51(StatItemContent, {
26537
- content: /* @__PURE__ */ jsx51("svg", {
26941
+ children: /* @__PURE__ */ jsx56(StatItemContent, {
26942
+ content: /* @__PURE__ */ jsx56("svg", {
26538
26943
  width: "61",
26539
26944
  height: "47",
26540
26945
  viewBox: "0 0 46 35",
26541
26946
  fill: "none",
26542
26947
  xmlns: "http://www.w3.org/2000/svg",
26543
- children: /* @__PURE__ */ jsx51("path", {
26948
+ children: /* @__PURE__ */ jsx56("path", {
26544
26949
  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",
26545
26950
  fill: "var(--text-color)"
26546
26951
  })
@@ -26553,21 +26958,21 @@ var DiscordMembers = () => {
26553
26958
  });
26554
26959
  };
26555
26960
  var Contributors = () => {
26556
- return /* @__PURE__ */ jsx51(Pill, {
26961
+ return /* @__PURE__ */ jsx56(Pill, {
26557
26962
  className: "w-[30%]",
26558
- children: /* @__PURE__ */ jsxs11("div", {
26963
+ children: /* @__PURE__ */ jsxs12("div", {
26559
26964
  style: { display: "flex", justifyContent: "center" },
26560
26965
  children: [
26561
- /* @__PURE__ */ jsx51("div", {
26966
+ /* @__PURE__ */ jsx56("div", {
26562
26967
  style: { display: "flex", justifyContent: "center" },
26563
- children: /* @__PURE__ */ jsx51(StatItemContent, {
26564
- content: /* @__PURE__ */ jsx51("svg", {
26968
+ children: /* @__PURE__ */ jsx56(StatItemContent, {
26969
+ content: /* @__PURE__ */ jsx56("svg", {
26565
26970
  width: "60",
26566
26971
  height: "50",
26567
26972
  viewBox: "0 0 63 40",
26568
26973
  fill: "none",
26569
26974
  xmlns: "http://www.w3.org/2000/svg",
26570
- children: /* @__PURE__ */ jsx51("path", {
26975
+ children: /* @__PURE__ */ jsx56("path", {
26571
26976
  d: "M6.975 5.375C6.975 3.94946 7.54656 2.58231 8.56395 1.5743C9.58133 0.566293 10.9612 0 12.4 0C13.8388 0 15.2187 0.566293 16.2361 1.5743C17.2534 2.58231 17.825 3.94946 17.825 5.375C17.825 6.80054 17.2534 8.16769 16.2361 9.1757C15.2187 10.1837 13.8388 10.75 12.4 10.75C10.9612 10.75 9.58133 10.1837 8.56395 9.1757C7.54656 8.16769 6.975 6.80054 6.975 5.375ZM6.2 20.5114C5.23125 21.5864 4.65 23.0165 4.65 24.5714C4.65 26.1263 5.23125 27.5565 6.2 28.6315V20.5114ZM20.1887 15.7795C17.3116 18.3038 15.5 21.9991 15.5 26.1071C15.5 29.3993 16.6625 32.4228 18.6 34.7935V36.8571C18.6 38.556 17.2147 39.9286 15.5 39.9286H9.3C7.58531 39.9286 6.2 38.556 6.2 36.8571V34.2848C2.53813 32.5571 0 28.8618 0 24.5714C0 18.6301 4.85344 13.8214 10.85 13.8214H13.95C16.275 13.8214 18.4256 14.5413 20.1887 15.7699V15.7795ZM43.4 36.8571V34.7935C45.3375 32.4228 46.5 29.3993 46.5 26.1071C46.5 21.9991 44.6884 18.3038 41.8112 15.7699C43.5744 14.5413 45.725 13.8214 48.05 13.8214H51.15C57.1466 13.8214 62 18.6301 62 24.5714C62 28.8618 59.4619 32.5571 55.8 34.2848V36.8571C55.8 38.556 54.4147 39.9286 52.7 39.9286H46.5C44.7853 39.9286 43.4 38.556 43.4 36.8571ZM44.175 5.375C44.175 3.94946 44.7466 2.58231 45.7639 1.5743C46.7813 0.566293 48.1612 0 49.6 0C51.0388 0 52.4187 0.566293 53.4361 1.5743C54.4534 2.58231 55.025 3.94946 55.025 5.375C55.025 6.80054 54.4534 8.16769 53.4361 9.1757C52.4187 10.1837 51.0388 10.75 49.6 10.75C48.1612 10.75 46.7813 10.1837 45.7639 9.1757C44.7466 8.16769 44.175 6.80054 44.175 5.375ZM55.8 20.5114V28.6411C56.7687 27.5565 57.35 26.1359 57.35 24.581C57.35 23.0261 56.7687 21.596 55.8 20.521V20.5114ZM31 0C32.6443 0 34.2213 0.647192 35.3841 1.7992C36.5468 2.95121 37.2 4.51367 37.2 6.14286C37.2 7.77204 36.5468 9.3345 35.3841 10.4865C34.2213 11.6385 32.6443 12.2857 31 12.2857C29.3557 12.2857 27.7787 11.6385 26.6159 10.4865C25.4532 9.3345 24.8 7.77204 24.8 6.14286C24.8 4.51367 25.4532 2.95121 26.6159 1.7992C27.7787 0.647192 29.3557 0 31 0ZM23.25 26.1071C23.25 27.6621 23.8312 29.0826 24.8 30.1672V22.0471C23.8312 23.1317 23.25 24.5522 23.25 26.1071ZM37.2 22.0471V30.1768C38.1687 29.0922 38.75 27.6717 38.75 26.1167C38.75 24.5618 38.1687 23.1317 37.2 22.0567V22.0471ZM43.4 26.1071C43.4 30.3975 40.8619 34.0929 37.2 35.8205V39.9286C37.2 41.6275 35.8147 43 34.1 43H27.9C26.1853 43 24.8 41.6275 24.8 39.9286V35.8205C21.1381 34.0929 18.6 30.3975 18.6 26.1071C18.6 20.1658 23.4534 15.3571 29.45 15.3571H32.55C38.5466 15.3571 43.4 20.1658 43.4 26.1071Z",
26572
26977
  fill: "var(--text-color)"
26573
26978
  })
@@ -26575,7 +26980,7 @@ var Contributors = () => {
26575
26980
  width: "65px"
26576
26981
  })
26577
26982
  }),
26578
- /* @__PURE__ */ jsxs11("div", {
26983
+ /* @__PURE__ */ jsxs12("div", {
26579
26984
  style: {
26580
26985
  display: "flex",
26581
26986
  flexDirection: "column",
@@ -26583,13 +26988,13 @@ var Contributors = () => {
26583
26988
  justifyContent: "center"
26584
26989
  },
26585
26990
  children: [
26586
- /* @__PURE__ */ jsx51(StatItemContent, {
26991
+ /* @__PURE__ */ jsx56(StatItemContent, {
26587
26992
  content: "300+",
26588
26993
  width: "100px",
26589
26994
  fontSize: "2.5rem",
26590
26995
  fontWeight: "bold"
26591
26996
  }),
26592
- /* @__PURE__ */ jsx51(StatItemContent, {
26997
+ /* @__PURE__ */ jsx56(StatItemContent, {
26593
26998
  content: "contributors",
26594
26999
  width: "100px",
26595
27000
  fontSize: "1.0rem",
@@ -26602,64 +27007,50 @@ var Contributors = () => {
26602
27007
  });
26603
27008
  };
26604
27009
 
26605
- // src/components/homepage/VideoAppsTitle.tsx
26606
- import { jsx as jsx54 } from "react/jsx-runtime";
26607
- var SectionTitle = ({
26608
- children
26609
- }) => {
26610
- return /* @__PURE__ */ jsx54("div", {
26611
- className: "text-center",
26612
- children: /* @__PURE__ */ jsx54("h2", {
26613
- className: "fontbrand text-4xl",
26614
- children
26615
- })
26616
- });
26617
- };
26618
-
26619
27010
  // src/components/homepage/CommunityStats.tsx
26620
- import { jsx as jsx56, jsxs as jsxs12 } from "react/jsx-runtime";
26621
- var SectionLink = ({ href, children }) => /* @__PURE__ */ jsx56("a", {
27011
+ import { jsx as jsx57, jsxs as jsxs13 } from "react/jsx-runtime";
27012
+ var SectionLink = ({ href, children }) => /* @__PURE__ */ jsx57("a", {
26622
27013
  target: "_blank",
26623
27014
  href,
26624
27015
  className: "no-underline text-inherit contents",
26625
27016
  children
26626
27017
  });
26627
- var CommunityStats = () => /* @__PURE__ */ jsxs12("div", {
27018
+ var CommunityStats = () => /* @__PURE__ */ jsxs13("div", {
26628
27019
  className: "m-auto max-w-[700px] text-center",
26629
27020
  children: [
26630
- /* @__PURE__ */ jsx56(SectionTitle, {
27021
+ /* @__PURE__ */ jsx57(SectionTitle, {
26631
27022
  children: "Never build alone"
26632
27023
  }),
26633
- /* @__PURE__ */ jsx56("div", {
27024
+ /* @__PURE__ */ jsx57("div", {
26634
27025
  className: "fontbrand text-center mb-10 -mt-4",
26635
27026
  children: "Join a thriving community of developers."
26636
27027
  }),
26637
- /* @__PURE__ */ jsxs12("div", {
27028
+ /* @__PURE__ */ jsxs13("div", {
26638
27029
  className: "flex flex-wrap justify-between gap-4 w-full items-center",
26639
27030
  children: [
26640
- /* @__PURE__ */ jsx56(SectionLink, {
27031
+ /* @__PURE__ */ jsx57(SectionLink, {
26641
27032
  href: "https://www.npmjs.com/package/remotion",
26642
- children: /* @__PURE__ */ jsx56(InstallsPerMonth, {})
27033
+ children: /* @__PURE__ */ jsx57(InstallsPerMonth, {})
26643
27034
  }),
26644
- /* @__PURE__ */ jsx56(SectionLink, {
27035
+ /* @__PURE__ */ jsx57(SectionLink, {
26645
27036
  href: "https://www.remotion.dev/docs/",
26646
- children: /* @__PURE__ */ jsx56(PagesOfDocs, {})
27037
+ children: /* @__PURE__ */ jsx57(PagesOfDocs, {})
26647
27038
  }),
26648
- /* @__PURE__ */ jsx56(SectionLink, {
27039
+ /* @__PURE__ */ jsx57(SectionLink, {
26649
27040
  href: "https://www.remotion.dev/templates",
26650
- children: /* @__PURE__ */ jsx56(TemplatesAndExamples, {})
27041
+ children: /* @__PURE__ */ jsx57(TemplatesAndExamples, {})
26651
27042
  }),
26652
- /* @__PURE__ */ jsx56(SectionLink, {
27043
+ /* @__PURE__ */ jsx57(SectionLink, {
26653
27044
  href: "https://github.com/remotion-dev/remotion",
26654
- children: /* @__PURE__ */ jsx56(GitHubStars, {})
27045
+ children: /* @__PURE__ */ jsx57(GitHubStars, {})
26655
27046
  }),
26656
- /* @__PURE__ */ jsx56(SectionLink, {
27047
+ /* @__PURE__ */ jsx57(SectionLink, {
26657
27048
  href: "https://remotion.dev/discord",
26658
- children: /* @__PURE__ */ jsx56(DiscordMembers, {})
27049
+ children: /* @__PURE__ */ jsx57(DiscordMembers, {})
26659
27050
  }),
26660
- /* @__PURE__ */ jsx56(SectionLink, {
27051
+ /* @__PURE__ */ jsx57(SectionLink, {
26661
27052
  href: "https://github.com/remotion-dev/remotion/graphs/contributors",
26662
- children: /* @__PURE__ */ jsx56(Contributors, {})
27053
+ children: /* @__PURE__ */ jsx57(Contributors, {})
26663
27054
  })
26664
27055
  ]
26665
27056
  })
@@ -26669,17 +27060,17 @@ var CommunityStats_default = CommunityStats;
26669
27060
 
26670
27061
  // ../player/dist/esm/index.mjs
26671
27062
  import { createContext as createContext32 } from "react";
26672
- import { jsx as jsx57, jsxs as jsxs13 } from "react/jsx-runtime";
26673
- import { jsx as jsx214, jsxs as jsxs24, Fragment as Fragment11 } from "react/jsx-runtime";
27063
+ import { jsx as jsx58, jsxs as jsxs14 } from "react/jsx-runtime";
27064
+ import { jsx as jsx214, jsxs as jsxs24, Fragment as Fragment12 } from "react/jsx-runtime";
26674
27065
  import React56 from "react";
26675
27066
  import { useContext as useContext210, useEffect as useEffect42, useState as useState38 } from "react";
26676
27067
  import { useContext as useContext45, useLayoutEffect as useLayoutEffect17 } from "react";
26677
27068
  import { jsx as jsx314 } from "react/jsx-runtime";
26678
27069
  import { useEffect as useEffect210, useState as useState210 } from "react";
26679
27070
  import { useLayoutEffect as useLayoutEffect23 } from "react";
26680
- import { useContext as useContext46, useEffect as useEffect52, useRef as useRef45 } from "react";
26681
- import { useEffect as useEffect310, useRef as useRef29 } from "react";
26682
- import { useCallback as useCallback36, useContext as useContext310, useMemo as useMemo53, useRef as useRef46, useState as useState39 } from "react";
27071
+ import { useContext as useContext46, useEffect as useEffect52, useRef as useRef46 } from "react";
27072
+ import { useEffect as useEffect310, useRef as useRef210 } from "react";
27073
+ import { useCallback as useCallback36, useContext as useContext310, useMemo as useMemo53, useRef as useRef47, useState as useState39 } from "react";
26683
27074
  import { useEffect as useEffect43, useRef as useRef310 } from "react";
26684
27075
  import { useCallback as useCallback210, useEffect as useEffect62, useMemo as useMemo212, useState as useState42 } from "react";
26685
27076
  import {
@@ -27700,12 +28091,12 @@ if (typeof createContext32 !== "function") {
27700
28091
  var ICON_SIZE2 = 25;
27701
28092
  var fullscreenIconSize = 16;
27702
28093
  var PlayIcon = () => {
27703
- return /* @__PURE__ */ jsx57("svg", {
28094
+ return /* @__PURE__ */ jsx58("svg", {
27704
28095
  width: ICON_SIZE2,
27705
28096
  height: ICON_SIZE2,
27706
28097
  viewBox: "0 0 25 25",
27707
28098
  fill: "none",
27708
- children: /* @__PURE__ */ jsx57("path", {
28099
+ children: /* @__PURE__ */ jsx58("path", {
27709
28100
  d: "M8 6.375C7.40904 8.17576 7.06921 10.2486 7.01438 12.3871C6.95955 14.5255 7.19163 16.6547 7.6875 18.5625C9.95364 18.2995 12.116 17.6164 14.009 16.5655C15.902 15.5147 17.4755 14.124 18.6088 12.5C17.5158 10.8949 15.9949 9.51103 14.1585 8.45082C12.3222 7.3906 10.2174 6.68116 8 6.375Z",
27710
28101
  fill: "white",
27711
28102
  stroke: "white",
@@ -27715,12 +28106,12 @@ var PlayIcon = () => {
27715
28106
  });
27716
28107
  };
27717
28108
  var PauseIcon = () => {
27718
- return /* @__PURE__ */ jsxs13("svg", {
28109
+ return /* @__PURE__ */ jsxs14("svg", {
27719
28110
  viewBox: "0 0 100 100",
27720
28111
  width: ICON_SIZE2,
27721
28112
  height: ICON_SIZE2,
27722
28113
  children: [
27723
- /* @__PURE__ */ jsx57("rect", {
28114
+ /* @__PURE__ */ jsx58("rect", {
27724
28115
  x: "25",
27725
28116
  y: "20",
27726
28117
  width: "20",
@@ -27729,7 +28120,7 @@ var PauseIcon = () => {
27729
28120
  ry: "5",
27730
28121
  rx: "5"
27731
28122
  }),
27732
- /* @__PURE__ */ jsx57("rect", {
28123
+ /* @__PURE__ */ jsx58("rect", {
27733
28124
  x: "55",
27734
28125
  y: "20",
27735
28126
  width: "20",
@@ -27749,12 +28140,12 @@ var FullscreenIcon = ({
27749
28140
  const out = isFullscreen ? 0 : strokeWidth2 / 2;
27750
28141
  const middleInset = isFullscreen ? strokeWidth2 * 1.6 : strokeWidth2 / 2;
27751
28142
  const inset = isFullscreen ? strokeWidth2 * 1.6 : strokeWidth2 * 2;
27752
- return /* @__PURE__ */ jsxs13("svg", {
28143
+ return /* @__PURE__ */ jsxs14("svg", {
27753
28144
  viewBox: `0 0 ${viewSize} ${viewSize}`,
27754
28145
  height: fullscreenIconSize,
27755
28146
  width: fullscreenIconSize,
27756
28147
  children: [
27757
- /* @__PURE__ */ jsx57("path", {
28148
+ /* @__PURE__ */ jsx58("path", {
27758
28149
  d: `
27759
28150
  M ${out} ${inset}
27760
28151
  L ${middleInset} ${middleInset}
@@ -27764,7 +28155,7 @@ var FullscreenIcon = ({
27764
28155
  strokeWidth: strokeWidth2,
27765
28156
  fill: "none"
27766
28157
  }),
27767
- /* @__PURE__ */ jsx57("path", {
28158
+ /* @__PURE__ */ jsx58("path", {
27768
28159
  d: `
27769
28160
  M ${viewSize - out} ${inset}
27770
28161
  L ${viewSize - middleInset} ${middleInset}
@@ -27774,7 +28165,7 @@ var FullscreenIcon = ({
27774
28165
  strokeWidth: strokeWidth2,
27775
28166
  fill: "none"
27776
28167
  }),
27777
- /* @__PURE__ */ jsx57("path", {
28168
+ /* @__PURE__ */ jsx58("path", {
27778
28169
  d: `
27779
28170
  M ${out} ${viewSize - inset}
27780
28171
  L ${middleInset} ${viewSize - middleInset}
@@ -27784,7 +28175,7 @@ var FullscreenIcon = ({
27784
28175
  strokeWidth: strokeWidth2,
27785
28176
  fill: "none"
27786
28177
  }),
27787
- /* @__PURE__ */ jsx57("path", {
28178
+ /* @__PURE__ */ jsx58("path", {
27788
28179
  d: `
27789
28180
  M ${viewSize - out} ${viewSize - inset}
27790
28181
  L ${viewSize - middleInset} ${viewSize - middleInset}
@@ -27798,22 +28189,22 @@ var FullscreenIcon = ({
27798
28189
  });
27799
28190
  };
27800
28191
  var VolumeOffIcon = () => {
27801
- return /* @__PURE__ */ jsx57("svg", {
28192
+ return /* @__PURE__ */ jsx58("svg", {
27802
28193
  width: ICON_SIZE2,
27803
28194
  height: ICON_SIZE2,
27804
28195
  viewBox: "0 0 24 24",
27805
- children: /* @__PURE__ */ jsx57("path", {
28196
+ children: /* @__PURE__ */ jsx58("path", {
27806
28197
  d: "M3.63 3.63a.996.996 0 000 1.41L7.29 8.7 7 9H4c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h3l3.29 3.29c.63.63 1.71.18 1.71-.71v-4.17l4.18 4.18c-.49.37-1.02.68-1.6.91-.36.15-.58.53-.58.92 0 .72.73 1.18 1.39.91.8-.33 1.55-.77 2.22-1.31l1.34 1.34a.996.996 0 101.41-1.41L5.05 3.63c-.39-.39-1.02-.39-1.42 0zM19 12c0 .82-.15 1.61-.41 2.34l1.53 1.53c.56-1.17.88-2.48.88-3.87 0-3.83-2.4-7.11-5.78-8.4-.59-.23-1.22.23-1.22.86v.19c0 .38.25.71.61.85C17.18 6.54 19 9.06 19 12zm-8.71-6.29l-.17.17L12 7.76V6.41c0-.89-1.08-1.33-1.71-.7zM16.5 12A4.5 4.5 0 0014 7.97v1.79l2.48 2.48c.01-.08.02-.16.02-.24z",
27807
28198
  fill: "#fff"
27808
28199
  })
27809
28200
  });
27810
28201
  };
27811
28202
  var VolumeOnIcon = () => {
27812
- return /* @__PURE__ */ jsx57("svg", {
28203
+ return /* @__PURE__ */ jsx58("svg", {
27813
28204
  width: ICON_SIZE2,
27814
28205
  height: ICON_SIZE2,
27815
28206
  viewBox: "0 0 24 24",
27816
- children: /* @__PURE__ */ jsx57("path", {
28207
+ children: /* @__PURE__ */ jsx58("path", {
27817
28208
  d: "M3 10v4c0 .55.45 1 1 1h3l3.29 3.29c.63.63 1.71.18 1.71-.71V6.41c0-.89-1.08-1.34-1.71-.71L7 9H4c-.55 0-1 .45-1 1zm13.5 2A4.5 4.5 0 0014 7.97v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 4.45v.2c0 .38.25.71.6.85C17.18 6.53 19 9.06 19 12s-1.82 5.47-4.4 6.5c-.36.14-.6.47-.6.85v.2c0 .63.63 1.07 1.21.85C18.6 19.11 21 15.84 21 12s-2.4-7.11-5.79-8.4c-.58-.23-1.21.22-1.21.85z",
27818
28209
  fill: "#fff"
27819
28210
  })
@@ -27837,7 +28228,7 @@ var studioStyle = {
27837
28228
  };
27838
28229
  var BufferingIndicator = ({ type }) => {
27839
28230
  const style = type === "player" ? playerStyle : studioStyle;
27840
- return /* @__PURE__ */ jsxs24(Fragment11, {
28231
+ return /* @__PURE__ */ jsxs24(Fragment12, {
27841
28232
  children: [
27842
28233
  /* @__PURE__ */ jsx214("style", {
27843
28234
  type: "text/css",
@@ -28209,13 +28600,13 @@ var usePlayer = () => {
28209
28600
  const [playing, setPlaying, imperativePlaying] = Internals.Timeline.usePlayingState();
28210
28601
  const [hasPlayed, setHasPlayed] = useState39(false);
28211
28602
  const frame = Internals.Timeline.useTimelinePosition();
28212
- const playStart = useRef46(frame);
28603
+ const playStart = useRef47(frame);
28213
28604
  const setFrame = Internals.Timeline.useTimelineSetFrame();
28214
28605
  const setTimelinePosition = Internals.Timeline.useTimelineSetFrame();
28215
28606
  const audioContext = useContext310(Internals.SharedAudioContext);
28216
28607
  const audioTagsContext = useContext310(Internals.SharedAudioTagsContext);
28217
28608
  const { audioAndVideoTags } = Internals.useTimelineContext();
28218
- const frameRef = useRef46(frame);
28609
+ const frameRef = useRef47(frame);
28219
28610
  frameRef.current = frame;
28220
28611
  const video = Internals.useVideo();
28221
28612
  const config = Internals.useUnsafeVideoConfig();
@@ -28385,7 +28776,7 @@ var useBrowserMediaSession = ({
28385
28776
  playbackRate
28386
28777
  }) => {
28387
28778
  const { playing, pause, play, emitter, getCurrentFrame, seek: seek2 } = usePlayer();
28388
- const hasEverPlayed = useRef29(false);
28779
+ const hasEverPlayed = useRef210(false);
28389
28780
  useEffect310(() => {
28390
28781
  if (playing) {
28391
28782
  hasEverPlayed.current = true;
@@ -28589,7 +28980,7 @@ var usePlayback = ({
28589
28980
  const sharedAudioContext = useContext46(Internals.SharedAudioContext);
28590
28981
  const logLevel = Internals.useLogLevel();
28591
28982
  const isBackgroundedRef = useIsBackgrounded();
28592
- const lastTimeUpdateTimestamp = useRef45(0);
28983
+ const lastTimeUpdateTimestamp = useRef46(0);
28593
28984
  const context = useContext46(Internals.BufferingContextReact);
28594
28985
  if (!context) {
28595
28986
  throw new Error("Missing the buffering context. Most likely you have a Remotion version mismatch.");
@@ -31264,10 +31655,10 @@ var Thumbnail = forward2(ThumbnailFn);
31264
31655
 
31265
31656
  // src/components/homepage/Demo/index.tsx
31266
31657
  import {
31267
- useCallback as useCallback51,
31658
+ useCallback as useCallback53,
31268
31659
  useEffect as useEffect58,
31269
31660
  useMemo as useMemo67,
31270
- useRef as useRef57,
31661
+ useRef as useRef58,
31271
31662
  useState as useState56
31272
31663
  } from "react";
31273
31664
 
@@ -32018,7 +32409,7 @@ var BLUE_TEXT = curriedDarken$1(0.3, "#42e9f5");
32018
32409
 
32019
32410
  // src/components/homepage/layout/use-color-mode.tsx
32020
32411
  import React57, { useContext as useContext47, useMemo as useMemo55 } from "react";
32021
- import { jsx as jsx58 } from "react/jsx-runtime";
32412
+ import { jsx as jsx59 } from "react/jsx-runtime";
32022
32413
  var Context = React57.createContext(undefined);
32023
32414
  var ColorModeProvider = ({
32024
32415
  children,
@@ -32028,7 +32419,7 @@ var ColorModeProvider = ({
32028
32419
  const value = useMemo55(() => {
32029
32420
  return { colorMode, setColorMode };
32030
32421
  }, [colorMode, setColorMode]);
32031
- return /* @__PURE__ */ jsx58(Context.Provider, {
32422
+ return /* @__PURE__ */ jsx59(Context.Provider, {
32032
32423
  value,
32033
32424
  children
32034
32425
  });
@@ -32044,12 +32435,12 @@ function useColorMode() {
32044
32435
  // ../media/dist/esm/index.mjs
32045
32436
  import { useState as useState311 } from "react";
32046
32437
  import { useMemo as useMemo312 } from "react";
32047
- import { useContext as useContext212, useEffect as useEffect44, useMemo as useMemo57, useRef as useRef48, useState as useState40 } from "react";
32438
+ import { useContext as useContext212, useEffect as useEffect44, useMemo as useMemo57, useRef as useRef49, useState as useState40 } from "react";
32048
32439
  import { ALL_FORMATS, Input as Input2, UrlSource } from "mediabunny";
32049
32440
  import { AudioBufferSink, InputDisposedError } from "mediabunny";
32050
32441
  import { CanvasSink } from "mediabunny";
32051
32442
  import { useContext as useContext49, useLayoutEffect as useLayoutEffect18 } from "react";
32052
- import { jsx as jsx59 } from "react/jsx-runtime";
32443
+ import { jsx as jsx60 } from "react/jsx-runtime";
32053
32444
  import { useContext as useContext312, useLayoutEffect as useLayoutEffect24, useMemo as useMemo213, useState as useState212 } from "react";
32054
32445
  import React211 from "react";
32055
32446
  import {
@@ -32064,13 +32455,14 @@ import {
32064
32455
  } from "mediabunny";
32065
32456
  import { jsx as jsx216 } from "react/jsx-runtime";
32066
32457
  import { jsx as jsx316 } from "react/jsx-runtime";
32067
- import { useMemo as useMemo63, useState as useState63 } from "react";
32458
+ import React58, { useMemo as useMemo63, useState as useState63 } from "react";
32068
32459
  import {
32460
+ useCallback as useCallback38,
32069
32461
  useContext as useContext48,
32070
32462
  useEffect as useEffect212,
32071
32463
  useLayoutEffect as useLayoutEffect34,
32072
32464
  useMemo as useMemo412,
32073
- useRef as useRef210,
32465
+ useRef as useRef211,
32074
32466
  useState as useState43
32075
32467
  } from "react";
32076
32468
  import { jsx as jsx412 } from "react/jsx-runtime";
@@ -34140,9 +34532,9 @@ var AudioForPreviewAssertedShowing = ({
34140
34532
  }) => {
34141
34533
  const videoConfig = useUnsafeVideoConfig2();
34142
34534
  const frame = useCurrentFrame();
34143
- const mediaPlayerRef = useRef48(null);
34144
- const initialTrimBeforeRef = useRef48(trimBefore);
34145
- const initialTrimAfterRef = useRef48(trimAfter);
34535
+ const mediaPlayerRef = useRef49(null);
34536
+ const initialTrimBeforeRef = useRef49(trimBefore);
34537
+ const initialTrimAfterRef = useRef49(trimAfter);
34146
34538
  const [initialRequestInit] = useState40(requestInit);
34147
34539
  const [mediaPlayerReady, setMediaPlayerReady] = useState40(false);
34148
34540
  const [shouldFallbackToNativeAudio, setShouldFallbackToNativeAudio] = useState40(false);
@@ -34166,7 +34558,7 @@ var AudioForPreviewAssertedShowing = ({
34166
34558
  throw new TypeError("No `src` was passed to <NewAudioForPreview>.");
34167
34559
  }
34168
34560
  const currentTime = frame / videoConfig.fps;
34169
- const currentTimeRef = useRef48(currentTime);
34561
+ const currentTimeRef = useRef49(currentTime);
34170
34562
  currentTimeRef.current = currentTime;
34171
34563
  const preloadedSrc = usePreload2(src);
34172
34564
  const parentSequence = useContext212(SequenceContext2);
@@ -34179,14 +34571,14 @@ var AudioForPreviewAssertedShowing = ({
34179
34571
  }
34180
34572
  const effectiveMuted = muted || mediaMuted || userPreferredVolume <= 0;
34181
34573
  const isPlayerBuffering = Internals.useIsPlayerBuffering(bufferingContext);
34182
- const initialPlaying = useRef48(playing && !isPlayerBuffering);
34183
- const initialIsPremounting = useRef48(isPremounting);
34184
- const initialIsPostmounting = useRef48(isPostmounting);
34185
- const initialGlobalPlaybackRate = useRef48(globalPlaybackRate);
34186
- const initialPlaybackRate = useRef48(playbackRate);
34187
- const initialMuted = useRef48(effectiveMuted);
34188
- const initialDurationInFrames = useRef48(videoConfig.durationInFrames);
34189
- const initialSequenceOffset = useRef48(sequenceOffset);
34574
+ const initialPlaying = useRef49(playing && !isPlayerBuffering);
34575
+ const initialIsPremounting = useRef49(isPremounting);
34576
+ const initialIsPostmounting = useRef49(isPostmounting);
34577
+ const initialGlobalPlaybackRate = useRef49(globalPlaybackRate);
34578
+ const initialPlaybackRate = useRef49(playbackRate);
34579
+ const initialMuted = useRef49(effectiveMuted);
34580
+ const initialDurationInFrames = useRef49(videoConfig.durationInFrames);
34581
+ const initialSequenceOffset = useRef49(sequenceOffset);
34190
34582
  useCommonEffects({
34191
34583
  mediaPlayerRef,
34192
34584
  mediaPlayerReady,
@@ -34352,7 +34744,7 @@ var AudioForPreviewAssertedShowing = ({
34352
34744
  setMediaDurationInSeconds
34353
34745
  ]);
34354
34746
  if (shouldFallbackToNativeAudio && !disallowFallbackToHtml5Audio) {
34355
- return /* @__PURE__ */ jsx59(Audio, {
34747
+ return /* @__PURE__ */ jsx60(Audio, {
34356
34748
  src,
34357
34749
  muted,
34358
34750
  volume,
@@ -34427,7 +34819,7 @@ var AudioForPreview2 = ({
34427
34819
  if (!setMediaDurationInSeconds) {
34428
34820
  throw new Error("setMediaDurationInSeconds is required");
34429
34821
  }
34430
- return /* @__PURE__ */ jsx59(AudioForPreviewAssertedShowing, {
34822
+ return /* @__PURE__ */ jsx60(AudioForPreviewAssertedShowing, {
34431
34823
  audioStreamIndex,
34432
34824
  src: preloadedSrc,
34433
34825
  playbackRate,
@@ -36649,16 +37041,17 @@ var VideoForPreviewAssertedShowing = ({
36649
37041
  objectFit: objectFitProp,
36650
37042
  _experimentalInitiallyDrawCachedFrame,
36651
37043
  effects,
36652
- setMediaDurationInSeconds
37044
+ setMediaDurationInSeconds,
37045
+ refForOutline
36653
37046
  }) => {
36654
37047
  const src = usePreload22(unpreloadedSrc);
36655
- const canvasRef = useRef210(null);
37048
+ const canvasRef = useRef211(null);
36656
37049
  const videoConfig = useUnsafeVideoConfig22();
36657
37050
  const frame = useCurrentFrame();
36658
- const mediaPlayerRef = useRef210(null);
36659
- const initialTrimBeforeRef = useRef210(trimBefore);
36660
- const initialTrimAfterRef = useRef210(trimAfter);
36661
- const initialOnVideoFrameRef = useRef210(onVideoFrame);
37051
+ const mediaPlayerRef = useRef211(null);
37052
+ const initialTrimBeforeRef = useRef211(trimBefore);
37053
+ const initialTrimAfterRef = useRef211(trimAfter);
37054
+ const initialOnVideoFrameRef = useRef211(onVideoFrame);
36662
37055
  const [initialRequestInit] = useState43(requestInit);
36663
37056
  const [mediaPlayerReady, setMediaPlayerReady] = useState43(false);
36664
37057
  const [shouldFallbackToNativeVideo, setShouldFallbackToNativeVideo] = useState43(false);
@@ -36666,6 +37059,13 @@ var VideoForPreviewAssertedShowing = ({
36666
37059
  const { playbackRate: globalPlaybackRate } = Internals.usePlaybackRate();
36667
37060
  const sharedAudioContext = useContext48(SharedAudioContext22);
36668
37061
  const buffer = useBufferState();
37062
+ const canvasRefCallback = useCallback38((canvas) => {
37063
+ canvasRef.current = canvas;
37064
+ refForOutline.current = canvas;
37065
+ }, [refForOutline]);
37066
+ const fallbackVideoRef = useCallback38((video) => {
37067
+ refForOutline.current = video;
37068
+ }, [refForOutline]);
36669
37069
  const [mediaMuted] = useMediaMutedState22();
36670
37070
  const [mediaVolume] = useMediaVolumeState22();
36671
37071
  const volumePropFrame = useFrameForVolumeProp22(loopVolumeCurveBehavior);
@@ -36679,16 +37079,16 @@ var VideoForPreviewAssertedShowing = ({
36679
37079
  }
36680
37080
  warnAboutTooHighVolume22(userPreferredVolume);
36681
37081
  const effectChainState = useEffectChainState2();
36682
- const effectsRef = useRef210(effects);
37082
+ const effectsRef = useRef211(effects);
36683
37083
  effectsRef.current = effects;
36684
- const effectChainStateRef = useRef210(effectChainState);
37084
+ const effectChainStateRef = useRef211(effectChainState);
36685
37085
  effectChainStateRef.current = effectChainState;
36686
37086
  const parentSequence = useContext48(SequenceContext22);
36687
37087
  const isPremounting = Boolean(parentSequence?.premounting);
36688
37088
  const isPostmounting = Boolean(parentSequence?.postmounting);
36689
37089
  const sequenceOffset = ((parentSequence?.cumulatedFrom ?? 0) + (parentSequence?.relativeFrom ?? 0)) / videoConfig.fps;
36690
37090
  const currentTime = frame / videoConfig.fps;
36691
- const currentTimeRef = useRef210(currentTime);
37091
+ const currentTimeRef = useRef211(currentTime);
36692
37092
  currentTimeRef.current = currentTime;
36693
37093
  const preloadedSrc = usePreload22(src);
36694
37094
  const buffering = useContext48(Internals.BufferingContextReact);
@@ -36697,16 +37097,16 @@ var VideoForPreviewAssertedShowing = ({
36697
37097
  }
36698
37098
  const effectiveMuted = muted || mediaMuted || userPreferredVolume <= 0;
36699
37099
  const isPlayerBuffering = Internals.useIsPlayerBuffering(buffering);
36700
- const initialPlaying = useRef210(playing && !isPlayerBuffering);
36701
- const initialIsPremounting = useRef210(isPremounting);
36702
- const initialIsPostmounting = useRef210(isPostmounting);
36703
- const initialGlobalPlaybackRate = useRef210(globalPlaybackRate);
36704
- const initialPlaybackRate = useRef210(playbackRate);
36705
- const initialMuted = useRef210(effectiveMuted);
36706
- const initialSequenceDuration = useRef210(videoConfig.durationInFrames);
36707
- const initialSequenceOffset = useRef210(sequenceOffset);
36708
- const hasDrawnRealFrameRef = useRef210(false);
36709
- const isPremountingRef = useRef210(isPremounting);
37100
+ const initialPlaying = useRef211(playing && !isPlayerBuffering);
37101
+ const initialIsPremounting = useRef211(isPremounting);
37102
+ const initialIsPostmounting = useRef211(isPostmounting);
37103
+ const initialGlobalPlaybackRate = useRef211(globalPlaybackRate);
37104
+ const initialPlaybackRate = useRef211(playbackRate);
37105
+ const initialMuted = useRef211(effectiveMuted);
37106
+ const initialSequenceDuration = useRef211(videoConfig.durationInFrames);
37107
+ const initialSequenceOffset = useRef211(sequenceOffset);
37108
+ const hasDrawnRealFrameRef = useRef211(false);
37109
+ const isPremountingRef = useRef211(isPremounting);
36710
37110
  isPremountingRef.current = isPremounting;
36711
37111
  useLayoutEffect34(() => {
36712
37112
  if (!_experimentalInitiallyDrawCachedFrame) {
@@ -36940,6 +37340,7 @@ var VideoForPreviewAssertedShowing = ({
36940
37340
  }, [objectFitProp, style2]);
36941
37341
  if (shouldFallbackToNativeVideo && !disallowFallbackToOffthreadVideo) {
36942
37342
  return /* @__PURE__ */ jsx412(Html5Video, {
37343
+ ref: fallbackVideoRef,
36943
37344
  src,
36944
37345
  style: actualStyle,
36945
37346
  className: className2,
@@ -36960,7 +37361,7 @@ var VideoForPreviewAssertedShowing = ({
36960
37361
  return null;
36961
37362
  }
36962
37363
  return /* @__PURE__ */ jsx412("canvas", {
36963
- ref: canvasRef,
37364
+ ref: canvasRefCallback,
36964
37365
  style: actualStyle,
36965
37366
  className: classNameValue
36966
37367
  });
@@ -37372,7 +37773,8 @@ var InnerVideo = ({
37372
37773
  objectFit,
37373
37774
  _experimentalInitiallyDrawCachedFrame,
37374
37775
  effects,
37375
- setMediaDurationInSeconds
37776
+ setMediaDurationInSeconds,
37777
+ refForOutline
37376
37778
  }) => {
37377
37779
  const environment = useRemotionEnvironment();
37378
37780
  if (typeof src !== "string") {
@@ -37447,7 +37849,8 @@ var InnerVideo = ({
37447
37849
  controls,
37448
37850
  objectFit,
37449
37851
  effects,
37450
- _experimentalInitiallyDrawCachedFrame
37852
+ _experimentalInitiallyDrawCachedFrame,
37853
+ refForOutline
37451
37854
  });
37452
37855
  };
37453
37856
  var VideoInner = ({
@@ -37530,6 +37933,7 @@ var VideoInner = ({
37530
37933
  overrideId: controls?.overrideId ?? null
37531
37934
  });
37532
37935
  const memoizedEffectDefinitions = Internals.useMemoizedEffectDefinitions(effects ?? []);
37936
+ const refForOutline = React58.useRef(null);
37533
37937
  if (sequenceDurationInFrames === 0) {
37534
37938
  return null;
37535
37939
  }
@@ -37544,6 +37948,7 @@ var VideoInner = ({
37544
37948
  _experimentalControls: controls,
37545
37949
  _remotionInternalLoopDisplay: loopDisplay,
37546
37950
  _remotionInternalEffects: memoizedEffectDefinitions,
37951
+ _remotionInternalRefForOutline: refForOutline,
37547
37952
  showInTimeline: showInTimeline ?? true,
37548
37953
  hidden,
37549
37954
  children: /* @__PURE__ */ jsx65(InnerVideo, {
@@ -37576,7 +37981,8 @@ var VideoInner = ({
37576
37981
  objectFit: objectFit ?? "contain",
37577
37982
  _experimentalInitiallyDrawCachedFrame: _experimentalInitiallyDrawCachedFrame ?? false,
37578
37983
  effects: memoizedEffects,
37579
- setMediaDurationInSeconds
37984
+ setMediaDurationInSeconds,
37985
+ refForOutline
37580
37986
  })
37581
37987
  });
37582
37988
  };
@@ -37584,19 +37990,19 @@ var Video = Internals.wrapInSchema(VideoInner, videoSchema);
37584
37990
  Internals.addSequenceStackTraces(Video);
37585
37991
 
37586
37992
  // src/components/homepage/Demo/Comp.tsx
37587
- import { useCallback as useCallback45, useEffect as useEffect50, useMemo as useMemo60, useState as useState48 } from "react";
37993
+ import { useCallback as useCallback46, useEffect as useEffect50, useMemo as useMemo60, useState as useState48 } from "react";
37588
37994
 
37589
37995
  // src/components/homepage/Demo/Cards.tsx
37590
37996
  import {
37591
37997
  createRef as createRef4,
37592
- useCallback as useCallback43,
37998
+ useCallback as useCallback45,
37593
37999
  useEffect as useEffect49,
37594
- useRef as useRef53,
38000
+ useRef as useRef55,
37595
38001
  useState as useState47
37596
38002
  } from "react";
37597
38003
 
37598
38004
  // src/components/homepage/Demo/Card.tsx
37599
- import { useCallback as useCallback40, useRef as useRef49 } from "react";
38005
+ import { useCallback as useCallback41, useRef as useRef50 } from "react";
37600
38006
 
37601
38007
  // src/components/homepage/Demo/math.ts
37602
38008
  var paddingAndMargin = 20;
@@ -37630,15 +38036,15 @@ var getIndexFromPosition = (clientX, clientY) => {
37630
38036
  };
37631
38037
 
37632
38038
  // src/components/homepage/Demo/Switcher.tsx
37633
- import { useCallback as useCallback38 } from "react";
37634
- import { jsx as jsx60, jsxs as jsxs14 } from "react/jsx-runtime";
38039
+ import { useCallback as useCallback40 } from "react";
38040
+ import { jsx as jsx61, jsxs as jsxs15 } from "react/jsx-runtime";
37635
38041
  var Switcher = ({ type, theme, onTap }) => {
37636
- const onPointerDown = useCallback38((e) => {
38042
+ const onPointerDown = useCallback40((e) => {
37637
38043
  e.stopPropagation();
37638
38044
  onTap();
37639
38045
  }, [onTap]);
37640
38046
  const switcherSize = 40;
37641
- return /* @__PURE__ */ jsx60("div", {
38047
+ return /* @__PURE__ */ jsx61("div", {
37642
38048
  onPointerDown,
37643
38049
  style: {
37644
38050
  height: switcherSize,
@@ -37656,15 +38062,15 @@ var Switcher = ({ type, theme, onTap }) => {
37656
38062
  alignItems: "center",
37657
38063
  display: "flex"
37658
38064
  },
37659
- children: /* @__PURE__ */ jsxs14("svg", {
38065
+ children: /* @__PURE__ */ jsxs15("svg", {
37660
38066
  style: { height: switcherSize / 2 },
37661
38067
  viewBox: "0 0 320 512",
37662
38068
  children: [
37663
- type === "left" ? /* @__PURE__ */ jsx60("path", {
38069
+ type === "left" ? /* @__PURE__ */ jsx61("path", {
37664
38070
  fill: "currentcolor",
37665
38071
  d: "M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z"
37666
38072
  }) : null,
37667
- type === "right" ? /* @__PURE__ */ jsx60("path", {
38073
+ type === "right" ? /* @__PURE__ */ jsx61("path", {
37668
38074
  fill: "currentcolor",
37669
38075
  d: "M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z"
37670
38076
  }) : null
@@ -37674,7 +38080,7 @@ var Switcher = ({ type, theme, onTap }) => {
37674
38080
  };
37675
38081
 
37676
38082
  // src/components/homepage/Demo/Card.tsx
37677
- import { jsx as jsx61, jsxs as jsxs15, Fragment as Fragment12 } from "react/jsx-runtime";
38083
+ import { jsx as jsx66, jsxs as jsxs16, Fragment as Fragment13 } from "react/jsx-runtime";
37678
38084
  var arePositionsEqual = (a2, b2) => {
37679
38085
  return a2.every((pos, i) => {
37680
38086
  return pos.x === b2[i].x && pos.y === b2[i].y;
@@ -37694,9 +38100,9 @@ var Card2 = ({
37694
38100
  onClickRight
37695
38101
  }) => {
37696
38102
  const refToUse = refsToUse[index2];
37697
- const stopPrevious = useRef49([]);
38103
+ const stopPrevious = useRef50([]);
37698
38104
  let newIndices = [...indices];
37699
- const applyPositions = useCallback40((except) => {
38105
+ const applyPositions = useCallback41((except) => {
37700
38106
  let stopped = false;
37701
38107
  stopPrevious.current.forEach((s) => {
37702
38108
  s();
@@ -37769,7 +38175,7 @@ var Card2 = ({
37769
38175
  update();
37770
38176
  });
37771
38177
  }, [newIndices, onUpdate, positions, refsToUse, shouldBePositions]);
37772
- const onPointerDown = useCallback40((e) => {
38178
+ const onPointerDown = useCallback41((e) => {
37773
38179
  e.currentTarget.setPointerCapture(e.pointerId);
37774
38180
  const cardLeft = refToUse.current.offsetLeft;
37775
38181
  const cardTop = refToUse.current.offsetTop;
@@ -37830,12 +38236,12 @@ var Card2 = ({
37830
38236
  }, { once: true });
37831
38237
  refToUse.current.addEventListener("pointermove", onMove);
37832
38238
  }, [applyPositions, index2, positions, refToUse, shouldBePositions]);
37833
- const onPointerUp = useCallback40((e) => {
38239
+ const onPointerUp = useCallback41((e) => {
37834
38240
  e.currentTarget.releasePointerCapture(e.pointerId);
37835
38241
  }, []);
37836
38242
  const { x, y } = getPositionForIndex(index2);
37837
38243
  const color = theme === "light" ? " #EAEAEA" : "#333";
37838
- return /* @__PURE__ */ jsx61("div", {
38244
+ return /* @__PURE__ */ jsx66("div", {
37839
38245
  ref: refToUse,
37840
38246
  className: "transition-opacity duration-200",
37841
38247
  onPointerDown,
@@ -37851,7 +38257,7 @@ var Card2 = ({
37851
38257
  borderRadius: 13,
37852
38258
  cursor: "grab"
37853
38259
  },
37854
- children: /* @__PURE__ */ jsxs15(AbsoluteFill, {
38260
+ children: /* @__PURE__ */ jsxs16(AbsoluteFill, {
37855
38261
  style: {
37856
38262
  backgroundColor: color,
37857
38263
  borderRadius: 12
@@ -37859,14 +38265,14 @@ var Card2 = ({
37859
38265
  className: "transition-opacity duration-200",
37860
38266
  children: [
37861
38267
  content,
37862
- withSwitcher ? /* @__PURE__ */ jsxs15(Fragment12, {
38268
+ withSwitcher ? /* @__PURE__ */ jsxs16(Fragment13, {
37863
38269
  children: [
37864
- /* @__PURE__ */ jsx61(Switcher, {
38270
+ /* @__PURE__ */ jsx66(Switcher, {
37865
38271
  onTap: onClickLeft,
37866
38272
  type: "left",
37867
38273
  theme
37868
38274
  }),
37869
- /* @__PURE__ */ jsx61(Switcher, {
38275
+ /* @__PURE__ */ jsx66(Switcher, {
37870
38276
  onTap: onClickRight,
37871
38277
  type: "right",
37872
38278
  theme
@@ -37879,7 +38285,7 @@ var Card2 = ({
37879
38285
  };
37880
38286
 
37881
38287
  // src/components/homepage/Demo/CurrentCountry.tsx
37882
- import { jsx as jsx66, jsxs as jsxs16 } from "react/jsx-runtime";
38288
+ import { jsx as jsx68, jsxs as jsxs17 } from "react/jsx-runtime";
37883
38289
  var CurrentCountry = ({ theme, countryPaths, countryLabel }) => {
37884
38290
  const { fps } = useVideoConfig();
37885
38291
  const frame = useCurrentFrame();
@@ -37894,31 +38300,31 @@ var CurrentCountry = ({ theme, countryPaths, countryLabel }) => {
37894
38300
  frame,
37895
38301
  delay: 10
37896
38302
  });
37897
- return /* @__PURE__ */ jsxs16(AbsoluteFill, {
38303
+ return /* @__PURE__ */ jsxs17(AbsoluteFill, {
37898
38304
  style: { overflow: "hidden" },
37899
38305
  children: [
37900
- /* @__PURE__ */ jsx66(AbsoluteFill, {
38306
+ /* @__PURE__ */ jsx68(AbsoluteFill, {
37901
38307
  style: {
37902
38308
  transform: `scale(${progress})`
37903
38309
  },
37904
- children: /* @__PURE__ */ jsx66("svg", {
38310
+ children: /* @__PURE__ */ jsx68("svg", {
37905
38311
  viewBox: boundingBox.viewBox,
37906
38312
  style: {
37907
38313
  scale: "0.8"
37908
38314
  },
37909
- children: /* @__PURE__ */ jsx66("path", {
38315
+ children: /* @__PURE__ */ jsx68("path", {
37910
38316
  fill: theme === "light" ? "#bbb" : "#222",
37911
38317
  d: reset
37912
38318
  })
37913
38319
  })
37914
38320
  }),
37915
- /* @__PURE__ */ jsxs16(AbsoluteFill, {
38321
+ /* @__PURE__ */ jsxs17(AbsoluteFill, {
37916
38322
  style: {
37917
38323
  alignItems: "center",
37918
38324
  justifyContent: "center"
37919
38325
  },
37920
38326
  children: [
37921
- /* @__PURE__ */ jsx66("div", {
38327
+ /* @__PURE__ */ jsx68("div", {
37922
38328
  style: {
37923
38329
  color: "#0b84f3",
37924
38330
  fontFamily: "GTPlanar",
@@ -37933,7 +38339,7 @@ var CurrentCountry = ({ theme, countryPaths, countryLabel }) => {
37933
38339
  },
37934
38340
  children: "Your country"
37935
38341
  }),
37936
- /* @__PURE__ */ jsx66("div", {
38342
+ /* @__PURE__ */ jsx68("div", {
37937
38343
  style: {
37938
38344
  lineHeight: 1.1,
37939
38345
  fontFamily: "GTPlanar",
@@ -37957,16 +38363,16 @@ var CurrentCountry = ({ theme, countryPaths, countryLabel }) => {
37957
38363
  // src/components/homepage/Demo/EmojiCard.tsx
37958
38364
  import {
37959
38365
  forwardRef as forwardRef37,
37960
- useCallback as useCallback41,
38366
+ useCallback as useCallback43,
37961
38367
  useEffect as useEffect48,
37962
38368
  useImperativeHandle as useImperativeHandle13,
37963
- useRef as useRef51
38369
+ useRef as useRef53
37964
38370
  } from "react";
37965
38371
 
37966
38372
  // ../lottie/dist/esm/index.mjs
37967
38373
  import lottie from "lottie-web";
37968
- import { useEffect as useEffect46, useRef as useRef50, useState as useState44 } from "react";
37969
- import { jsx as jsx68 } from "react/jsx-runtime";
38374
+ import { useEffect as useEffect46, useRef as useRef51, useState as useState44 } from "react";
38375
+ import { jsx as jsx69 } from "react/jsx-runtime";
37970
38376
  var getLottieMetadata = (animationData) => {
37971
38377
  const width2 = animationData.w;
37972
38378
  const height2 = animationData.h;
@@ -38034,10 +38440,10 @@ var Lottie = ({
38034
38440
  }
38035
38441
  validatePlaybackRate2(playbackRate);
38036
38442
  validateLoop(loop);
38037
- const animationRef = useRef50(null);
38038
- const currentFrameRef = useRef50(null);
38039
- const containerRef = useRef50(null);
38040
- const onAnimationLoadedRef = useRef50(onAnimationLoaded);
38443
+ const animationRef = useRef51(null);
38444
+ const currentFrameRef = useRef51(null);
38445
+ const containerRef = useRef51(null);
38446
+ const onAnimationLoadedRef = useRef51(onAnimationLoaded);
38041
38447
  onAnimationLoadedRef.current = onAnimationLoaded;
38042
38448
  const { delayRender: delayRender2, continueRender } = useDelayRender();
38043
38449
  const [handle] = useState44(() => delayRender2("Waiting for Lottie animation to load"));
@@ -38128,7 +38534,7 @@ var Lottie = ({
38128
38534
  img.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", img.href.baseVal);
38129
38535
  });
38130
38536
  }, [direction, frame, loop, playbackRate, delayRender2, continueRender]);
38131
- return /* @__PURE__ */ jsx68("div", {
38537
+ return /* @__PURE__ */ jsx69("div", {
38132
38538
  ref: containerRef,
38133
38539
  className: className2,
38134
38540
  style: style2
@@ -38137,7 +38543,7 @@ var Lottie = ({
38137
38543
 
38138
38544
  // src/components/homepage/Demo/DisplayedEmoji.tsx
38139
38545
  import { useEffect as useEffect47, useMemo as useMemo58, useState as useState46 } from "react";
38140
- import { jsx as jsx69 } from "react/jsx-runtime";
38546
+ import { jsx as jsx70 } from "react/jsx-runtime";
38141
38547
  var DisplayedEmoji = ({ emoji }) => {
38142
38548
  const [data, setData] = useState46(null);
38143
38549
  const { durationInFrames, fps } = useVideoConfig();
@@ -38182,7 +38588,7 @@ var DisplayedEmoji = ({ emoji }) => {
38182
38588
  const ratio = durationInFrames / fps / animDurtion;
38183
38589
  const closestInteger = ratio;
38184
38590
  const closestRatio = closestInteger / ratio;
38185
- return /* @__PURE__ */ jsx69(Lottie, {
38591
+ return /* @__PURE__ */ jsx70(Lottie, {
38186
38592
  style: {
38187
38593
  height: 100,
38188
38594
  width: "100%",
@@ -38196,7 +38602,7 @@ var DisplayedEmoji = ({ emoji }) => {
38196
38602
  };
38197
38603
 
38198
38604
  // src/components/homepage/Demo/EmojiCard.tsx
38199
- import { jsx as jsx70, jsxs as jsxs17, Fragment as Fragment13 } from "react/jsx-runtime";
38605
+ import { jsx as jsx71, jsxs as jsxs18, Fragment as Fragment14 } from "react/jsx-runtime";
38200
38606
  var applyTransforms = ({ ref1, ref2, ref3, transforms }) => {
38201
38607
  ref1.style.transform = `translateX(${transforms[0]}%)`;
38202
38608
  ref2.style.transform = `translateX(${transforms[1]}%)`;
@@ -38237,11 +38643,11 @@ var emojiStyle = {
38237
38643
  top: "calc(50% - 50px)"
38238
38644
  };
38239
38645
  var EmojiCardRefFn = ({ emojiIndex }, ref) => {
38240
- const ref1 = useRef51(null);
38241
- const ref2 = useRef51(null);
38242
- const ref3 = useRef51(null);
38243
- const transforms = useRef51([-100, 0, 100]);
38244
- const onLeft = useCallback41(() => {
38646
+ const ref1 = useRef53(null);
38647
+ const ref2 = useRef53(null);
38648
+ const ref3 = useRef53(null);
38649
+ const transforms = useRef53([-100, 0, 100]);
38650
+ const onLeft = useCallback43(() => {
38245
38651
  if (!ref1.current || !ref2.current || !ref3.current) {
38246
38652
  return;
38247
38653
  }
@@ -38252,7 +38658,7 @@ var EmojiCardRefFn = ({ emojiIndex }, ref) => {
38252
38658
  transforms: transforms.current
38253
38659
  });
38254
38660
  }, []);
38255
- const onRight = useCallback41(() => {
38661
+ const onRight = useCallback43(() => {
38256
38662
  if (!ref1.current || !ref2.current || !ref3.current) {
38257
38663
  return;
38258
38664
  }
@@ -38292,14 +38698,14 @@ var EmojiCardRefFn = ({ emojiIndex }, ref) => {
38292
38698
  });
38293
38699
  }, []);
38294
38700
  const env = useRemotionEnvironment();
38295
- return /* @__PURE__ */ jsxs17(AbsoluteFill, {
38701
+ return /* @__PURE__ */ jsxs18(AbsoluteFill, {
38296
38702
  style: {
38297
38703
  justifyContent: "center",
38298
38704
  alignItems: "center",
38299
38705
  overflow: "hidden"
38300
38706
  },
38301
38707
  children: [
38302
- /* @__PURE__ */ jsx70("div", {
38708
+ /* @__PURE__ */ jsx71("div", {
38303
38709
  style: {
38304
38710
  color: "#0b84f3",
38305
38711
  fontFamily: "GTPlanar",
@@ -38311,7 +38717,7 @@ var EmojiCardRefFn = ({ emojiIndex }, ref) => {
38311
38717
  },
38312
38718
  children: "Choose an emoji"
38313
38719
  }),
38314
- /* @__PURE__ */ jsx70("div", {
38720
+ /* @__PURE__ */ jsx71("div", {
38315
38721
  style: {
38316
38722
  position: "absolute",
38317
38723
  width: "100%",
@@ -38319,31 +38725,31 @@ var EmojiCardRefFn = ({ emojiIndex }, ref) => {
38319
38725
  whiteSpace: "nowrap",
38320
38726
  height: "100%"
38321
38727
  },
38322
- children: env.isRendering ? /* @__PURE__ */ jsx70("div", {
38728
+ children: env.isRendering ? /* @__PURE__ */ jsx71("div", {
38323
38729
  style: emojiStyle,
38324
- children: /* @__PURE__ */ jsx70(DisplayedEmoji, {
38730
+ children: /* @__PURE__ */ jsx71(DisplayedEmoji, {
38325
38731
  emoji: emojiIndex
38326
38732
  })
38327
- }) : /* @__PURE__ */ jsxs17(Fragment13, {
38733
+ }) : /* @__PURE__ */ jsxs18(Fragment14, {
38328
38734
  children: [
38329
- /* @__PURE__ */ jsx70("div", {
38735
+ /* @__PURE__ */ jsx71("div", {
38330
38736
  ref: ref1,
38331
38737
  style: emojiStyle,
38332
- children: /* @__PURE__ */ jsx70(DisplayedEmoji, {
38738
+ children: /* @__PURE__ */ jsx71(DisplayedEmoji, {
38333
38739
  emoji: "melting"
38334
38740
  })
38335
38741
  }),
38336
- /* @__PURE__ */ jsx70("div", {
38742
+ /* @__PURE__ */ jsx71("div", {
38337
38743
  ref: ref2,
38338
38744
  style: emojiStyle,
38339
- children: /* @__PURE__ */ jsx70(DisplayedEmoji, {
38745
+ children: /* @__PURE__ */ jsx71(DisplayedEmoji, {
38340
38746
  emoji: "partying-face"
38341
38747
  })
38342
38748
  }),
38343
- /* @__PURE__ */ jsx70("div", {
38749
+ /* @__PURE__ */ jsx71("div", {
38344
38750
  ref: ref3,
38345
38751
  style: emojiStyle,
38346
- children: /* @__PURE__ */ jsx70(DisplayedEmoji, {
38752
+ children: /* @__PURE__ */ jsx71(DisplayedEmoji, {
38347
38753
  emoji: "fire"
38348
38754
  })
38349
38755
  })
@@ -38356,9 +38762,9 @@ var EmojiCardRefFn = ({ emojiIndex }, ref) => {
38356
38762
  var EmojiCard = forwardRef37(EmojiCardRefFn);
38357
38763
 
38358
38764
  // src/components/homepage/Demo/Minus.tsx
38359
- import { jsx as jsx71 } from "react/jsx-runtime";
38765
+ import { jsx as jsx75 } from "react/jsx-runtime";
38360
38766
  var Minus = ({ leftOffset, minusSignOpacity }) => {
38361
- return /* @__PURE__ */ jsx71("div", {
38767
+ return /* @__PURE__ */ jsx75("div", {
38362
38768
  style: {
38363
38769
  position: "relative",
38364
38770
  marginLeft: -40 - leftOffset,
@@ -38372,7 +38778,7 @@ var Minus = ({ leftOffset, minusSignOpacity }) => {
38372
38778
  };
38373
38779
 
38374
38780
  // src/components/homepage/Demo/DigitWheel.tsx
38375
- import { jsx as jsx75, jsxs as jsxs18 } from "react/jsx-runtime";
38781
+ import { jsx as jsx77, jsxs as jsxs19 } from "react/jsx-runtime";
38376
38782
  var DURATION = 25;
38377
38783
  var items = 10;
38378
38784
  var NUM_WIDTH = 36;
@@ -38416,7 +38822,7 @@ var Wheel = ({ delay: delay2, digits, renderDigit, isLeadingDigit, isNegative })
38416
38822
  const rotation = progresses.map((p, i) => {
38417
38823
  return p * offsets[i];
38418
38824
  }).reduce((a2, b2) => a2 + b2, 0) + rotations[0];
38419
- return /* @__PURE__ */ jsxs18("div", {
38825
+ return /* @__PURE__ */ jsxs19("div", {
38420
38826
  style: {
38421
38827
  position: "relative",
38422
38828
  width: NUM_WIDTH,
@@ -38425,11 +38831,11 @@ var Wheel = ({ delay: delay2, digits, renderDigit, isLeadingDigit, isNegative })
38425
38831
  marginLeft: shiftLeft
38426
38832
  },
38427
38833
  children: [
38428
- isLeadingDigit ? /* @__PURE__ */ jsx75(Minus, {
38834
+ isLeadingDigit ? /* @__PURE__ */ jsx77(Minus, {
38429
38835
  minusSignOpacity,
38430
38836
  leftOffset: shiftLeft + minusSignMarginLeft
38431
38837
  }) : null,
38432
- /* @__PURE__ */ jsx75(AbsoluteFill, {
38838
+ /* @__PURE__ */ jsx77(AbsoluteFill, {
38433
38839
  style: {
38434
38840
  perspective: 5000,
38435
38841
  maskImage: `linear-gradient(to bottom, transparent 0%, #000 28%, #000 80%, transparent 100%)`,
@@ -38440,7 +38846,7 @@ var Wheel = ({ delay: delay2, digits, renderDigit, isLeadingDigit, isNegative })
38440
38846
  const z = Math.cos(index2 * -Math.PI * 2) * 120;
38441
38847
  const y = Math.sin(index2 * Math.PI * 2) * -120;
38442
38848
  const r2 = interpolate(index2, [0, 1], [0, Math.PI * 2]);
38443
- return /* @__PURE__ */ jsx75(AbsoluteFill, {
38849
+ return /* @__PURE__ */ jsx77(AbsoluteFill, {
38444
38850
  style: {
38445
38851
  justifyContent: "center",
38446
38852
  alignItems: "center",
@@ -38450,7 +38856,7 @@ var Wheel = ({ delay: delay2, digits, renderDigit, isLeadingDigit, isNegative })
38450
38856
  backfaceVisibility: "hidden",
38451
38857
  perspective: 1000
38452
38858
  },
38453
- children: /* @__PURE__ */ jsx75("div", {
38859
+ children: /* @__PURE__ */ jsx77("div", {
38454
38860
  style: {
38455
38861
  transform: `rotateX(-${r2}rad)`,
38456
38862
  backfaceVisibility: "hidden",
@@ -38460,7 +38866,7 @@ var Wheel = ({ delay: delay2, digits, renderDigit, isLeadingDigit, isNegative })
38460
38866
  justifyContent: "center",
38461
38867
  opacity: opacity2
38462
38868
  },
38463
- children: /* @__PURE__ */ jsx75("div", {
38869
+ children: /* @__PURE__ */ jsx77("div", {
38464
38870
  style: {
38465
38871
  lineHeight: 1,
38466
38872
  display: "inline",
@@ -38477,14 +38883,14 @@ var Wheel = ({ delay: delay2, digits, renderDigit, isLeadingDigit, isNegative })
38477
38883
  };
38478
38884
 
38479
38885
  // src/components/homepage/Demo/TemperatureNumber.tsx
38480
- import { jsx as jsx77, jsxs as jsxs19 } from "react/jsx-runtime";
38886
+ import { jsx as jsx78, jsxs as jsxs20 } from "react/jsx-runtime";
38481
38887
  var TemperatureNumber = ({ theme, temperatureInCelsius }) => {
38482
38888
  const temperatureInFahrenheit = temperatureInCelsius * 9 / 5 + 32;
38483
38889
  const celsiusDegree = Math.abs(temperatureInCelsius);
38484
38890
  const fahrenheitDegree = Math.abs(temperatureInFahrenheit);
38485
38891
  const paddedCelsiusDegree = String(celsiusDegree).padStart(fahrenheitDegree.toFixed(0).length, "0").split("");
38486
38892
  const paddedFahrenheitDegree = fahrenheitDegree.toFixed(0).padStart(paddedCelsiusDegree.length, "0").split("");
38487
- return /* @__PURE__ */ jsxs19("div", {
38893
+ return /* @__PURE__ */ jsxs20("div", {
38488
38894
  style: {
38489
38895
  lineHeight: 1.1,
38490
38896
  fontFamily: "GTPlanar",
@@ -38498,7 +38904,7 @@ var TemperatureNumber = ({ theme, temperatureInCelsius }) => {
38498
38904
  alignItems: "center"
38499
38905
  },
38500
38906
  children: [
38501
- paddedCelsiusDegree.map((digit, i) => /* @__PURE__ */ jsx77(Wheel, {
38907
+ paddedCelsiusDegree.map((digit, i) => /* @__PURE__ */ jsx78(Wheel, {
38502
38908
  delay: i * 4,
38503
38909
  renderDigit: (_i) => 9 - _i,
38504
38910
  digits: [
@@ -38513,14 +38919,14 @@ var TemperatureNumber = ({ theme, temperatureInCelsius }) => {
38513
38919
  ],
38514
38920
  isLeadingDigit: i === 0
38515
38921
  }, i)),
38516
- /* @__PURE__ */ jsx77("div", {
38922
+ /* @__PURE__ */ jsx78("div", {
38517
38923
  style: { width: 8 }
38518
38924
  }),
38519
38925
  "°",
38520
- /* @__PURE__ */ jsx77(Wheel, {
38926
+ /* @__PURE__ */ jsx78(Wheel, {
38521
38927
  delay: paddedCelsiusDegree.length * 4 - 2,
38522
38928
  digits: [0, 1, 0],
38523
- renderDigit: (_i) => _i % 2 === 0 ? "C" : /* @__PURE__ */ jsx77("span", {
38929
+ renderDigit: (_i) => _i % 2 === 0 ? "C" : /* @__PURE__ */ jsx78("span", {
38524
38930
  style: { marginLeft: -5 },
38525
38931
  children: "F"
38526
38932
  }),
@@ -38532,13 +38938,13 @@ var TemperatureNumber = ({ theme, temperatureInCelsius }) => {
38532
38938
  };
38533
38939
 
38534
38940
  // src/components/homepage/Demo/Temperature.tsx
38535
- import { jsx as jsx78, jsxs as jsxs20 } from "react/jsx-runtime";
38941
+ import { jsx as jsx79, jsxs as jsxs21 } from "react/jsx-runtime";
38536
38942
  var Temperature = ({ theme, city, temperatureInCelsius }) => {
38537
38943
  if (temperatureInCelsius === null) {
38538
38944
  return null;
38539
38945
  }
38540
- return /* @__PURE__ */ jsx78(AbsoluteFill, {
38541
- children: /* @__PURE__ */ jsxs20(AbsoluteFill, {
38946
+ return /* @__PURE__ */ jsx79(AbsoluteFill, {
38947
+ children: /* @__PURE__ */ jsxs21(AbsoluteFill, {
38542
38948
  style: {
38543
38949
  alignItems: "center",
38544
38950
  justifyContent: "center",
@@ -38546,7 +38952,7 @@ var Temperature = ({ theme, city, temperatureInCelsius }) => {
38546
38952
  paddingRight: 20
38547
38953
  },
38548
38954
  children: [
38549
- /* @__PURE__ */ jsxs20("div", {
38955
+ /* @__PURE__ */ jsxs21("div", {
38550
38956
  style: {
38551
38957
  color: "#0b84f3",
38552
38958
  fontFamily: "GTPlanar",
@@ -38560,7 +38966,7 @@ var Temperature = ({ theme, city, temperatureInCelsius }) => {
38560
38966
  city
38561
38967
  ]
38562
38968
  }),
38563
- /* @__PURE__ */ jsx78(TemperatureNumber, {
38969
+ /* @__PURE__ */ jsx79(TemperatureNumber, {
38564
38970
  theme,
38565
38971
  temperatureInCelsius
38566
38972
  })
@@ -38571,7 +38977,7 @@ var Temperature = ({ theme, city, temperatureInCelsius }) => {
38571
38977
 
38572
38978
  // src/components/homepage/Demo/TrendingRepos.tsx
38573
38979
  import { useMemo as useMemo59 } from "react";
38574
- import { jsx as jsx79, jsxs as jsxs21 } from "react/jsx-runtime";
38980
+ import { jsx as jsx80, jsxs as jsxs25 } from "react/jsx-runtime";
38575
38981
  var TrendingRepoItem = ({ repo, theme, number }) => {
38576
38982
  const frame = useCurrentFrame();
38577
38983
  const { fps } = useVideoConfig();
@@ -38593,7 +38999,7 @@ var TrendingRepoItem = ({ repo, theme, number }) => {
38593
38999
  opacity: progress
38594
39000
  };
38595
39001
  }, [progress, theme]);
38596
- return /* @__PURE__ */ jsxs21("div", {
39002
+ return /* @__PURE__ */ jsxs25("div", {
38597
39003
  style: item,
38598
39004
  children: [
38599
39005
  number,
@@ -38617,16 +39023,16 @@ var TrendingRepos = ({ theme, trending }) => {
38617
39023
  if (trending === null) {
38618
39024
  return null;
38619
39025
  }
38620
- return /* @__PURE__ */ jsx79(AbsoluteFill, {
38621
- children: /* @__PURE__ */ jsx79(AbsoluteFill, {
39026
+ return /* @__PURE__ */ jsx80(AbsoluteFill, {
39027
+ children: /* @__PURE__ */ jsx80(AbsoluteFill, {
38622
39028
  style: {
38623
39029
  justifyContent: "center",
38624
39030
  paddingLeft: 20,
38625
39031
  paddingRight: 20
38626
39032
  },
38627
- children: /* @__PURE__ */ jsxs21("div", {
39033
+ children: /* @__PURE__ */ jsxs25("div", {
38628
39034
  children: [
38629
- /* @__PURE__ */ jsx79("div", {
39035
+ /* @__PURE__ */ jsx80("div", {
38630
39036
  style: {
38631
39037
  color: fill,
38632
39038
  fontFamily: "GTPlanar",
@@ -38640,7 +39046,7 @@ var TrendingRepos = ({ theme, trending }) => {
38640
39046
  day: "numeric"
38641
39047
  }).format(new Date(trending.date))
38642
39048
  }),
38643
- /* @__PURE__ */ jsx79("div", {
39049
+ /* @__PURE__ */ jsx80("div", {
38644
39050
  style: {
38645
39051
  color: "#0b84f3",
38646
39052
  fontFamily: "GTPlanar",
@@ -38652,17 +39058,17 @@ var TrendingRepos = ({ theme, trending }) => {
38652
39058
  },
38653
39059
  children: "Trending repositories"
38654
39060
  }),
38655
- /* @__PURE__ */ jsx79(TrendingRepoItem, {
39061
+ /* @__PURE__ */ jsx80(TrendingRepoItem, {
38656
39062
  number: 1,
38657
39063
  repo: trending.repos[0],
38658
39064
  theme
38659
39065
  }),
38660
- /* @__PURE__ */ jsx79(TrendingRepoItem, {
39066
+ /* @__PURE__ */ jsx80(TrendingRepoItem, {
38661
39067
  number: 2,
38662
39068
  repo: trending.repos[1],
38663
39069
  theme
38664
39070
  }),
38665
- /* @__PURE__ */ jsx79(TrendingRepoItem, {
39071
+ /* @__PURE__ */ jsx80(TrendingRepoItem, {
38666
39072
  number: 3,
38667
39073
  repo: trending.repos[2],
38668
39074
  theme
@@ -38674,7 +39080,7 @@ var TrendingRepos = ({ theme, trending }) => {
38674
39080
  };
38675
39081
 
38676
39082
  // src/components/homepage/Demo/Cards.tsx
38677
- import { jsx as jsx80 } from "react/jsx-runtime";
39083
+ import { jsx as jsx81 } from "react/jsx-runtime";
38678
39084
  var Cards = ({
38679
39085
  onUpdate,
38680
39086
  indices,
@@ -38686,14 +39092,14 @@ var Cards = ({
38686
39092
  location,
38687
39093
  trending
38688
39094
  }) => {
38689
- const container4 = useRef53(null);
39095
+ const container4 = useRef55(null);
38690
39096
  const [refs] = useState47(() => {
38691
39097
  return new Array(4).fill(true).map(() => {
38692
39098
  return createRef4();
38693
39099
  });
38694
39100
  });
38695
- const positions = useRef53(getInitialPositions());
38696
- const shouldBePositions = useRef53(getInitialPositions());
39101
+ const positions = useRef55(getInitialPositions());
39102
+ const shouldBePositions = useRef55(getInitialPositions());
38697
39103
  const { isRendering } = useRemotionEnvironment();
38698
39104
  useEffect49(() => {
38699
39105
  const { current } = container4;
@@ -38711,35 +39117,35 @@ var Cards = ({
38711
39117
  current.removeEventListener("click", onClick);
38712
39118
  };
38713
39119
  }, [onToggle]);
38714
- const ref = useRef53(null);
38715
- const onLeft = useCallback43(() => {
39120
+ const ref = useRef55(null);
39121
+ const onLeft = useCallback45(() => {
38716
39122
  ref.current?.onRight();
38717
39123
  onRightPress();
38718
39124
  }, [onRightPress]);
38719
- const onRight = useCallback43(() => {
39125
+ const onRight = useCallback45(() => {
38720
39126
  ref.current?.onLeft();
38721
39127
  onLeftPress();
38722
39128
  }, [onLeftPress]);
38723
- return /* @__PURE__ */ jsx80(AbsoluteFill, {
39129
+ return /* @__PURE__ */ jsx81(AbsoluteFill, {
38724
39130
  ref: container4,
38725
39131
  children: new Array(4).fill(true).map((_, i) => {
38726
39132
  const index2 = indices[i];
38727
- const content = index2 === 0 ? /* @__PURE__ */ jsx80(TrendingRepos, {
39133
+ const content = index2 === 0 ? /* @__PURE__ */ jsx81(TrendingRepos, {
38728
39134
  trending,
38729
39135
  theme
38730
- }) : index2 === 1 ? /* @__PURE__ */ jsx80(Temperature, {
39136
+ }) : index2 === 1 ? /* @__PURE__ */ jsx81(Temperature, {
38731
39137
  city: location?.city ? decodeURIComponent(location?.city) : null,
38732
39138
  theme,
38733
39139
  temperatureInCelsius: trending?.temperatureInCelsius ?? null
38734
- }) : index2 === 2 ? /* @__PURE__ */ jsx80(CurrentCountry, {
39140
+ }) : index2 === 2 ? /* @__PURE__ */ jsx81(CurrentCountry, {
38735
39141
  countryPaths: trending?.countryPaths ?? null,
38736
39142
  countryLabel: trending?.countryLabel ?? null,
38737
39143
  theme
38738
- }) : /* @__PURE__ */ jsx80(EmojiCard, {
39144
+ }) : /* @__PURE__ */ jsx81(EmojiCard, {
38739
39145
  ref,
38740
39146
  emojiIndex: emojiName
38741
39147
  });
38742
- return /* @__PURE__ */ jsx80(Card2, {
39148
+ return /* @__PURE__ */ jsx81(Card2, {
38743
39149
  onUpdate,
38744
39150
  refsToUse: refs,
38745
39151
  index: i,
@@ -38757,9 +39163,9 @@ var Cards = ({
38757
39163
  };
38758
39164
 
38759
39165
  // src/components/homepage/Demo/Comp.tsx
38760
- import { jsx as jsx81, jsxs as jsxs25 } from "react/jsx-runtime";
39166
+ import { jsx as jsx85, jsxs as jsxs27 } from "react/jsx-runtime";
38761
39167
  var getDataAndProps = async () => {
38762
- const location = await fetch("https://bugs-five.vercel.app/api/location").then((res) => res.json());
39168
+ const location = await fetch("https://utils.remotion.dev/location").then((res) => res.json());
38763
39169
  const trending = await fetch(`https://bugs.remotion.dev/trending?lat=${location.latitude}&lng=${location.longitude}&country=${location.country}`).then((res) => res.json()).then((data) => {
38764
39170
  return {
38765
39171
  repos: data.trending.repos.slice(0, 3),
@@ -38786,7 +39192,7 @@ var HomepageVideoComp = ({
38786
39192
  onClickRight
38787
39193
  }) => {
38788
39194
  const [rerenders, setRerenders] = useState48(0);
38789
- const onUpdate = useCallback45((newIndices) => {
39195
+ const onUpdate = useCallback46((newIndices) => {
38790
39196
  setRerenders(rerenders + 1);
38791
39197
  updateCardOrder(newIndices);
38792
39198
  }, [rerenders, updateCardOrder]);
@@ -38818,12 +39224,12 @@ var HomepageVideoComp = ({
38818
39224
  c2.free();
38819
39225
  };
38820
39226
  }, []);
38821
- return /* @__PURE__ */ jsxs25(AbsoluteFill, {
39227
+ return /* @__PURE__ */ jsxs27(AbsoluteFill, {
38822
39228
  style: {
38823
39229
  backgroundColor: theme === "dark" ? "#222" : "#fafafa"
38824
39230
  },
38825
39231
  children: [
38826
- /* @__PURE__ */ jsx81(Cards, {
39232
+ /* @__PURE__ */ jsx85(Cards, {
38827
39233
  onUpdate,
38828
39234
  indices: cardOrder,
38829
39235
  theme,
@@ -38834,7 +39240,7 @@ var HomepageVideoComp = ({
38834
39240
  onRight: onClickRight,
38835
39241
  emojiName: emoji
38836
39242
  }, rerenders),
38837
- audioSrc ? /* @__PURE__ */ jsx81(Audio2, {
39243
+ audioSrc ? /* @__PURE__ */ jsx85(Audio2, {
38838
39244
  src: audioSrc
38839
39245
  }) : null
38840
39246
  ]
@@ -38842,9 +39248,9 @@ var HomepageVideoComp = ({
38842
39248
  };
38843
39249
 
38844
39250
  // src/components/homepage/Demo/DemoError.tsx
38845
- import { jsx as jsx85 } from "react/jsx-runtime";
39251
+ import { jsx as jsx87 } from "react/jsx-runtime";
38846
39252
  var DemoError = () => {
38847
- return /* @__PURE__ */ jsx85("div", {
39253
+ return /* @__PURE__ */ jsx87("div", {
38848
39254
  style: {
38849
39255
  color: RED,
38850
39256
  fontFamily: FONTS.GTPLANAR,
@@ -38884,7 +39290,7 @@ import {
38884
39290
  import { BufferTarget, StreamTarget } from "mediabunny";
38885
39291
 
38886
39292
  // ../core/dist/esm/version.mjs
38887
- var VERSION2 = "4.0.470";
39293
+ var VERSION2 = "4.0.471";
38888
39294
 
38889
39295
  // ../web-renderer/dist/esm/index.mjs
38890
39296
  import { AudioSample, VideoSample } from "mediabunny";
@@ -38894,7 +39300,7 @@ import { flushSync as flushSync22 } from "react-dom";
38894
39300
  import ReactDOM6 from "react-dom/client";
38895
39301
  import { useImperativeHandle as useImperativeHandle14, useState as useState49 } from "react";
38896
39302
  import { flushSync as flushSync3 } from "react-dom";
38897
- import { jsx as jsx87 } from "react/jsx-runtime";
39303
+ import { jsx as jsx88 } from "react/jsx-runtime";
38898
39304
  import { jsx as jsx217 } from "react/jsx-runtime";
38899
39305
  import { Output, VideoSampleSource } from "mediabunny";
38900
39306
  var __dispose2 = Symbol.dispose || /* @__PURE__ */ Symbol.for("Symbol.dispose");
@@ -39531,7 +39937,7 @@ var UpdateTime = ({
39531
39937
  });
39532
39938
  }
39533
39939
  }));
39534
- return /* @__PURE__ */ jsx87(Internals.RemotionRootContexts, {
39940
+ return /* @__PURE__ */ jsx88(Internals.RemotionRootContexts, {
39535
39941
  audioEnabled,
39536
39942
  videoEnabled,
39537
39943
  logLevel,
@@ -43514,13 +43920,13 @@ var renderMediaOnWeb = (options2) => {
43514
43920
  };
43515
43921
 
43516
43922
  // src/components/homepage/Demo/DemoRender.tsx
43517
- import React68, { useCallback as useCallback46 } from "react";
43923
+ import React70, { useCallback as useCallback47 } from "react";
43518
43924
  import { z } from "zod";
43519
43925
 
43520
43926
  // src/components/homepage/Demo/DemoErrorIcon.tsx
43521
- import { jsx as jsx88 } from "react/jsx-runtime";
43927
+ import { jsx as jsx89 } from "react/jsx-runtime";
43522
43928
  var DemoErrorIcon = () => {
43523
- return /* @__PURE__ */ jsx88("div", {
43929
+ return /* @__PURE__ */ jsx89("div", {
43524
43930
  style: {
43525
43931
  height: 26,
43526
43932
  width: 26,
@@ -43530,14 +43936,14 @@ var DemoErrorIcon = () => {
43530
43936
  justifyContent: "center",
43531
43937
  animation: "jump 0.2s ease-out"
43532
43938
  },
43533
- children: /* @__PURE__ */ jsx88("svg", {
43939
+ children: /* @__PURE__ */ jsx89("svg", {
43534
43940
  style: {
43535
43941
  flexShrink: 0,
43536
43942
  width: 26
43537
43943
  },
43538
43944
  xmlns: "http://www.w3.org/2000/svg",
43539
43945
  viewBox: "0 0 512 512",
43540
- children: /* @__PURE__ */ jsx88("path", {
43946
+ children: /* @__PURE__ */ jsx89("path", {
43541
43947
  fill: RED,
43542
43948
  d: "M17.1 292c-12.9-22.3-12.9-49.7 0-72L105.4 67.1c12.9-22.3 36.6-36 62.4-36l176.6 0c25.7 0 49.5 13.7 62.4 36L494.9 220c12.9 22.3 12.9 49.7 0 72L406.6 444.9c-12.9 22.3-36.6 36-62.4 36l-176.6 0c-25.7 0-49.5-13.7-62.4-36L17.1 292zM256 128c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"
43543
43949
  })
@@ -43546,9 +43952,9 @@ var DemoErrorIcon = () => {
43546
43952
  };
43547
43953
 
43548
43954
  // src/components/homepage/Demo/DoneCheckmark.tsx
43549
- import { jsx as jsx89, jsxs as jsxs27 } from "react/jsx-runtime";
43955
+ import { jsx as jsx90, jsxs as jsxs28 } from "react/jsx-runtime";
43550
43956
  var DoneCheckmark = () => {
43551
- return /* @__PURE__ */ jsx89("div", {
43957
+ return /* @__PURE__ */ jsx90("div", {
43552
43958
  style: {
43553
43959
  backgroundColor: PALETTE.BRAND,
43554
43960
  height: 26,
@@ -43559,7 +43965,7 @@ var DoneCheckmark = () => {
43559
43965
  justifyContent: "center",
43560
43966
  animation: "jump 0.2s ease-out"
43561
43967
  },
43562
- children: /* @__PURE__ */ jsxs27("svg", {
43968
+ children: /* @__PURE__ */ jsxs28("svg", {
43563
43969
  viewBox: "0 0 20 20",
43564
43970
  fill: "none",
43565
43971
  xmlns: "http://www.w3.org/2000/svg",
@@ -43568,13 +43974,13 @@ var DoneCheckmark = () => {
43568
43974
  width: 26
43569
43975
  },
43570
43976
  children: [
43571
- /* @__PURE__ */ jsx89("circle", {
43977
+ /* @__PURE__ */ jsx90("circle", {
43572
43978
  cx: "10",
43573
43979
  cy: "10",
43574
43980
  r: "10",
43575
43981
  fill: "#0B84F3"
43576
43982
  }),
43577
- /* @__PURE__ */ jsx89("path", {
43983
+ /* @__PURE__ */ jsx90("path", {
43578
43984
  d: "M14.7908 7.20505C15.0697 7.47844 15.0697 7.92243 14.7908 8.19583L9.07711 13.795C8.79813 14.0683 8.34505 14.0683 8.06606 13.795L5.20924 10.9954C4.93025 10.722 4.93025 10.278 5.20924 10.0046C5.48823 9.73121 5.9413 9.73121 6.22029 10.0046L8.5727 12.3077L13.7819 7.20505C14.0609 6.93165 14.514 6.93165 14.793 7.20505H14.7908Z",
43579
43985
  fill: "white",
43580
43986
  style: {
@@ -43588,7 +43994,7 @@ var DoneCheckmark = () => {
43588
43994
  };
43589
43995
 
43590
43996
  // src/components/homepage/Demo/Progress.tsx
43591
- import { jsx as jsx90, jsxs as jsxs28 } from "react/jsx-runtime";
43997
+ import { jsx as jsx91, jsxs as jsxs29 } from "react/jsx-runtime";
43592
43998
  var Progress = ({ progress }) => {
43593
43999
  const inner2 = makeCircle({
43594
44000
  radius: 10
@@ -43598,17 +44004,17 @@ var Progress = ({ progress }) => {
43598
44004
  closePath: false,
43599
44005
  radius: 10
43600
44006
  });
43601
- return /* @__PURE__ */ jsxs28("svg", {
44007
+ return /* @__PURE__ */ jsxs29("svg", {
43602
44008
  viewBox: `0 0 ${inner2.width} ${inner2.height}`,
43603
44009
  style: { overflow: "visible", height: 22 },
43604
44010
  children: [
43605
- /* @__PURE__ */ jsx90("path", {
44011
+ /* @__PURE__ */ jsx91("path", {
43606
44012
  d: inner2.path,
43607
44013
  stroke: PALETTE.BORDER_COLOR,
43608
44014
  strokeWidth: 4,
43609
44015
  fill: "transparent"
43610
44016
  }),
43611
- /* @__PURE__ */ jsx90("path", {
44017
+ /* @__PURE__ */ jsx91("path", {
43612
44018
  d: outer.path,
43613
44019
  stroke: PALETTE.BRAND,
43614
44020
  strokeWidth: 4,
@@ -43621,7 +44027,7 @@ var Progress = ({ progress }) => {
43621
44027
 
43622
44028
  // src/components/homepage/Demo/Spinner.tsx
43623
44029
  import { useMemo as useMemo61 } from "react";
43624
- import { jsx as jsx91, jsxs as jsxs29, Fragment as Fragment14 } from "react/jsx-runtime";
44030
+ import { jsx as jsx95, jsxs as jsxs30, Fragment as Fragment15 } from "react/jsx-runtime";
43625
44031
  var viewBox2 = 100;
43626
44032
  var lines2 = 8;
43627
44033
  var className2 = "__remotion_spinner_line";
@@ -43634,9 +44040,9 @@ var Spinner2 = ({ size: size4, duration }) => {
43634
44040
  height: size4
43635
44041
  };
43636
44042
  }, [size4]);
43637
- return /* @__PURE__ */ jsxs29(Fragment14, {
44043
+ return /* @__PURE__ */ jsxs30(Fragment15, {
43638
44044
  children: [
43639
- /* @__PURE__ */ jsx91("style", {
44045
+ /* @__PURE__ */ jsx95("style", {
43640
44046
  type: "text/css",
43641
44047
  children: `
43642
44048
  @keyframes ${remotionSpinnerAnimation} {
@@ -43653,11 +44059,11 @@ var Spinner2 = ({ size: size4, duration }) => {
43653
44059
  }
43654
44060
  `
43655
44061
  }),
43656
- /* @__PURE__ */ jsx91("svg", {
44062
+ /* @__PURE__ */ jsx95("svg", {
43657
44063
  style: style2,
43658
44064
  viewBox: `0 0 ${viewBox2} ${viewBox2}`,
43659
44065
  children: new Array(lines2).fill(true).map((_, index2) => {
43660
- return /* @__PURE__ */ jsx91("path", {
44066
+ return /* @__PURE__ */ jsx95("path", {
43661
44067
  className: className2,
43662
44068
  style: {
43663
44069
  rotate: `${index2 * Math.PI * 2 / lines2}rad`,
@@ -43674,7 +44080,7 @@ var Spinner2 = ({ size: size4, duration }) => {
43674
44080
  };
43675
44081
 
43676
44082
  // src/components/homepage/Demo/DemoRender.tsx
43677
- import { jsx as jsx95 } from "react/jsx-runtime";
44083
+ import { jsx as jsx97 } from "react/jsx-runtime";
43678
44084
  var countryPath = z.object({
43679
44085
  d: z.string(),
43680
44086
  class: z.string()
@@ -43712,10 +44118,10 @@ var style2 = {
43712
44118
  justifyContent: "center"
43713
44119
  };
43714
44120
  var RenderButton = ({ renderData, onError, playerRef }) => {
43715
- const [state, setState] = React68.useState({
44121
+ const [state, setState] = React70.useState({
43716
44122
  type: "idle"
43717
44123
  });
43718
- const triggerRender = useCallback46(async () => {
44124
+ const triggerRender = useCallback47(async () => {
43719
44125
  if (renderData === null) {
43720
44126
  return;
43721
44127
  }
@@ -43764,24 +44170,24 @@ var RenderButton = ({ renderData, onError, playerRef }) => {
43764
44170
  onError();
43765
44171
  }
43766
44172
  }, [onError, renderData, playerRef]);
43767
- return /* @__PURE__ */ jsx95("button", {
44173
+ return /* @__PURE__ */ jsx97("button", {
43768
44174
  type: "button",
43769
44175
  onClick: triggerRender,
43770
44176
  style: style2,
43771
44177
  disabled: !renderData || state.type !== "idle",
43772
- children: state.type === "error" ? /* @__PURE__ */ jsx95(DemoErrorIcon, {}) : state.type === "done" ? /* @__PURE__ */ jsx95(DoneCheckmark, {}) : state.type === "progress" ? /* @__PURE__ */ jsx95(Progress, {
44178
+ children: state.type === "error" ? /* @__PURE__ */ jsx97(DemoErrorIcon, {}) : state.type === "done" ? /* @__PURE__ */ jsx97(DoneCheckmark, {}) : state.type === "progress" ? /* @__PURE__ */ jsx97(Progress, {
43773
44179
  progress: state.progress
43774
- }) : state.type === "invoking" ? /* @__PURE__ */ jsx95(Spinner2, {
44180
+ }) : state.type === "invoking" ? /* @__PURE__ */ jsx97(Spinner2, {
43775
44181
  size: 20,
43776
44182
  duration: 1
43777
- }) : /* @__PURE__ */ jsx95("svg", {
44183
+ }) : /* @__PURE__ */ jsx97("svg", {
43778
44184
  style: {
43779
44185
  width: 18,
43780
44186
  opacity: renderData ? 1 : 0.5
43781
44187
  },
43782
44188
  xmlns: "http://www.w3.org/2000/svg",
43783
44189
  viewBox: "0 0 384 512",
43784
- children: /* @__PURE__ */ jsx95("path", {
44190
+ children: /* @__PURE__ */ jsx97("path", {
43785
44191
  fill: PALETTE.TEXT_COLOR,
43786
44192
  d: "M214.6 342.6L192 365.3l-22.6-22.6-128-128L18.7 192 64 146.7l22.6 22.6L160 242.7 160 64l0-32 64 0 0 32 0 178.7 73.4-73.4L320 146.7 365.3 192l-22.6 22.6-128 128zM32 416l320 0 32 0 0 64-32 0L32 480 0 480l0-64 32 0z"
43787
44193
  })
@@ -43790,18 +44196,18 @@ var RenderButton = ({ renderData, onError, playerRef }) => {
43790
44196
  };
43791
44197
 
43792
44198
  // src/components/homepage/Demo/DownloadNudge.tsx
43793
- import { jsx as jsx97, jsxs as jsxs30 } from "react/jsx-runtime";
44199
+ import { jsx as jsx98, jsxs as jsxs31 } from "react/jsx-runtime";
43794
44200
  var origWidth = 77;
43795
44201
  var scale = 0.4;
43796
44202
  var Icon3 = () => {
43797
- return /* @__PURE__ */ jsx97("svg", {
44203
+ return /* @__PURE__ */ jsx98("svg", {
43798
44204
  style: {
43799
44205
  width: origWidth * scale
43800
44206
  },
43801
44207
  viewBox: "0 0 77 160",
43802
44208
  fill: "none",
43803
44209
  xmlns: "http://www.w3.org/2000/svg",
43804
- children: /* @__PURE__ */ jsx97("path", {
44210
+ children: /* @__PURE__ */ jsx98("path", {
43805
44211
  d: "M5 154.5C51 121 79 81 69 5",
43806
44212
  stroke: "currentColor",
43807
44213
  strokeWidth: "8",
@@ -43810,20 +44216,20 @@ var Icon3 = () => {
43810
44216
  });
43811
44217
  };
43812
44218
  var DownloadNudge = () => {
43813
- return /* @__PURE__ */ jsx97("div", {
44219
+ return /* @__PURE__ */ jsx98("div", {
43814
44220
  style: {
43815
44221
  position: "relative",
43816
44222
  flexDirection: "row",
43817
44223
  display: "flex",
43818
44224
  justifyContent: "flex-end",
43819
44225
  textAlign: "right",
43820
- paddingRight: 22,
43821
- paddingTop: 20
44226
+ paddingRight: 24,
44227
+ paddingTop: 18
43822
44228
  },
43823
- children: /* @__PURE__ */ jsxs30("div", {
44229
+ children: /* @__PURE__ */ jsxs31("div", {
43824
44230
  children: [
43825
- /* @__PURE__ */ jsx97(Icon3, {}),
43826
- /* @__PURE__ */ jsx97("div", {
44231
+ /* @__PURE__ */ jsx98(Icon3, {}),
44232
+ /* @__PURE__ */ jsx98("div", {
43827
44233
  style: {
43828
44234
  fontFamily: FONTS.GTPLANAR,
43829
44235
  fontSize: 15,
@@ -43840,18 +44246,18 @@ var DownloadNudge = () => {
43840
44246
  };
43841
44247
 
43842
44248
  // src/components/homepage/Demo/DragAndDropNudge.tsx
43843
- import { jsx as jsx98, jsxs as jsxs31 } from "react/jsx-runtime";
44249
+ import { jsx as jsx99, jsxs as jsxs34 } from "react/jsx-runtime";
43844
44250
  var origWidth2 = 37;
43845
44251
  var scale2 = 0.4;
43846
44252
  var Icon5 = () => {
43847
- return /* @__PURE__ */ jsx98("svg", {
44253
+ return /* @__PURE__ */ jsx99("svg", {
43848
44254
  style: {
43849
44255
  width: origWidth2 * scale2,
43850
44256
  overflow: "visible"
43851
44257
  },
43852
44258
  viewBox: "0 0 37 59",
43853
44259
  fill: "none",
43854
- children: /* @__PURE__ */ jsx98("path", {
44260
+ children: /* @__PURE__ */ jsx99("path", {
43855
44261
  d: "M5.00003 5C5.00002 36.5 16 44 32.0002 54",
43856
44262
  stroke: PALETTE.TEXT_COLOR,
43857
44263
  strokeWidth: "8",
@@ -43860,19 +44266,19 @@ var Icon5 = () => {
43860
44266
  });
43861
44267
  };
43862
44268
  var DragAndDropNudge = () => {
43863
- return /* @__PURE__ */ jsx98("div", {
44269
+ return /* @__PURE__ */ jsx99("div", {
43864
44270
  style: {
43865
44271
  position: "absolute",
43866
44272
  flexDirection: "row",
43867
44273
  display: "flex",
43868
44274
  justifyContent: "flex-start",
43869
44275
  paddingBottom: 5,
43870
- marginTop: 50
44276
+ marginTop: 18
43871
44277
  },
43872
44278
  className: "ml-4 lg:-ml-5",
43873
- children: /* @__PURE__ */ jsxs31("div", {
44279
+ children: /* @__PURE__ */ jsxs34("div", {
43874
44280
  children: [
43875
- /* @__PURE__ */ jsx98("div", {
44281
+ /* @__PURE__ */ jsx99("div", {
43876
44282
  style: {
43877
44283
  fontFamily: FONTS.GTPLANAR,
43878
44284
  fontSize: 15,
@@ -43883,17 +44289,17 @@ var DragAndDropNudge = () => {
43883
44289
  className: "-ml-3 lg:-ml-5",
43884
44290
  children: "Drag and drop the cards to reorder them."
43885
44291
  }),
43886
- /* @__PURE__ */ jsx98(Icon5, {})
44292
+ /* @__PURE__ */ jsx99(Icon5, {})
43887
44293
  ]
43888
44294
  })
43889
44295
  });
43890
44296
  };
43891
44297
 
43892
44298
  // src/components/homepage/Demo/PlayerSeekBar.tsx
43893
- import { useCallback as useCallback48, useEffect as useEffect53, useMemo as useMemo66, useRef as useRef55, useState as useState51 } from "react";
44299
+ import { useCallback as useCallback49, useEffect as useEffect53, useMemo as useMemo66, useRef as useRef56, useState as useState51 } from "react";
43894
44300
 
43895
44301
  // src/components/homepage/layout/use-el-size.ts
43896
- import { useCallback as useCallback47, useEffect as useEffect51, useMemo as useMemo64, useState as useState50 } from "react";
44302
+ import { useCallback as useCallback48, useEffect as useEffect51, useMemo as useMemo64, useState as useState50 } from "react";
43897
44303
  var useElementSize2 = (ref) => {
43898
44304
  const [size4, setSize] = useState50(null);
43899
44305
  const observer = useMemo64(() => {
@@ -43907,7 +44313,7 @@ var useElementSize2 = (ref) => {
43907
44313
  });
43908
44314
  });
43909
44315
  }, []);
43910
- const updateSize = useCallback47(() => {
44316
+ const updateSize = useCallback48(() => {
43911
44317
  if (ref === null) {
43912
44318
  return;
43913
44319
  }
@@ -43935,7 +44341,7 @@ var useElementSize2 = (ref) => {
43935
44341
  };
43936
44342
 
43937
44343
  // src/components/homepage/Demo/PlayerSeekBar.tsx
43938
- import { jsx as jsx99, jsxs as jsxs34 } from "react/jsx-runtime";
44344
+ import { jsx as jsx100, jsxs as jsxs36 } from "react/jsx-runtime";
43939
44345
  var getFrameFromX2 = (clientX, durationInFrames, width2) => {
43940
44346
  const pos = clientX;
43941
44347
  const frame = Math.round(interpolate(pos, [0, width2], [0, durationInFrames - 1], {
@@ -44019,7 +44425,7 @@ var PlayerSeekBar2 = ({
44019
44425
  outFrame,
44020
44426
  playerRef
44021
44427
  }) => {
44022
- const containerRef = useRef55(null);
44428
+ const containerRef = useRef56(null);
44023
44429
  const barHovered = useHoverState2(containerRef, false);
44024
44430
  const size4 = useElementSize2(containerRef.current);
44025
44431
  const [playing, setPlaying] = useState51(false);
@@ -44059,7 +44465,7 @@ var PlayerSeekBar2 = ({
44059
44465
  dragging: false
44060
44466
  });
44061
44467
  const width2 = size4?.width ?? 0;
44062
- const onPointerDown = useCallback48((e) => {
44468
+ const onPointerDown = useCallback49((e) => {
44063
44469
  if (e.button !== 0) {
44064
44470
  return;
44065
44471
  }
@@ -44073,7 +44479,7 @@ var PlayerSeekBar2 = ({
44073
44479
  });
44074
44480
  onSeekStart();
44075
44481
  }, [durationInFrames, width2, playerRef, playing, onSeekStart]);
44076
- const onPointerMove = useCallback48((e) => {
44482
+ const onPointerMove = useCallback49((e) => {
44077
44483
  if (!size4) {
44078
44484
  throw new Error("Player has no size");
44079
44485
  }
@@ -44084,7 +44490,7 @@ var PlayerSeekBar2 = ({
44084
44490
  const _frame = getFrameFromX2(e.clientX - posLeft, durationInFrames, size4.width);
44085
44491
  playerRef.current.seekTo(_frame);
44086
44492
  }, [dragging.dragging, durationInFrames, playerRef, size4]);
44087
- const onPointerUp = useCallback48(() => {
44493
+ const onPointerUp = useCallback49(() => {
44088
44494
  setDragging({
44089
44495
  dragging: false
44090
44496
  });
@@ -44144,23 +44550,23 @@ var PlayerSeekBar2 = ({
44144
44550
  position: "absolute"
44145
44551
  };
44146
44552
  }, [durationInFrames, inFrame, outFrame]);
44147
- return /* @__PURE__ */ jsxs34("div", {
44553
+ return /* @__PURE__ */ jsxs36("div", {
44148
44554
  ref: containerRef,
44149
44555
  onPointerDown,
44150
44556
  style: containerStyle3,
44151
44557
  children: [
44152
- /* @__PURE__ */ jsxs34("div", {
44558
+ /* @__PURE__ */ jsxs36("div", {
44153
44559
  style: barBackground2,
44154
44560
  children: [
44155
- /* @__PURE__ */ jsx99("div", {
44561
+ /* @__PURE__ */ jsx100("div", {
44156
44562
  style: active
44157
44563
  }),
44158
- /* @__PURE__ */ jsx99("div", {
44564
+ /* @__PURE__ */ jsx100("div", {
44159
44565
  style: fillStyle
44160
44566
  })
44161
44567
  ]
44162
44568
  }),
44163
- /* @__PURE__ */ jsx99("div", {
44569
+ /* @__PURE__ */ jsx100("div", {
44164
44570
  style: knobStyle
44165
44571
  })
44166
44572
  ]
@@ -44168,12 +44574,12 @@ var PlayerSeekBar2 = ({
44168
44574
  };
44169
44575
 
44170
44576
  // src/components/homepage/Demo/PlayerVolume.tsx
44171
- import { useCallback as useCallback49, useEffect as useEffect55, useRef as useRef56, useState as useState54 } from "react";
44577
+ import { useCallback as useCallback50, useEffect as useEffect55, useRef as useRef57, useState as useState54 } from "react";
44172
44578
 
44173
44579
  // src/components/homepage/Demo/icons.tsx
44174
- import { jsx as jsx100 } from "react/jsx-runtime";
44580
+ import { jsx as jsx101 } from "react/jsx-runtime";
44175
44581
  var PausedIcon = (props) => {
44176
- return /* @__PURE__ */ jsx100("svg", {
44582
+ return /* @__PURE__ */ jsx101("svg", {
44177
44583
  "aria-hidden": "true",
44178
44584
  focusable: "false",
44179
44585
  "data-prefix": "fas",
@@ -44183,52 +44589,52 @@ var PausedIcon = (props) => {
44183
44589
  xmlns: "http://www.w3.org/2000/svg",
44184
44590
  viewBox: "0 0 480 512",
44185
44591
  ...props,
44186
- children: /* @__PURE__ */ jsx100("path", {
44592
+ children: /* @__PURE__ */ jsx101("path", {
44187
44593
  fill: "currentColor",
44188
44594
  d: "M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z"
44189
44595
  })
44190
44596
  });
44191
44597
  };
44192
44598
  var PlayingIcon = (props) => {
44193
- return /* @__PURE__ */ jsx100("svg", {
44599
+ return /* @__PURE__ */ jsx101("svg", {
44194
44600
  xmlns: "http://www.w3.org/2000/svg",
44195
44601
  viewBox: "0 0 400 512",
44196
44602
  fill: "currentColor",
44197
44603
  ...props,
44198
- children: /* @__PURE__ */ jsx100("path", {
44604
+ children: /* @__PURE__ */ jsx101("path", {
44199
44605
  d: "M48 64C21.5 64 0 85.5 0 112L0 400c0 26.5 21.5 48 48 48l32 0c26.5 0 48-21.5 48-48l0-288c0-26.5-21.5-48-48-48L48 64zm192 0c-26.5 0-48 21.5-48 48l0 288c0 26.5 21.5 48 48 48l32 0c26.5 0 48-21.5 48-48l0-288c0-26.5-21.5-48-48-48l-32 0z"
44200
44606
  })
44201
44607
  });
44202
44608
  };
44203
44609
  var NotMutedIcon = (props) => {
44204
- return /* @__PURE__ */ jsx100("svg", {
44610
+ return /* @__PURE__ */ jsx101("svg", {
44205
44611
  xmlns: "http://www.w3.org/2000/svg",
44206
44612
  ...props,
44207
44613
  viewBox: "0 0 640 512",
44208
44614
  fill: "currentColor",
44209
- children: /* @__PURE__ */ jsx100("path", {
44615
+ children: /* @__PURE__ */ jsx101("path", {
44210
44616
  d: "M32 160l0 192 128 0L304 480l48 0 0-448-48 0L160 160 32 160zM441.6 332.8C464.9 315.3 480 287.4 480 256s-15.1-59.3-38.4-76.8l-28.8 38.4c11.7 8.8 19.2 22.7 19.2 38.4s-7.5 29.6-19.2 38.4l28.8 38.4zm57.6 76.8c46.6-35 76.8-90.8 76.8-153.6s-30.2-118.6-76.8-153.6l-28.8 38.4c35 26.3 57.6 68.1 57.6 115.2s-22.6 88.9-57.6 115.2l28.8 38.4z"
44211
44617
  })
44212
44618
  });
44213
44619
  };
44214
44620
  var IsMutedIcon = (props) => {
44215
- return /* @__PURE__ */ jsx100("svg", {
44621
+ return /* @__PURE__ */ jsx101("svg", {
44216
44622
  xmlns: "http://www.w3.org/2000/svg",
44217
44623
  ...props,
44218
44624
  viewBox: "0 0 640 512",
44219
44625
  fill: RED,
44220
- children: /* @__PURE__ */ jsx100("path", {
44626
+ children: /* @__PURE__ */ jsx101("path", {
44221
44627
  d: "M48.4 14.8L29.4 .1 0 38l19 14.7L591.5 497.2l19 14.7L639.9 474l-19-14.7-95.1-73.8C557 351.3 576 305.9 576 256c0-62.8-30.2-118.6-76.8-153.6l-28.8 38.4c35 26.3 57.6 68.1 57.6 115.2c0 38.8-15.3 74-40.3 99.9l-38.2-29.7C468.3 308.7 480 283.7 480 256c0-31.4-15.1-59.3-38.4-76.8l-28.8 38.4c11.7 8.8 19.2 22.7 19.2 38.4s-7.5 29.6-19.2 38.4l5.9 7.9L352 250.5 352 32l-48 0L195.2 128.7 48.4 14.8zM352 373.3L81.2 160 32 160l0 192 128 0L304 480l48 0 0-106.7z"
44222
44628
  })
44223
44629
  });
44224
44630
  };
44225
44631
 
44226
44632
  // src/components/homepage/Demo/PlayerVolume.tsx
44227
- import { jsx as jsx101 } from "react/jsx-runtime";
44633
+ import { jsx as jsx105 } from "react/jsx-runtime";
44228
44634
  var PlayerVolume = ({ playerRef }) => {
44229
44635
  const [muted, setIsMuted] = useState54(() => playerRef.current?.isMuted() ?? true);
44230
44636
  const [isHovered, setIsHovered] = useState54(false);
44231
- const timerRef = useRef56(null);
44637
+ const timerRef = useRef57(null);
44232
44638
  useEffect55(() => {
44233
44639
  const { current } = playerRef;
44234
44640
  if (!current) {
@@ -44249,7 +44655,7 @@ var PlayerVolume = ({ playerRef }) => {
44249
44655
  document.body.style.userSelect = "auto";
44250
44656
  }
44251
44657
  }, [isHovered]);
44252
- const onClick = useCallback49(() => {
44658
+ const onClick = useCallback50(() => {
44253
44659
  if (timerRef.current !== null) {
44254
44660
  clearTimeout(timerRef.current);
44255
44661
  timerRef.current = null;
@@ -44260,10 +44666,10 @@ var PlayerVolume = ({ playerRef }) => {
44260
44666
  playerRef.current.mute();
44261
44667
  }
44262
44668
  }, [playerRef]);
44263
- return /* @__PURE__ */ jsx101("div", {
44669
+ return /* @__PURE__ */ jsx105("div", {
44264
44670
  className: "relative cursor-pointer block pl-4 pr-4 h-full",
44265
44671
  onPointerEnter: () => setIsHovered(true),
44266
- children: /* @__PURE__ */ jsx101("button", {
44672
+ children: /* @__PURE__ */ jsx105("button", {
44267
44673
  type: "button",
44268
44674
  onClick,
44269
44675
  style: {
@@ -44277,9 +44683,9 @@ var PlayerVolume = ({ playerRef }) => {
44277
44683
  alignItems: "center",
44278
44684
  color: PALETTE.TEXT_COLOR
44279
44685
  },
44280
- children: muted ? /* @__PURE__ */ jsx101(IsMutedIcon, {
44686
+ children: muted ? /* @__PURE__ */ jsx105(IsMutedIcon, {
44281
44687
  style: { height: 20 }
44282
- }) : /* @__PURE__ */ jsx101(NotMutedIcon, {
44688
+ }) : /* @__PURE__ */ jsx105(NotMutedIcon, {
44283
44689
  style: { height: 20 }
44284
44690
  })
44285
44691
  })
@@ -44287,8 +44693,8 @@ var PlayerVolume = ({ playerRef }) => {
44287
44693
  };
44288
44694
 
44289
44695
  // src/components/homepage/Demo/PlayPauseButton.tsx
44290
- import React71, { useCallback as useCallback50, useEffect as useEffect56 } from "react";
44291
- import { jsx as jsx105 } from "react/jsx-runtime";
44696
+ import React75, { useCallback as useCallback51, useEffect as useEffect56 } from "react";
44697
+ import { jsx as jsx107 } from "react/jsx-runtime";
44292
44698
  var playerButtonStyle2 = {
44293
44699
  appearance: "none",
44294
44700
  border: "none",
@@ -44304,7 +44710,7 @@ var playerButtonStyle2 = {
44304
44710
  color: PALETTE.TEXT_COLOR
44305
44711
  };
44306
44712
  var PlayPauseButton = ({ playerRef }) => {
44307
- const [playing, setPlaying] = React71.useState(true);
44713
+ const [playing, setPlaying] = React75.useState(true);
44308
44714
  useEffect56(() => {
44309
44715
  const { current } = playerRef;
44310
44716
  if (!current) {
@@ -44323,34 +44729,34 @@ var PlayPauseButton = ({ playerRef }) => {
44323
44729
  current.removeEventListener("pause", onPause);
44324
44730
  };
44325
44731
  }, [playerRef]);
44326
- const onToggle = useCallback50(() => {
44732
+ const onToggle = useCallback51(() => {
44327
44733
  playerRef.current?.toggle();
44328
44734
  }, [playerRef]);
44329
44735
  const playPauseIconStyle = {
44330
44736
  width: 15
44331
44737
  };
44332
- return /* @__PURE__ */ jsx105("button", {
44738
+ return /* @__PURE__ */ jsx107("button", {
44333
44739
  type: "button",
44334
44740
  style: playerButtonStyle2,
44335
44741
  onClick: onToggle,
44336
- children: playing ? /* @__PURE__ */ jsx105(PlayingIcon, {
44742
+ children: playing ? /* @__PURE__ */ jsx107(PlayingIcon, {
44337
44743
  style: playPauseIconStyle
44338
- }) : /* @__PURE__ */ jsx105(PausedIcon, {
44744
+ }) : /* @__PURE__ */ jsx107(PausedIcon, {
44339
44745
  style: playPauseIconStyle
44340
44746
  })
44341
44747
  });
44342
44748
  };
44343
44749
 
44344
44750
  // src/components/homepage/Demo/TimeDisplay.tsx
44345
- import React73, { useEffect as useEffect57 } from "react";
44346
- import { jsx as jsx107 } from "react/jsx-runtime";
44751
+ import React76, { useEffect as useEffect57 } from "react";
44752
+ import { jsx as jsx108 } from "react/jsx-runtime";
44347
44753
  var formatTime2 = (timeInSeconds) => {
44348
44754
  const minutes = Math.floor(timeInSeconds / 60);
44349
44755
  const seconds = Math.floor(timeInSeconds - minutes * 60);
44350
44756
  return `${String(minutes)}:${String(seconds).padStart(2, "0")}`;
44351
44757
  };
44352
44758
  var TimeDisplay = ({ fps, playerRef }) => {
44353
- const [time, setTime] = React73.useState(0);
44759
+ const [time, setTime] = React76.useState(0);
44354
44760
  useEffect57(() => {
44355
44761
  const { current } = playerRef;
44356
44762
  if (!current) {
@@ -44364,21 +44770,21 @@ var TimeDisplay = ({ fps, playerRef }) => {
44364
44770
  current.removeEventListener("frameupdate", onTimeUpdate);
44365
44771
  };
44366
44772
  }, [playerRef]);
44367
- return /* @__PURE__ */ jsx107("div", {
44773
+ return /* @__PURE__ */ jsx108("div", {
44368
44774
  style: {
44369
44775
  fontSize: 16,
44370
44776
  fontVariantNumeric: "tabular-nums"
44371
44777
  },
44372
- children: /* @__PURE__ */ jsx107("span", {
44778
+ children: /* @__PURE__ */ jsx108("span", {
44373
44779
  children: formatTime2(time / fps)
44374
44780
  })
44375
44781
  });
44376
44782
  };
44377
44783
 
44378
44784
  // src/components/homepage/Demo/PlayerControls.tsx
44379
- import { jsx as jsx108, jsxs as jsxs36 } from "react/jsx-runtime";
44785
+ import { jsx as jsx109, jsxs as jsxs37 } from "react/jsx-runtime";
44380
44786
  var Separator2 = () => {
44381
- return /* @__PURE__ */ jsx108("div", {
44787
+ return /* @__PURE__ */ jsx109("div", {
44382
44788
  style: {
44383
44789
  borderRight: `2px solid ${PALETTE.BOX_STROKE}`,
44384
44790
  height: 50
@@ -44386,28 +44792,28 @@ var Separator2 = () => {
44386
44792
  });
44387
44793
  };
44388
44794
  var PlayerControls = ({ playerRef, durationInFrames, fps, children }) => {
44389
- return /* @__PURE__ */ jsxs36("div", {
44795
+ return /* @__PURE__ */ jsxs37("div", {
44390
44796
  className: "flex flex-row items-center bg-pane",
44391
44797
  children: [
44392
- /* @__PURE__ */ jsx108(PlayPauseButton, {
44798
+ /* @__PURE__ */ jsx109(PlayPauseButton, {
44393
44799
  playerRef
44394
44800
  }),
44395
- /* @__PURE__ */ jsx108(Separator2, {}),
44396
- /* @__PURE__ */ jsx108(PlayerVolume, {
44801
+ /* @__PURE__ */ jsx109(Separator2, {}),
44802
+ /* @__PURE__ */ jsx109(PlayerVolume, {
44397
44803
  playerRef
44398
44804
  }),
44399
- /* @__PURE__ */ jsx108(Separator2, {}),
44400
- /* @__PURE__ */ jsx108("div", {
44805
+ /* @__PURE__ */ jsx109(Separator2, {}),
44806
+ /* @__PURE__ */ jsx109("div", {
44401
44807
  style: { width: 15 }
44402
44808
  }),
44403
- /* @__PURE__ */ jsx108(TimeDisplay, {
44809
+ /* @__PURE__ */ jsx109(TimeDisplay, {
44404
44810
  playerRef,
44405
44811
  fps
44406
44812
  }),
44407
- /* @__PURE__ */ jsx108("div", {
44813
+ /* @__PURE__ */ jsx109("div", {
44408
44814
  style: { width: 15 }
44409
44815
  }),
44410
- /* @__PURE__ */ jsx108(PlayerSeekBar2, {
44816
+ /* @__PURE__ */ jsx109(PlayerSeekBar2, {
44411
44817
  durationInFrames,
44412
44818
  playerRef,
44413
44819
  inFrame: null,
@@ -44419,30 +44825,31 @@ var PlayerControls = ({ playerRef, durationInFrames, fps, children }) => {
44419
44825
  return;
44420
44826
  }
44421
44827
  }),
44422
- /* @__PURE__ */ jsx108("div", {
44828
+ /* @__PURE__ */ jsx109("div", {
44423
44829
  style: { width: 20 }
44424
44830
  }),
44425
- /* @__PURE__ */ jsx108(Separator2, {}),
44831
+ /* @__PURE__ */ jsx109(Separator2, {}),
44426
44832
  children
44427
44833
  ]
44428
44834
  });
44429
44835
  };
44430
44836
 
44431
44837
  // src/components/homepage/Demo/ThemeNudge.tsx
44432
- import React75 from "react";
44433
- import { jsx as jsx109, jsxs as jsxs37 } from "react/jsx-runtime";
44434
- var origWidth3 = 21;
44838
+ import React77 from "react";
44839
+ import { jsx as jsx110, jsxs as jsxs38 } from "react/jsx-runtime";
44840
+ var origWidth3 = 37;
44435
44841
  var scale3 = 0.4;
44436
44842
  var Icon6 = () => {
44437
- return /* @__PURE__ */ jsx109("svg", {
44843
+ return /* @__PURE__ */ jsx110("svg", {
44438
44844
  style: {
44439
- width: origWidth3 * scale3
44845
+ width: origWidth3 * scale3,
44846
+ overflow: "visible"
44440
44847
  },
44441
- viewBox: "0 0 21 161",
44848
+ viewBox: "0 0 37 59",
44442
44849
  fill: "none",
44443
44850
  xmlns: "http://www.w3.org/2000/svg",
44444
- children: /* @__PURE__ */ jsx109("path", {
44445
- d: "M5 5C23 59.5 14.5 120.5 5.00005 156",
44851
+ children: /* @__PURE__ */ jsx110("path", {
44852
+ d: "M32 5C32 36.5 21 44 5 54",
44446
44853
  stroke: "currentColor",
44447
44854
  strokeWidth: "8",
44448
44855
  strokeLinecap: "round"
@@ -44451,34 +44858,34 @@ var Icon6 = () => {
44451
44858
  };
44452
44859
  var ThemeNudge = () => {
44453
44860
  const { colorMode, setColorMode } = useColorMode();
44454
- const toggleTheme = React75.useCallback((e) => {
44861
+ const toggleTheme = React77.useCallback((e) => {
44455
44862
  e.preventDefault();
44456
44863
  setColorMode(colorMode === "dark" ? "light" : "dark");
44457
44864
  }, [colorMode, setColorMode]);
44458
- return /* @__PURE__ */ jsx109("div", {
44865
+ return /* @__PURE__ */ jsx110("div", {
44459
44866
  style: {
44460
44867
  flexDirection: "row",
44461
44868
  display: "flex",
44462
44869
  justifyContent: "flex-start",
44463
- paddingBottom: 5,
44870
+ paddingBottom: 0,
44464
44871
  textAlign: "right",
44465
- position: "absolute",
44466
- right: 0
44872
+ position: "absolute"
44467
44873
  },
44468
- children: /* @__PURE__ */ jsxs37("div", {
44874
+ className: "lg:top-3 lg:-right-6 right-0 top-0",
44875
+ children: /* @__PURE__ */ jsxs38("div", {
44469
44876
  children: [
44470
- /* @__PURE__ */ jsxs37("div", {
44877
+ /* @__PURE__ */ jsxs38("div", {
44471
44878
  style: {
44472
44879
  fontFamily: FONTS.GTPLANAR,
44473
44880
  fontSize: 15,
44474
44881
  width: 280,
44475
44882
  paddingBottom: 8,
44476
- marginLeft: -15,
44883
+ marginLeft: 20,
44477
44884
  textWrap: "balance",
44478
44885
  marginTop: 5
44479
44886
  },
44480
44887
  children: [
44481
- /* @__PURE__ */ jsxs37("a", {
44888
+ /* @__PURE__ */ jsxs38("a", {
44482
44889
  href: "#",
44483
44890
  onClick: toggleTheme,
44484
44891
  className: "bluelink",
@@ -44493,14 +44900,14 @@ var ThemeNudge = () => {
44493
44900
  " "
44494
44901
  ]
44495
44902
  }),
44496
- /* @__PURE__ */ jsx109(Icon6, {})
44903
+ /* @__PURE__ */ jsx110(Icon6, {})
44497
44904
  ]
44498
44905
  })
44499
44906
  });
44500
44907
  };
44501
44908
 
44502
44909
  // src/components/homepage/Demo/index.tsx
44503
- import { jsx as jsx110, jsxs as jsxs38 } from "react/jsx-runtime";
44910
+ import { jsx as jsx111, jsxs as jsxs39 } from "react/jsx-runtime";
44504
44911
  var style3 = {
44505
44912
  width: "100%",
44506
44913
  aspectRatio: "640 / 360",
@@ -44517,7 +44924,7 @@ var playerWrapper = {
44517
44924
  var Demo = () => {
44518
44925
  const { colorMode } = useColorMode();
44519
44926
  const [data2, setData] = useState56(null);
44520
- const ref = useRef57(null);
44927
+ const ref = useRef58(null);
44521
44928
  const [isFullscreen, setIsFullscreen] = useState56(false);
44522
44929
  const [cardOrder, setCardOrder] = useState56([0, 1, 2, 3]);
44523
44930
  const [emojiIndex, setEmojiIndex] = useState56(0);
@@ -44543,7 +44950,7 @@ var Demo = () => {
44543
44950
  playerRef.removeEventListener("fullscreenchange", onFullscreenChange);
44544
44951
  };
44545
44952
  }, [data2]);
44546
- const updateCardOrder = useCallback51((newCardOrder) => {
44953
+ const updateCardOrder = useCallback53((newCardOrder) => {
44547
44954
  setCardOrder(newCardOrder);
44548
44955
  }, []);
44549
44956
  const props = useMemo67(() => {
@@ -44565,69 +44972,78 @@ var Demo = () => {
44565
44972
  emojiIndex
44566
44973
  };
44567
44974
  }, [cardOrder, emojiIndex, colorMode, data2, updateCardOrder]);
44568
- const onError = useCallback51(() => {
44975
+ const onError = useCallback53(() => {
44569
44976
  setError(true);
44570
44977
  }, []);
44571
- return /* @__PURE__ */ jsxs38("div", {
44978
+ return /* @__PURE__ */ jsxs39("div", {
44979
+ id: "demo",
44572
44980
  children: [
44573
- /* @__PURE__ */ jsx110("br", {}),
44574
- /* @__PURE__ */ jsx110("br", {}),
44575
- /* @__PURE__ */ jsx110(SectionTitle, {
44576
- children: "Demo"
44981
+ /* @__PURE__ */ jsx111("br", {}),
44982
+ /* @__PURE__ */ jsx111("br", {}),
44983
+ /* @__PURE__ */ jsx111(SectionTitle, {
44984
+ children: "Interactive demo"
44577
44985
  }),
44578
- /* @__PURE__ */ jsxs38("div", {
44579
- style: { height: 140, position: "relative" },
44986
+ /* @__PURE__ */ jsxs39("div", {
44987
+ className: "max-w-[760px] mx-auto",
44580
44988
  children: [
44581
- /* @__PURE__ */ jsx110(DragAndDropNudge, {}),
44582
- /* @__PURE__ */ jsx110(ThemeNudge, {})
44583
- ]
44584
- }),
44585
- /* @__PURE__ */ jsxs38("div", {
44586
- style: playerWrapper,
44587
- children: [
44588
- /* @__PURE__ */ jsx110(Player, {
44589
- ref,
44590
- component: HomepageVideoComp,
44591
- compositionWidth: 640,
44592
- compositionHeight: 360,
44593
- durationInFrames: 120,
44594
- fps: 30,
44595
- autoPlay: true,
44596
- controls: isFullscreen,
44597
- clickToPlay: false,
44598
- style: style3,
44599
- initiallyMuted: true,
44600
- inputProps: props,
44601
- acknowledgeRemotionLicense: true,
44602
- numberOfSharedAudioTags: 0,
44603
- loop: true
44989
+ /* @__PURE__ */ jsxs39("div", {
44990
+ className: "h-[105px] relative",
44991
+ children: [
44992
+ /* @__PURE__ */ jsx111(DragAndDropNudge, {}),
44993
+ /* @__PURE__ */ jsx111(ThemeNudge, {})
44994
+ ]
44604
44995
  }),
44605
- /* @__PURE__ */ jsx110(PlayerControls, {
44606
- playerRef: ref,
44607
- durationInFrames: 120,
44608
- fps: 30,
44609
- children: /* @__PURE__ */ jsx110(RenderButton, {
44610
- onError,
44611
- renderData: data2 ? {
44612
- cardOrder,
44613
- emojiIndex,
44614
- location: data2.location,
44615
- theme: colorMode,
44616
- trending: data2.trending
44617
- } : null,
44618
- playerRef: ref
44619
- })
44620
- })
44996
+ /* @__PURE__ */ jsxs39("div", {
44997
+ style: playerWrapper,
44998
+ children: [
44999
+ /* @__PURE__ */ jsx111(Player, {
45000
+ ref,
45001
+ component: HomepageVideoComp,
45002
+ compositionWidth: 640,
45003
+ compositionHeight: 360,
45004
+ durationInFrames: 120,
45005
+ fps: 30,
45006
+ autoPlay: true,
45007
+ controls: isFullscreen,
45008
+ clickToPlay: false,
45009
+ style: style3,
45010
+ initiallyMuted: true,
45011
+ inputProps: props,
45012
+ acknowledgeRemotionLicense: true,
45013
+ numberOfSharedAudioTags: 0,
45014
+ loop: true
45015
+ }),
45016
+ /* @__PURE__ */ jsx111(PlayerControls, {
45017
+ playerRef: ref,
45018
+ durationInFrames: 120,
45019
+ fps: 30,
45020
+ children: /* @__PURE__ */ jsx111(RenderButton, {
45021
+ onError,
45022
+ renderData: data2 ? {
45023
+ cardOrder,
45024
+ emojiIndex,
45025
+ location: data2.location,
45026
+ theme: colorMode,
45027
+ trending: data2.trending
45028
+ } : null,
45029
+ playerRef: ref
45030
+ })
45031
+ })
45032
+ ]
45033
+ }),
45034
+ error2 ? /* @__PURE__ */ jsx111(DemoError, {}) : null,
45035
+ /* @__PURE__ */ jsx111(DownloadNudge, {})
44621
45036
  ]
44622
- }),
44623
- error2 ? /* @__PURE__ */ jsx110(DemoError, {}) : null,
44624
- /* @__PURE__ */ jsx110(DownloadNudge, {})
45037
+ })
44625
45038
  ]
44626
45039
  });
44627
45040
  };
44628
45041
 
45042
+ // src/components/homepage/EvaluateRemotion.tsx
45043
+ import { useEffect as useEffect59, useState as useState57 } from "react";
45044
+
44629
45045
  // src/components/homepage/layout/Button.tsx
44630
- import { jsx as jsx111 } from "react/jsx-runtime";
45046
+ import { jsx as jsx114 } from "react/jsx-runtime";
44631
45047
  var Button2 = (props) => {
44632
45048
  const {
44633
45049
  children,
@@ -44640,7 +45056,7 @@ var Button2 = (props) => {
44640
45056
  ...other
44641
45057
  } = props;
44642
45058
  const actualDisabled = other.disabled || loading;
44643
- return /* @__PURE__ */ jsx111("button", {
45059
+ return /* @__PURE__ */ jsx114("button", {
44644
45060
  type: "button",
44645
45061
  className: cn2("text-base rounded-lg font-bold appearance-none border-2 border-solid border-black border-b-4 font-sans flex flex-row items-center justify-center ", className3),
44646
45062
  disabled: actualDisabled,
@@ -44658,254 +45074,18 @@ var Button2 = (props) => {
44658
45074
  });
44659
45075
  };
44660
45076
  var BlueButton = (props) => {
44661
- return /* @__PURE__ */ jsx111(Button2, {
45077
+ return /* @__PURE__ */ jsx114(Button2, {
44662
45078
  ...props,
44663
45079
  background: "var(--blue-underlay)",
44664
45080
  color: "white"
44665
45081
  });
44666
45082
  };
44667
- var ClearButton = (props) => {
44668
- return /* @__PURE__ */ jsx111(Button2, {
44669
- ...props,
44670
- background: "transparent",
44671
- color: "var(--text-color)",
44672
- hoverColor: "var(--clear-hover)"
44673
- });
44674
- };
44675
-
44676
- // src/components/homepage/MuxVideo.tsx
44677
- import Hls2 from "hls.js";
44678
- import { forwardRef as forwardRef40, useEffect as useEffect60, useImperativeHandle as useImperativeHandle15, useRef as useRef59 } from "react";
44679
-
44680
- // src/components/homepage/VideoPlayerWithControls.tsx
44681
- import Hls from "hls.js";
44682
- import"plyr/dist/plyr.css";
44683
- import { forwardRef as forwardRef39, useCallback as useCallback53, useEffect as useEffect59, useRef as useRef58, useState as useState57 } from "react";
44684
- import { jsx as jsx114 } from "react/jsx-runtime";
44685
- var useCombinedRefs = function(...refs) {
44686
- const targetRef = useRef58(null);
44687
- useEffect59(() => {
44688
- refs.forEach((ref) => {
44689
- if (!ref)
44690
- return;
44691
- if (typeof ref === "function") {
44692
- ref(targetRef.current);
44693
- } else {
44694
- ref.current = targetRef.current;
44695
- }
44696
- });
44697
- }, [refs]);
44698
- return targetRef;
44699
- };
44700
- var VideoPlayerWithControls = forwardRef39(({ playbackId, poster, currentTime, onLoaded, onError, onSize, autoPlay }, ref) => {
44701
- const videoRef = useRef58(null);
44702
- const metaRef = useCombinedRefs(ref, videoRef);
44703
- const playerRef = useRef58(null);
44704
- const [playerInitTime] = useState57(Date.now());
44705
- const videoError = useCallback53((event) => onError(event), [onError]);
44706
- const onImageLoad = useCallback53((event) => {
44707
- const [w, h] = [event.target.width, event.target.height];
44708
- if (w && h) {
44709
- onSize({ width: w, height: h });
44710
- onLoaded();
44711
- } else {
44712
- onLoaded();
44713
- console.error("Error getting img dimensions", event);
44714
- }
44715
- }, [onLoaded, onSize]);
44716
- useEffect59(() => {
44717
- const img = new Image;
44718
- img.onload = (evt) => onImageLoad(evt);
44719
- img.src = poster;
44720
- }, [onImageLoad, poster]);
44721
- useEffect59(() => {
44722
- const video = videoRef.current;
44723
- const src = `https://stream.mux.com/${playbackId}.m3u8`;
44724
- let hls;
44725
- hls = null;
44726
- if (video) {
44727
- video.addEventListener("error", videoError);
44728
- const Plyr = __require("plyr");
44729
- playerRef.current = new Plyr(video, {
44730
- previewThumbnails: {
44731
- enabled: true,
44732
- src: `https://image.mux.com/${playbackId}/storyboard.vtt`
44733
- },
44734
- storage: { enabled: false },
44735
- fullscreen: {
44736
- iosNative: true
44737
- },
44738
- captions: { active: true, language: "auto", update: true }
44739
- });
44740
- if (video.canPlayType("application/vnd.apple.mpegurl")) {
44741
- video.src = src;
44742
- } else if (Hls.isSupported()) {
44743
- hls = new Hls;
44744
- hls.loadSource(src);
44745
- hls.attachMedia(video);
44746
- hls.on(Hls.Events.ERROR, (_event, data2) => {
44747
- if (data2.fatal) {
44748
- videoError(new ErrorEvent("HLS.js fatal error"));
44749
- }
44750
- });
44751
- } else {
44752
- console.error("This is an old browser that does not support MSE https://developer.mozilla.org/en-US/docs/Web/API/Media_Source_Extensions_API");
44753
- }
44754
- }
44755
- return () => {
44756
- if (video) {
44757
- video.removeEventListener("error", videoError);
44758
- }
44759
- if (hls) {
44760
- hls.destroy();
44761
- }
44762
- };
44763
- }, [playbackId, playerInitTime, videoError, videoRef]);
44764
- useEffect59(() => {
44765
- const video = videoRef.current;
44766
- if (currentTime && video) {
44767
- video.currentTime = currentTime;
44768
- }
44769
- }, [currentTime]);
44770
- return /* @__PURE__ */ jsx114("div", {
44771
- className: "video-container",
44772
- children: /* @__PURE__ */ jsx114("video", {
44773
- ref: metaRef,
44774
- autoPlay,
44775
- poster,
44776
- controls: true,
44777
- playsInline: true
44778
- })
44779
- });
44780
- });
44781
-
44782
- // src/components/homepage/MuxVideo.tsx
44783
- import { jsx as jsx116 } from "react/jsx-runtime";
44784
- var getVideoToPlayUrl = (muxId) => {
44785
- return `https://stream.mux.com/${muxId}.m3u8`;
44786
- };
44787
- var MuxVideoForward = ({ muxId, ...props }, ref) => {
44788
- const videoRef = useRef59(null);
44789
- const vidUrl = getVideoToPlayUrl(muxId);
44790
- useImperativeHandle15(ref, () => videoRef.current, []);
44791
- useEffect60(() => {
44792
- let hls;
44793
- if (videoRef.current) {
44794
- const { current } = videoRef;
44795
- if (current.canPlayType("application/vnd.apple.mpegurl")) {
44796
- current.src = vidUrl;
44797
- } else if (Hls2.isSupported()) {
44798
- hls = new Hls2;
44799
- hls.loadSource(vidUrl);
44800
- hls.attachMedia(current);
44801
- } else {
44802
- console.error("This is a legacy browser that doesn't support MSE");
44803
- }
44804
- }
44805
- return () => {
44806
- if (hls) {
44807
- hls.destroy();
44808
- }
44809
- };
44810
- }, [vidUrl, videoRef]);
44811
- return /* @__PURE__ */ jsx116("video", {
44812
- ref: videoRef,
44813
- ...props
44814
- });
44815
- };
44816
- var MuxVideo = forwardRef40(MuxVideoForward);
44817
-
44818
- // src/components/homepage/EditorStarterSection.tsx
44819
- import { jsx as jsx117, jsxs as jsxs39 } from "react/jsx-runtime";
44820
- var EditorStarterSection = () => {
44821
- return /* @__PURE__ */ jsxs39("div", {
44822
- children: [
44823
- /* @__PURE__ */ jsx117(SectionTitle, {
44824
- children: "Build your own video editor"
44825
- }),
44826
- /* @__PURE__ */ jsx117("br", {}),
44827
- /* @__PURE__ */ jsx117("div", {
44828
- className: "card flex p-0 overflow-hidden",
44829
- children: /* @__PURE__ */ jsxs39("div", {
44830
- className: "flex-1 flex flex-col lg:flex-row justify-center",
44831
- children: [
44832
- /* @__PURE__ */ jsx117("div", {
44833
- className: "w-full max-w-[500px] aspect-square relative overflow-hidden bg-[#eee]",
44834
- children: /* @__PURE__ */ jsx117(MuxVideo, {
44835
- muxId: "YIvIidbcAc7009B00Wr7gIbGyq67YGNlytGvMXwdsLRtc",
44836
- className: "absolute left-0 top-0 w-full h-full object-cover object-top rounded-sm rounded-tr-none rounded-br-none",
44837
- loop: true,
44838
- autoPlay: true,
44839
- playsInline: true,
44840
- muted: true
44841
- })
44842
- }),
44843
- /* @__PURE__ */ jsxs39("div", {
44844
- className: "p-6 flex-1 flex flex-col h-full",
44845
- children: [
44846
- /* @__PURE__ */ jsx117("div", {
44847
- className: "text-4xl font-bold fontbrand mt-0",
44848
- children: "Editor Starter"
44849
- }),
44850
- /* @__PURE__ */ jsx117("div", {
44851
- className: "text-muted mt-4 text-base fontbrand",
44852
- children: "A comprehensive template that includes everything you need to create custom video editing applications with React and TypeScript."
44853
- }),
44854
- /* @__PURE__ */ jsx117("div", {
44855
- className: "h-5"
44856
- }),
44857
- /* @__PURE__ */ jsxs39("div", {
44858
- className: "flex gap-2 items-center",
44859
- children: [
44860
- /* @__PURE__ */ jsx117("a", {
44861
- href: "https://www.remotion.pro/editor-starter?ref=remotion.dev",
44862
- target: "_blank",
44863
- className: "no-underline",
44864
- children: /* @__PURE__ */ jsx117(BlueButton, {
44865
- size: "sm",
44866
- loading: false,
44867
- children: "Purchase"
44868
- })
44869
- }),
44870
- /* @__PURE__ */ jsx117("a", {
44871
- href: "https://editor-starter.remotion.dev?ref=remotion.dev",
44872
- target: "_blank",
44873
- className: "no-underline",
44874
- children: /* @__PURE__ */ jsx117(ClearButton, {
44875
- size: "sm",
44876
- loading: false,
44877
- children: "Demo"
44878
- })
44879
- }),
44880
- " ",
44881
- /* @__PURE__ */ jsx117("a", {
44882
- href: "https://remotion.dev/editor-starter",
44883
- className: "no-underline",
44884
- children: /* @__PURE__ */ jsx117(ClearButton, {
44885
- size: "sm",
44886
- loading: false,
44887
- children: "Docs"
44888
- })
44889
- })
44890
- ]
44891
- }),
44892
- /* @__PURE__ */ jsx117("br", {})
44893
- ]
44894
- })
44895
- ]
44896
- })
44897
- })
44898
- ]
44899
- });
44900
- };
44901
- var EditorStarterSection_default = EditorStarterSection;
44902
45083
 
44903
45084
  // src/components/homepage/EvaluateRemotion.tsx
44904
- import { useEffect as useEffect61, useState as useState58 } from "react";
44905
- import { jsx as jsx118, jsxs as jsxs40 } from "react/jsx-runtime";
45085
+ import { jsx as jsx116, jsxs as jsxs40 } from "react/jsx-runtime";
44906
45086
  var EvaluateRemotionSection = () => {
44907
- const [dailyAvatars, setDailyAvatars] = useState58([]);
44908
- useEffect61(() => {
45087
+ const [dailyAvatars, setDailyAvatars] = useState57([]);
45088
+ useEffect59(() => {
44909
45089
  const avatars = experts.map((expert) => expert.image);
44910
45090
  const selectedAvatars = [];
44911
45091
  for (let i = 0;i < 3; i++) {
@@ -44921,35 +45101,35 @@ var EvaluateRemotionSection = () => {
44921
45101
  /* @__PURE__ */ jsxs40("div", {
44922
45102
  className: "card flex-1 flex flex-col",
44923
45103
  children: [
44924
- /* @__PURE__ */ jsx118("div", {
45104
+ /* @__PURE__ */ jsx116("div", {
44925
45105
  className: "fontbrand text-2xl font-bold",
44926
45106
  children: "Questions about our license?"
44927
45107
  }),
44928
- /* @__PURE__ */ jsx118("p", {
45108
+ /* @__PURE__ */ jsx116("p", {
44929
45109
  className: "text-muted fontbrand leading-snug",
44930
45110
  children: "Book a 20 minute call or write us an email to get all your questions answered."
44931
45111
  }),
44932
- /* @__PURE__ */ jsx118("div", {
45112
+ /* @__PURE__ */ jsx116("div", {
44933
45113
  className: "flex-1"
44934
45114
  }),
44935
45115
  /* @__PURE__ */ jsxs40("div", {
44936
45116
  className: "flex flex-row flex-wrap gap-2",
44937
45117
  children: [
44938
- /* @__PURE__ */ jsx118("a", {
45118
+ /* @__PURE__ */ jsx116("a", {
44939
45119
  target: "_blank",
44940
45120
  href: "https://cal.com/remotion/evaluate",
44941
45121
  style: { textDecoration: "none" },
44942
- children: /* @__PURE__ */ jsx118(BlueButton, {
45122
+ children: /* @__PURE__ */ jsx116(BlueButton, {
44943
45123
  size: "sm",
44944
45124
  loading: false,
44945
45125
  children: "Schedule a call"
44946
45126
  })
44947
45127
  }),
44948
- /* @__PURE__ */ jsx118("a", {
45128
+ /* @__PURE__ */ jsx116("a", {
44949
45129
  target: "_blank",
44950
45130
  href: "mailto:hi@remotion.dev",
44951
45131
  style: { textDecoration: "none" },
44952
- children: /* @__PURE__ */ jsx118(BlueButton, {
45132
+ children: /* @__PURE__ */ jsx116(BlueButton, {
44953
45133
  size: "sm",
44954
45134
  loading: false,
44955
45135
  children: "Write an email"
@@ -44962,32 +45142,32 @@ var EvaluateRemotionSection = () => {
44962
45142
  /* @__PURE__ */ jsxs40("div", {
44963
45143
  className: "card flex-1 flex flex-col",
44964
45144
  children: [
44965
- /* @__PURE__ */ jsx118("div", {
45145
+ /* @__PURE__ */ jsx116("div", {
44966
45146
  className: "fontbrand text-2xl font-bold",
44967
45147
  children: "Get help with your Remotion project"
44968
45148
  }),
44969
- /* @__PURE__ */ jsx118("p", {
45149
+ /* @__PURE__ */ jsx116("p", {
44970
45150
  className: "text-muted fontbrand leading-snug",
44971
45151
  children: "Contact our experts for help and work."
44972
45152
  }),
44973
- /* @__PURE__ */ jsx118("div", {
45153
+ /* @__PURE__ */ jsx116("div", {
44974
45154
  className: "flex-1"
44975
45155
  }),
44976
45156
  /* @__PURE__ */ jsxs40("div", {
44977
45157
  className: "flex flex-row justify-between",
44978
45158
  children: [
44979
- /* @__PURE__ */ jsx118("a", {
45159
+ /* @__PURE__ */ jsx116("a", {
44980
45160
  href: "/experts",
44981
45161
  style: { textDecoration: "none" },
44982
- children: /* @__PURE__ */ jsx118(BlueButton, {
45162
+ children: /* @__PURE__ */ jsx116(BlueButton, {
44983
45163
  size: "sm",
44984
45164
  loading: false,
44985
45165
  children: "Remotion Experts"
44986
45166
  })
44987
45167
  }),
44988
- /* @__PURE__ */ jsx118("div", {
45168
+ /* @__PURE__ */ jsx116("div", {
44989
45169
  className: "flex justify-end items-end gap-3",
44990
- children: dailyAvatars.map((avatar) => /* @__PURE__ */ jsx118("div", {
45170
+ children: dailyAvatars.map((avatar) => /* @__PURE__ */ jsx116("div", {
44991
45171
  className: "w-12 h-12 rounded-full bg-muted bg-cover bg-center -ml-5 border-2 border-black",
44992
45172
  style: { backgroundImage: `url(${avatar})` }
44993
45173
  }, avatar))
@@ -45002,8 +45182,8 @@ var EvaluateRemotionSection = () => {
45002
45182
  var EvaluateRemotion_default = EvaluateRemotionSection;
45003
45183
 
45004
45184
  // src/components/homepage/IfYouKnowReact.tsx
45005
- import { useEffect as useEffect63, useState as useState59 } from "react";
45006
- import { jsx as jsx119, jsxs as jsxs41 } from "react/jsx-runtime";
45185
+ import { useEffect as useEffect60, useState as useState58 } from "react";
45186
+ import { jsx as jsx117, jsxs as jsxs41 } from "react/jsx-runtime";
45007
45187
  var isWebkit = () => {
45008
45188
  if (typeof window === "undefined") {
45009
45189
  return false;
@@ -45012,13 +45192,13 @@ var isWebkit = () => {
45012
45192
  const isChrome = Boolean(navigator.userAgent.match(/CriOS\//));
45013
45193
  return isSafariUserAgent || isChrome;
45014
45194
  };
45015
- var icon2 = {
45195
+ var icon3 = {
45016
45196
  height: 16,
45017
45197
  marginLeft: 10
45018
45198
  };
45019
45199
  var IfYouKnowReact = () => {
45020
- const [vid, setVid] = useState59("/img/compose.webm");
45021
- useEffect63(() => {
45200
+ const [vid, setVid] = useState58("/img/compose.webm");
45201
+ useEffect60(() => {
45022
45202
  if (isWebkit()) {
45023
45203
  setVid("/img/compose.mp4");
45024
45204
  }
@@ -45026,7 +45206,7 @@ var IfYouKnowReact = () => {
45026
45206
  return /* @__PURE__ */ jsxs41("div", {
45027
45207
  className: "flex flex-col lg:flex-row text-left justify-start lg:justify-end items-start lg:mb-0 gap-6 mt-8",
45028
45208
  children: [
45029
- /* @__PURE__ */ jsx119("video", {
45209
+ /* @__PURE__ */ jsx117("video", {
45030
45210
  src: vid,
45031
45211
  muted: true,
45032
45212
  autoPlay: true,
@@ -45039,18 +45219,18 @@ var IfYouKnowReact = () => {
45039
45219
  /* @__PURE__ */ jsxs41("h2", {
45040
45220
  className: "text-4xl fontbrand pt-20",
45041
45221
  children: [
45042
- /* @__PURE__ */ jsx119("span", {
45222
+ /* @__PURE__ */ jsx117("span", {
45043
45223
  className: "text-brand",
45044
45224
  children: "Compose"
45045
45225
  }),
45046
45226
  " with code"
45047
45227
  ]
45048
45228
  }),
45049
- /* @__PURE__ */ jsx119("p", {
45229
+ /* @__PURE__ */ jsx117("p", {
45050
45230
  className: "leading-relaxed font-brand",
45051
45231
  children: "Use React, a powerful frontend technology, to create sophisticated videos with code."
45052
45232
  }),
45053
- /* @__PURE__ */ jsx119("div", {
45233
+ /* @__PURE__ */ jsx117("div", {
45054
45234
  className: "h-4"
45055
45235
  }),
45056
45236
  /* @__PURE__ */ jsxs41("a", {
@@ -45059,11 +45239,11 @@ var IfYouKnowReact = () => {
45059
45239
  children: [
45060
45240
  "Learn Remotion",
45061
45241
  " ",
45062
- /* @__PURE__ */ jsx119("svg", {
45063
- style: icon2,
45242
+ /* @__PURE__ */ jsx117("svg", {
45243
+ style: icon3,
45064
45244
  xmlns: "http://www.w3.org/2000/svg",
45065
45245
  viewBox: "0 0 448 512",
45066
- children: /* @__PURE__ */ jsx119("path", {
45246
+ children: /* @__PURE__ */ jsx117("path", {
45067
45247
  fill: "currentColor",
45068
45248
  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"
45069
45249
  })
@@ -45077,12 +45257,12 @@ var IfYouKnowReact = () => {
45077
45257
  };
45078
45258
 
45079
45259
  // src/components/homepage/NewsletterButton.tsx
45080
- import { useCallback as useCallback55, useState as useState60 } from "react";
45081
- import { jsx as jsx120, jsxs as jsxs44 } from "react/jsx-runtime";
45260
+ import { useCallback as useCallback55, useState as useState59 } from "react";
45261
+ import { jsx as jsx118, jsxs as jsxs44 } from "react/jsx-runtime";
45082
45262
  var NewsletterButton = () => {
45083
- const [email, setEmail] = useState60("");
45084
- const [submitting, setSubmitting] = useState60(false);
45085
- const [subscribed, setSubscribed] = useState60(false);
45263
+ const [email, setEmail] = useState59("");
45264
+ const [submitting, setSubmitting] = useState59(false);
45265
+ const [subscribed, setSubscribed] = useState59(false);
45086
45266
  const handleSubmit = useCallback55(async (e) => {
45087
45267
  try {
45088
45268
  setSubmitting(true);
@@ -45105,15 +45285,15 @@ var NewsletterButton = () => {
45105
45285
  alert("Something went wrong. Please try again later.");
45106
45286
  }
45107
45287
  }, [email]);
45108
- return /* @__PURE__ */ jsx120("div", {
45109
- children: /* @__PURE__ */ jsx120("div", {
45288
+ return /* @__PURE__ */ jsx118("div", {
45289
+ children: /* @__PURE__ */ jsx118("div", {
45110
45290
  className: "flex flex-col",
45111
- children: /* @__PURE__ */ jsx120("div", {
45291
+ children: /* @__PURE__ */ jsx118("div", {
45112
45292
  className: "w-full",
45113
45293
  children: /* @__PURE__ */ jsxs44("div", {
45114
45294
  className: "flex flex-col flex-1",
45115
45295
  children: [
45116
- /* @__PURE__ */ jsx120(SectionTitle, {
45296
+ /* @__PURE__ */ jsx118(SectionTitle, {
45117
45297
  children: "Newsletter"
45118
45298
  }),
45119
45299
  /* @__PURE__ */ jsxs44("form", {
@@ -45132,7 +45312,7 @@ var NewsletterButton = () => {
45132
45312
  /* @__PURE__ */ jsxs44("div", {
45133
45313
  className: "flex flex-col md:flex-row gap-2 justify-center",
45134
45314
  children: [
45135
- /* @__PURE__ */ jsx120(Input, {
45315
+ /* @__PURE__ */ jsx118(Input, {
45136
45316
  disabled: submitting,
45137
45317
  value: email,
45138
45318
  className: "md:max-w-[400px]",
@@ -45141,14 +45321,14 @@ var NewsletterButton = () => {
45141
45321
  required: true,
45142
45322
  placeholder: "animator@gmail.com"
45143
45323
  }),
45144
- /* @__PURE__ */ jsx120("div", {
45145
- children: /* @__PURE__ */ jsx120(Button, {
45324
+ /* @__PURE__ */ jsx118("div", {
45325
+ children: /* @__PURE__ */ jsx118(Button, {
45146
45326
  type: "submit",
45147
45327
  className: "w-14 rounded-full h-14 bg-brand text-white font-bold disabled:text-white/50 disabled:border-black px-0 py-0",
45148
45328
  disabled: submitting || subscribed,
45149
- children: subscribed ? /* @__PURE__ */ jsx120(CheckIcon, {
45329
+ children: subscribed ? /* @__PURE__ */ jsx118(CheckIcon, {
45150
45330
  className: " size-5 mt-[1px]"
45151
- }) : /* @__PURE__ */ jsx120(PlanePaperIcon, {
45331
+ }) : /* @__PURE__ */ jsx118(PlanePaperIcon, {
45152
45332
  className: " size-6 ml-[2px]"
45153
45333
  })
45154
45334
  })
@@ -45165,16 +45345,16 @@ var NewsletterButton = () => {
45165
45345
  };
45166
45346
 
45167
45347
  // src/components/homepage/ParameterizeAndEdit.tsx
45168
- import { useEffect as useEffect65, useRef as useRef60, useState as useState61 } from "react";
45169
- import { jsx as jsx121, jsxs as jsxs46 } from "react/jsx-runtime";
45170
- var icon3 = {
45348
+ import { useEffect as useEffect61, useRef as useRef59, useState as useState60 } from "react";
45349
+ import { jsx as jsx119, jsxs as jsxs46 } from "react/jsx-runtime";
45350
+ var icon4 = {
45171
45351
  height: 16,
45172
45352
  marginLeft: 10
45173
45353
  };
45174
45354
  var ParameterizeAndEdit = () => {
45175
- const ref = useRef60(null);
45176
- const [vid, setVid] = useState61("/img/editing-vp9-chrome.webm");
45177
- useEffect65(() => {
45355
+ const ref = useRef59(null);
45356
+ const [vid, setVid] = useState60("/img/editing-vp9-chrome.webm");
45357
+ useEffect61(() => {
45178
45358
  if (isWebkit()) {
45179
45359
  setVid("/img/editing-safari.mp4");
45180
45360
  }
@@ -45183,8 +45363,8 @@ var ParameterizeAndEdit = () => {
45183
45363
  ref,
45184
45364
  className: "flex flex-col lg:flex-row justify-start lg:justify-end items-start gap-6 mt-20 lg:mt-0",
45185
45365
  children: [
45186
- /* @__PURE__ */ jsx121("div", {
45187
- children: /* @__PURE__ */ jsx121("video", {
45366
+ /* @__PURE__ */ jsx119("div", {
45367
+ children: /* @__PURE__ */ jsx119("video", {
45188
45368
  src: vid,
45189
45369
  autoPlay: true,
45190
45370
  muted: true,
@@ -45206,7 +45386,7 @@ var ParameterizeAndEdit = () => {
45206
45386
  className: "fontbrand text-4xl",
45207
45387
  children: [
45208
45388
  "Edit ",
45209
- /* @__PURE__ */ jsx121("span", {
45389
+ /* @__PURE__ */ jsx119("span", {
45210
45390
  className: "text-brand",
45211
45391
  children: "dynamically"
45212
45392
  })
@@ -45216,11 +45396,11 @@ var ParameterizeAndEdit = () => {
45216
45396
  className: "leading-relaxed",
45217
45397
  children: [
45218
45398
  "Parameterize your video by passing data.",
45219
- /* @__PURE__ */ jsx121("br", {}),
45399
+ /* @__PURE__ */ jsx119("br", {}),
45220
45400
  "Or embed it into your app and build an interface around it."
45221
45401
  ]
45222
45402
  }),
45223
- /* @__PURE__ */ jsx121("div", {
45403
+ /* @__PURE__ */ jsx119("div", {
45224
45404
  className: "h-4"
45225
45405
  }),
45226
45406
  /* @__PURE__ */ jsxs46("div", {
@@ -45232,47 +45412,47 @@ var ParameterizeAndEdit = () => {
45232
45412
  children: [
45233
45413
  "Remotion Studio",
45234
45414
  " ",
45235
- /* @__PURE__ */ jsx121("svg", {
45236
- style: icon3,
45415
+ /* @__PURE__ */ jsx119("svg", {
45416
+ style: icon4,
45237
45417
  xmlns: "http://www.w3.org/2000/svg",
45238
45418
  viewBox: "0 0 448 512",
45239
- children: /* @__PURE__ */ jsx121("path", {
45419
+ children: /* @__PURE__ */ jsx119("path", {
45240
45420
  fill: "currentColor",
45241
45421
  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"
45242
45422
  })
45243
45423
  })
45244
45424
  ]
45245
45425
  }),
45246
- /* @__PURE__ */ jsx121("br", {}),
45426
+ /* @__PURE__ */ jsx119("br", {}),
45247
45427
  /* @__PURE__ */ jsxs46("a", {
45248
45428
  className: "no-underline text-brand font-brand font-bold inline-flex flex-row items-center",
45249
45429
  href: "/player",
45250
45430
  children: [
45251
45431
  "Remotion Player",
45252
45432
  " ",
45253
- /* @__PURE__ */ jsx121("svg", {
45254
- style: icon3,
45433
+ /* @__PURE__ */ jsx119("svg", {
45434
+ style: icon4,
45255
45435
  xmlns: "http://www.w3.org/2000/svg",
45256
45436
  viewBox: "0 0 448 512",
45257
- children: /* @__PURE__ */ jsx121("path", {
45437
+ children: /* @__PURE__ */ jsx119("path", {
45258
45438
  fill: "currentColor",
45259
45439
  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"
45260
45440
  })
45261
45441
  })
45262
45442
  ]
45263
45443
  }),
45264
- /* @__PURE__ */ jsx121("br", {}),
45444
+ /* @__PURE__ */ jsx119("br", {}),
45265
45445
  /* @__PURE__ */ jsxs46("a", {
45266
45446
  className: "no-underline text-brand font-brand font-bold inline-flex flex-row items-center",
45267
45447
  href: "/docs/editor-starter",
45268
45448
  children: [
45269
45449
  "Remotion Editor Starter",
45270
45450
  " ",
45271
- /* @__PURE__ */ jsx121("svg", {
45272
- style: icon3,
45451
+ /* @__PURE__ */ jsx119("svg", {
45452
+ style: icon4,
45273
45453
  xmlns: "http://www.w3.org/2000/svg",
45274
45454
  viewBox: "0 0 448 512",
45275
- children: /* @__PURE__ */ jsx121("path", {
45455
+ children: /* @__PURE__ */ jsx119("path", {
45276
45456
  fill: "currentColor",
45277
45457
  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"
45278
45458
  })
@@ -45288,22 +45468,22 @@ var ParameterizeAndEdit = () => {
45288
45468
  };
45289
45469
 
45290
45470
  // src/components/homepage/RealMp4Videos.tsx
45291
- import { useEffect as useEffect66, useRef as useRef61, useState as useState64 } from "react";
45292
- import { jsx as jsx124, jsxs as jsxs47 } from "react/jsx-runtime";
45293
- var icon4 = {
45471
+ import { useEffect as useEffect63, useRef as useRef60, useState as useState61 } from "react";
45472
+ import { jsx as jsx120, jsxs as jsxs47 } from "react/jsx-runtime";
45473
+ var icon5 = {
45294
45474
  height: 16,
45295
45475
  marginLeft: 10
45296
45476
  };
45297
45477
  var RealMP4Videos = () => {
45298
- const ref = useRef61(null);
45299
- const videoRef = useRef61(null);
45300
- const [vid, setVid] = useState64("/img/render-progress.webm");
45301
- useEffect66(() => {
45478
+ const ref = useRef60(null);
45479
+ const videoRef = useRef60(null);
45480
+ const [vid, setVid] = useState61("/img/render-progress.webm");
45481
+ useEffect63(() => {
45302
45482
  if (isWebkit()) {
45303
45483
  setVid("/img/render-progress.mp4");
45304
45484
  }
45305
45485
  }, []);
45306
- useEffect66(() => {
45486
+ useEffect63(() => {
45307
45487
  const { current } = ref;
45308
45488
  if (!current) {
45309
45489
  return;
@@ -45324,9 +45504,9 @@ var RealMP4Videos = () => {
45324
45504
  ref,
45325
45505
  className: "flex flex-col lg:flex-row mt-40 lg:mt-30 gap-6",
45326
45506
  children: [
45327
- /* @__PURE__ */ jsx124("div", {
45507
+ /* @__PURE__ */ jsx120("div", {
45328
45508
  className: "flex w-[500px] justify-start lg:justify-start items-end",
45329
- children: /* @__PURE__ */ jsx124("video", {
45509
+ children: /* @__PURE__ */ jsx120("video", {
45330
45510
  ref: videoRef,
45331
45511
  src: vid,
45332
45512
  muted: true,
@@ -45349,7 +45529,7 @@ var RealMP4Videos = () => {
45349
45529
  /* @__PURE__ */ jsxs47("h2", {
45350
45530
  className: "text-4xl fontbrand",
45351
45531
  children: [
45352
- /* @__PURE__ */ jsx124("span", {
45532
+ /* @__PURE__ */ jsx120("span", {
45353
45533
  className: "text-brand",
45354
45534
  children: "Scalable"
45355
45535
  }),
@@ -45360,12 +45540,12 @@ var RealMP4Videos = () => {
45360
45540
  className: "leading-relaxed",
45361
45541
  children: [
45362
45542
  "Render the video as .mp4 or other formats. ",
45363
- /* @__PURE__ */ jsx124("br", {}),
45543
+ /* @__PURE__ */ jsx120("br", {}),
45364
45544
  "Locally, on the server or serverless."
45365
45545
  ]
45366
45546
  }),
45367
45547
  " ",
45368
- /* @__PURE__ */ jsx124("div", {
45548
+ /* @__PURE__ */ jsx120("div", {
45369
45549
  className: "h-4"
45370
45550
  }),
45371
45551
  /* @__PURE__ */ jsxs47("div", {
@@ -45377,29 +45557,29 @@ var RealMP4Videos = () => {
45377
45557
  children: [
45378
45558
  "Render options",
45379
45559
  " ",
45380
- /* @__PURE__ */ jsx124("svg", {
45381
- style: icon4,
45560
+ /* @__PURE__ */ jsx120("svg", {
45561
+ style: icon5,
45382
45562
  xmlns: "http://www.w3.org/2000/svg",
45383
45563
  viewBox: "0 0 448 512",
45384
- children: /* @__PURE__ */ jsx124("path", {
45564
+ children: /* @__PURE__ */ jsx120("path", {
45385
45565
  fill: "currentColor",
45386
45566
  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"
45387
45567
  })
45388
45568
  })
45389
45569
  ]
45390
45570
  }),
45391
- /* @__PURE__ */ jsx124("br", {}),
45571
+ /* @__PURE__ */ jsx120("br", {}),
45392
45572
  /* @__PURE__ */ jsxs47("a", {
45393
45573
  className: "no-underline text-brand font-brand font-bold inline-flex flex-row items-center",
45394
45574
  href: "/lambda",
45395
45575
  children: [
45396
45576
  "Remotion Lambda",
45397
45577
  " ",
45398
- /* @__PURE__ */ jsx124("svg", {
45399
- style: icon4,
45578
+ /* @__PURE__ */ jsx120("svg", {
45579
+ style: icon5,
45400
45580
  xmlns: "http://www.w3.org/2000/svg",
45401
45581
  viewBox: "0 0 448 512",
45402
- children: /* @__PURE__ */ jsx124("path", {
45582
+ children: /* @__PURE__ */ jsx120("path", {
45403
45583
  fill: "currentColor",
45404
45584
  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"
45405
45585
  })
@@ -45415,18 +45595,18 @@ var RealMP4Videos = () => {
45415
45595
  };
45416
45596
 
45417
45597
  // src/components/homepage/TrustedByBanner.tsx
45418
- import { jsx as jsx126, jsxs as jsxs48, Fragment as Fragment15 } from "react/jsx-runtime";
45598
+ import { jsx as jsx121, jsxs as jsxs48, Fragment as Fragment16 } from "react/jsx-runtime";
45419
45599
  var TrustedByBanner = () => {
45420
45600
  const logos = [
45421
45601
  {
45422
45602
  id: "logo1",
45423
45603
  url: "https://www.github.com/",
45424
- light: /* @__PURE__ */ jsx126("svg", {
45604
+ light: /* @__PURE__ */ jsx121("svg", {
45425
45605
  height: "50",
45426
45606
  viewBox: "0 0 64 62",
45427
45607
  fill: "none",
45428
45608
  xmlns: "http://www.w3.org/2000/svg",
45429
- children: /* @__PURE__ */ jsx126("path", {
45609
+ children: /* @__PURE__ */ jsx121("path", {
45430
45610
  d: "M21.3033 49.7496C21.3033 50.0051 21.0079 50.2095 20.6355 50.2095C20.2118 50.2478 19.9164 50.0434 19.9164 49.7496C19.9164 49.4941 20.2118 49.2896 20.5842 49.2896C20.9694 49.2513 21.3033 49.4557 21.3033 49.7496ZM17.3097 49.1747C17.2198 49.4302 17.4766 49.724 17.8619 49.8007C18.1957 49.9284 18.581 49.8007 18.658 49.5452C18.7351 49.2896 18.4911 48.9958 18.1059 48.8808C17.772 48.7914 17.3996 48.9191 17.3097 49.1747ZM22.9854 48.9575C22.6131 49.0469 22.3562 49.2896 22.3948 49.5835C22.4333 49.839 22.7671 50.0051 23.1524 49.9157C23.5248 49.8262 23.7816 49.5835 23.7431 49.328C23.7045 49.0852 23.3578 48.9191 22.9854 48.9575ZM31.4348 0C13.6243 0 0 13.4531 0 31.1733C0 45.3419 8.96304 57.4663 21.7655 61.7334C23.4092 62.0273 23.987 61.018 23.987 60.1875C23.987 59.3954 23.9485 55.0261 23.9485 52.3431C23.9485 52.3431 14.9598 54.2595 13.0722 48.5359C13.0722 48.5359 11.6083 44.8181 9.50236 43.8599C9.50236 43.8599 6.56177 41.854 9.70782 41.8924C9.70782 41.8924 12.9052 42.1479 14.6645 45.1886C17.4766 50.1201 22.1893 48.702 24.0256 47.8587C24.3209 45.8146 25.1556 44.3965 26.0801 43.5532C18.902 42.7611 11.6597 41.7263 11.6597 29.4358C11.6597 25.9224 12.6356 24.1593 14.6901 21.9108C14.3563 21.0803 13.2648 17.6564 15.024 13.2359C17.7078 12.4055 23.8843 16.6854 23.8843 16.6854C26.4525 15.9699 29.2133 15.5994 31.9485 15.5994C34.6836 15.5994 37.4444 15.9699 40.0126 16.6854C40.0126 16.6854 46.1892 12.3927 48.873 13.2359C50.6322 17.6691 49.5407 21.0803 49.2068 21.9108C51.2614 24.1721 52.5198 25.9352 52.5198 29.4358C52.5198 41.7646 44.9564 42.7484 37.7783 43.5532C38.9597 44.5625 39.9613 46.4789 39.9613 49.4813C39.9613 53.7868 39.9228 59.1144 39.9228 60.162C39.9228 60.9924 40.5134 62.0017 42.1443 61.7079C54.9853 57.4663 63.6915 45.3419 63.6915 31.1733C63.6915 13.4531 49.2453 0 31.4348 0ZM12.4815 44.0643C12.3145 44.192 12.3531 44.4859 12.5714 44.7286C12.7768 44.933 13.0722 45.0225 13.2391 44.8564C13.406 44.7286 13.3675 44.4348 13.1492 44.192C12.9438 43.9876 12.6484 43.8982 12.4815 44.0643ZM11.0946 43.0294C11.0048 43.1955 11.1332 43.3999 11.39 43.5277C11.5954 43.6554 11.8523 43.6171 11.9422 43.4383C12.032 43.2722 11.9036 43.0678 11.6468 42.94C11.39 42.8633 11.1845 42.9017 11.0946 43.0294ZM15.2551 47.5777C15.0497 47.7438 15.1267 48.127 15.4221 48.3698C15.7174 48.6636 16.0898 48.702 16.2567 48.4975C16.4237 48.3314 16.3466 47.9482 16.0898 47.7054C15.8073 47.4116 15.4221 47.3732 15.2551 47.5777ZM13.7913 45.6996C13.5858 45.8274 13.5858 46.1595 13.7913 46.4534C13.9967 46.7472 14.3434 46.875 14.5104 46.7472C14.7158 46.5811 14.7158 46.249 14.5104 45.9551C14.3306 45.6613 13.9967 45.5335 13.7913 45.6996Z",
45431
45611
  fill: "var(--text-color)"
45432
45612
  })
@@ -45441,51 +45621,51 @@ var TrustedByBanner = () => {
45441
45621
  fill: "none",
45442
45622
  xmlns: "http://www.w3.org/2000/svg",
45443
45623
  children: [
45444
- /* @__PURE__ */ jsx126("path", {
45624
+ /* @__PURE__ */ jsx121("path", {
45445
45625
  d: "M6.51644 0.088258C4.05524 0.528184 1.89128 2.12143 0.856857 4.24972C-0.058664 6.12832 0.000785433 4.71342 0.000785433 23.7491C0.000785433 38.5758 0.0245652 40.9181 0.179134 41.5245C0.892527 44.3543 2.99704 46.4826 5.82683 47.2435C6.77802 47.4932 8.49017 47.5289 9.48892 47.303C11.0465 46.9582 11.855 46.4113 18.9889 40.9538C22.7224 38.1002 25.8137 35.7579 25.8613 35.7579C25.897 35.7579 29.0002 38.1002 32.7336 40.9538C36.5622 43.8906 39.9033 46.3518 40.367 46.6015C40.8307 46.8393 41.5441 47.1246 41.9721 47.2435C43.0065 47.517 44.8613 47.517 45.8958 47.2435C48.4996 46.5302 50.5328 44.5921 51.4364 41.9407C51.6505 41.3105 51.6623 40.5733 51.6623 23.7491V6.21155L51.377 5.34359C50.6398 3.08451 48.7255 1.19402 46.3595 0.385505C45.4796 0.088258 45.1943 0.0406985 43.9339 0.0406985C42.6855 0.0406985 42.3882 0.088258 41.5559 0.373615C41.0328 0.551964 40.3432 0.861101 40.0103 1.06323C39.6892 1.26536 36.3957 3.70278 32.7099 6.48502C29.0121 9.26725 25.9326 11.5382 25.8613 11.5382C25.79 11.5382 22.7105 9.26725 19.0127 6.48502C15.3269 3.70278 12.0334 1.26536 11.7123 1.06323C10.3569 0.230937 8.06213 -0.197099 6.51644 0.088258ZM8.82308 4.63019C9.13222 4.72531 11.5459 6.46124 15.6835 9.57639C19.1911 12.2159 22.0684 14.4037 22.0803 14.4512C22.1279 14.582 14.1141 20.7172 13.912 20.7053C13.8168 20.7053 11.6291 19.0764 9.06088 17.0908L4.38815 13.4882L4.42382 10.2066L4.45949 6.92494L4.78052 6.33045C5.06588 5.7954 5.39879 5.40304 5.96951 4.975C6.57589 4.5113 7.91945 4.35673 8.82308 4.63019ZM45.0872 4.67775C45.8125 4.91555 46.5497 5.5695 46.9421 6.31856L47.2631 6.92494L47.2988 10.2066L47.3344 13.4882L42.6617 17.0908C40.0935 19.0764 37.9057 20.7053 37.7987 20.7053C37.5966 20.7172 29.5947 14.582 29.6423 14.4512C29.7017 14.2491 42.519 4.71342 42.8519 4.6183C43.4345 4.43996 44.4927 4.47563 45.0872 4.67775ZM30.0346 20.5032C32.2818 22.251 34.0891 23.7135 34.0415 23.7491C33.8632 23.9156 26.0991 29.8843 25.9683 29.9675C25.8375 30.0389 17.7167 23.868 17.6929 23.6778C17.6929 23.5827 25.6948 17.3405 25.8375 17.3405C25.897 17.3286 27.7875 18.7554 30.0346 20.5032ZM7.37252 21.4425C9.72671 23.2616 10.2142 23.6897 10.0834 23.8086C9.80994 24.082 4.51894 28.1484 4.45949 28.1484C4.42382 28.1484 4.40004 26.139 4.40004 23.6897C4.40004 21.2404 4.42382 19.231 4.4476 19.231C4.48327 19.231 5.80305 20.2297 7.37252 21.4425ZM47.3225 23.6897C47.3225 26.139 47.2988 28.1484 47.2631 28.1484C47.2274 28.1484 45.9195 27.1496 44.3501 25.9369C42.2456 24.308 41.5203 23.6778 41.6154 23.5827C41.8651 23.333 47.1442 19.2548 47.2393 19.2429C47.2869 19.231 47.3225 21.2404 47.3225 23.6897ZM20.3682 31.4776C21.3312 32.2147 22.116 32.8568 22.116 32.8925C22.1041 33.047 9.59592 42.4995 9.07277 42.7373C7.51519 43.4745 5.58903 42.7492 4.79241 41.1321L4.45949 40.4544L4.42382 37.1847L4.38815 33.9031L9.156 30.2053L13.9357 26.5076L16.2662 28.3148C17.5621 29.3017 19.3932 30.7285 20.3682 31.4776ZM42.6617 30.3005L47.3344 33.915L47.2988 37.2442L47.2631 40.5733L46.9421 41.1678C46.5378 41.9288 46.1217 42.3211 45.3013 42.7016C44.4452 43.1059 43.4583 43.1178 42.6498 42.7373C42.0197 42.4519 29.5947 33.0232 29.6423 32.8687C29.7017 32.6665 37.7631 26.5195 37.8701 26.6027C37.9414 26.6503 40.0935 28.303 42.6617 30.3005Z",
45446
45626
  fill: "var(--text-color)"
45447
45627
  }),
45448
- /* @__PURE__ */ jsx126("path", {
45628
+ /* @__PURE__ */ jsx121("path", {
45449
45629
  d: "M120.255 8.16145C119.673 8.43492 118.983 9.20776 118.805 9.82604C118.484 10.8842 118.709 11.7998 119.47 12.5607C120.374 13.4643 121.563 13.6546 122.681 13.0958C124.785 12.0494 124.678 9.00564 122.502 8.09011C121.955 7.86421 120.838 7.89988 120.255 8.16145Z",
45450
45630
  fill: "var(--text-color)"
45451
45631
  }),
45452
- /* @__PURE__ */ jsx126("path", {
45632
+ /* @__PURE__ */ jsx121("path", {
45453
45633
  d: "M214.613 19.7065V31.4775H216.801H219.001L219.036 26.8048C219.084 21.6446 219.084 21.6327 219.88 20.7885C220.427 20.2178 221.081 19.9443 221.926 19.9443C222.817 19.9443 223.507 20.2535 223.947 20.8123C224.565 21.6327 224.601 21.9656 224.601 26.9237V31.4775H226.8H229V26.0914C229 21.6446 228.964 20.5864 228.822 20.0038C228.382 18.2916 227.478 17.1145 226.087 16.4249C223.935 15.3667 221.414 15.6759 219.809 17.1978C219.452 17.5307 219.131 17.8042 219.096 17.8042C219.048 17.8042 219.013 15.5807 219.013 12.8699V7.93555H216.813H214.613V19.7065Z",
45454
45634
  fill: "var(--text-color)"
45455
45635
  }),
45456
- /* @__PURE__ */ jsx126("path", {
45636
+ /* @__PURE__ */ jsx121("path", {
45457
45637
  d: "M188.574 13.6427V16.0207H187.088H185.602V17.9825V19.9443H187.076H188.563L188.598 23.8323C188.646 27.4587 188.67 27.7917 188.907 28.5051C189.383 29.9437 190.477 30.9781 191.963 31.43C192.819 31.6915 194.757 31.7629 195.827 31.5726L196.719 31.4181L196.755 29.6108L196.79 27.8154L195.482 27.7679C194.032 27.7322 193.723 27.6014 193.271 26.8286C193.045 26.4481 193.033 26.2103 193.033 23.2141V20.0038L194.971 19.9681L196.897 19.9443V17.9825V16.0207H194.935H192.974V13.6427V11.2647H190.774H188.574V13.6427Z",
45458
45638
  fill: "var(--text-color)"
45459
45639
  }),
45460
- /* @__PURE__ */ jsx126("path", {
45640
+ /* @__PURE__ */ jsx121("path", {
45461
45641
  d: "M109.768 15.8423C106.82 16.3774 104.763 18.6959 105.048 21.1809C105.321 23.654 106.736 24.8192 110.196 25.4137C110.957 25.5445 111.813 25.7466 112.087 25.8417C113.775 26.46 113.145 28.3862 111.266 28.3862C110.089 28.3862 109.233 27.8511 108.829 26.8999C108.71 26.6027 108.532 26.3649 108.437 26.3649C108.341 26.3649 107.485 26.5789 106.534 26.8286C104.81 27.2804 104.81 27.2923 104.822 27.6252C104.87 28.6834 106.273 30.3837 107.652 31.0614C109.804 32.1196 112.8 32.0839 114.869 30.9901C115.796 30.4907 116.783 29.4206 117.104 28.5764C117.616 27.1972 117.544 25.6039 116.902 24.4268C116.141 23.0238 114.477 22.1797 111.778 21.8467C110.47 21.6803 109.673 21.4187 109.447 21.0977C108.936 20.3605 109.554 19.3261 110.612 19.1715C111.742 19.0051 112.574 19.3974 113.074 20.3367C113.24 20.6459 113.43 20.8955 113.49 20.8955C113.561 20.8955 114.417 20.6815 115.392 20.4318C117.425 19.9206 117.342 20.0157 116.759 18.8029C116.046 17.3167 114.405 16.1753 112.515 15.8423C111.385 15.6402 110.898 15.6402 109.768 15.8423Z",
45462
45642
  fill: "var(--text-color)"
45463
45643
  }),
45464
- /* @__PURE__ */ jsx126("path", {
45644
+ /* @__PURE__ */ jsx121("path", {
45465
45645
  d: "M70.1511 15.9493C69.4496 16.1515 68.9146 16.4249 68.1655 16.9838L67.5353 17.4593V16.7341V16.0207H65.3357H63.1361V23.7491V31.4775H65.3952H67.6424L67.678 26.6265C67.7137 21.9299 67.7256 21.7754 67.9753 21.3117C68.4865 20.3605 69.2237 19.9443 70.3889 19.9443C71.5541 19.9443 72.2675 20.3961 72.7312 21.4306C72.9215 21.8586 72.9452 22.3937 72.9809 26.6859L73.0166 31.4775H75.2043H77.3921L77.4277 26.6265C77.4634 21.9299 77.4753 21.7754 77.725 21.3117C78.2362 20.3486 78.9734 19.9443 80.1624 19.9443C81.0304 19.9443 81.7557 20.2297 82.1361 20.7172C82.7068 21.4425 82.7544 21.9181 82.7544 26.8642V31.4775H85.0254H87.2963L87.2488 26.0914C87.2012 20.9431 87.1893 20.6815 86.9396 19.9324C86.4284 18.3749 85.4058 17.2216 83.8602 16.4487C82.9565 15.9969 81.9102 15.7829 80.5548 15.7829C78.7832 15.7829 77.5942 16.1515 76.5003 17.0432L76.0009 17.4356L75.561 17.0194C74.6574 16.1634 73.4684 15.7829 71.8276 15.7948C71.1974 15.7948 70.4484 15.8661 70.1511 15.9493Z",
45466
45646
  fill: "var(--text-color)"
45467
45647
  }),
45468
- /* @__PURE__ */ jsx126("path", {
45648
+ /* @__PURE__ */ jsx121("path", {
45469
45649
  d: "M149.064 15.9018C148.434 16.0682 147.459 16.5676 146.877 17.0551L146.365 17.4593V16.746V16.0207H144.166H141.966V23.7491V31.4775H144.154H146.353L146.401 26.8048C146.425 23.7253 146.484 22.0013 146.579 21.7278C146.781 21.1333 147.4 20.4199 147.959 20.1702C148.624 19.873 149.801 19.873 150.384 20.1702C150.943 20.4556 151.169 20.7053 151.466 21.3711C151.704 21.8824 151.716 22.1321 151.716 26.6859V31.4775H153.975H156.234V26.8286C156.234 21.7873 156.258 21.5614 156.864 20.8242C157.363 20.2178 158.017 19.9443 158.98 19.9443C160.134 19.9443 160.704 20.2654 161.168 21.1928L161.525 21.9062L161.561 26.6859L161.596 31.4775H163.796H165.984V26.1509C165.984 20.3961 165.96 20.194 165.318 18.9218C164.628 17.5664 162.833 16.2704 161.133 15.9137C160.324 15.7472 158.445 15.7472 157.637 15.9137C156.793 16.092 155.913 16.52 155.306 17.0432L154.807 17.4712L154.201 16.9243C153.321 16.1277 152.536 15.878 150.883 15.8304C150.134 15.8067 149.314 15.8423 149.064 15.9018Z",
45470
45650
  fill: "var(--text-color)"
45471
45651
  }),
45472
- /* @__PURE__ */ jsx126("path", {
45652
+ /* @__PURE__ */ jsx121("path", {
45473
45653
  d: "M173.95 15.8661C171.203 16.2823 168.849 18.4224 167.934 21.3236C167.232 23.5351 167.541 26.2103 168.742 28.2435C169.23 29.0758 170.49 30.3718 171.239 30.8117C172.583 31.5964 174.211 31.9056 175.924 31.7153C177.267 31.5727 178.385 31.2278 179.074 30.7641L179.598 30.4193L179.633 30.9425L179.669 31.4775H181.869H184.056V23.8086V16.1396H181.857H179.657V16.6746V17.2216L179.122 16.853C177.957 16.0563 175.614 15.6045 173.95 15.8661ZM177.113 20.0038C178.04 20.2891 178.813 20.955 179.3 21.8943C179.693 22.6552 179.716 22.786 179.716 23.7967C179.705 24.6408 179.657 24.9975 179.455 25.4375C179.098 26.2222 178.313 27.0188 177.529 27.3993C176.97 27.6847 176.72 27.7322 175.912 27.7203C175.127 27.7203 174.842 27.6609 174.283 27.3993C173.486 27.0069 172.844 26.3292 172.428 25.4256C171.976 24.4625 171.976 23.0238 172.428 22.0607C173.248 20.2891 175.21 19.4331 177.113 20.0038Z",
45474
45654
  fill: "var(--text-color)"
45475
45655
  }),
45476
- /* @__PURE__ */ jsx126("path", {
45656
+ /* @__PURE__ */ jsx121("path", {
45477
45657
  d: "M203.615 15.9612C200.607 16.6152 198.181 18.9575 197.432 21.9062C197.004 23.5708 197.29 25.9725 198.11 27.649C198.669 28.7904 200.215 30.3123 201.416 30.9068C202.902 31.6202 203.615 31.7748 205.577 31.7629C207.099 31.7629 207.408 31.7272 208.217 31.4538C210.369 30.7404 211.831 29.5276 212.723 27.7441C213.02 27.1258 213.186 26.674 213.115 26.6146C212.996 26.4957 209.501 25.4137 209.251 25.4137C209.156 25.4137 209.013 25.5564 208.942 25.7347C208.656 26.3768 208.062 26.9475 207.301 27.328C206.635 27.6609 206.409 27.7084 205.577 27.7084C204.745 27.7084 204.531 27.6609 203.853 27.328C201.094 25.9606 201.118 21.5733 203.889 20.2178C204.471 19.9325 204.709 19.8849 205.577 19.8849C206.362 19.8849 206.718 19.9443 207.135 20.1465C207.8 20.4437 208.538 21.1571 208.823 21.7516L209.025 22.1915L209.596 22.0132C209.905 21.9181 210.809 21.6446 211.617 21.4068L213.079 20.9669L212.996 20.6102C212.961 20.408 212.735 19.8849 212.509 19.445C211.665 17.8161 209.715 16.4368 207.634 15.9731C206.599 15.7472 204.614 15.7353 203.615 15.9612Z",
45478
45658
  fill: "var(--text-color)"
45479
45659
  }),
45480
- /* @__PURE__ */ jsx126("path", {
45660
+ /* @__PURE__ */ jsx121("path", {
45481
45661
  d: "M119.256 23.7491V31.4775H121.456H123.656V23.7491V16.0207H121.456H119.256V23.7491Z",
45482
45662
  fill: "var(--text-color)"
45483
45663
  }),
45484
- /* @__PURE__ */ jsx126("path", {
45664
+ /* @__PURE__ */ jsx121("path", {
45485
45665
  d: "M125.082 16.0801C125.082 16.1158 126.283 17.8517 127.746 19.9443L130.409 23.7491L127.686 27.5539C126.188 29.6584 124.964 31.3943 124.964 31.4181C124.964 31.4537 126.057 31.4775 127.401 31.4775H129.838L131.277 29.2779C132.074 28.0651 132.763 27.0783 132.811 27.0783C132.858 27.0783 133.548 28.0651 134.333 29.2779L135.771 31.4775H138.28H140.801L140.385 30.9068C138.661 28.5407 135.308 23.7372 135.308 23.6421C135.308 23.5826 136.473 21.9062 137.9 19.9206C139.326 17.9231 140.539 16.2347 140.587 16.1634C140.646 16.0563 140.087 16.0207 138.221 16.0207H135.771L134.333 18.2203C133.548 19.4212 132.858 20.3961 132.823 20.3724C132.787 20.3486 132.133 19.3498 131.384 18.1727L130.017 16.0207H127.556C126.188 16.0207 125.082 16.0445 125.082 16.0801Z",
45486
45666
  fill: "var(--text-color)"
45487
45667
  }),
45488
- /* @__PURE__ */ jsx126("path", {
45668
+ /* @__PURE__ */ jsx121("path", {
45489
45669
  d: "M88.9728 21.0382C89.0323 26.5076 89.0679 26.7929 89.8527 28.291C90.9228 30.3361 93.051 31.6083 95.7144 31.7986C98.5561 32.0007 101.41 30.5501 102.575 28.3267C103.336 26.8643 103.36 26.6978 103.407 21.1571L103.455 16.1396H101.196H98.9246V20.8123C98.9246 26.1033 98.9009 26.2698 98.0924 27.0069C97.0579 27.9343 95.2269 27.8987 94.2638 26.9356C93.491 26.1627 93.4553 25.8655 93.4553 20.6934V16.1396H91.1843H88.9134L88.9728 21.0382Z",
45490
45670
  fill: "var(--text-color)"
45491
45671
  })
@@ -45502,11 +45682,11 @@ var TrustedByBanner = () => {
45502
45682
  className: "-mt-2",
45503
45683
  xmlns: "http://www.w3.org/2000/svg",
45504
45684
  children: [
45505
- /* @__PURE__ */ jsx126("path", {
45685
+ /* @__PURE__ */ jsx121("path", {
45506
45686
  d: "M16.4128 26.0434H11.2775C9.66644 26.0434 8.15605 26.4461 7.04844 27.6544L0.302047 35.4078C5.23597 35.7098 10.3713 35.7098 13.9962 35.7098C32.4229 35.7098 35.343 24.6337 35.4437 19.0956C33.8326 21.1094 28.9994 26.0434 16.4128 26.0434ZM33.1278 8.22082C33.0271 9.12705 32.5236 13.0541 21.4474 13.0541C12.4858 13.0541 8.8609 13.054 -3.05176e-05 12.8527L6.64567 20.5053C7.95467 22.0157 9.76713 22.5191 11.781 22.6198C13.9962 22.6198 17.017 22.7205 17.4198 22.7205C29.8049 22.7205 35.0409 16.9811 35.0409 12.8527C35.1416 10.6374 34.4368 9.22774 33.1278 8.22082Z",
45507
45687
  fill: "var(--light-text-color)"
45508
45688
  }),
45509
- /* @__PURE__ */ jsx126("path", {
45689
+ /* @__PURE__ */ jsx121("path", {
45510
45690
  d: "M68.0509 9.70953H75.3052V27.0081C75.3052 28.9054 74.8588 30.5795 74.0776 31.9187C73.2963 33.258 72.2919 34.1508 70.9526 34.8204C69.6134 35.49 68.1625 35.7132 66.4885 35.7132C64.8144 35.7132 63.3636 35.3784 62.0243 34.8204C60.6851 34.1508 59.6807 33.258 58.8994 31.9187C58.7878 31.8071 58.7878 31.5839 58.6762 31.4723C58.5646 31.5839 58.5646 31.8071 58.453 31.9187C57.6718 33.258 56.6673 34.1508 55.3281 34.8204C53.9889 35.49 52.538 35.7132 50.8639 35.7132C49.1899 35.7132 47.739 35.3784 46.5114 34.8204C45.1722 34.1508 44.1677 33.258 43.3865 31.9187C42.6053 30.5795 42.2704 29.017 42.2704 27.0081L42.0472 9.70953H49.3015V25.6689C49.3015 26.7849 49.5247 27.5662 50.0827 28.0126C50.6407 28.459 51.3104 28.6822 52.0916 28.6822C52.8728 28.6822 53.654 28.459 54.2121 28.0126C54.7701 27.5662 55.1049 26.7849 55.1049 25.6689V9.70953H57.7834H59.6807H62.3592V25.6689C62.3592 26.7849 62.694 27.5662 63.252 28.0126C63.81 28.459 64.5912 28.6822 65.3725 28.6822C66.1537 28.6822 66.8233 28.459 67.3813 28.0126C67.8277 27.5662 68.0509 26.7849 68.0509 25.6689V9.70953ZM85.796 0.446408C85.2379 0.111596 84.5683 -7.62939e-06 83.7871 -7.62939e-06C83.0059 -7.62939e-06 82.3362 0.111596 81.7782 0.446408C81.2202 0.78122 80.6622 1.22764 80.3274 1.78565C79.9926 2.34367 79.7694 3.0133 79.7694 3.68292C79.7694 4.79896 80.1042 5.69179 80.8854 6.36141C81.6666 7.03104 82.6711 7.36585 83.7871 7.36585C84.5683 7.36585 85.2379 7.25425 85.796 6.91943C86.4656 6.58462 86.912 6.13821 87.2468 5.58019C87.5816 5.02217 87.8048 4.35254 87.8048 3.57132C87.8048 2.79009 87.5816 2.23207 87.2468 1.67405C86.912 1.22764 86.4656 0.78122 85.796 0.446408ZM80.1042 35.1552H87.3584V10.0443H80.1042V35.1552ZM104.211 23.4368C103.876 22.8788 103.318 22.3208 102.871 21.7628C102.425 21.3163 101.867 20.8699 101.309 20.3119C100.862 19.8655 100.528 19.5307 100.193 19.1959C99.9697 18.8611 99.8581 18.5262 99.8581 18.0798C99.8581 17.4102 100.193 16.9638 100.974 16.629C101.755 16.2942 102.648 16.1826 103.764 16.1826H104.88L104.211 9.48632C103.541 9.37472 102.871 9.37472 102.202 9.37472C100.416 9.37472 98.742 9.59793 97.068 10.0443C95.5055 10.4908 94.1663 11.272 93.1618 12.388C92.1574 13.5041 91.5994 14.9549 91.5994 16.8522C91.5994 18.1914 91.8226 19.3075 92.3806 20.3119C92.9386 21.3163 93.6082 22.2092 94.3895 23.102C94.8359 23.5484 95.2823 23.9948 95.7287 24.4412C96.1751 24.8877 96.6215 25.3341 96.8448 25.6689C97.068 26.0037 97.1796 26.3385 97.1796 26.7849C97.1796 27.4546 96.8447 28.0126 96.0635 28.3474C95.2823 28.6822 94.2779 28.9054 92.827 28.9054C92.269 28.9054 91.8226 28.9054 91.5994 28.7938L92.4922 35.49C93.1618 35.7132 93.7198 35.7132 94.5011 35.7132C96.6215 35.7132 98.4072 35.3784 100.081 34.8204C101.755 34.2624 103.095 33.3696 104.099 32.1419C105.103 30.9143 105.55 29.4634 105.55 27.5662C105.55 26.7849 105.438 26.0037 105.215 25.2225C104.88 24.5529 104.657 23.9948 104.211 23.4368ZM117.491 28.0126C116.933 27.4546 116.71 26.6733 116.71 25.6689V16.4058H121.956V10.0443H116.71V3.68292L109.456 5.8034V28.0126C109.456 30.5795 110.014 32.5883 111.018 33.816C112.134 35.0436 113.697 35.7132 115.817 35.7132C116.933 35.7132 117.938 35.6016 118.942 35.49C119.947 35.3784 120.728 35.1552 121.509 34.8204L122.848 28.5706C122.067 28.7938 121.063 28.9054 119.947 28.9054C118.719 28.7938 117.938 28.5706 117.491 28.0126ZM126.531 35.1552H133.786V10.0443H126.531V35.1552ZM132.223 0.446408C131.665 0.111596 130.996 -7.62939e-06 130.214 -7.62939e-06C129.433 -7.62939e-06 128.763 0.111596 128.205 0.446408C127.647 0.78122 127.089 1.22764 126.755 1.78565C126.42 2.34367 126.197 3.0133 126.197 3.68292C126.197 4.79896 126.531 5.69179 127.313 6.36141C128.094 7.03104 129.098 7.36585 130.214 7.36585C130.996 7.36585 131.665 7.25425 132.223 6.91943C132.893 6.58462 133.339 6.13821 133.674 5.58019C134.009 5.02217 134.232 4.35254 134.232 3.57132C134.232 2.79009 134.009 2.23207 133.674 1.67405C133.339 1.22764 132.893 0.78122 132.223 0.446408ZM164.477 10.0443V35.1552H157.222V31.0259C156.441 32.2535 155.548 33.258 154.432 34.0392C152.87 35.1552 150.973 35.7132 148.852 35.7132C146.732 35.7132 144.834 35.1552 143.272 34.0392C141.71 32.9231 140.482 31.3607 139.589 29.3518C138.696 27.3429 138.25 25.1109 138.25 22.544C138.25 19.9771 138.696 17.745 139.589 15.8477C140.482 13.8389 141.71 12.2764 143.272 11.1604C144.834 10.0443 146.732 9.48632 148.852 9.48632C150.973 9.48632 152.87 10.0443 154.432 11.1604C155.548 11.9416 156.441 12.946 157.222 14.1737V10.0443H164.477ZM156.664 25.6689C157.222 24.7761 157.446 23.66 157.446 22.544C157.446 21.4279 157.222 20.3119 156.664 19.4191C156.218 18.5262 155.548 17.745 154.656 17.2986C153.763 16.7406 152.87 16.5174 151.754 16.5174C150.749 16.5174 149.745 16.7406 148.852 17.2986C147.959 17.8566 147.29 18.5262 146.843 19.4191C146.285 20.3119 146.062 21.3163 146.062 22.544C146.062 23.66 146.285 24.7761 146.843 25.6689C147.401 26.5617 148.071 27.3429 148.852 27.7894C149.745 28.3474 150.638 28.5706 151.754 28.5706C152.758 28.5706 153.763 28.3474 154.656 27.7894C155.548 27.3429 156.218 26.5617 156.664 25.6689Z",
45511
45691
  fill: "var(--text-color)"
45512
45692
  })
@@ -45516,27 +45696,27 @@ var TrustedByBanner = () => {
45516
45696
  {
45517
45697
  id: "logo5",
45518
45698
  url: "https://www.soundcloud.com/",
45519
- light: /* @__PURE__ */ jsx126("svg", {
45699
+ light: /* @__PURE__ */ jsx121("svg", {
45520
45700
  height: "40",
45521
45701
  viewBox: "0 0 129 57",
45522
45702
  fill: "none",
45523
45703
  xmlns: "http://www.w3.org/2000/svg",
45524
- children: /* @__PURE__ */ jsx126("path", {
45704
+ children: /* @__PURE__ */ jsx121("path", {
45525
45705
  d: "M68.962 1.89524C67.7646 2.35781 67.4474 2.83682 67.4351 3.75787V54.1228C67.4597 55.093 68.2007 55.9034 69.1483 55.9976C69.1893 55.9996 112.847 56.0222 113.134 56.0222C121.898 56.0222 129 48.9199 129 40.1536C129 31.3872 121.898 24.287 113.134 24.287C111.027 24.286 108.941 24.7042 106.997 25.5171C105.734 11.2183 93.7445 -2.25304e-06 79.1141 -2.25304e-06C75.643 0.00545336 72.2022 0.649256 68.964 1.89936M62.4471 5.46073L61.7308 41.2056L62.4471 54.1781C62.4717 55.1257 63.2454 55.9055 64.1951 55.9055C64.6562 55.9018 65.0976 55.7172 65.4241 55.3915C65.7506 55.0657 65.9362 54.6249 65.941 54.1637V54.1761L66.7188 41.2036L65.941 5.45461C65.9165 4.49876 65.1427 3.7149 64.1951 3.7149C63.2474 3.7149 62.4553 4.50079 62.4471 5.46073ZM57.1398 8.42858L56.5259 41.1913C56.5259 41.2118 57.1398 54.3643 57.1398 54.3643C57.1643 55.2547 57.889 55.9875 58.7773 55.9875C59.2089 55.9827 59.6215 55.8099 59.9276 55.5056C60.2338 55.2014 60.4094 54.7897 60.4168 54.3582L61.1064 41.2036L60.4168 8.42645C60.3923 7.52996 59.6656 6.7993 58.7793 6.7993C58.3481 6.80456 57.9359 6.97771 57.6302 7.28189C57.3245 7.58607 57.1495 7.99738 57.142 8.42858M41.2713 11.863L40.4588 41.1933L41.2733 54.6611C41.2938 55.3816 41.8872 55.9506 42.579 55.9506C43.2708 55.9506 43.8625 55.3775 43.885 54.655V54.6488L44.7999 41.1913L43.885 11.861C43.8604 11.1303 43.2872 10.5613 42.579 10.5613C41.8708 10.5613 41.2898 11.1303 41.2693 11.861M46.5171 12.6122L45.7721 41.1953L46.5191 54.5301C46.5437 55.314 47.1577 55.9343 47.9375 55.9343C48.7174 55.9343 49.3294 55.312 49.3539 54.522V54.5301L50.1727 41.1933L49.3539 12.6101C49.3294 11.818 48.7112 11.1978 47.9375 11.1978C47.1639 11.1978 46.5356 11.82 46.5171 12.6101M36.0642 12.8148L35.1842 41.1892L36.0642 54.7388C36.0711 55.0527 36.1999 55.3516 36.4234 55.5721C36.647 55.7926 36.9477 55.9173 37.2617 55.9199C37.9064 55.9199 38.4324 55.402 38.459 54.7327L39.4496 41.1892L38.459 12.8127C38.4324 12.1475 37.9064 11.6257 37.2617 11.6257C36.9467 11.6283 36.6451 11.7538 36.4214 11.9756C36.1978 12.1974 36.0695 12.4978 36.0642 12.8127M51.808 13.6561L51.1244 41.1933L51.808 54.4461C51.8325 55.2915 52.4979 55.9567 53.3371 55.9567C54.1762 55.9567 54.8435 55.2915 54.8619 54.438V54.4483L55.6272 41.1953L54.8619 13.6539C54.8581 13.2511 54.6962 12.8658 54.4109 12.5813C54.1256 12.2968 53.7399 12.1359 53.3371 12.1332C52.5184 12.1332 51.8223 12.8026 51.808 13.6561ZM30.8982 14.9946C30.8982 14.9967 29.9566 41.1831 29.9566 41.1831L30.8982 54.8719C30.9066 55.1562 31.0241 55.4263 31.2266 55.6261C31.429 55.8258 31.7008 55.9398 31.9851 55.9444C32.5643 55.9444 33.041 55.4736 33.0697 54.8678L34.1341 41.1831L33.0697 14.9946C33.039 14.3908 32.5623 13.918 31.9851 13.918C31.7001 13.9227 31.4278 14.0372 31.2253 14.2378C31.0228 14.4385 30.9056 14.7097 30.8982 14.9946ZM25.7751 19.866L24.7659 41.1831L25.7751 54.9578C25.8017 55.4961 26.2296 55.9199 26.7515 55.9199C27.0066 55.9138 27.2498 55.8107 27.4316 55.6316C27.6133 55.4525 27.7198 55.2108 27.7296 54.9558V54.96L28.872 41.1851L27.7296 19.868C27.6969 19.3276 27.2673 18.9019 26.7515 18.9019C26.2357 18.9019 25.8017 19.3256 25.7751 19.866ZM15.6516 27.0563L14.5138 41.179L15.6516 54.8412C15.6844 55.2648 16.008 55.5821 16.4092 55.5821C16.8103 55.5821 17.1296 55.2648 17.1665 54.8412L18.4559 41.179L17.1665 27.0522C17.1296 26.6326 16.8062 26.3112 16.4092 26.3112C16.0121 26.3112 15.6823 26.6306 15.6516 27.0563ZM10.6514 27.4308C10.6514 27.4329 9.44385 41.177 9.44385 41.177L10.6514 54.4195C10.6882 54.788 10.9585 55.0337 11.2982 55.0337C11.638 55.0337 11.9042 54.7676 11.9431 54.3992L13.3103 41.1565L11.9451 27.4103C11.9042 27.0419 11.6319 26.7758 11.2982 26.7758C10.9646 26.7758 10.6841 27.0419 10.6514 27.4103M20.6929 28.0592L19.6205 41.1585L20.6929 54.9334C20.7256 55.4184 21.0942 55.7888 21.5588 55.7888C22.0235 55.7888 22.3898 55.4204 22.4246 54.9354L23.6423 41.1606L22.4246 28.0531C22.3877 27.5721 22.0194 27.2057 21.5588 27.2057C21.0983 27.2057 20.7236 27.57 20.6929 28.0592ZM5.69409 29.5738C5.69409 29.5758 4.4251 41.1585 4.4251 41.1585L5.69409 52.4894C5.73093 52.7924 5.9603 53.0094 6.23252 53.0094C6.50474 53.0094 6.72376 52.7965 6.7647 52.4916L8.20559 41.1585L6.7647 29.5738C6.71762 29.2668 6.49869 29.0539 6.22852 29.0539C5.95835 29.0539 5.72693 29.2729 5.69009 29.5738M0.941686 33.9948L0 41.1585L0.941686 48.1994C0.978528 48.4962 1.19125 48.705 1.45938 48.705C1.7275 48.705 1.93013 48.4962 1.97107 48.2015L3.08865 41.1565L1.97107 33.9928C1.93013 33.698 1.71727 33.4913 1.45938 33.4913C1.20148 33.4913 0.976481 33.7 0.941686 33.9948Z",
45526
45706
  fill: "var(--text-color)"
45527
45707
  })
45528
45708
  })
45529
45709
  }
45530
45710
  ];
45531
- return /* @__PURE__ */ jsxs48(Fragment15, {
45711
+ return /* @__PURE__ */ jsxs48(Fragment16, {
45532
45712
  children: [
45533
- /* @__PURE__ */ jsx126("h3", {
45713
+ /* @__PURE__ */ jsx121("h3", {
45534
45714
  className: "text-center mt-20 mb-10",
45535
45715
  children: "Trusted by"
45536
45716
  }),
45537
- /* @__PURE__ */ jsx126("div", {
45717
+ /* @__PURE__ */ jsx121("div", {
45538
45718
  className: "text-center flex flex-col lg:flex-row flex-nowrap justify-center items-center gap-10 mb-20",
45539
- children: logos.map((logo) => /* @__PURE__ */ jsx126("a", {
45719
+ children: logos.map((logo) => /* @__PURE__ */ jsx121("a", {
45540
45720
  href: logo.url,
45541
45721
  target: "_blank",
45542
45722
  className: "opacity-80 hover:opacity-100 transition-opacity",
@@ -45549,7 +45729,151 @@ var TrustedByBanner = () => {
45549
45729
  var TrustedByBanner_default = TrustedByBanner;
45550
45730
 
45551
45731
  // src/components/homepage/VideoAppsShowcase.tsx
45552
- import { useRef as useRef63, useState as useState66 } from "react";
45732
+ import { useRef as useRef65, useState as useState66 } from "react";
45733
+
45734
+ // src/components/homepage/MuxVideo.tsx
45735
+ import Hls2 from "hls.js";
45736
+ import { forwardRef as forwardRef40, useEffect as useEffect66, useImperativeHandle as useImperativeHandle15, useRef as useRef63 } from "react";
45737
+
45738
+ // src/components/homepage/VideoPlayerWithControls.tsx
45739
+ import Hls from "hls.js";
45740
+ import"plyr/dist/plyr.css";
45741
+ import { forwardRef as forwardRef39, useCallback as useCallback56, useEffect as useEffect65, useRef as useRef61, useState as useState64 } from "react";
45742
+ import { jsx as jsx124 } from "react/jsx-runtime";
45743
+ var useCombinedRefs = function(...refs) {
45744
+ const targetRef = useRef61(null);
45745
+ useEffect65(() => {
45746
+ refs.forEach((ref) => {
45747
+ if (!ref)
45748
+ return;
45749
+ if (typeof ref === "function") {
45750
+ ref(targetRef.current);
45751
+ } else {
45752
+ ref.current = targetRef.current;
45753
+ }
45754
+ });
45755
+ }, [refs]);
45756
+ return targetRef;
45757
+ };
45758
+ var VideoPlayerWithControls = forwardRef39(({ playbackId, poster, currentTime, onLoaded, onError, onSize, autoPlay }, ref) => {
45759
+ const videoRef = useRef61(null);
45760
+ const metaRef = useCombinedRefs(ref, videoRef);
45761
+ const playerRef = useRef61(null);
45762
+ const [playerInitTime] = useState64(Date.now());
45763
+ const videoError = useCallback56((event) => onError(event), [onError]);
45764
+ const onImageLoad = useCallback56((event) => {
45765
+ const [w, h] = [event.target.width, event.target.height];
45766
+ if (w && h) {
45767
+ onSize({ width: w, height: h });
45768
+ onLoaded();
45769
+ } else {
45770
+ onLoaded();
45771
+ console.error("Error getting img dimensions", event);
45772
+ }
45773
+ }, [onLoaded, onSize]);
45774
+ useEffect65(() => {
45775
+ const img = new Image;
45776
+ img.onload = (evt) => onImageLoad(evt);
45777
+ img.src = poster;
45778
+ }, [onImageLoad, poster]);
45779
+ useEffect65(() => {
45780
+ const video = videoRef.current;
45781
+ const src = `https://stream.mux.com/${playbackId}.m3u8`;
45782
+ let hls;
45783
+ hls = null;
45784
+ if (video) {
45785
+ video.addEventListener("error", videoError);
45786
+ const Plyr = __require("plyr");
45787
+ playerRef.current = new Plyr(video, {
45788
+ previewThumbnails: {
45789
+ enabled: true,
45790
+ src: `https://image.mux.com/${playbackId}/storyboard.vtt`
45791
+ },
45792
+ storage: { enabled: false },
45793
+ fullscreen: {
45794
+ iosNative: true
45795
+ },
45796
+ captions: { active: true, language: "auto", update: true }
45797
+ });
45798
+ if (video.canPlayType("application/vnd.apple.mpegurl")) {
45799
+ video.src = src;
45800
+ } else if (Hls.isSupported()) {
45801
+ hls = new Hls;
45802
+ hls.loadSource(src);
45803
+ hls.attachMedia(video);
45804
+ hls.on(Hls.Events.ERROR, (_event, data2) => {
45805
+ if (data2.fatal) {
45806
+ videoError(new ErrorEvent("HLS.js fatal error"));
45807
+ }
45808
+ });
45809
+ } else {
45810
+ console.error("This is an old browser that does not support MSE https://developer.mozilla.org/en-US/docs/Web/API/Media_Source_Extensions_API");
45811
+ }
45812
+ }
45813
+ return () => {
45814
+ if (video) {
45815
+ video.removeEventListener("error", videoError);
45816
+ }
45817
+ if (hls) {
45818
+ hls.destroy();
45819
+ }
45820
+ };
45821
+ }, [playbackId, playerInitTime, videoError, videoRef]);
45822
+ useEffect65(() => {
45823
+ const video = videoRef.current;
45824
+ if (currentTime && video) {
45825
+ video.currentTime = currentTime;
45826
+ }
45827
+ }, [currentTime]);
45828
+ return /* @__PURE__ */ jsx124("div", {
45829
+ className: "video-container",
45830
+ children: /* @__PURE__ */ jsx124("video", {
45831
+ ref: metaRef,
45832
+ autoPlay,
45833
+ poster,
45834
+ controls: true,
45835
+ playsInline: true
45836
+ })
45837
+ });
45838
+ });
45839
+
45840
+ // src/components/homepage/MuxVideo.tsx
45841
+ import { jsx as jsx126 } from "react/jsx-runtime";
45842
+ var getVideoToPlayUrl = (muxId) => {
45843
+ return `https://stream.mux.com/${muxId}.m3u8`;
45844
+ };
45845
+ var MuxVideoForward = ({ muxId, ...props }, ref) => {
45846
+ const videoRef = useRef63(null);
45847
+ const vidUrl = getVideoToPlayUrl(muxId);
45848
+ useImperativeHandle15(ref, () => videoRef.current, []);
45849
+ useEffect66(() => {
45850
+ let hls;
45851
+ if (videoRef.current) {
45852
+ const { current } = videoRef;
45853
+ if (current.canPlayType("application/vnd.apple.mpegurl")) {
45854
+ current.src = vidUrl;
45855
+ } else if (Hls2.isSupported()) {
45856
+ hls = new Hls2;
45857
+ hls.loadSource(vidUrl);
45858
+ hls.attachMedia(current);
45859
+ } else {
45860
+ console.error("This is a legacy browser that doesn't support MSE");
45861
+ }
45862
+ }
45863
+ return () => {
45864
+ if (hls) {
45865
+ hls.destroy();
45866
+ }
45867
+ };
45868
+ }, [vidUrl, videoRef]);
45869
+ return /* @__PURE__ */ jsx126("video", {
45870
+ ref: videoRef,
45871
+ ...props
45872
+ });
45873
+ };
45874
+ var MuxVideo = forwardRef40(MuxVideoForward);
45875
+
45876
+ // src/components/homepage/VideoAppsShowcase.tsx
45553
45877
  import { jsx as jsx127, jsxs as jsxs49 } from "react/jsx-runtime";
45554
45878
  var tabs = [
45555
45879
  "Music visualization",
@@ -45597,17 +45921,26 @@ var videoApps = [
45597
45921
  buttonText: "GitHub Unwrapped website"
45598
45922
  }
45599
45923
  ];
45600
- var icon5 = {
45924
+ var icon6 = {
45601
45925
  height: 16,
45602
45926
  marginLeft: 10
45603
45927
  };
45604
- var VideoAppsShowcase = () => {
45928
+ var Arrow5 = () => /* @__PURE__ */ jsx127("svg", {
45929
+ style: icon6,
45930
+ xmlns: "http://www.w3.org/2000/svg",
45931
+ viewBox: "0 0 448 512",
45932
+ children: /* @__PURE__ */ jsx127("path", {
45933
+ fill: "currentColor",
45934
+ 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"
45935
+ })
45936
+ });
45937
+ var BuiltWithRemotionShowcase = () => {
45605
45938
  const [activeTab, setActiveTab] = useState66(0);
45606
45939
  const [isMuted, setIsMuted] = useState66(true);
45607
45940
  const [isPlaying, setIsPlaying] = useState66(false);
45608
45941
  const [videoLoaded, setVideoLoaded] = useState66(false);
45609
- const videoRef = useRef63(null);
45610
- const containerRef = useRef63(null);
45942
+ const videoRef = useRef65(null);
45943
+ const containerRef = useRef65(null);
45611
45944
  const handleTabChange = (index2) => {
45612
45945
  const video = videoRef.current;
45613
45946
  if (video) {
@@ -45652,14 +45985,14 @@ var VideoAppsShowcase = () => {
45652
45985
  ref: containerRef,
45653
45986
  children: [
45654
45987
  /* @__PURE__ */ jsx127(SectionTitle, {
45655
- children: "Use Cases"
45988
+ children: "Built with Remotion"
45656
45989
  }),
45657
45990
  /* @__PURE__ */ jsx127("div", {
45658
- className: "grid justify-center grid-flow-col grid-rows-1 gap-2.5 justify-self-center mb-4 w-[90vw] md:w-auto -mt-4",
45991
+ className: "flex flex-wrap justify-center gap-x-8 gap-y-3 mb-6 mt-1",
45659
45992
  children: tabs.map((tab, index2) => /* @__PURE__ */ jsx127("button", {
45660
45993
  type: "button",
45661
45994
  "data-active": index2 === activeTab,
45662
- className: `bg-transparent border-none m-0 p-0 lg:mx-3 my-4 cursor-pointer text-base fontbrand font-bold transition-colors text-muted data-[active=true]:text-brand`,
45995
+ className: `bg-transparent border-none m-0 p-0 cursor-pointer text-sm fontbrand font-bold transition-colors text-muted data-[active=true]:text-brand`,
45663
45996
  onClick: () => handleTabChange(index2),
45664
45997
  children: tab
45665
45998
  }, tab))
@@ -45668,10 +46001,10 @@ var VideoAppsShowcase = () => {
45668
46001
  className: "card flex p-0 overflow-hidden",
45669
46002
  "data-nosnippet": true,
45670
46003
  children: /* @__PURE__ */ jsxs49("div", {
45671
- className: "flex-1 flex flex-col lg:flex-row justify-center",
46004
+ className: "flex-1 grid grid-cols-1 lg:grid-cols-2",
45672
46005
  children: [
45673
46006
  /* @__PURE__ */ jsxs49("div", {
45674
- className: "w-full max-w-[500px] aspect-square relative overflow-hidden bg-[#eee] cursor-pointer",
46007
+ className: "w-full aspect-video lg:aspect-square relative overflow-hidden bg-[#eee] cursor-pointer",
45675
46008
  onClick: handlePlayPause,
45676
46009
  children: [
45677
46010
  videoLoaded ? /* @__PURE__ */ jsx127(MuxVideo, {
@@ -45735,14 +46068,14 @@ var VideoAppsShowcase = () => {
45735
46068
  ]
45736
46069
  }),
45737
46070
  /* @__PURE__ */ jsxs49("div", {
45738
- className: "p-6 flex-1 flex flex-col h-full",
46071
+ className: "p-6 lg:p-10 flex min-w-0 flex-col justify-center",
45739
46072
  children: [
45740
46073
  /* @__PURE__ */ jsx127("div", {
45741
- className: "text-4xl font-bold fontbrand mt-0",
46074
+ className: "text-3xl font-bold fontbrand mt-0",
45742
46075
  children: videoApps[activeTab].title
45743
46076
  }),
45744
46077
  /* @__PURE__ */ jsx127("div", {
45745
- className: "text-muted mt-4 text-base fontbrand",
46078
+ className: "text-muted mt-3 text-base fontbrand leading-relaxed",
45746
46079
  children: videoApps[activeTab].description
45747
46080
  }),
45748
46081
  videoApps[activeTab].additionalInfo ? /* @__PURE__ */ jsx127("div", {
@@ -45757,15 +46090,7 @@ var VideoAppsShowcase = () => {
45757
46090
  href: videoApps[activeTab].link,
45758
46091
  children: [
45759
46092
  videoApps[activeTab].buttonText,
45760
- /* @__PURE__ */ jsx127("svg", {
45761
- style: icon5,
45762
- xmlns: "http://www.w3.org/2000/svg",
45763
- viewBox: "0 0 448 512",
45764
- children: /* @__PURE__ */ jsx127("path", {
45765
- fill: "currentColor",
45766
- 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"
45767
- })
45768
- })
46093
+ /* @__PURE__ */ jsx127(Arrow5, {})
45769
46094
  ]
45770
46095
  })
45771
46096
  ]
@@ -45784,7 +46109,7 @@ var VideoAppsShowcase = () => {
45784
46109
  fontFamily: "GTPlanar"
45785
46110
  },
45786
46111
  children: [
45787
- "For more examples see our",
46112
+ "For more examples of products and workflows, see our",
45788
46113
  " ",
45789
46114
  /* @__PURE__ */ jsx127("a", {
45790
46115
  href: "/showcase",
@@ -45798,7 +46123,6 @@ var VideoAppsShowcase = () => {
45798
46123
  ]
45799
46124
  });
45800
46125
  };
45801
- var VideoAppsShowcase_default = VideoAppsShowcase;
45802
46126
 
45803
46127
  // ../create-video/dist/esm/index.mjs
45804
46128
  var listOfRemotionPackages = [
@@ -47017,7 +47341,7 @@ var useMobileLayout = () => {
47017
47341
 
47018
47342
  // src/components/homepage/MoreTemplatesButton.tsx
47019
47343
  import { jsx as jsx158, jsxs as jsxs60 } from "react/jsx-runtime";
47020
- var icon6 = {
47344
+ var icon7 = {
47021
47345
  height: 16,
47022
47346
  marginLeft: 10
47023
47347
  };
@@ -47029,7 +47353,7 @@ var MoreTemplatesButton = () => {
47029
47353
  children: [
47030
47354
  mobileLayout ? "Templates" : "Find a template",
47031
47355
  /* @__PURE__ */ jsx158("svg", {
47032
- style: icon6,
47356
+ style: icon7,
47033
47357
  xmlns: "http://www.w3.org/2000/svg",
47034
47358
  viewBox: "0 0 448 512",
47035
47359
  children: /* @__PURE__ */ jsx158("path", {
@@ -47043,7 +47367,7 @@ var MoreTemplatesButton = () => {
47043
47367
 
47044
47368
  // src/components/homepage/TemplateIcon.tsx
47045
47369
  import { jsx as jsx159, jsxs as jsxs61 } from "react/jsx-runtime";
47046
- var icon7 = {
47370
+ var icon8 = {
47047
47371
  display: "flex",
47048
47372
  width: 36,
47049
47373
  height: 36,
@@ -47067,7 +47391,7 @@ var TemplateIcon = ({ children, label: label3 }) => {
47067
47391
  style: outer,
47068
47392
  children: [
47069
47393
  /* @__PURE__ */ jsx159("div", {
47070
- style: icon7,
47394
+ style: icon8,
47071
47395
  children
47072
47396
  }),
47073
47397
  mobileLayout ? null : /* @__PURE__ */ jsx159("div", {
@@ -47318,13 +47642,20 @@ var NewLanding = ({ colorMode, setColorMode }) => {
47318
47642
  /* @__PURE__ */ jsx167("br", {}),
47319
47643
  /* @__PURE__ */ jsx167("br", {}),
47320
47644
  /* @__PURE__ */ jsx167("br", {}),
47321
- /* @__PURE__ */ jsx167(VideoAppsShowcase_default, {}),
47645
+ /* @__PURE__ */ jsx167("div", {
47646
+ className: "pt-6 md:pt-8",
47647
+ children: /* @__PURE__ */ jsx167(AutomationsSection_default, {})
47648
+ }),
47322
47649
  /* @__PURE__ */ jsx167("br", {}),
47323
47650
  /* @__PURE__ */ jsx167("br", {}),
47324
47651
  /* @__PURE__ */ jsx167(Demo, {}),
47325
47652
  /* @__PURE__ */ jsx167("br", {}),
47326
47653
  /* @__PURE__ */ jsx167("br", {}),
47327
47654
  /* @__PURE__ */ jsx167("br", {}),
47655
+ /* @__PURE__ */ jsx167(BuiltWithRemotionShowcase, {}),
47656
+ /* @__PURE__ */ jsx167("br", {}),
47657
+ /* @__PURE__ */ jsx167("br", {}),
47658
+ /* @__PURE__ */ jsx167("br", {}),
47328
47659
  /* @__PURE__ */ jsx167(SectionTitle, {
47329
47660
  children: "Pricing"
47330
47661
  }),
@@ -47339,10 +47670,6 @@ var NewLanding = ({ colorMode, setColorMode }) => {
47339
47670
  /* @__PURE__ */ jsx167("br", {}),
47340
47671
  /* @__PURE__ */ jsx167("br", {}),
47341
47672
  /* @__PURE__ */ jsx167("br", {}),
47342
- /* @__PURE__ */ jsx167(EditorStarterSection_default, {}),
47343
- /* @__PURE__ */ jsx167("br", {}),
47344
- /* @__PURE__ */ jsx167("br", {}),
47345
- /* @__PURE__ */ jsx167("br", {}),
47346
47673
  /* @__PURE__ */ jsx167("br", {}),
47347
47674
  /* @__PURE__ */ jsx167(NewsletterButton, {}),
47348
47675
  /* @__PURE__ */ jsx167("br", {}),