MotirBuilding in public
MOTIR · moooon
onMotir
You’re viewing a public project. Anyone can view it — no account needed. Sign in to submit, upvote, or comment on requests.View-only — you can’t edit work items
MOTIR-435

6.14.5 Tree UI — a private epic expanded by a public viewer shows the "this epic is not public" placeholder instead of children

Done
Description

Estimate: 45m · Depends on: 6.14.1, 6.14.4

Build the work-item TREE placeholder per the 6.14.1 design, over the 6.14.4 enforcement. When a public/non-member viewer EXPANDS a private epic in the tree, the children rows are replaced by the "this epic is not public" placeholder.

  • The private epic row: render the epic title + kind icon (IssueTypeIcon) + the "private" badge (Pill tone) per the design; render NO child count / progress / point total (the 6.14.4 projection already omits them, so there is nothing to display — the UI must NOT reconstruct or estimate them).
  • The expand placeholder: on expand, because the projection returned the "children-hidden" marker and zero children, render the inline "this epic is not public" placeholder (an EmptyState-family panel) at the child-indent level instead of a child list — the exact copy from 6.14.1. The viewer can still expand/collapse the row; it just never reveals children.
  • Member parity: a project MEMBER expanding the SAME epic sees the children normally (the 6.14.4 projection returns them for a member) — the placeholder is driven entirely by the marker in the payload, so the member path renders children with no special-casing.

Uses ONLY shipped components/ui/* + --el-* / [data-display-style] tokens (no Tier-0 --color-*, no raw spacing/radius), matching the 6.14.1 design.

Acceptance criteria

  • A public/non-member viewer expanding a private epic in the tree sees the "this epic is not public" placeholder (the 6.14.1 copy) at the child indent, NOT a child list; the epic row shows title + "private" badge and NO count / progress / points.
  • The placeholder is driven by the 6.14.4 "children-hidden" marker (no child in the payload); a project member expanding the same epic sees the children normally.
  • Only --el-* + [data-display-style] tokens + shipped components/ui/*; matches the 6.14.1 design; AA contrast holds for the badge + placeholder.

Context refs

  • 6.14.1 (design asset — required), 6.14.4 (the projection + the "children-hidden" marker the row reads).
  • the work-item tree component + the epic-row / expand rendering — the surface this extends.
  • motir-core/components/ui/* (IssueTypeIcon, Pill, the EmptyState family) + app/globals.css token layers; motir-core/CLAUDE.md § colour + shape tokens.