@kaikybrofc/omnizap-system 2.2.9 → 2.3.0
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/README.md +20 -18
- package/app/config/adminIdentity.js +1 -3
- package/app/connection/socketController.js +10 -20
- package/app/controllers/messageController.js +7 -28
- package/app/modules/aiModule/catCommand.js +29 -192
- package/app/modules/broadcastModule/noticeCommand.js +28 -97
- package/app/modules/gameModule/diceCommand.js +6 -32
- package/app/modules/playModule/playCommand.js +57 -258
- package/app/modules/quoteModule/quoteCommand.js +2 -4
- package/app/modules/rpgPokemonModule/rpgPokemonRepository.js +1 -13
- package/app/modules/statsModule/noMessageCommand.js +16 -84
- package/app/modules/statsModule/rankingCommand.js +5 -25
- package/app/modules/statsModule/rankingCommon.js +1 -9
- package/app/modules/stickerModule/convertToWebp.js +4 -27
- package/app/modules/stickerModule/stickerCommand.js +13 -24
- package/app/modules/stickerModule/stickerTextCommand.js +13 -25
- package/app/modules/stickerPackModule/autoPackCollectorService.js +16 -7
- package/app/modules/stickerPackModule/domainEventOutboxRepository.js +20 -36
- package/app/modules/stickerPackModule/domainEvents.js +2 -11
- package/app/modules/stickerPackModule/semanticReclassificationEngine.js +13 -50
- package/app/modules/stickerPackModule/semanticReclassificationEngine.test.js +2 -15
- package/app/modules/stickerPackModule/semanticThemeClusterService.js +14 -41
- package/app/modules/stickerPackModule/stickerAssetClassificationRepository.js +25 -95
- package/app/modules/stickerPackModule/stickerAssetRepository.js +12 -31
- package/app/modules/stickerPackModule/stickerAssetReprocessQueueRepository.js +13 -18
- package/app/modules/stickerPackModule/stickerAutoPackByTagsRuntime.js +284 -709
- package/app/modules/stickerPackModule/stickerClassificationBackgroundRuntime.js +27 -106
- package/app/modules/stickerPackModule/stickerClassificationService.js +46 -77
- package/app/modules/stickerPackModule/stickerDedicatedTaskWorkerRuntime.js +13 -53
- package/app/modules/stickerPackModule/stickerDomainEventBus.js +10 -16
- package/app/modules/stickerPackModule/stickerDomainEventConsumerRuntime.js +13 -34
- package/app/modules/stickerPackModule/stickerMarketplaceDriftService.js +1 -4
- package/app/modules/stickerPackModule/stickerObjectStorageService.js +26 -26
- package/app/modules/stickerPackModule/stickerPackCommandHandlers.js +32 -187
- package/app/modules/stickerPackModule/stickerPackInteractionEventRepository.js +6 -15
- package/app/modules/stickerPackModule/stickerPackItemRepository.js +6 -32
- package/app/modules/stickerPackModule/stickerPackMarketplaceService.js +12 -36
- package/app/modules/stickerPackModule/stickerPackMessageService.js +12 -40
- package/app/modules/stickerPackModule/stickerPackRepository.js +23 -66
- package/app/modules/stickerPackModule/stickerPackScoreSnapshotRepository.js +9 -21
- package/app/modules/stickerPackModule/stickerPackScoreSnapshotRuntime.js +10 -40
- package/app/modules/stickerPackModule/stickerPackService.js +50 -115
- package/app/modules/stickerPackModule/stickerPackServiceRuntime.js +2 -21
- package/app/modules/stickerPackModule/stickerPackUtils.js +13 -3
- package/app/modules/stickerPackModule/stickerStorageService.js +16 -65
- package/app/modules/stickerPackModule/stickerWorkerPipelineRuntime.js +4 -22
- package/app/modules/stickerPackModule/stickerWorkerTaskQueueRepository.js +14 -29
- package/app/modules/systemMetricsModule/pingCommand.js +9 -39
- package/app/modules/tiktokModule/tiktokCommand.js +17 -109
- package/app/modules/userModule/userCommand.js +2 -88
- package/app/observability/metrics.js +5 -16
- package/app/services/captchaService.js +1 -6
- package/app/services/dbWriteQueue.js +3 -18
- package/app/services/featureFlagService.js +2 -8
- package/app/services/newsBroadcastService.js +0 -1
- package/app/services/queueUtils.js +2 -4
- package/app/services/whatsappLoginLinkService.js +7 -9
- package/app/store/premiumUserStore.js +1 -2
- package/app/utils/antiLink/antiLinkModule.js +3 -233
- package/app/utils/logger/loggerModule.js +9 -34
- package/app/utils/systemMetrics/systemMetricsModule.js +1 -4
- package/database/init.js +1 -8
- package/docker-compose.yml +27 -27
- package/docs/seo/omnizap-seo-playbook-br-2026-02-28.md +220 -0
- package/docs/seo/satellite-page-template.md +91 -0
- package/docs/seo/satellite-pages-phase1.json +349 -0
- package/eslint.config.js +2 -15
- package/index.js +8 -36
- package/ml/clip_classifier/README.md +4 -6
- package/observability/alert-rules.yml +12 -12
- package/observability/grafana/provisioning/dashboards/dashboards.yml +1 -1
- package/package.json +8 -3
- package/public/api-docs/index.html +224 -141
- package/public/bot-whatsapp-para-grupo/index.html +306 -0
- package/public/bot-whatsapp-sem-programar/index.html +306 -0
- package/public/comandos/index.html +428 -0
- package/public/como-automatizar-avisos-no-whatsapp/index.html +306 -0
- package/public/como-criar-comandos-whatsapp/index.html +306 -0
- package/public/como-evitar-spam-no-whatsapp/index.html +306 -0
- package/public/como-moderar-grupo-whatsapp/index.html +306 -0
- package/public/como-organizar-comunidade-whatsapp/index.html +306 -0
- package/public/css/github-project-panel.css +20 -15
- package/public/css/stickers-admin.css +55 -39
- package/public/css/styles.css +37 -29
- package/public/index.html +1060 -1417
- package/public/js/apps/apiDocsApp.js +36 -153
- package/public/js/apps/createPackApp.js +69 -332
- package/public/js/apps/homeApp.js +201 -434
- package/public/js/apps/loginApp.js +3 -12
- package/public/js/apps/stickersAdminApp.js +190 -181
- package/public/js/apps/stickersApp.js +507 -1366
- package/public/js/catalog.js +11 -74
- package/public/js/github-panel/components/ErrorState.js +1 -8
- package/public/js/github-panel/components/GithubProjectPanel.js +2 -9
- package/public/js/github-panel/components/SkeletonPanel.js +1 -11
- package/public/js/github-panel/components/StatCard.js +1 -7
- package/public/js/github-panel/vendor/react.js +1 -9
- package/public/js/runtime/react-runtime.js +1 -9
- package/public/licenca/index.html +104 -86
- package/public/login/index.html +315 -321
- package/public/melhor-bot-whatsapp-para-grupos/index.html +306 -0
- package/public/sitemap.xml +45 -0
- package/public/stickers/admin/index.html +14 -19
- package/public/stickers/create/index.html +39 -43
- package/public/stickers/index.html +97 -41
- package/public/termos-de-uso/index.html +142 -115
- package/public/user/index.html +347 -346
- package/scripts/cache-bust.mjs +5 -24
- package/scripts/generate-seo-satellite-pages.mjs +431 -0
- package/scripts/run-prettier-all.mjs +25 -0
- package/scripts/sticker-catalog-loadtest.mjs +13 -11
- package/scripts/sticker-worker-task.mjs +1 -4
- package/scripts/sync-readme-snapshot.mjs +3 -2
- package/server/controllers/stickerCatalogController.js +407 -704
- package/server/http/httpServer.js +2 -10
- package/server/routes/stickerCatalog/catalogHandlers/catalogAdminHttp.js +1 -8
- package/server/routes/stickerCatalog/catalogHandlers/catalogAuthHttp.js +1 -9
- package/server/routes/stickerCatalog/catalogHandlers/catalogPublicHttp.js +10 -11
- package/server/routes/stickerCatalog/catalogHandlers/catalogUploadHttp.js +1 -10
- package/server/routes/stickerCatalog/catalogRouter.js +11 -13
- package/kaikybrofc-omnizap-system-2.2.9.tgz +0 -0
|
@@ -0,0 +1,306 @@
|
|
|
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" />
|
|
6
|
+
<title>Como organizar comunidade no WhatsApp com automacao</title>
|
|
7
|
+
<meta name="description" content="Veja como organizar comunidade no WhatsApp com bot pronto: regras claras, avisos automaticos e menos ruído nas conversas." />
|
|
8
|
+
<meta name="keywords" content="organizar comunidade whatsapp, bot para comunidade, automacao whatsapp grupo" />
|
|
9
|
+
<meta name="robots" content="index, follow" />
|
|
10
|
+
<link rel="canonical" href="https://omnizap.shop/como-organizar-comunidade-whatsapp/" />
|
|
11
|
+
<link rel="icon" type="image/png" href="/assets/images/brand-icon-192.png" />
|
|
12
|
+
|
|
13
|
+
<meta property="og:type" content="article" />
|
|
14
|
+
<meta property="og:locale" content="pt_BR" />
|
|
15
|
+
<meta property="og:site_name" content="OmniZap System" />
|
|
16
|
+
<meta property="og:title" content="Como organizar comunidade no WhatsApp com automacao" />
|
|
17
|
+
<meta property="og:description" content="Veja como organizar comunidade no WhatsApp com bot pronto: regras claras, avisos automaticos e menos ruído nas conversas." />
|
|
18
|
+
<meta property="og:url" content="https://omnizap.shop/como-organizar-comunidade-whatsapp/" />
|
|
19
|
+
<meta property="og:image" content="https://omnizap.shop/assets/images/hero-banner-1280.jpg" />
|
|
20
|
+
|
|
21
|
+
<meta name="twitter:card" content="summary_large_image" />
|
|
22
|
+
<meta name="twitter:title" content="Como organizar comunidade no WhatsApp com automacao" />
|
|
23
|
+
<meta name="twitter:description" content="Veja como organizar comunidade no WhatsApp com bot pronto: regras claras, avisos automaticos e menos ruído nas conversas." />
|
|
24
|
+
<meta name="twitter:image" content="https://omnizap.shop/assets/images/hero-banner-1280.jpg" />
|
|
25
|
+
|
|
26
|
+
<script type="application/ld+json">
|
|
27
|
+
{ "@context": "https://schema.org", "@type": "WebPage", "name": "Como organizar comunidade no WhatsApp com automacao", "description": "Veja como organizar comunidade no WhatsApp com bot pronto: regras claras, avisos automaticos e menos ruído nas conversas.", "inLanguage": "pt-BR", "url": "https://omnizap.shop/como-organizar-comunidade-whatsapp/", "isPartOf": { "@type": "WebSite", "name": "OmniZap System", "url": "https://omnizap.shop" } }
|
|
28
|
+
</script>
|
|
29
|
+
<script type="application/ld+json">
|
|
30
|
+
{
|
|
31
|
+
"@context": "https://schema.org",
|
|
32
|
+
"@type": "FAQPage",
|
|
33
|
+
"mainEntity": [
|
|
34
|
+
{ "@type": "Question", "name": "Esse modelo serve para comunidades pequenas?", "acceptedAnswer": { "@type": "Answer", "text": "Sim. Quanto antes automatizar, mais facil manter padrao quando a comunidade crescer." } },
|
|
35
|
+
{ "@type": "Question", "name": "Posso usar o bot em comunidade e grupos ao mesmo tempo?", "acceptedAnswer": { "@type": "Answer", "text": "Sim. O bot pode apoiar diferentes contextos de operacao no WhatsApp." } },
|
|
36
|
+
{ "@type": "Question", "name": "Onde encontro os recursos extras do ecossistema?", "acceptedAnswer": { "@type": "Answer", "text": "Voce pode explorar stickers e recursos complementares em /stickers/." } }
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
<style>
|
|
42
|
+
:root {
|
|
43
|
+
--bg: #0f172a;
|
|
44
|
+
--bg-2: #111827;
|
|
45
|
+
--line: rgba(255, 255, 255, 0.05);
|
|
46
|
+
--text: #f8fafc;
|
|
47
|
+
--muted: #94a3b8;
|
|
48
|
+
--card: #1e293bd9;
|
|
49
|
+
--accent: #2563eb;
|
|
50
|
+
--accent-2: #7c3aed;
|
|
51
|
+
--cta: #22c55e;
|
|
52
|
+
--cta-hover: #16a34a;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
* {
|
|
56
|
+
box-sizing: border-box;
|
|
57
|
+
}
|
|
58
|
+
body {
|
|
59
|
+
margin: 0;
|
|
60
|
+
font-family:
|
|
61
|
+
'Manrope',
|
|
62
|
+
system-ui,
|
|
63
|
+
-apple-system,
|
|
64
|
+
sans-serif;
|
|
65
|
+
color: var(--text);
|
|
66
|
+
background: radial-gradient(58rem 22rem at -10% -8%, #2563eb24, transparent 60%), radial-gradient(62rem 26rem at 112% -12%, #7c3aed22, transparent 58%), linear-gradient(165deg, var(--bg), var(--bg-2));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.wrap {
|
|
70
|
+
width: min(980px, 92vw);
|
|
71
|
+
margin: 0 auto;
|
|
72
|
+
padding: 22px 0 42px;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.top {
|
|
76
|
+
display: flex;
|
|
77
|
+
flex-wrap: wrap;
|
|
78
|
+
gap: 8px;
|
|
79
|
+
margin-bottom: 14px;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.top a {
|
|
83
|
+
color: var(--text);
|
|
84
|
+
text-decoration: none;
|
|
85
|
+
border: 1px solid var(--line);
|
|
86
|
+
border-radius: 10px;
|
|
87
|
+
padding: 8px 11px;
|
|
88
|
+
background: #111827;
|
|
89
|
+
font-size: 14px;
|
|
90
|
+
font-weight: 700;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.hero,
|
|
94
|
+
.card {
|
|
95
|
+
border: 1px solid rgba(255, 255, 255, 0.05);
|
|
96
|
+
border-radius: 16px;
|
|
97
|
+
background: var(--card);
|
|
98
|
+
padding: 16px;
|
|
99
|
+
margin-bottom: 12px;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.pill {
|
|
103
|
+
display: inline-flex;
|
|
104
|
+
border: 1px solid #45689f;
|
|
105
|
+
border-radius: 999px;
|
|
106
|
+
padding: 5px 10px;
|
|
107
|
+
font-size: 12px;
|
|
108
|
+
font-weight: 800;
|
|
109
|
+
text-transform: uppercase;
|
|
110
|
+
letter-spacing: 0.3px;
|
|
111
|
+
color: #cde4ff;
|
|
112
|
+
background: #16274a96;
|
|
113
|
+
margin-bottom: 10px;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
h1,
|
|
117
|
+
h2 {
|
|
118
|
+
margin: 0 0 8px;
|
|
119
|
+
font-family: 'Sora', 'Manrope', sans-serif;
|
|
120
|
+
letter-spacing: -0.02em;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
h1 {
|
|
124
|
+
font-size: clamp(29px, 4vw, 42px);
|
|
125
|
+
line-height: 1.08;
|
|
126
|
+
background: linear-gradient(92deg, #f3f8ff 0%, #60a5fa 45%, #a78bfa 100%);
|
|
127
|
+
-webkit-background-clip: text;
|
|
128
|
+
background-clip: text;
|
|
129
|
+
color: transparent;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
h2 {
|
|
133
|
+
font-size: clamp(22px, 2.8vw, 30px);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
p,
|
|
137
|
+
li {
|
|
138
|
+
margin: 0 0 10px;
|
|
139
|
+
color: var(--muted);
|
|
140
|
+
line-height: 1.65;
|
|
141
|
+
font-size: 16px;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
ul {
|
|
145
|
+
margin: 0;
|
|
146
|
+
padding-left: 18px;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.cta {
|
|
150
|
+
display: flex;
|
|
151
|
+
flex-wrap: wrap;
|
|
152
|
+
gap: 8px;
|
|
153
|
+
margin-top: 12px;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.btn {
|
|
157
|
+
text-decoration: none;
|
|
158
|
+
border: 1px solid rgba(255, 255, 255, 0.05);
|
|
159
|
+
border-radius: 11px;
|
|
160
|
+
padding: 10px 13px;
|
|
161
|
+
color: var(--text);
|
|
162
|
+
background: #111827;
|
|
163
|
+
font-weight: 800;
|
|
164
|
+
font-size: 14px;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.btn.primary {
|
|
168
|
+
border-color: transparent;
|
|
169
|
+
color: #0f172a;
|
|
170
|
+
background: var(--cta);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.btn.primary:hover {
|
|
174
|
+
background: var(--cta-hover);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.faq-list {
|
|
178
|
+
display: grid;
|
|
179
|
+
gap: 9px;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.faq-item {
|
|
183
|
+
border: 1px solid rgba(255, 255, 255, 0.05);
|
|
184
|
+
border-radius: 12px;
|
|
185
|
+
background: #1e293bb8;
|
|
186
|
+
padding: 0 12px;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.faq-item summary {
|
|
190
|
+
cursor: pointer;
|
|
191
|
+
list-style: none;
|
|
192
|
+
font-weight: 800;
|
|
193
|
+
color: #ebf4ff;
|
|
194
|
+
padding: 12px 0;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.faq-item summary::-webkit-details-marker {
|
|
198
|
+
display: none;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.faq-item p {
|
|
202
|
+
margin: 0;
|
|
203
|
+
padding: 0 0 12px;
|
|
204
|
+
font-size: 15px;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
.links-grid {
|
|
208
|
+
display: grid;
|
|
209
|
+
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
|
|
210
|
+
gap: 8px;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.links-grid a {
|
|
214
|
+
text-decoration: none;
|
|
215
|
+
color: #dbecff;
|
|
216
|
+
border: 1px solid #365686;
|
|
217
|
+
border-radius: 10px;
|
|
218
|
+
padding: 9px 10px;
|
|
219
|
+
background: #10203d;
|
|
220
|
+
font-weight: 700;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.meta {
|
|
224
|
+
margin-top: 8px;
|
|
225
|
+
font-size: 13px;
|
|
226
|
+
color: #95b2d8;
|
|
227
|
+
}
|
|
228
|
+
</style>
|
|
229
|
+
</head>
|
|
230
|
+
<body>
|
|
231
|
+
<main class="wrap">
|
|
232
|
+
<nav class="top" aria-label="Navegação interna">
|
|
233
|
+
<a href="/">Início</a>
|
|
234
|
+
<a href="/stickers/">Stickers</a>
|
|
235
|
+
<a href="/api-docs/">API Docs</a>
|
|
236
|
+
<a href="/login/">Adicionar Bot</a>
|
|
237
|
+
</nav>
|
|
238
|
+
|
|
239
|
+
<header class="hero">
|
|
240
|
+
<span class="pill">Guia de organizacao</span>
|
|
241
|
+
<h1>Como organizar comunidade no WhatsApp de forma pratica</h1>
|
|
242
|
+
<p>Comunidade forte precisa de rotina. Quando a operacao depende so de humanos, a comunicacao fica inconsistente. A automacao ajuda a manter padrao e previsibilidade.</p>
|
|
243
|
+
<div class="cta">
|
|
244
|
+
<a class="btn primary" href="/login/">Adicionar ao meu grupo</a>
|
|
245
|
+
<a class="btn" href="/">Conhecer OmniZap</a>
|
|
246
|
+
</div>
|
|
247
|
+
<p class="meta">Página atualizada em 2026-02-28</p>
|
|
248
|
+
</header>
|
|
249
|
+
|
|
250
|
+
<section class="card">
|
|
251
|
+
<h2>Estrutura minima para comunidade</h2>
|
|
252
|
+
<p>Toda comunidade precisa de boas-vindas, regras visiveis e canal de avisos.</p>
|
|
253
|
+
<p>Com bot pronto, essa estrutura roda de forma continua, mesmo com alto volume de mensagens.</p>
|
|
254
|
+
</section>
|
|
255
|
+
|
|
256
|
+
<section class="card">
|
|
257
|
+
<h2>Automacao que melhora experiencia</h2>
|
|
258
|
+
<p>Ajuste respostas para perguntas recorrentes e reduza friccao de suporte.</p>
|
|
259
|
+
<p>Use lembretes automaticos para horarios, eventos e combinados da comunidade.</p>
|
|
260
|
+
<ul>
|
|
261
|
+
<li>Menos ruido</li>
|
|
262
|
+
<li>Mais clareza</li>
|
|
263
|
+
<li>Tempo da equipe preservado</li>
|
|
264
|
+
</ul>
|
|
265
|
+
</section>
|
|
266
|
+
|
|
267
|
+
<section class="card">
|
|
268
|
+
<h2>Escala sem perder qualidade</h2>
|
|
269
|
+
<p>Quando os processos basicos estao automatizados, a comunidade cresce com menos caos.</p>
|
|
270
|
+
<p>Isso permite que admins foquem em conteudo, relacionamento e crescimento.</p>
|
|
271
|
+
</section>
|
|
272
|
+
|
|
273
|
+
<section class="card">
|
|
274
|
+
<h2>Perguntas frequentes</h2>
|
|
275
|
+
<div class="faq-list">
|
|
276
|
+
<details class="faq-item">
|
|
277
|
+
<summary>Esse modelo serve para comunidades pequenas?</summary>
|
|
278
|
+
<p>Sim. Quanto antes automatizar, mais facil manter padrao quando a comunidade crescer.</p>
|
|
279
|
+
</details>
|
|
280
|
+
<details class="faq-item">
|
|
281
|
+
<summary>Posso usar o bot em comunidade e grupos ao mesmo tempo?</summary>
|
|
282
|
+
<p>Sim. O bot pode apoiar diferentes contextos de operacao no WhatsApp.</p>
|
|
283
|
+
</details>
|
|
284
|
+
<details class="faq-item">
|
|
285
|
+
<summary>Onde encontro os recursos extras do ecossistema?</summary>
|
|
286
|
+
<p>Voce pode explorar stickers e recursos complementares em /stickers/.</p>
|
|
287
|
+
</details>
|
|
288
|
+
</div>
|
|
289
|
+
</section>
|
|
290
|
+
|
|
291
|
+
<section class="card">
|
|
292
|
+
<h2>Links úteis</h2>
|
|
293
|
+
<div class="links-grid">
|
|
294
|
+
<a href="/">OmniZap Home</a>
|
|
295
|
+
<a href="/stickers/">Catálogo de Stickers</a>
|
|
296
|
+
<a href="/comandos/">Biblioteca de Comandos</a>
|
|
297
|
+
<a href="/api-docs/">Área de Desenvolvedor</a>
|
|
298
|
+
<a href="/login/">Adicionar bot agora</a>
|
|
299
|
+
<a href="/como-automatizar-avisos-no-whatsapp/">Automatizar avisos no WhatsApp</a>
|
|
300
|
+
<a href="/como-moderar-grupo-whatsapp/">Moderacao de grupos</a>
|
|
301
|
+
<a href="/bot-whatsapp-para-grupo/">Bot para grupo</a>
|
|
302
|
+
</div>
|
|
303
|
+
</section>
|
|
304
|
+
</main>
|
|
305
|
+
</body>
|
|
306
|
+
</html>
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
:root {
|
|
2
|
-
--gh-bg: rgba(
|
|
3
|
-
--gh-card: rgba(
|
|
4
|
-
--gh-border:
|
|
5
|
-
--gh-border-hover: #
|
|
6
|
-
--gh-text: #
|
|
7
|
-
--gh-muted: #
|
|
8
|
-
--gh-accent: #
|
|
2
|
+
--gh-bg: rgba(15, 23, 42, 0.9);
|
|
3
|
+
--gh-card: rgba(30, 41, 59, 0.86);
|
|
4
|
+
--gh-border: rgba(255, 255, 255, 0.05);
|
|
5
|
+
--gh-border-hover: #2563eb;
|
|
6
|
+
--gh-text: #f8fafc;
|
|
7
|
+
--gh-muted: #94a3b8;
|
|
8
|
+
--gh-accent: #2563eb;
|
|
9
9
|
--gh-accent-2: #22c55e;
|
|
10
10
|
}
|
|
11
11
|
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
|
|
26
26
|
.ghp-title {
|
|
27
27
|
margin: 0 0 2px;
|
|
28
|
-
font-family:
|
|
28
|
+
font-family: 'Sora', sans-serif;
|
|
29
29
|
font-size: 24px;
|
|
30
30
|
}
|
|
31
31
|
|
|
@@ -109,11 +109,12 @@
|
|
|
109
109
|
align-content: start;
|
|
110
110
|
border: 1px solid var(--gh-border);
|
|
111
111
|
border-radius: 14px;
|
|
112
|
-
background:
|
|
113
|
-
radial-gradient(120% 120% at 0% 0%, #38bdf816, transparent 60%),
|
|
114
|
-
linear-gradient(160deg, var(--gh-card), #101a31);
|
|
112
|
+
background: radial-gradient(120% 120% at 0% 0%, #7c3aed16, transparent 60%), linear-gradient(160deg, var(--gh-card), #101a31);
|
|
115
113
|
padding: 14px;
|
|
116
|
-
transition:
|
|
114
|
+
transition:
|
|
115
|
+
border-color 0.2s ease,
|
|
116
|
+
transform 0.2s ease,
|
|
117
|
+
box-shadow 0.2s ease;
|
|
117
118
|
}
|
|
118
119
|
|
|
119
120
|
.ghp-stat-card:hover {
|
|
@@ -137,7 +138,7 @@
|
|
|
137
138
|
color: var(--gh-muted);
|
|
138
139
|
font-size: 12px;
|
|
139
140
|
text-transform: uppercase;
|
|
140
|
-
letter-spacing: .35px;
|
|
141
|
+
letter-spacing: 0.35px;
|
|
141
142
|
}
|
|
142
143
|
|
|
143
144
|
.ghp-stat-value {
|
|
@@ -273,8 +274,12 @@
|
|
|
273
274
|
}
|
|
274
275
|
|
|
275
276
|
@keyframes ghp-shimmer {
|
|
276
|
-
0% {
|
|
277
|
-
|
|
277
|
+
0% {
|
|
278
|
+
background-position: 100% 0;
|
|
279
|
+
}
|
|
280
|
+
100% {
|
|
281
|
+
background-position: -100% 0;
|
|
282
|
+
}
|
|
278
283
|
}
|
|
279
284
|
|
|
280
285
|
.ghp-repo-link:focus-visible,
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
:root {
|
|
2
|
-
--bg: #
|
|
3
|
-
--bg-soft: #
|
|
4
|
-
--card: #
|
|
5
|
-
--card-soft: #
|
|
2
|
+
--bg: #0f172a;
|
|
3
|
+
--bg-soft: #111827;
|
|
4
|
+
--card: #1e293b;
|
|
5
|
+
--card-soft: #111827;
|
|
6
6
|
--line: rgba(255, 255, 255, 0.05);
|
|
7
7
|
--line-strong: rgba(255, 255, 255, 0.12);
|
|
8
|
-
--accent: #
|
|
9
|
-
--accent-soft: rgba(
|
|
8
|
+
--accent: #2563eb;
|
|
9
|
+
--accent-soft: rgba(37, 99, 235, 0.14);
|
|
10
10
|
--danger: #f43f5e;
|
|
11
11
|
--danger-soft: rgba(244, 63, 94, 0.14);
|
|
12
12
|
--warning: #f59e0b;
|
|
13
13
|
--warning-soft: rgba(245, 158, 11, 0.12);
|
|
14
|
-
--text: #
|
|
14
|
+
--text: #f8fafc;
|
|
15
15
|
--text-soft: #94a3b8;
|
|
16
16
|
--text-muted: #64748b;
|
|
17
17
|
--radius-sm: 10px;
|
|
@@ -33,11 +33,14 @@ body {
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
body {
|
|
36
|
-
font-family:
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
font-family:
|
|
37
|
+
'Manrope',
|
|
38
|
+
ui-sans-serif,
|
|
39
|
+
system-ui,
|
|
40
|
+
-apple-system,
|
|
41
|
+
'Segoe UI',
|
|
42
|
+
sans-serif;
|
|
43
|
+
background: radial-gradient(1300px 660px at 12% -12%, rgba(37, 99, 235, 0.14), transparent 52%), radial-gradient(900px 500px at 92% -18%, rgba(59, 130, 246, 0.1), transparent 55%), var(--bg);
|
|
41
44
|
color: var(--text);
|
|
42
45
|
line-height: 1.4;
|
|
43
46
|
}
|
|
@@ -47,7 +50,7 @@ a {
|
|
|
47
50
|
}
|
|
48
51
|
|
|
49
52
|
a:hover {
|
|
50
|
-
color: #
|
|
53
|
+
color: #7c3aed;
|
|
51
54
|
}
|
|
52
55
|
|
|
53
56
|
button,
|
|
@@ -61,13 +64,13 @@ button,
|
|
|
61
64
|
input,
|
|
62
65
|
textarea,
|
|
63
66
|
a {
|
|
64
|
-
-webkit-tap-highlight-color: rgba(
|
|
67
|
+
-webkit-tap-highlight-color: rgba(37, 99, 235, 0.16);
|
|
65
68
|
}
|
|
66
69
|
|
|
67
70
|
button:focus-visible,
|
|
68
71
|
input:focus-visible,
|
|
69
72
|
a:focus-visible {
|
|
70
|
-
outline: 2px solid rgba(
|
|
73
|
+
outline: 2px solid rgba(37, 99, 235, 0.62);
|
|
71
74
|
outline-offset: 2px;
|
|
72
75
|
}
|
|
73
76
|
|
|
@@ -110,7 +113,7 @@ a:focus-visible {
|
|
|
110
113
|
height: 10px;
|
|
111
114
|
border-radius: 999px;
|
|
112
115
|
background: var(--accent);
|
|
113
|
-
box-shadow: 0 0 0 5px rgba(
|
|
116
|
+
box-shadow: 0 0 0 5px rgba(37, 99, 235, 0.16);
|
|
114
117
|
}
|
|
115
118
|
|
|
116
119
|
.brand-title {
|
|
@@ -187,18 +190,22 @@ a:focus-visible {
|
|
|
187
190
|
font-weight: 700;
|
|
188
191
|
text-align: left;
|
|
189
192
|
cursor: pointer;
|
|
190
|
-
transition:
|
|
193
|
+
transition:
|
|
194
|
+
border-color var(--transition),
|
|
195
|
+
color var(--transition),
|
|
196
|
+
background-color var(--transition),
|
|
197
|
+
transform var(--transition);
|
|
191
198
|
}
|
|
192
199
|
|
|
193
200
|
.nav-item:hover {
|
|
194
|
-
border-color: rgba(
|
|
201
|
+
border-color: rgba(37, 99, 235, 0.28);
|
|
195
202
|
color: var(--text);
|
|
196
203
|
}
|
|
197
204
|
|
|
198
205
|
.nav-item.active {
|
|
199
|
-
border-color: rgba(
|
|
200
|
-
color: #
|
|
201
|
-
background: rgba(
|
|
206
|
+
border-color: rgba(37, 99, 235, 0.5);
|
|
207
|
+
color: #dbeafe;
|
|
208
|
+
background: rgba(37, 99, 235, 0.18);
|
|
202
209
|
}
|
|
203
210
|
|
|
204
211
|
.nav-count {
|
|
@@ -242,7 +249,10 @@ a:focus-visible {
|
|
|
242
249
|
box-shadow: var(--shadow-1);
|
|
243
250
|
padding: 14px;
|
|
244
251
|
min-width: 0;
|
|
245
|
-
transition:
|
|
252
|
+
transition:
|
|
253
|
+
transform var(--transition),
|
|
254
|
+
border-color var(--transition),
|
|
255
|
+
background-color var(--transition);
|
|
246
256
|
}
|
|
247
257
|
|
|
248
258
|
.metric-card:hover {
|
|
@@ -281,7 +291,7 @@ a:focus-visible {
|
|
|
281
291
|
}
|
|
282
292
|
|
|
283
293
|
.trend-up {
|
|
284
|
-
color: #
|
|
294
|
+
color: #2563eb;
|
|
285
295
|
}
|
|
286
296
|
|
|
287
297
|
.trend-down {
|
|
@@ -301,7 +311,7 @@ a:focus-visible {
|
|
|
301
311
|
.sparkbar {
|
|
302
312
|
width: 5px;
|
|
303
313
|
border-radius: 999px;
|
|
304
|
-
background: linear-gradient(180deg, #
|
|
314
|
+
background: linear-gradient(180deg, #60a5fa, #6d28d9);
|
|
305
315
|
opacity: 0.92;
|
|
306
316
|
}
|
|
307
317
|
|
|
@@ -348,7 +358,10 @@ a:focus-visible {
|
|
|
348
358
|
font-weight: 700;
|
|
349
359
|
white-space: nowrap;
|
|
350
360
|
cursor: pointer;
|
|
351
|
-
transition:
|
|
361
|
+
transition:
|
|
362
|
+
background-color var(--transition),
|
|
363
|
+
border-color var(--transition),
|
|
364
|
+
color var(--transition);
|
|
352
365
|
}
|
|
353
366
|
|
|
354
367
|
.tab-btn:hover {
|
|
@@ -357,8 +370,8 @@ a:focus-visible {
|
|
|
357
370
|
}
|
|
358
371
|
|
|
359
372
|
.tab-btn.active {
|
|
360
|
-
border-color: rgba(
|
|
361
|
-
background: rgba(
|
|
373
|
+
border-color: rgba(37, 99, 235, 0.46);
|
|
374
|
+
background: rgba(37, 99, 235, 0.16);
|
|
362
375
|
color: #dcfffa;
|
|
363
376
|
}
|
|
364
377
|
|
|
@@ -436,7 +449,10 @@ a:focus-visible {
|
|
|
436
449
|
background: rgba(15, 23, 42, 0.88);
|
|
437
450
|
color: var(--text);
|
|
438
451
|
padding: 0 12px;
|
|
439
|
-
transition:
|
|
452
|
+
transition:
|
|
453
|
+
border-color var(--transition),
|
|
454
|
+
background-color var(--transition),
|
|
455
|
+
box-shadow var(--transition);
|
|
440
456
|
}
|
|
441
457
|
|
|
442
458
|
.search-input::placeholder {
|
|
@@ -448,8 +464,8 @@ a:focus-visible {
|
|
|
448
464
|
}
|
|
449
465
|
|
|
450
466
|
.search-input:focus-visible {
|
|
451
|
-
border-color: rgba(
|
|
452
|
-
box-shadow: 0 0 0 3px rgba(
|
|
467
|
+
border-color: rgba(37, 99, 235, 0.64);
|
|
468
|
+
box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.14);
|
|
453
469
|
}
|
|
454
470
|
|
|
455
471
|
.primary-btn,
|
|
@@ -487,7 +503,7 @@ a:focus-visible {
|
|
|
487
503
|
}
|
|
488
504
|
|
|
489
505
|
.primary-btn:hover:not(:disabled) {
|
|
490
|
-
background: #
|
|
506
|
+
background: #2563eb;
|
|
491
507
|
transform: translateY(-1px);
|
|
492
508
|
}
|
|
493
509
|
|
|
@@ -694,9 +710,9 @@ a[aria-disabled='true'] {
|
|
|
694
710
|
}
|
|
695
711
|
|
|
696
712
|
.status-success {
|
|
697
|
-
border-color: rgba(
|
|
698
|
-
background: rgba(
|
|
699
|
-
color: #
|
|
713
|
+
border-color: rgba(37, 99, 235, 0.36);
|
|
714
|
+
background: rgba(37, 99, 235, 0.14);
|
|
715
|
+
color: #c4b5fd;
|
|
700
716
|
}
|
|
701
717
|
|
|
702
718
|
.status-danger {
|
|
@@ -874,7 +890,7 @@ a[aria-disabled='true'] {
|
|
|
874
890
|
.progress-bar {
|
|
875
891
|
display: block;
|
|
876
892
|
height: 100%;
|
|
877
|
-
background: linear-gradient(90deg, #
|
|
893
|
+
background: linear-gradient(90deg, #2563eb, #7c3aed);
|
|
878
894
|
}
|
|
879
895
|
|
|
880
896
|
.progress-meta {
|
|
@@ -944,8 +960,8 @@ a[aria-disabled='true'] {
|
|
|
944
960
|
|
|
945
961
|
.account-box {
|
|
946
962
|
border-radius: 12px;
|
|
947
|
-
border: 1px solid rgba(
|
|
948
|
-
background: rgba(
|
|
963
|
+
border: 1px solid rgba(37, 99, 235, 0.32);
|
|
964
|
+
background: rgba(37, 99, 235, 0.1);
|
|
949
965
|
padding: 10px;
|
|
950
966
|
}
|
|
951
967
|
|
|
@@ -1047,9 +1063,9 @@ a[aria-disabled='true'] {
|
|
|
1047
1063
|
}
|
|
1048
1064
|
|
|
1049
1065
|
.toast.success {
|
|
1050
|
-
border-color: rgba(
|
|
1066
|
+
border-color: rgba(37, 99, 235, 0.42);
|
|
1051
1067
|
color: #bff8f1;
|
|
1052
|
-
background: rgba(
|
|
1068
|
+
background: rgba(37, 99, 235, 0.16);
|
|
1053
1069
|
}
|
|
1054
1070
|
|
|
1055
1071
|
.toast.danger {
|