Product Icons
Padrão de ícones dos produtos Koder: 3D, forma = conceito, sem fundo. Contrato da master SVG (cores, dimensões, viewport, segurança de recorte). Variantes PNG por plataforma são geradas via `kicon generate`, nunca à mão.
Spec: Ícones de Produtos Koder
1. Linguagem visual
- *onceito* O símbolo deve remeter à função do produto (cadeado = auth, envelope = mail, etc.). Sem texto — apenas símbolo gráfico.
- *or dominante* Cada produto tem cor própria derivada da paleta Koder. Manter consistência de saturação/luminosidade entre produtos.
- * forma É o ícone* Sem quadrado, círculo ou superelipse de fundo. A silhueta do conceito é preenchida com a cor dominante.
- *undo transparente* O SVG não tem retângulo de apoio. O símbolo funciona em fundos claros e escuros sem variante adicional.
- *stilo 3D* Gradientes, sombras internas, reflexos e iluminação direcional. Implementar via
linearGradient,radialGradient,filter(feGaussianBlur, feDropShadow). Estilo macOS/iOS — não cartoon. - *ímbolo interno mínimo* Poucos elementos brancos com opacidade 0.3–0.95. Legível em 32×32px.
2. Arquivo master
- *ormato* SVG vetorial,
viewBox="0 0 512 512". - *rquivo*
icon.svgna raiz do repositório do produto. - *entralização óptica* Bounding box com margens iguais nos 4 lados (tolerância ±4px). Verificar: abrir PNG 512 e medir margens — desvio > 8px reprova.
- *asterização base*
rsvg-convert -w 512 -h 512 icon.svg -o icon-512.pngeicon-256.png.
3. Export por plataforma
3.1 Android
Adaptive icon (API 26+ — obrigatório)
O Android aplica uma máscara (círculo, squircle, etc. — varia por OEM) ao adaptive icon. O conteúdo fora da *afe zone*é cortado.
Canvas total: 108 dp → xxxhdpi = 432 px
Safe zone: 72 dp → xxxhdpi = 288 px (66,7 % do canvas)
Bleed zone: 18 dp por lado — pode ser exibido em alguns OEMs, clipado em outros*egra obrigatória* todo conteúdo visual deve caber na safe zone (66,7 % central). Deixar pelo menos 16,7 % de margem em cada lado.
| Camada | Arquivo | Conteúdo |
|---|---|---|
foreground |
ic_launcher_foreground.png |
Símbolo com fundo *ransparente* artwork dentro da safe zone |
background |
@color/ic_launcher_background |
Cor sólida (ou imagem) sem artwork |
monochrome |
ic_launcher_monochrome.png |
Silhueta branca pura, sem gradiente |
Tamanhos do foreground (canvas total, não safe zone):
| Densidade | dp→px | Arquivo |
|---|---|---|
| mdpi | 108px | mipmap-mdpi/ic_launcher_foreground.png |
| hdpi | 162px | mipmap-hdpi/ic_launcher_foreground.png |
| xhdpi | 216px | mipmap-xhdpi/ic_launcher_foreground.png |
| xxhdpi | 324px | mipmap-xxhdpi/ic_launcher_foreground.png |
| xxxhdpi | 432px | mipmap-xxxhdpi/ic_launcher_foreground.png |
Legacy icon (API < 26)
Tamanho 48 dp, sem camadas:
| Densidade | px | Arquivo |
|---|---|---|
| mdpi | 48 | mipmap-mdpi/ic_launcher.png |
| hdpi | 72 | mipmap-hdpi/ic_launcher.png |
| xhdpi | 96 | mipmap-xhdpi/ic_launcher.png |
| xxhdpi | 144 | mipmap-xxhdpi/ic_launcher.png |
| xxxhdpi | 192 | mipmap-xxxhdpi/ic_launcher.png |
Google Play Store
512×512 PNGcom canal alpha permitido.
Geração
# Gerar foreground com margem correta (artwork em 66,7 % do canvas)
# Usar SVG com viewBox ajustado ou transform="scale(0.667) translate(75,75)"
rsvg-convert -w 432 -h 432 icon-foreground.svg -o ic_launcher_foreground_xxxhdpi.png
# Redimensionar para demais densidades com ImageMagick
convert ic_launcher_foreground_xxxhdpi.png -resize 324x324 ic_launcher_foreground_xxhdpi.png
convert ic_launcher_foreground_xxxhdpi.png -resize 216x216 ic_launcher_foreground_xhdpi.png
convert ic_launcher_foreground_xxxhdpi.png -resize 162x162 ic_launcher_foreground_hdpi.png
convert ic_launcher_foreground_xxxhdpi.png -resize 108x108 ic_launcher_foreground_mdpi.png3.2 iOS / iPadOS
Não aplicar cantos arredondados — o iOS faz isso automaticamente. *enhuma transparência*— usar fundo sólido.
| Uso | Tamanho | Arquivo sugerido |
|---|---|---|
| App Store | 1024×1024 | AppIcon-1024.png |
| iPhone home (2×) | 120×120 | AppIcon-60@2x.png |
| iPhone home (3×) | 180×180 | AppIcon-60@3x.png |
| iPad home (1×) | 76×76 | AppIcon-76@1x.png |
| iPad home (2×) | 152×152 | AppIcon-76@2x.png |
| iPad Pro home (2×) | 167×167 | AppIcon-83.5@2x.png |
| Spotlight (2×) | 80×80 | AppIcon-40@2x.png |
| Spotlight (3×) | 120×120 | AppIcon-40@3x.png |
| Settings (2×) | 58×58 | AppIcon-29@2x.png |
| Settings (3×) | 87×87 | AppIcon-29@3x.png |
| Notification (2×) | 40×40 | AppIcon-20@2x.png |
| Notification (3×) | 60×60 | AppIcon-20@3x.png |
*eração*
# A partir do icon-1024.png (fundo opaco)
for size in 20 29 40 58 60 76 80 87 120 152 167 180; do
convert icon-1024.png -resize ${size}x${size} AppIcon-${size}.png
done3.3 macOS
| Uso | Tamanho |
|---|---|
| App Store | 1024×1024 PNG com alpha |
| Dock / Finder | 512×512, 256×256, 128×128, 64×64, 32×32, 16×16 |
| @2x (Retina) | 1024, 512, 256, 128, 64, 32 |
Empacotados em .icns:
mkdir MyIcon.iconset
# Copiar cada tamanho com nome correto: icon_16x16.png, icon_16x16@2x.png, ...
iconutil -c icns MyIcon.iconset3.4 Windows
Win32 / instalador NSIS (.ico)
Um único .ico com múltiplas resoluções embutidas:
| Resolução | Uso |
|---|---|
| 16×16 | Taskbar pequena, Explorer |
| 24×24 | Taskbar média |
| 32×32 | Taskbar grande, Explorer detalhes |
| 48×48 | Explorer ícones grandes |
| 64×64 | Salto de qualidade |
| 128×128 | Atalho área de trabalho |
| 256×256 | Vista extendida / alta DPI |
convert icon-512.png -define icon:auto-resize=256,128,64,48,32,24,16 icon.icoUWP / MSIX / Windows Store
| Asset | Tamanhos (px) |
|---|---|
StoreLogo |
50, 100, 150, 200, 300 |
Square44x44Logo |
44, 55, 66, 88, 176 |
Square150x150Logo |
150, 188, 225, 300, 600 |
Square310x310Logo |
310, 388, 465, 620 |
Wide310x150Logo |
310×150, 388×188, 465×225, 620×300 |
Fundo deve ser a cor de brand do produto; símbolo centrado com margem ≥ 16% em cada lado.
3.5 Linux (freedesktop)
Instalados em /usr/share/icons/hicolor/<size>x<size>/apps/<slug>.png:
| Tamanho | Prioridade |
|---|---|
| 16×16 | obrigatório |
| 22×22 | recomendado (KDE) |
| 24×24 | recomendado |
| 32×32 | obrigatório |
| 48×48 | obrigatório |
| 64×64 | recomendado |
| 96×96 | opcional |
| 128×128 | obrigatório |
| 256×256 | obrigatório |
| 512×512 | obrigatório |
| scalable (SVG) | /usr/share/icons/hicolor/scalable/apps/<slug>.svg |
Também: /usr/share/pixmaps/<slug>.png (48×48, legado).
Após instalar: gtk-update-icon-cache /usr/share/icons/hicolor.
3.6 Web / PWA
| Asset | Tamanho | Arquivo | Uso |
|---|---|---|---|
favicon.ico |
16+32 embutidos | favicon.ico |
Aba do browser |
favicon-32.png |
32×32 | favicon-32x32.png |
Browsers modernos |
favicon-16.png |
16×16 | favicon-16x16.png |
Fallback |
| Apple touch icon | 180×180 | apple-touch-icon.png |
iOS "Add to Home Screen" — *em alpha* fundo opaco |
| PWA manifest | 192×192 | icon-192.png |
manifest.json — purpose: any |
| PWA manifest | 512×512 | icon-512.png |
manifest.json — purpose: any |
| PWA maskable | 512×512 | icon-512-maskable.png |
manifest.json — purpose: maskable; artwork em 80% central (safe zone = 80%) |
manifest.json mínimo:
{
"icons": [
{ "src": "/icon-192.png", "sizes": "192x192", "type": "image/png", "purpose": "any" },
{ "src": "/icon-512.png", "sizes": "512x512", "type": "image/png", "purpose": "any" },
{ "src": "/icon-512-maskable.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" }
]
}3.7 Koder Hub (.kpkg)
Ver specs/kpkg/format.kmd para o campo icon no kpkg.toml.
| Tamanho | Obrigatório |
|---|---|
| 512×512 PNG | sim |
| 1024×1024 PNG | recomendado (alta DPI) |
4. Safe zone por plataforma — resumo
| Plataforma | Safe zone | Margem mínima |
|---|---|---|
| Android adaptive icon | 66,7 % do canvas | 16,7 % em cada lado |
| Android legacy | 100 % (sem máscara) | 8 % recomendado |
| iOS | sem safe zone (OS arredonda) | 8 % recomendado |
| PWA maskable | 80 % do canvas | 10 % em cada lado |
| Demais | sem máscara | 8 % recomendado |
5. Checklist de aprovação
- [ ] SVG master 512×512, fundo transparente
- [ ] Conteúdo centralizado opticamente (tolerância ±4px)
- [ ] Legível em 32×32px
- [ ] Android foreground: artwork dentro da safe zone de 66,7 %
- [ ] Android background: cor de brand (não branco)
- [ ] iOS: sem canal alpha, fundo opaco
- [ ]
.icoWindows com resoluções 163248128256 - [ ] Linux: tamanhos 3248128256512 presentes
- [ ] Web:
favicon.ico,apple-touch-icon.png(180), manifest 192+512