@remotion/promo-pages 4.0.437 → 4.0.438

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 (275) hide show
  1. package/dist/Homepage.js +13 -3
  2. package/dist/cn.d.ts +2 -0
  3. package/dist/cn.js +5 -0
  4. package/dist/components/3DEngine/ButtonDemo.d.ts +2 -0
  5. package/dist/components/3DEngine/ButtonDemo.js +43 -0
  6. package/dist/components/3DEngine/Faces.d.ts +5 -0
  7. package/dist/components/3DEngine/Faces.js +7 -0
  8. package/dist/components/3DEngine/Outer.d.ts +8 -0
  9. package/dist/components/3DEngine/Outer.js +56 -0
  10. package/dist/components/3DEngine/Switch.d.ts +4 -0
  11. package/dist/components/3DEngine/Switch.js +4 -0
  12. package/dist/components/3DEngine/get-child-node-from.d.ts +1 -0
  13. package/dist/components/3DEngine/get-child-node-from.js +14 -0
  14. package/dist/components/3DEngine/hover-transforms.d.ts +9 -0
  15. package/dist/components/3DEngine/hover-transforms.js +177 -0
  16. package/dist/components/BackButton.d.ts +6 -0
  17. package/dist/components/BackButton.js +9 -0
  18. package/dist/components/CommandCopyButton.d.ts +5 -0
  19. package/dist/components/CommandCopyButton.js +4 -0
  20. package/dist/components/Homepage.d.ts +6 -0
  21. package/dist/components/Homepage.js +20 -0
  22. package/dist/components/ManageTeamMembers.d.ts +2 -0
  23. package/dist/components/ManageTeamMembers.js +42 -0
  24. package/dist/components/Spinner.d.ts +3 -0
  25. package/dist/components/Spinner.js +4 -0
  26. package/dist/components/TeamPicture.d.ts +1 -0
  27. package/dist/components/TeamPicture.js +4 -0
  28. package/dist/components/design.d.ts +1 -0
  29. package/dist/components/design.js +33 -0
  30. package/dist/components/experts/ExpertsPage.d.ts +11 -0
  31. package/dist/components/experts/ExpertsPage.js +50 -0
  32. package/dist/components/experts/experts-data.d.ts +15 -0
  33. package/dist/components/experts/experts-data.js +263 -0
  34. package/dist/components/experts/experts-icons.d.ts +7 -0
  35. package/dist/components/experts/experts-icons.js +36 -0
  36. package/dist/components/experts.d.ts +3 -0
  37. package/dist/components/experts.js +2 -0
  38. package/dist/components/homepage/BackgroundAnimation.d.ts +2 -0
  39. package/dist/components/homepage/BackgroundAnimation.js +66 -0
  40. package/dist/components/homepage/ChooseTemplate.d.ts +2 -0
  41. package/dist/components/homepage/ChooseTemplate.js +25 -0
  42. package/dist/components/homepage/CommunityStats.d.ts +3 -0
  43. package/dist/components/homepage/CommunityStats.js +6 -0
  44. package/dist/components/homepage/CommunityStatsItems.d.ts +7 -0
  45. package/dist/components/homepage/CommunityStatsItems.js +58 -0
  46. package/dist/components/homepage/Demo/Card.d.ts +15 -0
  47. package/dist/components/homepage/Demo/Card.js +174 -0
  48. package/dist/components/homepage/Demo/Cards.d.ts +15 -0
  49. package/dist/components/homepage/Demo/Cards.js +57 -0
  50. package/dist/components/homepage/Demo/Comp.d.ts +38 -0
  51. package/dist/components/homepage/Demo/Comp.js +72 -0
  52. package/dist/components/homepage/Demo/CurrentCountry.d.ts +9 -0
  53. package/dist/components/homepage/Demo/CurrentCountry.js +48 -0
  54. package/dist/components/homepage/Demo/DemoError.d.ts +2 -0
  55. package/dist/components/homepage/Demo/DemoError.js +10 -0
  56. package/dist/components/homepage/Demo/DemoErrorIcon.d.ts +2 -0
  57. package/dist/components/homepage/Demo/DemoErrorIcon.js +16 -0
  58. package/dist/components/homepage/Demo/DemoRender.d.ts +33 -0
  59. package/dist/components/homepage/Demo/DemoRender.js +107 -0
  60. package/dist/components/homepage/Demo/DigitWheel.d.ts +9 -0
  61. package/dist/components/homepage/Demo/DigitWheel.js +94 -0
  62. package/dist/components/homepage/Demo/DisplayedEmoji.d.ts +5 -0
  63. package/dist/components/homepage/Demo/DisplayedEmoji.js +59 -0
  64. package/dist/components/homepage/Demo/DoneCheckmark.d.ts +2 -0
  65. package/dist/components/homepage/Demo/DoneCheckmark.js +20 -0
  66. package/dist/components/homepage/Demo/DownloadNudge.d.ts +2 -0
  67. package/dist/components/homepage/Demo/DownloadNudge.js +27 -0
  68. package/dist/components/homepage/Demo/DragAndDropNudge.d.ts +3 -0
  69. package/dist/components/homepage/Demo/DragAndDropNudge.js +26 -0
  70. package/dist/components/homepage/Demo/EmojiCard.d.ts +10 -0
  71. package/dist/components/homepage/Demo/EmojiCard.js +120 -0
  72. package/dist/components/homepage/Demo/Minus.d.ts +5 -0
  73. package/dist/components/homepage/Demo/Minus.js +11 -0
  74. package/dist/components/homepage/Demo/PlayPauseButton.d.ts +5 -0
  75. package/dist/components/homepage/Demo/PlayPauseButton.js +47 -0
  76. package/dist/components/homepage/Demo/PlayerControls.d.ts +8 -0
  77. package/dist/components/homepage/Demo/PlayerControls.js +15 -0
  78. package/dist/components/homepage/Demo/PlayerSeekBar.d.ts +11 -0
  79. package/dist/components/homepage/Demo/PlayerSeekBar.js +216 -0
  80. package/dist/components/homepage/Demo/PlayerVolume.d.ts +5 -0
  81. package/dist/components/homepage/Demo/PlayerVolume.js +53 -0
  82. package/dist/components/homepage/Demo/Progress.d.ts +4 -0
  83. package/dist/components/homepage/Demo/Progress.js +14 -0
  84. package/dist/components/homepage/Demo/Spinner.d.ts +5 -0
  85. package/dist/components/homepage/Demo/Spinner.js +37 -0
  86. package/dist/components/homepage/Demo/Switcher.d.ts +6 -0
  87. package/dist/components/homepage/Demo/Switcher.js +25 -0
  88. package/dist/components/homepage/Demo/Temperature.d.ts +6 -0
  89. package/dist/components/homepage/Demo/Temperature.js +21 -0
  90. package/dist/components/homepage/Demo/TemperatureNumber.d.ts +5 -0
  91. package/dist/components/homepage/Demo/TemperatureNumber.js +36 -0
  92. package/dist/components/homepage/Demo/ThemeNudge.d.ts +3 -0
  93. package/dist/components/homepage/Demo/ThemeNudge.js +35 -0
  94. package/dist/components/homepage/Demo/TimeDisplay.d.ts +6 -0
  95. package/dist/components/homepage/Demo/TimeDisplay.js +27 -0
  96. package/dist/components/homepage/Demo/TrendingRepos.d.ts +6 -0
  97. package/dist/components/homepage/Demo/TrendingRepos.js +65 -0
  98. package/dist/components/homepage/Demo/icons.d.ts +10 -0
  99. package/dist/components/homepage/Demo/icons.js +22 -0
  100. package/dist/components/homepage/Demo/index.d.ts +2 -0
  101. package/dist/components/homepage/Demo/index.js +95 -0
  102. package/dist/components/homepage/Demo/math.d.ts +10 -0
  103. package/dist/components/homepage/Demo/math.js +29 -0
  104. package/dist/components/homepage/Demo/types.d.ts +6 -0
  105. package/dist/components/homepage/Demo/types.js +0 -0
  106. package/dist/components/homepage/EditorStarterSection.d.ts +3 -0
  107. package/dist/components/homepage/EditorStarterSection.js +8 -0
  108. package/dist/components/homepage/EvaluateRemotion.d.ts +3 -0
  109. package/dist/components/homepage/EvaluateRemotion.js +21 -0
  110. package/dist/components/homepage/FreePricing.d.ts +4 -0
  111. package/dist/components/homepage/FreePricing.js +134 -0
  112. package/dist/components/homepage/GetStartedStrip.d.ts +2 -0
  113. package/dist/components/homepage/GetStartedStrip.js +14 -0
  114. package/dist/components/homepage/GitHubButton.d.ts +2 -0
  115. package/dist/components/homepage/GitHubButton.js +7 -0
  116. package/dist/components/homepage/IconForTemplate.d.ts +6 -0
  117. package/dist/components/homepage/IconForTemplate.js +105 -0
  118. package/dist/components/homepage/IfYouKnowReact.d.ts +3 -0
  119. package/dist/components/homepage/IfYouKnowReact.js +23 -0
  120. package/dist/components/homepage/InfoTooltip.d.ts +6 -0
  121. package/dist/components/homepage/InfoTooltip.js +6 -0
  122. package/dist/components/homepage/MoreTemplatesButton.d.ts +2 -0
  123. package/dist/components/homepage/MoreTemplatesButton.js +11 -0
  124. package/dist/components/homepage/MuxVideo.d.ts +7 -0
  125. package/dist/components/homepage/MuxVideo.js +45 -0
  126. package/dist/components/homepage/NewsletterButton.d.ts +2 -0
  127. package/dist/components/homepage/NewsletterButton.js +38 -0
  128. package/dist/components/homepage/ParameterizeAndEdit.d.ts +2 -0
  129. package/dist/components/homepage/ParameterizeAndEdit.js +22 -0
  130. package/dist/components/homepage/Pricing.d.ts +2 -0
  131. package/dist/components/homepage/Pricing.js +15 -0
  132. package/dist/components/homepage/PricingBulletPoint.d.ts +6 -0
  133. package/dist/components/homepage/PricingBulletPoint.js +19 -0
  134. package/dist/components/homepage/RealMp4Videos.d.ts +2 -0
  135. package/dist/components/homepage/RealMp4Videos.js +41 -0
  136. package/dist/components/homepage/Spacer.d.ts +2 -0
  137. package/dist/components/homepage/Spacer.js +4 -0
  138. package/dist/components/homepage/TemplateIcon.d.ts +5 -0
  139. package/dist/components/homepage/TemplateIcon.js +24 -0
  140. package/dist/components/homepage/TextInput.d.ts +7 -0
  141. package/dist/components/homepage/TextInput.js +34 -0
  142. package/dist/components/homepage/TrustedByBanner.d.ts +2 -0
  143. package/dist/components/homepage/TrustedByBanner.js +27 -0
  144. package/dist/components/homepage/VideoApps.d.ts +4 -0
  145. package/dist/components/homepage/VideoApps.js +72 -0
  146. package/dist/components/homepage/VideoAppsShowcase.d.ts +3 -0
  147. package/dist/components/homepage/VideoAppsShowcase.js +139 -0
  148. package/dist/components/homepage/VideoAppsTitle.d.ts +4 -0
  149. package/dist/components/homepage/VideoAppsTitle.js +4 -0
  150. package/dist/components/homepage/VideoPlayerWithControls.d.ts +20 -0
  151. package/dist/components/homepage/VideoPlayerWithControls.js +105 -0
  152. package/dist/components/homepage/WriteInReact.d.ts +2 -0
  153. package/dist/components/homepage/WriteInReact.js +10 -0
  154. package/dist/components/homepage/YouAreHere.d.ts +2 -0
  155. package/dist/components/homepage/YouAreHere.js +23 -0
  156. package/dist/components/homepage/layout/Button.d.ts +22 -0
  157. package/dist/components/homepage/layout/Button.js +30 -0
  158. package/dist/components/homepage/layout/colors.d.ts +13 -0
  159. package/dist/components/homepage/layout/colors.js +14 -0
  160. package/dist/components/homepage/layout/use-color-mode.d.ts +21 -0
  161. package/dist/components/homepage/layout/use-color-mode.js +22 -0
  162. package/dist/components/homepage/layout/use-el-size.d.ts +5 -0
  163. package/dist/components/homepage/layout/use-el-size.js +40 -0
  164. package/dist/components/homepage/layout/use-mobile-layout.d.ts +1 -0
  165. package/dist/components/homepage/layout/use-mobile-layout.js +6 -0
  166. package/dist/components/icons/blank.d.ts +3 -0
  167. package/dist/components/icons/blank.js +4 -0
  168. package/dist/components/icons/brain.d.ts +2 -0
  169. package/dist/components/icons/brain.js +4 -0
  170. package/dist/components/icons/clone.d.ts +2 -0
  171. package/dist/components/icons/clone.js +2 -0
  172. package/dist/components/icons/code-hike.d.ts +3 -0
  173. package/dist/components/icons/code-hike.js +4 -0
  174. package/dist/components/icons/cubes.d.ts +3 -0
  175. package/dist/components/icons/cubes.js +4 -0
  176. package/dist/components/icons/editor.d.ts +3 -0
  177. package/dist/components/icons/editor.js +4 -0
  178. package/dist/components/icons/electron.d.ts +4 -0
  179. package/dist/components/icons/electron.js +4 -0
  180. package/dist/components/icons/js.d.ts +3 -0
  181. package/dist/components/icons/js.js +4 -0
  182. package/dist/components/icons/music.d.ts +2 -0
  183. package/dist/components/icons/music.js +4 -0
  184. package/dist/components/icons/next.d.ts +4 -0
  185. package/dist/components/icons/next.js +4 -0
  186. package/dist/components/icons/overlay.d.ts +3 -0
  187. package/dist/components/icons/overlay.js +4 -0
  188. package/dist/components/icons/prompt-to-video.d.ts +2 -0
  189. package/dist/components/icons/prompt-to-video.js +4 -0
  190. package/dist/components/icons/recorder.d.ts +3 -0
  191. package/dist/components/icons/recorder.js +4 -0
  192. package/dist/components/icons/remix.d.ts +3 -0
  193. package/dist/components/icons/remix.js +4 -0
  194. package/dist/components/icons/render-server.d.ts +3 -0
  195. package/dist/components/icons/render-server.js +4 -0
  196. package/dist/components/icons/skia.d.ts +3 -0
  197. package/dist/components/icons/skia.js +4 -0
  198. package/dist/components/icons/stargazer.d.ts +3 -0
  199. package/dist/components/icons/stargazer.js +4 -0
  200. package/dist/components/icons/still.d.ts +3 -0
  201. package/dist/components/icons/still.js +4 -0
  202. package/dist/components/icons/tailwind.d.ts +3 -0
  203. package/dist/components/icons/tailwind.js +4 -0
  204. package/dist/components/icons/tiktok.d.ts +3 -0
  205. package/dist/components/icons/tiktok.js +4 -0
  206. package/dist/components/icons/timeline.d.ts +3 -0
  207. package/dist/components/icons/timeline.js +4 -0
  208. package/dist/components/icons/ts.d.ts +3 -0
  209. package/dist/components/icons/ts.js +4 -0
  210. package/dist/components/icons/undo.d.ts +3 -0
  211. package/dist/components/icons/undo.js +2 -0
  212. package/dist/components/icons/vercel.d.ts +4 -0
  213. package/dist/components/icons/vercel.js +4 -0
  214. package/dist/components/icons/waveform.d.ts +3 -0
  215. package/dist/components/icons/waveform.js +4 -0
  216. package/dist/components/prompts/CardLikeButton.d.ts +5 -0
  217. package/dist/components/prompts/CardLikeButton.js +49 -0
  218. package/dist/components/prompts/ClipboardIcon.d.ts +5 -0
  219. package/dist/components/prompts/ClipboardIcon.js +4 -0
  220. package/dist/components/prompts/CopyPromptButton.d.ts +4 -0
  221. package/dist/components/prompts/CopyPromptButton.js +13 -0
  222. package/dist/components/prompts/LikeButton.d.ts +5 -0
  223. package/dist/components/prompts/LikeButton.js +49 -0
  224. package/dist/components/prompts/MuxPlayer.d.ts +8 -0
  225. package/dist/components/prompts/MuxPlayer.js +21 -0
  226. package/dist/components/prompts/NewBackButton.d.ts +5 -0
  227. package/dist/components/prompts/NewBackButton.js +8 -0
  228. package/dist/components/prompts/Page.d.ts +8 -0
  229. package/dist/components/prompts/Page.js +7 -0
  230. package/dist/components/prompts/PromptsGallery.d.ts +7 -0
  231. package/dist/components/prompts/PromptsGallery.js +60 -0
  232. package/dist/components/prompts/PromptsShow.d.ts +5 -0
  233. package/dist/components/prompts/PromptsShow.js +17 -0
  234. package/dist/components/prompts/PromptsSubmit.d.ts +2 -0
  235. package/dist/components/prompts/PromptsSubmit.js +173 -0
  236. package/dist/components/prompts/config.d.ts +1 -0
  237. package/dist/components/prompts/config.js +1 -0
  238. package/dist/components/prompts/prompt-helpers.d.ts +8 -0
  239. package/dist/components/prompts/prompt-helpers.js +76 -0
  240. package/dist/components/prompts/prompt-types.d.ts +14 -0
  241. package/dist/components/prompts/prompt-types.js +0 -0
  242. package/dist/components/prompts/use-heart-animation.d.ts +5 -0
  243. package/dist/components/prompts/use-heart-animation.js +29 -0
  244. package/dist/components/team/TeamCards.d.ts +6 -0
  245. package/dist/components/team/TeamCards.js +19 -0
  246. package/dist/components/team/TitleTeamCards.d.ts +2 -0
  247. package/dist/components/team/TitleTeamCards.js +6 -0
  248. package/dist/components/team.d.ts +3 -0
  249. package/dist/components/team.js +14 -0
  250. package/dist/components/template-modal-content.d.ts +5 -0
  251. package/dist/components/template-modal-content.js +73 -0
  252. package/dist/components/templates.d.ts +2 -0
  253. package/dist/components/templates.js +27 -0
  254. package/dist/design.js +1 -1
  255. package/dist/experts.js +1 -1
  256. package/dist/helpers/mobile-layout.d.ts +1 -0
  257. package/dist/helpers/mobile-layout.js +6 -0
  258. package/dist/helpers/use-el-size.d.ts +5 -0
  259. package/dist/helpers/use-el-size.js +40 -0
  260. package/dist/homepage/Pricing.js +1 -1
  261. package/dist/main.d.ts +1 -0
  262. package/dist/main.js +6 -0
  263. package/dist/prompts/PromptsGallery.js +1 -1
  264. package/dist/prompts/PromptsShow.js +1 -1
  265. package/dist/prompts/PromptsSubmit.js +1 -1
  266. package/dist/prompts-show.d.ts +1 -0
  267. package/dist/prompts-show.js +20 -0
  268. package/dist/prompts-submit.d.ts +1 -0
  269. package/dist/prompts-submit.js +6 -0
  270. package/dist/prompts.d.ts +1 -0
  271. package/dist/prompts.js +6 -0
  272. package/dist/team.d.ts +1 -0
  273. package/dist/template-modal-content.js +1 -1
  274. package/dist/templates.js +1 -1
  275. package/package.json +13 -13
