docs/briefs/file-download.md

Module brief: FileDownloadModule

Slug / tier / group / category: file-download · standard · features · Content One-liner: Gated file delivery — an artefact-unlock target. Closest references: CollectionModule (thumb rows), TicketModule (status badge), CtaRow footer like ProductModule.

Anatomy (top → bottom)

  • ModuleShell, title default "Downloads"
  • Body: file rows — filetype tile (extension label), name, size · kind meta, per-row state (download arrow when unlocked, lock icon when locked)
  • Footer: CtaRow "Download all" (solid) when unlocked; "Unlock with your tap" (soft, disabled look handled by host) when locked

Content model (props)

prop type sample value
files {name, size, kind?, url?}[] Stems.zip 240MB, Artwork.png 12MB
locked boolean true
unlockHint string "Tap your tag to unlock"
onDownload (file?) => void host-driven

Client-editable fields

key label type
title Module title text
locked Locked toggle
actionLabel CTA label text
header Show header toggle

States & interactions

Locked: rows muted + lock icons + hint line; CTA becomes the unlock prompt. Unlocked: per-row download + Download all. onDownload is host-driven (storage/CDN later).

Out of scope

Actual file storage/signing, progress states.