feat(design): a video's one action list (C1) — the card's "…", the menu holds the rest (E28 S3e1)

- useContextMenu gains buttonProps (a row's visible "…" opens the same menu under the button; a
  second press closes it) and anchor (the element the menu came from, for a panel a row opens).
- ui/MoreButton; ActionMenu rows can run inGesture (a clipboard write inside the click, Safari).
- useVideoActions: one builder for a video's menu (play / restart, channel, watched, save, add to
  playlist, download, details, copy title / link, hide, reset, pin), composed by the feed and by
  Home's rails; the playlists and details panels open anchored beside the card (VideoFollowUp).
- The card keeps watched / save / add to playlist and the "…": on the picture on hover (the
  duration steps aside), in the rows' action column; on touch only a 44px "…" beside the title.
  Download, hide, reset and the hover info card leave the card.
- The title is selectable: a click ending a selection neither plays nor follows the link.
- DESIGN.md: how C1 is built + the log row.
This commit is contained in:
2026-09-26 01:23:44 +02:00
parent 9d7526ee57
commit 75ae810866
26 changed files with 1189 additions and 557 deletions
+3 -1
View File
@@ -22,6 +22,8 @@
"menu": {
"label": "Video",
"unmarkWatched": "Mark unwatched",
"unsave": "Remove from saved"
"unsave": "Remove from saved",
"more": "More actions",
"openChannel": "Open the channel"
}
}
+8
View File
@@ -42,5 +42,13 @@
"movedOver": "“{{title}}” moved to position {{pos}} of {{total}}.",
"dropped": "“{{title}}” dropped at position {{pos}} of {{total}}.",
"cancelled": "Move cancelled; “{{title}}” is back at position {{pos}}."
},
"copy": {
"title": "Copy title",
"name": "Copy name",
"link": "Copy link",
"done": "Copied to the clipboard",
"linkDone": "Link copied to the clipboard",
"failed": "Couldn't copy to the clipboard"
}
}
+3 -1
View File
@@ -22,6 +22,8 @@
"menu": {
"label": "Videó",
"unmarkWatched": "Megnézés visszavonása",
"unsave": "Törlés a mentettek közül"
"unsave": "Törlés a mentettek közül",
"more": "További műveletek",
"openChannel": "Csatorna megnyitása"
}
}
+8
View File
@@ -42,5 +42,13 @@
"movedOver": "„{{title}}” a(z) {{pos}}. helyre került a(z) {{total}} közül.",
"dropped": "„{{title}}” letéve a(z) {{pos}}. helyre a(z) {{total}} közül.",
"cancelled": "Mozgatás megszakítva; „{{title}}” visszakerült a(z) {{pos}}. helyre."
},
"copy": {
"title": "Cím másolása",
"name": "Név másolása",
"link": "Link másolása",
"done": "Vágólapra másolva",
"linkDone": "Link a vágólapra másolva",
"failed": "Nem sikerült a vágólapra másolni"
}
}