summaryrefslogtreecommitdiff
path: root/front/src/routes/demo.jsx
blob: 57d3ce43837d9cae9880c2517613f59e4484190b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import { useEffect, useRef, useState } from "react";
import { Link } from "react-router-dom";

import * as AsciinemaPlayer from "asciinema-player";
import "asciinema-player/dist/bundle/asciinema-player.css";

const demoProps = {
  theme: "tango",
  autoPlay: true,
};

const demoCast = "/chessh.cast";
const demoCastElementId = "demo";

export const Demo = () => {
  const player = useRef(null);
  const [renderedPlayer, setRenderedPlayer] = useState(false);

  useEffect(() => {
    if (!renderedPlayer) {
      AsciinemaPlayer.create(
        demoCast,
        document.getElementById(demoCastElementId),
        demoProps
      );
      setRenderedPlayer(true);
    }
  }, [renderedPlayer, player]);

  return (
    <div className="demo-container">
      <h1>
        Welcome to <span style={{ color: "green" }}>> CheSSH!</span>
      </h1>
      <div className="flex-row-around">
        <p>
          CheSSH is a multiplayer, scalable, free, open source, and (optionally)
          passwordless game of Chess over the SSH protocol, written in Elixir.
        </p>
        <a
          className="button gold"
          href="https://github.com/Simponic/chessh"
          target="_blank"
          rel="noreferrer"
        >
          🌟 Star Repo 🌟
        </a>
      </div>
      <hr />
      <div ref={player} id={demoCastElementId} />
      <hr />
      <div className="flex-row-around">
        <h3>Would you like to play a game?</h3>
        <Link className="button" to="/home">
          Yes, Falken ⇒
        </Link>
      </div>
    </div>
  );
};