logos-bancos-br 0.2.0 → 0.4.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.en.md +55 -37
- package/README.md +92 -54
- package/data/bancos.json +1924 -2
- package/data/instituicoes-pix.json +14126 -0
- package/dist/{chunk-6ZLP4OY5.js → chunk-2FWFDAAY.js} +13 -6
- package/dist/chunk-5XY3KHJ7.cjs +21559 -0
- package/dist/chunk-657XZKD5.js +21554 -0
- package/dist/{chunk-7QU5WW5A.cjs → chunk-M5BUFK4X.cjs} +17 -10
- package/dist/cli.cjs +52 -14
- package/dist/cli.js +49 -11
- package/dist/index.cjs +6 -2
- package/dist/index.d.cts +59 -8
- package/dist/index.d.ts +59 -8
- package/dist/index.js +5 -1
- package/dist/node.cjs +3 -3
- package/dist/node.d.cts +5 -3
- package/dist/node.d.ts +5 -3
- package/dist/node.js +2 -2
- package/llms.txt +21 -13
- package/logos/png/01722480.png +0 -0
- package/logos/png/03130170.png +0 -0
- package/logos/png/03795072.png +0 -0
- package/logos/png/04891850.png +0 -0
- package/logos/png/11275560.png +0 -0
- package/logos/png/32345784.png +0 -0
- package/logos/png/38372267.png +0 -0
- package/logos/png/60779196.png +0 -0
- package/logos/svg/01722480.svg +1 -0
- package/logos/svg/03130170.svg +28 -0
- package/logos/svg/03795072.svg +24 -0
- package/logos/svg/04891850.svg +5 -0
- package/logos/svg/07237373.svg +17 -1
- package/logos/svg/11275560.svg +1 -0
- package/logos/svg/32345784.svg +3 -0
- package/logos/svg/38372267.svg +16 -0
- package/logos/svg/60779196.svg +4 -0
- package/package.json +9 -3
- package/react-native.js +324 -1
- package/dist/chunk-43N2EZJR.cjs +0 -5497
- package/dist/chunk-RKLZTMIS.js +0 -5492
package/README.en.md
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
# logos-bancos-br
|
|
2
2
|
|
|
3
|
-
> **
|
|
4
|
-
>
|
|
5
|
-
>
|
|
3
|
+
> **Dataset + logos of Brazil's financial and payment institutions** — banks, fintechs, payment
|
|
4
|
+
> institutions and credit unions — **always up to date**. Everything is derived from three named
|
|
5
|
+
> official sources: the **STR participants list** and the **active Pix participants list**, both
|
|
6
|
+
> from the **Central Bank of Brazil (BCB)**, plus the **Open Finance Brasil participants
|
|
7
|
+
> directory**. Rebuilt automatically every week by CI, with verifiable per-logo provenance.
|
|
6
8
|
> **[Versão em português](README.md)**
|
|
7
9
|
|
|
8
10
|
[](https://github.com/rzmt/logos-bancos-br/actions/workflows/ci.yml)
|
|
@@ -28,15 +30,18 @@
|
|
|
28
30
|
|
|
29
31
|
## What this package gives you
|
|
30
32
|
|
|
31
|
-
1. **The list of institutions — auto-updated
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
**
|
|
39
|
-
|
|
33
|
+
1. **The list of institutions — auto-updated, in two sets.** The **main list**
|
|
34
|
+
([`data/bancos.json`](data/bancos.json)) carries the **470 institutions with a COMPE code**
|
|
35
|
+
from the Central Bank STR participants list. The **643 Pix-only institutions** (fintechs,
|
|
36
|
+
payment institutions, cooperative affiliates — no COMPE) live in a separate dataset
|
|
37
|
+
([`data/instituicoes-pix.json`](data/instituicoes-pix.json)) — the main list stays clean,
|
|
38
|
+
and the full Pix universe is one import away.
|
|
39
|
+
2. **Official logos, deduplicated.** **473 institutions with a logo** backed by **160 distinct
|
|
40
|
+
files** (~1.7 MB): affiliates of single-brand cooperative systems (Sicoob, Sicredi, Cresol,
|
|
41
|
+
Unicred) **share one file per system**, marked `logo.source.type: "brand"`. Own logos come
|
|
42
|
+
from the public **Open Finance Brasil** directory (`openfinance`) or the **institution's own
|
|
43
|
+
official website** (`direct-uri`, visually curated). Every file carries provenance: source
|
|
44
|
+
URI, SHA-256 and date.
|
|
40
45
|
3. **Automatic updates, no manual curation.** Every Monday a GitHub Action
|
|
41
46
|
([`update-logos.yml`](.github/workflows/update-logos.yml)) rebuilds **both the list AND the
|
|
42
47
|
logos** from the sources and opens a PR with the visual diff. A bank created, renamed or
|
|
@@ -45,15 +50,15 @@
|
|
|
45
50
|
copies the assets into Flutter/Kotlin/Swift/.NET/PHP projects, CDN URLs with no install — or
|
|
46
51
|
just the JSON.
|
|
47
52
|
|
|
48
|
-
## Why
|
|
53
|
+
## Why official sources?
|
|
49
54
|
|
|
50
|
-
|
|
51
|
-
and banks redesign their brands. Existing libraries ship either **data only** (no
|
|
52
|
-
logos **
|
|
55
|
+
Hand-maintained lists rot: the Central Bank adds, renames and removes institutions throughout
|
|
56
|
+
the year, and banks redesign their brands. Existing libraries ship either **data only** (no
|
|
57
|
+
logos) or logos **collected from assorted websites** with no traceability. The approach here:
|
|
53
58
|
|
|
54
|
-
- **Official sources, and only them** — the STR participants
|
|
55
|
-
Bank itself), the Open Finance Brasil participants directory and, for non-participants,
|
|
56
|
-
icon the institution publishes **on its own official website** (hand-reviewed). No images
|
|
59
|
+
- **Official sources, and only them** — the STR and Pix participants CSVs (updated daily by the
|
|
60
|
+
Central Bank itself), the Open Finance Brasil participants directory and, for non-participants,
|
|
61
|
+
the icon the institution publishes **on its own official website** (hand-reviewed). No images
|
|
57
62
|
"found on Google" or from aggregators. Open Finance purists can filter:
|
|
58
63
|
`banks().filter(b => b.logo?.source.type === 'openfinance')`.
|
|
59
64
|
- **Per-logo provenance** — `data/bancos.json` records each logo's source URI, SHA-256 of the
|
|
@@ -63,10 +68,10 @@ logos **hand-collected** from assorted websites with no traceability. The approa
|
|
|
63
68
|
In a banking context, a wrong logo is worse than no logo.
|
|
64
69
|
- **Safe assets** — https-only downloads with size/pixel caps; SVGs redistributed only after
|
|
65
70
|
sanitization (no scripts, event handlers, `foreignObject` or external references).
|
|
66
|
-
- **Honest trade-off** —
|
|
67
|
-
|
|
68
|
-
in Brazil). The rest are small
|
|
69
|
-
coverage grows every release.
|
|
71
|
+
- **Honest trade-off** — 473 of the 1,113 institutions have a logo (Open Finance participants,
|
|
72
|
+
cooperative-system affiliates and ~45 institutions covered via official sites — the vast
|
|
73
|
+
majority of accounts in Brazil). The rest are small SCDs/brokers/payment institutions — your
|
|
74
|
+
app picks the fallback, and coverage grows every release.
|
|
70
75
|
|
|
71
76
|
## Install & use
|
|
72
77
|
|
|
@@ -78,7 +83,10 @@ Requires **Node ≥ 20** for Node/CLI usage (web and React Native follow your bu
|
|
|
78
83
|
environment). Zero runtime dependencies. Published with **npm provenance** — verify integrity
|
|
79
84
|
with `npm audit signatures`.
|
|
80
85
|
|
|
81
|
-
Files are named by **ISPB** (8 digits).
|
|
86
|
+
Files are named by **ISPB** (8 digits). `banks()` is the main list (COMPE holders);
|
|
87
|
+
`pixInstitutions()` is the separate Pix-only set; `allInstitutions()` is both; `byIspb()`
|
|
88
|
+
resolves across the two. Each institution carries a `pix` block (participation attributes,
|
|
89
|
+
verbatim from the BCB list) or `null`.
|
|
82
90
|
|
|
83
91
|
```ts
|
|
84
92
|
import { banks, byCompe, byIspb, logoCdnUrl } from 'logos-bancos-br';
|
|
@@ -88,8 +96,9 @@ byIspb('00000000'); // Banco do Brasil
|
|
|
88
96
|
logoCdnUrl(341); // https://cdn.jsdelivr.net/npm/logos-bancos-br@x.y.z/logos/png/60701190.png
|
|
89
97
|
```
|
|
90
98
|
|
|
91
|
-
**React Native (Expo/Metro)** — static require() map (bundles
|
|
92
|
-
|
|
99
|
+
**React Native (Expo/Metro)** — static require() map (bundles the 160 distinct logos, ~1.7 MB; keys accept both
|
|
100
|
+
the 4-digit COMPE and the 8-digit ISPB — Pix-only institutions by ISPB only; affiliates point at
|
|
101
|
+
the shared system asset):
|
|
93
102
|
|
|
94
103
|
```tsx
|
|
95
104
|
import logos from 'logos-bancos-br/react-native';
|
|
@@ -113,23 +122,26 @@ npx logos-bancos-br list
|
|
|
113
122
|
**CDN, no install** (always pin a version):
|
|
114
123
|
|
|
115
124
|
```
|
|
116
|
-
https://cdn.jsdelivr.net/npm/logos-bancos-br@0.
|
|
125
|
+
https://cdn.jsdelivr.net/npm/logos-bancos-br@0.3.0/logos/png/60701190.png
|
|
117
126
|
```
|
|
118
127
|
|
|
119
|
-
**Data only
|
|
128
|
+
**Data only**:
|
|
120
129
|
|
|
121
130
|
```ts
|
|
122
|
-
import
|
|
131
|
+
import banks from 'logos-bancos-br/data/bancos.json'; // main list (COMPE)
|
|
132
|
+
import pixOnly from 'logos-bancos-br/data/instituicoes-pix.json'; // Pix-only
|
|
123
133
|
```
|
|
124
134
|
|
|
125
135
|
### API quick reference
|
|
126
136
|
|
|
127
137
|
| Import | Function | Returns |
|
|
128
138
|
|---|---|---|
|
|
129
|
-
| `logos-bancos-br` | `banks()` |
|
|
139
|
+
| `logos-bancos-br` | `banks()` | main list — COMPE institutions (`Bank[]`) |
|
|
140
|
+
| | `pixInstitutions()` | Pix-only set (`PixInstitution[]`) |
|
|
141
|
+
| | `allInstitutions()` | both sets (`Institution[]`) |
|
|
130
142
|
| | `byCompe(code)` | `Bank \| undefined` — `341`, `'341'` and `'0341'` are equivalent |
|
|
131
|
-
| | `byIspb(ispb)` | `
|
|
132
|
-
| | `findBank(code)` | `
|
|
143
|
+
| | `byIspb(ispb)` | `Institution \| undefined` — resolves across both sets |
|
|
144
|
+
| | `findBank(code)` | `Institution \| undefined` — more than 4 digits is treated as ISPB |
|
|
133
145
|
| | `logoCdnUrl(code, { format?, version? })` | jsDelivr URL, or `null` when there is no logo |
|
|
134
146
|
| | `normalizeCompe(x)` · `normalizeIspb(x)` | `'0341'` · `'60701190'` |
|
|
135
147
|
| | `version` | package version (string) |
|
|
@@ -137,7 +149,7 @@ import data from 'logos-bancos-br/data/bancos.json';
|
|
|
137
149
|
| | `copyLogos({ dest, format?, by?, only? })` | copies assets into a directory (what the CLI uses) |
|
|
138
150
|
| `logos-bancos-br/react-native` | `logos` (default export) | require() map keyed by COMPE4 **and** ISPB |
|
|
139
151
|
|
|
140
|
-
Exported TypeScript types: `Bank`, `BankLogo`, `BankLogoSource`.
|
|
152
|
+
Exported TypeScript types: `Bank`, `PixInstitution`, `Institution`, `BankLogo`, `BankLogoSource`, `PixInfo`.
|
|
141
153
|
|
|
142
154
|
## Dataset shape
|
|
143
155
|
|
|
@@ -148,6 +160,7 @@ Exported TypeScript types: `Bank`, `BankLogo`, `BankLogoSource`.
|
|
|
148
160
|
"compe4": "0341",
|
|
149
161
|
"name": "Itaú Unibanco S.A.",
|
|
150
162
|
"shortName": "ITAÚ UNIBANCO S.A.",
|
|
163
|
+
"pix": { "spiParticipationType": "Direta", "pixParticipationType": "Obrigatória", "modality": "Provedor de Conta Transacional", "institutionType": "Banco Múltiplo", "authorizedByBcb": true },
|
|
151
164
|
"logo": {
|
|
152
165
|
"png": "logos/png/60701190.png",
|
|
153
166
|
"svg": "logos/svg/60701190.svg",
|
|
@@ -157,13 +170,18 @@ Exported TypeScript types: `Bank`, `BankLogo`, `BankLogoSource`.
|
|
|
157
170
|
```
|
|
158
171
|
|
|
159
172
|
`logo.png` is a normalized transparent 256×256 PNG; `logo.svg` is the original vector when safely
|
|
160
|
-
redistributable; `logo: null` means
|
|
173
|
+
redistributable; `logo: null` means no logo in the official sources; `logo.source.type: "brand"`
|
|
174
|
+
marks a logo inherited from the institution's cooperative system (shared asset, `brand` says
|
|
175
|
+
which); `pix: null` marks a non-Pix participant. Pix-only records (separate dataset) always have
|
|
176
|
+
`compe: null`, a 14-digit `cnpj` and a `pix` block.
|
|
161
177
|
|
|
162
178
|
## How the auto-update works
|
|
163
179
|
|
|
164
|
-
The pipeline
|
|
165
|
-
|
|
166
|
-
|
|
180
|
+
The pipeline unions the Central Bank's STR and active-Pix participants lists (which institutions
|
|
181
|
+
exist, keyed by ISPB) and joins them with the Open Finance directory (their logos), bridged by
|
|
182
|
+
`ISPB == first 8 digits of the CNPJ`; hand-reviewed `forcedMatches` cover second brands (XP
|
|
183
|
+
CCTVM, Nu Invest, Bradesco BBI…), and a curated brand rule gives cooperative-system affiliates
|
|
184
|
+
(Sicoob/Sicredi/Cresol/Unicred) their system's logo. For institutions outside Open Finance,
|
|
167
185
|
discovery tools (`npm run discover` / `discover:ai`) find the icon published on the institution's
|
|
168
186
|
official website — nothing ships without visual curation (brand + domain reviewed); approvals
|
|
169
187
|
become `forcedUris` (`source.type: "direct-uri"`). The weekly workflow regenerates
|
package/README.md
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
# logos-bancos-br
|
|
2
2
|
|
|
3
|
-
> **
|
|
4
|
-
>
|
|
5
|
-
>
|
|
3
|
+
> **Dataset + logos das instituições financeiras e de pagamento do Brasil** — bancos, fintechs,
|
|
4
|
+
> IPs e cooperativas — **sempre atualizados**. Tudo derivado de três fontes 100% oficiais e
|
|
5
|
+
> nomeadas: a **lista de participantes do STR** e a **lista de participantes ativos do Pix**,
|
|
6
|
+
> ambas do **Banco Central do Brasil**, e o **diretório de participantes do Open Finance
|
|
7
|
+
> Brasil**. Reconstruído automaticamente toda semana por CI, com proveniência verificável por
|
|
8
|
+
> logo. **[English version](README.en.md)**
|
|
6
9
|
|
|
7
10
|
[](https://github.com/rzmt/logos-bancos-br/actions/workflows/ci.yml)
|
|
8
11
|
[](https://github.com/rzmt/logos-bancos-br/actions/workflows/update-logos.yml)
|
|
@@ -27,15 +30,20 @@
|
|
|
27
30
|
|
|
28
31
|
## O que este pacote entrega
|
|
29
32
|
|
|
30
|
-
1. **A lista de instituições — atualizada automaticamente
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
1. **A lista de instituições — atualizada automaticamente, em dois conjuntos.** A **lista
|
|
34
|
+
principal** ([`data/bancos.json`](data/bancos.json)) traz as **470 instituições com código
|
|
35
|
+
COMPE** da lista de participantes do STR do Banco Central. As **643 instituições só-Pix**
|
|
36
|
+
(fintechs, IPs e cooperativas afiliadas, sem COMPE) ficam num conjunto separado
|
|
37
|
+
([`data/instituicoes-pix.json`](data/instituicoes-pix.json)) — a lista principal permanece
|
|
38
|
+
limpa e quem precisa do universo completo do Pix tem tudo. Ambos com nomes oficiais, ISPB,
|
|
39
|
+
CNPJ (só-Pix) e atributos de participação no Pix. Você nunca mais mantém uma lista de
|
|
40
|
+
instituições no seu projeto.
|
|
41
|
+
2. **Logos oficiais, sem duplicação.** **473 instituições com logo** usando **160 arquivos
|
|
42
|
+
distintos** (~1,7 MB): afiliadas de sistemas cooperativos de marca única (Sicoob, Sicredi,
|
|
43
|
+
Cresol, Unicred) **compartilham um único arquivo por sistema** e são marcadas com
|
|
44
|
+
`logo.source.type: "brand"`. Logos próprios vêm do diretório público do **Open Finance
|
|
45
|
+
Brasil** (`openfinance`) ou do **site oficial da instituição** (`direct-uri`, com curadoria
|
|
46
|
+
visual). Cada arquivo carrega proveniência: URI, SHA-256 e data.
|
|
39
47
|
3. **Atualização automática, sem curadoria manual.** Toda segunda-feira um GitHub Action
|
|
40
48
|
([`update-logos.yml`](.github/workflows/update-logos.yml)) reconstrói **a lista E os logos**
|
|
41
49
|
a partir das fontes e abre um PR com o diff visual. Banco criado, renomeado ou extinto pelo
|
|
@@ -44,17 +52,17 @@
|
|
|
44
52
|
copia os assets para projetos Flutter/Kotlin/Swift/.NET/PHP, URLs de CDN sem instalar nada —
|
|
45
53
|
ou só o JSON.
|
|
46
54
|
|
|
47
|
-
## Por que
|
|
55
|
+
## Por que fontes oficiais?
|
|
48
56
|
|
|
49
|
-
|
|
50
|
-
redesenham suas marcas. As bibliotecas existentes ou trazem **só dados** (sem
|
|
51
|
-
**coletados
|
|
57
|
+
Listas mantidas manualmente envelhecem: o BCB inclui, renomeia e exclui instituições ao longo do
|
|
58
|
+
ano, e os bancos redesenham suas marcas. As bibliotecas existentes ou trazem **só dados** (sem
|
|
59
|
+
logos), ou logos **coletados de sites variados**, sem rastreabilidade. A abordagem aqui:
|
|
52
60
|
|
|
53
|
-
- **Fontes oficiais, e apenas elas** —
|
|
54
|
-
diariamente), o diretório de participantes do Open Finance Brasil e, para quem não
|
|
55
|
-
Open Finance, o ícone que a própria instituição publica **no site oficial dela**
|
|
56
|
-
mão). Nenhuma imagem "achada no Google" ou de agregador. Quem quiser só a fonte
|
|
57
|
-
filtra: `banks().filter(b => b.logo?.source.type === 'openfinance')`.
|
|
61
|
+
- **Fontes oficiais, e apenas elas** — os CSVs de participantes do STR e do Pix (que o próprio
|
|
62
|
+
BCB atualiza diariamente), o diretório de participantes do Open Finance Brasil e, para quem não
|
|
63
|
+
participa do Open Finance, o ícone que a própria instituição publica **no site oficial dela**
|
|
64
|
+
(revisado à mão). Nenhuma imagem "achada no Google" ou de agregador. Quem quiser só a fonte
|
|
65
|
+
Open Finance filtra: `banks().filter(b => b.logo?.source.type === 'openfinance')`.
|
|
58
66
|
- **Proveniência por logo** — `data/bancos.json` registra a URI de origem, o SHA-256 do arquivo
|
|
59
67
|
original e a data de cada logo. O diff do git é a auditoria.
|
|
60
68
|
- **Correspondência segura** — match automático **somente por ISPB** (= raiz do CNPJ).
|
|
@@ -63,10 +71,10 @@ redesenham suas marcas. As bibliotecas existentes ou trazem **só dados** (sem l
|
|
|
63
71
|
- **Assets seguros** — download só via https com teto de tamanho e de pixels; SVGs
|
|
64
72
|
redistribuídos apenas após sanitização (sem `script`, event handlers, `foreignObject` ou
|
|
65
73
|
referências externas).
|
|
66
|
-
- **Trade-off honesto** —
|
|
67
|
-
|
|
68
|
-
das contas do país). As demais são SCDs/
|
|
69
|
-
usa o fallback que preferir — e a cobertura cresce a cada release.
|
|
74
|
+
- **Trade-off honesto** — 473 das 1.113 instituições têm logo (participantes do Open Finance,
|
|
75
|
+
afiliadas dos sistemas cooperativos e ~45 instituições cobertas pelos sites oficiais — a
|
|
76
|
+
esmagadora maioria das contas do país). As demais são SCDs/corretoras/IPs pequenas; para elas
|
|
77
|
+
seu app usa o fallback que preferir — e a cobertura cresce a cada release.
|
|
70
78
|
|
|
71
79
|
## Instalação e uso
|
|
72
80
|
|
|
@@ -78,19 +86,27 @@ Requer **Node ≥ 20** para uso via Node/CLI (em web e React Native vale o ambie
|
|
|
78
86
|
bundler). Zero dependências de runtime. Publicado com **npm provenance** — verifique a
|
|
79
87
|
integridade com `npm audit signatures`.
|
|
80
88
|
|
|
81
|
-
Os arquivos são nomeados pelo **ISPB** (8 dígitos, estável e universal —
|
|
82
|
-
instituições Pix
|
|
89
|
+
Os arquivos são nomeados pelo **ISPB** (8 dígitos, estável e universal — é o que permite cobrir
|
|
90
|
+
as ~640 instituições do Pix que não têm código COMPE). As consultas aceitam **COMPE ou ISPB**.
|
|
83
91
|
|
|
84
92
|
### JavaScript / TypeScript (Node ou web)
|
|
85
93
|
|
|
86
94
|
```ts
|
|
87
|
-
import { banks, byCompe, byIspb, logoCdnUrl } from 'logos-bancos-br';
|
|
95
|
+
import { banks, pixInstitutions, allInstitutions, byCompe, byIspb, logoCdnUrl } from 'logos-bancos-br';
|
|
96
|
+
|
|
97
|
+
banks(); // lista principal: 470 instituições com COMPE
|
|
98
|
+
pixInstitutions(); // conjunto separado: 643 só-Pix (fintechs, IPs, afiliadas)
|
|
99
|
+
allInstitutions(); // as duas juntas (1.113)
|
|
88
100
|
|
|
89
101
|
byCompe(341); // { ispb: '60701190', compe4: '0341', name: 'Itaú Unibanco S.A.', logo: {...} }
|
|
90
102
|
byCompe('0260'); // Nubank — '260', 260 e '0260' são equivalentes
|
|
91
103
|
byIspb('00000000'); // Banco do Brasil
|
|
104
|
+
byIspb('11275560'); // RecargaPay — só-Pix; byIspb resolve nos DOIS conjuntos
|
|
92
105
|
|
|
93
106
|
logoCdnUrl(341); // https://cdn.jsdelivr.net/npm/logos-bancos-br@x.y.z/logos/png/60701190.png
|
|
107
|
+
|
|
108
|
+
// Atributos de participação no Pix (verbatim da lista do BCB):
|
|
109
|
+
byCompe(341)?.pix; // { spiParticipationType: 'Direta', pixParticipationType: 'Obrigatória', ... }
|
|
94
110
|
```
|
|
95
111
|
|
|
96
112
|
### React (web)
|
|
@@ -109,9 +125,10 @@ import logos from 'logos-bancos-br/react-native'; // mapa require() estático
|
|
|
109
125
|
<Image source={logos[codigoBanco.padStart(4, '0')]} style={{ width: 40, height: 40 }} />
|
|
110
126
|
```
|
|
111
127
|
|
|
112
|
-
> As chaves do mapa aceitam o COMPE com 4 dígitos (`'0341'`) **e** o ISPB (`'60701190'
|
|
113
|
-
>
|
|
114
|
-
>
|
|
128
|
+
> As chaves do mapa aceitam o COMPE com 4 dígitos (`'0341'`) **e** o ISPB (`'60701190'`;
|
|
129
|
+
> instituições só-Pix aparecem apenas pelo ISPB; afiliadas apontam para o asset compartilhado do
|
|
130
|
+
> sistema). Importar esse entry adiciona os **160 logos distintos** (~1,7 MB) ao bundle. Se
|
|
131
|
+
> preferir empacotar só alguns, use o CLI abaixo e faça `require()` dos arquivos copiados.
|
|
115
132
|
|
|
116
133
|
### Node (caminho dos arquivos no disco)
|
|
117
134
|
|
|
@@ -126,8 +143,8 @@ logoPngPath('341'); // /…/node_modules/logos-bancos-br/logos/png/60701190.png
|
|
|
126
143
|
Vendorize os assets no seu projeto — sem dependência de runtime:
|
|
127
144
|
|
|
128
145
|
```bash
|
|
129
|
-
npx logos-bancos-br copy --dest ./assets/banks # 0341.png,
|
|
130
|
-
npx logos-bancos-br copy --dest ./assets/banks --by ispb # 60701190.png, ...
|
|
146
|
+
npx logos-bancos-br copy --dest ./assets/banks # 0341.png, ... (por COMPE; só-Pix ficam de fora)
|
|
147
|
+
npx logos-bancos-br copy --dest ./assets/banks --by ispb # 60701190.png, ... (todas, incl. só-Pix)
|
|
131
148
|
npx logos-bancos-br copy --dest ./assets/banks --format both --only 341,001,260
|
|
132
149
|
npx logos-bancos-br list # tabela COMPE · ISPB · nome · tem logo
|
|
133
150
|
```
|
|
@@ -137,28 +154,30 @@ Rode de novo a cada atualização do pacote para receber lista e logos novos.
|
|
|
137
154
|
### CDN — sem instalar nada
|
|
138
155
|
|
|
139
156
|
```
|
|
140
|
-
https://cdn.jsdelivr.net/npm/logos-bancos-br@0.
|
|
141
|
-
https://cdn.jsdelivr.net/npm/logos-bancos-br@0.
|
|
157
|
+
https://cdn.jsdelivr.net/npm/logos-bancos-br@0.3.0/logos/png/60701190.png
|
|
158
|
+
https://cdn.jsdelivr.net/npm/logos-bancos-br@0.3.0/logos/svg/18236120.svg
|
|
142
159
|
```
|
|
143
160
|
|
|
144
|
-
Fixe sempre uma versão (`@0.
|
|
161
|
+
Fixe sempre uma versão (`@0.3.0`) — a correspondência COMPE→ISPB está em
|
|
145
162
|
[`data/bancos.json`](data/bancos.json).
|
|
146
163
|
|
|
147
|
-
### Só os dados
|
|
164
|
+
### Só os dados
|
|
148
165
|
|
|
149
166
|
```ts
|
|
150
|
-
import
|
|
151
|
-
|
|
167
|
+
import bancos from 'logos-bancos-br/data/bancos.json'; // lista principal (COMPE)
|
|
168
|
+
import soPix from 'logos-bancos-br/data/instituicoes-pix.json'; // só-Pix (sem COMPE)
|
|
152
169
|
```
|
|
153
170
|
|
|
154
171
|
### Referência rápida da API
|
|
155
172
|
|
|
156
173
|
| Import | Função | Retorna |
|
|
157
174
|
|---|---|---|
|
|
158
|
-
| `logos-bancos-br` | `banks()` |
|
|
175
|
+
| `logos-bancos-br` | `banks()` | lista principal — instituições com COMPE (`Bank[]`) |
|
|
176
|
+
| | `pixInstitutions()` | só-Pix, sem COMPE (`PixInstitution[]`) |
|
|
177
|
+
| | `allInstitutions()` | os dois conjuntos (`Institution[]`) |
|
|
159
178
|
| | `byCompe(codigo)` | `Bank \| undefined` — `341`, `'341'` e `'0341'` são equivalentes |
|
|
160
|
-
| | `byIspb(ispb)` | `
|
|
161
|
-
| | `findBank(codigo)` | `
|
|
179
|
+
| | `byIspb(ispb)` | `Institution \| undefined` — resolve nos dois conjuntos |
|
|
180
|
+
| | `findBank(codigo)` | `Institution \| undefined` — mais de 4 dígitos trata como ISPB |
|
|
162
181
|
| | `logoCdnUrl(codigo, { format?, version? })` | URL do jsDelivr, ou `null` se não houver logo |
|
|
163
182
|
| | `normalizeCompe(x)` · `normalizeIspb(x)` | `'0341'` · `'60701190'` |
|
|
164
183
|
| | `version` | versão do pacote (string) |
|
|
@@ -166,7 +185,7 @@ import dados from 'logos-bancos-br/data/bancos.json';
|
|
|
166
185
|
| | `copyLogos({ dest, format?, by?, only? })` | copia os assets para um diretório (o que o CLI usa) |
|
|
167
186
|
| `logos-bancos-br/react-native` | `logos` (default export) | mapa `require()` com chaves COMPE4 **e** ISPB |
|
|
168
187
|
|
|
169
|
-
Tipos TypeScript exportados: `Bank`, `BankLogo`, `BankLogoSource`.
|
|
188
|
+
Tipos TypeScript exportados: `Bank`, `PixInstitution`, `Institution`, `BankLogo`, `BankLogoSource`, `PixInfo`.
|
|
170
189
|
|
|
171
190
|
## O dataset
|
|
172
191
|
|
|
@@ -179,6 +198,13 @@ Um registro de `data/bancos.json`:
|
|
|
179
198
|
"compe4": "0341",
|
|
180
199
|
"name": "Itaú Unibanco S.A.",
|
|
181
200
|
"shortName": "ITAÚ UNIBANCO S.A.",
|
|
201
|
+
"pix": {
|
|
202
|
+
"spiParticipationType": "Direta",
|
|
203
|
+
"pixParticipationType": "Obrigatória",
|
|
204
|
+
"modality": "Provedor de Conta Transacional",
|
|
205
|
+
"institutionType": "Banco Múltiplo",
|
|
206
|
+
"authorizedByBcb": true
|
|
207
|
+
},
|
|
182
208
|
"logo": {
|
|
183
209
|
"png": "logos/png/60701190.png",
|
|
184
210
|
"svg": "logos/svg/60701190.svg",
|
|
@@ -200,22 +226,33 @@ Um registro de `data/bancos.json`:
|
|
|
200
226
|
`openfinance` (diretório Open Finance, match automático por ISPB ou revisado), `direct-uri`
|
|
201
227
|
(URL no site oficial da instituição, revisada à mão) ou `override` (arte mantida no repo).
|
|
202
228
|
- `logo: null` — instituição sem logo nas fontes oficiais (use seu fallback).
|
|
229
|
+
- `logo.source.type: "brand"` — logo herdado do sistema cooperativo (campo `brand` diz qual,
|
|
230
|
+
ex.: `"SICOOB"`); o arquivo é **compartilhado** entre as afiliadas do sistema.
|
|
231
|
+
- `pix` — atributos verbatim da lista de participantes ativos do Pix do BCB; `null` quando a
|
|
232
|
+
instituição não é participante ativa.
|
|
233
|
+
- Em `instituicoes-pix.json`, cada registro tem `compe: null`, `cnpj` (14 dígitos) e `pix`
|
|
234
|
+
sempre presente.
|
|
203
235
|
|
|
204
236
|
## Como funciona a atualização automática
|
|
205
237
|
|
|
206
|
-
1. **Espinha dorsal**:
|
|
207
|
-
|
|
208
|
-
|
|
238
|
+
1. **Espinha dorsal**: a união, por ISPB, de dois CSVs públicos do Banco Central — a lista de
|
|
239
|
+
participantes do STR (`ParticipantesSTR.csv`: ISPB + COMPE + nomes oficiais) e a **lista de
|
|
240
|
+
participantes ativos do Pix** (arquivo diário datado, que acrescenta as instituições sem
|
|
241
|
+
COMPE e os atributos de participação). Ambos atualizados diariamente pelo BCB.
|
|
209
242
|
2. **Logos**: o diretório público de participantes do Open Finance Brasil traz, por CNPJ, o logo
|
|
210
243
|
que cada instituição publica para ser exibido por terceiros.
|
|
211
244
|
3. **Ponte**: `ISPB == 8 primeiros dígitos do CNPJ` (é assim que o BCB os atribui na esmagadora
|
|
212
245
|
maioria dos casos). Quando não bate — segundas marcas como XP CCTVM, Nu Invest, Bradesco BBI —
|
|
213
246
|
entra o `forcedMatches`, revisado à mão a partir das sugestões do relatório.
|
|
214
|
-
4. **
|
|
247
|
+
4. **Sistemas cooperativos**: afiliadas que carregam a marca do sistema no nome oficial
|
|
248
|
+
(Sicoob, Sicredi, Cresol, Unicred) recebem o logo do sistema por regra curada — explícita e
|
|
249
|
+
auditável, não semelhança fuzzy — e **compartilham um único arquivo por marca** (nada de
|
|
250
|
+
centenas de cópias do mesmo PNG).
|
|
251
|
+
5. **Fora do Open Finance**: ferramentas de descoberta (`npm run discover` e `discover:ai`)
|
|
215
252
|
acham o ícone publicado no site oficial da instituição; **nada entra sem curadoria visual**
|
|
216
253
|
(o revisor confere marca e domínio) — aprovados viram `forcedUris`.
|
|
217
|
-
|
|
218
|
-
|
|
254
|
+
6. **Normalização**: cada arte vira PNG 256×256; o SVG original é mantido quando seguro.
|
|
255
|
+
7. **Cadência**: o workflow roda **toda segunda-feira** (e sob demanda), regenera
|
|
219
256
|
`data/bancos.json`, `logos/`, `PREVIEW.md` e `react-native.js`, e **abre um PR** com o
|
|
220
257
|
relatório e o diff visual dos PNGs. Depois da revisão e merge, o mantenedor publica uma
|
|
221
258
|
nova versão no npm (Release no GitHub). Nada é editado à mão.
|
|
@@ -225,14 +262,15 @@ Detalhes de manutenção (rodar o pipeline localmente, promover sugestões, over
|
|
|
225
262
|
|
|
226
263
|
## Limitações conhecidas
|
|
227
264
|
|
|
228
|
-
- Cobertura de logos:
|
|
229
|
-
|
|
230
|
-
|
|
265
|
+
- Cobertura de logos: 473 de 1.113 instituições (153 na lista principal; o restante são
|
|
266
|
+
afiliadas com logo de sistema e só-Pix); cresce conforme o ecossistema e a curadoria. **Sua
|
|
267
|
+
instituição está sem logo?** Abra uma issue com o template "Sugestão de match"/"Adicionar
|
|
268
|
+
logo" apontando a URL no domínio oficial — promovemos rápido.
|
|
231
269
|
- Algumas instituições publicam no diretório o logo da sua **marca de produto** (ex.: Banco CSF →
|
|
232
270
|
cartão Atacadão). É a escolha oficial da própria instituição; se preferir outra arte no seu app,
|
|
233
271
|
use um override local seu.
|
|
234
|
-
- Instituições
|
|
235
|
-
|
|
272
|
+
- Instituições em processo de **adesão** ao Pix (segunda seção da lista do BCB) e participantes
|
|
273
|
+
sem ISPB publicado (18 hoje) não entram — só participantes ativos com ISPB.
|
|
236
274
|
|
|
237
275
|
## Marcas e remoção
|
|
238
276
|
|