Accessibility
Accessibility
Section titled “Accessibility”Asset Download rows are interactive links that trigger a file download. The visible text — label, extension, size — is the link’s accessible name; native semantics carry the rest.
For Design
Section titled “For Design”Visible focus
Section titled “Visible focus”The default browser focus ring stays. Don’t suppress :focus-visible outlines. If the list is placed on a busy or high-contrast surface where the default ring becomes hard to see, a custom outline at ≥3:1 against the surface is the right escape hatch.
Reading order
Section titled “Reading order”Source order is the announcement order. List the assets in the order users would expect to encounter them — most-likely-relevant first.
For Developers
Section titled “For Developers”Native <a download>
Section titled “Native <a download>”The component intentionally relies on the browser’s native download handling. Don’t intercept clicks with custom JavaScript download logic — keyboard activation, Open in New Tab, and Save Link As all break when bespoke handlers replace the navigation.
List semantics
Section titled “List semantics”Put role="list" on the wrapping <ul> even when no list-style is rendered. Some browsers (Safari with VoiceOver in particular) drop the implicit list role when the styling is removed; the explicit role preserves the count announcement.