Components
Public photo library
Make reusable photography discoverable with attribution and an intentional detail/download flow.
On this page
Purpose and placement
Make reusable photography discoverable with attribution and an intentional detail/download flow.
Anatomy
| Part | Behavior |
|---|---|
| Grid | Photo collection previews. |
| Detail | Image, metadata, attribution and permitted download. |
| Zoom | Source image inspection in a dedicated viewer. |
| Attribution field | Copyable credit rather than hidden image-only information. |
Configuration and contract
| Input or decision | Implementation |
|---|---|
| Source family | PhotoLibraryGrid, PhotoDetail, PhotoZoomViewer and attribution/download components. |
| Availability | Depends on public photo records and asset delivery; no gallery capture is claimed in this pass. |
States and feedback
- Grid, selected photo and zoom are source-defined states awaiting applied coverage.
- Credit copy and download outcomes require browser integration checks.
Usage rules
- Preserve licensing/credit context next to the image.
- Do not assume a public URL permits every reuse.
- Use original dimensions for inspection rather than stretching a thumbnail.
Accessibility and verification
Review image descriptions, modal focus, keyboard zoom and copy-result announcements. This page documents source anatomy; it is not evidence of those interactions having passed.
Source references
| File | Responsibility |
|---|---|
| components/photo-library/photo-library-grid.tsx | Audited Townwell implementation; use this file when extending this interface. |
| components/photo-library/photo-detail.tsx | Audited Townwell implementation; use this file when extending this interface. |
| components/photo-library/photo-zoom-viewer.tsx | Audited Townwell implementation; use this file when extending this interface. |
| components/photo-library/attribution-copy-field.tsx | Audited Townwell implementation; use this file when extending this interface. |
Related topics
Source audit: 2026-10-07 · Revision ce8bc72b96da · Documentation v0.1