mirror of
https://codeberg.org/PostERG/xamxam.git
synced 2026-05-06 11:09:18 +02:00
css: fix nav active state, deduplicate .site-nav__right, add font-display, clean up search pagination
- common.css: add font-display: swap to Combinedd.otf @font-face (eliminates FOIT) - common.css: remove duplicate .site-nav__right block (identical to .site-nav__link); update nav.php to use .site-nav__link on the À Propos link - common.css: add .site-nav__link--active rule (opacity:1 + white underline); the class was already applied in nav.php but had no CSS definition, making it invisible - search.php: replace fully inline-styled pagination with .pagination-wrap / .pagination-btn / .pagination-info classes; add aria-disabled + tabindex=-1 on disabled links; add aria-label on prev/next links - search.css: add pagination rule block to match, keeping styles co-located with the page
This commit is contained in:
27
TODO.md
27
TODO.md
@@ -484,15 +484,13 @@ Goal: rename the tables and column to the canonical M2M pattern (`tags`, `thesis
|
|||||||
shell (`display:flex; flex-direction:column; background:var(--white)`) which only differs in
|
shell (`display:flex; flex-direction:column; background:var(--white)`) which only differs in
|
||||||
the BEM class name applied to `<body>`.
|
the BEM class name applied to `<body>`.
|
||||||
|
|
||||||
- [ ] **No `font-display` on the `Combinedd.otf` custom font** — `common.css` declares `@font-face`
|
- [x] **No `font-display` on the `Combinedd.otf` custom font** — added `font-display: swap`
|
||||||
with no `font-display` property; the browser blocks text rendering until the font loads (FOIT).
|
to `@font-face` in `common.css`; eliminates FOIT on first load.
|
||||||
Add `font-display: swap`. Also add a `<link rel="preload">` for the font file in the shared
|
|
||||||
head partial once it exists.
|
|
||||||
|
|
||||||
- [ ] **Search results pagination is fully inline-styled** — `search.php` lines 159–164 apply
|
- [x] **Search results pagination is fully inline-styled** — replaced inline styles in `search.php`
|
||||||
`style="padding:.25rem .7rem;border:1px solid #ddd;…"` and hardcoded `#ddd`/`#666`. The home
|
with `.pagination-wrap` / `.pagination-btn` / `.pagination-info` classes; added matching rules
|
||||||
page (`index.php`) already has `.pagination-btn` / `.pagination-info` in `main.css`. Reuse
|
to `search.css`; added `aria-disabled` + `tabindex="-1"` on disabled links; added `aria-label`
|
||||||
those classes in `search.php` and remove the inline styles.
|
on prev/next links.
|
||||||
|
|
||||||
- [ ] **Scattered inline styles in templates** — notable instances that should become named classes:
|
- [ ] **Scattered inline styles in templates** — notable instances that should become named classes:
|
||||||
- `tfe.php` line 146: `style="align-items:start;"` → `.tfe-meta-item--top` in `tfe.css`
|
- `tfe.php` line 146: `style="align-items:start;"` → `.tfe-meta-item--top` in `tfe.css`
|
||||||
@@ -503,15 +501,12 @@ Goal: rename the tables and column to the canonical M2M pattern (`tags`, `thesis
|
|||||||
classes in `admin.css`
|
classes in `admin.css`
|
||||||
- `index.php` line 146: `style="padding:2rem;color:#666;"` → `.cards-empty` in `main.css`
|
- `index.php` line 146: `style="padding:2rem;color:#666;"` → `.cards-empty` in `main.css`
|
||||||
|
|
||||||
- [ ] **`.site-nav__right` is a duplicate of `.site-nav__link`** — `common.css` defines both with
|
- [x] **`.site-nav__right` is a duplicate of `.site-nav__link`** — removed `.site-nav__right` block
|
||||||
identical declarations (font-size, letter-spacing, text-transform, color, opacity, transition).
|
from `common.css`; updated `nav.php` to use `.site-nav__link` on the À Propos link.
|
||||||
The only difference is DOM position. Merge `.site-nav__right` into `.site-nav__link`; let the
|
|
||||||
flex layout position it via `margin-left:auto` or DOM order.
|
|
||||||
|
|
||||||
- [ ] **`.site-nav__link--active` is applied in `nav.php` but never defined in CSS** — the class
|
- [x] **`.site-nav__link--active` is applied in `nav.php` but never defined in CSS** — added
|
||||||
is set conditionally but has no corresponding rule in `common.css`, so the active state is
|
`opacity:1; border-bottom:1px solid rgba(255,255,255,.6); padding-bottom:1px` rule to
|
||||||
invisible. Add a visible style (e.g. `opacity:1; border-bottom:1px solid rgba(255,255,255,.6)`)
|
`common.css`; active nav link is now visually distinct.
|
||||||
or remove the conditional.
|
|
||||||
|
|
||||||
### F — Template logic / PHP in templates
|
### F — Template logic / PHP in templates
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
@font-face {
|
@font-face {
|
||||||
font-family: "police1";
|
font-family: "police1";
|
||||||
src: url("./fonts/Combinedd.otf");
|
src: url("./fonts/Combinedd.otf");
|
||||||
|
font-display: swap;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ============================================================
|
/* ============================================================
|
||||||
@@ -84,19 +85,10 @@ a:hover {
|
|||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.site-nav__right {
|
.site-nav__link--active {
|
||||||
font-size: 0.85rem;
|
|
||||||
letter-spacing: 0.12em;
|
|
||||||
text-transform: uppercase;
|
|
||||||
color: var(--white);
|
|
||||||
text-decoration: none;
|
|
||||||
font-weight: 400;
|
|
||||||
opacity: 0.92;
|
|
||||||
transition: opacity 0.15s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.site-nav__right:hover {
|
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
|
border-bottom: 1px solid rgba(255, 255, 255, 0.6);
|
||||||
|
padding-bottom: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ============================================================
|
/* ============================================================
|
||||||
|
|||||||
@@ -269,6 +269,47 @@ html, body {
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Search results pagination — reuses same token names as main.css */
|
||||||
|
.pagination-wrap {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.5rem;
|
||||||
|
padding: 1.5rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination-btn {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
min-width: 2rem;
|
||||||
|
height: 2rem;
|
||||||
|
padding: 0 0.5rem;
|
||||||
|
border: 1px solid var(--border-color);
|
||||||
|
border-radius: 3px;
|
||||||
|
color: var(--black);
|
||||||
|
font-size: 0.9rem;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: all 0.15s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination-btn:hover:not(.disabled) {
|
||||||
|
border-color: var(--purple);
|
||||||
|
color: var(--purple);
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination-btn.disabled {
|
||||||
|
opacity: 0.3;
|
||||||
|
cursor: not-allowed;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination-info {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
color: var(--text-muted);
|
||||||
|
padding: 0 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
.search-empty {
|
.search-empty {
|
||||||
padding: 3rem 1.5rem;
|
padding: 3rem 1.5rem;
|
||||||
color: var(--text-muted);
|
color: var(--text-muted);
|
||||||
|
|||||||
@@ -157,12 +157,16 @@ $searchBarValue = $_GET['query'] ?? '';
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php if ($totalPages > 1): ?>
|
<?php if ($totalPages > 1): ?>
|
||||||
<div style="display:flex;gap:.5rem;justify-content:center;align-items:center;padding:1.5rem 0;">
|
<div class="pagination-wrap">
|
||||||
<a href="?<?= http_build_query(array_merge($_GET, ['page' => max(1, $page - 1)])) ?>"
|
<a href="?<?= http_build_query(array_merge($_GET, ['page' => max(1, $page - 1)])) ?>"
|
||||||
style="padding:.25rem .7rem;border:1px solid #ddd;border-radius:3px;color:#111;text-decoration:none;<?= $page <= 1 ? 'opacity:.3;pointer-events:none;' : '' ?>">‹</a>
|
class="pagination-btn<?= $page <= 1 ? ' disabled' : '' ?>"
|
||||||
<span style="font-size:.9rem;color:#666;"><?= $page ?> / <?= $totalPages ?></span>
|
<?= $page <= 1 ? 'aria-disabled="true" tabindex="-1"' : '' ?>
|
||||||
|
aria-label="Page précédente">‹</a>
|
||||||
|
<span class="pagination-info"><?= $page ?> / <?= $totalPages ?></span>
|
||||||
<a href="?<?= http_build_query(array_merge($_GET, ['page' => min($totalPages, $page + 1)])) ?>"
|
<a href="?<?= http_build_query(array_merge($_GET, ['page' => min($totalPages, $page + 1)])) ?>"
|
||||||
style="padding:.25rem .7rem;border:1px solid #ddd;border-radius:3px;color:#111;text-decoration:none;<?= $page >= $totalPages ? 'opacity:.3;pointer-events:none;' : '' ?>">›</a>
|
class="pagination-btn<?= $page >= $totalPages ? ' disabled' : '' ?>"
|
||||||
|
<?= $page >= $totalPages ? 'aria-disabled="true" tabindex="-1"' : '' ?>
|
||||||
|
aria-label="Page suivante">›</a>
|
||||||
</div>
|
</div>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,6 @@ $_navCurrent = $currentNav ?? '';
|
|||||||
<a class="site-nav__link <?= ($_navCurrent === 'licence') ? 'site-nav__link--active' : '' ?>"
|
<a class="site-nav__link <?= ($_navCurrent === 'licence') ? 'site-nav__link--active' : '' ?>"
|
||||||
href="/licence.php">Licence</a>
|
href="/licence.php">Licence</a>
|
||||||
</div>
|
</div>
|
||||||
<a class="site-nav__right <?= ($_navCurrent === 'apropos') ? 'site-nav__link--active' : '' ?>"
|
<a class="site-nav__link <?= ($_navCurrent === 'apropos') ? 'site-nav__link--active' : '' ?>"
|
||||||
href="/apropos.php">À Propos</a>
|
href="/apropos.php">À Propos</a>
|
||||||
</nav>
|
</nav>
|
||||||
|
|||||||
Reference in New Issue
Block a user