BC
Brad CodyAdministrator
Current productShared components and patterns
Reverse spec drafted

File and image uploader

Drag-and-drop, picker, progress, retry, preview, metadata, permissions and attachment behavior.

Observed routeShared componentFuture Spec 16
Current maturityReusable pattern identified; canonical component contract required
Evidence confidencePartially verified
Last reviewedAugust 4, 2026
Visual evidenceDeferred during UI updates

Current-state summary

File and image uploader appears across the current product but is not yet governed as one fully documented reusable component. Record Files supports upload and a grid, inspiration uses image tiles, Notes mentions attachments and Applications require documents, but one upload queue and validation contract is not visible.

Interface inventory

Anatomy and verified behavior

Verification states separate observed behavior from requirements or assumptions.

ElementCurrent behaviorVerification
Canonical interactionSupport picker and drag/drop with explicit accepted types, size/count limits and destination context. Create upload queue with progress, cancel, retry, checksum/deduplication and failure reason. Collect title/type/visibility where required; image previews preserve orientation and originals; security scanning occurs before availability.Required reusable contract
Data contractStore immutable File object, version, checksum, media metadata, uploader, source, visibility and typed links; binary storage is separate from business Document meaning.Required shared storage and API behavior
AccessibilityDrop zone also provides labelled file input; queue progress and errors are announced; previews have meaningful alt text or decorative designation.Required before component is approved for reuse
Reuse inventoryRecord Files, Project inspiration, Internal Notes, Application Documents, receiving photos, delivery proof, Credentials, Project PresentationsKnown current and future consumers
Current inconsistenciesDifferent surfaces imply separate upload patterns. Progress/retry and malware-processing states are not evidenced. Visibility defaults and metadata requirements vary.Observed or identified correction work

User journeys

Current flows

01

Use File and image uploader

  1. Render from the shared component registry
  2. Load canonical value and configuration
  3. Accept keyboard, pointer or assistive-technology input
  4. Validate and normalize
  5. Persist canonical value with provenance
  6. Render the same meaning in profiles, grids, filters, exports and integrations
Observed result

This is the required cross-product journey; implementation consistency varies today.

State model

Current and expected states

Default

Value can be entered or selected with a visible label.

Focused

Must provide a visible focus indicator without layout shift.

Disabled or read-only

Must distinguish unavailable input from view-only canonical value.

Required or optional

Requirement is communicated in label, schema and validation—not colour alone.

Invalid or warning

Inline message explains the problem and preserves the user’s input where safe.

Loading or saving

Async work prevents duplicate commands and remains announced.

Empty or cleared

Null, empty string, zero and empty collection retain distinct meanings.

Product rules

Non-negotiable boundaries

  • Build once and reuse the same component, schema and formatter in every Workspace experience.
  • Display formatting is separate from canonical storage.
  • Every value has a stable field key, type, validation, privacy classification and version.
  • Client validation improves usability; server validation remains authoritative.
  • Equivalent values render consistently in forms, grids, profiles, filters, exports, notifications and documents.
  • Support picker and drag/drop with explicit accepted types, size/count limits and destination context.
  • Create upload queue with progress, cancel, retry, checksum/deduplication and failure reason.
  • Collect title/type/visibility where required; image previews preserve orientation and originals; security scanning occurs before availability.
Dependencies
Spec 16 Design System and Reusable ComponentsShared field registryDesign tokensDynamic formsPermissionsLocalization and accessibility testing

Known current limitations · 3 mapped

What is missing, broken or unverified

Future Spec 16 owns closure →
  1. Different surfaces imply separate upload patterns.
  2. Progress/retry and malware-processing states are not evidenced.
  3. Visibility defaults and metadata requirements vary.

Future alignment

Required evolution

  • 01Promote this pattern into the approved component library.
  • 02Replace local copies incrementally and retain migration adapters only where required.
  • 03Add automated interaction, validation, accessibility and serialization tests.
  • 04Track reuse across: Record Files, Project inspiration, Internal Notes, Application Documents, receiving photos, delivery proof, Credentials, Project Presentations.

Current baseline

Acceptance record

  • The component has one public API and canonical data contract.
  • All required states are documented and tested.
  • Formatting and validation are consistent across every consumer.
  • Keyboard and screen-reader testing passes.
  • Existing inconsistent copies have an owner and migration plan.

Reverse-spec completeness

Documentation coverage

The interface is still changing, so visual evidence and repository tracing remain intentionally incomplete.

Purpose and user outcome

Documented

Roles and access

Documented

Routes and entry points

Documented

Page and component anatomy

Documented

Fields and displayed data

Documented

Primary actions

Documented

Forms and validation

Documented

States and transitions

Documented

Empty, loading and error states

Documented

Responsive behavior

Partial

Accessibility behavior

Partial

Activity and audit events

Partial

Data sources and persistence

Documented

Notifications and automation

Partial

Known defects and limitations

Documented

Reusable component dependencies

Documented

Future-spec conflicts

Partial

Visual and repository evidence

Deferred

Acceptance of current baseline

Documented