diff --git a/v3/verify/index.html b/v3/verify/index.html index 2b4313f..c1dc082 100644 --- a/v3/verify/index.html +++ b/v3/verify/index.html @@ -21,15 +21,14 @@

šŸ” SDK de AutenticaƧƵes

āš™ļø Configuração

-

Sobre este SDK

-

Este widget permite verificação segura de identidade através de detecção biométrica de prova de vida. Os casos de uso incluem:

- +

Como usar

+
    +
  1. Crie uma transação via API
  2. +
  3. Insira o ID da transação abaixo
  4. +
  5. Selecione o ambiente desejado
  6. +
  7. Clique em "Carregar Widget" para iniciar a verificação
  8. +
+

Documentação

@@ -46,17 +45,22 @@

Sobre este SDK

Selecione o ambiente de destino para o widget
+
@@ -79,35 +83,169 @@

šŸ“” Monitor de Eventos do SDK

+
+ + + diff --git a/v3/verify/style.css b/v3/verify/style.css index cded4df..9333b14 100644 --- a/v3/verify/style.css +++ b/v3/verify/style.css @@ -124,7 +124,8 @@ h3 { color: #4a5568; } -.info-box ul { +.info-box ul, +.info-box ol { margin: 0; padding-left: 20px; font-size: 14px; @@ -220,12 +221,13 @@ button.primary:hover { } button.secondary { - background: #e2e8f0; - color: #4a5568; + background: transparent; + color: #f25924; + border: 2px solid #f25924; } button.secondary:hover { - background: #cbd5e0; + background: rgba(242, 89, 36, 0.08); } button.small { @@ -391,6 +393,54 @@ button[disabled] { word-break: break-word; } +.jwt-preview { + margin-top: 8px; +} + +.jwt-toggle { + width: auto; +} + +.jwt-details { + margin-top: 8px; + border: 1px solid #e2e8f0; + border-radius: 6px; + overflow: hidden; +} + +.jwt-section { + padding: 10px 12px; + border-bottom: 1px solid #e2e8f0; +} + +.jwt-section:last-child { + border-bottom: none; +} + +.jwt-label { + display: block; + font-size: 10px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.5px; + color: #718096; + margin-bottom: 6px; +} + +.jwt-payload { + margin: 0; + font-size: 11px; + font-family: 'Monaco', 'Menlo', monospace; + color: #2d3748; + background: #f7fafc; + padding: 10px; + border-radius: 4px; + white-space: pre-wrap; + word-break: break-word; + max-height: 300px; + overflow-y: auto; +} + .status-badge { padding: 6px 16px; border-radius: 20px; @@ -452,7 +502,7 @@ iframe { left: 0; right: 0; bottom: 0; - background: rgba(0, 0, 0, 0.85); + background-color: #191826; display: flex; align-items: center; justify-content: center; @@ -476,7 +526,7 @@ iframe { height: 100%; max-width: 100vw; max-height: 100vh; - background: white; + background: transparent; display: flex; align-items: center; justify-content: center; @@ -534,10 +584,164 @@ iframe { .modal-content { width: 100%; height: 100%; - display: none; } .modal-content iframe { width: 100%; height: 100%; } + +.config-modal-overlay { + background: rgba(25, 24, 38, 0.8); + padding: 24px; +} + +.config-modal { + width: min(100%, 720px); + max-height: calc(100vh - 48px); + overflow: auto; + background: #ffffff; + border-radius: 12px; + padding: 24px; + box-shadow: 0 16px 40px rgba(0, 0, 0, 0.24); +} + +.config-modal h3 { + margin-bottom: 8px; +} + +.config-modal-help { + margin: 0 0 14px 0; + color: #4a5568; + font-size: 14px; +} + +#configTextarea { + width: 100%; + min-height: 420px; + resize: vertical; + border: 2px solid #e2e8f0; + border-radius: 8px; + padding: 14px; + font-size: 13px; + line-height: 1.5; + font-family: 'Monaco', 'Menlo', monospace; + color: #2d3748; +} + +#configTextarea:focus { + outline: none; + border-color: #f25924; + box-shadow: 0 0 0 3px rgba(242, 89, 36, 0.1); +} + +.config-modal-actions { + margin-top: 16px; + display: flex; + justify-content: flex-end; + gap: 10px; +} + +.config-modal-actions .button { + width: auto; + min-width: 100px; +} + +@media (max-width: 768px) { + .config-modal-overlay { + padding: 12px; + } + + .config-modal { + padding: 16px; + width: 100%; + } + + #configTextarea { + min-height: 320px; + } +} + +#toastContainer { + position: fixed; + top: 16px; + right: 16px; + z-index: 10001; + display: flex; + flex-direction: column; + gap: 8px; + pointer-events: none; +} + +.toast { + pointer-events: auto; + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + padding: 10px 16px; + border-radius: 12px; + border-left: 4px solid #cbd5e0; + background: white; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + font-family: 'DM Sans', sans-serif; + animation: toastIn 0.3s ease; + min-width: 240px; + max-width: 360px; +} + +.toast-name { + font-size: 14px; + font-weight: 600; + color: #2d3748; +} + +.toast-time { + font-size: 12px; + font-weight: 500; + color: #718096; + font-family: 'Monaco', 'Menlo', monospace; + white-space: nowrap; +} + +.toast.info { + border-left-color: #406bbf; + background: #eaf0fb; +} + +.toast.success { + border-left-color: #3fa64d; + background: #ebf8ed; +} + +.toast.error, +.toast.failed { + border-left-color: #d02525; + background: #fceaea; +} + +@keyframes toastIn { + from { + opacity: 0; + transform: translateX(20px); + } + to { + opacity: 1; + transform: translateX(0); + } +} + +.toast-out { + animation: toastOut 0.3s ease forwards; +} + +@keyframes toastOut { + from { + opacity: 1; + transform: translateX(0); + } + to { + opacity: 0; + transform: translateX(20px); + } +}