@remotion/promo-pages 4.0.269 → 4.0.271

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.
@@ -1,6 +1,6 @@
1
1
 
2
2
  
3
- > @remotion/promo-pages@4.0.269 make /Users/jonathanburger/remotion/packages/promo-pages
3
+ > @remotion/promo-pages@4.0.271 make /Users/jonathanburger/remotion/packages/promo-pages
4
4
  > bun --env-file=../.env.bundle bundle.ts
5
5
 
6
6
  ≈ tailwindcss v4.0.0
package/bundle.ts CHANGED
@@ -26,6 +26,7 @@ const result = await Bun.build({
26
26
  entrypoints: [
27
27
  './src/components/Homepage.tsx',
28
28
  './src/components/homepage/Pricing.tsx',
29
+ './src/components/Ai.tsx',
29
30
  ],
30
31
  format: 'esm',
31
32
  external: [
package/dist/Ai.js ADDED
@@ -0,0 +1,40 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __export = (target, all) => {
3
+ for (var name in all)
4
+ __defProp(target, name, {
5
+ get: all[name],
6
+ enumerable: true,
7
+ configurable: true,
8
+ set: (newValue) => all[name] = () => newValue
9
+ });
10
+ };
11
+ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
12
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
13
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
14
+ }) : x)(function(x) {
15
+ if (typeof require !== "undefined")
16
+ return require.apply(this, arguments);
17
+ throw Error('Dynamic require of "' + x + '" is not supported');
18
+ });
19
+
20
+ // src/components/Ai.tsx
21
+ import { useCallback } from "react";
22
+ import { jsx } from "react/jsx-runtime";
23
+ var AskAi = () => {
24
+ const click = useCallback(() => {
25
+ window.crawlchatEmbed.show();
26
+ }, []);
27
+ return /* @__PURE__ */ jsx("button", {
28
+ type: "button",
29
+ onClick: click,
30
+ style: {
31
+ backgroundColor: "#282A36",
32
+ cursor: "pointer"
33
+ },
34
+ className: "rounded-full text-white fixed z-10 bottom-8 right-8 fontbrand appearance-none border-none px-4 py-2 font-medium text-sm",
35
+ children: "Ask AI"
36
+ });
37
+ };
38
+ export {
39
+ AskAi
40
+ };
package/dist/Homepage.js CHANGED
@@ -727,7 +727,7 @@ var __defProp2, __export2 = (target, all) => {
727
727
  });
