diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2021-07-02 11:19:25 +0300 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2021-07-02 11:19:25 +0300 |
| commit | b6beb5f02e8c291f2b5f2bc7d0c15d0955336c32 (patch) | |
| tree | e51abdbbb9b932b51dcc4fa0b242b32881a79c39 /frontend/components/Marquees/Marquees.tsx | |
| parent | f1b8e3cb04e9f274e8008881bdc2edc910123046 (diff) | |
Implement research papers
Diffstat (limited to 'frontend/components/Marquees/Marquees.tsx')
| -rw-r--r-- | frontend/components/Marquees/Marquees.tsx | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/frontend/components/Marquees/Marquees.tsx b/frontend/components/Marquees/Marquees.tsx new file mode 100644 index 0000000..04747fb --- /dev/null +++ b/frontend/components/Marquees/Marquees.tsx @@ -0,0 +1,35 @@ +import React, { ReactElement } from "react"; +import styles from "./Marquee.module.css"; +import Marquee from "./Marquee"; + +export interface MarqueeLink { + title: string; + url: string; +} + +interface Props { + links: MarqueeLink[] +} + +const getRandomDelayBetween = (start: number, end: number) => `${Math.random() * (end - start) + start}s`; +const getTopFromIndex = (index: number, n: number) => `calc((100% - 50px) * (${index} / ${n - 1}))`; +const getRandomAnimationName = () => Math.random() > 0.5 ? "right" : "left"; + +const Marquees = ({ links }: Props): ReactElement => { + return ( + <div className={styles.marqueeContainer}> + { links.map((link, idx) => ( + <Marquee + key={idx} + url={link.url} + text={link.title} + delayShorthand={getRandomDelayBetween(0, 9)} + topShorthand={getTopFromIndex(idx, links.length)} + direction={getRandomAnimationName()} + /> + ))} + </div> + ); +}; + +export default Marquees; |
