Product Icons

mandatory

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.svg na 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.png e icon-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 PNG com 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.png

3.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
done

3.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.iconset

3.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.ico

UWP / 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
  • [ ] .ico Windows com resoluções 163248128256
  • [ ] Linux: tamanhos 3248128256512 presentes
  • [ ] Web: favicon.ico, apple-touch-icon.png (180), manifest 192+512

Source: ../home/koder/dev/koder/meta/docs/stack/specs/icons/products.kmd