]> git.giorgioravera.it Git - network-manager.git/commitdiff
Review css
authorGiorgio Ravera <giorgio.ravera@gmail.com>
Fri, 5 Jun 2026 18:08:19 +0000 (20:08 +0200)
committerGiorgio Ravera <giorgio.ravera@gmail.com>
Fri, 5 Jun 2026 18:08:19 +0000 (20:08 +0200)
frontend/css/layout.css
frontend/js/index.js

index 74f299f93cafae9f56116acc933a67122624493f..289ff5b5852dcc31d005690dd8527c088183e881 100644 (file)
@@ -43,6 +43,24 @@ body {
     align-items: center;
 }
 
+.topbar .navbar {
+    padding: 0;
+    background: transparent !important;
+}
+
+.topbar .navbar-collapse {
+    justify-content: flex-end;
+    transition: height 0.2s ease;
+}
+
+.topbar .navbar-toggler {
+    border: none;
+}
+
+.topbar .navbar-toggler:focus {
+    box-shadow: none;
+}
+
 .logo {
     display: flex;
     align-items: center;
@@ -136,7 +154,9 @@ body {
     font-style: italic;
 }
 
-/* Griglia tile */
+/* ================================
+   Griglia tile
+   ================================ */
 .tiles {
     display: grid;
     gap: 16px;
@@ -152,13 +172,16 @@ body {
     padding: 14px;
     box-shadow: 0 3px 6px var(--shadow-soft);
     transition: transform 0.1s ease, box-shadow 0.1s ease;
+    will-change: transform;
     color: var(--text-dark);
+    --icon-color: var(--accent);
 }
 
 .tile:hover {
     transform: translateY(-2px);
     box-shadow: 0 4px 10px var(--shadow-strong);
     border-color: var(--accent-hover);
+    --icon-color: var(--accent-hover);
 }
 
 .tile h3 {
@@ -175,8 +198,12 @@ body {
 /* Icone tile */
 .tile-icon {
     font-size: 28px;
-    color: var(--accent);
     margin-bottom: 4px;
+    color: var(--icon-color);
+}
+
+.tile-icon i {
+    color: inherit;
 }
 
 /* ================================
@@ -190,6 +217,9 @@ body {
     padding: 6px 14px;
     font-size: 0.95rem;
     line-height: 1;
+    vertical-align: middle;
+    --icon-color: currentColor;
+    transition: all 0.2s ease;
 }
 
 .btn-primary {
@@ -213,18 +243,6 @@ body {
     filter: brightness(0.9);
 }
 
-.btn-outline-primary {
-    color: var(--accent);
-    border-color: var(--accent);
-    background-color: transparent;
-}
-
-.btn-outline-primary:hover,
-.btn-outline-primary:focus {
-    color: #fff;
-    background-color: var(--accent);
-    border-color: var(--accent);
-}
 
 .btn-primary.btn-login {
     width: 100%;
@@ -244,12 +262,24 @@ body {
     filter: none;
 }
 
-.btn .icon {
-    color: currentColor;
+.btn-outline-primary {
+    color: var(--accent);
+    border-color: var(--accent);
+    background-color: transparent;
 }
 
-.btn .icon:hover {
-    color: inherit;
+.btn-outline-primary:hover,
+.btn-outline-primary:focus {
+    color: #fff;
+    background-color: var(--accent);
+    border-color: var(--accent);
+}
+
+.btn-outline-danger:hover,
+.btn-outline-danger:focus {
+    color: #ffe5e8;
+    background-color: #dc3545;
+    border-color: #dc3545;
 }
 
 /* ================================
@@ -302,18 +332,16 @@ select.form-select:focus,
 /* ================================
    Icons
    ================================ */
-.icon {
+.icon,
+i.bi {
     color: var(--icon-color);
     display: inline-flex;
     align-items: center;
 }
 
-.icon:hover {
-    color: var(--icon-color);
-}
-
 .icon-static {
     --icon-color-hover: var(--icon-color);
+    pointer-events: none;
     margin-right: 6px;
 }
 
@@ -321,6 +349,10 @@ select.form-select:focus,
     cursor: pointer;
 }
 
+.icon-action:hover {
+    color: var(--icon-color-hover);
+}
+
 .icon-placeholder {
     opacity: 0;
     pointer-events: none;
@@ -395,7 +427,7 @@ select.form-select:focus,
    Backup Table
 ================================ */
 
-.table tbody#backupList tr {
+.table tbody#backupList tr > td {
     cursor: pointer;
     transition: background-color 0.15s ease;
 }
@@ -451,6 +483,7 @@ td.actions {
 
 .toast.show {
     opacity: 1;
+    pointer-events: auto;
 }
 
 /* ================================
@@ -519,6 +552,10 @@ td.actions {
     margin-top: 18px;
 }
 
+.modal-backdrop {
+    z-index: 1990;
+}
+
 /* ================================
    Modal "Add Host"
 ================================ */
@@ -603,3 +640,12 @@ td.actions {
         margin-right: 0;
     }
 }
+
+/* ======================================
+   Bootstrap compatibility
+   ====================================== */
+a.tile,
+a.tile:hover {
+    text-decoration: none;
+    color: inherit;
+}
index 2e01732353f1a2daec70982d86b87c14fff98e8f..f8bed2a1a551082508ba7610ca0398604cf1d354 100644 (file)
@@ -1,7 +1,7 @@
 // -------------------------------------------------------
 // IMPORT
 // -------------------------------------------------------
-import { loadModals, showToast, showConfirmModal } from './common.js';
+import { loadModals, showToast, showConfirmModal, handleReload } from './common.js';
 import { serviceIsAlive, serviceCheckHealth , serviceReloadDNS, serviceReloadDHCP, serviceBackupCreate, serviceBackupList, serviceBackupRestore, serviceDeleteBackup, serviceDownloadBackup, serviceUploadBackup } from './services.js';
 
 // -------------------------------------------------------
@@ -120,7 +120,7 @@ function renderBackupList(data) {
         const downloadBtn = document.createElement("button");
         downloadBtn.className = "btn btn-sm btn-outline-primary me-2";
         downloadBtn.title = "Download backup";
-        downloadBtn.innerHTML = `<i class="bi bi-download text-primary"></i>`;
+        downloadBtn.innerHTML = `<i class="bi bi-download"></i>`;
         downloadBtn.setAttribute("data-action", "downloadBackup");
         downloadBtn.setAttribute("data-id", b.name);
         tdActions.appendChild(downloadBtn);
@@ -128,7 +128,7 @@ function renderBackupList(data) {
         const deleteBtn = document.createElement("button");
         deleteBtn.className = "btn btn-sm btn-outline-danger";
         deleteBtn.title = "Delete backup";
-        deleteBtn.innerHTML = `<i class="bi bi-trash-fill text-danger"></i>`;
+        deleteBtn.innerHTML = `<i class="bi bi-trash-fill"></i>`;
         deleteBtn.setAttribute("data-action", "deleteBackup");
         deleteBtn.setAttribute("data-id", b.name);
         tdActions.appendChild(deleteBtn);