Component Contract

Download

File download link with metadata and icon for pension plan documents across the CAAT member experience.

Demo

Single Download Link

DBplus Member Handbook

PDF · 2.4 MB · Updated Jan 2026

Download List

  • Annual Report 2025

    PDF · 5.1 MB · Updated Mar 2026

  • Beneficiary Designation Form

    PDF · 340 KB · Updated Nov 2025

  • Contribution Rate Sheet

    XLSX · 128 KB · Updated Jan 2026

  • Retirement Application Form

    DOCX · 220 KB · Updated Sep 2025

  • Member Handbook

    PDF · 2.4 MB · Updated Jan 2026

Download Card

Annual Report 2025

Complete financial statements, investment performance, and plan governance highlights for the 2025 fiscal year.

PDF · 5.1 MB · Updated Mar 2026

Contribution Rate Sheet

Current contribution rates for employers and members across all CAAT plan options.

XLSX · 128 KB · Updated Jan 2026

Retirement Application

Complete this form to begin your retirement process with CAAT Pension Plan.

DOCX · 220 KB · Updated Sep 2025

Grouped Downloads

Member Forms

  • Beneficiary Designation Form

    PDF · 340 KB · Updated Nov 2025

  • Retirement Application Form

    DOCX · 220 KB · Updated Sep 2025

  • Leave of Absence Notification

    PDF · 180 KB · Updated Jun 2025

Annual Reports

  • Annual Report 2025

    PDF · 5.1 MB · Updated Mar 2026

  • Annual Report 2024

    PDF · 4.8 MB · Updated Mar 2025

1. Summary

