Blu Pantheon
BluBot-Widget

Personalizzazione

Variabili CSS, launcher su misura, font, supporto RTL, tema scuro, modalità incorporata e accessibilità.

BluBot vive in una shadow root isolata: i tuoi fogli di stile non lo raggiungono. La personalizzazione avviene tramite variabili CSS personalizzate dichiarate sull'elemento host, che attraversano il confine della shadow root.

Selettore dell elemento host

blubot-widget

Applica le variabili CSS a questo elemento o a :root.

Variabili CSS

ConsoleConfigurazioneProgettiacme-srlAspetto

Le impostazioni della Console valgono come predefiniti; le variabili CSS della pagina hanno la precedenza.

Colori

VariabilePredefinitoEffetto
--bp-color-primary#1e3a8aLauncher, pulsanti, bolle dell'utente
--bp-color-primary-hoverDerivatoStato al passaggio del puntatore
--bp-color-on-primary#ffffffTesto su fondo primario
--bp-color-surface#ffffffFondo della finestra
--bp-color-surface-alt#f4f5f7Fondo delle bolle dell'assistente
--bp-color-text#111827Testo principale
--bp-color-text-muted#6b7280Testo secondario e orari
--bp-color-border#e5e7ebBordi e separatori
--bp-color-success#15803dConferme
--bp-color-warning#b45309Avvisi
--bp-color-error#b91c1cErrori
--bp-color-header-bg--bp-color-primaryFondo dell'intestazione
--bp-color-header-text--bp-color-on-primaryTesto dell'intestazione

Tipografia

VariabilePredefinitoEffetto
--bp-font-familyStack di sistemaFont di tutta l'interfaccia
--bp-font-size-base15pxDimensione del testo dei messaggi
--bp-font-size-small13pxOrari, note, didascalie
--bp-line-height1.55Interlinea
--bp-font-weight-bold600Peso del testo in evidenza

Forme e spaziature

VariabilePredefinitoEffetto
--bp-radius-window16pxRaggio della finestra
--bp-radius-bubble12pxRaggio delle bolle
--bp-radius-launcher9999pxRaggio del launcher
--bp-radius-button8pxRaggio dei pulsanti nei widget
--bp-spacing-unit4pxUnità base delle spaziature
--bp-shadow-windowOmbra morbidaOmbra della finestra

Dimensioni e posizione

VariabilePredefinitoEffetto
--bp-window-width400pxLarghezza della finestra su desktop
--bp-window-height640pxAltezza massima della finestra
--bp-launcher-size56pxDiametro del launcher
--bp-offset-x20pxDistanza orizzontale dal bordo
--bp-offset-y20pxDistanza verticale dal bordo
--bp-z-index2147483000Livello di sovrapposizione
styles/blubot.css
:root {
  --bp-color-primary: #0f766e;
  --bp-color-primary-hover: #0d5f59;
  --bp-color-surface: #ffffff;
  --bp-color-surface-alt: #f0fdfa;
  --bp-color-text: #0f172a;
  --bp-font-family: 'Inter', system-ui, sans-serif;
  --bp-font-size-base: 15px;
  --bp-radius-window: 20px;
  --bp-radius-bubble: 14px;
  --bp-window-width: 420px;
  --bp-launcher-size: 60px;
  --bp-offset-y: 88px;
}

Contrasto

Verifica sempre il contrasto tra --bp-color-primary e --bp-color-on-primary: deve essere almeno 4,5 a 1 per il testo normale. Un launcher elegante ma illeggibile è un difetto di accessibilità.

Tema scuro

Con theme: 'auto' il widget segue prefers-color-scheme. Puoi sovrascrivere le variabili per il solo tema scuro.

Personalizzazione del tema scuro
@media (prefers-color-scheme: dark) {
  :root {
    --bp-color-surface: #0f172a;
    --bp-color-surface-alt: #1e293b;
    --bp-color-text: #e2e8f0;
    --bp-color-text-muted: #94a3b8;
    --bp-color-border: #334155;
    --bp-color-primary: #38bdf8;
    --bp-color-on-primary: #0f172a;
  }
}

Se il tuo sito gestisce il tema con una classe sull'elemento radice, sincronizzalo esplicitamente.

Sincronizzazione con il tema del sito
function sincronizzaTema() {
  const scuro = document.documentElement.classList.contains('dark');
  document.querySelector('blubot-widget')?.setAttribute('data-theme', scuro ? 'dark' : 'light');
}

new MutationObserver(sincronizzaTema).observe(document.documentElement, {
  attributes: true,
  attributeFilter: ['class']
});

Launcher personalizzato

Nascondi il launcher predefinito e usa un tuo elemento.

Disattiva il launcher integrato

Aggiungi data-launcher="none" al tag script oppure launcher: 'none' in init.

Inserisci il tuo pulsante

Usa un elemento button, non un div, per ottenere gratuitamente il comportamento da tastiera.

Collega toggle e stato

Aggiorna aria-expanded in risposta agli eventi open e close.

Launcher su misura
<button
  id="assistenza-launcher"
  type="button"
  class="acme-launcher"
  aria-expanded="false"
  aria-controls="blubot-window"
>
  <span class="acme-launcher__icona" aria-hidden="true"></span>
  <span class="acme-launcher__testo">Assistenza</span>
  <span id="acme-badge" class="acme-launcher__badge" hidden>1</span>
</button>

