From d471eef7afc885e52ec2d68c0eb63321acccb5e6 Mon Sep 17 00:00:00 2001 From: "Lala, Shahd" Date: Mon, 4 May 2026 09:56:09 +0200 Subject: [PATCH] feat: abstract buttons --- src/app/button-template.css | 40 +++++++++ .../input-card/input-card.component.css | 16 +--- .../input-card/input-card.component.html | 2 +- .../login-dialog/login-dialog.component.css | 24 +----- .../login-dialog/login-dialog.component.html | 6 +- .../promotion-dialog.component.css | 84 +++++-------------- .../promotion-dialog.component.html | 5 +- .../register-dialog.component.css | 24 +----- .../register-dialog.component.html | 6 +- .../components/toolbar/toolbar.component.css | 2 + .../components/toolbar/toolbar.component.html | 8 +- src/app/pages/game/game.component.css | 2 + src/app/pages/game/game.component.html | 2 +- src/app/pages/welcome/welcome.component.css | 2 + src/app/pages/welcome/welcome.component.html | 24 +++--- 15 files changed, 103 insertions(+), 144 deletions(-) create mode 100644 src/app/button-template.css diff --git a/src/app/button-template.css b/src/app/button-template.css new file mode 100644 index 0000000..9bf4095 --- /dev/null +++ b/src/app/button-template.css @@ -0,0 +1,40 @@ +/* Shared Button Template */ + +.app-btn { + background: var(--btn-bg); + color: var(--btn-fg); + border: none; + border-radius: 2px; + padding: 0.6rem 1rem; + font-family: 'Space Mono', monospace; + font-size: 11px; + font-weight: 700; + letter-spacing: 1px; + cursor: pointer; + box-shadow: var(--btn-glow); + transition: transform 0.2s ease, filter 0.2s ease, background 1.6s ease, box-shadow 1.6s ease; + display: inline-flex; + align-items: center; + justify-content: center; + outline: none; + text-transform: uppercase; +} + +.app-btn:hover:enabled { + transform: scale(1.05); + filter: brightness(1.15); +} + +.app-btn:active:enabled { + transform: scale(0.98); +} + +.app-btn:disabled { + opacity: 0.65; + cursor: not-allowed; + box-shadow: none; +} + +.app-btn.w-100 { + width: 100%; +} diff --git a/src/app/components/input-card/input-card.component.css b/src/app/components/input-card/input-card.component.css index b4cb7a4..df6cc1c 100644 --- a/src/app/components/input-card/input-card.component.css +++ b/src/app/components/input-card/input-card.component.css @@ -40,21 +40,7 @@ } -.input-card .btn { - border: var(--button-border); - border-radius: var(--border-radius-sm); - background: var(--color-bg-button); - color: var(--color-text-primary); - padding: var(--button-padding); - cursor: pointer; - font-weight: 600; - transition: background-color 0.2s, color 0.2s; -} - -.input-card .btn:hover { - background: var(--color-bg-button-hover); - color: var(--color-text-button-hover); -} +@import '../../button-template.css'; .hint-text { margin: 0; diff --git a/src/app/components/input-card/input-card.component.html b/src/app/components/input-card/input-card.component.html index 34b9d1a..0239946 100644 --- a/src/app/components/input-card/input-card.component.html +++ b/src/app/components/input-card/input-card.component.html @@ -21,7 +21,7 @@ /> } - diff --git a/src/app/components/login-dialog/login-dialog.component.css b/src/app/components/login-dialog/login-dialog.component.css index 31739c6..6a0a6a9 100644 --- a/src/app/components/login-dialog/login-dialog.component.css +++ b/src/app/components/login-dialog/login-dialog.component.css @@ -27,35 +27,17 @@ text-align: center; } +@import '../../button-template.css'; + .dialog-actions { display: flex; gap: 0.6rem; flex-wrap: wrap; } -.dialog-btn { +.dialog-actions .app-btn { flex: 1; min-width: 120px; - background: var(--btn-bg); - color: var(--btn-fg); - border: none; - border-radius: 2px; - padding: 0.55rem 0.75rem; - font-family: 'Space Mono', monospace; - font-size: 11px; - font-weight: 700; - letter-spacing: 1px; - cursor: pointer; - box-shadow: var(--btn-glow); -} - -.dialog-btn:hover:enabled { - filter: brightness(1.12); -} - -.dialog-btn:disabled { - opacity: 0.65; - cursor: not-allowed; } .dialog-input { diff --git a/src/app/components/login-dialog/login-dialog.component.html b/src/app/components/login-dialog/login-dialog.component.html index 185c899..0f3d9e4 100644 --- a/src/app/components/login-dialog/login-dialog.component.html +++ b/src/app/components/login-dialog/login-dialog.component.html @@ -22,9 +22,9 @@ }
- - - + + +
@@ -11,7 +11,8 @@
@for (piece of promotionPieces; track piece.type) { - - + + @if (currentUser; as user) {
{{ user.username }} - +
} @else { - - } diff --git a/src/app/pages/game/game.component.css b/src/app/pages/game/game.component.css index 541ccb3..5e32f0c 100644 --- a/src/app/pages/game/game.component.css +++ b/src/app/pages/game/game.component.css @@ -1,3 +1,5 @@ +@import '../../button-template.css'; + .game-shell { min-height: 100dvh; padding: clamp(var(--size-md), 2vw, var(--size-xl)); diff --git a/src/app/pages/game/game.component.html b/src/app/pages/game/game.component.html index fc3a919..baad535 100644 --- a/src/app/pages/game/game.component.html +++ b/src/app/pages/game/game.component.html @@ -144,7 +144,7 @@ readonly > - + @if (exportNotice) {

{{ exportNotice }}

diff --git a/src/app/pages/welcome/welcome.component.css b/src/app/pages/welcome/welcome.component.css index d0242fe..7317008 100644 --- a/src/app/pages/welcome/welcome.component.css +++ b/src/app/pages/welcome/welcome.component.css @@ -1,3 +1,5 @@ +@import '../../button-template.css'; + :host { display: block; } diff --git a/src/app/pages/welcome/welcome.component.html b/src/app/pages/welcome/welcome.component.html index 31210d2..0a4def3 100644 --- a/src/app/pages/welcome/welcome.component.html +++ b/src/app/pages/welcome/welcome.component.html @@ -37,7 +37,7 @@
JOIN
JOIN
GAME
-
@@ -62,7 +62,7 @@
BOT
PLAY WITH
A BOT
-
@@ -94,7 +94,7 @@
WELCOME
WELCOME TO
NOWCHESS
Play your next move from the skyline.
- @@ -121,7 +121,7 @@
OPTIONS
MORE
OPTIONS
- +
@@ -192,9 +192,9 @@
SELECT DIFFICULTY
- - - + + +
@@ -205,7 +205,7 @@
MORE OPTIONS
- +
@@ -218,11 +218,11 @@
- - +
@@ -248,11 +248,11 @@ [placeholder]="importMode === 'fen' ? 'Paste FEN here' : 'Paste PGN here'" [disabled]="importing" rows="5">
- - +