package/dist/Homepage.js CHANGED
@@ -1003,7 +1003,7 @@ var useIsPlayer = () => {
1003
1003
  function truthy(value) {
1004
1004
  return Boolean(value);
1005
1005
  }
1006
- var VERSION = "4.0.437";
1006
+ var VERSION = "4.0.438";
1007
1007
  var checkMultipleRemotionVersions = () => {
1008
1008
  if (typeof globalThis === "undefined") {
1009
1009
  return;
@@ -29924,7 +29924,7 @@ class MediaPlayer {
29924
29924
  const timeInSeconds = globalTime - this.sequenceOffset;
29925
29925
  const localTime = this.getTrimmedTime(timeInSeconds);
29926
29926
  if (localTime === null) {
29927
- throw new Error("hmm, should not render!");
29927
+ return { type: "not-started" };
29928
29928
  }
29929
29929
  const targetTime = (mediaTimestamp - localTime) / (this.playbackRate * this.globalPlaybackRate);
29930
29930
  return this.sharedAudioContext.scheduleAudioNode({
@@ -34818,7 +34818,7 @@ import {
34818
34818
  import { BufferTarget, StreamTarget } from "mediabunny";
34819
34819
 
34820
34820
  // ../core/dist/esm/version.mjs
34821
- var VERSION2 = "4.0.437";
34821
+ var VERSION2 = "4.0.438";
34822
34822
 
34823
34823
  // ../web-renderer/dist/esm/index.mjs
34824
34824
  import { AudioSample, VideoSample } from "mediabunny";
@@ -38074,10 +38074,15 @@ var drawText = ({
38074
38074
  fontSize,
38075
38075
  fontWeight,
38076
38076
  fontStyle,
38077
+ fontVariantCaps,
38078
+ fontKerning,
38079
+ fontStretch,
38077
38080
  direction,
38078
38081
  writingMode,
38079
38082
  letterSpacing,
38083
+ wordSpacing,
38080
38084
  textTransform,
38085
+ textRendering,
38081
38086
  webkitTextFillColor,
38082
38087
  webkitTextStrokeWidth,
38083
38088
  webkitTextStrokeColor,
@@ -38100,8 +38105,13 @@ var drawText = ({
38100
38105
  });
38101
38106
  const fontSizePx = parseFloat(fontSize);
38102
38107
  contextToDraw.font = `${fontStyle} ${fontWeight} ${fontSizePx}px ${fontFamily}`;
38108
+ contextToDraw.fontVariantCaps = fontVariantCaps;
38109
+ contextToDraw.fontKerning = fontKerning;
38110
+ contextToDraw.fontStretch = fontStretch;
38111
+ contextToDraw.textRendering = textRendering;
38103
38112
  contextToDraw.fillStyle = onlyBackgroundClipText ? "black" : webkitTextFillColor;
38104
38113
  contextToDraw.letterSpacing = letterSpacing;
38114
+ contextToDraw.wordSpacing = wordSpacing;
38105
38115
  const strokeWidth2 = parseFloat(webkitTextStrokeWidth);
38106
38116
  const hasStroke = strokeWidth2 > 0;
38107
38117
  if (hasStroke) {
package/dist/cn.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import { type ClassValue } from 'clsx';
2
+ export declare function cn(...inputs: ClassValue[]): string;
package/dist/cn.js ADDED
@@ -0,0 +1,5 @@
1
+ import { clsx } from 'clsx';
2
+ import { twMerge } from 'tailwind-merge';
3
+ export function cn(...inputs) {
4
+ return twMerge(clsx(inputs));
5
+ }
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const Button3D: React.FC<React.ButtonHTMLAttributes<HTMLButtonElement>>;
@@ -0,0 +1,43 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useCallback, useRef, useState } from 'react';
3
+ import { cn } from '../../cn';
4
+ import { useHoverTransforms } from './hover-transforms';
5
+ import { Outer } from './Outer';
6
+ export const Button3D = ({ children, className, disabled, ...buttonProps }) => {
7
+ const [dimensions, setDimensions] = useState(null);
8
+ const ref = useRef(null);
9
+ const { isActive, progress } = useHoverTransforms(ref, Boolean(disabled));
10
+ const onPointerEnter = useCallback((e) => {
11
+ if (e.pointerType !== 'mouse') {
12
+ return;
13
+ }
14
+ setDimensions((prevDim) => {
15
+ if (prevDim) {
16
+ return prevDim;
17
+ }
18
+ if (!ref.current) {
19
+ throw new Error('Ref is not set');
20
+ }
21
+ const { childNodes } = ref.current;
22
+ if (childNodes.length === 0) {
23
+ throw new Error('No child nodes');
24
+ }
25
+ const childNode = childNodes[0];
26
+ if (!childNode) {
27
+ throw new Error('No child node');
28
+ }
29
+ const rect = childNode.getBoundingClientRect();
30
+ const { borderRadius } = getComputedStyle(childNode);
31
+ const cornerRadius = borderRadius.includes('e+0')
32
+ ? Infinity
33
+ : parseInt(borderRadius !== null && borderRadius !== void 0 ? borderRadius : '0', 10);
34
+ return {
35
+ width: rect.width,
36
+ height: rect.height,
37
+ borderRadius: Math.min(cornerRadius, rect.width / 2, rect.height / 2),
38
+ };
39
+ });
40
+ }, []);
41
+ const content = (_jsx("button", { type: "button", disabled: disabled, className: cn('text-black', 'flex', 'justify-center', 'bg-white', 'items-center', 'font-brand', 'border-solid', 'text-[1em]', 'rounded-md', 'border-black', 'border-2', 'border-b-4', 'cursor-pointer', 'px-4', 'py-3', 'disabled:cursor-default', 'disabled:border-gray-500', 'disabled:text-gray-500', 'transition-colors', className), ...buttonProps, children: children }));
42
+ return (_jsx("div", { ref: ref, className: "contents", onPointerEnter: onPointerEnter, children: dimensions && (isActive || progress > 0) ? (_jsx(Outer, { parentRef: ref, width: dimensions.width, height: dimensions.height, cornerRadius: dimensions.borderRadius, hoverTransform: progress, children: content })) : (content) }));
43
+ };
@@ -0,0 +1,5 @@
1
+ import type { FaceType } from '@remotion/svg-3d-engine';
2
+ import React from 'react';
3
+ export declare const Faces: React.FC<{
4
+ readonly elements: FaceType[];
5
+ }>;
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { threeDIntoSvgPath } from '@remotion/svg-3d-engine';
3
+ export const Faces = ({ elements, ...svgProps }) => {
4
+ return (_jsx(_Fragment, { children: elements.map(({ points, color, crispEdges }, idx) => {
5
+ return (_jsx("path", { d: threeDIntoSvgPath(points), fill: color, shapeRendering: crispEdges ? 'crispEdges' : undefined, ...svgProps }, idx));
6
+ }) }));
7
+ };
@@ -0,0 +1,8 @@
1
+ export declare const Outer: React.FC<{
2
+ children: React.ReactNode;
3
+ width: number;
4
+ height: number;
5
+ cornerRadius: number;
6
+ hoverTransform: number;
7
+ parentRef: React.RefObject<HTMLDivElement | null>;
8
+ }>;
@@ -0,0 +1,56 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { parsePath, PathInternals, reduceInstructions } from '@remotion/paths';
3
+ import { makeRect } from '@remotion/shapes';
4
+ import { extrudeAndTransformElement, interpolateMatrix4d, makeMatrix3dTransform, reduceMatrices, rotateX, rotateY, scaled, translateX, translateY, translateZ, } from '@remotion/svg-3d-engine';
5
+ import { interpolate } from 'remotion';
6
+ import { Faces } from './Faces';
7
+ import { useClickTransforms, useMousePosition } from './hover-transforms';
8
+ export const Outer = ({ children, width, height, cornerRadius, hoverTransform, parentRef }) => {
9
+ const clickTransform = useClickTransforms(parentRef);
10
+ const angle = useMousePosition(parentRef);
11
+ const appropriateScale = Math.min(1.1, (20 + width) / width);
12
+ const transformationUnhovered = reduceMatrices([
13
+ rotateX(-Math.PI / 20),
14
+ ]);
15
+ const transformationHovered = reduceMatrices([
16
+ scaled(appropriateScale),
17
+ rotateX(-Math.PI / 16),
18
+ rotateX(Math.sin(angle) / 4),
19
+ rotateY(-Math.cos(angle) / 4),
20
+ ]);
21
+ const transformation = interpolateMatrix4d(hoverTransform, transformationUnhovered, transformationHovered);
22
+ const depthFromClick = clickTransform * 15;
23
+ const depthFromHover = interpolate(hoverTransform, [0, 1], [10, 20]);
24
+ const depth = depthFromHover;
25
+ const frontFace = reduceMatrices([
26
+ translateZ(-depth / 2 + depthFromClick),
27
+ transformation,
28
+ ]);
29
+ const centerOriented = reduceMatrices([
30
+ translateX(-width / 2),
31
+ translateY(-height / 2),
32
+ transformation,
33
+ translateX(width / 2),
34
+ translateY(height / 2),
35
+ ]);
36
+ const { path, instructions } = makeRect({ height, width, cornerRadius });
37
+ const { viewBox } = PathInternals.getBoundingBoxFromInstructions(reduceInstructions(instructions));
38
+ const inbetween = extrudeAndTransformElement({
39
+ sideColor: 'black',
40
+ crispEdges: false,
41
+ depth,
42
+ pressInDepth: depthFromClick,
43
+ points: parsePath(path),
44
+ description: 'rect',
45
+ transformations: centerOriented,
46
+ });
47
+ return (_jsxs("div", { className: "relative", style: { width, height }, children: [_jsx("svg", { viewBox: viewBox, style: {
48
+ overflow: 'visible',
49
+ height,
50
+ width,
51
+ position: 'absolute',
52
+ top: 0,
53
+ }, pointerEvents: "none", children: _jsx(Faces, { elements: inbetween }) }), _jsx("div", { style: {
54
+ transform: makeMatrix3dTransform(frontFace),
55
+ }, children: children })] }));
56
+ };
@@ -0,0 +1,4 @@
1
+ export declare const Switch: React.FC<{
2
+ readonly active: boolean;
3
+ readonly onToggle: () => void;
4
+ }>;
@@ -0,0 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export const Switch = ({ active, onToggle }) => {
3
+ return (_jsx("div", { "data-active": active, className: "h-6 transition-all rounded-full w-12 border-2 border-b-4 bg-gray-200 p-[2px] cursor-pointer data-[active=true]:bg-brand border-black relative", onClick: onToggle, children: _jsx("div", { "data-active": active, className: "h-4 w-4 left-[4px] top-[4px] transition-all rounded-full bg-white border-2 border-black absolute data-[active=true]:left-[calc(100%-24px)]" }) }));
4
+ };
@@ -0,0 +1 @@
1
+ export declare const getChildNodeFrom: (htmlElement: HTMLDivElement | null) => HTMLElement | null;
@@ -0,0 +1,14 @@
1
+ export const getChildNodeFrom = (htmlElement) => {
2
+ if (!htmlElement) {
3
+ return null;
4
+ }
5
+ const { childNodes } = htmlElement;
6
+ if (childNodes.length === 0) {
7
+ return null;
8
+ }
9
+ const childNode = childNodes[0];
10
+ if (!childNode) {
11
+ return null;
12
+ }
13
+ return childNode;
14
+ };
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ type State = {
3
+ progress: number;
4
+ isActive: boolean;
5
+ };
6
+ export declare const useHoverTransforms: (ref: React.RefObject<HTMLDivElement | null>, disabled: boolean) => State;
7
+ export declare const useClickTransforms: (ref: React.RefObject<HTMLDivElement | null>) => number;
8
+ export declare const useMousePosition: (ref: React.RefObject<HTMLDivElement | null>) => number;
9
+ export {};
@@ -0,0 +1,177 @@
1
+ import React, { useEffect, useMemo, useState } from 'react';
2
+ import { getChildNodeFrom } from './get-child-node-from';
3
+ export const useHoverTransforms = (ref, disabled) => {
4
+ const [state, setState] = React.useState({
5
+ progress: 0,
6
+ isActive: false,
7
+ });
8
+ const eventTarget = useMemo(() => new EventTarget(), []);
9
+ useEffect(() => {
10
+ if (disabled) {
11
+ eventTarget.dispatchEvent(new Event('disabled'));
12
+ }
13
+ else {
14
+ eventTarget.dispatchEvent(new Event('enabled'));
15
+ }
16
+ }, [disabled, eventTarget]);
17
+ React.useEffect(() => {
18
+ const element = ref.current;
19
+ if (!element)
20
+ return;
21
+ let animationFrame;
22
+ let start = null;
23
+ let isHovered = false;
24
+ let internalDisabled = disabled;
25
+ const getIsActive = () => {
26
+ return isHovered && !internalDisabled;
27
+ };
28
+ const animate = (timestamp) => {
29
+ if (start === null)
30
+ start = timestamp;
31
+ const progress = Math.min((timestamp - start) / 150, 1);
32
+ setState(() => ({
33
+ isActive: getIsActive(),
34
+ progress: getIsActive() ? progress : 1 - progress,
35
+ }));
36
+ if (progress < 1) {
37
+ animationFrame = requestAnimationFrame(animate);
38
+ }
39
+ };
40
+ const animateIn = () => {
41
+ start = null;
42
+ cancelAnimationFrame(animationFrame);
43
+ animationFrame = requestAnimationFrame(animate);
44
+ };
45
+ const handleMouseEnter = () => {
46
+ const prevIsActive = getIsActive();
47
+ isHovered = true;
48
+ if (prevIsActive === getIsActive()) {
49
+ return;
50
+ }
51
+ animateIn();
52
+ };
53
+ const handleMouseLeave = () => {
54
+ const prevIsActive = getIsActive();
55
+ isHovered = false;
56
+ if (prevIsActive === getIsActive()) {
57
+ return;
58
+ }
59
+ animateIn();
60
+ };
61
+ const handleDisabled = () => {
62
+ const prevIsActive = getIsActive();
63
+ internalDisabled = true;
64
+ if (prevIsActive === getIsActive()) {
65
+ return;
66
+ }
67
+ animateIn();
68
+ };
69
+ const handleEnabled = () => {
70
+ const prevIsActive = getIsActive();
71
+ internalDisabled = false;
72
+ if (prevIsActive === getIsActive()) {
73
+ return;
74
+ }
75
+ animateIn();
76
+ };
77
+ element.addEventListener('mouseenter', handleMouseEnter);
78
+ element.addEventListener('mouseleave', handleMouseLeave);
79
+ eventTarget.addEventListener('disabled', handleDisabled);
80
+ eventTarget.addEventListener('enabled', handleEnabled);
81
+ return () => {
82
+ element.removeEventListener('mouseenter', handleMouseEnter);
83
+ element.removeEventListener('mouseleave', handleMouseLeave);
84
+ eventTarget.removeEventListener('disabled', handleDisabled);
85
+ eventTarget.removeEventListener('enabled', handleEnabled);
86
+ cancelAnimationFrame(animationFrame);
87
+ };
88
+ // eslint-disable-next-line react-hooks/exhaustive-deps
89
+ }, [ref, eventTarget]);
90
+ return state;
91
+ };
92
+ export const useClickTransforms = (ref) => {
93
+ const [hoverProgress, setHoverProgress] = React.useState(0);
94
+ React.useEffect(() => {
95
+ const element = getChildNodeFrom(ref.current);
96
+ if (!element) {
97
+ return;
98
+ }
99
+ let animationFrame;
100
+ let start = null;
101
+ let isHovered = false;
102
+ const animate = (timestamp) => {
103
+ if (start === null)
104
+ start = timestamp;
105
+ const progress = Math.min((timestamp - start) / 150, 1);
106
+ setHoverProgress(isHovered ? progress : 1 - progress);
107
+ if (progress < 1) {
108
+ animationFrame = requestAnimationFrame(animate);
109
+ }
110
+ };
111
+ const handleMouseEnter = () => {
112
+ isHovered = true;
113
+ start = null;
114
+ cancelAnimationFrame(animationFrame);
115
+ animationFrame = requestAnimationFrame(animate);
116
+ };
117
+ const handleMouseLeave = () => {
118
+ isHovered = false;
119
+ start = null;
120
+ cancelAnimationFrame(animationFrame);
121
+ animationFrame = requestAnimationFrame(animate);
122
+ };
123
+ element.addEventListener('pointerdown', handleMouseEnter);
124
+ element.addEventListener('pointerup', handleMouseLeave);
125
+ return () => {
126
+ element.removeEventListener('pointerdown', handleMouseEnter);
127
+ element.removeEventListener('pointerup', handleMouseLeave);
128
+ cancelAnimationFrame(animationFrame);
129
+ };
130
+ }, [ref]);
131
+ return hoverProgress;
132
+ };
133
+ const getAngle = (ref, coordinates) => {
134
+ const element = getChildNodeFrom(ref);
135
+ if (!element) {
136
+ return 0;
137
+ }
138
+ if (coordinates === null) {
139
+ return 0;
140
+ }
141
+ const clientRect = element.getClientRects();
142
+ if (!clientRect) {
143
+ return 0;
144
+ }
145
+ if (clientRect.length === 0) {
146
+ return 0;
147
+ }
148
+ const center = {
149
+ x: clientRect[0].x + clientRect[0].width / 2,
150
+ y: clientRect[0].y + clientRect[0].height / 2,
151
+ };
152
+ const angle = Math.atan2(coordinates.y - center.y, coordinates.x - center.x);
153
+ return angle;
154
+ };
155
+ let lastCoordinates = null;
156
+ export const useMousePosition = (ref) => {
157
+ const [angle, setAngle] = useState(getAngle(ref.current, lastCoordinates));
158
+ useEffect(() => {
159
+ const element = ref.current;
160
+ if (!element) {
161
+ return;
162
+ }
163
+ const onMouseMove = (e) => {
164
+ const clientRect = element.getClientRects();
165
+ if (!clientRect) {
166
+ return;
167
+ }
168
+ lastCoordinates = { y: e.clientY, x: e.clientX };
169
+ setAngle(getAngle(element, { y: e.clientY, x: e.clientX }));
170
+ };
171
+ window.addEventListener('mousemove', onMouseMove);
172
+ return () => {
173
+ window.removeEventListener('mousemove', onMouseMove);
174
+ };
175
+ }, [ref]);
176
+ return angle;
177
+ };
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export declare const BackButton: React.FC<{
3
+ readonly color: string;
4
+ readonly text: string;
5
+ readonly link: string;
6
+ }>;
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button } from '@remotion/design';
3
+ export const BackButton = ({ color, text, link }) => {
4
+ return (_jsx("div", { className: "justify-center items-center font-medium mb-4 block", style: {
5
+ fontFamily: 'GTPlanar',
6
+ fontWeight: 500,
7
+ color,
8
+ }, children: _jsx(Button, { href: link, className: "px-4 rounded-full text-sm h-10", children: _jsxs("div", { className: "flex row items-center justify-center px-4", children: [_jsx("svg", { className: "h-4 mr-[15px] inline-block", style: { color }, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 448 512", children: _jsx("path", { fill: "currentcolor", d: "M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z" }) }), text] }) }) }));
9
+ };
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export declare const CommandCopyButton: React.FC<{
3
+ readonly copied: boolean;
4
+ readonly customSvg: React.ReactNode | null;
5
+ }>;
@@ -0,0 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export const CommandCopyButton = ({ copied, customSvg }) => {
3
+ return copied ? (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 448 512", className: "h-5", children: _jsx("path", { fill: "currentColor", d: "M438.6 105.4C451.1 117.9 451.1 138.1 438.6 150.6L182.6 406.6C170.1 419.1 149.9 419.1 137.4 406.6L9.372 278.6C-3.124 266.1-3.124 245.9 9.372 233.4C21.87 220.9 42.13 220.9 54.63 233.4L159.1 338.7L393.4 105.4C405.9 92.88 426.1 92.88 438.6 105.4H438.6z" }) })) : customSvg ? (customSvg) : (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 384 512", className: "h-5", children: _jsx("path", { fill: "currentColor", d: "M320 64h-49.61C262.1 27.48 230.7 0 192 0S121 27.48 113.6 64H64C28.65 64 0 92.66 0 128v320c0 35.34 28.65 64 64 64h256c35.35 0 64-28.66 64-64V128C384 92.66 355.3 64 320 64zM192 48c13.23 0 24 10.77 24 24S205.2 96 192 96S168 85.23 168 72S178.8 48 192 48zM336 448c0 8.82-7.178 16-16 16H64c-8.822 0-16-7.18-16-16V128c0-8.82 7.178-16 16-16h18.26C80.93 117.1 80 122.4 80 128v16C80 152.8 87.16 160 96 160h192c8.836 0 16-7.164 16-16V128c0-5.559-.9316-10.86-2.264-16H320c8.822 0 16 7.18 16 16V448z" }) }));
4
+ };
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import type { ColorMode } from './homepage/layout/use-color-mode';
3
+ export declare const NewLanding: React.FC<{
4
+ readonly colorMode: ColorMode;
5
+ readonly setColorMode: (colorMode: ColorMode) => void;
6
+ }>;
@@ -0,0 +1,20 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { BackgroundAnimation } from './homepage/BackgroundAnimation';
4
+ import CommunityStats from './homepage/CommunityStats';
5
+ import { Demo } from './homepage/Demo';
6
+ import EditorStarterSection from './homepage/EditorStarterSection';
7
+ import EvaluateRemotionSection from './homepage/EvaluateRemotion';
8
+ import { IfYouKnowReact } from './homepage/IfYouKnowReact';
9
+ import { ColorModeProvider } from './homepage/layout/use-color-mode';
10
+ import { NewsletterButton } from './homepage/NewsletterButton';
11
+ import { ParameterizeAndEdit } from './homepage/ParameterizeAndEdit';
12
+ import { Pricing } from './homepage/Pricing';
13
+ import { RealMP4Videos } from './homepage/RealMp4Videos';
14
+ import TrustedByBanner from './homepage/TrustedByBanner';
15
+ import VideoAppsShowcase from './homepage/VideoAppsShowcase';
16
+ import { SectionTitle } from './homepage/VideoAppsTitle';
17
+ import { WriteInReact } from './homepage/WriteInReact';
18
+ export const NewLanding = ({ colorMode, setColorMode }) => {
19
+ return (_jsx(ColorModeProvider, { colorMode: colorMode, setColorMode: setColorMode, children: _jsx("div", { className: "w-full relative", children: _jsxs("div", { style: { overflow: 'hidden' }, children: [_jsx("div", { children: _jsx(BackgroundAnimation, {}) }), _jsx("br", {}), _jsx("br", {}), _jsx("br", {}), _jsx("br", {}), _jsxs("div", { className: "max-w-[500px] lg:max-w-[1000px] m-auto pl-5 pr-5 overflow-x-clip md:overflow-x-visible relative", children: [_jsx(WriteInReact, {}), _jsx("br", {}), _jsx(IfYouKnowReact, {}), _jsx(ParameterizeAndEdit, {}), _jsx(RealMP4Videos, {}), _jsx("br", {}), _jsx("br", {}), _jsx("br", {}), _jsx(VideoAppsShowcase, {}), _jsx("br", {}), _jsx("br", {}), _jsx(Demo, {}), _jsx("br", {}), _jsx("br", {}), _jsx("br", {}), _jsx(SectionTitle, { children: "Pricing" }), _jsx(Pricing, {}), _jsx(TrustedByBanner, {}), _jsx("br", {}), _jsx(EvaluateRemotionSection, {}), _jsx("br", {}), _jsx("br", {}), _jsx("br", {}), _jsx(CommunityStats, {}), _jsx("br", {}), _jsx("br", {}), _jsx("br", {}), _jsx(EditorStarterSection, {}), _jsx("br", {}), _jsx("br", {}), _jsx("br", {}), _jsx("br", {}), _jsx(NewsletterButton, {}), _jsx("br", {}), _jsx("br", {}), _jsx("br", {})] })] }) }) }));
20
+ };
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const ManageTeamMembers: React.FC;
@@ -0,0 +1,42 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Button, Input } from '@remotion/design';
3
+ import React, { useCallback, useState } from 'react';
4
+ function generateId() {
5
+ return Math.random().toString(36).substr(2, 9);
6
+ }
7
+ const initialMembers = [
8
+ { id: generateId(), name: 'alice' },
9
+ { id: generateId(), name: 'bob' },
10
+ ];
11
+ const Row = ({ value, onChange, onDelete, disableDelete }) => {
12
+ return (_jsxs("div", { className: "flex flex-row gap-2 items-center", children: [_jsx(Input, { placeholder: "Enter username", className: "w-full block flex-1", value: value, onChange: (e) => onChange(e.target.value) }), _jsx(Button, { className: "hover:text-white hover:bg-warn transition-colors w-10 h-10 p-0 rounded-full", onClick: onDelete, type: "button", disabled: disableDelete, "aria-label": "Delete member", depth: 0.5, children: _jsx("svg", { width: "16", height: "16", viewBox: "0 0 10 10", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M1 1L9 9M1 9L9 1", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) }) })] }));
13
+ };
14
+ export const ManageTeamMembers = () => {
15
+ const [members, setMembers] = useState(initialMembers);
16
+ // One extra row for adding new member
17
+ const displayedMembers = [...members, { id: 'NEW', name: '' }];
18
+ const updateMember = useCallback((idx, value) => {
19
+ // If it's last "NEW" row, add as new member if not empty
20
+ if (idx === members.length) {
21
+ if (value.trim() !== '') {
22
+ setMembers((prev) => [...prev, { id: generateId(), name: value }]);
23
+ }
24
+ }
25
+ else {
26
+ setMembers((prev) => prev.map((m, i) => (i === idx ? { ...m, name: value } : m)));
27
+ }
28
+ }, [members.length]);
29
+ const deleteMember = useCallback((idx) => {
30
+ setMembers((prev) => prev.filter((_, i) => i !== idx));
31
+ }, []);
32
+ const [loading, setLoading] = useState(false);
33
+ const save = useCallback(() => {
34
+ setLoading(true);
35
+ setTimeout(() => {
36
+ setLoading(false);
37
+ }, 1000);
38
+ }, []);
39
+ return (_jsxs(_Fragment, { children: [_jsx("h2", { children: "Manage team members" }), _jsx("p", { className: "font-brand", children: "Add a new team member to your team." }), displayedMembers.map((member, idx) => (
40
+ // eslint-disable-next-line react/no-array-index-key
41
+ _jsxs(React.Fragment, { children: [_jsx(Row, { value: member.name, onChange: (val) => updateMember(idx, val), onDelete: idx < members.length ? () => deleteMember(idx) : undefined, disableDelete: idx >= members.length }), _jsx("div", { className: "h-2" })] }, idx))), _jsx("div", { className: "h-4" }), _jsx("div", { className: "flex flex-row justify-end", children: _jsx(Button, { className: "bg-brand text-white", loading: loading, onClick: save, children: "Save" }) })] }));
42
+ };
@@ -0,0 +1,3 @@
1
+ import type { SVGProps } from 'react';
2
+ import React from 'react';
3
+ export declare const Spinner: React.FC<SVGProps<SVGSVGElement>>;
@@ -0,0 +1,4 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export const Spinner = (props) => {
3
+ return (_jsxs("svg", { id: "loading", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 32 32", width: "32", height: "32", fill: "currentColor", ...props, children: [_jsx("path", { opacity: ".1", d: "M14 0 H18 V8 H14 z", transform: "rotate(0 16 16)", children: _jsx("animate", { attributeName: "opacity", from: "1", to: ".1", dur: "1s", repeatCount: "indefinite", begin: "0" }) }), _jsx("path", { opacity: ".1", d: "M14 0 H18 V8 H14 z", transform: "rotate(45 16 16)", children: _jsx("animate", { attributeName: "opacity", from: "1", to: ".1", dur: "1s", repeatCount: "indefinite", begin: "0.125s" }) }), _jsx("path", { opacity: ".1", d: "M14 0 H18 V8 H14 z", transform: "rotate(90 16 16)", children: _jsx("animate", { attributeName: "opacity", from: "1", to: ".1", dur: "1s", repeatCount: "indefinite", begin: "0.25s" }) }), _jsx("path", { opacity: ".1", d: "M14 0 H18 V8 H14 z", transform: "rotate(135 16 16)", children: _jsx("animate", { attributeName: "opacity", from: "1", to: ".1", dur: "1s", repeatCount: "indefinite", begin: "0.375s" }) }), _jsx("path", { opacity: ".1", d: "M14 0 H18 V8 H14 z", transform: "rotate(180 16 16)", children: _jsx("animate", { attributeName: "opacity", from: "1", to: ".1", dur: "1s", repeatCount: "indefinite", begin: "0.5s" }) }), _jsx("path", { opacity: ".1", d: "M14 0 H18 V8 H14 z", transform: "rotate(225 16 16)", children: _jsx("animate", { attributeName: "opacity", from: "1", to: ".1", dur: "1s", repeatCount: "indefinite", begin: "0.675s" }) }), _jsx("path", { opacity: ".1", d: "M14 0 H18 V8 H14 z", transform: "rotate(270 16 16)", children: _jsx("animate", { attributeName: "opacity", from: "1", to: ".1", dur: "1s", repeatCount: "indefinite", begin: "0.75s" }) }), _jsx("path", { opacity: ".1", d: "M14 0 H18 V8 H14 z", transform: "rotate(315 16 16)", children: _jsx("animate", { attributeName: "opacity", from: "1", to: ".1", dur: "1s", repeatCount: "indefinite", begin: "0.875s" }) })] }));
4
+ };
@@ -0,0 +1 @@
1
+ export declare const TeamPicture: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export const TeamPicture = () => {
3
+ return (_jsx("div", { className: "border-effect overflow-hidden mb-10 lg:mb-4", children: _jsx("img", { src: "/img/team/team.jpeg", style: { aspectRatio: '1500 / 1038' }, className: "w-full mb-0 float-left " }) }));
4
+ };
@@ -0,0 +1 @@
1
+ export declare const DesignPage: React.FC;
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button, Card, Counter, InlineCode, Input, Link, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, } from '@remotion/design';
3
+ import { useCallback, useState } from 'react';
4
+ import { ManageTeamMembers } from './ManageTeamMembers';
5
+ const Explainer = ({ children }) => {
6
+ return (_jsx("div", { children: _jsx("div", { className: "text-gray-500 font-brand text-sm mb-2", children: children }) }));
7
+ };
8
+ export const DesignPage = () => {
9
+ const [count, setCount] = useState(10);
10
+ const [active, setActive] = useState(false);
11
+ const [submitButtonActive, setSubmitButtonActive] = useState(true);
12
+ const [submitButtonPrimaryActive, setSubmitButtonPrimaryActive] = useState(true);
13
+ const onClick = useCallback(() => {
14
+ setSubmitButtonActive(false);
15
+ setTimeout(() => {
16
+ setSubmitButtonActive(true);
17
+ }, 1000);
18
+ }, []);
19
+ const onClickPrimary = useCallback(() => {
20
+ setSubmitButtonPrimaryActive(false);
21
+ setTimeout(() => {
22
+ setSubmitButtonPrimaryActive(true);
23
+ }, 1000);
24
+ }, []);
25
+ const [saving, setSaving] = useState(false);
26
+ const save = useCallback(() => {
27
+ setSaving(true);
28
+ setTimeout(() => {
29
+ setSaving(false);
30
+ }, 1000);
31
+ }, []);
32
+ return (_jsx("div", { className: "bg-[var(--background)] relative", children: _jsxs("div", { className: "max-w-[800px] mx-auto pt-10 pb-10 px-4", children: [_jsx("h1", { children: "@remotion/design" }), _jsx("a", { href: "https://github.com/remotion-dev/remotion/blob/main/packages/promo-pages/src/components/design.tsx", className: "font-brand text-brand", target: "_blank", children: "View source" }), _jsx("br", {}), _jsx("br", {}), _jsx("h2", { className: "text-brand", children: "<Button />" }), _jsx(Explainer, { children: "Button with label" }), _jsx(Button, { children: "Click me" }), _jsx("br", {}), _jsx(Explainer, { children: "Disabled" }), _jsxs(Button, { disabled: true, children: ["Don't", " click me"] }), _jsx("br", {}), _jsx(Explainer, { children: "Primary" }), _jsx(Button, { className: "bg-brand text-white", children: "Primary" }), _jsx("br", {}), _jsx(Explainer, { children: "Click to disable" }), _jsx(Button, { onClick: onClick, loading: !submitButtonActive, children: "Submit" }), _jsx("br", {}), _jsx(Explainer, { children: "Click to disable (primary)" }), _jsx(Button, { onClick: onClickPrimary, className: "bg-brand text-white", loading: !submitButtonPrimaryActive, children: "Submit" }), _jsx("br", {}), _jsx(Explainer, { children: "Loading state" }), _jsx(Button, { onClick: onClick, loading: true, children: "Loading" }), _jsx("br", {}), _jsx(Explainer, { children: "Loading state (primary)" }), _jsx(Button, { onClick: onClick, className: "bg-brand text-white", loading: true, children: "Loading" }), _jsx("br", {}), _jsx(Explainer, { children: "Rounded" }), _jsx(Button, { className: "rounded-full", children: "Rounded" }), _jsx("br", {}), _jsx(Explainer, { children: "Full width" }), _jsx(Button, { className: "w-full", children: "Choose a template" }), _jsx("br", {}), _jsx(Explainer, { children: "Full width rounded" }), _jsx(Button, { className: "w-full rounded-full", children: "Fully rounded" }), _jsx("div", { className: "h-8" }), _jsx(Explainer, { children: "Circular" }), _jsx(Button, { className: "rounded-full bg-brand w-12 h-12" }), _jsx("div", { className: "h-8" }), _jsx(Explainer, { children: "Remove" }), _jsx(Button, { className: "hover:text-white hover:bg-warn transition-colors w-10 h-10 p-0 rounded-full", depth: 0.5, children: _jsx("svg", { width: "16", height: "16", viewBox: "0 0 10 10", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M1 1L9 9M1 9L9 1", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) }) }), _jsx("div", { className: "h-8" }), _jsx(Explainer, { children: "Link button" }), _jsx(Button, { href: "/design", children: "Link button" }), _jsx("br", {}), _jsxs(Explainer, { children: ["Link button with ", _jsx("code", { children: "<span>" })] }), _jsx(Button, { href: "/design", children: _jsx("span", { children: "Link button with span child" }) }), _jsx("br", {}), _jsx(Explainer, { children: "External link button" }), _jsx(Button, { href: "https://github.com/remotion-dev/remotion", target: "_blank", children: "GitHub" }), _jsx("div", { className: "h-8" }), _jsx(Explainer, { children: "Remove (small)" }), _jsx(Button, { className: "hover:text-white hover:bg-warn transition-colors w-6 h-6 p-0 rounded-full", depth: 0.5, children: _jsx("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M1 1L9 9M1 9L9 1", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) }) }), _jsx("div", { className: "h-8" }), _jsx("h2", { className: "text-brand", children: "<Counter />" }), _jsx(Counter, { count: count, setCount: setCount, minCount: 1, step: 1, incrementStep: 1 }), _jsx("br", {}), " ", _jsx("h2", { className: "text-brand", children: "<Switch />" }), _jsx(Switch, { active: active, onToggle: () => setActive((e) => !e) }), _jsx("br", {}), " ", _jsx("h2", { className: "text-brand", children: "<Card />" }), _jsxs(Card, { className: "px-4 py-4", children: [_jsx("h3", { className: "text-text", children: "Card" }), _jsx("div", { className: "text-gray-500", children: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." })] }), _jsx("br", {}), _jsx("h2", { className: "text-brand", children: "<Select />" }), _jsxs(Select, { defaultValue: "option1", children: [_jsx(SelectTrigger, { style: { width: '200px' }, children: _jsx(SelectValue, { placeholder: "Select an option" }) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "option1", children: "Option 1" }), _jsx(SelectItem, { value: "option2", children: "Option 2" }), _jsx(SelectItem, { value: "option3", children: "Option 3" })] })] }), _jsx("br", {}), _jsx("h2", { className: "text-brand", children: "<Tabs />" }), _jsxs(Tabs, { defaultValue: "tab1", children: [_jsxs(TabsList, { children: [_jsx(TabsTrigger, { value: "tab1", children: "Tab 1" }), _jsx(TabsTrigger, { value: "tab2", children: "Tab 2" }), _jsx(TabsTrigger, { value: "tab3", children: "Tab 3" })] }), _jsx(TabsContent, { value: "tab1", children: _jsx("div", { className: "font-brand", children: "Content for Tab 1" }) }), _jsx(TabsContent, { value: "tab2", children: _jsx("div", { className: "font-brand", children: "Content for Tab 2" }) }), _jsx(TabsContent, { value: "tab3", children: _jsx("div", { className: "font-brand", children: "Content for Tab 3" }) })] }), _jsx("br", {}), _jsx("h2", { className: "text-brand", children: "<Input />" }), _jsx(Input, { placeholder: "Enter your email" }), _jsx("br", {}), _jsx("br", {}), _jsx("h2", { className: "text-brand", children: "<Textarea />" }), _jsx(Textarea, { placeholder: "Enter your message" }), _jsx("br", {}), _jsx("br", {}), _jsx("h2", { className: "text-brand", children: "<InlineCode />" }), _jsxs("p", { className: "font-brand", children: ["Use ", _jsx(InlineCode, { children: "useCurrentFrame()" }), " to get the current frame and ", _jsx(InlineCode, { children: "useVideoConfig()" }), " to get the video configuration."] }), _jsx("br", {}), _jsx("h2", { className: "text-brand", children: "<Link />" }), _jsxs("p", { className: "font-brand", children: ["See the", ' ', _jsx(Link, { href: "https://www.remotion.dev/docs", target: "_blank", rel: "noopener noreferrer", children: "Remotion documentation" }), ' ', "for more information."] }), _jsx("br", {}), _jsx("br", {}), _jsx("h1", { children: "Example form set" }), _jsx("br", {}), _jsx("h2", { children: "Change email" }), _jsx("p", { className: "font-brand", children: "A email will be sent to the new email address. You will need to click on the link in the email to confirm the change." }), _jsx(Input, { placeholder: "Enter your email", className: "w-full block" }), _jsx("div", { className: "h-2" }), _jsx("div", { className: "flex flex-row justify-end", children: _jsx(Button, { className: "bg-brand text-white", loading: saving, onClick: save, children: "Change" }) }), _jsx("br", {}), _jsx("br", {}), _jsx(ManageTeamMembers, {})] }) }));
33
+ };
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ type ExpertsPageProps = {
3
+ readonly Link: React.ComponentType<{
4
+ style?: React.CSSProperties;
5
+ className?: string;
6
+ href: string;
7
+ children: React.ReactNode;
8
+ }>;
9
+ };
10
+ export declare const ExpertsPageContent: React.FC<ExpertsPageProps>;
11
+ export {};