diff --git a/webapp/src/App.css b/webapp/src/App.css index 4178dc1..20b648c 100644 --- a/webapp/src/App.css +++ b/webapp/src/App.css @@ -1,10 +1,18 @@ +h1 { + margin-top: 10px; + margin-bottom: 10px; +} + .Header .OnlineToggle { transform: scale(.5); margin-left: -19px; + margin-top: -7px; } .Header { display: flex; + justify-content: center; + margin-left: 60px; } .Header nav { @@ -12,8 +20,9 @@ justify-content: center; display: flex; flex-wrap: wrap; + padding-left: 30px; - padding-top: 10px; + padding-bottom: 5px; } .Header a { diff --git a/webapp/src/App.js b/webapp/src/App.js index db764f8..07dffe8 100644 --- a/webapp/src/App.js +++ b/webapp/src/App.js @@ -57,9 +57,7 @@ function Header({ configReducer, isPolling }) { return (
-

- CordaCheckers -

+

CordaCheckers

- New - Proposal - Active - Archive +
+ New + Proposal + Active + Archive +
) } @@ -119,7 +121,7 @@ function GameBoardRoutes({ gamesReducer, gamesApi, username }) { dispatchGames({ type: 'nextNewGame', board }); } - const onStoneMove = (uuid, move) => gamesApi.pushGameMove({uuid, move, message: games.active.message}); + const onStoneMove = (uuid, move) => gamesApi.pushGameMove({ uuid, move, message: games.active.message }); return ( diff --git a/webapp/src/container/games/ActionPanel.css b/webapp/src/container/games/ActionPanel.css new file mode 100644 index 0000000..201bcaa --- /dev/null +++ b/webapp/src/container/games/ActionPanel.css @@ -0,0 +1,84 @@ +.ActionPanel button { + width: fit-content; + padding: 6px; + padding-left: 15px; + padding-right: 15px; + border-radius: 5px; + border: 0.5px solid darkgrey; + margin: 2px; +} + +.ActionPanel .Create.ready { + background-color: #00b0ff30; +} + +.ActionPanel .Create.ready:hover { + background-color: #00b0ffa0; +} + +.ActionPanel .Create.ready:active { + background-color: #00b0fff0; +} + +.ActionPanel .Cancel.ready, +.ActionPanel .Reject.ready, +.ActionPanel .Surrender.ready { + background-color: #ffaaaa60 +} + +.ActionPanel .Cancel.ready:hover, +.ActionPanel .Reject.ready:hover, +.ActionPanel .Surrender.ready:hover { + background-color: #ff000060 +} + +.ActionPanel .Cancel.ready:active, +.ActionPanel .Reject.ready:active, +.ActionPanel .Surrender.ready:active { + background-color: #ff0000a0 +} + +.ActionPanel .Accept.ready { + background-color: #00af0018; +} + +.ActionPanel .Accept.ready:hover { + background-color: #00af0060; +} + +.ActionPanel .Accept.ready:active { + background-color: #00af00a0; +} + +/* + * Draw + */ + .ActionPanel .Draw.ready, + .ActionPanel .Draw.accept, + .ActionPanel .Draw.reject { + background-color: #ffff0018; + } + + .ActionPanel .Draw.ready:hover { + background-color: #ffff0040; + } + + .ActionPanel .Draw.ready:active { + background-color: #ffff00a0; + } + + .ActionPanel .Draw.accept:hover { + background-color: #a4ff4a50; + } + + .ActionPanel .Draw.accept:active { + background-color: #10ff0080; + } + + .ActionPanel .Draw.reject:hover { + background-color: #ffaaaa60; + } + + .ActionPanel .Draw.reject:active { + background-color: #ff000090; + } \ No newline at end of file diff --git a/webapp/src/container/games/ActionPanel.jsx b/webapp/src/container/games/ActionPanel.jsx index c3eb254..55912a5 100644 --- a/webapp/src/container/games/ActionPanel.jsx +++ b/webapp/src/container/games/ActionPanel.jsx @@ -1,6 +1,7 @@ import React, { useContext } from 'react'; import { GamesContext } from '../../context/games'; import Wobler from '../../components/Wobler'; +import './ActionPanel.css' /* * NewGame actoins diff --git a/webapp/src/container/games/GameBoard.css b/webapp/src/container/games/GameBoard.css index 85bd13c..cb92396 100644 --- a/webapp/src/container/games/GameBoard.css +++ b/webapp/src/container/games/GameBoard.css @@ -1,14 +1,12 @@ .GameBoard .Player { display: flex; flex-direction: row; - align-items: center; - justify-content: center; } .GameBoard .Tile { line-height: 34px; height: 34px; - width: 34px; + width: 34px; margin-right: -1px; margin-top: -1px; } @@ -18,10 +16,5 @@ } .GameBoard .Tile.white.interactive:hover { - background-color:azure; -} - -.Message2Opponent { - margin: 10px; - width: 270px; + background-color: azure; } \ No newline at end of file diff --git a/webapp/src/container/games/GameBoard.jsx b/webapp/src/container/games/GameBoard.jsx index 71f4202..c2fb429 100644 --- a/webapp/src/container/games/GameBoard.jsx +++ b/webapp/src/container/games/GameBoard.jsx @@ -6,27 +6,27 @@ import { Color, Player, Board } from '../../components/Checkers'; import './GameBoard.css'; export default function GameBoard({ username, onStoneClick, onStoneMove }) { - const game = useSelectedGame(); + const game = useSelectedGame() || {}; - const opponentColor = Color.opposite(game?.myColor); - const [opponentName, myName] = (game?.opponentName) ? [game.opponentName, username] : ['', '']; - const flipBoard = (game?.myColor === Color.black) ? true : null; + const myName = game.opponentName ? username : ''; + const opponentColor = Color.opposite(game.myColor); + const flipBoard = (game.myColor === Color.black) ? true : null; const optionalOnStoneClick = (typeof onStoneClick !== 'function') ? null : - (cellId) => onStoneClick(game?.uuid, cellId); + (cellId) => onStoneClick(game.uuid, cellId); const optionalOnStoneMove = (typeof onStoneMove !== 'function') ? null : - (move) => onStoneMove(game?.uuid, move); + (move) => onStoneMove(game.uuid, move); return (
- - + - - {game?.isPushingGameMove ? Moving... : null /* TODO: isPushing shall be stored per game. curernty it is global indicator */} + + {game.isPushingGameMove ? Moving... : null /* TODO: isPushing shall be stored per game. curernty it is global indicator */}
) }