728
728
  }, useIsPlayer = () => {
729
729
  return useContext(IsPlayerContext);
730
- }, VERSION = "4.0.269", checkMultipleRemotionVersions = () => {
730
+ }, VERSION = "4.0.271", checkMultipleRemotionVersions = () => {
731
731
  if (typeof globalThis === "undefined") {
732
732
  return;
733
733
  }
@@ -4084,17 +4084,12 @@ Check that all your Remotion packages are on the same version. If your dependenc
4084
4084
  return _portalNode;
4085
4085
  }, useLazyComponent = ({
4086
4086
  compProps,
4087
- componentName
4087
+ componentName,
4088
+ noSuspense
4088
4089
  }) => {
4089
4090
  const lazy = useMemo222(() => {
4090
- if ("lazyComponent" in compProps && typeof compProps.lazyComponent !== "undefined") {
4091
- if (typeof compProps.lazyComponent === "undefined") {
4092
- throw new Error(`A value of \`undefined\` was passed to the \`lazyComponent\` prop. Check the value you are passing to the <${componentName}/> component.`);
4093
- }
4094
- return React18.lazy(compProps.lazyComponent);
4095
- }
4096
4091
  if ("component" in compProps) {
4097
- if (typeof document === "undefined") {
4092
+ if (typeof document === "undefined" || noSuspense) {
4098
4093
  return compProps.component;
4099
4094
  }
4100
4095
  if (typeof compProps.component === "undefined") {
@@ -4102,6 +4097,12 @@ Check that all your Remotion packages are on the same version. If your dependenc
4102
4097
  }
4103
4098
  return React18.lazy(() => Promise.resolve({ default: compProps.component }));
4104
4099
  }
4100
+ if ("lazyComponent" in compProps && typeof compProps.lazyComponent !== "undefined") {
4101
+ if (typeof compProps.lazyComponent === "undefined") {
4102
+ throw new Error(`A value of \`undefined\` was passed to the \`lazyComponent\` prop. Check the value you are passing to the <${componentName}/> component.`);
4103
+ }
4104
+ return React18.lazy(compProps.lazyComponent);
4105
+ }
4105
4106
  throw new Error("You must pass either 'component' or 'lazyComponent'");
4106
4107
  }, [compProps.component, compProps.lazyComponent]);
4107
4108
  return lazy;
@@ -4139,7 +4140,8 @@ Check that all your Remotion packages are on the same version. If your dependenc
4139
4140
  const video = useVideo();
4140
4141
  const lazy = useLazyComponent({
4141
4142
  compProps,
4142
- componentName: "Composition"
4143
+ componentName: "Composition",
4144
+ noSuspense: false
4143
4145
  });
4144
4146
  const nonce = useNonce();
4145
4147
  const isPlayer = useIsPlayer();
@@ -12754,15 +12756,21 @@ var useElementSize = (ref, options) => {
12754
12756
  const probableCssParentScale = contentRect.width === 0 ? 1 : newSize[0].width / contentRect.width;
12755
12757
  const width = options.shouldApplyCssTransforms ? newSize[0].width : newSize[0].width * (1 / probableCssParentScale);
12756
12758
  const height = options.shouldApplyCssTransforms ? newSize[0].height : newSize[0].height * (1 / probableCssParentScale);
12757
- setSize({
12758
- width,
12759
- height,
12760
- left: newSize[0].x,
12761
- top: newSize[0].y,
12762
- windowSize: {
12763
- height: window.innerHeight,
12764
- width: window.innerWidth
12759
+ setSize((prevState) => {
12760
+ const isSame = prevState && prevState.width === width && prevState.height === height && prevState.left === newSize[0].x && prevState.top === newSize[0].y && prevState.windowSize.height === window.innerHeight && prevState.windowSize.width === window.innerWidth;
12761
+ if (isSame) {
12762
+ return prevState;
12765
12763
  }
12764
+ return {
12765
+ width,
12766
+ height,
12767
+ left: newSize[0].x,
12768
+ top: newSize[0].y,
12769
+ windowSize: {
12770
+ height: window.innerHeight,
12771
+ width: window.innerWidth
12772
+ }
12773
+ };
12766
12774
  });
12767
12775
  });
12768
12776
  }, [options.shouldApplyCssTransforms]);
@@ -13974,7 +13982,8 @@ var PlayerUI = ({
13974
13982
  hideControlsWhenPointerDoesntMove,
13975
13983
  overflowVisible,
13976
13984
  browserMediaControlsBehavior,
13977
- overrideInternalClassName
13985
+ overrideInternalClassName,
13986
+ noSuspense
13978
13987
  }, ref) => {
13979
13988
  const config = Internals.useUnsafeVideoConfig();
13980
13989
  const video = Internals.useVideo();
@@ -14393,7 +14402,7 @@ var PlayerUI = ({
14393
14402
  }) : null
14394
14403
  ]
14395
14404
  });
