@remotion/promo-pages 4.0.364 → 4.0.365

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/dist/Homepage.js +7 -3
  2. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/Homepage.js +7 -3
  3. package/package.json +10 -10
  4. package/.turbo/turbo-lint.log +0 -15
  5. package/.turbo/turbo-make.log +0 -5
  6. package/bundle.ts +0 -54
  7. package/eslint.config.mjs +0 -7
  8. package/server.ts +0 -26
  9. package/src/cn.ts +0 -6
  10. package/src/components/Homepage.tsx +0 -87
  11. package/src/components/TeamPicture.tsx +0 -11
  12. package/src/components/homepage/BackgroundAnimation.tsx +0 -108
  13. package/src/components/homepage/ChooseTemplate.tsx +0 -57
  14. package/src/components/homepage/CommunityStats.tsx +0 -54
  15. package/src/components/homepage/CommunityStatsItems.tsx +0 -304
  16. package/src/components/homepage/Counter.tsx +0 -120
  17. package/src/components/homepage/Demo/Card.tsx +0 -273
  18. package/src/components/homepage/Demo/Cards.tsx +0 -129
  19. package/src/components/homepage/Demo/Comp.tsx +0 -157
  20. package/src/components/homepage/Demo/CurrentCountry.tsx +0 -97
  21. package/src/components/homepage/Demo/DemoError.tsx +0 -18
  22. package/src/components/homepage/Demo/DemoErrorIcon.tsx +0 -32
  23. package/src/components/homepage/Demo/DemoRender.tsx +0 -166
  24. package/src/components/homepage/Demo/DigitWheel.tsx +0 -179
  25. package/src/components/homepage/Demo/DisplayedEmoji.tsx +0 -93
  26. package/src/components/homepage/Demo/DoneCheckmark.tsx +0 -39
  27. package/src/components/homepage/Demo/DownloadNudge.tsx +0 -62
  28. package/src/components/homepage/Demo/DragAndDropNudge.tsx +0 -57
  29. package/src/components/homepage/Demo/EmojiCard.tsx +0 -200
  30. package/src/components/homepage/Demo/Minus.tsx +0 -21
  31. package/src/components/homepage/Demo/PlayPauseButton.tsx +0 -66
  32. package/src/components/homepage/Demo/PlayerControls.tsx +0 -48
  33. package/src/components/homepage/Demo/PlayerSeekBar.tsx +0 -325
  34. package/src/components/homepage/Demo/PlayerVolume.tsx +0 -83
  35. package/src/components/homepage/Demo/Progress.tsx +0 -38
  36. package/src/components/homepage/Demo/Spinner.tsx +0 -60
  37. package/src/components/homepage/Demo/Switcher.tsx +0 -54
  38. package/src/components/homepage/Demo/Temperature.tsx +0 -44
  39. package/src/components/homepage/Demo/TemperatureNumber.tsx +0 -68
  40. package/src/components/homepage/Demo/ThemeNudge.tsx +0 -72
  41. package/src/components/homepage/Demo/TimeDisplay.tsx +0 -43
  42. package/src/components/homepage/Demo/TrendingRepos.tsx +0 -106
  43. package/src/components/homepage/Demo/icons.tsx +0 -114
  44. package/src/components/homepage/Demo/index.tsx +0 -158
  45. package/src/components/homepage/Demo/math.ts +0 -43
  46. package/src/components/homepage/Demo/types.ts +0 -6
  47. package/src/components/homepage/EditorStarterSection.tsx +0 -76
  48. package/src/components/homepage/EvaluateRemotion.tsx +0 -92
  49. package/src/components/homepage/FreePricing.tsx +0 -283
  50. package/src/components/homepage/GetStartedStrip.tsx +0 -77
  51. package/src/components/homepage/GitHubButton.tsx +0 -23
  52. package/src/components/homepage/IconForTemplate.tsx +0 -170
  53. package/src/components/homepage/IfYouKnowReact.tsx +0 -68
  54. package/src/components/homepage/InfoTooltip.tsx +0 -25
  55. package/src/components/homepage/MoreTemplatesButton.tsx +0 -29
  56. package/src/components/homepage/MoreVideoPowerSection.tsx +0 -95
  57. package/src/components/homepage/MuxVideo.tsx +0 -68
  58. package/src/components/homepage/NewsletterButton.tsx +0 -89
  59. package/src/components/homepage/ParameterizeAndEdit.tsx +0 -106
  60. package/src/components/homepage/Pricing.tsx +0 -49
  61. package/src/components/homepage/PricingBulletPoint.tsx +0 -50
  62. package/src/components/homepage/RealMp4Videos.tsx +0 -108
  63. package/src/components/homepage/Spacer.tsx +0 -5
  64. package/src/components/homepage/TemplateIcon.tsx +0 -36
  65. package/src/components/homepage/TextInput.tsx +0 -62
  66. package/src/components/homepage/TrustedByBanner.tsx +0 -145
  67. package/src/components/homepage/VideoApps.tsx +0 -231
  68. package/src/components/homepage/VideoAppsShowcase.tsx +0 -270
  69. package/src/components/homepage/VideoAppsTitle.tsx +0 -11
  70. package/src/components/homepage/VideoPlayerWithControls.tsx +0 -189
  71. package/src/components/homepage/WriteInReact.tsx +0 -34
  72. package/src/components/homepage/YouAreHere.tsx +0 -30
  73. package/src/components/homepage/layout/Button.tsx +0 -93
  74. package/src/components/homepage/layout/colors.ts +0 -17
  75. package/src/components/homepage/layout/use-color-mode.tsx +0 -44
  76. package/src/components/homepage/layout/use-el-size.ts +0 -51
  77. package/src/components/homepage/layout/use-mobile-layout.ts +0 -8
  78. package/src/components/homepage/video-player.css +0 -24
  79. package/src/components/icons/blank.tsx +0 -13
  80. package/src/components/icons/clone.tsx +0 -10
  81. package/src/components/icons/code-hike.tsx +0 -15
  82. package/src/components/icons/cubes.tsx +0 -13
  83. package/src/components/icons/js.tsx +0 -17
  84. package/src/components/icons/music.tsx +0 -9
  85. package/src/components/icons/next.tsx +0 -64
  86. package/src/components/icons/overlay.tsx +0 -24
  87. package/src/components/icons/recorder.tsx +0 -23
  88. package/src/components/icons/remix.tsx +0 -27
  89. package/src/components/icons/skia.tsx +0 -13
  90. package/src/components/icons/stargazer.tsx +0 -13
  91. package/src/components/icons/still.tsx +0 -13
  92. package/src/components/icons/tailwind.tsx +0 -22
  93. package/src/components/icons/tiktok.tsx +0 -13
  94. package/src/components/icons/ts.tsx +0 -18
  95. package/src/components/icons/tts.tsx +0 -13
  96. package/src/components/icons/undo.tsx +0 -11
  97. package/src/components/icons/waveform.tsx +0 -13
  98. package/src/components/team/TeamCards.tsx +0 -167
  99. package/src/components/team/TitleTeamCards.tsx +0 -22
  100. package/src/components/team.css +0 -22
  101. package/src/components/team.tsx +0 -51
  102. package/src/fonts.css +0 -30
  103. package/src/index.css +0 -140
  104. package/src/main.tsx +0 -12
  105. package/src/team.tsx +0 -12
  106. package/tsconfig.json +0 -11
  107. package/vite.config.ts +0 -9
