@remotion/promo-pages 4.0.369 → 4.0.371

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 (205) hide show
  1. package/dist/Homepage.js +6258 -3166
  2. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/Homepage.js +6258 -3166
  3. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/design.js +13314 -0
  4. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/homepage/Pricing.js +13422 -402
  5. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/template-modal-content.css +32 -0
  6. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/template-modal-content.js +15290 -0
  7. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/templates.css +43 -0
  8. package/dist/Users/jonathanburger/remotion/packages/promo-pages/dist/templates.js +14501 -0
  9. package/dist/design.js +13314 -0
  10. package/dist/homepage/Pricing.js +13422 -402
  11. package/dist/tailwind.css +151 -76
  12. package/dist/template-modal-content.css +32 -0
  13. package/dist/template-modal-content.js +15290 -0
  14. package/dist/templates.css +43 -0
  15. package/dist/templates.js +14501 -0
  16. package/package.json +13 -12
  17. package/public/img/freelancers/andrei.png +0 -0
  18. package/dist/cn.d.ts +0 -2
  19. package/dist/cn.js +0 -5
  20. package/dist/components/Homepage.d.ts +0 -6
  21. package/dist/components/Homepage.js +0 -21
  22. package/dist/components/TeamPicture.d.ts +0 -1
  23. package/dist/components/TeamPicture.js +0 -4
  24. package/dist/components/homepage/BackgroundAnimation.d.ts +0 -2
  25. package/dist/components/homepage/BackgroundAnimation.js +0 -66
  26. package/dist/components/homepage/ChooseTemplate.d.ts +0 -2
  27. package/dist/components/homepage/ChooseTemplate.js +0 -27
  28. package/dist/components/homepage/CommunityStats.d.ts +0 -3
  29. package/dist/components/homepage/CommunityStats.js +0 -6
  30. package/dist/components/homepage/CommunityStatsItems.d.ts +0 -7
  31. package/dist/components/homepage/CommunityStatsItems.js +0 -58
  32. package/dist/components/homepage/Counter.d.ts +0 -9
  33. package/dist/components/homepage/Counter.js +0 -55
  34. package/dist/components/homepage/Demo/Card.d.ts +0 -15
  35. package/dist/components/homepage/Demo/Card.js +0 -174
  36. package/dist/components/homepage/Demo/Cards.d.ts +0 -15
  37. package/dist/components/homepage/Demo/Cards.js +0 -57
  38. package/dist/components/homepage/Demo/Comp.d.ts +0 -38
  39. package/dist/components/homepage/Demo/Comp.js +0 -71
  40. package/dist/components/homepage/Demo/CurrentCountry.d.ts +0 -9
  41. package/dist/components/homepage/Demo/CurrentCountry.js +0 -48
  42. package/dist/components/homepage/Demo/DemoError.d.ts +0 -2
  43. package/dist/components/homepage/Demo/DemoError.js +0 -10
  44. package/dist/components/homepage/Demo/DemoErrorIcon.d.ts +0 -2
  45. package/dist/components/homepage/Demo/DemoErrorIcon.js +0 -16
  46. package/dist/components/homepage/Demo/DemoRender.d.ts +0 -102
  47. package/dist/components/homepage/Demo/DemoRender.js +0 -95
  48. package/dist/components/homepage/Demo/DigitWheel.d.ts +0 -9
  49. package/dist/components/homepage/Demo/DigitWheel.js +0 -94
  50. package/dist/components/homepage/Demo/DisplayedEmoji.d.ts +0 -5
  51. package/dist/components/homepage/Demo/DisplayedEmoji.js +0 -64
  52. package/dist/components/homepage/Demo/DoneCheckmark.d.ts +0 -2
  53. package/dist/components/homepage/Demo/DoneCheckmark.js +0 -20
  54. package/dist/components/homepage/Demo/DownloadNudge.d.ts +0 -2
  55. package/dist/components/homepage/Demo/DownloadNudge.js +0 -27
  56. package/dist/components/homepage/Demo/DragAndDropNudge.d.ts +0 -3
  57. package/dist/components/homepage/Demo/DragAndDropNudge.js +0 -26
  58. package/dist/components/homepage/Demo/EmojiCard.d.ts +0 -10
  59. package/dist/components/homepage/Demo/EmojiCard.js +0 -120
  60. package/dist/components/homepage/Demo/Minus.d.ts +0 -5
  61. package/dist/components/homepage/Demo/Minus.js +0 -11
  62. package/dist/components/homepage/Demo/PlayPauseButton.d.ts +0 -5
  63. package/dist/components/homepage/Demo/PlayPauseButton.js +0 -47
  64. package/dist/components/homepage/Demo/PlayerControls.d.ts +0 -8
  65. package/dist/components/homepage/Demo/PlayerControls.js +0 -15
  66. package/dist/components/homepage/Demo/PlayerSeekBar.d.ts +0 -11
  67. package/dist/components/homepage/Demo/PlayerSeekBar.js +0 -216
  68. package/dist/components/homepage/Demo/PlayerVolume.d.ts +0 -5
  69. package/dist/components/homepage/Demo/PlayerVolume.js +0 -53
  70. package/dist/components/homepage/Demo/Progress.d.ts +0 -4
  71. package/dist/components/homepage/Demo/Progress.js +0 -14
  72. package/dist/components/homepage/Demo/Spinner.d.ts +0 -5
  73. package/dist/components/homepage/Demo/Spinner.js +0 -37
  74. package/dist/components/homepage/Demo/Switcher.d.ts +0 -6
  75. package/dist/components/homepage/Demo/Switcher.js +0 -25
  76. package/dist/components/homepage/Demo/Temperature.d.ts +0 -6
  77. package/dist/components/homepage/Demo/Temperature.js +0 -21
  78. package/dist/components/homepage/Demo/TemperatureNumber.d.ts +0 -5
  79. package/dist/components/homepage/Demo/TemperatureNumber.js +0 -36
  80. package/dist/components/homepage/Demo/ThemeNudge.d.ts +0 -3
  81. package/dist/components/homepage/Demo/ThemeNudge.js +0 -35
  82. package/dist/components/homepage/Demo/TimeDisplay.d.ts +0 -6
  83. package/dist/components/homepage/Demo/TimeDisplay.js +0 -27
  84. package/dist/components/homepage/Demo/TrendingRepos.d.ts +0 -6
  85. package/dist/components/homepage/Demo/TrendingRepos.js +0 -65
  86. package/dist/components/homepage/Demo/icons.d.ts +0 -10
  87. package/dist/components/homepage/Demo/icons.js +0 -22
  88. package/dist/components/homepage/Demo/index.d.ts +0 -2
  89. package/dist/components/homepage/Demo/index.js +0 -95
  90. package/dist/components/homepage/Demo/math.d.ts +0 -10
  91. package/dist/components/homepage/Demo/math.js +0 -29
  92. package/dist/components/homepage/Demo/types.d.ts +0 -6
  93. package/dist/components/homepage/Demo/types.js +0 -0
  94. package/dist/components/homepage/EditorStarterSection.d.ts +0 -3
  95. package/dist/components/homepage/EditorStarterSection.js +0 -8
  96. package/dist/components/homepage/EvaluateRemotion.d.ts +0 -3
  97. package/dist/components/homepage/EvaluateRemotion.js +0 -38
  98. package/dist/components/homepage/FreePricing.d.ts +0 -4
  99. package/dist/components/homepage/FreePricing.js +0 -69
  100. package/dist/components/homepage/GetStartedStrip.d.ts +0 -2
  101. package/dist/components/homepage/GetStartedStrip.js +0 -14
  102. package/dist/components/homepage/GitHubButton.d.ts +0 -2
  103. package/dist/components/homepage/GitHubButton.js +0 -7
  104. package/dist/components/homepage/IconForTemplate.d.ts +0 -6
  105. package/dist/components/homepage/IconForTemplate.js +0 -98
  106. package/dist/components/homepage/IfYouKnowReact.d.ts +0 -3
  107. package/dist/components/homepage/IfYouKnowReact.js +0 -23
  108. package/dist/components/homepage/InfoTooltip.d.ts +0 -6
  109. package/dist/components/homepage/InfoTooltip.js +0 -6
  110. package/dist/components/homepage/MoreTemplatesButton.d.ts +0 -2
  111. package/dist/components/homepage/MoreTemplatesButton.js +0 -10
  112. package/dist/components/homepage/MoreVideoPowerSection.d.ts +0 -2
  113. package/dist/components/homepage/MoreVideoPowerSection.js +0 -16
  114. package/dist/components/homepage/MuxVideo.d.ts +0 -7
  115. package/dist/components/homepage/MuxVideo.js +0 -45
  116. package/dist/components/homepage/NewsletterButton.d.ts +0 -2
  117. package/dist/components/homepage/NewsletterButton.js +0 -39
  118. package/dist/components/homepage/ParameterizeAndEdit.d.ts +0 -2
  119. package/dist/components/homepage/ParameterizeAndEdit.js +0 -22
  120. package/dist/components/homepage/Pricing.d.ts +0 -2
  121. package/dist/components/homepage/Pricing.js +0 -15
  122. package/dist/components/homepage/PricingBulletPoint.d.ts +0 -6
  123. package/dist/components/homepage/PricingBulletPoint.js +0 -19
  124. package/dist/components/homepage/RealMp4Videos.d.ts +0 -2
  125. package/dist/components/homepage/RealMp4Videos.js +0 -41
  126. package/dist/components/homepage/Spacer.d.ts +0 -2
  127. package/dist/components/homepage/Spacer.js +0 -4
  128. package/dist/components/homepage/TemplateIcon.d.ts +0 -5
  129. package/dist/components/homepage/TemplateIcon.js +0 -24
  130. package/dist/components/homepage/TextInput.d.ts +0 -7
  131. package/dist/components/homepage/TextInput.js +0 -34
  132. package/dist/components/homepage/TrustedByBanner.d.ts +0 -2
  133. package/dist/components/homepage/TrustedByBanner.js +0 -27
  134. package/dist/components/homepage/VideoApps.d.ts +0 -4
  135. package/dist/components/homepage/VideoApps.js +0 -72
  136. package/dist/components/homepage/VideoAppsShowcase.d.ts +0 -3
  137. package/dist/components/homepage/VideoAppsShowcase.js +0 -133
  138. package/dist/components/homepage/VideoAppsTitle.d.ts +0 -4
  139. package/dist/components/homepage/VideoAppsTitle.js +0 -4
  140. package/dist/components/homepage/VideoPlayerWithControls.d.ts +0 -20
  141. package/dist/components/homepage/VideoPlayerWithControls.js +0 -105
  142. package/dist/components/homepage/WriteInReact.d.ts +0 -2
  143. package/dist/components/homepage/WriteInReact.js +0 -10
  144. package/dist/components/homepage/YouAreHere.d.ts +0 -2
  145. package/dist/components/homepage/YouAreHere.js +0 -23
  146. package/dist/components/homepage/layout/Button.d.ts +0 -19
  147. package/dist/components/homepage/layout/Button.js +0 -29
  148. package/dist/components/homepage/layout/colors.d.ts +0 -13
  149. package/dist/components/homepage/layout/colors.js +0 -14
  150. package/dist/components/homepage/layout/use-color-mode.d.ts +0 -21
  151. package/dist/components/homepage/layout/use-color-mode.js +0 -22
  152. package/dist/components/homepage/layout/use-el-size.d.ts +0 -5
  153. package/dist/components/homepage/layout/use-el-size.js +0 -40
  154. package/dist/components/homepage/layout/use-mobile-layout.d.ts +0 -1
  155. package/dist/components/homepage/layout/use-mobile-layout.js +0 -6
  156. package/dist/components/icons/blank.d.ts +0 -3
  157. package/dist/components/icons/blank.js +0 -4
  158. package/dist/components/icons/clone.d.ts +0 -2
  159. package/dist/components/icons/clone.js +0 -2
  160. package/dist/components/icons/code-hike.d.ts +0 -3
  161. package/dist/components/icons/code-hike.js +0 -4
  162. package/dist/components/icons/cubes.d.ts +0 -3
  163. package/dist/components/icons/cubes.js +0 -4
  164. package/dist/components/icons/js.d.ts +0 -3
  165. package/dist/components/icons/js.js +0 -4
  166. package/dist/components/icons/music.d.ts +0 -2
  167. package/dist/components/icons/music.js +0 -4
  168. package/dist/components/icons/next.d.ts +0 -4
  169. package/dist/components/icons/next.js +0 -4
  170. package/dist/components/icons/overlay.d.ts +0 -3
  171. package/dist/components/icons/overlay.js +0 -4
  172. package/dist/components/icons/recorder.d.ts +0 -3
  173. package/dist/components/icons/recorder.js +0 -4
  174. package/dist/components/icons/remix.d.ts +0 -3
  175. package/dist/components/icons/remix.js +0 -4
  176. package/dist/components/icons/skia.d.ts +0 -3
  177. package/dist/components/icons/skia.js +0 -4
  178. package/dist/components/icons/stargazer.d.ts +0 -3
  179. package/dist/components/icons/stargazer.js +0 -4
  180. package/dist/components/icons/still.d.ts +0 -3
  181. package/dist/components/icons/still.js +0 -4
  182. package/dist/components/icons/tailwind.d.ts +0 -3
  183. package/dist/components/icons/tailwind.js +0 -4
  184. package/dist/components/icons/tiktok.d.ts +0 -3
  185. package/dist/components/icons/tiktok.js +0 -4
  186. package/dist/components/icons/ts.d.ts +0 -3
  187. package/dist/components/icons/ts.js +0 -4
  188. package/dist/components/icons/tts.d.ts +0 -3
  189. package/dist/components/icons/tts.js +0 -4
  190. package/dist/components/icons/undo.d.ts +0 -3
  191. package/dist/components/icons/undo.js +0 -2
  192. package/dist/components/icons/waveform.d.ts +0 -3
  193. package/dist/components/icons/waveform.js +0 -4
  194. package/dist/components/team/TeamCards.d.ts +0 -6
  195. package/dist/components/team/TeamCards.js +0 -19
  196. package/dist/components/team/TitleTeamCards.d.ts +0 -2
  197. package/dist/components/team/TitleTeamCards.js +0 -6
  198. package/dist/components/team.d.ts +0 -3
  199. package/dist/components/team.js +0 -14
  200. package/dist/main.d.ts +0 -1
  201. package/dist/main.js +0 -6
  202. package/dist/team.d.ts +0 -1
  203. package/public/img/media-parser.png +0 -0
  204. package/public/img/recorder.png +0 -0
  205. package/public/img/webcodecs.png +0 -0