<script>
  (function () {
    var launcher = document.getElementById('assistenza-launcher');
    var badge = document.getElementById('acme-badge');

    launcher.addEventListener('click', function () {
      window.BluBot?.toggle();
    });

    window.addEventListener('blubot:ready', function () {
      window.BluBot.on('open', function () {
        launcher.setAttribute('aria-expanded', 'true');
        badge.hidden = true;
      });
      window.BluBot.on('close', function () {
        launcher.setAttribute('aria-expanded', 'false');
      });
      window.BluBot.on('message:received', function () {
        if (!window.BluBot.isOpen()) badge.hidden = false;
      });
    });
  })();
</script>

Font personalizzati

Il widget non carica font esterni. Per usare il tuo, dichiaralo nella pagina e indicane il nome nella variabile.

Font caricato dalla pagina ospite
@font-face {
  font-family: 'Acme Sans';
  src: url('/fonts/acme-sans-var.woff2') format('woff2-variations');
  font-weight: 300 700;
  font-display: swap;
}

:root {
  --bp-font-family: 'Acme Sans', system-ui, sans-serif;
}

Font e prestazioni

I font dichiarati con @font-face nel documento principale sono ereditati dalla shadow root. Usa font-display: swap per evitare testo invisibile durante il caricamento.

Supporto da destra a sinistra

Il widget rileva automaticamente la direzione dal contesto: se l'elemento html ha dir="rtl" oppure se locale è impostato su ar, l'intera interfaccia si specchia.

ElementoComportamento in RTL
Posizione del launcherbottom-right diventa in basso a sinistra
Allineamento delle bolleUtente a destra, assistente a sinistra, invertiti
Icone direzionaliFrecce e indicatori specchiati
Numeri, date, orariRestano in direzione da sinistra a destra
Campo di scritturaCursore e segnaposto allineati a destra
Attivazione esplicita
<html lang="ar" dir="rtl">
  <script
    src="https://static.blupantheon.com/blubot/v1/bpblubot.umd.js"
    data-project-key="bp_proj_7f3a9c21"
    data-locale="ar"
    defer
  ></script>
</html>

Per forzare la direzione indipendentemente dalla pagina, usa data-direction="rtl" oppure direction: 'rtl' in init.

Modalità incorporata

Invece della finestra flottante puoi montare il widget dentro un contenitore della pagina: utile per pagine di assistenza dedicate o per una schermata a tutto schermo.

Montaggio in un contenitore
<div id="assistenza-incorporata" style="height: 640px; max-width: 720px;"></div>

<script
  src="https://static.blupantheon.com/blubot/v1/bpblubot.umd.js"
  data-project-key="bp_proj_7f3a9c21"
  data-auto-init="false"
  defer
></script>

<script>
  window.addEventListener('blubot:loaded', function () {
    window.BluBot.init({
      projectKey: 'bp_proj_7f3a9c21',
      mode: 'inline',
      container: '#assistenza-incorporata',
      launcher: 'none',
      autoOpen: true
    });
  });
</script>

Opzioni della modalità incorporata

ParametroTipoObblig.DefaultDescrizione
modestringSì—Valore inline per il montaggio in un contenitore, floating per la finestra flottante. Predefinito floating.
containerstringSì—Selettore CSS o elemento DOM di destinazione. Deve avere un altezza definita.
launcherstringNo—Impostalo a none in modalità incorporata: il pulsante flottante non serve.
fullscreenbooleanNo—Occupa l intera area visibile su schermi sotto i 768 pixel. Predefinito true.
showHeaderbooleanNo—Mostra l intestazione con titolo e avatar. Predefinito true.

Il contenitore deve avere un altezza

Un contenitore senza altezza esplicita (o senza un genitore flex che gliela dia) collassa a zero pixel: il widget viene montato ma non si vede. È la causa più frequente di segnalazione in modalità incorporata.

Accessibilità

BluBot è conforme a WCAG 2.2 livello AA. Le personalizzazioni possono comprometterla: verifica sempre i punti seguenti.

AspettoComportamento nativoCosa non rompere
Navigazione da tastieraTabulazione completa, Esc chiudeNon usare div cliccabili nel launcher
Focus visibileContorno a contrasto elevatoNon impostare outline: none
Trappola del focusIl focus resta nella finestra apertaNon spostare il focus da codice esterno
Lettori di schermoRegione live per i nuovi messaggiNon nascondere il widget con display: none da CSS
ContrastoAlmeno 4,5 a 1Verifica i colori personalizzati
Dimensione dei bersagliAlmeno 44 x 44 pixelNon ridurre --bp-launcher-size sotto 44px
Movimento ridottoAnimazioni disattivate con prefers-reduced-motionNon forzare transizioni via CSS
IngrandimentoUtilizzabile fino al 200%Non fissare la finestra in pixel assoluti su mobile
TastoAzione
TabSposta il focus tra gli elementi interattivi
Invio o SpazioAttiva l'elemento con il focus
EscChiude la finestra e riporta il focus sul launcher
Ctrl + InvioInvia il messaggio dal campo di scrittura
Freccia suRichiama l'ultimo messaggio inviato
Rispetta le preferenze di movimento
@media (prefers-reduced-motion: reduce) {
  :root {
    --bp-transition-duration: 0ms;
  }
}

Anteprima delle personalizzazioni

ConsoleConfigurazioneProgettiacme-srlAspettoAnteprima

L'anteprima nella Console applica le variabili in tempo reale e consente di verificare tema chiaro e scuro, larghezze mobile e desktop e direzione RTL, senza pubblicare il progetto.

Passi successivi

Auf dieser Seite