Executando verificação de segurança...
1

🤖 Customização, Open Source e pequenos hacks que ajudam projetos a evoluírem

Há cerca de 3 anos, publiquei aqui no TabNews um post mostrando como eu personalizei visualmente a plataforma usando apenas CSS sobreposto via Stylus:

👉 https://www.tabnews.com.br/rocha/estilizacao-personalizada-do-tabnews

Na época, a ideia não era “quebrar” nada, era explorar até onde dava para ir com pequenos hacks visuais. O post teve uma repercussão bem legal: o próprio @felipedeschamps comentou dizendo que gosta desse tipo de hack, e o @rafael, um dos contribuidores do projeto, sugeriu algo importante: padronizar melhor os identificadores dos elementos para facilitar customizações.

Esse detalhe ficou comigo.

Quando hacks viram feedback de produto

O TabNews usa muitas classes geradas dinamicamente, o que torna qualquer customização extremamente frágil. Ainda assim, com o Stylus, eu conseguia coisas como:

  • Header flutuante
  • Ajustes de layout
  • Destaque visual para usuários específicos
  • Pequenos refinamentos de UX

Exemplo do CSS antigo (baseado em classes geradas):

.dWxAqQ { /* Header */ }
.czRdDB[href="/rocha"] { /* Nome do usuário */ }

Funcional? Sim Não mais.
Robusto? Nem um pouco.

O projeto evoluiu — e isso muda tudo

Com o tempo, os devs do TabNews evoluíram a base e padronizaram melhor alguns elementos, permitindo algo muito mais saudável:

#header { /* Header */ }
body main { /* Conteúdo */ }
address a[href="/rocha"] { /* Link para perfil do usuário */ }

Aqui está um exemplo de como ficou o visual aplicado:

Isso já é um salto enorme em termos de estabilidade, acessibilidade e extensibilidade.

Por outro lado, ainda existem áreas — como o modal de perfil — que não possuem um identificador consistente, o que torna a personalização praticamente inviável sem hacks frágeis.

E é aqui que entra a parte mais importante desse post.

Open Source não é só usar — é devolver

Ao invés de apenas adaptar meu CSS de novo, decidi fazer algo diferente dessa vez:
contribuir diretamente com o projeto para tornar esse tipo de personalização mais fácil, limpa e previsível.

A ideia que estou propondo é simples e já validada em outros projetos modernos de UI.

Proposta: data-slot como identificador semântico de componentes

Inspirado no padrão usado pelo HeroUI, a proposta é que componentes-chave do TabNews tenham atributos como:

<header data-slot="header"></header>

<div data-slot="profile-modal"></div>

<article data-slot="post-item"></article>

<address data-slot="author"></address>

Com isso, qualquer pessoa poderia aplicar customizações sem depender de classes internas ou estrutura frágil, por exemplo:

[data-slot="profile-modal"] {
  margin-top: 20px;
}

[data-slot="author"][href="/rocha"] {
  background: #0b471b;
}

Vantagens claras:

  • Não quebra o CSS interno
  • Não interfere na semântica
  • Não expõe detalhes de implementação
  • Facilita temas, extensões e acessibilidade
  • Ajuda designers e power users

Por que isso importa?

Porque customização é uma forma legítima de engajamento.
Ela transforma usuários em exploradores, exploradores em contribuidores — e contribuidores em mantenedores.

O TabNews sempre teve esse espírito aberto a experimentação. Esse tipo de ajuste não muda a plataforma para quem não quer, mas abre portas para quem quer ir além.

Próximos passos

Vou:

  • Propor esse padrão no repositório
  • Implementar identificadores progressivamente
  • Manter compatibilidade total com o layout atual
  • Documentar os data-slots disponíveis

Tudo isso sem comprometer a simplicidade do projeto.

Open source cresce assim, alguém testa, alguém sugere, alguém implementa — e todo mundo ganha.

Em breve trago mais novidades!

Carregando publicação patrocinada...