ilibras-widget 1.5.3 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +105 -0
- package/README.md +39 -1
- package/dist/ilibras-widget.cjs +408 -85
- package/dist/ilibras-widget.js +408 -85
- package/dist/ilibras-widget.mjs +408 -85
- package/index.d.ts +28 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,111 @@ Todas as mudanças notáveis neste projeto serão documentadas neste arquivo.
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## [1.7.0] - 2026-10-29
|
|
8
|
+
|
|
9
|
+
### 🌙 O widget acompanha o tema do site, e o ícone fica branco no escuro
|
|
10
|
+
|
|
11
|
+
A logo é azul-marinho sobre fundo transparente: num site escuro, sumia. Agora
|
|
12
|
+
o widget lê o fundo do site e escolhe o tema que aparece melhor sobre ele. No
|
|
13
|
+
escuro, o azul do ícone vira branco — o dourado continua — e o formulário fica
|
|
14
|
+
escuro junto.
|
|
15
|
+
|
|
16
|
+
Quem decide é o **fundo do site**, não o `prefers-color-scheme` do sistema,
|
|
17
|
+
que era o que ligava o tema escuro do formulário até aqui. O ícone flutua
|
|
18
|
+
sobre a página, e num site claro aberto num computador em modo escuro o tema
|
|
19
|
+
do sistema pintaria o ícone de branco sobre branco. O sistema continua
|
|
20
|
+
contando por tabela: o site que segue o modo escuro do computador escurece o
|
|
21
|
+
próprio fundo, e é esse fundo que se lê.
|
|
22
|
+
|
|
23
|
+
- O fundo é o do `<html>` com o do `<body>` por cima, transparência incluída.
|
|
24
|
+
Site sem fundo próprio mostra a tela-base do navegador, que só é escura
|
|
25
|
+
quando o site declara `color-scheme` escuro (no CSS ou na `<meta>`).
|
|
26
|
+
- A cor é lida por um canvas de 1 pixel, que entende `oklch()` e `lab()` — o
|
|
27
|
+
formato em que o Tailwind 4, por exemplo, devolve a cor de fundo.
|
|
28
|
+
- O widget acompanha a troca sem recarregar: classe ou `data-*` mudando no
|
|
29
|
+
`<html>`/`<body>` (o botão de tema do site), o fim da transição do fundo e o
|
|
30
|
+
sistema trocando de modo.
|
|
31
|
+
- **Mudança de comportamento:** num site claro, quem tem o sistema em modo
|
|
32
|
+
escuro passa a ver o formulário claro, como o site. Antes via o escuro.
|
|
33
|
+
|
|
34
|
+
### ⚙️ Nova opção `tema` e novo método `definirTema()`
|
|
35
|
+
|
|
36
|
+
`tema: 'auto'` é o padrão. `'claro'` e `'escuro'` fixam o tema — para o site
|
|
37
|
+
que pinta o fundo com gradiente, imagem ou num elemento de dentro, que o
|
|
38
|
+
widget não consegue ler. `definirTema('claro' | 'escuro' | 'auto')` troca na
|
|
39
|
+
hora.
|
|
40
|
+
|
|
41
|
+
### 🩹 Tema escuro
|
|
42
|
+
|
|
43
|
+
- O campo com foco era pintado de branco, com o texto claro por cima: sumia o
|
|
44
|
+
que se digitava.
|
|
45
|
+
- **Agendar** e **Voltar** ficavam em 3:1 no fundo escuro; agora passam de 8:1.
|
|
46
|
+
- O placeholder subiu para 4,6:1, e o contorno de foco — inclusive o do ícone,
|
|
47
|
+
que fica sobre o fundo do site — ficou claro no tema escuro.
|
|
48
|
+
- O container declara `color-scheme` conforme o tema, para campo, checkbox e o
|
|
49
|
+
X de fechar não herdarem o esquema do site.
|
|
50
|
+
|
|
51
|
+
### 🧪 Testes
|
|
52
|
+
|
|
53
|
+
`tests/tema.test.mjs`: ícone branco com o dourado mantido no site escuro,
|
|
54
|
+
ícone azul no site claro com o sistema escuro, `color-scheme` e `<meta>`,
|
|
55
|
+
transparência, o limite de luminância, canvas bloqueado por proteção contra
|
|
56
|
+
fingerprint, `tema` fixo, `definirTema`, releitura na troca de classe e na
|
|
57
|
+
troca do sistema, e `destroy()` desligando a observação.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## [1.6.0] - 2026-09-29
|
|
62
|
+
|
|
63
|
+
### 🧭 Avisa antes de levar a pessoa para o iLibras
|
|
64
|
+
|
|
65
|
+
Ao clicar em **Iniciar atendimento em Libras** ou em **Agendar uma conversa**,
|
|
66
|
+
o widget agora mostra, no lugar do formulário, o aviso de que a pessoa será
|
|
67
|
+
redirecionada para o iLibras — numa aba nova — e só segue quando ela confirma
|
|
68
|
+
em **Continuar para o iLibras**. **Voltar** (ou Esc) devolve o formulário com o
|
|
69
|
+
nome ainda preenchido.
|
|
70
|
+
|
|
71
|
+
O atendimento só é criado **depois** do "sim". Criar antes e perguntar depois
|
|
72
|
+
deixaria um atendimento órfão na fila de quem desistiu — com o alarme dos
|
|
73
|
+
intérpretes tocando para ninguém.
|
|
74
|
+
|
|
75
|
+
### 🗂️ A aba nova abre dentro do clique
|
|
76
|
+
|
|
77
|
+
A aba do iLibras passa a ser aberta no próprio clique de confirmação, em
|
|
78
|
+
branco ("Abrindo o iLibras…"), e só recebe o endereço quando o atendimento
|
|
79
|
+
volta criado. Antes ela era aberta depois da resposta da API — e `window.open`
|
|
80
|
+
depois de um `await` já não conta como gesto do usuário, que é quando o
|
|
81
|
+
bloqueador de pop-up age. Se a criação falhar, a aba reservada é fechada e a
|
|
82
|
+
pessoa volta ao formulário, onde está a explicação do que houve. O plano B de
|
|
83
|
+
sempre (trocar a página da aba atual) continua valendo para quando nem a aba
|
|
84
|
+
do clique é permitida.
|
|
85
|
+
|
|
86
|
+
### ⚙️ Nova opção: `confirmarRedirecionamento`
|
|
87
|
+
|
|
88
|
+
Ligada por padrão. Com `false`, o widget se comporta como antes da 1.6.0: o
|
|
89
|
+
botão cria o atendimento e abre o iLibras direto.
|
|
90
|
+
|
|
91
|
+
### ♿ Acessibilidade
|
|
92
|
+
|
|
93
|
+
- O aviso é um `alertdialog` com título e texto ligados: ao receber o foco, o
|
|
94
|
+
leitor de tela lê os dois antes do botão.
|
|
95
|
+
- O foco vai para **Continuar** ao abrir o aviso e volta ao botão que a pessoa
|
|
96
|
+
tinha apertado ao sair dele.
|
|
97
|
+
- A região de status saiu de dentro do formulário: escondida junto com ele
|
|
98
|
+
durante o aviso, deixaria de anunciar o andamento do envio.
|
|
99
|
+
- O botão de contorno (agendar, e agora também **Voltar**) ganhou foco visível
|
|
100
|
+
próprio, inclusive em alto contraste — antes dependia do padrão do navegador.
|
|
101
|
+
|
|
102
|
+
### 🧪 Testes
|
|
103
|
+
|
|
104
|
+
`tests/confirmacao.test.mjs` exercita o fluxo na build publicada, com rede e
|
|
105
|
+
janelas simuladas: nada enviado antes da confirmação, aba aberta antes da
|
|
106
|
+
requisição, aba fechada na falha, clique duplo criando um atendimento só.
|
|
107
|
+
Rodada contra a 1.5.3, a suíte reprova em 9 de 10 casos — o único que passa é
|
|
108
|
+
o da opção desligada, que é justamente o comportamento antigo.
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
7
112
|
## [1.5.3] - 2026-09-18
|
|
8
113
|
|
|
9
114
|
### 🩹 Conserta o widget que sumiu da tela na 1.5.1
|
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ Widget de acessibilidade em Libras: um botão flutuante que leva a pessoa surda
|
|
|
18
18
|
- 🔒 **Envio seguro** - Dados enviados via POST para API
|
|
19
19
|
- 🌐 **Universal** - Funciona em qualquer site ou sistema
|
|
20
20
|
- ♿ **Acessível** - Suporte a leitores de tela e navegação por teclado
|
|
21
|
-
- 🌙 **Tema escuro** -
|
|
21
|
+
- 🌙 **Tema claro e escuro** - Acompanha o fundo do site, e o ícone fica branco no tema escuro
|
|
22
22
|
|
|
23
23
|
## 📦 Instalação
|
|
24
24
|
|
|
@@ -168,6 +168,8 @@ new ILibrasWidget({
|
|
|
168
168
|
| `buttonText` | `string` | `'Iniciar atendimento em Libras'` | Texto do botão de envio |
|
|
169
169
|
| `agendamento` | `boolean` | `true` | Mostra o segundo botão, que leva direto à escolha de data e horário em vez da fila ao vivo. Deixe `false` em site que só atende ao vivo |
|
|
170
170
|
| `scheduleButtonText` | `string` | `'Agendar uma conversa'` | Texto do botão de agendamento |
|
|
171
|
+
| `confirmarRedirecionamento` | `boolean` | `true` | Avisa que a pessoa vai para o site do iLibras, numa aba nova, e só cria o atendimento depois que ela confirma. Com `false`, o botão cria o atendimento e abre o iLibras direto, como antes da v1.6.0 |
|
|
172
|
+
| `tema` | `string` | `'auto'` | `'auto'` acompanha o fundo do site — inclusive quando o site segue o modo escuro do sistema. `'claro'` ou `'escuro'` fixam o tema. Ver [Tema claro e escuro](#tema-claro-e-escuro) |
|
|
171
173
|
| `token` | `string` | `''` | **OBRIGATÓRIO** — token de autenticação da API |
|
|
172
174
|
| `zIndex` | `number` | `9999` | Z-index do widget |
|
|
173
175
|
| `apiUrl` | `string` | endpoint de produção | Endpoint de cadastro. Troque apenas para apontar a um ambiente de homologação |
|
|
@@ -359,6 +361,38 @@ Você pode sobrescrever os estilos padrão:
|
|
|
359
361
|
}
|
|
360
362
|
```
|
|
361
363
|
|
|
364
|
+
### Tema claro e escuro
|
|
365
|
+
|
|
366
|
+
O widget lê a cor de fundo do site e escolhe o tema que aparece melhor sobre
|
|
367
|
+
ela: no escuro, o ícone fica branco (o dourado da logo continua) e o formulário
|
|
368
|
+
fica escuro. Ele acompanha a troca sem recarregar — o botão de tema do site, ou
|
|
369
|
+
o sistema mudando de modo quando o site segue o sistema.
|
|
370
|
+
|
|
371
|
+
> ✅ **Não precisa configurar nada.** Vem ligado por padrão (`tema: 'auto'`)
|
|
372
|
+
> desde a v1.7.0. Quem já tem o widget instalado só precisa atualizar: o
|
|
373
|
+
> pacote (`npm i ilibras-widget@latest`) ou o arquivo `ilibras-widget.js` — a
|
|
374
|
+
> configuração continua a mesma.
|
|
375
|
+
|
|
376
|
+
Para ver funcionando, abra `teste-modo-escuro.html` no navegador: ele troca o
|
|
377
|
+
fundo do "site" e o tema do widget, com o envio simulado.
|
|
378
|
+
|
|
379
|
+
Quem decide é o **fundo do site**, não a preferência do sistema: o ícone flutua
|
|
380
|
+
sobre a página, e num site claro aberto num computador em modo escuro um ícone
|
|
381
|
+
branco sumiria.
|
|
382
|
+
|
|
383
|
+
O fundo lido é o do `<html>` e o do `<body>`. Se o site pinta o fundo com
|
|
384
|
+
gradiente, imagem ou num elemento de dentro, fixe o tema:
|
|
385
|
+
|
|
386
|
+
```javascript
|
|
387
|
+
new ILibrasWidget({ token: 'SEU_TOKEN', tema: 'escuro' });
|
|
388
|
+
|
|
389
|
+
// ou, num botão de tema que o widget não percebe sozinho:
|
|
390
|
+
widget.definirTema('escuro'); // 'claro', 'escuro' ou 'auto'
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
No CSS, o tema escuro é a classe `.ilibras-widget-tema-escuro` no
|
|
394
|
+
`#ilibras-widget-container`.
|
|
395
|
+
|
|
362
396
|
## 🔧 API JavaScript
|
|
363
397
|
|
|
364
398
|
### Métodos Públicos
|
|
@@ -375,6 +409,9 @@ widget.closeWidget();
|
|
|
375
409
|
// Alternar estado (abrir/fechar)
|
|
376
410
|
widget.toggleWidget();
|
|
377
411
|
|
|
412
|
+
// Trocar o tema: 'claro', 'escuro' ou 'auto' (volta a seguir o site)
|
|
413
|
+
widget.definirTema('escuro');
|
|
414
|
+
|
|
378
415
|
// Destruir o widget e remover do DOM
|
|
379
416
|
widget.destroy();
|
|
380
417
|
```
|
|
@@ -605,6 +642,7 @@ Ilibras_widget/
|
|
|
605
642
|
├── ilibras-widget.js # GERADO: build de <script>, no endereço de sempre
|
|
606
643
|
├── index.d.ts # Tipos TypeScript
|
|
607
644
|
├── exemplo.html # Página de exemplo e demonstração
|
|
645
|
+
├── teste-modo-escuro.html # Teste manual do tema claro e escuro
|
|
608
646
|
└── README.md # Esta documentação
|
|
609
647
|
```
|
|
610
648
|
|