diff --git a/.45env45 b/.45env45 new file mode 100644 index 0000000..67317b7 --- /dev/null +++ b/.45env45 @@ -0,0 +1,10 @@ +POSTGRES_PASSWORD=coucou +JWT_SECRET=superlongsecretkeyatleast32characterspleasenevercommitthis +POSTGRES_DB=database +POSTGRES_HOST=database +POSTGRES_USER=user +GITHUB_CLIENT_ID=Ov23li6ovg3fzec5IO5D +GITHUB_CLIENT_SECRET=0345e959e8f0e9f784061c5c90ee227ddb2ef9ab +GITHUB_CALLBACK_URL=http://localhost:8080/api/auth/github/callback + +pogpog diff --git a/Transcendence/srcs/frontend/src/app.js b/Transcendence/srcs/frontend/src/app.js index c6f3913..76acccf 100644 --- a/Transcendence/srcs/frontend/src/app.js +++ b/Transcendence/srcs/frontend/src/app.js @@ -109,7 +109,8 @@ class App { } colorizeUI() { - const elements = document.querySelectorAll(".menu__item, .game__item, .page__item"); + + const elements = document.querySelectorAll(".title, .menu__item, .game__item, .page__item"); const colorizeText = (el) => { const text = el.textContent; @@ -136,9 +137,9 @@ class App { el.appendChild(span); }); }; - elements.forEach(colorizeText); -} + } + } // Start the application when DOM is ready diff --git a/Transcendence/srcs/frontend/src/assets/Frame1.png b/Transcendence/srcs/frontend/src/assets/Frame1.png index 3710be2..ea42535 100644 Binary files a/Transcendence/srcs/frontend/src/assets/Frame1.png and b/Transcendence/srcs/frontend/src/assets/Frame1.png differ diff --git a/Transcendence/srcs/frontend/src/assets/Frame10.png b/Transcendence/srcs/frontend/src/assets/Frame10.png new file mode 100644 index 0000000..db4fc6b Binary files /dev/null and b/Transcendence/srcs/frontend/src/assets/Frame10.png differ diff --git a/Transcendence/srcs/frontend/src/assets/Frame11.png b/Transcendence/srcs/frontend/src/assets/Frame11.png new file mode 100644 index 0000000..600d84e Binary files /dev/null and b/Transcendence/srcs/frontend/src/assets/Frame11.png differ diff --git a/Transcendence/srcs/frontend/src/assets/Frame12.png b/Transcendence/srcs/frontend/src/assets/Frame12.png new file mode 100644 index 0000000..41a0dd9 Binary files /dev/null and b/Transcendence/srcs/frontend/src/assets/Frame12.png differ diff --git a/Transcendence/srcs/frontend/src/assets/Frame2.png b/Transcendence/srcs/frontend/src/assets/Frame2.png new file mode 100644 index 0000000..377e641 Binary files /dev/null and b/Transcendence/srcs/frontend/src/assets/Frame2.png differ diff --git a/Transcendence/srcs/frontend/src/assets/Frame3.png b/Transcendence/srcs/frontend/src/assets/Frame3.png new file mode 100644 index 0000000..d195552 Binary files /dev/null and b/Transcendence/srcs/frontend/src/assets/Frame3.png differ diff --git a/Transcendence/srcs/frontend/src/assets/Frame4.png b/Transcendence/srcs/frontend/src/assets/Frame4.png new file mode 100644 index 0000000..604b362 Binary files /dev/null and b/Transcendence/srcs/frontend/src/assets/Frame4.png differ diff --git a/Transcendence/srcs/frontend/src/assets/Frame5.png b/Transcendence/srcs/frontend/src/assets/Frame5.png new file mode 100644 index 0000000..c49df63 Binary files /dev/null and b/Transcendence/srcs/frontend/src/assets/Frame5.png differ diff --git a/Transcendence/srcs/frontend/src/assets/Frame6.png b/Transcendence/srcs/frontend/src/assets/Frame6.png new file mode 100644 index 0000000..fccb811 Binary files /dev/null and b/Transcendence/srcs/frontend/src/assets/Frame6.png differ diff --git a/Transcendence/srcs/frontend/src/assets/Frame7.png b/Transcendence/srcs/frontend/src/assets/Frame7.png new file mode 100644 index 0000000..fe70268 Binary files /dev/null and b/Transcendence/srcs/frontend/src/assets/Frame7.png differ diff --git a/Transcendence/srcs/frontend/src/assets/Frame8.png b/Transcendence/srcs/frontend/src/assets/Frame8.png new file mode 100644 index 0000000..cf5d37b Binary files /dev/null and b/Transcendence/srcs/frontend/src/assets/Frame8.png differ diff --git a/Transcendence/srcs/frontend/src/assets/Frame9.png b/Transcendence/srcs/frontend/src/assets/Frame9.png new file mode 100644 index 0000000..28e503a Binary files /dev/null and b/Transcendence/srcs/frontend/src/assets/Frame9.png differ diff --git a/Transcendence/srcs/frontend/src/assets/grwweg.png b/Transcendence/srcs/frontend/src/assets/grwweg.png deleted file mode 100644 index 716affb..0000000 Binary files a/Transcendence/srcs/frontend/src/assets/grwweg.png and /dev/null differ diff --git a/Transcendence/srcs/frontend/src/assets/sprite.png b/Transcendence/srcs/frontend/src/assets/sprite.png new file mode 100644 index 0000000..6c5f6eb Binary files /dev/null and b/Transcendence/srcs/frontend/src/assets/sprite.png differ diff --git a/Transcendence/srcs/frontend/src/game.css b/Transcendence/srcs/frontend/src/game.css index f4503d6..058a725 100644 --- a/Transcendence/srcs/frontend/src/game.css +++ b/Transcendence/srcs/frontend/src/game.css @@ -1,13 +1,13 @@ :root { - --color-primary: #0066cc; - --color-primary-hover: #0052a3; + --color-primary: #ffc75e; + --color-primary-hover: #ffc75e; --color-success: #3cff01; - --color-success-dark: #28a745; + --color-success-dark: #ffc75e; --color-error: #ff4d4d; - --color-warning: #ffc107; - --color-github: #24292e; + --color-warning: #ffc75e; + --color-github: #ffc75e; - --color-bg: #000; + --color-bg: #ffe5b5; --app-background-base: radial-gradient( circle at top, @@ -18,8 +18,8 @@ --app-background-image: url("./assets/Frame1.png"); - --color-surface: #f5f52d; - --color-surface-light: #eff870; + --color-surface: #ffcc00; + --color-surface-light: #feffa6; --color-text: #000000; --color-text-muted: #353535; @@ -66,6 +66,12 @@ html { background-image: var(--app-background-image), var(--app-background-base); + + animation: bg-animation 12s steps(1) infinite; + + background-size: contain, cover; + background-position: center, center; + background-repeat: no-repeat, no-repeat; background-size: @@ -73,11 +79,9 @@ html { cover; background-position: - center, center; background-repeat: - no-repeat, no-repeat; } @@ -115,44 +119,51 @@ body { 100% { transform: translateY(0) rotate(var(--rot)); } } +@keyframes bg-animation { + 0% { + background-image: url("./assets/Frame1.png"), var(--app-background-base); + } + 8.33% { + background-image: url("./assets/Frame2.png"), var(--app-background-base); + } + 16.66% { + background-image: url("./assets/Frame3.png"), var(--app-background-base); + } + 25% { + background-image: url("./assets/Frame4.png"), var(--app-background-base); + } + 33.33% { + background-image: url("./assets/Frame5.png"), var(--app-background-base); + } + 41.66% { + background-image: url("./assets/Frame6.png"), var(--app-background-base); + } + 50% { + background-image: url("./assets/Frame7.png"), var(--app-background-base); + } + 58.33% { + background-image: url("./assets/Frame8.png"), var(--app-background-base); + } + 66.66% { + background-image: url("./assets/Frame9.png"), var(--app-background-base); + } + 75% { + background-image: url("./assets/Frame10.png"), var(--app-background-base); + } + 83.33% { + background-image: url("./assets/Frame11.png"), var(--app-background-base); + } + 91.66% { + background-image: url("./assets/Frame12.png"), var(--app-background-base); + } + 100% { + background-image: url("./assets/Frame1.png"), var(--app-background-base); + } +} + /* ============================================ TYPOGRAPHY ============================================ */ - -/* .title { - position: absolute; - top: 20px; - left: 50%; - transform: translateX(-50%); - text-transform: uppercase; - - display: flex; - align-items: center; - justify-content: center; - gap: 20px; - - font-size: var(--font-size-xl); - text-align: center; - text-shadow: 2px 2px 10px black; - z-index: 1; - font-family: "Patrick Hand", cursive; - color: #ff0055; - text-shadow: - 2px 2px 0 #000, - -2px -2px 0 #000, - 2px -2px 0 #000, - -2px 2px 0 #000; - - animation: wobble 2s infinite ease-in-out; - - margin: 0; - padding: var(--spacing-md); - - /* Rectangle + rounded corners */ - /* background-color: rgba(247, 7, 67, 0.6); - border: 2px solid rgba(0, 0, 0, 0.6); - border-radius: 15px; -} */ .title { position: absolute; @@ -305,10 +316,10 @@ body { border-color: var(--color-primary); } + /* ============================================ BUTTONS ============================================ */ - .btn { display: inline-flex; align-items: center; @@ -405,13 +416,15 @@ body { left: 50%; transform: translate(-50%, -50%); background: var(--color-bg); - border: 2px ridge var(--color-text); color: var(--color-text); z-index: var(--z-window); display: none; flex-direction: column; min-width: 280px; box-shadow: var(--shadow-lg); + border-radius: 5px; + border-color: #aa1f1f; + border: 6px solid #faac37; } .window--visible { @@ -472,7 +485,8 @@ body { .message { font-size: var(--font-size-sm); padding: var(--spacing-xs); - border-radius: var(--radius-sm); + border-radius: var(--radius-lg); + border-color: #000; } .message--success { @@ -492,6 +506,11 @@ body { ============================================ */ .login { width: 320px; + border-radius: 5px; + border-color: #aa1f1f; + border: 6px solid #faac37; + background: #ffffff; + color: #000; } .login__form { @@ -634,28 +653,74 @@ body { } /* ============================================ - EASTER EGG BUTTON + STATS WINDOW ============================================ */ -/* .easter-egg { - position: absolute; - top: 20%; - left: 50%; - transform: translateX(-50%); - z-index: 1; - background: var(--color-surface); - color: var(--color-text); - border: 1px solid var(--color-surface-light); - padding: var(--spacing-sm) var(--spacing-md); - cursor: pointer; - font-size: var(--font-size-md); - border-radius: var(--radius-md); - transition: all var(--transition-fast); +.stats-window { + width: 320px; } -.easter-egg:hover { - background: var(--color-error); - border-color: var(--color-error); -} */ +.stats__avatar { + width: 72px; + height: 72px; + object-fit: cover; + border-radius: var(--radius-full); + border: 2px solid var(--color-text); + align-self: center; + display: block; + margin: 0 auto var(--spacing-xs); +} + +.stats__username { + font-size: var(--font-size-lg); + font-weight: 600; + text-align: center; + color: #000; + margin-bottom: var(--spacing-md); +} + +.stats__section { + margin-bottom: var(--spacing-md); +} + +.stats__section-title { + font-size: var(--font-size-sm); + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.08em; + color: var(--color-primary); + border-bottom: 1px solid var(--color-surface-light); + padding-bottom: var(--spacing-xs); + margin-bottom: var(--spacing-xs); +} + +.stats__section-body { + display: flex; + flex-direction: column; + gap: 4px; +} + +.stats__row { + display: flex; + justify-content: space-between; + font-size: var(--font-size-sm); + padding: 3px 0; +} + +.stats__label { + color: #333; +} + +.stats__value { + font-weight: 600; + color: #000; +} + +.stats__loading { + font-size: var(--font-size-sm); + color: #333; + text-align: center; + padding: var(--spacing-sm) 0; +} /* ============================================ UTILITIES @@ -702,7 +767,7 @@ body { .friends__tab { flex: 1; padding: var(--spacing-sm); - background: var(--color-surface); + background: var(--color-surface-light); border: 1px solid var(--color-surface-light); color: var(--color-text); cursor: pointer; @@ -782,317 +847,3 @@ body { color: var(--color-text-muted); padding: var(--spacing-lg); } - -/* ============================================ - GAME ROOM WINDOW - ============================================ */ -.gameroom-window { - width: 600px; - height: 800px; -} - -.gameroom__tabs { - display: flex; - gap: var(--spacing-xs); - margin-bottom: var(--spacing-sm); -} - -.gameroom__tab { - flex: 1; - padding: var(--spacing-sm); - background: var(--color-surface); - border: 1px solid var(--color-surface-light); - color: var(--color-text); - cursor: pointer; - font-size: var(--font-size-sm); - transition: all var(--transition-fast); -} - -.gameroom__tab:hover { - background: var(--color-surface-light); -} - -.gameroom__tab--active { - background: var(--color-primary); - border-color: var(--color-primary); -} - -.gameroom__content { - display: flex; - flex-direction: column; - flex: 1; - overflow: hidden; -} - -.gameroom__create { - display: flex; - flex-direction: column; - gap: var(--spacing-sm); - margin-bottom: var(--spacing-sm); -} - -.gameroom__list { - flex: 1; - overflow-y: auto; - display: flex; - flex-direction: column; - gap: var(--spacing-sm); -} - -.gameroom__item { - display: flex; - align-items: center; - gap: var(--spacing-sm); - padding: var(--spacing-sm); - background: var(--color-surface); - border-radius: var(--radius-md); -} - -.gameroom__name { - flex: 1; - font-size: var(--font-size-md); - font-weight: 500; -} - -.gameroom__players { - font-size: var(--font-size-sm); - color: var(--color-text-muted); - padding: var(--spacing-xs) var(--spacing-sm); - background: var(--color-surface-light); - border-radius: var(--radius-sm); -} - -.gameroom__actions { - display: flex; - gap: var(--spacing-xs); -} - -.gameroom__actions .btn { - padding: var(--spacing-xs) var(--spacing-sm); - font-size: var(--font-size-sm); -} - -.gameroom__lobby { - display: flex; - flex-direction: column; - flex: 1; - gap: var(--spacing-sm); -} - -.gameroom__lobby-title { - margin: 0; - font-size: var(--font-size-lg); - text-align: center; - color: var(--color-success); -} - -.gameroom__player-list { - flex: 1; - overflow-y: auto; - display: flex; - flex-direction: column; - gap: var(--spacing-sm); - background: var(--color-surface); - border-radius: var(--radius-md); - padding: var(--spacing-sm); -} - -.gameroom__player { - display: flex; - align-items: center; - gap: var(--spacing-sm); - padding: var(--spacing-xs) var(--spacing-sm); - background: var(--color-surface-light); - border-radius: var(--radius-sm); -} - -.gameroom__player-avatar { - width: 32px; - height: 32px; - border-radius: var(--radius-full); - object-fit: cover; - border: 2px solid var(--color-surface-light); -} - -.gameroom__player-name { - flex: 1; - font-size: var(--font-size-md); -} - -.gameroom__player-stats { - display: flex; - flex-direction: column; - align-items: flex-end; - gap: 2px; -} - -.gameroom__player-score { - font-size: var(--font-size-sm); - color: var(--color-success); - font-weight: 500; -} - -.gameroom__player-total { - font-size: var(--font-size-sm); - color: var(--color-text-muted); -} - -.gameroom__empty { - text-align: center; - color: var(--color-text-muted); - padding: var(--spacing-lg); -} - -/* ============================================ - GAME - JEU DU PENDU/DESSIN - ============================================ */ - -.gameroom__lobby-buttons { - display: flex; - gap: var(--spacing-sm); - margin-top: auto; -} - -.gameroom__lobby-buttons .btn { - flex: 1; -} - -.gameroom__game { - display: flex; - flex-direction: column; - gap: var(--spacing-sm); - flex: 1; -} - -.gameroom__game-info { - text-align: center; -} - -.gameroom__drawer-info { - font-size: var(--font-size-md); - color: var(--color-text-muted); - padding: var(--spacing-xs); -} - -.gameroom__scores-display { - font-size: var(--font-size-sm); - color: var(--color-success); - padding: var(--spacing-xs); - background: var(--color-surface); - border-radius: var(--radius-sm); - margin-top: var(--spacing-xs); -} - -.gameroom__drawer-info--winner { - color: var(--color-success); - font-weight: bold; - animation: pulse 0.5s ease-in-out 3; -} - -@keyframes pulse { - 0%, 100% { transform: scale(1); } - 50% { transform: scale(1.05); } -} - -.gameroom__word-display { - font-size: var(--font-size-xl); - font-family: monospace; - text-align: center; - letter-spacing: 8px; - padding: var(--spacing-md); - background: var(--color-surface); - border-radius: var(--radius-md); - min-height: 60px; - display: flex; - align-items: center; - justify-content: center; - color: var(--color-success); -} - -.gameroom__canvas-container { - display: flex; - justify-content: center; -} - -.gameroom__canvas { - background: var(--color-surface-light); - border-radius: var(--radius-md); - cursor: crosshair; - border: 2px solid var(--color-surface-light); -} - -.gameroom__draw-tools { - display: flex; - gap: var(--spacing-sm); - justify-content: center; - align-items: center; -} - -.gameroom__color-picker { - width: 40px; - height: 32px; - border: none; - border-radius: var(--radius-sm); - cursor: pointer; - background: transparent; -} - -.gameroom__word-input-container, -.gameroom__guess-container { - display: flex; - gap: var(--spacing-sm); -} - -.gameroom__word-input-container .input, -.gameroom__guess-container .input { - flex: 1; -} - -.gameroom__guess-container .input:disabled { - opacity: 0.5; - cursor: not-allowed; -} - -.gameroom__guess-container .btn:disabled { - opacity: 0.5; - cursor: not-allowed; -} - -.gameroom__guess-history { - flex: 1; - min-height: 60px; - max-height: 100px; - overflow-y: auto; - background: var(--color-surface); - border-radius: var(--radius-md); - padding: var(--spacing-sm); - display: flex; - flex-direction: column; - gap: var(--spacing-xs); -} - -.gameroom__guess-item { - font-size: var(--font-size-sm); - padding: var(--spacing-xs) var(--spacing-sm); - border-radius: var(--radius-sm); -} - -.gameroom__guess-item--success { - background: rgba(60, 255, 1, 0.2); - color: var(--color-success); -} - -.gameroom__guess-item--fail { - background: rgba(255, 77, 77, 0.2); - color: var(--color-error); -} - -.gameroom__game-buttons { - display: flex; - gap: var(--spacing-sm); - margin-top: var(--spacing-sm); -} - -.gameroom__game-buttons .btn { - flex: 1; -} diff --git a/Transcendence/srcs/frontend/src/index.css b/Transcendence/srcs/frontend/src/index.css index 0ec8442..841a3ca 100644 --- a/Transcendence/srcs/frontend/src/index.css +++ b/Transcendence/srcs/frontend/src/index.css @@ -7,28 +7,28 @@ CSS VARIABLES ============================================ */ :root { - --color-primary: #0066cc; - --color-primary-hover: #0052a3; + --color-primary: #ffc75e; + --color-primary-hover: #ffc75e; --color-success: #3cff01; - --color-success-dark: #28a745; + --color-success-dark: #ffc75e; --color-error: #ff4d4d; - --color-warning: #ffc107; - --color-github: #24292e; + --color-warning: #ffc75e; + --color-github: #ffc75e; - --color-bg: #a3a3a3; + --color-bg: #ffe5b5; --app-background-base: radial-gradient( circle at top, - #000000, - #4d4d4d + #fff787, + #ff8080 ); --app-background-image: url("./assets/background.png"); - --color-surface: #222; - --color-surface-light: #333; - --color-text: #fff; - --color-text-muted: #aaa; + --color-surface: #ffefce; + --color-surface-light: #ffc75e; + --color-text: #000000; + --color-text-muted: #000000; --font-size-base: 10px; --font-size-sm: 1.2rem; @@ -117,16 +117,16 @@ body { text-align: center; text-shadow: 2px 2px 10px black; z-index: 1; - font-family: "Patrick Hand", cursive; + font-family: "Roboto"; + letter-spacing: -10px; color: rgba(248, 252, 2, 0.6); margin: 0; - padding: var(--spacing-md); + padding: 0.6rem 1.2rem; - /* Rectangle + rounded corners */ - background-color: rgba(247, 7, 67, 0.6); + background-color: #ffefce; border: 2px solid rgba(0, 0, 0, 0.6); - border-radius: 15px; + border-radius: var(--radius-lg); } @@ -134,7 +134,7 @@ body { MENU ============================================ */ -.menu { +/* .menu { position: fixed; top: 0; left: 50px; @@ -144,12 +144,26 @@ body { display: flex; flex-direction: column; gap: var(--spacing-xs); +} */ + +.menu { + position: fixed; + top: var(--spacing-lg); + left: 50px; + + display: flex; + flex-direction: column; + gap: var(--spacing-lg); + + z-index: var(--z-menu); } .menu__item { background: var(--color-surface); color: var(--color-text); border: 1px solid var(--color-surface-light); + border-radius: var(--radius-lg); + border-color: #000; padding: var(--spacing-sm) var(--spacing-md); font-size: var(--font-size-md); cursor: pointer; @@ -171,7 +185,7 @@ body { GAME ============================================ */ -.game { +/* .game { position: fixed; top: 0; right: 50px; @@ -181,12 +195,26 @@ body { display: flex; flex-direction: column; gap: var(--spacing-xs); +} */ + +.game { + position: fixed; + top: var(--spacing-lg); + right: 50px; + + display: flex; + flex-direction: column; + gap: var(--spacing-lg); + + z-index: var(--z-menu); } .game__item { background: var(--color-surface); color: var(--color-text); border: 1px solid var(--color-surface-light); + border-radius: var(--radius-lg); + border-color: #000; padding: var(--spacing-sm) var(--spacing-md); font-size: var(--font-size-md); cursor: pointer; @@ -303,13 +331,15 @@ body { left: 50%; transform: translate(-50%, -50%); background: var(--color-bg); - border: 2px ridge var(--color-text); color: var(--color-text); z-index: var(--z-window); display: none; flex-direction: column; min-width: 280px; box-shadow: var(--shadow-lg); + border-radius: 5px; + border-color: #aa1f1f; + border: 6px solid #faac37; } .window--visible { @@ -370,7 +400,8 @@ body { .message { font-size: var(--font-size-sm); padding: var(--spacing-xs); - border-radius: var(--radius-sm); + border-radius: var(--radius-lg); + border-color: #000; } .message--success { @@ -390,6 +421,11 @@ body { ============================================ */ .login { width: 320px; + border-radius: 5px; + border-color: #aa1f1f; + border: 6px solid #faac37; + background: #ffffff; + color: #000; } .login__form { @@ -601,30 +637,6 @@ body { padding: var(--spacing-sm) 0; } -/* ============================================ - EASTER EGG BUTTON - ============================================ */ -/* .easter-egg { - position: absolute; - top: 20%; - left: 50%; - transform: translateX(-50%); - z-index: 1; - background: var(--color-surface); - color: var(--color-text); - border: 1px solid var(--color-surface-light); - padding: var(--spacing-sm) var(--spacing-md); - cursor: pointer; - font-size: var(--font-size-md); - border-radius: var(--radius-md); - transition: all var(--transition-fast); -} - -.easter-egg:hover { - background: var(--color-error); - border-color: var(--color-error); -} */ - /* ============================================ UTILITIES ============================================ */ @@ -670,7 +682,7 @@ body { .friends__tab { flex: 1; padding: var(--spacing-sm); - background: var(--color-surface); + background: var(--color-surface-light); border: 1px solid var(--color-surface-light); color: var(--color-text); cursor: pointer; diff --git a/Transcendence/srcs/frontend/src/index.html b/Transcendence/srcs/frontend/src/index.html index 3b56a7c..c536359 100644 --- a/Transcendence/srcs/frontend/src/index.html +++ b/Transcendence/srcs/frontend/src/index.html @@ -3,14 +3,14 @@ - Transcendence.io + Transcendence -

Transcendence.io

+

Transcendence