JavaScript

kubai-icons cria ícones a partir de JavaScript puro e fornece o web component <kubai-icon>.

Instalar

bash
npm install kubai-icons

Criar um elemento

createIcon retorna um elemento <svg> que você pode adicionar à página:

js
import { createIcon, Folder, MailPlus } from "kubai-icons";

document.querySelector("#toolbar").append(
  createIcon(Folder, { size: 24 }),
  createIcon(MailPlus, { color: "#EC4899", trigger: "parent" })
);

trigger: "parent" só funciona se você adicionar o ícone à página de forma síncrona logo após criá-lo, como neste exemplo. Para adicionar um ícone depois, consulte Renderizar no servidor e faça a ligação por conta própria.

Substituir os marcadores

Adicione um elemento com data-kubai onde quiser um ícone e chame replaceIcons para trocar cada elemento pelo seu SVG. Liste todos os ícones usados na opção icons. Este exemplo pressupõe um bundler:

html
<i data-kubai="folder" data-size="32"></i>
<i data-kubai="calendar-check" data-color="#22C55E"></i>

<script type="module">
  import { replaceIcons, Folder, CalendarCheck } from "kubai-icons";
  replaceIcons({ icons: { Folder, CalendarCheck } });
</script>

Usar o web component

Adicione uma tag script para carregar o componente de uma CDN. Ele baixa o arquivo de cada ícone na primeira vez em que o ícone é usado.

html
<script type="module" src="https://cdn.jsdelivr.net/npm/kubai-icons@0/dist/cdn/element.js"></script>

<kubai-icon name="folder"></kubai-icon>
<kubai-icon name="bell-off" size="32" color="#F97316" variant="soft" label="Muted"></kubai-icon>

Renderizar no servidor

toSvg retorna o ícone como uma string HTML, sem movimento:

js
import { toSvg, Folder } from "kubai-icons";

const html = toSvg(Folder, { size: 24, title: "Files" });

Para adicionar movimento no navegador, encontre o elemento <svg> renderizado, passe-o para animate e conecte o resultado ao elemento que deve iniciar o movimento:

js
import { animate, bindTrigger, Folder } from "kubai-icons";

const svg = document.querySelector("#files svg");
bindTrigger(svg.parentElement, animate(svg, Folder), Folder);

Kubai Icons é de uso gratuito. Apoie o projeto