@remotion/promo-pages 4.0.364 → 4.0.366

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,92 +0,0 @@
1
- // Adjustments to the EvaluateRemotionSection.tsx to separate the flex box into two boxes
2
- // with specified alignment and positioning requirements.
3
-
4
- import React, {useEffect, useState} from 'react';
5
- import {BlueButton} from './layout/Button';
6
-
7
- const EvaluateRemotionSection: React.FC = () => {
8
- const [dailyAvatars, setDailyAvatars] = useState<string[]>([]);
9
-
10
- useEffect(() => {
11
- const avatars = [
12
- '/img/freelancers/alex.jpeg',
13
- '/img/freelancers/antoine.jpeg',
14
- '/img/freelancers/ayush.png',
15
- '/img/freelancers/benjamin.jpeg',
16
- '/img/freelancers/karel.jpeg',
17
- '/img/freelancers/lorenzo.jpeg',
18
- '/img/freelancers/mickael.jpeg',
19
- '/img/freelancers/mohit.jpeg',
20
- '/img/freelancers/pramod.jpg',
21
- '/img/freelancers/pranav.jpg',
22
- '/img/freelancers/rahul.png',
23
- '/img/freelancers/ray.jpeg',
24
- '/img/freelancers/stephen.png',
25
- '/img/freelancers/umungo.png',
26
- '/img/freelancers/yehor.jpeg',
27
- '/img/freelancers/andrei.png',
28
- // Add more avatar paths here
29
- ];
30
-
31
- const selectedAvatars: string[] = [];
32
- for (let i = 0; i < 3; i++) {
33
- const index = Math.floor(Math.random() * avatars.length);
34
- selectedAvatars.push(avatars[index]);
35
- avatars.splice(index, 1); // Remove selected avatar to avoid duplicates
36
- }
37
-
38
- setDailyAvatars(selectedAvatars);
39
- }, []);
40
-
41
- return (
42
- <div className="flex flex-col lg:flex-row gap-2">
43
- <div className={'card flex-1 flex flex-col'}>
44
- <div className={'fontbrand text-2xl font-bold'}>
45
- Evaluate Remotion for your company
46
- </div>
47
- <p className={'text-muted fontbrand leading-snug'}>
48
- Book a 20 minute call with us to get all your questions answered.
49
- </p>
50
- <div className="flex-1" />
51
- <a
52
- target="_blank"
53
- href="https://cal.com/remotion/evaluate"
54
- style={{textDecoration: 'none'}}
55
- >
56
- <BlueButton size="sm" loading={false}>
57
- Schedule a call
58
- </BlueButton>
59
- </a>
60
- </div>
61
- <div className={'card flex-1 flex flex-col'}>
62
- <div className={'fontbrand text-2xl font-bold'}>
63
- Get help for your projects
64
- </div>
65
- <p className={'text-muted fontbrand leading-snug'}>
66
- Contact our experts for help and work.
67
- </p>
68
- <div className="flex-1" />
69
- <div className={'flex flex-row justify-between'}>
70
- <a href="/experts" style={{textDecoration: 'none'}}>
71
- <BlueButton size="sm" loading={false}>
72
- Remotion Experts
73
- </BlueButton>
74
- </a>
75
- <div className={'flex justify-end items-end gap-3'}>
76
- {dailyAvatars.map((avatar) => (
77
- <div
78
- key={avatar}
79
- className={
80
- 'w-12 h-12 rounded-full bg-muted bg-cover bg-center -ml-5 border-2 border-black'
81
- }
82
- style={{backgroundImage: `url(${avatar})`}}
83
- />
84
- ))}
85
- </div>
86
- </div>
87
- </div>
88
- </div>
89
- );
90
- };
91
-
92
- export default EvaluateRemotionSection;
@@ -1,283 +0,0 @@
1
- import React, {useCallback, useMemo} from 'react';
2
- import {cn} from '../../cn';
3
- import {Counter} from './Counter';
4
- import {InfoTooltip} from './InfoTooltip';
5
- import {PricingBulletPoint} from './PricingBulletPoint';
6
-
7
- const Container: React.FC<{readonly children: React.ReactNode}> = ({
8
- children,
9
- }) => {
10
- return (
11
- <div className={'flex flex-col border-effect rounded-xl p-5 bg-pane'}>
12
- {children}
13
- </div>
14
- );
15
- };
16
-
17
- const Title: React.FC<{
18
- readonly children: React.ReactNode;
19
- }> = ({children}) => {
20
- return (
21
- <div className="text-4xl font-bold leading-none fontbrand mt-2 mb-5">
22
- {children}
23
- </div>
24
- );
25
- };
26
-
27
- const Audience: React.FC<{
28
- readonly children: React.ReactNode;
29
- }> = ({children}) => {
30
- return <div className={'fontbrand text-lg leading-none'}>{children}</div>;
31
- };
32
-
33
- const BottomInfo: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({
34
- children,
35
- className,
36
- ...props
37
- }) => {
38
- return (
39
- <div
40
- className={cn(className, 'text-[var(--subtitle)] fontbrand text-sm')}
41
- {...props}
42
- >
43
- {children}
44
- </div>
45
- );
46
- };
47
-
48
- const PriceTag: React.FC<{
49
- readonly children: React.ReactNode;
50
- }> = ({children}) => {
51
- return (
52
- <div
53
- className={
54
- 'fontbrand text-2xl font-bold min-w-[80px] w-auto text-right shrink-0 ml-4'
55
- }
56
- >
57
- {children}
58
- </div>
59
- );
60
- };
61
-
62
- const SmallPriceTag: React.FC<{
63
- readonly children: React.ReactNode;
64
- }> = ({children}) => {
65
- return (
66
- <div
67
- className={
68
- 'fontbrand text-2xl font-medium w-auto min-w-[80px] text-right shrink-0'
69
- }
70
- >
71
- {children}
72
- </div>
73
- );
74
- };
75
-
76
- export const FreePricing: React.FC = () => {
77
- return (
78
- <Container>
79
- <Audience>For individuals and companies of up to 3 people</Audience>
80
- <Title>Free License</Title>
81
- <PricingBulletPoint text="Unlimited videos" checked />
82
- <PricingBulletPoint text="Commercial use allowed" checked />
83
- <PricingBulletPoint text="Self-hosted cloud rendering allowed" checked />
84
- <PricingBulletPoint
85
- text="Must upgrade when your team grows"
86
- checked={false}
87
- />
88
- </Container>
89
- );
90
- };
91
-
92
- const textUnitWrapper: React.CSSProperties = {
93
- display: 'flex',
94
- flexDirection: 'column',
95
- };
96
-
97
- export const EnterpriseLicense: React.FC = () => {
98
- return (
99
- <Container>
100
- <Audience>For advanced needs</Audience>
101
- <Title>Enterprise License</Title>
102
- <PricingBulletPoint text="Everything in Company License" checked />
103
- <PricingBulletPoint text="Private Slack or Discord" checked />
104
- <PricingBulletPoint text="Monthly consulting session" checked />
105
- <PricingBulletPoint text="Custom terms, billing and pricing" checked />
106
- <PricingBulletPoint text="Compliance forms" checked />
107
- <PricingBulletPoint text="Prioritized feature requests" checked />
108
- <PricingBulletPoint
109
- text={
110
- <span>
111
- <a
112
- href="https://www.remotion.dev/editor-starter"
113
- className="underline underline-offset-4 text-inherit"
114
- >
115
- Editor Starter
116
- </a>{' '}
117
- included
118
- </span>
119
- }
120
- checked
121
- />
122
- <div style={{height: 30}} />
123
- <div className={'flex flex-row justify-end'}>
124
- <div
125
- style={{
126
- ...textUnitWrapper,
127
- alignItems: 'flex-end',
128
- }}
129
- >
130
- <PriceTag>
131
- <a
132
- className={
133
- 'cursor-pointer no-underline text-inherit hover:text-brand'
134
- }
135
- target={'_blank'}
136
- href="https://www.remotion.pro/contact"
137
- >
138
- Contact us
139
- </a>
140
- </PriceTag>
141
- <div className={'text-[var(--subtitle)] fontbrand text-sm'}>
142
- Starting at $500 per month
143
- </div>
144
- </div>
145
- </div>
146
- </Container>
147
- );
148
- };
149
-
150
- const SEAT_PRICE = 25;
151
- const RENDER_UNIT_PRICE = 10;
152
-
153
- const icon: React.CSSProperties = {
154
- height: 16,
155
- marginLeft: 4,
156
- };
157
-
158
- export const CompanyPricing: React.FC = () => {
159
- const [devSeatCount, setDevSeatCount] = React.useState(1);
160
- const [cloudRenders, setCloudRenders] = React.useState(1000);
161
-
162
- const formatPrice = useCallback((price: number) => {
163
- const formatter = new Intl.NumberFormat('en-US', {
164
- style: 'currency',
165
- currency: 'USD',
166
- maximumFractionDigits: 0,
167
- });
168
- return formatter.format(price);
169
- }, []);
170
-
171
- const totalPrice = useMemo(() => {
172
- return Math.max(
173
- 100,
174
- devSeatCount * SEAT_PRICE + (cloudRenders / 1000) * RENDER_UNIT_PRICE,
175
- );
176
- }, [cloudRenders, devSeatCount]);
177
-
178
- const totalPriceString = useMemo(() => {
179
- return formatPrice(totalPrice);
180
- }, [formatPrice, totalPrice]);
181
-
182
- return (
183
- <Container>
184
- <Audience>For collaborations and companies of 4+ people</Audience>
185
- <Title>Company License</Title>
186
- <PricingBulletPoint text="Commercial use allowed" checked />
187
- <PricingBulletPoint text="Self-hosted cloud rendering allowed" checked />
188
- <PricingBulletPoint text="Prioritized Support" checked />
189
- <PricingBulletPoint text="$250 Mux credits" checked>
190
- <InfoTooltip text="Credits for Mux.com. Applies only to new Mux customers." />
191
- </PricingBulletPoint>
192
- <div style={{height: 30}} />
193
- <div className={'flex flex-col md:flex-row md:items-center'}>
194
- <div style={textUnitWrapper}>
195
- <div className={'fontbrand font-bold text-lg'}>Developer Seats</div>
196
- <div className={'text-muted fontbrand text-sm'}>
197
- Number of developers working with Remotion
198
- </div>
199
- </div>
200
- <div style={{flex: 3}} className="hidden md:block" />
201
- <div className="flex flex-row items-center justify-between mt-3 md:mt-0">
202
- <Counter
203
- count={devSeatCount}
204
- setCount={setDevSeatCount}
205
- minCount={1}
206
- />
207
- <SmallPriceTag>
208
- $
209
- {new Intl.NumberFormat('en-US', {
210
- maximumFractionDigits: 0,
211
- }).format(SEAT_PRICE * devSeatCount)}
212
- </SmallPriceTag>
213
- </div>
214
- </div>
215
- <div style={{height: 14}} />
216
- <div className={'flex flex-col md:flex-row md:items-center'}>
217
- <div style={textUnitWrapper}>
218
- <div className={'fontbrand font-bold text-lg'}>Video renders</div>
219
- <div className={'text-muted fontbrand text-sm'}>
220
- <a
221
- href="https://www.remotion.dev/docs/render"
222
- className="underline underline-offset-4 text-inherit"
223
- >
224
- Renders per month (self-hosted)
225
- </a>
226
- </div>
227
- </div>
228
- <div style={{flex: 3}} className="hidden md:block" />
229
- <div className="flex flex-row items-center justify-between mt-3 md:mt-0">
230
- <Counter
231
- count={cloudRenders}
232
- setCount={setCloudRenders}
233
- minCount={0}
234
- step={1000}
235
- />
236
- <SmallPriceTag>
237
- $
238
- {new Intl.NumberFormat('en-US', {
239
- maximumFractionDigits: 0,
240
- }).format((cloudRenders / 1000) * RENDER_UNIT_PRICE)}
241
- </SmallPriceTag>
242
- </div>
243
- </div>
244
- <div style={{height: 14}} />
245
- <div className={'flex flex-row justify-end'}>
246
- <div style={{...textUnitWrapper, alignItems: 'flex-end'}}>
247
- <PriceTag>{totalPriceString}/mo</PriceTag>
248
- <BottomInfo
249
- data-visible={totalPrice <= 100}
250
- className="opacity-0 data-[visible=true]:opacity-100 transition-opacity"
251
- >
252
- The minimum is $100 per month
253
- </BottomInfo>
254
- </div>
255
- </div>
256
- <div className={'flex flex-row justify-end mt-4'}>
257
- <div
258
- style={{
259
- ...textUnitWrapper,
260
- alignItems: 'flex-end',
261
- }}
262
- >
263
- <a
264
- href="https://remotion.pro/dashboard"
265
- className="font-brand text-brand flex flex-row items-center gap-1 no-underline"
266
- >
267
- Buy now{' '}
268
- <svg
269
- style={icon}
270
- xmlns="http://www.w3.org/2000/svg"
271
- viewBox="0 0 448 512"
272
- >
273
- <path
274
- fill="currentColor"
275
- 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"
276
- />
277
- </svg>
278
- </a>
279
- </div>
280
- </div>
281
- </Container>
282
- );
283
- };
@@ -1,77 +0,0 @@
1
- import React, {useState} from 'react';
2
- import {GithubButton} from './GitHubButton';
3
- import {PlainButton} from './layout/Button';
4
-
5
- export const GetStarted: React.FC = () => {
6
- const [clicked, setClicked] = useState<number | null>(null);
7
-
8
- return (
9
- <div className="flex flex-col lg:flex-row items-center justify-center text-center w-full">
10
- <div className="w-full lg:w-auto">
11
- <div className="flex flex-row w-full ">
12
- {clicked ? (
13
- <div
14
- key={clicked}
15
- style={{
16
- animation: 'click 0.7s linear',
17
- animationFillMode: 'forwards',
18
- }}
19
- className="absolute z-0 top-0 font-mono text-sm text-center w-full"
20
- >
21
- Copied!
22
- </div>
23
- ) : null}
24
- <div
25
- 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"
26
- onClick={() => {
27
- navigator.clipboard.writeText('npx create-video@latest');
28
-
29
- setClicked(Date.now());
30
- }}
31
- title="Click to copy"
32
- >
33
- $ npx create-video@latest
34
- </div>
35
- </div>
36
- </div>
37
- <div className="w-2 h-2" />
38
- <div className="w-full lg:w-auto">
39
- <a
40
- className={'no-underline w-full block'}
41
- href="https://www.youtube.com/watch?v=deg8bOoziaE"
42
- target="_blank"
43
- >
44
- <PlainButton size="sm" loading={false} className="w-full">
45
- Watch demo
46
- </PlainButton>
47
- </a>
48
- </div>
49
- <div style={{width: 10, height: 10}} />
50
- <a className={'no-underline w-full lg:w-auto'} href="/docs">
51
- <PlainButton size="sm" loading={false} className="w-full">
52
- Docs
53
- </PlainButton>
54
- </a>
55
- <div className="w-2 h-2" />
56
- <a
57
- className="no-underline w-full lg:w-auto"
58
- href="https://remotion.dev/discord"
59
- target="_blank"
60
- >
61
- <PlainButton size="sm" loading={false} className="w-full">
62
- Discord
63
- </PlainButton>
64
- </a>
65
- <div className="w-2 h-2" />
66
- <a
67
- className="no-underline w-full lg:w-auto"
68
- href="https://github.com/remotion-dev/remotion"
69
- target="_blank"
70
- >
71
- <PlainButton size="sm" loading={false} className="w-full">
72
- <GithubButton />
73
- </PlainButton>
74
- </a>
75
- </div>
76
- );
77
- };
@@ -1,23 +0,0 @@
1
- import React from 'react';
2
-
3
- const GithubIcon: React.FC = () => {
4
- return (
5
- <svg viewBox="0 0 496 512" style={{height: 24, marginRight: 8}}>
6
- <path
7
- fill="currentColor"
8
- 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"
9
- />
10
- </svg>
11
- );
12
- };
13
-
14
- export const GithubButton: React.FC = () => {
15
- return (
16
- <div className="flex flex-row items-center text-base">
17
- <GithubIcon /> <span>GitHub</span>{' '}
18
- <div className="text-xs inline-block ml-2 leading-none mt-[3px] self-center">
19
- {'24k'}
20
- </div>
21
- </div>
22
- );
23
- };
@@ -1,170 +0,0 @@
1
- import type {Template} from 'create-video';
2
- import React from 'react';
3
- import {Blank} from '../icons/blank';
4
- import {CodeHike} from '../icons/code-hike';
5
- import {Cubes} from '../icons/cubes';
6
- import {JSIcon} from '../icons/js';
7
- import {MusicIcon} from '../icons/music';
8
- import {NextIcon} from '../icons/next';
9
- import {OverlayIcon} from '../icons/overlay';
10
- import {Recorder} from '../icons/recorder';
11
- import {ReactRouterIcon} from '../icons/remix';
12
- import {SkiaIcon} from '../icons/skia';
13
- import {Stargazer} from '../icons/stargazer';
14
- import {StillIcon} from '../icons/still';
15
- import {TikTok} from '../icons/tiktok';
16
- import {TypeScriptIcon} from '../icons/ts';
17
- import {TTSIcon} from '../icons/tts';
18
- import {Waveform} from '../icons/waveform';
19
-
20
- export const IconForTemplate: React.FC<{
21
- readonly template: Template;
22
- readonly scale: number;
23
- }> = ({template, scale = 1}) => {
24
- if (template.cliId === 'hello-world') {
25
- return (
26
- <TypeScriptIcon
27
- style={{
28
- height: scale * 48,
29
- }}
30
- />
31
- );
32
- }
33
-
34
- if (template.cliId === 'blank') {
35
- return (
36
- <Blank
37
- style={{
38
- height: scale * 36,
39
- overflow: 'visible',
40
- }}
41
- />
42
- );
43
- }
44
-
45
- if (template.cliId === 'javascript') {
46
- return (
47
- <JSIcon
48
- style={{
49
- height: scale * 40,
50
- }}
51
- />
52
- );
53
- }
54
-
55
- if (template.cliId === 'three') {
56
- return (
57
- <Cubes
58
- style={{
59
- height: scale * 36,
60
- }}
61
- />
62
- );
63
- }
64
-
65
- if (template.cliId === 'still') {
66
- return (
67
- <StillIcon
68
- style={{
69
- height: scale * 36,
70
- }}
71
- />
72
- );
73
- }
74
-
75
- if (template.cliId === 'audiogram') {
76
- return (
77
- <Waveform
78
- style={{
79
- height: scale * 36,
80
- }}
81
- />
82
- );
83
- }
84
-
85
- if (template.cliId === 'tts') {
86
- return (
87
- <TTSIcon
88
- style={{
89
- height: scale * 36,
90
- }}
91
- />
92
- );
93
- }
94
-
95
- if (template.cliId === 'google-tts') {
96
- return (
97
- <TTSIcon
98
- style={{
99
- height: scale * 36,
100
- }}
101
- />
102
- );
103
- }
104
-
105
- if (template.cliId === 'skia') {
106
- return (
107
- <SkiaIcon
108
- style={{
109
- height: scale * 32,
110
- }}
111
- />
112
- );
113
- }
114
-
115
- if (template.cliId === 'music-visualization') {
116
- return (
117
- <MusicIcon
118
- style={{
119
- height: scale * 32,
120
- }}
121
- />
122
- );
123
- }
124
-
125
- if (template.cliId === 'react-router') {
126
- return (
127
- <ReactRouterIcon
128
- style={{
129
- height: scale * 32,
130
- }}
131
- />
132
- );
133
- }
134
-
135
- if (template.cliId === 'overlay') {
136
- return <OverlayIcon style={{height: scale * 42}} />;
137
- }
138
-
139
- if (template.cliId === 'recorder') {
140
- return <Recorder style={{height: scale * 36}} />;
141
- }
142
-
143
- if (
144
- template.cliId === 'next' ||
145
- template.cliId === 'next-tailwind' ||
146
- template.cliId === 'next-pages-dir'
147
- ) {
148
- return <NextIcon style={{height: scale * 36}} />;
149
- }
150
-
151
- if (template.cliId === 'stargazer') {
152
- return <Stargazer style={{height: scale * 36}} />;
153
- }
154
-
155
- if (template.cliId === 'tiktok') {
156
- return <TikTok style={{height: scale * 36}} />;
157
- }
158
-
159
- if (template.cliId === 'code-hike') {
160
- return <CodeHike style={{height: scale * 36}} />;
161
- }
162
-
163
- return (
164
- <Blank
165
- style={{
166
- height: scale * 40,
167
- }}
168
- />
169
- );
170
- };