diff --git a/public/font/HigherJump.ttf b/public/font/HigherJump.ttf new file mode 100644 index 0000000..608f2ad Binary files /dev/null and b/public/font/HigherJump.ttf differ diff --git a/public/font/edo.ttf b/public/font/edo.ttf new file mode 100644 index 0000000..595730c Binary files /dev/null and b/public/font/edo.ttf differ diff --git a/public/images/showcases/devfestNantes/android.png b/public/images/showcases/devfestNantes/android.png deleted file mode 100644 index 3e943e1..0000000 Binary files a/public/images/showcases/devfestNantes/android.png and /dev/null differ diff --git a/public/images/showcases/devfestNantes/backgroundTrees.png b/public/images/showcases/devfestNantes/backgroundTrees.png new file mode 100644 index 0000000..108a8be Binary files /dev/null and b/public/images/showcases/devfestNantes/backgroundTrees.png differ diff --git a/public/images/showcases/devfestNantes/dino.png b/public/images/showcases/devfestNantes/dino.png deleted file mode 100644 index 2dfee40..0000000 Binary files a/public/images/showcases/devfestNantes/dino.png and /dev/null differ diff --git a/public/images/showcases/devfestNantes/fond-visuel-etoiles.png b/public/images/showcases/devfestNantes/fond-visuel-etoiles.png deleted file mode 100644 index ed9bd54..0000000 Binary files a/public/images/showcases/devfestNantes/fond-visuel-etoiles.png and /dev/null differ diff --git a/public/images/showcases/devfestNantes/ghost.png b/public/images/showcases/devfestNantes/ghost.png new file mode 100644 index 0000000..28bd20c Binary files /dev/null and b/public/images/showcases/devfestNantes/ghost.png differ diff --git a/public/images/showcases/devfestNantes/logo-devfest-2024.png b/public/images/showcases/devfestNantes/logo-devfest-2024.png new file mode 100644 index 0000000..82f4658 Binary files /dev/null and b/public/images/showcases/devfestNantes/logo-devfest-2024.png differ diff --git a/public/images/showcases/devfestNantes/logo-devfest-2024.svg b/public/images/showcases/devfestNantes/logo-devfest-2024.svg new file mode 100644 index 0000000..344306a --- /dev/null +++ b/public/images/showcases/devfestNantes/logo-devfest-2024.svg @@ -0,0 +1,683 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/images/showcases/devfestNantes/logo-devfest-mgm_transparent.svg b/public/images/showcases/devfestNantes/logo-devfest-mgm_transparent.svg deleted file mode 100644 index f6f9042..0000000 --- a/public/images/showcases/devfestNantes/logo-devfest-mgm_transparent.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/images/showcases/devfestNantes/moon.png b/public/images/showcases/devfestNantes/moon.png new file mode 100644 index 0000000..9249f8c Binary files /dev/null and b/public/images/showcases/devfestNantes/moon.png differ diff --git a/public/images/showcases/devfestNantes/screens.png b/public/images/showcases/devfestNantes/screens.png new file mode 100644 index 0000000..e6d0550 Binary files /dev/null and b/public/images/showcases/devfestNantes/screens.png differ diff --git a/public/images/showcases/devfestNantes/trees.png b/public/images/showcases/devfestNantes/trees.png new file mode 100644 index 0000000..7b7f551 Binary files /dev/null and b/public/images/showcases/devfestNantes/trees.png differ diff --git a/src/data/configsAffichagesZones.ts b/src/data/configsAffichagesZones.ts index 17c6633..474ab4e 100644 --- a/src/data/configsAffichagesZones.ts +++ b/src/data/configsAffichagesZones.ts @@ -3,7 +3,7 @@ import {ConfigAfficheShortVid} from "src/types.ts"; type typesAffiches = 'vestiaireJ1' | 'vestiaireJ2' | 'afterAnnonce' | 'afterBars'; export const AFFICHES_ZONE: Record = { // TODO mettre à jour les messages vestiaireJ1: { - "title": "Vestiaire gratuit disponible ! Déposez vos affaires.", + "title": "Vestiaire gratuit disponible ! Déposez vos affaires.", "speakers": [{ "name": "Devfest Nantes", "picture": "https://github.com/GDG-Nantes/Devfest2023/assets/525974/f96a0968-1079-447c-8c39-490cb8c64089" @@ -13,7 +13,7 @@ export const AFFICHES_ZONE: Record = { // "location": "Galerie Jules Verne", }, vestiaireJ2: { - "title": "Vestiaire gratuit disponible ! Déposez vos affaires.", + "title": "Vestiaire gratuit disponible ! Déposez vos affaires.", "speakers": [{ "name": "Devfest Nantes", "picture": "https://github.com/GDG-Nantes/Devfest2023/assets/525974/f96a0968-1079-447c-8c39-490cb8c64089" diff --git a/src/remotion/components/scary-elevator-remotion.tsx b/src/remotion/components/scary-elevator-remotion.tsx index 983969d..881e755 100644 --- a/src/remotion/components/scary-elevator-remotion.tsx +++ b/src/remotion/components/scary-elevator-remotion.tsx @@ -1,24 +1,24 @@ -import React from "react"; -import {Howl} from 'howler'; +//import React from "react"; +//import {Howl} from 'howler'; import {DefaultRemotion} from "src/remotion/components/default-remotion.tsx"; export const ScaryElevatorRemotion: typeof DefaultRemotion = (props) => { - const sound = React.useMemo(() => new Howl({ - src: ['scary-elevator-short.mp3'], - volume: 0.1 - }), []) + // const sound = React.useMemo(() => new Howl({ + // src: ['scary-elevator-short.mp3'], + // volume: 0.1 + // }), []) - React.useEffect(() => { - const interval = setInterval(() => { - sound.play() - }, 60000) - return () => { - sound.stop() - clearInterval(interval) - } - }, []) + // React.useEffect(() => { + // const interval = setInterval(() => { + // sound.play() + // }, 60000) + // return () => { + // sound.stop() + // clearInterval(interval) + // } + // }, []) return <>
sound.play()}>
diff --git a/src/remotion/compositions/showcases/devfestNantes/Android.tsx b/src/remotion/compositions/showcases/devfestNantes/Android.tsx deleted file mode 100644 index 77a0108..0000000 --- a/src/remotion/compositions/showcases/devfestNantes/Android.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import {Easing, Img, interpolate, staticFile, useCurrentFrame} from 'remotion'; - -import {ComponentDisplayMode} from '../../../types/defaultProps.types'; - -export const Android = ({isTotemDisplayMode = false}: ComponentDisplayMode) => { - const frame = useCurrentFrame(); - const logoWidth = 200; - - const fall = interpolate( - frame, - [0, 200], - [-180, isTotemDisplayMode ? 1300 : 760], - { - extrapolateRight: 'clamp', - }, - ); - const rotate = interpolate(frame, [0, 50, 150, 200], [-45, 45, -45, 45], { - extrapolateRight: 'clamp', - easing: Easing.inOut(Easing.sin), - }); - - return ( - - ); -}; diff --git a/src/remotion/compositions/showcases/devfestNantes/Details.tsx b/src/remotion/compositions/showcases/devfestNantes/Details.tsx index cecf1e4..01fbcf1 100644 --- a/src/remotion/compositions/showcases/devfestNantes/Details.tsx +++ b/src/remotion/compositions/showcases/devfestNantes/Details.tsx @@ -1,60 +1,64 @@ -import {loadFont} from '@remotion/google-fonts/LeagueSpartan'; +import {loadLocalFont} from '../../../../../src/utils/loadFont'; import {interpolate, spring, useCurrentFrame, useVideoConfig} from 'remotion'; import {TalkDetails} from '../../../design/molecules/TalkDetails'; -import React from "react"; -const {fontFamily} = loadFont(); +loadLocalFont('HigherJump', 'font/HigherJump.ttf', 'truetype'); export const Details: React.FC<{ - date?: string; - time?: string; - location?: string; - isTotemDisplayMode?: boolean; -}> = ({date, time, location, isTotemDisplayMode}) => { - const frame = useCurrentFrame(); - const {fps} = useVideoConfig(); + date?: string; + time?: string; + location?: string; + style?: React.CSSProperties; + isTotemDisplayMode?: boolean; +}> = ({date, time, location, style, isTotemDisplayMode}) => { + const frame = useCurrentFrame(); + const {fps} = useVideoConfig(); - const drop = spring({ - frame: frame, - from: -40, - to: isTotemDisplayMode ? 200 : 20, - fps, - durationInFrames: 40, - }); - const opacity = spring({ - frame: frame, - from: 0, - to: 1, - fps, - durationInFrames: 40, - }); - const textUnblur = interpolate(frame, [0, 18], [5, 0], { - extrapolateRight: 'clamp', - }); + const drop = spring({ + frame: frame, + from: -40, + to: isTotemDisplayMode ? 150 : 20, + fps, + durationInFrames: 40, + }); + const opacity = spring({ + frame: frame, + from: 0, + to: 1, + fps, + durationInFrames: 40, + }); + const textUnblur = interpolate(frame, [0, 18], [5, 0], { + extrapolateRight: 'clamp', + }); - return ( - - ); + return ( + + ); }; diff --git a/src/remotion/compositions/showcases/devfestNantes/DevfestNantesDefault.tsx b/src/remotion/compositions/showcases/devfestNantes/DevfestNantesDefault.tsx index 846307d..2516fe0 100644 --- a/src/remotion/compositions/showcases/devfestNantes/DevfestNantesDefault.tsx +++ b/src/remotion/compositions/showcases/devfestNantes/DevfestNantesDefault.tsx @@ -1,42 +1,38 @@ import {loadFont} from '@remotion/google-fonts/CrimsonText'; import {AbsoluteFill, Img, Sequence, staticFile,} from 'remotion'; -import {BackgroundFiller} from '../../../design/atoms/BackgroundFiller'; - -import {Android} from './Android'; -import {Dino} from './Dino'; +import {GhostBackground} from './GhostBackground'; +import {Logo} from './Logo'; +import {Moon} from './Moon'; +import {Trees} from './Trees'; const {fontFamily} = loadFont(); export const DevfestNantesDefault = () => { - return ( - - - - - - - - - - + return ( + + + + + + + + + + + + +
{ height: "100%" }}>
-
- ); +
+ ); }; diff --git a/src/remotion/compositions/showcases/devfestNantes/DevfestNantesDefaultTotem.tsx b/src/remotion/compositions/showcases/devfestNantes/DevfestNantesDefaultTotem.tsx index b406f22..cf78f3c 100644 --- a/src/remotion/compositions/showcases/devfestNantes/DevfestNantesDefaultTotem.tsx +++ b/src/remotion/compositions/showcases/devfestNantes/DevfestNantesDefaultTotem.tsx @@ -1,42 +1,49 @@ +import React from 'react'; import {loadFont} from '@remotion/google-fonts/CrimsonText'; -import {AbsoluteFill, Img, Sequence, staticFile,} from 'remotion'; +import {AbsoluteFill, Img, Sequence, staticFile, + Easing, + interpolate, + useCurrentFrame,} from 'remotion'; -import {BackgroundFiller} from '../../../design/atoms/BackgroundFiller'; - -import {Android} from './Android'; -import {Dino} from './Dino'; +import {GhostBackground} from './GhostBackground'; +import {Logo} from './Logo'; +import {Moon} from './Moon'; +import {Trees} from './Trees'; const {fontFamily} = loadFont(); export const DevfestNantesDefaultTotem = () => { + const frame = useCurrentFrame(); + + const SlideDown = interpolate(frame, [300, 330], [0, 1300], { + extrapolateRight: 'clamp', + extrapolateLeft: 'clamp', + easing: Easing.bezier(0.51, -0.75, 0.99, 0.75), + }); - return ( - - - - - - - + return ( + + + + + + + - - + + + + +
{ height: "75%", }}> -
-
- ); + +
+ ); }; diff --git a/src/remotion/compositions/showcases/devfestNantes/DevfestNantesDirection.tsx b/src/remotion/compositions/showcases/devfestNantes/DevfestNantesDirection.tsx index 1262842..6d1d83b 100644 --- a/src/remotion/compositions/showcases/devfestNantes/DevfestNantesDirection.tsx +++ b/src/remotion/compositions/showcases/devfestNantes/DevfestNantesDirection.tsx @@ -2,10 +2,11 @@ import {loadFont} from '@remotion/google-fonts/CrimsonText'; import {AbsoluteFill, Sequence, staticFile,} from 'remotion'; import {BackgroundFiller} from '../../../design/atoms/BackgroundFiller'; -import {Dino} from './Dino'; import {Logo} from './Logo'; import {Direction} from "src/types.ts"; import {DirectionComponent} from "src/remotion/compositions/showcases/devfestNantes/DirectionComponent.tsx"; +import { Trees } from './Trees'; +import { Moon } from './Moon'; const {fontFamily} = loadFont(); @@ -13,27 +14,20 @@ export const DevfestNantesDirection = ({directions}: { directions: Direction[] } return ( - - - + style={{ + backgroundColor: '#e4595c', + overflow: 'hidden', + fontFamily, + textTransform: 'uppercase', + boxShadow: + 'inset 0 0px 200px rgba(0, 0, 0, 0.9), inset 0 -2px 4px rgba(0, 0, 0, 0.5)', + }} + > - + + + + diff --git a/src/remotion/compositions/showcases/devfestNantes/DevfestNantesDirectionTotem.tsx b/src/remotion/compositions/showcases/devfestNantes/DevfestNantesDirectionTotem.tsx index ef675e4..7c5d234 100644 --- a/src/remotion/compositions/showcases/devfestNantes/DevfestNantesDirectionTotem.tsx +++ b/src/remotion/compositions/showcases/devfestNantes/DevfestNantesDirectionTotem.tsx @@ -3,8 +3,8 @@ import {AbsoluteFill, Sequence, staticFile,} from 'remotion'; import {BackgroundFiller} from '../../../design/atoms/BackgroundFiller'; -import {Android} from './Android'; -import {Dino} from './Dino'; +import { Moon } from './Moon'; +import { Trees } from './Trees'; import {Logo} from './Logo'; import {DirectionComponent} from "src/remotion/compositions/showcases/devfestNantes/DirectionComponent.tsx"; import {Direction} from "src/types.ts"; @@ -14,31 +14,21 @@ const {fontFamily} = loadFont(); export const DevfestNantesDirectionTotem = ({directions}: { directions: Direction[] }) => { return ( - - - - + - + - + diff --git a/src/remotion/compositions/showcases/devfestNantes/DevfestNantesEcranPlats.tsx b/src/remotion/compositions/showcases/devfestNantes/DevfestNantesEcranPlats.tsx index 80d9a1a..ea9ad8c 100644 --- a/src/remotion/compositions/showcases/devfestNantes/DevfestNantesEcranPlats.tsx +++ b/src/remotion/compositions/showcases/devfestNantes/DevfestNantesEcranPlats.tsx @@ -9,25 +9,15 @@ export const DevfestNantesEcranPlat = () => { return ( - - - + style={{ + backgroundColor: '#e4595c', + overflow: 'hidden', + fontFamily, + textTransform: 'uppercase', + boxShadow: + 'inset 0 0px 200px rgba(0, 0, 0, 0.9), inset 0 -2px 4px rgba(0, 0, 0, 0.5)', + }} + >
{ height: "100%" }}> { const currentDate = useCurrentDate(); return ( - - - - - - - - - + style={{ + backgroundColor: '#e4595c', + overflow: 'hidden', + fontFamily, + textTransform: 'uppercase', + boxShadow: + 'inset 0 0px 200px rgba(0, 0, 0, 0.9), inset 0 -2px 4px rgba(0, 0, 0, 0.5)', + }} + >
{ height: "100%" }}> + + + + + + + + + + + + +
- - + + - - - - - - - - + +
-
- {speakers && - - - } - -
- -
- - ); +
+ +); }; diff --git a/src/remotion/compositions/showcases/devfestNantes/DevfestNantesPhrase.tsx b/src/remotion/compositions/showcases/devfestNantes/DevfestNantesPhrase.tsx index 7f8888c..04a7bb3 100644 --- a/src/remotion/compositions/showcases/devfestNantes/DevfestNantesPhrase.tsx +++ b/src/remotion/compositions/showcases/devfestNantes/DevfestNantesPhrase.tsx @@ -1,71 +1,58 @@ import {loadFont} from '@remotion/google-fonts/CrimsonText'; -import {AbsoluteFill, Easing, interpolate, Sequence, staticFile, useCurrentFrame,} from 'remotion'; +import {AbsoluteFill, Sequence} from 'remotion'; -import {BackgroundFiller} from '../../../design/atoms/BackgroundFiller'; import {DefaultProps} from '../../../types/defaultProps.types'; import {TalkTitle} from './TalkTitle'; -import {Android} from './Android'; -import {Dino} from './Dino'; import {Logo} from './Logo'; import {Details} from "./Details"; +import {GhostBackground} from './GhostBackground'; +import {Moon} from './Moon'; +import {Trees} from './Trees'; const {fontFamily} = loadFont(); export const DevfestNantesPhrase = ({title, location, time}: DefaultProps) => { - const frame = useCurrentFrame(); - - const SlideDown = interpolate(frame, [300, 330], [0, 650], { - extrapolateRight: 'clamp', - extrapolateLeft: 'clamp', - easing: Easing.bezier(0.51, -0.75, 0.99, 0.75), - }); + return ( - - - - - - - - - - - - - -
- + + + + + + + + + + + + + + - {location &&
} + -
-
- ); -}; + +
+ + + ); +}; \ No newline at end of file diff --git a/src/remotion/compositions/showcases/devfestNantes/DevfestNantesPhraseTotem.tsx b/src/remotion/compositions/showcases/devfestNantes/DevfestNantesPhraseTotem.tsx index 611153e..073c701 100644 --- a/src/remotion/compositions/showcases/devfestNantes/DevfestNantesPhraseTotem.tsx +++ b/src/remotion/compositions/showcases/devfestNantes/DevfestNantesPhraseTotem.tsx @@ -11,11 +11,12 @@ import { import { BackgroundFiller } from '../../../design/atoms/BackgroundFiller'; import { DefaultProps } from '../../../types/defaultProps.types'; -import { Android } from './Android'; -import { Details } from './Details'; -import { Dino } from './Dino'; -import { Logo } from './Logo'; -import { TalkTitle } from './TalkTitle'; +import {Logo} from './Logo'; +import {Details} from "./Details"; +import {TalkTitle} from './TalkTitle'; +import {GhostBackground} from './GhostBackground'; +import {Moon} from './Moon'; +import {Trees} from './Trees'; const { fontFamily } = loadFont(); @@ -34,45 +35,45 @@ export const DevfestNantesPhraseTotem = ({ return ( + + + + + + + + + + + + +
- - - - - - - - - - - + > + + -
- - - - {location &&
} -
+ +
+ +
- ); -}; \ No newline at end of file + ); + }; + \ No newline at end of file diff --git a/src/remotion/compositions/showcases/devfestNantes/DevfestNantesTalk.tsx b/src/remotion/compositions/showcases/devfestNantes/DevfestNantesTalk.tsx index f1777cb..8f7df9c 100644 --- a/src/remotion/compositions/showcases/devfestNantes/DevfestNantesTalk.tsx +++ b/src/remotion/compositions/showcases/devfestNantes/DevfestNantesTalk.tsx @@ -1,76 +1,75 @@ import {loadFont} from '@remotion/google-fonts/CrimsonText'; -import {AbsoluteFill, Easing, interpolate, Sequence, staticFile, useCurrentFrame,} from 'remotion'; +import {AbsoluteFill, Easing, interpolate, Sequence, useCurrentFrame,} from 'remotion'; -import {BackgroundFiller} from '../../../design/atoms/BackgroundFiller'; import {DefaultProps} from '../../../types/defaultProps.types'; -import {TalkTitle} from './TalkTitle'; -import {Android} from './Android'; import {Details} from './Details'; -import {Dino} from './Dino'; +import {GhostBackground} from './GhostBackground'; import {Logo} from './Logo'; +import {Moon} from './Moon'; import {Speakers} from './Speakers'; +import {TalkTitle} from './TalkTitle'; +import {Trees} from './Trees'; + const {fontFamily} = loadFont(); export const DevfestNantesTalk = ({ - title, - speakers, - date, - time, - location, + title, + speakers, + date, + time, + location, }: DefaultProps) => { - const frame = useCurrentFrame(); + const frame = useCurrentFrame(); - const SlideDown = interpolate(frame, [300, 330], [0, 650], { - extrapolateRight: 'clamp', - extrapolateLeft: 'clamp', - easing: Easing.bezier(0.51, -0.75, 0.99, 0.75), - }); + const SlideDown = interpolate(frame, [300, 330], [0, 650], { + extrapolateRight: 'clamp', + extrapolateLeft: 'clamp', + easing: Easing.bezier(0.51, -0.75, 0.99, 0.75), + }); - return ( - - - - - - - - - - - - - -
- {speakers && - - - } - -
- -
-
- ); -}; + return ( + + + + + + + + + + +
+ + + + + +
+ +
+ + + +
+ ); +}; \ No newline at end of file diff --git a/src/remotion/compositions/showcases/devfestNantes/Dino.tsx b/src/remotion/compositions/showcases/devfestNantes/Dino.tsx deleted file mode 100644 index 91df5dc..0000000 --- a/src/remotion/compositions/showcases/devfestNantes/Dino.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import {Easing, Img, interpolate, staticFile, useCurrentFrame} from 'remotion'; - -export const Dino = () => { - const frame = useCurrentFrame(); - const logoWidth = 400; - - const pictureSlide = interpolate(frame, [0, 20], [-logoWidth, 0], { - extrapolateRight: 'clamp', - easing: Easing.out(Easing.ease), - }); - - const pictureSlideBack = interpolate(frame, [270, 290], [0, -logoWidth], { - extrapolateRight: 'clamp', - easing: Easing.out(Easing.ease), - }); - - return ( - - ); -}; diff --git a/src/remotion/compositions/showcases/devfestNantes/GhostBackground.tsx b/src/remotion/compositions/showcases/devfestNantes/GhostBackground.tsx new file mode 100644 index 0000000..7373717 --- /dev/null +++ b/src/remotion/compositions/showcases/devfestNantes/GhostBackground.tsx @@ -0,0 +1,41 @@ +import { + Img, + interpolate, + staticFile, + useCurrentFrame, + useVideoConfig, +} from 'remotion'; + +import {ComponentDisplayMode} from '../../../types/defaultProps.types'; + +export const GhostBackground = ({ + isTotemDisplayMode = false, +}: ComponentDisplayMode) => { + const {durationInFrames} = useVideoConfig(); + const frame = useCurrentFrame(); + const logoWidth = 350; + + const opacity = interpolate( + frame, + [0, 80, durationInFrames - 20, durationInFrames], + [0, 0.1, 0.08, 0], + ); + + const zoomScale = interpolate(frame, [0, durationInFrames], [1, 2]); + + return ( + + ); +}; diff --git a/src/remotion/compositions/showcases/devfestNantes/Logo.tsx b/src/remotion/compositions/showcases/devfestNantes/Logo.tsx index 2611913..0ee5562 100644 --- a/src/remotion/compositions/showcases/devfestNantes/Logo.tsx +++ b/src/remotion/compositions/showcases/devfestNantes/Logo.tsx @@ -13,7 +13,7 @@ import {ComponentDisplayMode} from '../../../types/defaultProps.types'; export const Logo = ({isTotemDisplayMode = false}: ComponentDisplayMode) => { const frame = useCurrentFrame(); const {fps} = useVideoConfig(); - const logoWidth = 250; + const logoWidth = 150; const pictureSlide = spring({ frame, @@ -32,7 +32,7 @@ export const Logo = ({isTotemDisplayMode = false}: ComponentDisplayMode) => { return ( { + const frame = useCurrentFrame(); + const logoWidth = 200; + + const fall = interpolate( + frame, + [0, 250], + [-450, isTotemDisplayMode ? 1300 : 1000], + { + extrapolateRight: 'clamp', + }, + ); + + const moveRight = interpolate( + frame, + [0, 250], + [100, isTotemDisplayMode ? 1300 : -200], + { + extrapolateRight: 'clamp', + }, + ); + + const rotate = interpolate(frame, [0, 400], [0, 200], { + extrapolateRight: 'clamp', + }); + + return ( + + ); +}; diff --git a/src/remotion/compositions/showcases/devfestNantes/Speakers.tsx b/src/remotion/compositions/showcases/devfestNantes/Speakers.tsx index 1f32500..9ceb398 100644 --- a/src/remotion/compositions/showcases/devfestNantes/Speakers.tsx +++ b/src/remotion/compositions/showcases/devfestNantes/Speakers.tsx @@ -1,9 +1,8 @@ -import {loadFont} from '@remotion/google-fonts/YanoneKaffeesatz'; +import {loadFont} from '@remotion/google-fonts/Creepster'; import { AbsoluteFill, interpolate, spring, - staticFile, useCurrentFrame, useVideoConfig, } from 'remotion'; @@ -14,15 +13,15 @@ import {Speaker} from '../../../types/defaultProps.types'; const {fontFamily} = loadFont(); -export const Speakers: React.FC<{speakers: Speaker[], isTotemDisplayMode?: boolean;}> = ({speakers, isTotemDisplayMode}) => { +export const Speakers: React.FC<{speakers: Speaker[], isTotemDisplayMode?: boolean;}> = ({speakers, isTotemDisplayMode = false}) => { const frame = useCurrentFrame(); const {fps} = useVideoConfig(); - const pictureDrop = spring({ + const pictureUp = spring({ frame: frame, fps, - from: -600, - to: 80, + from: isTotemDisplayMode ? -480 : -430, + to: -280, durationInFrames: 60, }); @@ -58,18 +57,13 @@ export const Speakers: React.FC<{speakers: Speaker[], isTotemDisplayMode?: boole }} > diff --git a/src/remotion/compositions/showcases/devfestNantes/Trees.tsx b/src/remotion/compositions/showcases/devfestNantes/Trees.tsx new file mode 100644 index 0000000..e79232e --- /dev/null +++ b/src/remotion/compositions/showcases/devfestNantes/Trees.tsx @@ -0,0 +1,51 @@ +import {Easing, Img, interpolate, staticFile, useCurrentFrame} from 'remotion'; + +export const Trees = () => { + const frame = useCurrentFrame(); + const treesWidth = 1000; + const backgroundTreesWidth = 400; + + const pictureSlide = interpolate(frame, [0, 20], [-treesWidth, 0], { + extrapolateRight: 'clamp', + easing: Easing.out(Easing.ease), + }); + + const pictureSlideRight = interpolate(frame, [0, 20], [-treesWidth, -60], { + extrapolateRight: 'clamp', + easing: Easing.out(Easing.ease), + }); + + const pictureSlideBack = interpolate(frame, [270, 290], [0, -treesWidth], { + extrapolateRight: 'clamp', + easing: Easing.out(Easing.ease), + }); + + return ( + <> + + + + ); +}; diff --git a/src/remotion/types/defaultProps.types.ts b/src/remotion/types/defaultProps.types.ts index f7213b1..05471a8 100644 --- a/src/remotion/types/defaultProps.types.ts +++ b/src/remotion/types/defaultProps.types.ts @@ -5,7 +5,7 @@ export type Speaker = { export type DefaultProps = { title: string; - speakers?: Speaker[]; + speakers: Speaker[]; date?: string; time?: string; location?: string; @@ -14,3 +14,7 @@ export type DefaultProps = { export type ComponentDisplayMode = { isTotemDisplayMode?: boolean; }; + +export const ShowcaseDevfestNantes2024Schema = DefaultProps.extend({ + titleFontSize: z.number().optional(), +}); \ No newline at end of file diff --git a/src/utils/loadFont.ts b/src/utils/loadFont.ts new file mode 100644 index 0000000..5df382b --- /dev/null +++ b/src/utils/loadFont.ts @@ -0,0 +1,25 @@ +import {continueRender, delayRender, staticFile} from 'remotion'; + +type RemotionFont = { + loadFont: () => void; +}; + +export function loadLocalFont( + fontName: string, + fontLocalPath: string, + format: 'woff2' | 'woff' | 'opentype' | 'truetype', +) { + const waitForFont = delayRender('Loading local font...'); + const font = new FontFace( + fontName, + `url('${staticFile(fontLocalPath)}') format('${format}')`, + ); + + font + .load() + .then(() => { + document.fonts.add(font); + continueRender(waitForFont); + }) + .catch((err) => console.error('Error loading font', err)); +}