MigrBranch #48

Merged
pierre.ferreira merged 2 commits from MigrBranch into master 11 months ago

16
.gitignore vendored

@ -7,6 +7,7 @@
# Icon must end with two \r # Icon must end with two \r
Icon Icon
# Thumbnails # Thumbnails
._* ._*
@ -26,3 +27,18 @@ Network Trash Folder
Temporary Items Temporary Items
.apdisk .apdisk
### react ###
.DS_*
*.log
logs
**/*.backup.*
**/*.back.*
node_modules
bower_components
*.sublime*
psd
thumb
sketch

File diff suppressed because it is too large Load Diff

@ -0,0 +1,41 @@
{
"name": "cryptide",
"version": "1.0.0",
"dependencies": {
"@testing-library/jest-dom": "^5.17.0",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"bootstrap": "^5.3.2",
"react": "^18.2.0",
"react-bootstrap": "^2.9.1",
"react-dom": "^18.2.0",
"react-icons": "^4.11.0",
"react-router-dom": "^6.18.0",
"react-scripts": "5.0.1",
"web-vitals": "^2.1.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

@ -0,0 +1,43 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Web site created using create-react-app"
/>
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
<!--
manifest.json provides metadata used when your web app is installed on a
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
-->
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<!--
Notice the use of %PUBLIC_URL% in the tags above.
It will be replaced with the URL of the `public` folder during the build.
Only files inside the `public` folder can be referenced from the HTML.
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
<title>React App</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<!--
This HTML file is a template.
If you open it directly in the browser, you will see an empty page.
You can add webfonts, meta tags, or analytics to this file.
The build step will place the bundled scripts into the <body> tag.
To begin the development, run `npm start` or `yarn start`.
To create a production bundle, use `npm run build` or `yarn build`.
-->
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

@ -0,0 +1,25 @@
{
"short_name": "React App",
"name": "Create React App Sample",
"icons": [
{
"src": "favicon.ico",
"sizes": "64x64 32x32 24x24 16x16",
"type": "image/x-icon"
},
{
"src": "logo192.png",
"type": "image/png",
"sizes": "192x192"
},
{
"src": "logo512.png",
"type": "image/png",
"sizes": "512x512"
}
],
"start_url": ".",
"display": "standalone",
"theme_color": "#000000",
"background_color": "#ffffff"
}

@ -0,0 +1,3 @@
# https://www.robotstxt.org/robotstxt.html
User-agent: *
Disallow:

@ -0,0 +1,40 @@
/* feuille de style par defaut */
.App {
text-align: center;
}
.App-logo {
height: 40vmin;
pointer-events: none;
}
@media (prefers-reduced-motion: no-preference) {
.App-logo {
animation: App-logo-spin infinite 20s linear;
}
}
.App-header {
background-color: #282c34;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: calc(10px + 2vmin);
color: white;
}
a {
color: #61dafb;
}
@keyframes App-logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}

@ -0,0 +1,45 @@
//import logo from './res/img/logo.svg';
import React from 'react';
/* Page */
import Home from './Pages/Home';
import Jouer from './Pages/Jouer';
import Login from './Pages/LoginForm.js';
import SignUp from './Pages/SignUpForm.js';
/* Component */
import AppNavbar from './Components/NavBar.js';
/* nav */
import { BrowserRouter, Route, Routes } from "react-router-dom";
/* Style */
import './App.css';
/* bootstrap */
import 'bootstrap/dist/css/bootstrap.min.css';
function App() {
return (
// <div className="App">
// <header className="App-header">
// <Home />
// <img src={logo} className="App-logo" alt="logo" />
// </header>
// </div>
<BrowserRouter>
<AppNavbar />
<Routes>
<Route exact path="/" element={<Home />} />
<Route path="/jouer" element={<Jouer />} />
<Route path="/login" element={<Login />} />
<Route path="/signup" element={<SignUp />} />
</Routes>
</BrowserRouter>
);
}
export default App;

@ -0,0 +1,8 @@
import { render, screen } from '@testing-library/react';
import App from './App';
test('renders learn react link', () => {
render(<App />);
const linkElement = screen.getByText(/learn react/i);
expect(linkElement).toBeInTheDocument();
});

@ -0,0 +1,33 @@
.custom-navbar{
background-color: #85C9C2;
color: #fff;
text-emphasis-color: #fff;
}
.navbar-title {
font-size: 24px;
}
.navbar-title-dd {
font-size: 24px;
color: #fff;
border-radius: 15px;
}
.navbar-title-dd a {
background-color: #2A4541;
color: #fff;
border-radius: 15;
padding: 10px 20px; /* Ajustez le rembourrage selon vos préférences */
text-decoration: none; /* Pour supprimer le soulignement des liens */
display: inline-block; /* Pour que les styles de fond s'appliquent aux liens */
margin-right: 10px; /* Pour ajouter de l'espace entre les boutons */
}
.centerdiv{
display: flex;
justify-content: center;
}

@ -0,0 +1,38 @@
import React from 'react';
import { Navbar, Container, Nav, NavDropdown } from 'react-bootstrap';
import { BiLogInCircle } from 'react-icons/bi';
import { BsFillPersonPlusFill } from 'react-icons/bs'
import './NavBar.css';
function AppNavbar() {
return (
<Navbar expand="lg" className="custom-navbar">
<Container>
<Navbar.Brand href="/">
<div>
<h2>Cryptide</h2>
<h6>by Crypteam</h6>
</div>
</Navbar.Brand>
<Navbar.Toggle aria-controls="basic-navbar-nav" />
<Navbar.Collapse id="basic-navbar-nav">
<Nav className="me-auto">
<NavDropdown title="Jouer" className="navbar-title" id="basic-nav-dropdown">
<NavDropdown.Item href="jouer">Jouer solo</NavDropdown.Item>
<NavDropdown.Divider />
<NavDropdown.Item href="jouer">Créer une partie</NavDropdown.Item>
<NavDropdown.Item href="jouer">Rejoindre</NavDropdown.Item>
</NavDropdown>
</Nav>
<Nav className="ml-auto navbar-title-dd">
<Nav.Link href="login" className='navbar-title-dd'> <BiLogInCircle/> Log in</Nav.Link>
<Nav.Link href="signup" className='navbar-title-dd'> <BsFillPersonPlusFill/> Sign up</Nav.Link>
</Nav>
</Navbar.Collapse>
</Container>
</Navbar>
);
}
export default AppNavbar;

@ -0,0 +1,49 @@
.home-container {
display: flex;
justify-content: space-between;
/* background-color: #D7D4C6; */
background-color: #fff;
min-height: 100vh;
display: flex;
font-size: calc(10px + 2vmin);
color: #2A4541;
}
/**Divider**/
.left-section {
flex: 3;
padding: 20px;
margin-right: 10px;
margin-left: 30px;
}
.vertical-divider {
width: 5px;
background-color: #2A4541;
}
.right-section {
flex: 1;
padding: 20px;
margin-left: 10px;
}
.left-section h2,
.right-section h2 {
text-align: left;
}
.left-section p,
.right-section ul {
text-align: left;
}
/*Global ???*/
.button {
background-color: #49A4BE;
color: #fff;
padding: 10px 20px;
border-radius: 10;
cursor: pointer;
}

@ -0,0 +1,54 @@
import React from 'react';
import './Home.css'; // Créez un fichier CSS pour styliser votre composant
import '../App.css';
import { Link } from 'react-router-dom';
function Home() {
return (
<div className="home-container">
<div className="left-section">
<div>
<h2>L'HISTOIRE</h2>
<p>
"La cryptozoologie étudie les traces des monstres de légende : les cryptides. Yétis, Chupacabra, bête du gévaudan, Dahut, ect., sont des sujets très sérieux pour vous… Croisez les indices et soyez le premier à les découvrir!"
</p>
</div>
<div>
<h2>LE JEU</h2>
<p>
"Chaque joueur possède un indice sur le terrain où se trouve la créature. En recoupant vos informations, il ne peut y avoir qu'une case qui y corresponde. Mais le but est d'être le premier à la trouver. Interrogez vos collègues, et néanmoins concurrents. Ils ne peuvent vous répondre que par «non» ou «peut-être», avec beaucoup de logique et un brin d'audace, vous pourrez rentrer dans la légende!"
</p>
</div>
<div>
<h2>LES +</h2>
<ul>
<li>Une mécanique de déduction époustouflante.</li>
<li>Une rejouabilité immense.</li>
<li>Un thème surprenant et fort.</li>
</ul>
</div>
</div>
<div className="vertical-divider"></div>
<div className="right-section">
<h3>Temps :<t/> 45 minutes</h3>
<h3>Joueurs :<t/> 3 à 5 joueurs</h3>
<h3>Age :<t/> 10 ans et +</h3>
<p>-------------------------------</p>
<h3> <u>Créé par :</u><br/> Hal Duncan & Ruth Veevers</h3>
<h3> <u>Illustré par :</u><br/> Kwanchai Moriya</h3>
{/* <button>Jouer au jeu</button> */}
<br/>
<Link to="/jouer" className='button'>Aller à la page Page2</Link>
</div>
</div>
);
}
export default Home;

@ -0,0 +1,10 @@
.all{
background-color: #D7D4C6;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: calc(10px + 2vmin);
color: #2A4541;
}

@ -0,0 +1,14 @@
import React from 'react';
import './Jouer.css';
import '../App.css';
function Jouer() {
return (
<div className='all'>
<h1>Bienvenue</h1>
<h6>en page 2</h6>
</div>
);
}
export default Jouer;

@ -0,0 +1,52 @@
import React, { Component } from 'react';
import { AiOutlineSend } from 'react-icons/ai';
import '../Style/Global.css';
export default class Login extends Component {
render() {
return (
<div className="form-container">
<form>
<br/>
<h3>Log In</h3>
<div className="mb-3">
<label>Pseudo</label>
<input
type="pseudo"
className="form-control"
placeholder="Entrez votre pseudo ici"
/>
</div>
<div className="mb-3">
<label>Password</label>
<input
type="password"
className="form-control"
placeholder="Entrez votre mot de passe ici"
/>
</div>
<div className="mb-3">
<div className="custom-control custom-checkbox">
<input
type="checkbox"
className="custom-control-input"
id="customCheck1"
/>
<label className="custom-control-label" htmlFor="customCheck1">
Se souvenir de moi
</label>
</div>
</div>
<div className="d-grid">
<button type="submit" className="btn btn-primary">
Soumettre <AiOutlineSend/>
</button>
</div>
<p className="forgot-password text-right">
<a href="#">Mot de passe</a> oublié ?
</p>
</form>
</div>
)
}
}

@ -0,0 +1,48 @@
import React, { Component } from 'react';
import { AiOutlineSend } from 'react-icons/ai';
import '../Style/Global.css';
export default class SignUp extends Component {
render() {
return (
<div className="form-container">
<form>
<br/>
<h3>Sign Up</h3>
<div className="mb-3">
<label>Pseudo</label>
<input
type="pseudo"
className="form-control"
placeholder="Entrez votre pseudo ici"
/>
</div>
<div className="mb-3">
<label>Password</label>
<input
type="password"
className="form-control"
placeholder="Entrez votre mot de passe ici"
/>
</div>
<div className="mb-3">
<label>Confirm Password</label>
<input
type="Cpassword"
className="form-control"
placeholder="Confirmez votre mot de passe ici"
/>
</div>
<div className="d-grid">
<button type="submit" className="btn btn-primary">
Soumettre <AiOutlineSend/>
</button>
</div>
<p className="forgot-password text-right">
Vous avez déjà un <a href="/login">compte</a> ?
</p>
</form>
</div>
)
}
}

@ -0,0 +1,14 @@
/**Form**/
.form-container {
/* background-color: #D7D4C6; */
background-color: #fff;
min-height: 100vh;
}
form{
margin : auto 150px;
}

@ -0,0 +1,13 @@
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
code {
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
monospace;
}

@ -0,0 +1,17 @@
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<App />
</React.StrictMode>
);
// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();

@ -0,0 +1,13 @@
const reportWebVitals = onPerfEntry => {
if (onPerfEntry && onPerfEntry instanceof Function) {
import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
getCLS(onPerfEntry);
getFID(onPerfEntry);
getFCP(onPerfEntry);
getLCP(onPerfEntry);
getTTFB(onPerfEntry);
});
}
};
export default reportWebVitals;

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3"><g fill="#61DAFB"><path d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/><circle cx="420.9" cy="296.5" r="45.7"/><path d="M520.5 78.1z"/></g></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

@ -0,0 +1,5 @@
// jest-dom adds custom jest matchers for asserting on DOM nodes.
// allows you to do things like:
// expect(element).toHaveTextContent(/react/i)
// learn more: https://github.com/testing-library/jest-dom
import '@testing-library/jest-dom';
Loading…
Cancel
Save