Asset Download
Asset Download renders a list of downloadable files — brochures, catalogues, PDFs. Each row carries a label with the file extension, the file size, and a download glyph. Dividers between rows are drawn by Divider, which has first-class support for .tng-asset-download — no extra classes needed.
Quarantine
Asset Download is a list of one or more downloadable assets — brochures, catalogues, PDFs, images that the user is expected to save to their device. Each row carries a label with the file extension, the file size, and a download glyph; the browser handles the actual download via a native <a download>.
Anatomy
Section titled “Anatomy”- Asset download
- File format
- Download
- Label
- File size
When to use it
Section titled “When to use it”Use Asset Download when:
- A small set of supporting documents sits alongside primary content (vehicle brochures, technical specs, terms).
- The meaningful action is “save this file” and the file URL is consumer-supplied.
- The list lives inside the Alternate Content pattern where one pane lists downloads.
Avoid Asset Download when:
- The link should open a page or document in-browser instead of downloading — use a Link or Button with the file URL instead.
- The list is long enough to need filtering, sorting, or pagination — that’s a Table or a custom list.
- The action triggers something other than a static asset download (for example dynamic generation). Asset Download leans on browser-native download; bespoke flows belong elsewhere.
Properties
Section titled “Properties”Label
The visible name of the asset. The link’s accessible name defaults to this visible text (for example “Brochure .JPG 100 MB”), so no extra aria-label is needed in typical use.
File metadata
Each row pairs the label with the file format and size, shown in a muted foreground. The metadata sits next to the label so users can scan format and weight before downloading.
Download
A trailing download glyph signals the action. It is decorative — the visible label already names the action, so the icon stays hidden from assistive tech.
Divider
A thin line separates consecutive items. The Divider component recognises .tng-asset-download directly, so the wrapping markup stays simple.
Platform considerations
Section titled “Platform considerations”Desktop
The full list is visible at once. Keep file names short enough to sit on a single line so the metadata and icon remain aligned along the right edge.
Tablet
The same stack works at narrower widths. Touch targets remain comfortable because each row spans the full container width.
Mobile
Long labels truncate with an ellipsis to keep each row to one line. Make sure the most identifying word leads so the truncation point stays useful.
Best practices
Section titled “Best practices”Use Asset Download for short, focused lists where the action is a file save — never as a generic link list.
Do
Use native <a download> so browsers handle the file save, keep labels short and meaningful, and rely on the visible text for the accessible name unless a specific surface needs a different announcement.
Don't
Don’t reach for Asset Download when the link should open content in-browser, don’t pack the list with so many rows that it needs filtering, and don’t wire it to dynamic actions that aren’t a plain file download.
Content guidelines
Section titled “Content guidelines”Lead each label with the most identifying word — “Brochure”, “Owner’s manual”, “Spec sheet” — so the row scans at a glance. Keep wording short enough to fit on a single line, and let the file extension and size carry the format detail. Use sentence case for readability and avoid repeating the file type in prose (“Brochure PDF” — the extension already tells that story).
Styles
Section titled “Styles”.tng-asset-download wraps a <ul> of one or more downloadable assets. Each row is a native <a> with the download attribute — typography, colours, and label truncation come from existing utilities (.fg-default, .fg-muted, .tng-overflow-ellipsis).
<ul class="tng-asset-download" role="list"> <li> <a class="fg-default" href="#" download> <div> <div class="tng-overflow-ellipsis"> Brochure <span class="fg-muted">.JPG</span> </div> <div class="fg-muted">100 MB</div> </div> <i class="tng-icon icon-download" aria-hidden="true"></i> </a> </li> <li> <a class="fg-default" href="#" download> <div> <div class="tng-overflow-ellipsis"> Brochure <span class="fg-muted">.JPG</span> </div> <div class="fg-muted">100 MB</div> </div> <i class="tng-icon icon-download" aria-hidden="true"></i> </a> </li></ul>An asset download is a list of downloadable file links — each row a native <a download> that names the file, its type, and its size — so it has no dedicated WAI-ARIA interaction pattern; it leans on native link and list semantics, and meets WCAG 2.1 AA. Accessibility hinges on each row’s link taking its accessible name from its visible text, so the file it saves is clear whether the user sees the row, hears it, or tabs to it.
For designers
Section titled “For designers”- The label, file metadata, and download glyph — including their hover and focus states — must maintain accessible contrast on every supported surface. Source: WCAG 1.4.3 Contrast (Minimum).
- Never rely on the download glyph’s colour alone to signal the action — the visible label already names it in text; keep it that way. Source: WCAG 1.4.1 Use of Color.
- Focus styles must stay visible, meet contrast requirements on every supported surface, and be clearly distinguishable from hover. Source: WCAG 2.4.7 Focus Visible.
- Use semantic colour tokens (e.g.
foreground/neutral/default) rather than fixed values, so the component adapts correctly across themes and surfaces.
For developers
Section titled “For developers”Render the assets as a native list — a <ul>, or an <ol> when the order is meaningful — of rows, each a native <a download>. The browser’s native download handling carries keyboard activation, Open in New Tab, and Save Link As for free, so don’t intercept clicks with bespoke JavaScript download logic that would break them. Each row takes its accessible name from its visible text — the file label, its type, and its size — so keep that text self-describing rather than reaching for an aria-label. Don’t wrap the <ul> / <ol> in a landmark unless the surrounding page genuinely needs one; the list is content, not navigation. The per-element roles, names, and states are in the Labelling elements section below.
Labelling elements
Section titled “Labelling elements”Give every element the role, name, and state assistive technology needs.
Download link (row)
Each row is a native <a download>. It takes its accessible name from its visible text — the file label, its type (.PDF), and its size (2 MB) — so a screen reader announces the whole row (“Pricelist .PDF 2 MB”). Keep that text self-describing; only add an aria-label when a surface needs a different announcement, and never leave the name to the icon alone.
List
The wrapping <ul> (or <ol>) carries role="list" explicitly, so the count still announces when list-style is removed — Safari with VoiceOver drops the implicit list role otherwise. It needs no aria-label: the rows are self-describing, so a redundant list label only adds noise.
Download icon
The trailing download glyph is decorative — the visible label already names the action — so mark it aria-hidden="true" to keep it out of the accessibility tree.
Source: WCAG 4.1.2 Name, Role, Value.