Installation
Une seule balise suffit. Elle pose le CSS, les comportements, la barre AUBOTA, la cloche, les dialogues et le thème — dans le bon ordre.
Mode complet (par défaut)
Pour toute page d’un module (Hub, Social, Feedback…). aubui.js injecte aubui.full.css puis, dans cet ordre : dialog.js, engine.js, theme.js, accent.js, actions.js, aubui-invite.js, navbar.js, notifications.js, timepicker.js.
<!DOCTYPE html>
<html lang="fr" data-theme="dark">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="preconnect" href="https://ui.aubota.xyz">
<script>
window.AubotaNav = { site: 'hub', user: { loggedIn: true, name: 'fusty' }, links: [] };
</script>
<script src="https://ui.aubota.xyz/js/aubui.js" defer></script>
</head>Mode léger (pages sans barre)
Pose window.AubotaNav = { disabled: true } avant le script : CSS aubui.core.css et uniquement dialog.js, engine.js, theme.js, accent.js, actions.js, aubui-invite.js (pas de navbar, pas de cloche, pas de time picker).
<script>window.AubotaNav = { disabled: true };</script>
<script src="https://ui.aubota.xyz/js/aubui.js" defer></script>Pages de connexion
aubui.auth.js charge aubui.auth.css + aubui.light.js (moteur, thème, accent, actions, data-aub-confirm et file AubuiDialog regroupés en un fichier ; il charge dialog.js lui-même).
<script src="https://ui.aubota.xyz/js/aubui.auth.js" defer></script>Composants à ajouter à la main
Deux briques ne sont pas chargées par aubui.js : à poser seulement sur les pages qui en ont besoin.
| Composant | Balises |
|---|---|
| Recherche | <link rel="stylesheet" href="https://ui.aubota.xyz/css/aubui/components/search.css"><script src="https://ui.aubota.xyz/js/aubui-search.js" defer></script> |
| États vides / skeletons | Aujourd’hui fournis par hub.aubota.xyz/assets/polish.css (Hub seulement). |
Cache et version
Tout fichier demandé avec ?v=… est gardé un an par le navigateur (.htaccess). La valeur vient de AUB_BUILD dans js/aubui.js — actuellement 2026-10-19-3.
- À chaque mise en ligne d’un CSS/JS de
ui.aubota.xyz: changerAUB_BUILD(sinon les visiteurs gardent l’ancienne version). - Un layout qui pose le CSS en statique ajoute
data-aubui-css="1"pour qu’aubui.jsne le recharge pas.
<link rel="stylesheet" href="https://ui.aubota.xyz/css/aubui/aubui.full.css?v=2026-10-19-3" data-aubui-css="1">File d’attente des dialogues
Dès son exécution, aubui.js crée window.AubuiDialog et window.AubuiToast en version « file d’attente » : un appel fait avant le chargement de dialog.js est mémorisé puis rejoué. Si dialog.js ne charge pas, la file repasse sur les popups natives pour ne jamais bloquer une Promise.
Ce que la page expose
| Global | Fourni par | Rôle |
|---|---|---|
Aubui | engine.js | process(root?), processNav(root?) |
AubuiDialog · AubuiToast | dialog.js | Lightbox alert/confirm/prompt et toasts |
AubuiTheme · AubuiAccent · AubuiPrefsSync | theme.js · accent.js | Apparence et synchro |
AubotaNav (config) · AubotaNavMount() | navbar.js | Barre globale |
AubotaNotif | notifications.js | Cloche Comlink |
AubuiTime | timepicker.js | scan(root?), enhance(input) |
AubuiSearch | aubui-search.js | init(input), scan(root?) |
AubInvite | aubui-invite.js | require(), isDemo(), guard() |
- Toujours
<html lang="fr">et un<main>unique ; un lien « Aller au contenu » si la page a une barre. - Les composants respectent
prefers-reduced-motion; ne réactive pas d’animation à la main. - Jamais
alert()/confirm()/prompt(): AubuiDialog gère le focus et le clavier.