dow-prod-tracker/src
DJP 02593ece83 Stage-tagged attachments — per-stage paperclip indicator + general panel
Splits the attachments experience in two:

Top panel (AttachmentsPanel):
- Renamed "Attachments & Links" → "General Assets" with a subtitle
  calling out the split ("Applies to the whole deliverable —
  stage-specific assets live on each pipeline stage").
- List filtered to only show attachments with
  stageDefinitionId == null. Uploads from here default to no-stage.
- Empty-state copy updated to describe the new purpose.

Per-stage indicator (new StageAttachmentIndicator):
- Small paperclip icon + count rendered on each stage row, right
  alongside the status badge.
- Zero + canEdit: paperclip + small "+" so the affordance to add is
  still visible. Zero + read-only: component renders nothing so
  CLIENT_VIEWERs don't see empty affordances they can't act on.
- Click opens a Popover listing attachments tagged to that stage,
  with inline upload + link-add buttons at the bottom. Uploads auto-
  tag to the stage via useUploadFileAttachment({ stageDefinitionId })
  — the mutation already accepted this field, no API change needed.
- Delete allowed on rows from the popover, same canEdit gate.
- Figma embeds preview inline in the popover just like the main panel.

No schema / migration / API / service changes — DeliverableAttachment
already had the stageDefinitionId field, the POST endpoint already
accepted it, and useAttachments already returned stageDefinition.
Pure UI work; rides on the existing query cache so the indicator
counts update instantly when the main panel or a sibling stage
popover writes.
2026-04-21 16:06:48 -04:00
..
app Stage-tagged attachments — per-stage paperclip indicator + general panel 2026-04-21 16:06:48 -04:00
components Stage-tagged attachments — per-stage paperclip indicator + general panel 2026-04-21 16:06:48 -04:00
hooks Assign + book hours in one shot from the stage card 2026-04-21 15:31:20 -04:00
lib Assignment notifications + workload approved-filter + My Work fixes 2026-04-21 15:29:10 -04:00
stores feat: add pipeline stage resolver and organization access control 2026-03-14 22:43:43 -05:00
types Phase 2: per-client-team visibility enforcement 2026-04-20 18:50:00 -04:00
instrumentation.ts automation rules added to settings 2026-03-17 23:07:44 -05:00
middleware.ts Smoke-test fixes: routing collision + XLSX parser + defaults 2026-04-20 19:47:22 -04:00