Isso está alinhado com a intenção semântica: elementos nativos oferecem comportamento embutido de teclado e leitor de tela, e separar "ação" de "navegação" evita muita dívida de acessibilidade. Quando seu "link que parece um botão" está desativado, como você implementa isso para que permaneça acessível (incluindo comportamento de teclado e leitor de tela)?
Frontend
Essa é uma explicação sólida baseada na linha de base, e gosto que você esteja distinguindo o centro visual da linha de base tipográfica; o centralização flexível é frequentemente a abordagem mais robusta entre fontes. Quando as especificações de design são ambíguas (por exemplo, o alinhamento ícone-texto difere entre botões, entradas e itens de menu), como você define e documenta uma única regra de alinhamento no sistema de design para que as equipes a implementem de forma consistente?
Essa é uma abordagem pragmática — tokens mais um padrão de envolvimento consistente evitam correções pontuais e tornam as decisões de alinhamento auditáveis no Storybook. Como decide quando um "empurrão" visual (como o seu ajuste de -2px) pertence como um token global versus uma exceção com escopo de componente, e como governa essa decisão?
Percebido, Dmytro. Uma pequena nota: disseste "erros" — querias dizer "setas"? Numa aplicação real, como explicarias este comportamento a um colega para que ele não quebre acidentalmente a acessibilidade enquanto otimiza o desempenho?
Percebi — estás a cobrir os visuais além do comportamento do teclado e do SR, e removê-lo da ordem de tabulação é frequentemente a decisão certa para um link semelhante a desativado. Quando implementares este "link desativado", qual padrão exato de ARIA/atributo usas para leitores de tela (por exemplo, `aria-disabled`, mudanças de papel), e como manténs a consistência do anúncio entre os navegadores?
O que procura na sua próxima função?
Dmytro, ao construíres um componente de botão personalizado, qual elemento HTML semântico escolhes por padrão e em que casos usarias algo mais?
Finalmente, o CSS é uma tecnologia fundamental no desenvolvimento front-end, permitindo aos desenvolvedores controlar o layout, o estilo e a apresentação visual de aplicações web. Quem propôs o CSS e em que ano foi introduzido pela primeira vez?
De que realização do último ano você se orgulha mais?
Bom—tratando-o como uma preocupação de layout tokenizado e confiando no `gap` é geralmente a maneira mais sustentável de manter o ritmo consistente entre os componentes. Como você consegue um alinhamento tipográfico perfeito (altura de maiúscula/linha de base) entre um ícone SVG e texto em diferentes navegadores—você depende de `line-height`, `vertical-align`, alinhamento flexível, ou algo mais?
Essa é uma justificativa clara, Dmytro, e a sua regra de 'pular itens desativados' está bem expressa. Pode descrever uma situação específica em que essa abordagem possa confundir os utilizadores, e como ajustaria a redação ou a interface para torná-la mais clara?
Fale brevemente sobre a pilha que utiliza no seu trabalho diário.
Explicação clara, Dmytro—bom uso de delegação e verificações "mais próximas"; o seu fluxo é fácil de seguir. Quando diz que trata o teclado "da mesma forma", pode explicar-me exatamente quais as teclas que suporta e como evita que o foco caia em links desativados?
Descreva um compromisso difícil com o qual você se deparou.
Acompanhamento: ao projetar uma biblioteca de componentes públicos, você exporia as props como `interface` ou `type`, e como você avalia a extensibilidade (mesclagem/augmentação) em relação a
Em TypeScript, qual é a diferença prática entre `interface` e `type`, e quando preferir um em detrimento do outro?
Isso faz sentido — manter o contrato público fechado evita derivações não intencionais da API, e uniões discriminadas são uma razão forte para preferir `type`. Quando estiver a implementar esse botão para ser pixel-perfect e responsivo, como lida com o espaçamento e o alinhamento para que o ícone + rótulo permaneçam visualmente consistentes em diferentes pontos de interrupção e alterações de tamanho de fonte?
Poderia apresentar-se e falar brevemente sobre a sua experiência?