PHP code example of twiq / livewire-notify

1. Go to this page and download the library: Download twiq/livewire-notify library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

twiq / livewire-notify example snippets




namespace App\Http\Livewire;

use Livewire\Component;
use Twiq\Traits\HasTwiqNotifications;

class UserForm extends Component
{
    use HasTwiqNotifications;

    public function save()
    {
        // Lógica de salvamento...
        
        $this->notifySuccess('Usuário salvo com sucesso!');
        
        // Ou usando dispatch direto
        $this->dispatch('twiq', [
            'type' => 'success',
            'message' => 'Usuário salvo com sucesso!'
        ]);
    }
    
    public function delete()
    {
        // Lógica de exclusão...
        
        $this->notifyError('Erro ao excluir usuário');
    }
}



namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Twiq\Facades\Twiq;

class UserController extends Controller
{
    public function store(Request $request)
    {
        // Lógica de salvamento...
        
        // Usando Facade
        Twiq::success('Usuário criado com sucesso!');
        
        return redirect()->back();
    }
}

// Sucesso (verde)
$this->notifySuccess('Operação realizada com sucesso!');

// Erro (vermelho)
$this->notifyError('Ocorreu um erro!');

// Aviso (amarelo)
$this->notifyWarning('Atenção necessária!');

// Informação (azul)
$this->notifyInfo('Informação importante!');

$this->dispatch('twiq', [
    'type' => 'success',
    'message' => 'Mensagem principal',
    'title' => 'Título opcional',
    'persistent' => true, // Não desaparece automaticamente
    'duration' => 8000, // 8 segundos
]);

return [
    // Posição das notificações
    'position' => 'top-right', // top-left, bottom-right, etc.
    
    // Duração padrão (ms)
    'duration' => 5000,
    
    // Máximo de notificações simultâneas
    'max_notifications' => 5,
    
    // Habilitar som
    'sound' => false,
    
    // Modo escuro automático
    'dark_mode' => 'auto',
    
    // Configuração por tipo
    'types' => [
        'success' => [
            'icon' => 'check-circle',
            'color' => 'green',
            'duration' => 4000,
        ],
        // ...
    ],
    
    // Agrupamento de notificações
    'grouping' => [
        'enabled' => true,
        'timeout' => 2000,
    ],
    
    // Prevenir duplicatas
    'prevent_duplicates' => true,
];

// Notificação que só sai manualmente
$this->notifyPersistent('error', 'Erro crítico do sistema');

// Ou usando dispatch
$this->dispatch('twiq', [
    'type' => 'error',
    'message' => 'Erro crítico',
    'persistent' => true
]);

// Estas notificações serão agrupadas se disparadas rapidamente
$this->notifyError('Erro de validação');
$this->notifyError('Erro de validação');
$this->notifyError('Erro de validação');
// Resultado: "Erro de validação (3)"

public function submit()
{
    $this->validate([
        'name' => ' // Lógica de salvamento...
        $this->notifySuccess('Dados salvos com sucesso!');
    } catch (\Exception $e) {
        $this->notifyError('Erro ao salvar: ' . $e->getMessage());
    }
}

// resources/lang/pt/twiq.php
return [
    'close' => 'Fechar',
    'success' => 'Sucesso',
    'error' => 'Erro',
    'warning' => 'Aviso',
    'info' => 'Informação',
    'default_messages' => [
        'success' => 'Operação realizada com sucesso!',
        'error' => 'Ocorreu um erro. Tente novamente.',
        // ...
    ],
];

// config/twiq.php
'sound' => true,

public function test_can_add_notification()
{
    Livewire::test(TwiqContainer::class)
        ->call('addNotification', [
            'type' => 'success',
            'message' => 'Test notification'
        ])
        ->assertSee('Test notification');
}

// Converter flash messages para Twiq
if (session()->has('success')) {
    $this->notifySuccess(session('success'));
}

// Mostrar erros de validação
if ($this->getErrorBag()->any()) {
    foreach ($this->getErrorBag()->all() as $error) {
        $this->notifyError($error);
    }
}
bash
# Publicar configuração
php artisan vendor:publish --tag=twiq-config

# Publicar views (opcional)
php artisan vendor:publish --tag=twiq-views

# Publicar assets JavaScript
php artisan vendor:publish --tag=twiq-assets

# Publicar traduções (opcional)
php artisan vendor:publish --tag=twiq-translations
blade
<!-- Notificações no topo à esquerda -->
<x-twiq position="top-left" />

<!-- Notificações na parte inferior central -->
<x-twiq position="bottom-center" />