14396
- if (IS_NODE && !doesReactVersionSupportSuspense) {
14405
+ if (noSuspense || IS_NODE && !doesReactVersionSupportSuspense) {
14397
14406
  return /* @__PURE__ */ jsx122("div", {
14398
14407
  ref: container4,
14399
14408
  style: outerStyle,
@@ -14696,6 +14705,7 @@ var PlayerFn = ({
14696
14705
  browserMediaControlsBehavior: passedBrowserMediaControlsBehavior,
14697
14706
  overrideInternalClassName,
14698
14707
  logLevel = "info",
14708
+ noSuspense,
14699
14709
  acknowledgeRemotionLicense,
14700
14710
  ...componentProps
14701
14711
  }, ref) => {
@@ -14717,7 +14727,8 @@ var PlayerFn = ({
14717
14727
  useState132(() => acknowledgeRemotionLicenseMessage(Boolean(acknowledgeRemotionLicense), logLevel));
14718
14728
  const component = Internals.useLazyComponent({
14719
14729
  compProps: componentProps,
14720
- componentName: "Player"
14730
+ componentName: "Player",
14731
+ noSuspense: Boolean(noSuspense)
14721
14732
  });
14722
14733
  validateInitialFrame({ initialFrame, durationInFrames });
14723
14734
  const [frame, setFrame] = useState132(() => ({
@@ -14869,7 +14880,8 @@ var PlayerFn = ({
14869
14880
  hideControlsWhenPointerDoesntMove,
14870
14881
  overflowVisible,
14871
14882
  browserMediaControlsBehavior,
14872
- overrideInternalClassName: overrideInternalClassName ?? undefined
14883
+ overrideInternalClassName: overrideInternalClassName ?? undefined,
14884
+ noSuspense: Boolean(noSuspense)
14873
14885
  })
14874
14886
  })
14875
14887
  })
@@ -14902,6 +14914,7 @@ var ThumbnailUI = ({
14902
14914
  renderLoading,
14903
14915
  className: className2,
14904
14916
  overflowVisible,
14917
+ noSuspense,
14905
14918
  overrideInternalClassName
14906
14919
  }, ref) => {
14907
14920
  const config = Internals.useUnsafeVideoConfig();
@@ -14991,7 +15004,7 @@ var ThumbnailUI = ({
14991
15004
  }) : null
14992
15005
  })
14993
15006
  });
14994
- if (IS_NODE && !doesReactVersionSupportSuspense2) {
15007
+ if (noSuspense || IS_NODE && !doesReactVersionSupportSuspense2) {
14995
15008
  return /* @__PURE__ */ jsx152("div", {
14996
15009
  ref: container4,
14997
15010
  style: outerStyle,
@@ -15024,6 +15037,7 @@ var ThumbnailFn = ({
15024
15037
  overflowVisible = false,
15025
15038
  overrideInternalClassName,
15026
15039
  logLevel = "info",
15040
+ noSuspense,
15027
15041
  ...componentProps
15028
15042
  }, ref) => {
15029
15043
  if (typeof window !== "undefined") {
@@ -15054,7 +15068,8 @@ var ThumbnailFn = ({
15054
15068
  useImperativeHandle42(ref, () => rootRef.current, []);
15055
15069
  const Component = Internals.useLazyComponent({
15056
15070
  compProps: componentProps,
15057
- componentName: "Thumbnail"
15071
+ componentName: "Thumbnail",
15072
+ noSuspense: Boolean(noSuspense)
15058
15073
  });
15059
15074
  const [emitter] = useState142(() => new ThumbnailEmitter);
15060
15075
  const passedInputProps = useMemo172(() => {
@@ -15081,7 +15096,8 @@ var ThumbnailFn = ({
15081
15096
  renderLoading,
15082
15097
  style: style2,
15083
15098
  overflowVisible,
15084
- overrideInternalClassName
15099
+ overrideInternalClassName,
15100
+ noSuspense: Boolean(noSuspense)
15085
15101
  })
15086
15102
  })
15087
15103
  })
@@ -19855,7 +19871,7 @@ var FEATURED_TEMPLATES = [
19855
19871
  cliId: "blank",
19856
19872
  type: "video",
19857
19873
  defaultBranch: "main",
19858
- featuredOnHomePage: "Blank",
19874
+ featuredOnHomePage: null,
19859
19875
  previewURL: "https://template-empty.vercel.app/?/MyComp",
19860
19876
  templateInMonorepo: "template-blank",
19861
19877
  allowEnableTailwind: true
@@ -19881,23 +19897,23 @@ var FEATURED_TEMPLATES = [
19881
19897
  allowEnableTailwind: true
19882
19898
  },
19883
19899
  {
19884
- homePageLabel: "Remix",
19885
- shortName: "Remix",
19900
+ homePageLabel: "React Router 7",
19901
+ shortName: "React Router",
19886
19902
  org: "remotion-dev",
19887
- repoName: "template-remix",
19888
- description: "Remotion + Remix Starter Kit",
19889
- longerDescription: "A software-as-a-service starter kit which has the Remotion Player and rendering via Remotion Lambda built-in. Built with remix.run.",
19903
+ repoName: "template-react-router",
19904
+ description: "SaaS template for video generation apps",
19905
+ longerDescription: "A software-as-a-service starter kit which has the Remotion Player and rendering via Remotion Lambda built-in. Built with React Router 7.",
19890
19906
  promoBanner: {
19891
- width: 1280,
19907
+ width: 918,
19892
19908
  height: 720,
19893
19909
  src: "/img/remix-template.png"
19894
19910
  },
19895
- cliId: "remix",
19911
+ cliId: "react-router",
19896
19912
  type: "image",
19897
19913
  defaultBranch: "main",
19898
- featuredOnHomePage: null,
19914
+ featuredOnHomePage: "React Router",
19899
19915
  previewURL: null,
19900
- templateInMonorepo: "template-remix",
19916
+ templateInMonorepo: "template-react-router",
19901
19917
  allowEnableTailwind: false
19902
19918
  },
19903
19919
  {
@@ -20303,24 +20319,27 @@ var OverlayIcon = (props) => {
20303
20319
 
20304
20320
  // src/components/icons/remix.tsx
20305
20321
  import { jsx as jsx113, jsxs as jsxs50 } from "react/jsx-runtime";
20306
- var RemixIcon = (props) => {
20307
- return /* @__PURE__ */ jsxs50("svg", {
20308
- viewBox: "0 0 800 800",
20309
- fill: "none",
20322
+ var ReactRouterIcon = (props) => {
20323
+ return /* @__PURE__ */ jsx113("svg", {
20310
20324
  xmlns: "http://www.w3.org/2000/svg",
20325
+ width: "800px",
20326
+ height: "800px",
20327
+ viewBox: "0 -58 256 256",
20328
+ version: "1.1",
20329
+ preserveAspectRatio: "xMidYMid",
20311
20330
  ...props,
20312
- children: [
20313
- /* @__PURE__ */ jsx113("path", {
20314
- fillRule: "evenodd",
20315
- clipRule: "evenodd",
20316
- d: "M621.609 552.632C626.649 617.449 626.649 647.833 626.649 681H476.823C476.823 673.776 476.952 667.167 477.082 660.466C477.488 639.634 477.911 617.911 474.538 574.041C470.082 509.814 442.451 495.543 391.645 495.543H346.633H156V378.687H398.776C462.951 378.687 495.04 359.146 495.04 307.408C495.04 261.915 462.951 234.347 398.776 234.347H156V120H425.516C570.802 120 643 188.686 643 298.405C643 380.471 592.194 433.993 523.562 442.913C581.498 454.509 615.369 487.514 621.609 552.632Z",
20317
- fill: "currentcolor"
20318
- }),
20319
- /* @__PURE__ */ jsx113("path", {
20320
- d: "M156 681V593H313.899C340.273 593 346 612.845 346 624.68V681H156Z",
20321
- fill: "currentcolor"
20322
- })
20323
- ]
20331
+ children: /* @__PURE__ */ jsxs50("g", {
20332
+ children: [
20333
+ /* @__PURE__ */ jsx113("path", {
20334
+ d: "M78.0659341,92.5875806 C90.8837956,92.5875806 101.274726,82.1966508 101.274726,69.3787894 C101.274726,56.5609279 90.8837956,46.1699982 78.0659341,46.1699982 C65.2480726,46.1699982 54.8571429,56.5609279 54.8571429,69.3787894 C54.8571429,82.1966508 65.2480726,92.5875806 78.0659341,92.5875806 Z M23.2087913,139.005163 C36.0266526,139.005163 46.4175825,128.614233 46.4175825,115.796372 C46.4175825,102.97851 36.0266526,92.5875806 23.2087913,92.5875806 C10.3909298,92.5875806 0,102.97851 0,115.796372 C0,128.614233 10.3909298,139.005163 23.2087913,139.005163 Z M232.791209,139.005163 C245.60907,139.005163 256,128.614233 256,115.796372 C256,102.97851 245.60907,92.5875806 232.791209,92.5875806 C219.973347,92.5875806 209.582418,102.97851 209.582418,115.796372 C209.582418,128.614233 219.973347,139.005163 232.791209,139.005163 Z",
20335
+ fill: "currentcolor"
20336
+ }),
20337
+ /* @__PURE__ */ jsx113("path", {
20338
+ d: "M156.565464,70.3568084 C155.823426,62.6028163 155.445577,56.1490255 149.505494,51.6131676 C141.982638,45.8687002 133.461166,49.5960243 122.964463,45.8072968 C112.650326,43.3121427 105,34.1545727 105,23.2394367 C105,10.4046502 115.577888,0 128.626373,0 C138.29063,0 146.599638,5.70747659 150.259573,13.8825477 C155.861013,24.5221258 152.220489,35.3500418 159.258242,40.8041273 C167.591489,47.2621895 178.826167,42.5329154 191.362109,48.6517412 C195.390112,50.5026944 198.799584,53.4384578 201.202056,57.0769224 C203.604528,60.7153869 205,65.0565524 205,69.7183101 C205,80.633446 197.349674,89.7910161 187.035538,92.2861702 C176.538834,96.0748977 168.017363,92.3475736 160.494506,98.092041 C152.03503,104.551712 156.563892,115.358642 149.669352,126.774447 C145.756163,134.291567 137.802119,139.43662 128.626373,139.43662 C115.577888,139.43662 105,129.03197 105,116.197184 C105,106.873668 110.581887,98.832521 118.637891,95.1306146 C131.173833,89.0117889 142.408511,93.7410629 150.741758,87.2830007 C155.549106,83.5574243 156.565464,77.8102648 156.565464,70.3568084 Z",
20339
+ fill: "currentcolor"
20340
+ })
20341
+ ]
20342
+ })
20324
20343
  });
20325
20344
  };
20326
20345
 
@@ -20489,8 +20508,8 @@ var IconForTemplate = ({ template, scale: scale4 = 1 }) => {
20489
20508
  }
20490
20509
  });
20491
20510
  }
20492
- if (template.cliId === "remix") {
20493
- return /* @__PURE__ */ jsx123(RemixIcon, {
20511
+ if (template.cliId === "react-router") {
20512
+ return /* @__PURE__ */ jsx123(ReactRouterIcon, {
20494
20513
  style: {
20495
20514
  height: scale4 * 32
20496
20515
  }
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const AskAi: React.FC;
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useCallback } from 'react';
3
+ export const AskAi = () => {
4
+ const click = useCallback(() => {
5
+ // @ts-expect-error
6
+ window.crawlchatEmbed.show();
7
+ }, []);
8
+ return (_jsx("button", { type: "button", onClick: click, style: {
9
+ backgroundColor: '#282A36',
10
+ cursor: 'pointer',
11
+ }, className: "rounded-full text-white fixed z-10 bottom-8 right-8 fontbrand appearance-none border-none px-4 py-2 font-medium text-sm", children: "Ask AI" }));
12
+ };
@@ -1,4 +1,4 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export const RemixIcon = (props) => {
3
- return (_jsxs("svg", { viewBox: "0 0 800 800", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [_jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M621.609 552.632C626.649 617.449 626.649 647.833 626.649 681H476.823C476.823 673.776 476.952 667.167 477.082 660.466C477.488 639.634 477.911 617.911 474.538 574.041C470.082 509.814 442.451 495.543 391.645 495.543H346.633H156V378.687H398.776C462.951 378.687 495.04 359.146 495.04 307.408C495.04 261.915 462.951 234.347 398.776 234.347H156V120H425.516C570.802 120 643 188.686 643 298.405C643 380.471 592.194 433.993 523.562 442.913C581.498 454.509 615.369 487.514 621.609 552.632Z", fill: "currentcolor" }), _jsx("path", { d: "M156 681V593H313.899C340.273 593 346 612.845 346 624.68V681H156Z", fill: "currentcolor" })] }));
2
+ export const ReactRouterIcon = (props) => {
3
+ return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "800px", height: "800px", viewBox: "0 -58 256 256", version: "1.1", preserveAspectRatio: "xMidYMid", ...props, children: _jsxs("g", { children: [_jsx("path", { d: "M78.0659341,92.5875806 C90.8837956,92.5875806 101.274726,82.1966508 101.274726,69.3787894 C101.274726,56.5609279 90.8837956,46.1699982 78.0659341,46.1699982 C65.2480726,46.1699982 54.8571429,56.5609279 54.8571429,69.3787894 C54.8571429,82.1966508 65.2480726,92.5875806 78.0659341,92.5875806 Z M23.2087913,139.005163 C36.0266526,139.005163 46.4175825,128.614233 46.4175825,115.796372 C46.4175825,102.97851 36.0266526,92.5875806 23.2087913,92.5875806 C10.3909298,92.5875806 0,102.97851 0,115.796372 C0,128.614233 10.3909298,139.005163 23.2087913,139.005163 Z M232.791209,139.005163 C245.60907,139.005163 256,128.614233 256,115.796372 C256,102.97851 245.60907,92.5875806 232.791209,92.5875806 C219.973347,92.5875806 209.582418,102.97851 209.582418,115.796372 C209.582418,128.614233 219.973347,139.005163 232.791209,139.005163 Z", fill: "currentcolor" }), _jsx("path", { d: "M156.565464,70.3568084 C155.823426,62.6028163 155.445577,56.1490255 149.505494,51.6131676 C141.982638,45.8687002 133.461166,49.5960243 122.964463,45.8072968 C112.650326,43.3121427 105,34.1545727 105,23.2394367 C105,10.4046502 115.577888,0 128.626373,0 C138.29063,0 146.599638,5.70747659 150.259573,13.8825477 C155.861013,24.5221258 152.220489,35.3500418 159.258242,40.8041273 C167.591489,47.2621895 178.826167,42.5329154 191.362109,48.6517412 C195.390112,50.5026944 198.799584,53.4384578 201.202056,57.0769224 C203.604528,60.7153869 205,65.0565524 205,69.7183101 C205,80.633446 197.349674,89.7910161 187.035538,92.2861702 C176.538834,96.0748977 168.017363,92.3475736 160.494506,98.092041 C152.03503,104.551712 156.563892,115.358642 149.669352,126.774447 C145.756163,134.291567 137.802119,139.43662 128.626373,139.43662 C115.577888,139.43662 105,129.03197 105,116.197184 C105,106.873668 110.581887,98.832521 118.637891,95.1306146 C131.173833,89.0117889 142.408511,93.7410629 150.741758,87.2830007 C155.549106,83.5574243 156.565464,77.8102648 156.565464,70.3568084 Z", fill: "currentcolor" })] }) }));
4
4
  };
package/dist/tailwind.css CHANGED
@@ -419,6 +419,9 @@ body {
419
419
  .absolute {
420
420
  position: absolute;
421
421
  }
422
+ .fixed {
423
+ position: fixed;
424
+ }
422
425
  .relative {
423
426
  position: relative;
424
427
  }
@@ -434,9 +437,15 @@ body {
434
437
  .right-2\.5 {
435
438
  right: calc(var(--spacing) * 2.5);
436
439
  }
440
+ .right-8 {
441
+ right: calc(var(--spacing) * 8);
442
+ }
437
443
  .bottom-2\.5 {
438
444
  bottom: calc(var(--spacing) * 2.5);
439
445
  }
446
+ .bottom-8 {
447
+ bottom: calc(var(--spacing) * 8);
448
+ }
440
449
  .bottom-full {
441
450
  bottom: 100%;
442
451
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remotion/promo-pages",
3
- "version": "4.0.269",
3
+ "version": "4.0.271",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -10,14 +10,14 @@
10
10
  "polished": "4.3.1",
11
11
  "vite": "^5.4.12",
12
12
  "zod": "3.22.3",
13
- "@remotion/animated-emoji": "4.0.269",
14
- "@remotion/lottie": "4.0.269",
15
- "@remotion/paths": "4.0.269",
16
- "@remotion/lambda": "4.0.269",
17
- "@remotion/shapes": "4.0.269",
18
- "create-video": "4.0.269",
19
- "remotion": "4.0.269",
20
- "@remotion/player": "4.0.269"
13
+ "@remotion/animated-emoji": "4.0.271",
14
+ "@remotion/lottie": "4.0.271",
15
+ "@remotion/lambda": "4.0.271",
16
+ "@remotion/paths": "4.0.271",
17
+ "@remotion/player": "4.0.271",
18
+ "@remotion/shapes": "4.0.271",
19
+ "remotion": "4.0.271",
20
+ "create-video": "4.0.271"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@eslint/eslintrc": "3.1.0",
@@ -36,7 +36,7 @@
36
36
  "tailwind-merge": "2.5.2",
37
37
  "bun-plugin-tailwind": "0.0.13",
38
38
  "clsx": "2.1.1",
39
- "@remotion/eslint-config-internal": "4.0.269"
39
+ "@remotion/eslint-config-internal": "4.0.271"
40
40
  },
41
41
  "repository": {
42
42
  "url": "https://github.com/remotion-dev/remotion/tree/main/packages/promo-pages"
@@ -0,0 +1,22 @@
1
+ import React, {useCallback} from 'react';
2
+
3
+ export const AskAi: React.FC = () => {
4
+ const click = useCallback(() => {
5
+ // @ts-expect-error
6
+ window.crawlchatEmbed.show();
7
+ }, []);
8
+
9
+ return (
10
+ <button
11
+ type="button"
12
+ onClick={click}
13
+ style={{
14
+ backgroundColor: '#282A36',
15
+ cursor: 'pointer',
16
+ }}
17
+ className="rounded-full text-white fixed z-10 bottom-8 right-8 fontbrand appearance-none border-none px-4 py-2 font-medium text-sm"
18
+ >
19
+ Ask AI
20
+ </button>
21
+ );
22
+ };
@@ -6,7 +6,7 @@ import {Cubes} from '../icons/cubes';
6
6
  import {JSIcon} from '../icons/js';
7
7
  import {NextIcon} from '../icons/next';
8
8
  import {OverlayIcon} from '../icons/overlay';
9
- import {RemixIcon} from '../icons/remix';
9
+ import {ReactRouterIcon} from '../icons/remix';
10
10
  import {SkiaIcon} from '../icons/skia';
11
11
  import {Stargazer} from '../icons/stargazer';
12
12
  import {StillIcon} from '../icons/still';
@@ -110,9 +110,9 @@ export const IconForTemplate: React.FC<{
110
110
  );
111
111
  }
112
112
 
113
- if (template.cliId === 'remix') {
113
+ if (template.cliId === 'react-router') {
114
114
  return (
115
- <RemixIcon
115
+ <ReactRouterIcon
116
116
  style={{
117
117
  height: scale * 32,
118
118
  }}
@@ -1,24 +1,27 @@
1
1
  import type {SVGProps} from 'react';
2
2
  import React from 'react';
3
3
 
4
- export const RemixIcon: React.FC<SVGProps<SVGSVGElement>> = (props) => {
4
+ export const ReactRouterIcon: React.FC<SVGProps<SVGSVGElement>> = (props) => {
5
5
  return (
6
6
  <svg
7
- viewBox="0 0 800 800"
8
- fill="none"
9
7
  xmlns="http://www.w3.org/2000/svg"
8
+ width="800px"
9
+ height="800px"
10
+ viewBox="0 -58 256 256"
11
+ version="1.1"
12
+ preserveAspectRatio="xMidYMid"
10
13
  {...props}
11
14
  >
12
- <path
13
- fillRule="evenodd"
14
- clipRule="evenodd"
15
- d="M621.609 552.632C626.649 617.449 626.649 647.833 626.649 681H476.823C476.823 673.776 476.952 667.167 477.082 660.466C477.488 639.634 477.911 617.911 474.538 574.041C470.082 509.814 442.451 495.543 391.645 495.543H346.633H156V378.687H398.776C462.951 378.687 495.04 359.146 495.04 307.408C495.04 261.915 462.951 234.347 398.776 234.347H156V120H425.516C570.802 120 643 188.686 643 298.405C643 380.471 592.194 433.993 523.562 442.913C581.498 454.509 615.369 487.514 621.609 552.632Z"
16
- fill="currentcolor"
17
- />
18
- <path
19
- d="M156 681V593H313.899C340.273 593 346 612.845 346 624.68V681H156Z"
20
- fill="currentcolor"
21
- />
15
+ <g>
16
+ <path
17
+ d="M78.0659341,92.5875806 C90.8837956,92.5875806 101.274726,82.1966508 101.274726,69.3787894 C101.274726,56.5609279 90.8837956,46.1699982 78.0659341,46.1699982 C65.2480726,46.1699982 54.8571429,56.5609279 54.8571429,69.3787894 C54.8571429,82.1966508 65.2480726,92.5875806 78.0659341,92.5875806 Z M23.2087913,139.005163 C36.0266526,139.005163 46.4175825,128.614233 46.4175825,115.796372 C46.4175825,102.97851 36.0266526,92.5875806 23.2087913,92.5875806 C10.3909298,92.5875806 0,102.97851 0,115.796372 C0,128.614233 10.3909298,139.005163 23.2087913,139.005163 Z M232.791209,139.005163 C245.60907,139.005163 256,128.614233 256,115.796372 C256,102.97851 245.60907,92.5875806 232.791209,92.5875806 C219.973347,92.5875806 209.582418,102.97851 209.582418,115.796372 C209.582418,128.614233 219.973347,139.005163 232.791209,139.005163 Z"
18
+ fill="currentcolor"
19
+ />
20
+ <path
21
+ d="M156.565464,70.3568084 C155.823426,62.6028163 155.445577,56.1490255 149.505494,51.6131676 C141.982638,45.8687002 133.461166,49.5960243 122.964463,45.8072968 C112.650326,43.3121427 105,34.1545727 105,23.2394367 C105,10.4046502 115.577888,0 128.626373,0 C138.29063,0 146.599638,5.70747659 150.259573,13.8825477 C155.861013,24.5221258 152.220489,35.3500418 159.258242,40.8041273 C167.591489,47.2621895 178.826167,42.5329154 191.362109,48.6517412 C195.390112,50.5026944 198.799584,53.4384578 201.202056,57.0769224 C203.604528,60.7153869 205,65.0565524 205,69.7183101 C205,80.633446 197.349674,89.7910161 187.035538,92.2861702 C176.538834,96.0748977 168.017363,92.3475736 160.494506,98.092041 C152.03503,104.551712 156.563892,115.358642 149.669352,126.774447 C145.756163,134.291567 137.802119,139.43662 128.626373,139.43662 C115.577888,139.43662 105,129.03197 105,116.197184 C105,106.873668 110.581887,98.832521 118.637891,95.1306146 C131.173833,89.0117889 142.408511,93.7410629 150.741758,87.2830007 C155.549106,83.5574243 156.565464,77.8102648 156.565464,70.3568084 Z"
22
+ fill="currentcolor"
23
+ />
24
+ </g>
22
25
  </svg>
23
26
  );
24
27
  };