Component NameDownload
AEM Resource Typecaat/components/content/download
PurposeProvides a standardized download link with file-type icon, document title, metadata (type, size, date), and action button for pension plan documents.
VariantsSingle link, download list, download card, grouped downloads
Status Enhance
ReplacesDownload (#33)
Content TypesPension forms, annual reports, member guides, contribution rate sheets

2. Design Tokens

TokenRoleValue (default)
--caat-blue-900Title text colour#003750
--caat-blue-700DOCX icon colour#0b5a80
--caat-blue-100DOCX icon background, group header border#e7f4fb
--caat-greenXLSX icon colour#55a546
--caat-grey-200Item border colour#dfe6ef
--caat-focusFocus outline colour#005fcc
--caat-inkBody text colour#102637
--caat-radiusBorder radius.75rem
--caat-font-primaryTitle font family'Libre Franklin', sans-serif

3. Authoring Fields

FieldTypeRequiredNotes
Document TitleTextYesDisplayed as .caat-download__title
File AssetDAM path pickerYesAccepts PDF, XLSX, DOCX, etc.
File TypeDropdown (auto-detect)YesDrives icon colour coding
File SizeAuto-calculatedPulled from DAM metadata
Last UpdatedDateNoOptional override; defaults to DAM modified date
DescriptionRich textNoCard variant only — short summary
VariantDropdownYessingle | list | card | grouped
Group TitleTextConditionalRequired when variant = grouped
Button LabelTextNoDefault: "Download"

4. Validation Rules

RuleConditionError Message
Document Title requiredField is empty"Please enter a document title."
File Asset requiredNo file selected"Please select a file from the DAM."
Group Title requiredVariant = grouped & title empty"Group title is required for grouped variant."
Supported file typesFile is not PDF/XLSX/DOCX/ZIP"File type not supported. Use PDF, XLSX, DOCX, or ZIP."
Max file sizeFile > 50 MB"File exceeds maximum size of 50 MB."

5. Content Guidance

  • Title: Use the official document name. Keep under 60 characters.
  • Meta format: Always follow "TYPE · SIZE · Updated MMM YYYY" pattern.
  • Description (card): One sentence summarizing the document's purpose. Max 120 characters.
  • Button label: Use action verbs — "Download", "Download Report", "Download Form".
  • Grouping: Limit groups to 5–8 items. Use clear category headers.
  • File naming: Ensure DAM file names are descriptive (no "doc_final_v3.pdf").

6. Semantic HTML

<!-- Single download -->
<div class="caat-download">
  <div class="caat-download__icon caat-download__icon--pdf">
    <i class="bi bi-file-earmark-pdf-fill" aria-hidden="true"></i>
  </div>
  <div class="caat-download__info">
    <p class="caat-download__title">Document Title</p>
    <p class="caat-download__meta">PDF · 2.4 MB · Updated Jan 2026</p>
  </div>
  <div class="caat-download__action">
    <a href="/path/to/file.pdf" class="caat-button" download>
      <i class="bi bi-download" aria-hidden="true"></i> Download
    </a>
  </div>
</div>

<!-- Download list -->
<ul class="caat-download-list">
  <li class="caat-download-list__item">
    <div class="caat-download__icon caat-download__icon--pdf">…</div>
    <div class="caat-download__info">…</div>
    <div class="caat-download__action">…</div>
  </li>
</ul>

<!-- Grouped -->
<div class="caat-download-group">
  <h4 class="caat-download-group__header">Category Name</h4>
  <ul class="caat-download-list">…</ul>
</div>

7. CSS Contract

ClassElementNotes
.caat-downloadBlockFlex container for a single download item
.caat-download--cardModifierVertical card layout variant
.caat-download__iconElement3rem icon container
.caat-download__icon--pdfModifierRed colour coding for PDF
.caat-download__icon--xlsxModifierGreen colour coding for XLSX
.caat-download__icon--docxModifierBlue colour coding for DOCX
.caat-download__infoElementFlex-grow text container
.caat-download__titleElementDocument title — weight 600
.caat-download__metaElementFile type, size, date
.caat-download__descriptionElementCard variant description text
.caat-download__actionElementButton container
.caat-download-listBlockStacked list wrapper (<ul>)
.caat-download-list__itemElementIndividual list item (<li>)
.caat-download-groupBlockGrouped wrapper
.caat-download-group__headerElementCategory heading

8. Accessibility

  • All download links must have descriptive text — avoid generic "Click here".
  • Icons use aria-hidden="true"; screen readers rely on link text.
  • File type and size should be included in visible text or aria-label for context.
  • Focus visible: 3px solid var(--caat-focus) with 2px offset.
  • Grouped downloads use heading hierarchy (h4 for group titles).
  • List variant uses semantic <ul>/<li> for screen reader list navigation.
  • Download links include the download attribute to signal browser download behaviour.
  • Colour is not the only indicator of file type — icon shape + meta text provide redundancy.

9. SEO

  • Document titles are rendered as visible text (not hidden in attributes) for indexing.
  • File URLs should use descriptive slugs: /documents/annual-report-2025.pdf
  • Include structured data (schema.org DigitalDocument) for key publications.
  • Meta descriptions on pages with download lists should reference available documents.
  • Ensure PDFs have accessible text (not scanned images) for search engine parsing.

10. Analytics

Analytics are captured through the shared data-analytics-component attribute on the component root (emitted automatically) and reported to the central data layer. Event names and payloads follow the organisation's standard analytics schema — defined centrally with the analytics team, not invented per component — so no bespoke tracking is specified here.

11. AEM Implementation Notes

  • Resource type: caat/components/content/download
  • Sling Model pulls file metadata (size, type, last modified) from DAM asset.
  • File type icon class is auto-derived from DAM asset MIME type.
  • List and grouped variants use a multifield for multiple document entries.
  • Supports Experience Fragment embedding for reusable download blocks.
  • Author can override auto-detected file size and date if needed.
  • Component is parsys-droppable and allowed in all content containers.

12. Dialog Model

Simplified model — shows field intent and Granite UI resource types, not the literal cq:dialog node tree (e.g. select options are authored as child items nodes).

{
  "jcr:primaryType": "nt:unstructured",
  "sling:resourceType": "cq/gui/components/authoring/dialog",
  "tabs": {
    "properties": {
      "variant": { "type": "select", "options": ["single","list","card","grouped"] },
      "groupTitle": { "type": "textfield", "required": "variant=grouped" }
    },
    "documents": {
      "type": "multifield",
      "fields": {
        "title": { "type": "textfield", "required": true },
        "fileReference": { "type": "pathfield", "rootPath": "/content/dam/caat" },
        "description": { "type": "richtext", "maxLength": 120 },
        "buttonLabel": { "type": "textfield", "defaultValue": "Download" }
      }
    }
  }
}

13. QA Checklist

  • All four variants render correctly.
  • File type icons display correct colour coding (PDF red, XLSX green, DOCX blue).
  • Download button triggers browser download (not navigation).
  • Meta text shows correct file type, size, and date.
  • Hover lift effect works on cards and list items.
  • Focus states visible with keyboard navigation.
  • Responsive stacking on mobile (≤767px).
  • Screen reader announces document title and file info.
  • Analytics events fire on download click.
  • Grouped variant displays category headers correctly.
  • Empty state handled gracefully when no documents configured.

14. Definition of Done

  • Component renders all four variants per contract.
  • BEM class names match CSS contract (§7).
  • Tokens used — no hard-coded colours or fonts.
  • WCAG 2.1 AA: focus visible, semantic list markup, aria-hidden icons.
  • Responsive breakpoints tested (mobile, tablet, desktop).
  • AEM dialog matches dialog model (§12).
  • Analytics data layer events verified in staging.
  • Cross-browser tested (Chrome, Firefox, Safari, Edge).
  • Code reviewed and merged to develop branch.
  • Design System documentation updated.