flicker-alerts 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. package/index.html +190 -0
  2. package/index.js +60 -0
  3. package/package.json +22 -0
  4. package/style.css +148 -0
package/index.html ADDED
@@ -0,0 +1,190 @@
1
+ <!DOCTYPE html>
2
+ <html lang="pt-BR">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>FlickerAlerts</title>
7
+ <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css">
9
+ <link rel="stylesheet" href="style.css">
10
+ <style>
11
+ /* Estilo para os botões */
12
+ .btn {
13
+ font-size: 14px;
14
+ padding: 8px 16px;
15
+ border-radius: 8px;
16
+ width: 100%; /* Botões ocupam 100% do espaço das colunas */
17
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
18
+ }
19
+
20
+ .btn:hover {
21
+ transform: scale(1.05);
22
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
23
+ }
24
+
25
+ /* Botões específicos */
26
+ .btn-success {
27
+ background-color: #28a745;
28
+ color: white;
29
+ }
30
+ .btn-info {
31
+ background-color: #17a2b8;
32
+ color: white;
33
+ }
34
+ .btn-warning {
35
+ background-color: #ffc107;
36
+ color: black;
37
+ }
38
+ .btn-danger {
39
+ background-color: #dc3545;
40
+ color: white;
41
+ }
42
+
43
+ .container {
44
+ display: flex;
45
+ flex-direction: column;
46
+ align-items: center;
47
+ gap: 20px;
48
+ margin-top: 30px;
49
+ }
50
+
51
+ /* Área da documentação */
52
+ .doc-section {
53
+ margin-top: 30px;
54
+ width: 100%;
55
+ max-width: 800px;
56
+ }
57
+ .doc-section h3 {
58
+ margin-bottom: 10px;
59
+ font-size: 22px;
60
+ text-align: center;
61
+ }
62
+ .doc-section p {
63
+ font-size: 16px;
64
+ line-height: 1.5;
65
+ }
66
+ .doc-section pre {
67
+ background-color: #1e1e1e; /* Fundo escuro estilo VSCode */
68
+ color: #dcdcdc; /* Texto claro */
69
+ padding: 10px;
70
+ border-radius: 4px;
71
+ font-size: 14px;
72
+ overflow-x: auto;
73
+ border: 1px solid #333; /* Bordas discretas */
74
+ font-family: 'Courier New', Courier, monospace; /* Fonte monoespaçada */
75
+ }
76
+ .doc-section ul {
77
+ padding-left: 20px;
78
+ }
79
+ .doc-section li {
80
+ margin-bottom: 10px;
81
+ }
82
+
83
+ /* Ajustes para os botões */
84
+ .row {
85
+ display: flex;
86
+ justify-content: center;
87
+ gap: 10px;
88
+ }
89
+ .col {
90
+ flex: 1 1 100%;
91
+ max-width: 200px; /* Limita o tamanho dos botões */
92
+ }
93
+ </style>
94
+ </head>
95
+ <body>
96
+ <div class="container">
97
+ <h1>FlickerAlerts</h1>
98
+
99
+ <!-- Linha com botões -->
100
+ <div class="row">
101
+ <div class="col">
102
+ <button class="btn btn-success" id="success-btn">Mostrar Sucesso</button>
103
+ </div>
104
+ <div class="col">
105
+ <button class="btn btn-info" id="info-btn">Mostrar Info</button>
106
+ </div>
107
+ <div class="col">
108
+ <button class="btn btn-warning" id="warning-btn">Mostrar Alerta</button>
109
+ </div>
110
+ <div class="col">
111
+ <button class="btn btn-danger" id="error-btn">Mostrar Erro</button>
112
+ </div>
113
+ </div>
114
+
115
+ <!-- Área para exibir alertas no canto superior direito -->
116
+ <div id="alerts-container" class="top-right"></div>
117
+
118
+ <!-- Documentação -->
119
+ <div class="doc-section">
120
+ <h3>Documentação de Uso</h3>
121
+ <p><strong>FlickerAlerts</strong> é uma biblioteca simples para criar alertas animados de sucesso, erro, aviso e informações. Eles podem ser exibidos automaticamente ou ser fechados manualmente pelo usuário.</p>
122
+
123
+ <h4>Instalação</h4>
124
+ <p>Instale via <code>npm</code>:</p>
125
+ <pre><code>npm install flicker-alerts</code></pre>
126
+
127
+ <h4>Uso</h4>
128
+ <p>Após a instalação, a biblioteca será importada no seu código, e você não precisará mais incluir o arquivo <code>script</code> diretamente no HTML. Em vez disso, você utilizará a função <code>showAlert</code> em seus componentes.</p>
129
+
130
+ <h4>Uso no Angular</h4>
131
+ <p>Com o <code>FlickerAlerts</code> instalado, importe-o no seu componente Angular e utilize-o conforme mostrado abaixo:</p>
132
+ <pre><code>import FlickerAlerts from 'flicker-alerts';
133
+
134
+ export class AppComponent {
135
+ showSuccessAlert() {
136
+ FlickerAlerts.showAlert({
137
+ type: 'success',
138
+ title: 'Sucesso',
139
+ message: 'Operação concluída com sucesso!'
140
+ });
141
+ }
142
+
143
+ showInfoAlert() {
144
+ FlickerAlerts.showAlert({
145
+ type: 'info',
146
+ title: 'Informação',
147
+ message: 'Aqui está uma informação importante.'
148
+ });
149
+ }
150
+
151
+ showWarningAlert() {
152
+ FlickerAlerts.showAlert({
153
+ type: 'warning',
154
+ title: 'Alerta',
155
+ message: 'Por favor, preste atenção nisso!'
156
+ });
157
+ }
158
+
159
+ showErrorAlert() {
160
+ FlickerAlerts.showAlert({
161
+ type: 'danger',
162
+ title: 'Erro',
163
+ message: 'Ocorreu um erro inesperado!'
164
+ });
165
+ }
166
+ }</code></pre>
167
+
168
+ <h4>Uso no React</h4>
169
+ <p>Com o <code>FlickerAlerts</code> instalado, você pode usá-lo no seu componente React assim:</p>
170
+ <pre><code>import FlickerAlerts from 'flicker-alerts';
171
+
172
+ function App() {
173
+ const showSuccessAlert = () => {
174
+ FlickerAlerts.showAlert({
175
+ type: 'success',
176
+ title: 'Sucesso',
177
+ message: 'Operação concluída com sucesso!'
178
+ });
179
+ };
180
+
181
+
182
+ }</code></pre>
183
+
184
+
185
+ </div>
186
+ </div>
187
+
188
+ <script src="index.js"></script>
189
+ </body>
190
+ </html>
package/index.js ADDED
@@ -0,0 +1,60 @@
1
+ const FlickerAlerts = {
2
+ showAlert: function ({ type, title, message, timer = 3000 }) {
3
+ // Criação do alerta
4
+ const alertBox = document.createElement('div');
5
+ alertBox.className = `alert-custom alert-${type}`;
6
+
7
+ // Ícone
8
+ const icon = document.createElement('div');
9
+ icon.className = 'icon';
10
+ const iconClass = {
11
+ success: 'fa-check',
12
+ info: 'fa-info',
13
+ warning: 'fa-exclamation',
14
+ danger: 'fa-times'
15
+ }[type];
16
+ icon.innerHTML = `<i class="fas ${iconClass}"></i>`;
17
+ alertBox.appendChild(icon);
18
+
19
+ // Conteúdo
20
+ const content = document.createElement('div');
21
+ content.innerHTML = `<strong>${title}</strong><div>${message}</div>`;
22
+ alertBox.appendChild(content);
23
+
24
+ // Botão de fechamento
25
+ const closeButton = document.createElement('div');
26
+ closeButton.className = 'close';
27
+ closeButton.innerHTML = '<i class="fas fa-times"></i>';
28
+ closeButton.onclick = () => alertBox.remove();
29
+ alertBox.appendChild(closeButton);
30
+
31
+ // Barra de progresso
32
+ const progressBar = document.createElement('div');
33
+ progressBar.className = `progress-bar progress-bar-${type}`;
34
+ alertBox.appendChild(progressBar);
35
+
36
+ // Adicionar ao container
37
+ const container = document.getElementById('alerts-container');
38
+ container.appendChild(alertBox);
39
+
40
+ // Remoção automática
41
+ setTimeout(() => alertBox.remove(), timer);
42
+ }
43
+ };
44
+
45
+ // Botões de teste
46
+ document.getElementById('success-btn').addEventListener('click', () => {
47
+ FlickerAlerts.showAlert({ type: 'success', title: 'Sucesso', message: 'A operação foi concluída com êxito!' });
48
+ });
49
+
50
+ document.getElementById('info-btn').addEventListener('click', () => {
51
+ FlickerAlerts.showAlert({ type: 'info', title: 'Informação', message: 'Aqui está uma informação importante.' });
52
+ });
53
+
54
+ document.getElementById('warning-btn').addEventListener('click', () => {
55
+ FlickerAlerts.showAlert({ type: 'warning', title: 'Alerta', message: 'Por favor, preste atenção nisso!' });
56
+ });
57
+
58
+ document.getElementById('error-btn').addEventListener('click', () => {
59
+ FlickerAlerts.showAlert({ type: 'danger', title: 'Erro', message: 'Ocorreu um erro inesperado!' });
60
+ });
package/package.json ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "flicker-alerts",
3
+ "version": "1.0.0",
4
+ "description": "Biblioteca para criar alertas animados de sucesso, erro, aviso e informações.",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "test": "echo \"Error: no test specified\" && exit 1"
8
+ },
9
+ "keywords": [
10
+ "alertas",
11
+ "flicker",
12
+ "javascript",
13
+ "UI"
14
+ ],
15
+ "author": "Seu Nome",
16
+ "license": "MIT",
17
+ "dependencies": {},
18
+ "devDependencies": {},
19
+ "publishConfig": {
20
+ "access": "public"
21
+ }
22
+ }
package/style.css ADDED
@@ -0,0 +1,148 @@
1
+ .alert-custom {
2
+ display: flex;
3
+ align-items: center;
4
+ padding: 1rem;
5
+ border-radius: 0.5rem;
6
+ box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
7
+ margin-bottom: 1rem;
8
+ width: 100%;
9
+ max-width: 320px;
10
+ position: relative;
11
+ background-color: white;
12
+ color: #000;
13
+ z-index: 1050;
14
+ font-family: Arial, sans-serif;
15
+ font-size: 0.9rem;
16
+ }
17
+
18
+ .alert-custom .icon {
19
+ text-align: center;
20
+ display: flex;
21
+ align-items: center;
22
+ justify-content: center;
23
+ width: 2rem; /* Ajuste o tamanho do ícone */
24
+ height: 2rem;
25
+ border-radius: 50%;
26
+ font-size: 1.2rem; /* Ajusta o tamanho do ícone */
27
+ line-height: 0;
28
+ min-width: 2rem;
29
+ min-height: 2rem;
30
+ margin-right: 1rem; /* Espaço entre o ícone e o conteúdo */
31
+ }
32
+
33
+ .alert-custom .icon i {
34
+ font-size: inherit; /* Ajusta o ícone ao tamanho da div */
35
+ }
36
+
37
+ .alert-custom .content {
38
+ display: flex;
39
+ flex-direction: column; /* Conteúdo empilhado */
40
+ justify-content: center; /* Centraliza verticalmente o título e a mensagem */
41
+ flex-grow: 1;
42
+ }
43
+
44
+ .alert-custom .content strong {
45
+ font-weight: bold;
46
+ font-size: 1rem;
47
+ margin-bottom: 0.25rem; /* Espaçamento entre título e mensagem */
48
+ }
49
+
50
+ .alert-custom .content div {
51
+ font-size: 0.9rem;
52
+ color: #555;
53
+ }
54
+
55
+ /* Botão de Fechar no topo */
56
+ .alert-custom .close {
57
+ position: absolute; /* Posiciona o X no topo da caixa */
58
+ top: 5px; /* Ajusta a distância do topo */
59
+ right: 5px; /* Ajusta a distância da borda direita */
60
+ cursor: pointer;
61
+ color: #999; /* Cor mais clara para o X */
62
+ font-size: 1rem; /* Tamanho menor do X */
63
+ padding: 0.25rem;
64
+ }
65
+
66
+ .alert-custom .close:hover {
67
+ color: #777; /* Cor mais escura no hover */
68
+ }
69
+
70
+ .alert-success {
71
+ border-left: 0.25rem solid #28a745;
72
+ }
73
+
74
+ .alert-success .icon {
75
+ background-color: #28a745;
76
+ color: white;
77
+ }
78
+
79
+ .alert-info {
80
+ border-left: 0.25rem solid #17a2b8;
81
+ }
82
+
83
+ .alert-info .icon {
84
+ background-color: #17a2b8;
85
+ color: white;
86
+ }
87
+
88
+ .alert-warning {
89
+ border-left: 0.25rem solid #ffc107;
90
+ }
91
+
92
+ .alert-warning .icon {
93
+ background-color: #ffc107;
94
+ color: white;
95
+ }
96
+
97
+ .alert-danger {
98
+ border-left: 0.25rem solid #dc3545;
99
+ }
100
+
101
+ .alert-danger .icon {
102
+ background-color: #dc3545;
103
+ color: white;
104
+ }
105
+
106
+ .top-right {
107
+ position: fixed;
108
+ top: 1rem;
109
+ right: 1rem;
110
+ display: flex;
111
+ flex-direction: column;
112
+ gap: 0.5rem;
113
+ z-index: 1050;
114
+ }
115
+
116
+ .progress-bar {
117
+ position: absolute;
118
+ bottom: 0;
119
+ left: 0;
120
+ height: 0.25rem;
121
+ animation: load 3s linear forwards;
122
+ border-radius: 0 0 0.5rem 0.5rem;
123
+ }
124
+
125
+ .progress-bar-success {
126
+ background-color: #28a745;
127
+ }
128
+
129
+ .progress-bar-info {
130
+ background-color: #17a2b8;
131
+ }
132
+
133
+ .progress-bar-warning {
134
+ background-color: #ffc107;
135
+ }
136
+
137
+ .progress-bar-danger {
138
+ background-color: #dc3545;
139
+ }
140
+
141
+ @keyframes load {
142
+ from {
143
+ width: 0;
144
+ }
145
+ to {
146
+ width: 100%;
147
+ }
148
+ }