sistema de design do rastrillo
Uma visão geral de tudo o que o sistema de design oferece. Tema: plain. Idioma: Português.
Ícones
12 slugs, incorporados como SVG inline e compilados no binário: sem passo de build, sem segunda origem, e funcionam sem rede nenhuma. Cada um recebe o tamanho do texto ao lado pela própria regra .icon do tokens.css, que é o tamanho que está a ver aqui. Um slug que nada responde não desenha nada, por isso uma gralha custa um ícone em falta e não uma página que morreu a meio da resposta.
Os nomes são do próprio rastrillo
5 dos 12 diferem do nome que o lucide.dev publica, por isso até o conjunto Lucide traz uma tradução própria. Sempre que a última linha sob um ícone não repete o seu nome, é um desses. O ganho é que uma mesma chamada significa o mesmo glifo qualquer que seja o conjunto que a app gere, e os partials entregues nunca mudam quando o conjunto muda.
kebab e menu são o par que vale a pena não confundir: kebab são os três pontos que significam mais ações nesta linha, e menu as três linhas que significam navegação. Os shells usam menu quando se recolhem.
De onde vêm os glifos
Lucide, incorporado sob a licença ISC e fixado no código em vez de ser descarregado em tempo de execução. O rastrillo new --icons=font-awesome gera antes o Font Awesome Free: uma fonte de onde uma app pode beber, não uma dependência que esta framework tenha. Aqui nada o descarrega, e o Pro é um produto pago que o rastrillo não pode incorporar em seu nome.
O conjunto completo está em lucide.dev (abre num separador novo).
Um ícone que a framework não traz
O pacote icons que o rastrillo new escreve é código da própria app: acrescente lá o glifo e chame-o como a qualquer outro. O ui.WithIcons é a costura que põe o seu conjunto à frente do da framework.
tmpl := template.Must(template.New("").
Funcs(ui.Funcs(ui.WithIcons(icons.Icon, icons.Assets))).
ParseFS(ui.Templates(), "*.html"))
A armadilha, e é silenciosa: o ui.FuncsWith volta a ligar icon e iconAssets ao conjunto embutido. Uma app que gerou os seus próprios ícones tem de passar as duas costuras em cada chamada, ou os seus ícones revertem para o Lucide em cada pedido enquanto continuam a desenhar algo perfeitamente plausível.
ui.Funcs(ui.WithT(t), ui.WithIcons(icons.Icon, icons.Assets))