[UI] Bootstrap Italia rollout (Opzione B) — vendor self-hostato + 16 pagine -bi + sidebar BI
Pipeline a trittici (Esecutore->Revisore->Controllore avversariale), 6 trittici T1-T6. Tutto ADDITIVO: nessuna pagina/JS live modificata, produzione intatta. Swap non incluso. - public/vendor/bootstrap-italia/ : BI v2.18.1 self-hostato (CSS+JS bundle+16 woff2+sprite), MAI CDN - 16 pagine *-bi.html (login/register/onboarding/forgot/reset/index + dashboard/assessment/ risks/incidents/policies/supply-chain/training/assets/reports/settings) - public/js/common-bi.js : sidebar/topbar in markup BI (additivo, riusa stessi ID + common.js) - Verifica sul path servito reale: 16/16 -> 200, 0 CDN, 0 FontAwesome residui, parita ID/hook completa, WCAG AA - docs/SISTEMA_TRITTICI_AGENTI.md : design del sistema a trittici Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
06c94b3c05
commit
4d676f2e21
@@ -0,0 +1,76 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="it">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Bootstrap Italia self-host — smoke test</title>
|
||||
<!-- SELF-HOSTED Bootstrap Italia v2.18.1 — asset LOCALI da /vendor, ZERO CDN -->
|
||||
<link rel="stylesheet" href="/vendor/bootstrap-italia/dist/css/bootstrap-italia.min.css">
|
||||
</head>
|
||||
<body>
|
||||
<main class="container py-4" id="main-content">
|
||||
<h1 class="h3 mb-2">Bootstrap Italia — smoke test (self-host)</h1>
|
||||
<p class="text-muted">
|
||||
CSS, JS e font serviti localmente da <code>/vendor/bootstrap-italia/</code>.
|
||||
Nessun riferimento a CDN.
|
||||
</p>
|
||||
|
||||
<div class="alert alert-info" role="status" id="bi-status">
|
||||
Verifica caricamento JS in corso...
|
||||
</div>
|
||||
|
||||
<section aria-labelledby="form-title" class="mt-4">
|
||||
<h2 class="h5" id="form-title">Form di prova</h2>
|
||||
<form id="smoke-form" novalidate>
|
||||
<div class="form-group">
|
||||
<label for="smoke-input" class="active">Campo di prova</label>
|
||||
<input type="text" id="smoke-input" name="smoke-input"
|
||||
class="form-control" autocomplete="off"
|
||||
aria-describedby="smoke-help">
|
||||
<small id="smoke-help" class="form-text text-muted">
|
||||
Esempio di <code>.form-control</code> Bootstrap Italia.
|
||||
</small>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary" id="smoke-btn">
|
||||
Bottone primario
|
||||
</button>
|
||||
<button type="button" class="btn btn-outline-primary ms-2" id="smoke-icon-btn"
|
||||
aria-label="Pulsante con icona di prova">
|
||||
<svg class="icon icon-sm" aria-hidden="true">
|
||||
<use href="/vendor/bootstrap-italia/dist/svg/sprites.svg#it-check-circle"></use>
|
||||
</svg>
|
||||
<span>Icona locale</span>
|
||||
</button>
|
||||
</form>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<!-- JS bundle LOCALE -->
|
||||
<script src="/vendor/bootstrap-italia/dist/js/bootstrap-italia.bundle.min.js"></script>
|
||||
<script>
|
||||
// Carica i web font ufficiali (Titillium Web, Lora, Roboto Mono) — TUTTI LOCALI
|
||||
(function () {
|
||||
var statusEl = document.getElementById('bi-status');
|
||||
if (window.bootstrap && typeof bootstrap.loadFonts === 'function') {
|
||||
bootstrap.loadFonts('/vendor/bootstrap-italia/dist/fonts');
|
||||
statusEl.className = 'alert alert-success';
|
||||
statusEl.setAttribute('role', 'status');
|
||||
statusEl.textContent = 'OK: Bootstrap Italia JS caricato dal vendor locale e bootstrap.loadFonts() invocato su /vendor/bootstrap-italia/dist/fonts.';
|
||||
} else {
|
||||
statusEl.className = 'alert alert-danger';
|
||||
statusEl.setAttribute('role', 'alert');
|
||||
statusEl.textContent = 'ERRORE: bootstrap.loadFonts non disponibile (JS non caricato).';
|
||||
}
|
||||
})();
|
||||
|
||||
document.getElementById('smoke-form').addEventListener('submit', function (e) {
|
||||
e.preventDefault();
|
||||
var s = document.getElementById('bi-status');
|
||||
s.className = 'alert alert-success';
|
||||
s.textContent = 'Form inviato (smoke): JS interattivo funzionante. Valore = "' +
|
||||
document.getElementById('smoke-input').value + '"';
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user