ilibras-widget 1.4.0 → 1.5.2

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 CHANGED
@@ -4,6 +4,94 @@ Todas as mudanças notáveis neste projeto serão documentadas neste arquivo.
4
4
 
5
5
  ---
6
6
 
7
+ ## [1.5.2] - 2026-09-18
8
+
9
+ ### 🗂️ Uma aba, não duas
10
+
11
+ Ao criar o atendimento, o widget abria a aba nova **e** trocava a página da aba
12
+ atual. A pessoa terminava com duas.
13
+
14
+ A causa estava no plano B para pop-up bloqueado:
15
+
16
+ ```js
17
+ const aba = window.open(destino, '_blank', 'noopener');
18
+ if (!aba) window.location.assign(destino);
19
+ ```
20
+
21
+ A especificação manda `window.open` devolver `null` sempre que `noopener` está
22
+ presente — **mesmo quando a aba abre**. O teste lia esse `null` como pop-up
23
+ bloqueado, e a segunda linha disparava sempre.
24
+
25
+ Agora a chamada vai sem a feature e a proteção é feita na mão
26
+ (`aba.opener = null`), o que dá o mesmo isolamento e preserva o retorno — que é
27
+ justamente o que distingue aba aberta de aba barrada. O plano B continua de pé
28
+ para quando o pop-up é realmente bloqueado: melhor trocar de página do que
29
+ sumir com um atendimento já criado.
30
+
31
+ ---
32
+
33
+ ## [1.5.1] - 2026-09-18
34
+
35
+ ### 🎨 O tema do site não pinta mais o widget
36
+
37
+ Todas as regras de estilo passaram a ser escopadas por
38
+ `#ilibras-widget-container`.
39
+
40
+ O widget usava seletores de uma classe só — `.ilibras-widget-submit` tem
41
+ especificidade (0,1,0) e perde para qualquer tema que estilize botões com dois
42
+ níveis. Um `.elementor-kit-275 button` é (0,1,1) e vencia.
43
+
44
+ O estrago aparecia num site real: botões verdes, cantos arredondados em 30px e
45
+ o "X" de fechar virado pílula — dentro de um widget cuja promessa é justamente
46
+ se bastar no site dos outros. O botão principal escapava por acidente, porque o
47
+ gradiente dele pintava por cima da cor do tema; o de agendar, sem gradiente,
48
+ ficava verde.
49
+
50
+ Com o prefixo, as regras vão a (1,1,0): ganham de qualquer seletor de tema
51
+ **sem recorrer a `!important`**, e continuam perdendo para o `!important` que o
52
+ README ensina o cliente a usar quando quer customizar de propósito. Quem
53
+ customiza sem `!important` precisa passar a usá-lo.
54
+
55
+ Problema antigo, anterior à v1.5.0 — só ficou visível quando o segundo botão
56
+ entrou no formulário.
57
+
58
+ ---
59
+
60
+ ## [1.5.0] - 2026-09-18
61
+
62
+ ### 🙋 O formulário pede só o nome
63
+
64
+ CPF e telefone saíram. Para chamar um intérprete não é preciso identificar a
65
+ pessoa, e cada campo a mais era uma barreira a quem só queria ser atendido — em
66
+ especial um CPF digitado errado, que reprovava o envio inteiro.
67
+
68
+ Sai junto o que existia só para eles: a validação de CPF, a lista de DDDs, as
69
+ máscaras dos dois campos. O widget ficou 4,5 KB menor.
70
+
71
+ O que continua: nome (com sobrenome), a caixa de consentimento, a armadilha
72
+ anti-robô e a marca de tempo de abertura.
73
+
74
+ ### 📲 Aviso por SMS mora no iLibras, não aqui
75
+
76
+ Quem agenda um horário e quer ser avisado por SMS informa o celular **na tela
77
+ de agendamento do iLibras**, e o número vale só para aquele atendimento. Era o
78
+ motivo que restava para o widget pedir telefone de todo mundo — inclusive de
79
+ quem nem ia agendar.
80
+
81
+ ### 🔁 Compatibilidade
82
+
83
+ A API continua aceitando `cpf` e `telefone`, então **widget antigo instalado em
84
+ site de cliente segue funcionando** sem ser atualizado.
85
+
86
+ Esta é uma versão **minor** de propósito, e não major: quem seguiu o README e
87
+ fixou `@1` recebe a mudança automaticamente, que é o ponto. A API pública do
88
+ pacote (configuração e métodos) não mudou em nada.
89
+
90
+ **Requer o iLibras com CPF e telefone opcionais.** Contra uma versão anterior do
91
+ servidor, o cadastro sem CPF seria recusado com erro de validação.
92
+
93
+ ---
94
+
7
95
  ## [1.4.0] - 2026-09-16
8
96
 
