Un script.
Du HTML qui dit ce qu’il veut.
Tout AUBOTA en harmonie.
Aubui donne à chaque module les mêmes boutons, couleurs, dialogues, notifications et réflexes clavier. Tu décris l’intention, Aubui s’occupe de la forme — et de l’accessibilité.
<script src="https://ui.aubota.xyz/js/aubui.js" defer></script>
<button aub-btn primary data-aub-confirm="Publier maintenant ?">Publier</button>Tout Aubui
Chaque page : à quoi ça sert, la balise exacte à poser, l’API, un exemple qui tourne pour de vrai, et l’accessibilité.
Démarrer
Fondations
Couleurs, surfaces, espaces, rayons, typo — lus en direct dans tokens.css.
Thème & accentNouveauSombre/clair, 6 pastilles d’accent, synchro entre sous-domaines et compte Hub.
MotionDurées, courbes, ce qui bouge et comment respecter « réduire les animations ».
Composants
Primary, ghost, danger, success, tailles, pleine largeur.
FormulairesChamps, labels, aides, erreurs, choix, barre de filtres.
Cartes & alertesCartes, badges, points de statut, alertes.
NavbarBarre globale AUBOTA (window.AubotaNav) et navbar de module aub-nav.
NotificationsNouveauCloche Comlink : badge, liste, toasts de nouveauté, Web Push.
Dialogues & toastsNouveauAubuiDialog (alert, confirm, prompt) et AubuiToast — jamais de popup native.
RechercheNouveauAubuiSearch : une barre, deux sources (endpoint ou liste locale), clavier complet.
Sélecteur d’heureaub-time : roue heure puis minutes, valeur HH:MM dans un champ caché.
Visionneuse PDFNouveauAubuiPdf : pages rendues par NOTRE serveur (PdfPages, Ghostscript, WebP), chargées à la demande ; zoom, pincer, plein écran, recherche. Sans pdf.js.
VisionneuseNouveauAubuiVisionneuse : voir n’importe quel fichier sans quitter la page (image, PDF, vidéo, audio, texte, sinon Télécharger). Plein écran, gestes, clavier.
Panneau latéralNouveauAubuiPanneau : un formulaire ou un détail à côté de la page (plein écran sur téléphone). Focus piégé, Échap, fond, question avant de perdre une saisie.
ScannerNouveauAubuiScanner : la caméra lit un papier en direct, sur n’importe quelle surface, une info à la fois (rouge → vert), puis « Document validé » ; « ✎ Je te le dis » quand AIA ne sait pas ; contour, conseils, photo du capteur, lampe ; ce qui est lu s’envole vers AIA.
Envoi chiffréNouveauAubuiEnvoi : envoyer un fichier sans qu’il soit jamais lisible sur le disque du serveur (chiffré dans le navigateur, morceau par morceau, déchiffré en mémoire). Sans WebCrypto, rien ne part.
Puces de filtreNouveau.aub-puce : des boutons ronds qui filtrent une liste (aria-pressed), une ligne qui défile sur téléphone, tons pour « À faire ».
Logo d’enseigneNouveau.aub-logo : le petit logo propre d’une enseigne (taille fixe, fond blanc), sinon une pastille initiale + couleur ; .aub-logos : choisir parmi des logos.
Plein écran caisseNouveauAubuiCaisse : un code-barres ou un QR en plein écran blanc pour la caisse, écran au maximum, quart de tour, Retour ferme.
Invitation (démo)NouveauAubInvite : en mode démo, inviter à créer un compte plutôt que bloquer.
Visite guidée (Waza)NouveauWazaTour : assombrit la page, entoure un élément et l’explique, étape par étape. Visites écrites en .md.
Kommand (Ctrl+K)NouveauPalette de commandes du Hub, chargée par aubui.js sur tous les modules : aller, créer, chercher, /commandes, aide Waza.
Comportements
Attributs aub-btn, aub-card… → classes. Aubui.process() pour le contenu injecté.
Actions data-aubNouveautoggle, show, hide, copy, dismiss et confirmations data-aub-confirm, sans JS métier.
Modèles & états
.aub-pas : une seule action proposée en tête de page, avec son pourquoi (tons accent, warning, danger, success).
États vides & chargementHub seulement.aub-empty (état vide encourageant) et skeletons — aujourd’hui côté Hub.
MailsNouveauAubotaMail : LE modèle de mail d’AUBOTA (couleurs du mail de Share), pied selon la sorte, « ne plus recevoir » sans compte.
Pages d’erreur403, 404, 500 et messages métier avec .aub-error.
Référence
Extraits prêts à copier.
API figée (API.md)Le contrat : attributs et classes autorisés.
README & journalPhilosophie, règles et historique d’Aubui.
Nouveautés
-
Installation — Toasts en haut de l’écran sur téléphone (≤ 640 px) : ils ne couvrent plus le bouton Enregistrer d’un panneau.
-
Scanner — AubuiScanner v2 (AUB_BUILD 2026-10-30-8) : parcours guidé champ par champ (rouge → vert, lecture ciblée de la zone en grand), photo du capteur (ImageCapture), mise au point continue, lampe, contour par la couleur du fond (papiers à deux tons), « Document validé » + images pour la reconstruction en arrière-plan (en lot, une requête par image), bilan pour que l’AIA apprenne ; toute image envoyée part chiffrée (AES-256-GCM, WebCrypto) : jamais en clair dans un fichier temporaire du serveur.
-
Envoi chiffré — Nouveau composant AubuiEnvoi (AUB_BUILD 2026-10-31-1, chargé à la demande par la page qui envoie) + EnvoiChiffre côté serveur : AES-256-GCM par WebCrypto, une clé par fichier, un IV par morceau, en-têtes X-Aub-Chiffre / X-Aub-Cle / X-Aub-Iv / X-Aub-Envoi. Premiers usages : Drive (tous les envois) et Gestion (documents des papiers, rangés chiffrés au repos).
-
Logo d’enseigne — Nouveau composant .aub-logo / .aub-logos (pastille de repli, rangée de choix). Premier usage : Wallet (cartes, « pas le bon magasin ? »).
-
Ton prochain pas — Le « Ton prochain pas » de Gestion remonté dans Aubui (.aub-pas). Premier usage : Wallet.
-
Plein écran caisse — Nouveau composant AubuiCaisse (AUB_BUILD 2026-10-31-4, chargé à la demande) : fond blanc, luminosité max dans l’app, Wake Lock, double appui pour tourner. Premier usage : Wallet.
-
Visionneuse PDF — Nouveau composant AubuiPdf ([data-aubui-pdf], chargé tout seul par aubui.js) + service serveur PdfPages. Premier usage : Learning.
-
Visionneuse — Nouveau composant AubuiVisionneuse (API + [data-aubui-visionneuse], chargé à la demande par aubui.js). Premiers usages : Drive (/voir/<id>) et Gestion (fiche d’un papier).
-
Panneau latéral — Nouveau composant AubuiPanneau (.aub-panneau + API ouvrir / fermer / propre, chargé à la demande par aubui.js). Premier usage : Gestion › Papiers (Ajouter / Modifier).
-
Scanner — Nouveau composant AubuiScanner (chargé à la demande par aubui.js, AUB_BUILD 2026-10-30-7) : caméra, contour et redressement dans le téléphone, lecture en direct par le serveur de la page, animation vers AIA. Premier usage : Gestion › Ajouter un papier.
-
Puces de filtre — Nouvelles puces de filtre .aub-puces / .aub-puce (tons danger, warning, accent). Premier usage : Gestion › Papiers.
-
Mails — Modèle de mail unique AubotaMail (serveur) : inscription, mot de passe oublié, Share, Réunions, Listes, Préversions, Administration › Mails. Liens « ne plus recevoir » signés, liste d’opposition des adresses sans compte.
-
Kommand (Ctrl+K) — Kommand partout : chargé par aubui.js hors du Hub (connecté uniquement), API du Hub en CORS liste blanche.
-
Visite guidée (Waza) — Nouveau composant WazaTour (start / open / stop) + #waza-tour=<id> dans l’URL.
-
Installation — aubui.js installe une file d’attente AubuiDialog/AubuiToast dès son exécution (plus de popup native avant le chargement de dialog.js).
-
Thème & accent — Modèle unique thème/accent : cookie partagé aub-prefs (.aubota.xyz), AubuiPrefsSync, endpoint du Hub, événements aubui:theme / aubui:accent.
-
Notifications — Cloche fiable : poll sans cache, dédup entre onglets, toast si visible / notification système si caché, « marquer lu » au seul endpoint actif.
-
Dialogues & toasts — AubuiDialog + AubuiToast partout ; window.alert redirigé vers la lightbox ; data-aub-confirm déclaratif.
-
Invitation (démo) — Nouveau composant AubInvite (require / isDemo / guard).
-
Actions data-aub — data-aub-confirm (+ -title, -ok, data-aub-danger) sur liens, boutons et formulaires.
-
Recherche — Composant de recherche unique AubuiSearch (data-aubui-search).
Couverture de la doc
docs/registry.php) :
css/aubui/components/motion.css.
La règle d’or
- Nouveau fichier ou nouvelle API dans
ui.aubota.xyz→ une page (ou une section) danspages/, déclarée dansdocs/registry.phpavec sessourceset une lignenews. - La section dit : à quoi ça sert, la balise exacte, l’API (lue dans le code, pas devinée), un exemple vivant, l’accessibilité.
- Pas de classe ou d’attribut inventé dans un module : d’abord ici et dans l’API figée, ensuite l’usage.