# 📞 Callix Dialer Widget

Widget de discador telefônico para integração via CDN em qualquer site.

## 🚀 Quick Start (Uso Simples)

Adicione 2 linhas no seu HTML:

```html
<!-- 1. CSS do widget -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@callixbrasil/dialer-widget@1/dist-widget/callix-dialer.css">

<!-- 2. Container onde o widget vai aparecer -->
<div id="callix-dialer"></div>

<!-- 3. Script do widget -->
<script src="https://cdn.jsdelivr.net/npm/@callixbrasil/dialer-widget@1/dist-widget/callix-dialer.umd.js"></script>

<!-- 4. Inicialização -->
<script>
  CallixDialer.init({
    container: '#callix-dialer',
    domain: 'villelabrasil.callix.com.br'
  });
</script>
```

## 📦 Instalação

### Via CDN (Recomendado)

```html
<script src="https://cdn.jsdelivr.net/npm/@callixbrasil/dialer-widget@1.0.0/dist-widget/callix-dialer.umd.js"></script>
```

### Via NPM

```bash
npm install @callixbrasil/dialer-widget
# ou
pnpm add @callixbrasil/dialer-widget
```

```javascript
import { CallixDialerWidget } from '@callixbrasil/dialer-widget';

const widget = new CallixDialerWidget({
  container: '#callix-dialer',
  domain: 'villelabrasil.callix.com.br'
});

widget.init();
```

## ⚙️ Configuração

```javascript
CallixDialer.init({
  // Container (obrigatório)
  container: '#callix-dialer',  // Seletor CSS ou HTMLElement
  
  // Domínio Callix (obrigatório)
  domain: 'villelabrasil.callix.com.br',
  
  // URL da API (opcional, detecta automaticamente)
  apiUrl: 'https://villelabrasil.callix.com.br',
  
  // Tema (opcional)
  theme: 'light',  // 'light' ou 'dark'
  
  // Posição (opcional)
  position: 'bottom-right',  // 'bottom-right' ou 'bottom-left'
  
  // Callbacks (opcional)
  onReady: function() {
    console.log('Widget pronto!');
  },
  
  onError: function(error) {
    console.error('Erro:', error);
  }
});
```

## 🎨 Exemplos de Uso

### HTML Puro

```html
<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@callixbrasil/dialer-widget@1/dist-widget/callix-dialer.css">
</head>
<body>
  <h1>Meu Site</h1>
  <div id="dialer"></div>
  
  <script src="https://cdn.jsdelivr.net/npm/@callixbrasil/dialer-widget@1/dist-widget/callix-dialer.umd.js"></script>
  <script>
    CallixDialer.init({
      container: '#dialer',
      domain: 'villelabrasil.callix.com.br'
    });
  </script>
</body>
</html>
```

### WordPress

```php
<?php
// functions.php ou plugin

function add_callix_dialer() {
    // Adicionar CSS
    wp_enqueue_style(
        'callix-dialer', 
        'https://cdn.jsdelivr.net/npm/@callixbrasil/dialer-widget@1/dist-widget/callix-dialer.css'
    );
    
    // Adicionar JS
    wp_enqueue_script(
        'callix-dialer', 
        'https://cdn.jsdelivr.net/npm/@callixbrasil/dialer-widget@1/dist-widget/callix-dialer.umd.js',
        array(),
        '1.0.0',
        true
    );
    
    // Inicializar
    wp_add_inline_script('callix-dialer', '
        CallixDialer.init({
            container: "#callix-dialer-container",
            domain: "' . get_option('callix_domain') . '"
        });
    ');
}

add_action('wp_enqueue_scripts', 'add_callix_dialer');

// Adicionar container no footer
function add_callix_dialer_container() {
    echo '<div id="callix-dialer-container"></div>';
}
add_action('wp_footer', 'add_callix_dialer_container');
```

### React/Next.js

```tsx
import { useEffect, useRef } from 'react';

export function CallixDialerWidget() {
  const containerRef = useRef<HTMLDivElement>(null);
  const widgetRef = useRef<any>(null);

  useEffect(() => {
    // Carregar script dinamicamente
    const script = document.createElement('script');
    script.src = 'https://cdn.jsdelivr.net/npm/@callixbrasil/dialer-widget@1/dist-widget/callix-dialer.umd.js';
    script.async = true;
    
    script.onload = () => {
      if (containerRef.current && (window as any).CallixDialer) {
        widgetRef.current = (window as any).CallixDialer.init({
          container: containerRef.current,
          domain: 'villelabrasil.callix.com.br'
        });
      }
    };
    
    document.body.appendChild(script);
    
    return () => {
      if (widgetRef.current) {
        widgetRef.current.destroy();
      }
      document.body.removeChild(script);
    };
  }, []);

  return <div ref={containerRef} />;
}
```

## 🔧 API

### `CallixDialer.init(options)`

Inicializa o widget e retorna uma instância.

**Retorno:** `CallixDialerWidget`

### `widget.destroy()`

Remove o widget do DOM e limpa recursos.

```javascript
const widget = CallixDialer.init({ container: '#dialer' });
// ... usar widget
widget.destroy();  // Remover quando não precisar mais
```

## 🌐 CDN Disponíveis

- **jsDelivr** (Recomendado): `https://cdn.jsdelivr.net/npm/@callixbrasil/dialer-widget@1`
- **unpkg**: `https://unpkg.com/@callixbrasil/dialer-widget@1`

## 📝 Versionamento

Suportamos [Semantic Versioning](https://semver.org/):

- `@1` - Última versão v1.x.x (recomendado)
- `@1.0` - Última versão v1.0.x
- `@1.0.0` - Versão exata (fixar versão)

## 🐛 Troubleshooting

### Widget não aparece

1. Verifique o console do navegador
2. Confirme que o container existe no DOM
3. Verifique se o CSS foi carregado

```javascript
// Debug
console.log('CallixDialer disponível?', typeof CallixDialer);
console.log('Container existe?', document.querySelector('#callix-dialer'));
```

### Conflitos de CSS

Se houver conflitos, use um container isolado:

```html
<div style="all: initial;">
  <div id="callix-dialer"></div>
</div>
```

## 📄 Licença

MIT

## 🤝 Suporte

- 📧 Email: suporte@callixbrasil.com.br
- 📚 Docs: https://docs.callixbrasil.com.br
- 🐛 Issues: https://github.com/callixbrasil/dialer-widget/issues