9
97
  ### 📦 O widget virou pacote npm
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  [![JavaScript](https://img.shields.io/badge/JavaScript-ES6+-yellow.svg)](https://developer.mozilla.org/en-US/docs/Web/JavaScript)
5
5
  [![CSS3](https://img.shields.io/badge/CSS-3-blue.svg)](https://developer.mozilla.org/en-US/docs/Web/CSS)
6
6
 
7
- Widget embarcável similar ao WhatsApp para captura de dados (Nome e CPF) com integração via API. Envia dados de forma segura via POST e redireciona para plataforma de atendimento. Ideal para integração em sites, sistemas e plataformas web.
7
+ Widget de acessibilidade em Libras: um botão flutuante que leva a pessoa surda ao atendimento com intérprete — ao vivo ou agendado. Pede só o nome, envia por POST e redireciona para a plataforma. Ideal para sites, sistemas e plataformas web.
8
8
 
9
9
  ![iLibras Widget](https://via.placeholder.com/800x400/25D366/FFFFFF?text=iLibras+Widget)
10
10
 
@@ -13,9 +13,9 @@ Widget embarcável similar ao WhatsApp para captura de dados (Nome e CPF) com in
13
13
  - 🚀 **Fácil integração** - Apenas 2 linhas de código
14
14
  - 🎨 **Totalmente personalizável** - Cores, posição, textos e mais
15
15
  - 📱 **Responsivo** - Funciona perfeitamente em desktop e mobile
16
- - ✅ **Validação automática** - CPF validado antes do envio
16
+ - 🙋 **Pede só o nome** - Nada de CPF ou telefone para ser atendido
17
+ - 📅 **Ao vivo ou agendado** - Entrar na fila agora, ou marcar dia e hora
17
18
  - 🔒 **Envio seguro** - Dados enviados via POST para API
18
- - 🎭 **Máscaras de entrada** - Formatação automática de CPF
19
19
  - 🌐 **Universal** - Funciona em qualquer site ou sistema
20
20
  - ♿ **Acessível** - Suporte a leitores de tela e navegação por teclado
21
21
  - 🌙 **Tema escuro** - Adapta-se automaticamente às preferências do usuário
@@ -213,18 +213,21 @@ Os dados são enviados como **FormData** (similar a um formulário HTML tradicio
213
213
 
214
214
  ```
215
215
  nome: "João Silva"
216
- cpf: "12345678900"
217
- telefone: "11987654321"
216
+ modo: "fila"
218
217
  token: "seu_token_de_autenticacao"
219
218
  ```
220
219
 
221
220
  | Campo | Descrição | Formato |
222
221
  |-------|-----------|------|
223
222
  | `nome` | Nome completo do usuário | String |
224
- | `cpf` | CPF sem formatação (apenas números) | String numérica (11 dígitos) |
225
- | `telefone` | Telefone sem formatação (apenas números) | String numérica (10-11 dígitos) |
223
+ | `modo` | `fila` (atendimento agora) ou `agendamento` (escolher dia e hora) | String |
226
224
  | `token` | Token de autenticação fornecido pela equipe | String |
227
225
 
226
+ > Até a v1.4.0 o widget também enviava `cpf` e `telefone`. A partir da v1.5.0
227
+ > não envia mais: para chamar um intérprete não é preciso identificar a pessoa,
228
+ > e cada campo a mais era uma barreira a quem só queria ser atendido. A API
229
+ > continua aceitando os dois campos, para os widgets antigos ainda instalados.
230
+
228
231
  ### Resposta Esperada da API
229
232
 
230
233
  A API deve retornar um JSON com um link de redirecionamento:
@@ -428,18 +431,6 @@ Todos os dados são enviados via **método POST** (não via URL/GET), garantindo
428
431
  - Maior segurança no tráfego de informações sensíveis
429
432
  - Conformidade com boas práticas de desenvolvimento web
430
433
 
431
- ### Validação de CPF
432
-
433
- O widget valida o CPF antes do envio usando o algoritmo de verificação de dígitos. CPFs inválidos são rejeitados automaticamente.
434
-
435
- ```javascript
436
- // CPFs aceitos: números válidos com 11 dígitos
437
- // CPFs rejeitados:
438
- // - Números com menos de 11 dígitos
439
- // - Sequências repetidas (111.111.111-11)
440
- // - Dígitos verificadores incorretos
441
- ```
442
-
443
434
  ### Validação de Nome
444
435
 
445
436
  - Entre 3 e 120 caracteres
@@ -447,17 +438,14 @@ O widget valida o CPF antes do envio usando o algoritmo de verificação de díg
447
438
  pontuação de código são rejeitados
448
439
  - Exige nome e sobrenome
449
440
 
450
- ### Validação de Telefone
451
-
452
- - DDD conferido contra a lista de códigos em uso no país
453
- - Celular com 9 dígitos precisa começar em 9; fixo com 8 dígitos, entre 2 e 5
454
- - Sequências repetidas (00000000000) são rejeitadas
455
-
456
441
  ### Sanitização de Dados
457
442
 
458
- - CPF e telefone: apenas dígitos
459
443
  - Nome: espaços das pontas removidos e sequências de espaço reduzidas a um
460
444
 
445
+ > O telefone não é mais pedido aqui. Quem agenda um horário e quer aviso por
446
+ > SMS informa o celular na própria tela de agendamento do iLibras, e ele vale
447
+ > só para aquele atendimento.
448
+
461
449
  > **A validação do widget é conveniência, não barreira.** Ela roda no navegador
462
450
  > e qualquer pessoa a desliga pelo console. As mesmas regras valem no servidor,
463
451
  > e é lá que elas decidem — o widget as repete só para avisar cedo e em