An onClick on the card's root gives you a mouse handler and nothing else. The div is not in the tab order, Enter and Space do nothing, no role is announced, and there is no context menu, no middle-click to open a new tab and no link preview.
- Put a real <a> or <button> inside the card and let it cover the surface: the link goes on the title, and a positioned pseudo-element stretched to the card's edges makes the whole card the target. The tab stop, the role and the URL stay on the link.
- The overlay has costs. Text under it can no longer be selected with the mouse, and any other control in the card has to be raised above it, which makes a second tab stop inside the first one's area.
- If the card needs a whole-card link and an actions row, do not stretch the link. Link the title only. Controls inside a control work for neither the mouse nor the keyboard.
- hoverable is the visual half of the same promise, and only the mouse sees it. Keyboard focus needs a visible focus ring on the same surface.
- disabled blocks the keyboard too. It dims the card and sets inert, so buttons and links inside cannot be clicked, focused or read by a screen reader. Opacity and pointer-events: none alone leave them in the tab order.