Discourse Fácil 'Ícone SVG' e 'Emoji' em CSS

<div data-theme-toc="true"> </div>

Olá :wave:

Este tópico contém dois componentes de tema.

Discourse Easy SVG Icon CSS

:warning: Este componente de tema funciona como um modelo, por favor, faça um fork no Github ou use o código em seu projeto. Você pode remover os códigos svg dos ícones do SCSS e manter apenas aqueles que você realmente usa… Importei o arquivo mixin para o arquivo common.scss, então você pode adicionar seu código abaixo dessa linha ou separadamente na seção desktop ou mobile.

O componente de tema adiciona a capacidade de manter o ícone SVG de forma sustentável e facilmente editável em seu CSS. O componente contém todos os ícones svg encontrados aqui: discourse/vendor/assets/svg-icons/fontawesome at main · discourse/discourse · GitHub



Como usar?

Parâmetros fixos:

$icon-set: brands, regular, solid
$icon-name: nome do ícone
$icon-color: cor do ícone (currentColor, hex ou variável de cor)
$width e $height: o tamanho do ícone adicionado

Parece com isto:

@include svg-icon($icon-set, $icon-name, $icon-color, $width, $height);

Usando currentColor
Aqui está um exemplo de como adicionar um ícone de foguete sólido antes do item de navegação Latest.

#navigation-bar {
  li.nav-item {
    &_latest {
      a {      
        gap: 0.5em;
        &:before {
          content: "";
          @include svg-icon(solid, rocket, currentColor, 1em, 1em);
        }
      }
    }
  }
}

add-icon-to-latest


Usando a variável de cor var(--gold)
Aqui está um exemplo de como adicionar um ícone de estrela regular dourada antes do item de navegação Top.

#navigation-bar {
  li.nav-item {
    &_top {
      a {      
        gap: 0.5em;
        &:before {
          content: "";
          @include svg-icon(regular, star, var(--gold), 1em, 1em);
        }
      }
    }
  }
}

add-star-to-top


Podemos facilmente mudar o conjunto de ícones, a cor ou até mesmo o ícone em hover, etc… Vamos ver!

Agora mudamos o ícone regular para sólido quando passamos o mouse sobre o botão.

#navigation-bar {
  li.nav-item {
    &_top {
      a {      
        gap: 0.5em;
        &:hover,
        &:focus,
        &.active {
          &:before {
            @include svg-icon(solid, star, currentColor, 1em, 1em);
          }
        }
        &:before {
          content: "";
          @include svg-icon(regular, star, currentColor, 1em, 1em);
        }
      }
    }
  }
}

change-icon-set


Discourse Easy Emoji CSS

:warning: Este componente de tema funciona como um modelo, por favor, faça um fork no Github ou use o código em seu projeto. Importei o arquivo mixin para o arquivo common.scss, então você pode adicionar seu código abaixo dessa linha ou separadamente na seção desktop ou mobile.

Como usar?

O uso é semelhante à versão SVG.

Parâmetros fixos:

$emoji-set: apple, google, twitter, win10, google_classic, facebook_messenger
$emoji-name: nome do emoji
$width e $height: o tamanho do emoji adicionado

@include emoji($emoji-set, $emoji-name, $width, $height);

Aqui está um exemplo de como adicionar um emoji rocket do facebook_messenger antes do item de navegação Latest e um emoji star do twitter antes do item de navegação Top.

#navigation-bar {
  li.nav-item {
    &_latest {
      a {      
        gap: 0.5em;
        &:before {
          content: "";
          @include emoji(facebook_messenger, rocket, 1em, 1em);
        }
      }
    }
    &_top {
      a {      
        gap: 0.5em;
        &:before {
          content: "";
          @include emoji(twitter, star, 1em, 1em);
        }
      }
    }
  }
}

Screenshot 2024-03-25 at 5.26.26

13 curtidas

Bom dia @Don,

Tenho acompanhado ardentemente o seu trabalho e acredito ter incorporado todas as suas criações ao meu fórum. No entanto, com este item em particular, estou incerto. Desde a atualização do discourse, minha mente ficou confusa e não consigo me lembrar onde implementar esses códigos CSS. Integrei seu código do GitHub ao tema, mas nada parece estar aparecendo.

1 curtida

Acredito que o tema deveria ser uma base editável para você trabalhar:

O que explicaria por que nada apareceu quando você o instalou, já que o modelo provavelmente faria pouco ou nada por conta própria.

1 curtida

Isso não deveria ser visível para nós?

ou

Não, pois é um tema remoto, o que significa que você deve baixá-lo do GitHub e carregá-lo como um zip para sua instância, ou fazer um fork do repositório do GitHub e fazer suas alterações lá.

1 curtida

De fato, este é um conceito inteiramente novo para mim. No entanto, compreendo seu ponto; cada dia é uma oportunidade de aprendizado, e agradeço a rápida resposta.

2 curtidas

Olá @Aaron_Walsh :waving_hand: Funcionou finalmente para você? Existe algum caso de uso específico em que você queira usar isso? Se você compartilhar alguns detalhes, posso criar um componente de tema separado com base nisso, onde ele pode ser facilmente modificado com configurações.

Bom dia,

O empreendimento teria sido bem-sucedido; no entanto, não possuo mais um laptop Windows para fins de edição. Em vez disso, passei a usar um Samsung Galaxy S9 Ultra, uma decisão que agora acho um tanto lamentável :sweat_smile:.

Existe um método pelo qual posso realizar esta tarefa usando meu servidor de hospedagem (cPanel) por meio de upload e edição. No entanto, devo observar, com pesar, que o trabalho que você criou pode se mostrar intrincado para alguns indivíduos.

Portanto, se você estiver disposto,

9e9f0a12fb60537533c141e18e145f7d98eecb9c

Este design é o objeto da minha admiração e aquele pelo qual sou particularmente atraído!

1 curtida

Sim, esse é o motivo pelo qual foi colocado na categoria Dev, mas não se preocupe, farei um Theme component para este caso de uso. :slightly_smiling_face:

3 curtidas

Peço desculpas, isso foi uma falha minha! No entanto, daqui para frente, estarei mais informado sobre isso.

Olá :waving_hand: Este Theme component está pronto. :white_check_mark:

Você é incrível! Obrigado!

1 curtida