Skip to content

feat(v3): Shared screens — With me / With others / Via links#18

Merged
zjean merged 1 commit intomainfrom
feat/v3-shared
Apr 23, 2026
Merged

feat(v3): Shared screens — With me / With others / Via links#18
zjean merged 1 commit intomainfrom
feat/v3-shared

Conversation

@zjean
Copy link
Copy Markdown
Owner

@zjean zjean commented Apr 23, 2026

Summary

PR #3 of 9 in milestone 3. Replaces the three `/v2/shared/*` placeholders with a single parameterized `SharedComponent` wired to `SharesService.listShares`.

Stacked on #17 — chain: `feat/v3-shared` → `feat/v3-spaces` → `feat/v3-browser-grid-gallery` → `main`. Auto-retargets as ancestors merge.

What's here

  • Hero: "Shared" eyebrow + variant-specific h1 (`With me` / `With others` / `Via links`) matching the design's editorial headers.
  • Table columns: Name (FileGlyph via `mimeToGlyph` + title + description) · Recipients (`N users · M links`) · Modified (`amTimeAgo`) · row-more.
  • Variant filters against the full shares list:
    • `with-me` → shares where `parent` is set (you're a child-share recipient)
    • `with-others` → shares where `parent` is null (you own the share)
    • `via-links` → shares with at least one link
      The backend doesn't split these into three endpoints; client-side filtering keeps the service surface unchanged.
  • Row click opens `/spaces/shares/` (classic) for m3; v2 shares browser is a future PR.
  • Breadcrumbs push `Shared` → variant label so the TitleBar reflects the sub-view.

Test plan

  • `npm run lint` — clean
  • `npm run build --configuration production` — clean, no budget warnings
  • Reviewer smoke: each of the three left-nav sub-items under Shared loads the right title, the right filtered subset, and navigates into a share on row click.

🤖 Generated with Claude Code

Base automatically changed from feat/v3-spaces to main April 23, 2026 08:00
Replaces the three /v2/shared/{with-me,with-others,via-links} placeholders
with a single parameterized SharedComponent wired to
SharesService.listShares. Each route supplies a { variant } data entry and
the component picks title/eyebrow/filter/empty-copy from a small config map.

- Hero: "Shared" eyebrow + variant-specific h1 ("With me" / "With others"
  / "Via links") matching the design's editorial headers.
- Table columns: Name (FileGlyph via mimeToGlyph + title + description) ·
  Recipients ("N users · M links") · Modified (amTimeAgo) · row-more.
- Variant filters against the full shares list:
    with-me     → shares where parent is set (you're a child-share recipient)
    with-others → shares where parent is null (you own the share)
    via-links   → shares with at least one link
  The backend doesn't split this into three endpoints, so client-side
  filtering keeps service surface unchanged.
- Row click opens /spaces/shares/<alias> (classic) for m3; v2 shares
  browser is a future PR.

Breadcrumbs push "Shared" → variant label so the TitleBar reflects the
chosen sub-view.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@zjean zjean merged commit e41cac0 into main Apr 23, 2026
1 check passed
@zjean zjean deleted the feat/v3-shared branch April 23, 2026 08:05
zjean added a commit that referenced this pull request Apr 23, 2026
## Summary

PR #4 of 9 in [milestone
3](../blob/main/docs/plans/2026-04-23-v3-ui-redesign-milestone3.md).
Replaces the \`/v2/trash\` placeholder with a trash-bin list wired to
\`SpacesService.listTrashBins\`.

**Stacked on [#18](../pull/18) — chain through #17, #16 to \`main\`.**

## What's here

- Toolbar: \"Trash\" title + monoline summary (\`<total> items across
<bins> bins\`) + Restore / Empty trash buttons (both disabled for m3 —
per-item operations land with the v2 trash file-list) + Refresh.
- Columns: Space · Items · Last deletion · \`chevRight\` drill-in.
- Rose-soft glyph block; rows dim to \`opacity: 0.85\` to signal trashed
content, full opacity on hover.
- Click opens \`/spaces/trash/<alias>\` (classic) so users can actually
manage trashed files end-to-end today; the inline Restore / Empty ops
are a follow-up PR.

Also drops the now-unused \`placeholder()\` helper from \`v2.routes.ts\`
since every left-nav destination has a real component.
\`PlaceholderComponent\` stays co-located for remaining milestone-3
AppRail screens (Search / Settings / People) to reuse.

## Test plan

- [x] \`npm run lint\` — clean
- [x] \`npm run build --configuration production\` — clean, no budget
warnings
- [ ] Reviewer smoke: \`/v2/trash\` loads bin list with per-space trash
counts; clicking a row drills into the classic trash browser.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
@zjean zjean restored the feat/v3-shared branch April 24, 2026 06:59
@zjean zjean deleted the feat/v3-shared branch April 24, 2026 07:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant