fix(repo-appearance): make icon-tile menu hover and tint actually work
Three regressions from the menu-conversion commit, all rooted in
`.menuStyle(.borderlessButton)` on `Menu`:
- the menu's button chrome silently overrode `foregroundStyle` on the
preview, so the user-picked color stopped tinting the icon
- the menu intercepted pointer events on its label, so the inner
`.onHover` never fired and neither the accent border nor the
pointing-hand cursor showed
- the borderless menu style added implicit padding around the label
that varied with content, so the row's title and description text
shifted horizontally when the icon was cleared
Fix:
- Switch to `.buttonStyle(.plain)` (preserves `foregroundStyle`,
doesn't intercept hover, no extra padding).
- Move `.onHover`, the accent overlay, `.pointerStyle(.link)`, and the
tooltip to the **outer** Menu — the Menu's bounds (with `.fixedSize`
hugging the label) match the tile, so the ring overlays exactly.
- Lock `.frame(width: previewSize, height: previewSize)` and
`.contentShape(.rect(cornerRadius: 8))` on the inner label so the
tile is a rigid 40×40 click target whether icon is set or cleared.
UX additions:
- Empty state now shows a 1pt dashed secondary-color border around
the questionmark — the macOS "drop zone" / empty-avatar pattern.
Combined with the existing hover ring (solid accent on top), the
affordance reads at rest *and* on hover.
- Help tooltip and the no-icon description text both call out the
preview as the click target ("Click the icon preview to …") so a
user who didn't catch the hover affordance still gets pointed at it.