@@ -1,68 +0,0 @@
1
- import React, {useEffect, useState} from 'react';
2
-
3
- export const isWebkit = () => {
4
- if (typeof window === 'undefined') {
5
- return false;
6
- }
7
-
8
- const isSafariUserAgent = Boolean(
9
- navigator.userAgent.match(/Version\/[\d.]+.*Safari/),
10
- );
11
-
12
- const isChrome = Boolean(navigator.userAgent.match(/CriOS\//));
13
- return isSafariUserAgent || isChrome;
14
- };
15
-
16
- const icon: React.CSSProperties = {
17
- height: 16,
18
- marginLeft: 10,
19
- };
20
-
21
- export const IfYouKnowReact: React.FC = () => {
22
- const [vid, setVid] = useState('/img/compose.webm');
23
-
24
- useEffect(() => {
25
- if (isWebkit()) {
26
- setVid('/img/compose.mp4');
27
- }
28
- }, []);
29
-
30
- return (
31
- <div className="flex flex-col lg:flex-row text-left justify-start lg:justify-end items-start lg:mb-0 gap-6 mt-8">
32
- <video
33
- src={vid}
34
- muted
35
- autoPlay
36
- playsInline
37
- loop
38
- className="w-[500px] cursor-default! relative lg:-translate-x-8 -mb-40 lg:mt-0 lg:mb-0"
39
- />
40
- <div>
41
- <h2 className="text-4xl fontbrand pt-20">
42
- <span className="text-brand">Compose</span> with code
43
- </h2>
44
- <p className="leading-relaxed font-brand">
45
- Use React, a powerful frontend technology, to create sophisticated
46
- videos with code.
47
- </p>
48
- <div className="h-4" />
49
- <a
50
- className="no-underline text-brand font-brand font-bold inline-flex flex-row items-center"
51
- href="/docs/the-fundamentals"
52
- >
53
- Learn Remotion{' '}
54
- <svg
55
- style={icon}
56
- xmlns="http://www.w3.org/2000/svg"
57
- viewBox="0 0 448 512"
58
- >
59
- <path
60
- fill="currentColor"
61
- 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"
62
- />
63
- </svg>
64
- </a>
65
- </div>
66
- </div>
67
- );
68
- };
@@ -1,25 +0,0 @@
1
- import React, {useState} from 'react';
2
-
3
- interface InfoTooltipProps {
4
- readonly text: string;
5
- }
6
-
7
- export const InfoTooltip: React.FC<InfoTooltipProps> = ({text}) => {
8
- const [isVisible, setIsVisible] = useState(false);
9
-
10
- return (
11
- <span
12
- className="relative inline-block ml-1 text-gray-600 cursor-default"
13
- onMouseEnter={() => setIsVisible(true)}
14
- onMouseLeave={() => setIsVisible(false)}
15
- >
16
- <span style={{fontSize: '1rem'}}>ⓘ</span>
17
- {isVisible && (
18
- <span className="absolute bottom-full left-1/2 transform -translate-x-1/2 bg-gray-800 text-white p-2 rounded text-xs whitespace-nowrap z-10 cursor-default">
19
- {text}
20
- <span className="absolute top-full left-1/2 transform -translate-x-1/2 border-5 border-solid border-gray-800 border-t-transparent border-r-transparent border-b-transparent border-l-transparent cursor-default" />
21
- </span>
22
- )}
23
- </span>
24
- );
25
- };
@@ -1,29 +0,0 @@
1
- import React from 'react';
2
- import {useMobileLayout} from './layout/use-mobile-layout';
3
-
4
- const icon: React.CSSProperties = {
5
- height: 16,
6
- marginLeft: 10,
7
- };
8
-
9
- export const MoreTemplatesButton: React.FC = () => {
10
- const mobileLayout = useMobileLayout();
11
-
12
- return (
13
- <a href="/templates" className="no-underline text-inherit">
14
- <div className="right-0 border-2 rounded-full text-inherit px-4 py-2 fontbrand font-semibold text-sm flex flex-row items-center">
15
- {mobileLayout ? 'Templates' : 'Find a template'}
16
- <svg
17
- style={icon}
18
- xmlns="http://www.w3.org/2000/svg"
19
- viewBox="0 0 448 512"
20
- >
21
- <path
22
- fill="currentColor"
23
- 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"
24
- />
25
- </svg>
26
- </div>
27
- </a>
28
- );
29
- };
@@ -1,95 +0,0 @@
1
- import React from 'react';
2
-
3
- const StepTitle: React.FC<{
4
- readonly children: React.ReactNode;
5
- }> = ({children}) => {
6
- return (
7
- <div className="text-left text-xl font-semibold fontbrand">{children}</div>
8
- );
9
- };
10
-
11
- const Subtitle: React.FC<{
12
- readonly children: React.ReactNode;
13
- }> = ({children}) => {
14
- return (
15
- <div className="text-left text-base fontbrand text-[var(--subtitle)]">
16
- {children}
17
- </div>
18
- );
19
- };
20
-
21
- const Pane: React.FC<{
22
- readonly children: React.ReactNode;
23
- readonly className?: string;
24
- }> = ({children, className}) => {
25
- return (
26
- <div
27
- className={`border-effect bg-pane flex-1 flex flex-col ${className || ''}`}
28
- >
29
- {children}
30
- </div>
31
- );
32
- };
33
-
34
- const FeatureCard: React.FC<{
35
- readonly title: string;
36
- readonly subtitle: string;
37
- readonly image: string;
38
- readonly link: string;
39
- }> = ({title, subtitle, image, link}) => {
40
- return (
41
- <a
42
- href={link}
43
- className="group lg:border-r-2 border-b lg:border-b-0 border-[var(--border)] cursor-pointer hover:bg-[var(--hover)] transition-colors no-underline text-inherit"
44
- >
45
- <div className="relative">
46
- <img src={image} alt={title} className="w-full h-auto" />
47
- </div>
48
- <div className="p-4">
49
- <div className="flex items-center gap-2">
50
- <StepTitle>{title}</StepTitle>
51
- <svg
52
- width="16"
53
- viewBox="0 0 448 512"
54
- fill="currentColor"
55
- className="opacity-0 group-hover:opacity-100 transition-opacity"
56
- >
57
- <path d="M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z" />
58
- </svg>
59
- </div>
60
- <Subtitle>{subtitle}</Subtitle>
61
- <br />
62
- <div className="flex-1" />
63
- </div>
64
- </a>
65
- );
66
- };
67
-
68
- export const MoreVideoPowerSection: React.FC = () => {
69
- return (
70
- <div className="w-full">
71
- <Pane className="overflow-hidden">
72
- <div className="grid grid-cols-1 lg:grid-cols-3 h-full">
73
- <FeatureCard
74
- title="Media Parser"
75
- subtitle="A new multimedia library for the web"
76
- image="/img/media-parser.png"
77
- link="/media-parser"
78
- />
79
- <FeatureCard
80
- title="WebCodecs"
81
- subtitle="Read, process, transform and create videos on the frontend"
82
- image="/img/webcodecs.png"
83
- link="/webcodecs"
84
- />
85
- <FeatureCard
86
- title="Recorder"
87
- subtitle="Produce engaging screencasts end-to-end in JavaScript"
88
- image="/img/recorder.png"
89
- link="/recorder"
90
- />
91
- </div>
92
- </Pane>
93
- </div>
94
- );
95
- };
@@ -1,68 +0,0 @@
1
- import Hls from 'hls.js';
2
- import React, {forwardRef, useEffect, useImperativeHandle, useRef} from 'react';
3
- import {VideoPlayerWithControls} from './VideoPlayerWithControls';
4
-
5
- const getVideoToPlayUrl = (muxId: string) => {
6
- return `https://stream.mux.com/${muxId}.m3u8`;
7
- };
8
-
9
- const MuxVideoForward: React.ForwardRefRenderFunction<
10
- HTMLVideoElement,
11
- React.DetailedHTMLProps<
12
- React.VideoHTMLAttributes<HTMLVideoElement>,
13
- HTMLVideoElement
14
- > & {
15
- readonly muxId: string;
16
- }
17
- > = ({muxId, ...props}, ref) => {
18
- const videoRef = useRef<HTMLVideoElement>(null);
19
- const vidUrl = getVideoToPlayUrl(muxId);
20
-
21
- useImperativeHandle(ref, () => videoRef.current!, []);
22
-
23
- useEffect(() => {
24
- let hls: Hls;
25
- if (videoRef.current) {
26
- const {current} = videoRef;
27
- if (current.canPlayType('application/vnd.apple.mpegurl')) {
28
- // Some browers (safari and ie edge) support HLS natively
29
- current.src = vidUrl;
30
- } else if (Hls.isSupported()) {
31
- // This will run in all other modern browsers
32
- hls = new Hls();
33
- hls.loadSource(vidUrl);
34
- hls.attachMedia(current);
35
- } else {
36
- // eslint-disable-next-line no-console
37
- console.error("This is a legacy browser that doesn't support MSE");
38
- }
39
- }
40
-
41
- return () => {
42
- if (hls) {
43
- hls.destroy();
44
- }
45
- };
46
- }, [vidUrl, videoRef]);
47
-
48
- return <video ref={videoRef} {...props} />;
49
- };
50
-
51
- export const MuxVideo = forwardRef(MuxVideoForward);
52
-
53
- export const NewMuxVideo: React.FC<{
54
- readonly muxId: string;
55
- }> = ({muxId}) => {
56
- return (
57
- <VideoPlayerWithControls
58
- playbackId={muxId}
59
- poster={'https://image.mux.com/' + muxId + '/thumbnail.png?time=1'}
60
- onError={(error) => {
61
- // eslint-disable-next-line no-console
62
- console.log(error);
63
- }}
64
- onLoaded={() => undefined}
65
- onSize={() => undefined}
66
- />
67
- );
68
- };
@@ -1,89 +0,0 @@
1
- import React, {useCallback, useState} from 'react';
2
- import {BlueButton} from './layout/Button';
3
- import {Spacer} from './Spacer';
4
- import {SectionTitle} from './VideoAppsTitle';
5
-
6
- export const NewsletterButton: React.FC<{}> = () => {
7
- const [email, setEmail] = useState('');
8
- const [submitting, setSubmitting] = useState(false);
9
- const [subscribed, setSubscribed] = useState(false);
10
-
11
- const handleSubmit = useCallback(
12
- async (e: React.FormEvent<HTMLFormElement>) => {
13
- try {
14
- setSubmitting(true);
15
- e.preventDefault();
16
-
17
- const response = await fetch(
18
- 'https://www.remotion.pro/api/newsletter',
19
- {
20
- method: 'POST',
21
- body: JSON.stringify({email}),
22
- headers: {
23
- 'content-type': 'application/json',
24
- },
25
- },
26
- );
27
- const json = await response.json();
28
- if (json.success) {
29
- setSubscribed(true);
30
- } else {
31
- // eslint-disable-next-line no-alert
32
- alert('Something went wrong. Please try again later.');
33
- }
34
-
35
- setSubmitting(false);
36
- } catch {
37
- // eslint-disable-next-line no-alert
38
- alert('Something went wrong. Please try again later.');
39
- }
40
- },
41
- [email],
42
- );
43
-
44
- return (
45
- <div>
46
- <div className="flex flex-col">
47
- <div className={'w-full'}>
48
- <div className={'flex flex-col flex-1'}>
49
- <SectionTitle>Newsletter</SectionTitle>
50
- <form
51
- onSubmit={handleSubmit}
52
- style={{
53
- width: '100%',
54
- }}
55
- >
56
- <div className={'fontbrand text-center mb-10 -mt-4'}>
57
- Read about new features and noteworthy updates we have made on
58
- Remotion once in a while.{' '}
59
- </div>
60
-
61
- <input
62
- className="w-full dark:bg-[#121212] rounded-lg border-effect border-black outline-none px-3 py-3 fontbrand text-lg box-border focus:border-brand"
63
- disabled={submitting}
64
- value={email}
65
- onChange={(e) => setEmail(e.target.value)}
66
- type={'email'}
67
- required
68
- placeholder="animator@gmail.com"
69
- />
70
- <Spacer />
71
- <Spacer />
72
- <div>
73
- <BlueButton
74
- type="submit"
75
- className="w-full"
76
- loading={submitting}
77
- disabled={submitting || subscribed}
78
- size="sm"
79
- >
80
- {subscribed ? 'Subscribed!' : 'Subscribe'}
81
- </BlueButton>
82
- </div>
83
- </form>
84
- </div>
85
- </div>
86
- </div>
87
- </div>
88
- );
89
- };
@@ -1,106 +0,0 @@
1
- import React, {useEffect, useRef, useState} from 'react';
2
- import {isWebkit} from './IfYouKnowReact';
3
-
4
- const icon: React.CSSProperties = {
5
- height: 16,
6
- marginLeft: 10,
7
- };
8
-
9
- export const ParameterizeAndEdit: React.FC = () => {
10
- const ref = useRef<HTMLDivElement>(null);
11
- const [vid, setVid] = useState('/img/editing-vp9-chrome.webm');
12
-
13
- useEffect(() => {
14
- if (isWebkit()) {
15
- setVid('/img/editing-safari.mp4');
16
- }
17
- }, []);
18
-
19
- return (
20
- <div
21
- ref={ref}
22
- className={
23
- 'flex flex-col lg:flex-row justify-start lg:justify-end items-start gap-6 mt-20 lg:mt-0'
24
- }
25
- >
26
- <div>
27
- <video
28
- src={vid}
29
- autoPlay
30
- muted
31
- playsInline
32
- loop
33
- style={{
34
- width: 500,
35
- maxWidth: '100%',
36
- borderRadius: 7,
37
- overflow: 'hidden',
38
- }}
39
- />
40
- </div>
41
- <div style={{flex: 1}} className="font-brand pt-4">
42
- <h2 className={'fontbrand text-4xl'}>
43
- Edit <span className="text-brand">dynamically</span>
44
- </h2>
45
- <p className="leading-relaxed">
46
- Parameterize your video by passing data.
47
- <br />
48
- Or embed it into your app and build an interface around it.
49
- </p>
50
- <div className="h-4" />
51
- <div className="leading-6">
52
- <a
53
- className="no-underline text-brand font-brand font-bold inline-flex flex-row items-center"
54
- href="/docs/studio"
55
- >
56
- Remotion Studio{' '}
57
- <svg
58
- style={icon}
59
- xmlns="http://www.w3.org/2000/svg"
60
- viewBox="0 0 448 512"
61
- >
62
- <path
63
- fill="currentColor"
64
- 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"
65
- />
66
- </svg>
67
- </a>
68
- <br />
69
- <a
70
- className="no-underline text-brand font-brand font-bold inline-flex flex-row items-center"
71
- href="/player"
72
- >
73
- Remotion Player{' '}
74
- <svg
75
- style={icon}
76
- xmlns="http://www.w3.org/2000/svg"
77
- viewBox="0 0 448 512"
78
- >
79
- <path
80
- fill="currentColor"
81
- 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"
82
- />
83
- </svg>
84
- </a>
85
- <br />
86
- <a
87
- className="no-underline text-brand font-brand font-bold inline-flex flex-row items-center"
88
- href="/docs/editor-starter"
89
- >
90
- Remotion Editor Starter{' '}
91
- <svg
92
- style={icon}
93
- xmlns="http://www.w3.org/2000/svg"
94
- viewBox="0 0 448 512"
95
- >
96
- <path
97
- fill="currentColor"
98
- 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"
99
- />
100
- </svg>
101
- </a>
102
- </div>
103
- </div>
104
- </div>
105
- );
106
- };
@@ -1,49 +0,0 @@
1
- import React from 'react';
2
- import {CompanyPricing, EnterpriseLicense, FreePricing} from './FreePricing';
3
-
4
- export const Pricing: React.FC = () => {
5
- return (
6
- <div
7
- style={{
8
- display: 'flex',
9
- flexDirection: 'column',
10
- gap: 20,
11
- marginBottom: 40,
12
- }}
13
- >
14
- <FreePricing />
15
- <CompanyPricing />
16
- <EnterpriseLicense />
17
- <div
18
- style={{
19
- justifyContent: 'center',
20
- display: 'flex',
21
- }}
22
- >
23
- <div
24
- style={{
25
- fontFamily: 'GTPlanar',
26
- }}
27
- >
28
- See our{' '}
29
- <a
30
- target="_blank"
31
- className="bluelink"
32
- href="https://remotion.pro/faq"
33
- >
34
- FAQ
35
- </a>{' '}
36
- and{' '}
37
- <a
38
- target="_blank"
39
- className="bluelink"
40
- href="https://www.remotion.pro/terms"
41
- >
42
- Terms and Conditions
43
- </a>{' '}
44
- for more details.
45
- </div>
46
- </div>
47
- </div>
48
- );
49
- };
@@ -1,50 +0,0 @@
1
- import React from 'react';
2
-
3
- const container: React.CSSProperties = {
4
- display: 'flex',
5
- flexDirection: 'row',
6
- alignItems: 'center',
7
- gap: '10px',
8
- };
9
-
10
- const greyCircle: React.CSSProperties = {
11
- width: 20,
12
- height: 20,
13
- borderRadius: 10,
14
- backgroundColor: 'var(--footer-border)',
15
- };
16
-
17
- export const PricingBulletPoint: React.FC<{
18
- readonly text: React.ReactNode;
19
- readonly checked: boolean;
20
- readonly children?: React.ReactNode;
21
- }> = ({text, checked, children}) => {
22
- const checkmarkSVG = (
23
- <svg
24
- width="20"
25
- height="20"
26
- viewBox="0 0 20 20"
27
- fill="none"
28
- xmlns="http://www.w3.org/2000/svg"
29
- style={{
30
- flexShrink: 0,
31
- }}
32
- >
33
- <circle cx="10" cy="10" r="10" fill="#0B84F3" />
34
- <path
35
- 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"
36
- fill="white"
37
- />
38
- </svg>
39
- );
40
-
41
- return (
42
- <div style={container}>
43
- {checked ? checkmarkSVG : <div style={greyCircle} />}
44
- <div className={'fontbrand text-lg '}>
45
- {text}
46
- {children}
47
- </div>
48
- </div>
49
- );
50
- };
@@ -1,108 +0,0 @@
1
- import React, {useEffect, useRef, useState} from 'react';
2
- import {isWebkit} from './IfYouKnowReact';
3
-
4
- const icon: React.CSSProperties = {
5
- height: 16,
6
- marginLeft: 10,
7
- };
8
-
9
- export const RealMP4Videos: React.FC = () => {
10
- const ref = useRef<HTMLDivElement>(null);
11
- const videoRef = useRef<HTMLVideoElement>(null);
12
-
13
- const [vid, setVid] = useState('/img/render-progress.webm');
14
-
15
- useEffect(() => {
16
- if (isWebkit()) {
17
- setVid('/img/render-progress.mp4');
18
- }
19
- }, []);
20
-
21
- useEffect(() => {
22
- const {current} = ref;
23
- if (!current) {
24
- return;
25
- }
26
-
27
- const callback = (data: IntersectionObserverEntry[]) => {
28
- if (data[0].isIntersecting) {
29
- videoRef.current?.play();
30
- }
31
- };
32
-
33
- const observer = new IntersectionObserver(callback, {
34
- root: null,
35
- threshold: 0.5,
36
- });
37
- observer.observe(current);
38
-
39
- return () => observer.unobserve(current);
40
- }, []);
41
-
42
- return (
43
- <div ref={ref} className={'flex flex-col lg:flex-row mt-40 lg:mt-30 gap-6'}>
44
- <div className="flex w-[500px] justify-start lg:justify-start items-end">
45
- <video
46
- ref={videoRef}
47
- src={vid}
48
- muted
49
- autoPlay
50
- playsInline
51
- loop
52
- style={{
53
- width: 400,
54
- maxWidth: '100%',
55
- borderRadius: 7,
56
- overflow: 'hidden',
57
- }}
58
- className="w-[550px] cursor-default! relative lg:translate-x-8 -mt-20 lg:mt-0"
59
- />
60
- </div>{' '}
61
- <div className="font-brand">
62
- <h2 className="text-4xl fontbrand">
63
- <span className={'text-brand'}>Scalable</span> rendering
64
- </h2>
65
- <p className="leading-relaxed">
66
- Render the video .mp4 or other formats. <br />
67
- Locally, on the server or serverless.
68
- </p>{' '}
69
- <div className="h-4" />
70
- <div className="leading-6">
71
- <a
72
- className="no-underline text-brand font-brand font-bold inline-flex flex-row items-center"
73
- href="/docs/render"
74
- >
75
- Render options{' '}
76
- <svg
77
- style={icon}
78
- xmlns="http://www.w3.org/2000/svg"
79
- viewBox="0 0 448 512"
80
- >
81
- <path
82
- fill="currentColor"
83
- 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"
84
- />
85
- </svg>
86
- </a>
87
- <br />
88
- <a
89
- className="no-underline text-brand font-brand font-bold inline-flex flex-row items-center"
90
- href="/lambda"
91
- >
92
- Remotion Lambda{' '}
93
- <svg
94
- style={icon}
95
- xmlns="http://www.w3.org/2000/svg"
96
- viewBox="0 0 448 512"
97
- >
98
- <path
99
- fill="currentColor"
100
- 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"
101
- />
102
- </svg>
103
- </a>
104
- </div>
105
- </div>
106
- </div>
107
- );
108
- };
@@ -1,5 +0,0 @@
1
- import React from 'react';
2
-
3
- export const Spacer: React.FC = () => {
4
- return <div style={{width: 4, height: 4}} />;
5
- };