@@ -34,7 +34,7 @@ if (!($d['configured'] ?? false)): ?>
-
+ = icon('video') ?>
Vidéos PeerTube orphelines
@@ -47,7 +47,7 @@ if (!($d['configured'] ?? false)): ?>
-
+ = icon('video') ?>
Vidéos PeerTube orphelines = (int)($d['orphan_count'] ?? 0) ?> vidéos orphelines
@@ -70,7 +70,7 @@ if (!($d['configured'] ?? false)): ?>
hx-swap="outerHTML"
hx-trigger="click"
hx-indicator="#peertube-orphans-wrapper">
-

+ = icon('trash') ?>
Supprimer
@@ -87,7 +87,7 @@ if (!($d['configured'] ?? false)): ?>
0): ?>
-
+ = icon('warning-diamond') ?>
Références DB obsolètes = $d['stale_count'] ?>
Ces UUID sont référencés en base de données mais n'existent plus sur la chaîne PeerTube. Les TFE liés affichent des liens morts.
diff --git a/app/public/admin/contenus-langues-fragment.php b/app/public/admin/contenus-langues-fragment.php
index 11155a2..905683f 100644
--- a/app/public/admin/contenus-langues-fragment.php
+++ b/app/public/admin/contenus-langues-fragment.php
@@ -28,19 +28,19 @@ try {
0 langue(s) sélectionnée(s)
@@ -74,7 +74,7 @@ try {
= htmlspecialchars($lang['name']) ?>
= (int)$lang['thesis_count'] ?> |
@@ -87,7 +87,7 @@ try {
diff --git a/app/public/admin/contenus-motscles-fragment.php b/app/public/admin/contenus-motscles-fragment.php
index 486a08f..d9aba9f 100644
--- a/app/public/admin/contenus-motscles-fragment.php
+++ b/app/public/admin/contenus-motscles-fragment.php
@@ -28,19 +28,19 @@ try {
0 mot(s)-clé(s) sélectionné(s)
@@ -74,7 +74,7 @@ try {
= htmlspecialchars($tag['name']) ?>
= (int)$tag['thesis_count'] ?> |
@@ -87,7 +87,7 @@ try {
diff --git a/app/public/admin/fragments/file-browser.php b/app/public/admin/fragments/file-browser.php
index 4395808..29306bd 100644
--- a/app/public/admin/fragments/file-browser.php
+++ b/app/public/admin/fragments/file-browser.php
@@ -88,18 +88,18 @@ $rootDirs = ['tfe', 'these', 'frart', 'documents', 'theses'];
function fileIcon(string $ext): string {
$ext = strtolower($ext);
if ($ext === 'pdf') {
- return '

';
+ return icon('file-text-audio');
}
if (in_array($ext, ['zip', 'tar', 'gz', 'bz2', 'xz', '7z', 'rar'], true)) {
- return '

';
+ return icon('file-doc');
}
// Default text-file icon for all other extensions
- return '

';
+ return icon('file-lines');
}
// SVG folder icon (same for all directories)
function folderIcon(): string {
- return '

';
+ return icon('folder');
}
?>
diff --git a/app/public/admin/fragments/peertube-browser.php b/app/public/admin/fragments/peertube-browser.php
index ba2772f..d5e80c8 100644
--- a/app/public/admin/fragments/peertube-browser.php
+++ b/app/public/admin/fragments/peertube-browser.php
@@ -98,7 +98,7 @@ if (empty($orphans)) {
= $v['linkedTo'] !== null ? 'disabled title="Déjà liée au TFE ' . htmlspecialchars($v['linkedTo']) . '"' : '' ?>
>
-
+ = icon('arrow-circle-left') ?>
= htmlspecialchars($v['name']) ?>
= !empty($v['createdAt']) ? substr($v['createdAt'], 0, 10) : '' ?>
diff --git a/app/public/admin/markdown-cheatsheet-fragment.php b/app/public/admin/markdown-cheatsheet-fragment.php
index f79d6a4..7cddb9e 100644
--- a/app/public/admin/markdown-cheatsheet-fragment.php
+++ b/app/public/admin/markdown-cheatsheet-fragment.php
@@ -95,7 +95,7 @@ $rows = [
onclick="this.closest('dialog').close()"
title="Fermer"
aria-label="Fermer">
-

+ = icon('x-circle') ?>
diff --git a/app/public/admin/tags-fragment.php b/app/public/admin/tags-fragment.php
index 9e033f3..c39bb4c 100644
--- a/app/public/admin/tags-fragment.php
+++ b/app/public/admin/tags-fragment.php
@@ -32,7 +32,7 @@ try {
@@ -65,7 +65,7 @@ try {
= htmlspecialchars($tag['name']) ?>
= (int)$tag['thesis_count'] ?> |
@@ -77,7 +77,7 @@ try {
diff --git a/app/public/assets/css/admin.css b/app/public/assets/css/admin.css
index 939462d..6d131b1 100644
--- a/app/public/assets/css/admin.css
+++ b/app/public/assets/css/admin.css
@@ -30,6 +30,8 @@
}
.admin-body header nav ul [data-nav-logout] a svg {
display: block;
+ width: 20px;
+ height: 20px;
}
/* Public-site link icon in admin nav */
@@ -40,6 +42,11 @@
column-gap: 0.4em;
}
+.admin-body header nav .nav-logo svg {
+ width: 16px;
+ height: 16px;
+}
+
.admin-body main {
flex: 1;
diff --git a/app/public/assets/css/components/search.css b/app/public/assets/css/components/search.css
index c4aac58..a892452 100644
--- a/app/public/assets/css/components/search.css
+++ b/app/public/assets/css/components/search.css
@@ -3,6 +3,21 @@
Root class: .header-search-wrap
============================================================ */
+/* Public search bar icon (in partials/search-bar.php) */
+/* Scoped to forms that are NOT inside .header-search-wrap */
+form[role="search"]:not(.header-search-form) > svg {
+ width: 20px;
+ height: 20px;
+ flex-shrink: 0;
+ fill: var(--text-tertiary);
+ margin-right: var(--space-2xs);
+}
+
+form[role="search"]:not(.header-search-form) {
+ display: flex;
+ align-items: center;
+}
+
.header-search-wrap {
padding: 0;
flex-shrink: 0;
@@ -23,7 +38,7 @@
left: var(--space-s);
width: 18px;
height: 18px;
- stroke: var(--accent-primary);
+ fill: var(--accent-primary);
pointer-events: none;
}
diff --git a/app/public/assets/icons/caret-down.svg b/app/public/assets/icons/caret-down.svg
index 42f37b7..0fca5a9 100644
--- a/app/public/assets/icons/caret-down.svg
+++ b/app/public/assets/icons/caret-down.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/public/assets/icons/caret-right.svg b/app/public/assets/icons/caret-right.svg
index 81658b0..c028357 100644
--- a/app/public/assets/icons/caret-right.svg
+++ b/app/public/assets/icons/caret-right.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/public/assets/icons/circle-i.svg b/app/public/assets/icons/circle-i.svg
index 5a19a75..9ec47aa 100644
--- a/app/public/assets/icons/circle-i.svg
+++ b/app/public/assets/icons/circle-i.svg
@@ -1 +1 @@
-
+
diff --git a/app/public/assets/icons/paint-brush-household.svg b/app/public/assets/icons/paint-brush-household.svg
index d67ecb3..6c60a3a 100644
--- a/app/public/assets/icons/paint-brush-household.svg
+++ b/app/public/assets/icons/paint-brush-household.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/public/assets/icons/plus-circle.svg b/app/public/assets/icons/plus-circle.svg
new file mode 100644
index 0000000..5df2479
--- /dev/null
+++ b/app/public/assets/icons/plus-circle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/public/assets/icons/search.svg b/app/public/assets/icons/search.svg
index 2ff8c5d..7970b57 100644
--- a/app/public/assets/icons/search.svg
+++ b/app/public/assets/icons/search.svg
@@ -1 +1 @@
-
+
diff --git a/app/public/assets/icons/trash.svg b/app/public/assets/icons/trash.svg
index 0504592..758cbb3 100644
--- a/app/public/assets/icons/trash.svg
+++ b/app/public/assets/icons/trash.svg
@@ -1 +1 @@
-
+
diff --git a/app/public/assets/icons/tray-arrow-up.svg b/app/public/assets/icons/tray-arrow-up.svg
new file mode 100644
index 0000000..6da71ff
--- /dev/null
+++ b/app/public/assets/icons/tray-arrow-up.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/public/assets/icons/video.svg b/app/public/assets/icons/video.svg
index d711517..da78fa9 100644
--- a/app/public/assets/icons/video.svg
+++ b/app/public/assets/icons/video.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/public/assets/icons/warning-diamond.svg b/app/public/assets/icons/warning-diamond.svg
index fb1346d..78533d8 100644
--- a/app/public/assets/icons/warning-diamond.svg
+++ b/app/public/assets/icons/warning-diamond.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/icon.php b/app/src/icon.php
new file mode 100644
index 0000000..0fcd6da
--- /dev/null
+++ b/app/src/icon.php
@@ -0,0 +1,35 @@
+
+ * = icon('search', 0, 'header-search-icon') ?>
+ */
+function icon(string $name, int $size = 0, string $class = ''): string {
+ $path = APP_ROOT . "/public/assets/icons/{$name}.svg";
+ if (!file_exists($path)) {
+ return "";
+ }
+ $svg = file_get_contents($path);
+ // Normalise width/height to 1em so icons scale with font-size
+ $svg = preg_replace('/\bwidth="[^"]*"/', 'width="1em"', $svg);
+ $svg = preg_replace('/\bheight="[^"]*"/', 'height="1em"', $svg);
+ // Ensure aria-hidden by default (icons are decorative when used via this helper)
+ if (!str_contains($svg, 'aria-hidden')) {
+ $svg = str_replace('
diff --git a/app/templates/admin/acces.php b/app/templates/admin/acces.php
index 7fe3319..1aaeb97 100644
--- a/app/templates/admin/acces.php
+++ b/app/templates/admin/acces.php
@@ -86,7 +86,7 @@