Loading repository data…
Loading repository data…
Pdro-marqss / repository
Biblioteca de Ícones SVG para projetos web - Leve e evita aquela troca brusca de texto para icone causada pelo atraso no loading. Feita pra uso pessoal mas fiquem a vontade :)
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Iconis é uma biblioteca de ícones em SVG inline para uso em projetos web.
fill="currentColor" permitem controle de cor via CSS ou Tailwind.npm install @iconis/icons
A biblioteca suporta dois estilos de import, pensados para atender projetos modernos e projetos legados.
Recomendado para projetos novos ou projetos que utilizam:
moduleResolution: "bundler")import { starRegular } from '@iconis/icons/outlined';
import { cakeRegular } from '@iconis/icons/filled';
Em projetos mais antigos (como Angular 14), o TypeScript não resolve corretamente subpath exports sem ajustes adicionais de configuração.
Nesses casos, utilize o import via namespace, que é totalmente compatível:
import { outlined, filled } from '@iconis/icons';
const stariIconOutline = outlined.starRegular;
const starIconFilled = filled.starRegular;
Esse formato funciona sem necessidade de alterar o tsconfig do projeto.
moduleResolution: "bundler"É possível habilitar o import moderno (@iconis/icons/outlined) em projetos mais antigos ajustando o tsconfig.json:
{
"compilerOptions": {
"moduleResolution": "bundler"
}
}
Atenção: Essa mudança afeta a resolução de módulos do projeto inteiro. É recomendada apenas para projetos novos ou bem controlados. Em projetos legados grandes, o uso do import via namespace costuma ser mais seguro.
inject moderno)import { Component, inject } from '@angular/core';
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
import { cakeRegular } from '@iconis/icons/outlined';
@Component({
selector: 'app-exemplo',
standalone: true,
template: `<span class="w-6 h-6 text-slate-600" [innerHTML]="icone"></span>`,
})
export class ExemploComponent {
private readonly sanitizer = inject(DomSanitizer);
protected readonly icone: SafeHtml =
this.sanitizer.bypassSecurityTrustHtml(cakeRegular);
}
import { Component } from '@angular/core';
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
import { outlined } from '@iconis/icons';
@Component({
selector: 'app-exemplo',
template: `<span class="w-6 h-6 text-slate-600" [innerHTML]="icone"></span>`,
})
export class ExemploComponent {
public readonly icone: SafeHtml;
constructor(private readonly sanitizer: DomSanitizer) {
this.icone = this.sanitizer.bypassSecurityTrustHtml(outlined.cakeRegular);
}
}
Nota: Por ser SVG inline (string), de modo geral basta importar o icone, atrelar a uma variavel (para ser usado no template html) e Sanitizar para aplicar no
innerHTML.
O Iconis não depende de Angular ou TypeScript.
Como os ícones são apenas strings SVG, eles podem ser usados em qualquer projeto JavaScript simples.
<div id="icone"></div>
<script type="module">
import { outlined } from '@iconis/icons';
const container = document.getElementById('icone');
container.innerHTML = outlined.starRegular;
</script>
innerHTML pode ser usado diretamente.type="module" é necessário para imports ES modernos.<style>
.icon {
width: 24px;
height: 24px;
color: #0f172a; /* slate-900 */
}
</style>
<div id="icone" class="icon"></div>
<script type="module">
import { outlined } from '@iconis/icons';
document.getElementById('icone').innerHTML = outlined.starRegular;
</script>
Como os ícones utilizam fill="currentColor", a cor é herdada automaticamente via CSS.
Veja o histórico de mudanças entre versões em CHANGELOG.md
MIT © Iconis