@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.
- package/dist/Homepage.js +13 -3
- package/dist/cn.d.ts +2 -0
- package/dist/cn.js +5 -0
- package/dist/components/3DEngine/ButtonDemo.d.ts +2 -0
- package/dist/components/3DEngine/ButtonDemo.js +43 -0
- package/dist/components/3DEngine/Faces.d.ts +5 -0
- package/dist/components/3DEngine/Faces.js +7 -0
- package/dist/components/3DEngine/Outer.d.ts +8 -0
- package/dist/components/3DEngine/Outer.js +56 -0
- package/dist/components/3DEngine/Switch.d.ts +4 -0
- package/dist/components/3DEngine/Switch.js +4 -0
- package/dist/components/3DEngine/get-child-node-from.d.ts +1 -0
- package/dist/components/3DEngine/get-child-node-from.js +14 -0
- package/dist/components/3DEngine/hover-transforms.d.ts +9 -0
- package/dist/components/3DEngine/hover-transforms.js +177 -0
- package/dist/components/BackButton.d.ts +6 -0
- package/dist/components/BackButton.js +9 -0
- package/dist/components/CommandCopyButton.d.ts +5 -0
- package/dist/components/CommandCopyButton.js +4 -0
- package/dist/components/Homepage.d.ts +6 -0
- package/dist/components/Homepage.js +20 -0
- package/dist/components/ManageTeamMembers.d.ts +2 -0
- package/dist/components/ManageTeamMembers.js +42 -0
- package/dist/components/Spinner.d.ts +3 -0
- package/dist/components/Spinner.js +4 -0
- package/dist/components/TeamPicture.d.ts +1 -0
- package/dist/components/TeamPicture.js +4 -0
- package/dist/components/design.d.ts +1 -0
- package/dist/components/design.js +33 -0
- package/dist/components/experts/ExpertsPage.d.ts +11 -0
- package/dist/components/experts/ExpertsPage.js +50 -0
- package/dist/components/experts/experts-data.d.ts +15 -0
- package/dist/components/experts/experts-data.js +263 -0
- package/dist/components/experts/experts-icons.d.ts +7 -0
- package/dist/components/experts/experts-icons.js +36 -0
- package/dist/components/experts.d.ts +3 -0
- package/dist/components/experts.js +2 -0
- package/dist/components/homepage/BackgroundAnimation.d.ts +2 -0
- package/dist/components/homepage/BackgroundAnimation.js +66 -0
- package/dist/components/homepage/ChooseTemplate.d.ts +2 -0
- package/dist/components/homepage/ChooseTemplate.js +25 -0
- package/dist/components/homepage/CommunityStats.d.ts +3 -0
- package/dist/components/homepage/CommunityStats.js +6 -0
- package/dist/components/homepage/CommunityStatsItems.d.ts +7 -0
- package/dist/components/homepage/CommunityStatsItems.js +58 -0
- package/dist/components/homepage/Demo/Card.d.ts +15 -0
- package/dist/components/homepage/Demo/Card.js +174 -0
- package/dist/components/homepage/Demo/Cards.d.ts +15 -0
- package/dist/components/homepage/Demo/Cards.js +57 -0
- package/dist/components/homepage/Demo/Comp.d.ts +38 -0
- package/dist/components/homepage/Demo/Comp.js +72 -0
- package/dist/components/homepage/Demo/CurrentCountry.d.ts +9 -0
- package/dist/components/homepage/Demo/CurrentCountry.js +48 -0
- package/dist/components/homepage/Demo/DemoError.d.ts +2 -0
- package/dist/components/homepage/Demo/DemoError.js +10 -0
- package/dist/components/homepage/Demo/DemoErrorIcon.d.ts +2 -0
- package/dist/components/homepage/Demo/DemoErrorIcon.js +16 -0
- package/dist/components/homepage/Demo/DemoRender.d.ts +33 -0
- package/dist/components/homepage/Demo/DemoRender.js +107 -0
- package/dist/components/homepage/Demo/DigitWheel.d.ts +9 -0
- package/dist/components/homepage/Demo/DigitWheel.js +94 -0
- package/dist/components/homepage/Demo/DisplayedEmoji.d.ts +5 -0
- package/dist/components/homepage/Demo/DisplayedEmoji.js +59 -0
- package/dist/components/homepage/Demo/DoneCheckmark.d.ts +2 -0
- package/dist/components/homepage/Demo/DoneCheckmark.js +20 -0
- package/dist/components/homepage/Demo/DownloadNudge.d.ts +2 -0
- package/dist/components/homepage/Demo/DownloadNudge.js +27 -0
- package/dist/components/homepage/Demo/DragAndDropNudge.d.ts +3 -0
- package/dist/components/homepage/Demo/DragAndDropNudge.js +26 -0
- package/dist/components/homepage/Demo/EmojiCard.d.ts +10 -0
- package/dist/components/homepage/Demo/EmojiCard.js +120 -0
- package/dist/components/homepage/Demo/Minus.d.ts +5 -0
- package/dist/components/homepage/Demo/Minus.js +11 -0
- package/dist/components/homepage/Demo/PlayPauseButton.d.ts +5 -0
- package/dist/components/homepage/Demo/PlayPauseButton.js +47 -0
- package/dist/components/homepage/Demo/PlayerControls.d.ts +8 -0
- package/dist/components/homepage/Demo/PlayerControls.js +15 -0
- package/dist/components/homepage/Demo/PlayerSeekBar.d.ts +11 -0
- package/dist/components/homepage/Demo/PlayerSeekBar.js +216 -0
- package/dist/components/homepage/Demo/PlayerVolume.d.ts +5 -0
- package/dist/components/homepage/Demo/PlayerVolume.js +53 -0
- package/dist/components/homepage/Demo/Progress.d.ts +4 -0
- package/dist/components/homepage/Demo/Progress.js +14 -0
- package/dist/components/homepage/Demo/Spinner.d.ts +5 -0
- package/dist/components/homepage/Demo/Spinner.js +37 -0
- package/dist/components/homepage/Demo/Switcher.d.ts +6 -0
- package/dist/components/homepage/Demo/Switcher.js +25 -0
- package/dist/components/homepage/Demo/Temperature.d.ts +6 -0
- package/dist/components/homepage/Demo/Temperature.js +21 -0
- package/dist/components/homepage/Demo/TemperatureNumber.d.ts +5 -0
- package/dist/components/homepage/Demo/TemperatureNumber.js +36 -0
- package/dist/components/homepage/Demo/ThemeNudge.d.ts +3 -0
- package/dist/components/homepage/Demo/ThemeNudge.js +35 -0
- package/dist/components/homepage/Demo/TimeDisplay.d.ts +6 -0
- package/dist/components/homepage/Demo/TimeDisplay.js +27 -0
- package/dist/components/homepage/Demo/TrendingRepos.d.ts +6 -0
- package/dist/components/homepage/Demo/TrendingRepos.js +65 -0
- package/dist/components/homepage/Demo/icons.d.ts +10 -0
- package/dist/components/homepage/Demo/icons.js +22 -0
- package/dist/components/homepage/Demo/index.d.ts +2 -0
- package/dist/components/homepage/Demo/index.js +95 -0
- package/dist/components/homepage/Demo/math.d.ts +10 -0
- package/dist/components/homepage/Demo/math.js +29 -0
- package/dist/components/homepage/Demo/types.d.ts +6 -0
- package/dist/components/homepage/Demo/types.js +0 -0
- package/dist/components/homepage/EditorStarterSection.d.ts +3 -0
- package/dist/components/homepage/EditorStarterSection.js +8 -0
- package/dist/components/homepage/EvaluateRemotion.d.ts +3 -0
- package/dist/components/homepage/EvaluateRemotion.js +21 -0
- package/dist/components/homepage/FreePricing.d.ts +4 -0
- package/dist/components/homepage/FreePricing.js +134 -0
- package/dist/components/homepage/GetStartedStrip.d.ts +2 -0
- package/dist/components/homepage/GetStartedStrip.js +14 -0
- package/dist/components/homepage/GitHubButton.d.ts +2 -0
- package/dist/components/homepage/GitHubButton.js +7 -0
- package/dist/components/homepage/IconForTemplate.d.ts +6 -0
- package/dist/components/homepage/IconForTemplate.js +105 -0
- package/dist/components/homepage/IfYouKnowReact.d.ts +3 -0
- package/dist/components/homepage/IfYouKnowReact.js +23 -0
- package/dist/components/homepage/InfoTooltip.d.ts +6 -0
- package/dist/components/homepage/InfoTooltip.js +6 -0
- package/dist/components/homepage/MoreTemplatesButton.d.ts +2 -0
- package/dist/components/homepage/MoreTemplatesButton.js +11 -0
- package/dist/components/homepage/MuxVideo.d.ts +7 -0
- package/dist/components/homepage/MuxVideo.js +45 -0
- package/dist/components/homepage/NewsletterButton.d.ts +2 -0
- package/dist/components/homepage/NewsletterButton.js +38 -0
- package/dist/components/homepage/ParameterizeAndEdit.d.ts +2 -0
- package/dist/components/homepage/ParameterizeAndEdit.js +22 -0
- package/dist/components/homepage/Pricing.d.ts +2 -0
- package/dist/components/homepage/Pricing.js +15 -0
- package/dist/components/homepage/PricingBulletPoint.d.ts +6 -0
- package/dist/components/homepage/PricingBulletPoint.js +19 -0
- package/dist/components/homepage/RealMp4Videos.d.ts +2 -0
- package/dist/components/homepage/RealMp4Videos.js +41 -0
- package/dist/components/homepage/Spacer.d.ts +2 -0
- package/dist/components/homepage/Spacer.js +4 -0
- package/dist/components/homepage/TemplateIcon.d.ts +5 -0
- package/dist/components/homepage/TemplateIcon.js +24 -0
- package/dist/components/homepage/TextInput.d.ts +7 -0
- package/dist/components/homepage/TextInput.js +34 -0
- package/dist/components/homepage/TrustedByBanner.d.ts +2 -0
- package/dist/components/homepage/TrustedByBanner.js +27 -0
- package/dist/components/homepage/VideoApps.d.ts +4 -0
- package/dist/components/homepage/VideoApps.js +72 -0
- package/dist/components/homepage/VideoAppsShowcase.d.ts +3 -0
- package/dist/components/homepage/VideoAppsShowcase.js +139 -0
- package/dist/components/homepage/VideoAppsTitle.d.ts +4 -0
- package/dist/components/homepage/VideoAppsTitle.js +4 -0
- package/dist/components/homepage/VideoPlayerWithControls.d.ts +20 -0
- package/dist/components/homepage/VideoPlayerWithControls.js +105 -0
- package/dist/components/homepage/WriteInReact.d.ts +2 -0
- package/dist/components/homepage/WriteInReact.js +10 -0
- package/dist/components/homepage/YouAreHere.d.ts +2 -0
- package/dist/components/homepage/YouAreHere.js +23 -0
- package/dist/components/homepage/layout/Button.d.ts +22 -0
- package/dist/components/homepage/layout/Button.js +30 -0
- package/dist/components/homepage/layout/colors.d.ts +13 -0
- package/dist/components/homepage/layout/colors.js +14 -0
- package/dist/components/homepage/layout/use-color-mode.d.ts +21 -0
- package/dist/components/homepage/layout/use-color-mode.js +22 -0
- package/dist/components/homepage/layout/use-el-size.d.ts +5 -0
- package/dist/components/homepage/layout/use-el-size.js +40 -0
- package/dist/components/homepage/layout/use-mobile-layout.d.ts +1 -0
- package/dist/components/homepage/layout/use-mobile-layout.js +6 -0
- package/dist/components/icons/blank.d.ts +3 -0
- package/dist/components/icons/blank.js +4 -0
- package/dist/components/icons/brain.d.ts +2 -0
- package/dist/components/icons/brain.js +4 -0
- package/dist/components/icons/clone.d.ts +2 -0
- package/dist/components/icons/clone.js +2 -0
- package/dist/components/icons/code-hike.d.ts +3 -0
- package/dist/components/icons/code-hike.js +4 -0
- package/dist/components/icons/cubes.d.ts +3 -0
- package/dist/components/icons/cubes.js +4 -0
- package/dist/components/icons/editor.d.ts +3 -0
- package/dist/components/icons/editor.js +4 -0
- package/dist/components/icons/electron.d.ts +4 -0
- package/dist/components/icons/electron.js +4 -0
- package/dist/components/icons/js.d.ts +3 -0
- package/dist/components/icons/js.js +4 -0
- package/dist/components/icons/music.d.ts +2 -0
- package/dist/components/icons/music.js +4 -0
- package/dist/components/icons/next.d.ts +4 -0
- package/dist/components/icons/next.js +4 -0
- package/dist/components/icons/overlay.d.ts +3 -0
- package/dist/components/icons/overlay.js +4 -0
- package/dist/components/icons/prompt-to-video.d.ts +2 -0
- package/dist/components/icons/prompt-to-video.js +4 -0
- package/dist/components/icons/recorder.d.ts +3 -0
- package/dist/components/icons/recorder.js +4 -0
- package/dist/components/icons/remix.d.ts +3 -0
- package/dist/components/icons/remix.js +4 -0
- package/dist/components/icons/render-server.d.ts +3 -0
- package/dist/components/icons/render-server.js +4 -0
- package/dist/components/icons/skia.d.ts +3 -0
- package/dist/components/icons/skia.js +4 -0
- package/dist/components/icons/stargazer.d.ts +3 -0
- package/dist/components/icons/stargazer.js +4 -0
- package/dist/components/icons/still.d.ts +3 -0
- package/dist/components/icons/still.js +4 -0
- package/dist/components/icons/tailwind.d.ts +3 -0
- package/dist/components/icons/tailwind.js +4 -0
- package/dist/components/icons/tiktok.d.ts +3 -0
- package/dist/components/icons/tiktok.js +4 -0
- package/dist/components/icons/timeline.d.ts +3 -0
- package/dist/components/icons/timeline.js +4 -0
- package/dist/components/icons/ts.d.ts +3 -0
- package/dist/components/icons/ts.js +4 -0
- package/dist/components/icons/undo.d.ts +3 -0
- package/dist/components/icons/undo.js +2 -0
- package/dist/components/icons/vercel.d.ts +4 -0
- package/dist/components/icons/vercel.js +4 -0
- package/dist/components/icons/waveform.d.ts +3 -0
- package/dist/components/icons/waveform.js +4 -0
- package/dist/components/prompts/CardLikeButton.d.ts +5 -0
- package/dist/components/prompts/CardLikeButton.js +49 -0
- package/dist/components/prompts/ClipboardIcon.d.ts +5 -0
- package/dist/components/prompts/ClipboardIcon.js +4 -0
- package/dist/components/prompts/CopyPromptButton.d.ts +4 -0
- package/dist/components/prompts/CopyPromptButton.js +13 -0
- package/dist/components/prompts/LikeButton.d.ts +5 -0
- package/dist/components/prompts/LikeButton.js +49 -0
- package/dist/components/prompts/MuxPlayer.d.ts +8 -0
- package/dist/components/prompts/MuxPlayer.js +21 -0
- package/dist/components/prompts/NewBackButton.d.ts +5 -0
- package/dist/components/prompts/NewBackButton.js +8 -0
- package/dist/components/prompts/Page.d.ts +8 -0
- package/dist/components/prompts/Page.js +7 -0
- package/dist/components/prompts/PromptsGallery.d.ts +7 -0
- package/dist/components/prompts/PromptsGallery.js +60 -0
- package/dist/components/prompts/PromptsShow.d.ts +5 -0
- package/dist/components/prompts/PromptsShow.js +17 -0
- package/dist/components/prompts/PromptsSubmit.d.ts +2 -0
- package/dist/components/prompts/PromptsSubmit.js +173 -0
- package/dist/components/prompts/config.d.ts +1 -0
- package/dist/components/prompts/config.js +1 -0
- package/dist/components/prompts/prompt-helpers.d.ts +8 -0
- package/dist/components/prompts/prompt-helpers.js +76 -0
- package/dist/components/prompts/prompt-types.d.ts +14 -0
- package/dist/components/prompts/prompt-types.js +0 -0
- package/dist/components/prompts/use-heart-animation.d.ts +5 -0
- package/dist/components/prompts/use-heart-animation.js +29 -0
- package/dist/components/team/TeamCards.d.ts +6 -0
- package/dist/components/team/TeamCards.js +19 -0
- package/dist/components/team/TitleTeamCards.d.ts +2 -0
- package/dist/components/team/TitleTeamCards.js +6 -0
- package/dist/components/team.d.ts +3 -0
- package/dist/components/team.js +14 -0
- package/dist/components/template-modal-content.d.ts +5 -0
- package/dist/components/template-modal-content.js +73 -0
- package/dist/components/templates.d.ts +2 -0
- package/dist/components/templates.js +27 -0
- package/dist/design.js +1 -1
- package/dist/experts.js +1 -1
- package/dist/helpers/mobile-layout.d.ts +1 -0
- package/dist/helpers/mobile-layout.js +6 -0
- package/dist/helpers/use-el-size.d.ts +5 -0
- package/dist/helpers/use-el-size.js +40 -0
- package/dist/homepage/Pricing.js +1 -1
- package/dist/main.d.ts +1 -0
- package/dist/main.js +6 -0
- package/dist/prompts/PromptsGallery.js +1 -1
- package/dist/prompts/PromptsShow.js +1 -1
- package/dist/prompts/PromptsSubmit.js +1 -1
- package/dist/prompts-show.d.ts +1 -0
- package/dist/prompts-show.js +20 -0
- package/dist/prompts-submit.d.ts +1 -0
- package/dist/prompts-submit.js +6 -0
- package/dist/prompts.d.ts +1 -0
- package/dist/prompts.js +6 -0
- package/dist/team.d.ts +1 -0
- package/dist/template-modal-content.js +1 -1
- package/dist/templates.js +1 -1
- 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.
|
|
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
|
-
|
|
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.
|
|
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
package/dist/cn.js
ADDED
|
@@ -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,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,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
|
+
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,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,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,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,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,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 {};
|