@@ -1,21 +0,0 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import { AbsoluteFill } from 'remotion';
3
- import { TemperatureNumber } from './TemperatureNumber';
4
- export const Temperature = ({ theme, city, temperatureInCelsius }) => {
5
- if (temperatureInCelsius === null) {
6
- return null;
7
- }
8
- return (_jsx(AbsoluteFill, { children: _jsxs(AbsoluteFill, { style: {
9
- alignItems: 'center',
10
- justifyContent: 'center',
11
- paddingLeft: 20,
12
- paddingRight: 20,
13
- }, children: [_jsxs("div", { style: {
14
- color: '#0b84f3',
15
- fontFamily: 'GTPlanar',
16
- fontWeight: '500',
17
- fontSize: 13,
18
- textAlign: 'center',
19
- marginTop: 5,
20
- }, children: ["Temperature in ", city] }), _jsx(TemperatureNumber, { theme: theme, temperatureInCelsius: temperatureInCelsius })] }) }));
21
- };
@@ -1,5 +0,0 @@
1
- import React from 'react';
2
- export declare const TemperatureNumber: React.FC<{
3
- readonly theme: 'dark' | 'light';
4
- readonly temperatureInCelsius: number;
5
- }>;
@@ -1,36 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Wheel } from './DigitWheel';
3
- export const TemperatureNumber = ({ theme, temperatureInCelsius }) => {
4
- const temperatureInFahrenheit = (temperatureInCelsius * 9) / 5 + 32;
5
- const celsiusDegree = Math.abs(temperatureInCelsius);
6
- const fahrenheitDegree = Math.abs(temperatureInFahrenheit);
7
- const paddedCelsiusDegree = String(celsiusDegree)
8
- .padStart(fahrenheitDegree.toFixed(0).length, '0')
9
- .split('');
10
- const paddedFahrenheitDegree = fahrenheitDegree
11
- .toFixed(0)
12
- .padStart(paddedCelsiusDegree.length, '0')
13
- .split('');
14
- return (_jsxs("div", { style: {
15
- lineHeight: 1.1,
16
- fontFamily: 'GTPlanar',
17
- textAlign: 'center',
18
- fontWeight: 'bold',
19
- fontSize: 60,
20
- color: theme === 'dark' ? 'white' : 'black',
21
- fontVariantNumeric: 'tabular-nums',
22
- display: 'flex',
23
- flexDirection: 'row',
24
- alignItems: 'center',
25
- }, children: [paddedCelsiusDegree.map((digit, i) => (_jsx(Wheel
26
- // eslint-disable-next-line react/no-array-index-key
27
- , { delay: i * 4, renderDigit: (_i) => 9 - _i, digits: [
28
- Number(paddedFahrenheitDegree[i]),
29
- Number(digit),
30
- Number(paddedFahrenheitDegree[i]),
31
- ], isNegative: [
32
- temperatureInFahrenheit < 0,
33
- temperatureInCelsius < 0,
34
- temperatureInFahrenheit < 0,
35
- ], isLeadingDigit: i === 0 }, i))), _jsx("div", { style: { width: 8 } }), "\u00B0", _jsx(Wheel, { delay: paddedCelsiusDegree.length * 4 - 2, digits: [0, 1, 0], renderDigit: (_i) => _i % 2 === 0 ? 'C' : _jsx("span", { style: { marginLeft: -5 }, children: "F" }), isLeadingDigit: false, isNegative: [false, false, false] })] }));
36
- };
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- export declare const Icon: React.FC;
3
- export declare const ThemeNudge: React.FC;
@@ -1,35 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import React from 'react';
3
- import { FONTS } from '../layout/colors';
4
- import { useColorMode } from '../layout/use-color-mode';
5
- const origWidth = 21;
6
- const scale = 0.4;
7
- export const Icon = () => {
8
- return (_jsx("svg", { style: {
9
- width: origWidth * scale,
10
- }, viewBox: "0 0 21 161", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M5 5C23 59.5 14.5 120.5 5.00005 156", stroke: "currentColor", strokeWidth: "8", strokeLinecap: "round" }) }));
11
- };
12
- export const ThemeNudge = () => {
13
- const { colorMode, setColorMode } = useColorMode();
14
- const toggleTheme = React.useCallback((e) => {
15
- e.preventDefault();
16
- setColorMode(colorMode === 'dark' ? 'light' : 'dark');
17
- }, [colorMode, setColorMode]);
18
- return (_jsx("div", { style: {
19
- flexDirection: 'row',
20
- display: 'flex',
21
- justifyContent: 'flex-start',
22
- paddingBottom: 5,
23
- textAlign: 'right',
24
- position: 'absolute',
25
- right: 0,
26
- }, children: _jsxs("div", { children: [_jsxs("div", { style: {
27
- fontFamily: FONTS.GTPLANAR,
28
- fontSize: 15,
29
- width: 280,
30
- paddingBottom: 8,
31
- marginLeft: -15,
32
- textWrap: 'balance',
33
- marginTop: 5,
34
- }, children: [_jsxs("a", { href: "#", onClick: toggleTheme, className: "bluelink", children: ["Switch to ", colorMode === 'dark' ? 'light' : 'dark', " mode"] }), ' ', "and see the video adjust!", ' '] }), _jsx(Icon, {})] }) }));
35
- };
@@ -1,6 +0,0 @@
1
- import type { PlayerRef } from '@remotion/player';
2
- import React from 'react';
3
- export declare const TimeDisplay: React.FC<{
4
- readonly fps: number;
5
- readonly playerRef: React.RefObject<PlayerRef | null>;
6
- }>;
@@ -1,27 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import React, { useEffect } from 'react';
3
- const formatTime = (timeInSeconds) => {
4
- const minutes = Math.floor(timeInSeconds / 60);
5
- const seconds = Math.floor(timeInSeconds - minutes * 60);
6
- return `${String(minutes)}:${String(seconds).padStart(2, '0')}`;
7
- };
8
- export const TimeDisplay = ({ fps, playerRef }) => {
9
- const [time, setTime] = React.useState(0);
10
- useEffect(() => {
11
- const { current } = playerRef;
12
- if (!current) {
13
- return;
14
- }
15
- const onTimeUpdate = () => {
16
- setTime(current.getCurrentFrame());
17
- };
18
- current.addEventListener('frameupdate', onTimeUpdate);
19
- return () => {
20
- current.removeEventListener('frameupdate', onTimeUpdate);
21
- };
22
- }, [playerRef]);
23
- return (_jsx("div", { style: {
24
- fontSize: 16,
25
- fontVariantNumeric: 'tabular-nums',
26
- }, children: _jsx("span", { children: formatTime(time / fps) }) }));
27
- };
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- import type { RemoteData } from './Comp';
3
- export declare const TrendingRepos: React.FC<{
4
- readonly theme: 'dark' | 'light';
5
- readonly trending: RemoteData | null;
6
- }>;
@@ -1,65 +0,0 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import { useMemo } from 'react';
3
- import { AbsoluteFill, spring, useCurrentFrame, useVideoConfig } from 'remotion';
4
- const TrendingRepoItem = ({ repo, theme, number }) => {
5
- const frame = useCurrentFrame();
6
- const { fps } = useVideoConfig();
7
- const progress = spring({
8
- fps,
9
- frame,
10
- config: {
11
- damping: 200,
12
- },
13
- delay: number * 10 + 20,
14
- });
15
- const item = useMemo(() => {
16
- return {
17
- lineHeight: 1.1,
18
- fontFamily: 'GTPlanar',
19
- fontWeight: '500',
20
- color: theme === 'dark' ? 'white' : 'black',
21
- fontFeatureSettings: "'ss03' 1",
22
- opacity: progress,
23
- };
24
- }, [progress, theme]);
25
- return (_jsxs("div", { style: item, children: [number, ". ", repo] }));
26
- };
27
- export const TrendingRepos = ({ theme, trending }) => {
28
- const fill = theme === 'light' ? '#666' : '#999';
29
- const frame = useCurrentFrame();
30
- const { fps } = useVideoConfig();
31
- const progress1 = spring({
32
- fps,
33
- frame,
34
- config: {
35
- damping: 200,
36
- },
37
- delay: 0,
38
- });
39
- if (trending === null) {
40
- return null;
41
- }
42
- return (_jsx(AbsoluteFill, { children: _jsx(AbsoluteFill, { style: {
43
- justifyContent: 'center',
44
- paddingLeft: 20,
45
- paddingRight: 20,
46
- }, children: _jsxs("div", { children: [_jsx("div", { style: {
47
- color: fill,
48
- fontFamily: 'GTPlanar',
49
- fontWeight: '500',
50
- fontSize: 12,
51
- opacity: progress1,
52
- }, children: new Intl.DateTimeFormat('en-US', {
53
- weekday: 'long',
54
- month: 'long',
55
- day: 'numeric',
56
- }).format(new Date(trending.date)) }), _jsx("div", { style: {
57
- color: '#0b84f3',
58
- fontFamily: 'GTPlanar',
59
- fontWeight: '500',
60
- fontSize: 16,
61
- marginBottom: 15,
62
- opacity: progress1,
63
- lineHeight: 1,
64
- }, children: "Trending repositories" }), _jsx(TrendingRepoItem, { number: 1, repo: trending.repos[0], theme: theme }), _jsx(TrendingRepoItem, { number: 2, repo: trending.repos[1], theme: theme }), _jsx(TrendingRepoItem, { number: 3, repo: trending.repos[2], theme: theme })] }) }) }));
65
- };
@@ -1,10 +0,0 @@
1
- import type { SVGProps } from 'react';
2
- import React from 'react';
3
- export declare const IconLeft: React.FC<SVGProps<SVGSVGElement>>;
4
- export declare const IconRight: React.FC<SVGProps<SVGSVGElement>>;
5
- export declare const CancelIcon: React.FC<SVGProps<SVGSVGElement>>;
6
- export declare const PausedIcon: React.FC<SVGProps<SVGSVGElement>>;
7
- export declare const PlayingIcon: React.FC<SVGProps<SVGSVGElement>>;
8
- export declare const FullscreenIcon: React.FC<SVGProps<SVGSVGElement>>;
9
- export declare const NotMutedIcon: React.FC<SVGProps<SVGSVGElement>>;
10
- export declare const IsMutedIcon: React.FC<SVGProps<SVGSVGElement>>;
@@ -1,22 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { RED } from '../layout/colors';
3
- export const IconLeft = (props) => (_jsx("svg", { viewBox: "0 0 320 512", ...props, children: _jsx("path", { fill: "currentColor", d: "M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z" }) }));
4
- export const IconRight = (props) => (_jsx("svg", { viewBox: "0 0 320 512", ...props, children: _jsx("path", { fill: "currentColor", d: "M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z" }) }));
5
- export const CancelIcon = (props) => {
6
- return (_jsx("svg", { "aria-hidden": "true", focusable: "false", "data-prefix": "fas", "data-icon": "times", className: "svg-inline--fa fa-times fa-w-11", role: "img", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 352 512", ...props, children: _jsx("path", { fill: "currentColor", d: "M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z" }) }));
7
- };
8
- export const PausedIcon = (props) => {
9
- return (_jsx("svg", { "aria-hidden": "true", focusable: "false", "data-prefix": "fas", "data-icon": "play", className: "svg-inline--fa fa-play fa-w-14", role: "img", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 480 512", ...props, children: _jsx("path", { fill: "currentColor", 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" }) }));
10
- };
11
- export const PlayingIcon = (props) => {
12
- return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 400 512", fill: "currentColor", ...props, children: _jsx("path", { 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" }) }));
13
- };
14
- export const FullscreenIcon = (props) => {
15
- return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 448 512", fill: "currentColor", ...props, children: _jsx("path", { d: "M32 32C14.3 32 0 46.3 0 64l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-96 0zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-96z" }) }));
16
- };
17
- export const NotMutedIcon = (props) => {
18
- return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", ...props, viewBox: "0 0 640 512", fill: "currentColor", children: _jsx("path", { 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" }) }));
19
- };
20
- export const IsMutedIcon = (props) => {
21
- return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", ...props, viewBox: "0 0 640 512", fill: RED, children: _jsx("path", { 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" }) }));
22
- };
@@ -1,2 +0,0 @@
1
- import React from 'react';
2
- export declare const Demo: React.FC;
@@ -1,95 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Player } from '@remotion/player';
3
- import { useCallback, useEffect, useMemo, useRef, useState, } from 'react';
4
- import { PALETTE } from '../layout/colors';
5
- import { useColorMode } from '../layout/use-color-mode';
6
- import { SectionTitle } from '../VideoAppsTitle';
7
- import { getDataAndProps, HomepageVideoComp, } from './Comp';
8
- import { DemoError } from './DemoError';
9
- import { RenderButton } from './DemoRender';
10
- import { DownloadNudge } from './DownloadNudge';
11
- import { DragAndDropNudge } from './DragAndDropNudge';
12
- import { PlayerControls } from './PlayerControls';
13
- import { ThemeNudge } from './ThemeNudge';
14
- const style = {
15
- width: '100%',
16
- aspectRatio: '640 / 360',
17
- borderBottom: `2px solid ${PALETTE.BOX_STROKE}`,
18
- touchAction: 'none', // prevent page from scrolling when dragging children on mobile
19
- };
20
- const playerWrapper = {
21
- border: `2px solid ${PALETTE.BOX_STROKE}`,
22
- borderBottom: `4px solid ${PALETTE.BOX_STROKE}`,
23
- borderRadius: 8,
24
- width: '100%',
25
- overflow: 'hidden',
26
- };
27
- export const Demo = () => {
28
- const { colorMode } = useColorMode();
29
- const [data, setData] = useState(null);
30
- const ref = useRef(null);
31
- const [isFullscreen, setIsFullscreen] = useState(false);
32
- const [cardOrder, setCardOrder] = useState([0, 1, 2, 3]);
33
- const [emojiIndex, setEmojiIndex] = useState(0);
34
- const [error, setError] = useState(false);
35
- useEffect(() => {
36
- getDataAndProps()
37
- .then((d) => {
38
- setData(d);
39
- })
40
- .catch((err) => {
41
- // eslint-disable-next-line no-console
42
- console.log(err);
43
- setError(true);
44
- });
45
- }, []);
46
- useEffect(() => {
47
- const { current: playerRef } = ref;
48
- if (!playerRef || !data) {
49
- return;
50
- }
51
- const onFullscreenChange = () => {
52
- setIsFullscreen(playerRef.isFullscreen());
53
- };
54
- playerRef.addEventListener('fullscreenchange', onFullscreenChange);
55
- return () => {
56
- playerRef.removeEventListener('fullscreenchange', onFullscreenChange);
57
- };
58
- }, [data]);
59
- const updateCardOrder = useCallback((newCardOrder) => {
60
- setCardOrder(newCardOrder);
61
- }, []);
62
- const props = useMemo(() => {
63
- var _a, _b;
64
- return {
65
- theme: colorMode,
66
- onToggle: () => {
67
- var _a;
68
- (_a = ref.current) === null || _a === void 0 ? void 0 : _a.toggle();
69
- },
70
- cardOrder,
71
- updateCardOrder,
72
- location: (_a = data === null || data === void 0 ? void 0 : data.location) !== null && _a !== void 0 ? _a : null,
73
- trending: (_b = data === null || data === void 0 ? void 0 : data.trending) !== null && _b !== void 0 ? _b : null,
74
- onClickLeft: () => {
75
- setEmojiIndex((e) => e - 1);
76
- },
77
- onClickRight: () => {
78
- setEmojiIndex((e) => e + 1);
79
- },
80
- emojiIndex,
81
- };
82
- }, [cardOrder, emojiIndex, colorMode, data, updateCardOrder]);
83
- const onError = useCallback(() => {
84
- setError(true);
85
- }, []);
86
- return (_jsxs("div", { children: [_jsx("br", {}), _jsx("br", {}), _jsx(SectionTitle, { children: "Demo" }), _jsxs("div", { style: { height: 140, position: 'relative' }, children: [_jsx(DragAndDropNudge, {}), _jsx(ThemeNudge, {})] }), _jsxs("div", { style: playerWrapper, children: [_jsx(Player, { ref: ref, component: HomepageVideoComp, compositionWidth: 640, compositionHeight: 360, durationInFrames: 120, fps: 30, autoPlay: true, controls: isFullscreen, clickToPlay: false, style: style, initiallyMuted: true, inputProps: props, loop: true }), _jsx(PlayerControls, { playerRef: ref, durationInFrames: 120, fps: 30, children: _jsx(RenderButton, { onError: onError, renderData: data
87
- ? {
88
- cardOrder,
89
- emojiIndex,
90
- location: data.location,
91
- theme: colorMode,
92
- trending: data.trending,
93
- }
94
- : null }) })] }), error ? _jsx(DemoError, {}) : null, _jsx(DownloadNudge, {})] }));
95
- };
@@ -1,10 +0,0 @@
1
- export type Position = {
2
- x: number;
3
- y: number;
4
- };
5
- export declare const paddingAndMargin = 20;
6
- export declare const cardHeight: number;
7
- export declare const cardWidth: number;
8
- export declare const getPositionForIndex: (index: number) => Position;
9
- export declare const getInitialPositions: () => Position[];
10
- export declare const getIndexFromPosition: (clientX: number, clientY: number) => 0 | 2 | 3 | 1 | undefined;
@@ -1,29 +0,0 @@
1
- export const paddingAndMargin = 20;
2
- const height = 360;
3
- const width = 640;
4
- export const cardHeight = (height - paddingAndMargin * 3) / 2;
5
- export const cardWidth = (width - paddingAndMargin * 3) / 2;
6
- export const getPositionForIndex = (index) => {
7
- const x = index % 2 === 0 ? paddingAndMargin : cardWidth + paddingAndMargin * 2;
8
- const y = index < 2 ? paddingAndMargin : cardHeight + paddingAndMargin * 2;
9
- return { x, y };
10
- };
11
- export const getInitialPositions = () => {
12
- return new Array(4).fill(true).map((_, i) => getPositionForIndex(i));
13
- };
14
- export const getIndexFromPosition = (clientX, clientY) => {
15
- const left = clientX < cardWidth / 2 + paddingAndMargin;
16
- const top = clientY < cardHeight / 2 + paddingAndMargin;
17
- if (left && top) {
18
- return 0;
19
- }
20
- if (!left && top) {
21
- return 1;
22
- }
23
- if (left && !top) {
24
- return 2;
25
- }
26
- if (!left && !top) {
27
- return 3;
28
- }
29
- };
@@ -1,6 +0,0 @@
1
- export type Location = {
2
- country: string;
3
- city: string;
4
- latitude: number | string;
5
- longitude: number | string;
6
- };
File without changes
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- declare const EditorStarterSection: React.FC;
3
- export default EditorStarterSection;
@@ -1,8 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { BlueButton, ClearButton } from './layout/Button';
3
- import { MuxVideo } from './MuxVideo';
4
- import { SectionTitle } from './VideoAppsTitle';
5
- const EditorStarterSection = () => {
6
- return (_jsxs("div", { children: [_jsx(SectionTitle, { children: "Build your own video editor" }), _jsx("br", {}), _jsx("div", { className: 'card flex p-0 overflow-hidden', children: _jsxs("div", { className: 'flex-1 flex flex-col lg:flex-row justify-center', children: [_jsx("div", { className: 'w-full max-w-[500px] aspect-square relative overflow-hidden bg-[#eee]', children: _jsx(MuxVideo, { muxId: 'YIvIidbcAc7009B00Wr7gIbGyq67YGNlytGvMXwdsLRtc', className: 'absolute left-0 top-0 w-full h-full object-cover object-top rounded-sm rounded-tr-none rounded-br-none', loop: true, autoPlay: true, playsInline: true, muted: true }) }), _jsxs("div", { className: 'p-6 flex-1 flex flex-col h-full', children: [_jsx("div", { className: "text-4xl font-bold fontbrand mt-0", children: "Editor Starter" }), _jsx("div", { className: "text-muted mt-4 text-base fontbrand", children: "A comprehensive template that includes everything you need to create custom video editing applications with React and TypeScript." }), _jsx("div", { className: "h-5" }), _jsxs("div", { className: "flex gap-2 items-center", children: [_jsx("a", { href: "https://www.remotion.pro/editor-starter?ref=remotion.dev", target: "_blank", className: "no-underline", children: _jsx(BlueButton, { size: "sm", loading: false, children: "Purchase" }) }), _jsx("a", { href: "https://editor-starter.remotion.dev?ref=remotion.dev", target: "_blank", className: "no-underline", children: _jsx(ClearButton, { size: "sm", loading: false, children: "Demo" }) }), ' ', _jsx("a", { href: "https://remotion.dev/editor-starter", className: "no-underline", children: _jsx(ClearButton, { size: "sm", loading: false, children: "Docs" }) })] }), _jsx("br", {})] })] }) })] }));
7
- };
8
- export default EditorStarterSection;
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- declare const EvaluateRemotionSection: React.FC;
3
- export default EvaluateRemotionSection;
@@ -1,38 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- // Adjustments to the EvaluateRemotionSection.tsx to separate the flex box into two boxes
3
- // with specified alignment and positioning requirements.
4
- import { useEffect, useState } from 'react';
5
- import { BlueButton } from './layout/Button';
6
- const EvaluateRemotionSection = () => {
7
- const [dailyAvatars, setDailyAvatars] = useState([]);
8
- useEffect(() => {
9
- const avatars = [
10
- '/img/freelancers/alex.jpeg',
11
- '/img/freelancers/antoine.jpeg',
12
- '/img/freelancers/ayush.png',
13
- '/img/freelancers/benjamin.jpeg',
14
- '/img/freelancers/karel.jpeg',
15
- '/img/freelancers/lorenzo.jpeg',
16
- '/img/freelancers/mickael.jpeg',
17
- '/img/freelancers/mohit.jpeg',
18
- '/img/freelancers/pramod.jpg',
19
- '/img/freelancers/pranav.jpg',
20
- '/img/freelancers/rahul.png',
21
- '/img/freelancers/ray.jpeg',
22
- '/img/freelancers/stephen.png',
23
- '/img/freelancers/umungo.png',
24
- '/img/freelancers/yehor.jpeg',
25
- '/img/freelancers/andrei.png',
26
- // Add more avatar paths here
27
- ];
28
- const selectedAvatars = [];
29
- for (let i = 0; i < 3; i++) {
30
- const index = Math.floor(Math.random() * avatars.length);
31
- selectedAvatars.push(avatars[index]);
32
- avatars.splice(index, 1); // Remove selected avatar to avoid duplicates
33
- }
34
- setDailyAvatars(selectedAvatars);
35
- }, []);
36
- return (_jsxs("div", { className: "flex flex-col lg:flex-row gap-2", children: [_jsxs("div", { className: 'card flex-1 flex flex-col', children: [_jsx("div", { className: 'fontbrand text-2xl font-bold', children: "Evaluate Remotion for your company" }), _jsx("p", { className: 'text-muted fontbrand leading-snug', children: "Book a 20 minute call with us to get all your questions answered." }), _jsx("div", { className: "flex-1" }), _jsx("a", { target: "_blank", href: "https://cal.com/remotion/evaluate", style: { textDecoration: 'none' }, children: _jsx(BlueButton, { size: "sm", loading: false, children: "Schedule a call" }) })] }), _jsxs("div", { className: 'card flex-1 flex flex-col', children: [_jsx("div", { className: 'fontbrand text-2xl font-bold', children: "Get help for your projects" }), _jsx("p", { className: 'text-muted fontbrand leading-snug', children: "Contact our experts for help and work." }), _jsx("div", { className: "flex-1" }), _jsxs("div", { className: 'flex flex-row justify-between', children: [_jsx("a", { href: "/experts", style: { textDecoration: 'none' }, children: _jsx(BlueButton, { size: "sm", loading: false, children: "Remotion Experts" }) }), _jsx("div", { className: 'flex justify-end items-end gap-3', children: dailyAvatars.map((avatar) => (_jsx("div", { className: 'w-12 h-12 rounded-full bg-muted bg-cover bg-center -ml-5 border-2 border-black', style: { backgroundImage: `url(${avatar})` } }, avatar))) })] })] })] }));
37
- };
38
- export default EvaluateRemotionSection;
@@ -1,4 +0,0 @@
1
- import React from 'react';
2
- export declare const FreePricing: React.FC;
3
- export declare const EnterpriseLicense: React.FC;
4
- export declare const CompanyPricing: React.FC;
@@ -1,69 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import React, { useCallback, useMemo } from 'react';
3
- import { cn } from '../../cn';
4
- import { Counter } from './Counter';
5
- import { InfoTooltip } from './InfoTooltip';
6
- import { PricingBulletPoint } from './PricingBulletPoint';
7
- const Container = ({ children, }) => {
8
- return (_jsx("div", { className: 'flex flex-col border-effect rounded-xl p-5 bg-pane', children: children }));
9
- };
10
- const Title = ({ children }) => {
11
- return (_jsx("div", { className: "text-4xl font-bold leading-none fontbrand mt-2 mb-5", children: children }));
12
- };
13
- const Audience = ({ children }) => {
14
- return _jsx("div", { className: 'fontbrand text-lg leading-none', children: children });
15
- };
16
- const BottomInfo = ({ children, className, ...props }) => {
17
- return (_jsx("div", { className: cn(className, 'text-[var(--subtitle)] fontbrand text-sm'), ...props, children: children }));
18
- };
19
- const PriceTag = ({ children }) => {
20
- return (_jsx("div", { className: 'fontbrand text-2xl font-bold min-w-[80px] w-auto text-right shrink-0 ml-4', children: children }));
21
- };
22
- const SmallPriceTag = ({ children }) => {
23
- return (_jsx("div", { className: 'fontbrand text-2xl font-medium w-auto min-w-[80px] text-right shrink-0', children: children }));
24
- };
25
- export const FreePricing = () => {
26
- return (_jsxs(Container, { children: [_jsx(Audience, { children: "For individuals and companies of up to 3 people" }), _jsx(Title, { children: "Free License" }), _jsx(PricingBulletPoint, { text: "Unlimited videos", checked: true }), _jsx(PricingBulletPoint, { text: "Commercial use allowed", checked: true }), _jsx(PricingBulletPoint, { text: "Self-hosted cloud rendering allowed", checked: true }), _jsx(PricingBulletPoint, { text: "Must upgrade when your team grows", checked: false })] }));
27
- };
28
- const textUnitWrapper = {
29
- display: 'flex',
30
- flexDirection: 'column',
31
- };
32
- export const EnterpriseLicense = () => {
33
- return (_jsxs(Container, { children: [_jsx(Audience, { children: "For advanced needs" }), _jsx(Title, { children: "Enterprise License" }), _jsx(PricingBulletPoint, { text: "Everything in Company License", checked: true }), _jsx(PricingBulletPoint, { text: "Private Slack or Discord", checked: true }), _jsx(PricingBulletPoint, { text: "Monthly consulting session", checked: true }), _jsx(PricingBulletPoint, { text: "Custom terms, billing and pricing", checked: true }), _jsx(PricingBulletPoint, { text: "Compliance forms", checked: true }), _jsx(PricingBulletPoint, { text: "Prioritized feature requests", checked: true }), _jsx(PricingBulletPoint, { text: _jsxs("span", { children: [_jsx("a", { href: "https://www.remotion.dev/editor-starter", className: "underline underline-offset-4 text-inherit", children: "Editor Starter" }), ' ', "included"] }), checked: true }), _jsx("div", { style: { height: 30 } }), _jsx("div", { className: 'flex flex-row justify-end', children: _jsxs("div", { style: {
34
- ...textUnitWrapper,
35
- alignItems: 'flex-end',
36
- }, children: [_jsx(PriceTag, { children: _jsx("a", { className: 'cursor-pointer no-underline text-inherit hover:text-brand', target: '_blank', href: "https://www.remotion.pro/contact", children: "Contact us" }) }), _jsx("div", { className: 'text-[var(--subtitle)] fontbrand text-sm', children: "Starting at $500 per month" })] }) })] }));
37
- };
38
- const SEAT_PRICE = 25;
39
- const RENDER_UNIT_PRICE = 10;
40
- const icon = {
41
- height: 16,
42
- marginLeft: 4,
43
- };
44
- export const CompanyPricing = () => {
45
- const [devSeatCount, setDevSeatCount] = React.useState(1);
46
- const [cloudRenders, setCloudRenders] = React.useState(1000);
47
- const formatPrice = useCallback((price) => {
48
- const formatter = new Intl.NumberFormat('en-US', {
49
- style: 'currency',
50
- currency: 'USD',
51
- maximumFractionDigits: 0,
52
- });
53
- return formatter.format(price);
54
- }, []);
55
- const totalPrice = useMemo(() => {
56
- return Math.max(100, devSeatCount * SEAT_PRICE + (cloudRenders / 1000) * RENDER_UNIT_PRICE);
57
- }, [cloudRenders, devSeatCount]);
58
- const totalPriceString = useMemo(() => {
59
- return formatPrice(totalPrice);
60
- }, [formatPrice, totalPrice]);
61
- return (_jsxs(Container, { children: [_jsx(Audience, { children: "For collaborations and companies of 4+ people" }), _jsx(Title, { children: "Company License" }), _jsx(PricingBulletPoint, { text: "Commercial use allowed", checked: true }), _jsx(PricingBulletPoint, { text: "Self-hosted cloud rendering allowed", checked: true }), _jsx(PricingBulletPoint, { text: "Prioritized Support", checked: true }), _jsx(PricingBulletPoint, { text: "$250 Mux credits", checked: true, children: _jsx(InfoTooltip, { text: "Credits for Mux.com. Applies only to new Mux customers." }) }), _jsx("div", { style: { height: 30 } }), _jsxs("div", { className: 'flex flex-col md:flex-row md:items-center', children: [_jsxs("div", { style: textUnitWrapper, children: [_jsx("div", { className: 'fontbrand font-bold text-lg', children: "Developer Seats" }), _jsx("div", { className: 'text-muted fontbrand text-sm', children: "Number of developers working with Remotion" })] }), _jsx("div", { style: { flex: 3 }, className: "hidden md:block" }), _jsxs("div", { className: "flex flex-row items-center justify-between mt-3 md:mt-0", children: [_jsx(Counter, { count: devSeatCount, setCount: setDevSeatCount, minCount: 1 }), _jsxs(SmallPriceTag, { children: ["$", new Intl.NumberFormat('en-US', {
62
- maximumFractionDigits: 0,
63
- }).format(SEAT_PRICE * devSeatCount)] })] })] }), _jsx("div", { style: { height: 14 } }), _jsxs("div", { className: 'flex flex-col md:flex-row md:items-center', children: [_jsxs("div", { style: textUnitWrapper, children: [_jsx("div", { className: 'fontbrand font-bold text-lg', children: "Video renders" }), _jsx("div", { className: 'text-muted fontbrand text-sm', children: _jsx("a", { href: "https://www.remotion.dev/docs/render", className: "underline underline-offset-4 text-inherit", children: "Renders per month (self-hosted)" }) })] }), _jsx("div", { style: { flex: 3 }, className: "hidden md:block" }), _jsxs("div", { className: "flex flex-row items-center justify-between mt-3 md:mt-0", children: [_jsx(Counter, { count: cloudRenders, setCount: setCloudRenders, minCount: 0, step: 1000 }), _jsxs(SmallPriceTag, { children: ["$", new Intl.NumberFormat('en-US', {
64
- maximumFractionDigits: 0,
65
- }).format((cloudRenders / 1000) * RENDER_UNIT_PRICE)] })] })] }), _jsx("div", { style: { height: 14 } }), _jsx("div", { className: 'flex flex-row justify-end', children: _jsxs("div", { style: { ...textUnitWrapper, alignItems: 'flex-end' }, children: [_jsxs(PriceTag, { children: [totalPriceString, "/mo"] }), _jsx(BottomInfo, { "data-visible": totalPrice <= 100, className: "opacity-0 data-[visible=true]:opacity-100 transition-opacity", children: "The minimum is $100 per month" })] }) }), _jsx("div", { className: 'flex flex-row justify-end mt-4', children: _jsx("div", { style: {
66
- ...textUnitWrapper,
67
- alignItems: 'flex-end',
68
- }, children: _jsxs("a", { href: "https://remotion.pro/dashboard", className: "font-brand text-brand flex flex-row items-center gap-1 no-underline", children: ["Buy now", ' ', _jsx("svg", { style: icon, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 448 512", children: _jsx("path", { fill: "currentColor", d: "M438.6 278.6l-160 160C272.4 444.9 264.2 448 256 448s-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L338.8 288H32C14.33 288 .0016 273.7 .0016 256S14.33 224 32 224h306.8l-105.4-105.4c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l160 160C451.1 245.9 451.1 266.1 438.6 278.6z" }) })] }) }) })] }));
69
- };
@@ -1,2 +0,0 @@
1
- import React from 'react';
2
- export declare const GetStarted: React.FC;
@@ -1,14 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState } from 'react';
3
- import { GithubButton } from './GitHubButton';
4
- import { PlainButton } from './layout/Button';
5
- export const GetStarted = () => {
6
- const [clicked, setClicked] = useState(null);
7
- return (_jsxs("div", { className: "flex flex-col lg:flex-row items-center justify-center text-center w-full", children: [_jsx("div", { className: "w-full lg:w-auto", children: _jsxs("div", { className: "flex flex-row w-full ", children: [clicked ? (_jsx("div", { style: {
8
- animation: 'click 0.7s linear',
9
- animationFillMode: 'forwards',
10
- }, className: "absolute z-0 top-0 font-mono text-sm text-center w-full", children: "Copied!" }, clicked)) : null, _jsx("div", { className: "bg-[#333] text-white rounded-lg px-4 font-mono hover:[#444] cursor-pointer justify-center items-center flex flex-1 min-h-12", onClick: () => {
11
- navigator.clipboard.writeText('npx create-video@latest');
12
- setClicked(Date.now());
13
- }, title: "Click to copy", children: "$ npx create-video@latest" })] }) }), _jsx("div", { className: "w-2 h-2" }), _jsx("div", { className: "w-full lg:w-auto", children: _jsx("a", { className: 'no-underline w-full block', href: "https://www.youtube.com/watch?v=deg8bOoziaE", target: "_blank", children: _jsx(PlainButton, { size: "sm", loading: false, className: "w-full", children: "Watch demo" }) }) }), _jsx("div", { style: { width: 10, height: 10 } }), _jsx("a", { className: 'no-underline w-full lg:w-auto', href: "/docs", children: _jsx(PlainButton, { size: "sm", loading: false, className: "w-full", children: "Docs" }) }), _jsx("div", { className: "w-2 h-2" }), _jsx("a", { className: "no-underline w-full lg:w-auto", href: "https://remotion.dev/discord", target: "_blank", children: _jsx(PlainButton, { size: "sm", loading: false, className: "w-full", children: "Discord" }) }), _jsx("div", { className: "w-2 h-2" }), _jsx("a", { className: "no-underline w-full lg:w-auto", href: "https://github.com/remotion-dev/remotion", target: "_blank", children: _jsx(PlainButton, { size: "sm", loading: false, className: "w-full", children: _jsx(GithubButton, {}) }) })] }));
14
- };
@@ -1,2 +0,0 @@
1
- import React from 'react';
2
- export declare const GithubButton: React.FC;
@@ -1,7 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- const GithubIcon = () => {
3
- return (_jsx("svg", { viewBox: "0 0 496 512", style: { height: 24, marginRight: 8 }, children: _jsx("path", { fill: "currentColor", d: "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z" }) }));
4
- };
5
- export const GithubButton = () => {
6
- return (_jsxs("div", { className: "flex flex-row items-center text-base", children: [_jsx(GithubIcon, {}), " ", _jsx("span", { children: "GitHub" }), ' ', _jsx("div", { className: "text-xs inline-block ml-2 leading-none mt-[3px] self-center", children: '24k' })] }));
7
- };
@@ -1,6 +0,0 @@
1
- import type { Template } from 'create-video';
2
- import React from 'react';
3
- export declare const IconForTemplate: React.FC<{
4
- readonly template: Template;
5
- readonly scale: number;
6
- }>;