fix(ui): the platform layer speaks platform words; boxes scale with the text

- PriorityStepper labelled itself with channels.row.* and told every caller
  it orders the Feed; Combobox said plex.loading / plex.filter.moreRefine /
  sidebar.match on the feed sidebar. The generic strings moved to common.*,
  and what a priority MEANS arrives as the stepper's `hint` prop.
  uiI18n.contract.test.ts pins components/ui/ to the platform namespaces —
  the import boundary could never see an i18n key.
- 32 px-frozen box utilities (w-[150px], max-w-[1600px], left-[18px], …)
  became spacing-scale steps (w-37.5, max-w-400, left-4.5): identical at the
  default text size, and now they grow with the Settings slider instead of
  clipping or re-wrapping their own labels. An eslint rule refuses the px
  form beside the older text-[Npx] one, pinned by pxBox.contract.test.ts;
  measured in the browser that every new step is generated at its old px.
- chipLane's import-strip regex ran past a side-effect import into the next
  statement's `from`, hiding a lane between them; it now stops at the
  import's own `;`.
This commit is contained in:
2026-09-19 07:46:33 +02:00
parent 29875b7367
commit 8018cd4685
36 changed files with 223 additions and 75 deletions
@@ -108,9 +108,6 @@
"editTags": "Edit tags",
"filterFeedByTag": "Filter the Feed by “{{name}}”",
"priorityHint": "Your ranking for this channel. Sort the Feed by “Channel priority” to bring higher-priority channels to the top.",
"raisePriority": "Raise priority",
"lowerPriority": "Lower priority",
"editPriority": "Click to type a priority (negatives allowed)",
"fullHint": "Full history fetched.",
"fullySynced": "fully synced",
"fullySyncedHint": "Recent uploads and the full back-catalog are both in.",
+8 -1
View File
@@ -27,5 +27,12 @@
"scrollRight": "Scroll right",
"search": "Search",
"remove": "Remove",
"noResults": "No matches"
"noResults": "No matches",
"priority": {
"raise": "Raise priority",
"lower": "Lower priority",
"edit": "Click to type a priority (negatives allowed)"
},
"moreRefine": "{{count}} more — refine with search",
"matchMode": "Match"
}
+1 -2
View File
@@ -111,8 +111,7 @@
"remux": "Direct Stream",
"transcode_hw": "Transcode · HW",
"transcode_sw": "Transcode · SW"
},
"moreRefine": "{{count}} more — refine with search"
}
},
"count": "{{count}} titles",
"searchCount": "{{count}} matches",
@@ -20,7 +20,6 @@
"any": "Any",
"all": "All",
"tagModeTooltip": "Match any vs all selected tags",
"match": "Match",
"custom": "Custom",
"from": "From",
"to": "To",
@@ -108,9 +108,6 @@
"editTags": "Címkék szerkesztése",
"filterFeedByTag": "Feed szűrése: „{{name}}”",
"priorityHint": "A te rangsorod ehhez a csatornához. Rendezd a Feedet „Csatorna prioritás” szerint, hogy a magasabb prioritású csatornák felülre kerüljenek.",
"raisePriority": "Prioritás növelése",
"lowerPriority": "Prioritás csökkentése",
"editPriority": "Kattints a prioritás beírásához (negatív is lehet)",
"fullHint": "Teljes előzmény letöltve.",
"fullySynced": "teljesen szinkronban",
"fullySyncedHint": "A legutóbbi feltöltések és a teljes archívum is megvan.",
+8 -1
View File
@@ -27,5 +27,12 @@
"scrollRight": "Görgetés jobbra",
"search": "Keresés",
"remove": "Eltávolítás",
"noResults": "Nincs találat"
"noResults": "Nincs találat",
"priority": {
"raise": "Prioritás növelése",
"lower": "Prioritás csökkentése",
"edit": "Kattints a prioritás beírásához (negatív is lehet)"
},
"moreRefine": "még {{count}} — finomíts kereséssel",
"matchMode": "Egyezés"
}
+1 -2
View File
@@ -111,8 +111,7 @@
"remux": "Közvetlen streamelés",
"transcode_hw": "Átkódolás · HW",
"transcode_sw": "Átkódolás · SW"
},
"moreRefine": "még {{count}} — finomíts kereséssel"
}
},
"count": "{{count}} cím",
"searchCount": "{{count}} találat",
@@ -20,7 +20,6 @@
"any": "Bármelyik",
"all": "Összes",
"tagModeTooltip": "Bármelyik vagy az összes kijelölt címke illeszkedjen",
"match": "Egyezés",
"custom": "Egyéni",
"from": "Ettől",
"to": "Eddig",