fix(files): an upload is said once in any order, copy buttons speak, a link list that failed says so

- The queue holds an upload it sees land done while this tab's upload still waits for its answer, so
  the dialog's notice is the only one whichever comes first; another device's upload follows after.
- One `useCopyFeedback` for every Copy beside a value (token, share link, set-password link): Copied
  for a moment, a notice a screen reader hears, a warning when the clipboard refuses; the token
  dialog's two Copy buttons are named by what they copy.
- The share dialog's link list shows loading, and a load error with Retry, never "no links" — and no
  New link beside a list it has not seen.
- The settings texts say that signing out elsewhere or a password change revokes the API tokens.
- DESIGN.md logs the folder-link decisions; the design lab keeps only the chosen renderings of the
  Links, Tokens and Files rounds.
This commit is contained in:
2026-10-15 04:58:17 +02:00
parent 827df7494c
commit 2efa7d5a75
23 changed files with 505 additions and 773 deletions
+15 -10
View File
@@ -77,11 +77,14 @@ export default function DesignLab() {
/>
</label>
<nav className="flex flex-wrap gap-1 text-xs">
<a href="#open-tokens" className="rounded-md px-1.5 py-0.5 text-accent state-layer">
Tokens
<a href="#open-links" className="rounded-md px-1.5 py-0.5 text-success state-layer">
Links ✓
</a>
<a href="#open-files" className="rounded-md px-1.5 py-0.5 text-accent state-layer">
Files
<a href="#open-tokens" className="rounded-md px-1.5 py-0.5 text-success state-layer">
Tokens ✓
</a>
<a href="#open-files" className="rounded-md px-1.5 py-0.5 text-success state-layer">
Files ✓
</a>
<a href="#decided" className="rounded-md px-1.5 py-0.5 text-success state-layer">
A ✓
@@ -109,23 +112,25 @@ export default function DesignLab() {
<header id="open-links" className="mt-6 scroll-mt-20">
<h2 className="text-xl font-bold">Decided · Folder links</h2>
<p className="text-sm text-muted">
A /watch link that opens a whole folder. Picked: A, A, A — the variants with the accent
edge (built; on the public list a picture-less row keeps its glyph above the length).
A /watch link that opens a whole folder. Picked: Copy link beside Share with link… in
the folder menu, a list the link opens with the player above it, a link mark in the
rail.
</p>
</header>
<LinksRound />
<header id="open-tokens" className="mt-6 scroll-mt-20">
<h2 className="text-xl font-bold">Decided · API tokens, a machine&apos;s key to Files</h2>
<p className="text-sm text-muted">
Settings → API tokens. Picked: A, A, A — the variants with the accent edge (built; the
expiry is a segmented control, DESIGN.md "A choice between a few values").
Settings → API tokens. Picked: a row per token in three lines, the kind asked first (Hub
csere or Egyedi, rights as chips per folder), the token shown once in the same dialog.
</p>
</header>
<TokensRound />
<header id="open-files" className="mt-6 scroll-mt-20">
<h2 className="text-xl font-bold">Open · Files, the one library</h2>
<h2 className="text-xl font-bold">Decided · Files, the one library</h2>
<p className="text-sm text-muted">
The page that replaces Downloads. The recommended variant has the accent edge.
The page that replaced Downloads. Picked: list rows (the grid a toggle), an app-wide
download tray, a done notification that copies the link.
</p>
</header>
<FilesRound />