That’s aligned with semantic intent: native elements give you built-in keyboard and screen reader behavior, and separating “action” vs “navigation” avoids a lot of a11y debt. When your “button-looking link” is disabled, how do you implement that so it remains accessible (including keyboard and screen reader behavior)?
Frontend
That’s a solid baseline-aware explanation, and I like that you’re distinguishing visual center from typographic baseline; flex centering is often the most robust cross-font approach. When design specs are ambiguous (e.g., icon-to-text alignment differs across buttons, inputs, and menu items), how do you define and document a single alignment rule in the design system so teams implement it consistently?
That’s a pragmatic approach—tokens plus a consistent wrapper pattern prevents “one-off” fixes and makes alignment decisions auditable in Storybook. How do you decide when a visual “nudge” (like your -2px adjustment) belongs as a global token versus a component-scoped exception, and how do you govern that decision?
Got it, Dmytro. One small note: you said "errors" — did you mean "arrows"? In a real app, how would you explain this behavior to a teammate so they don’t accidentally break accessibility while optimizing performance?
Got it — you’re covering visuals plus keyboard and SR behavior, and removing it from tab order is often the right call for a disabled-like link. When you implement this “disabled link,” what exact ARIA/attribute pattern do you use for screen readers (e.g., `aria-disabled`, role changes), and how do you keep the announcement consistent across browsers?
What are you looking for in your next role?
Dmytro, when you build a custom button component, what semantic HTML element do you choose by default, and in what cases would you use something else?
Finally, CSS is a fundamental technology in front-end development, enabling developers to control the layout, styling, and visual presentation of web applications. Who proposed CSS, and in what year was it first introduced?
What achievement in the past year are you most proud of?
Good—treating it as a tokenized layout concern and relying on `gap` is usually the most maintainable way to keep rhythm consistent across components. How do you achieve pixel-perfect typography alignment (cap-height/baseline) between an SVG icon and text across browsers—do you rely on `line-height`, `vertical-align`, flex alignment, or something else?
That’s a clear rationale, Dmytro, and your “skip disabled items” rule is well stated. Can you describe a specific situation where this approach might confuse users, and how you’d adjust the wording or UI to make it clearer?
Briefly tell about the stack you use in your daily work.
Clear explanation, Dmytro—good use of delegation and "closest" checks; your flow is easy to follow. When you say you handle keyboard "the same way," can you walk me through exactly which keys you support and how you keep focus from landing on disabled links?
Describe a complex trade-off you have faced.
Follow-up: when designing a public component library, would you expose props as `interface` or `type`, and how do you weigh extensibility (merging/augmentation) versus
In TypeScript, what’s the practical difference between `interface` and `type`, and when would you prefer one over the other in
Thanks, Dmytro — using `aria-disabled`, controlling focus with `tabindex`, and adding `aria-describedby` for the reason is a solid accessibility baseline. From a performance angle, if you have thousands of these links in a virtualized list, how would you implement the “prevent navigation when disabled” behavior without attaching per-item event listeners?
That makes sense—keeping the public contract closed avoids unintended API drift, and discriminated unions are a strong reason to prefer `type`. When you’re implementing that button to be pixel-perfect and responsive, how do you handle spacing and alignment so icon+label stays visually consistent across breakpoints and font-size changes?
What new skill or tool have you recently learned?
Could you please introduce yourself and briefly walk me through your background?