Custom fonts in the appearance pickers, admin screen and licence page #304
Labels
No Label
area:auth
area:docs
area:export
area:ops
area:storage
area:supply-chain
auth
backend
blocked
collab
deployment
docs
effort:L
effort:M
effort:S
frontend
plugins
qa
vs-nfd
vs-nfd:blocker
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: stwaidele/dorfteich#304
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Depends on #303.
Follow-up to the custom-font backend issue: the management screen, the
font pickers, and the licence page.
Depends on the backend issue — the endpoints and the shared catalogue
lookup have to exist first.
Admin management screen
A section in the site-admin settings for uploading and managing custom
fonts:
sans-serif | serif | monospace), licence label, optional licence URL, and one file perweight.
plainly that those ponds fall back to the default look — the backend
supplies this list.
Localised de+en like every other UI surface.
Telling custom fonts apart in the pickers
This is the point of the exercise: in the pond Appearance settings, the
three font slots (heading, body, mono) must show at a glance which
families are shipped with the instance and which the operator provided.
Group them with
<optgroup>rather than a badge or an icon:optgroupis the right tool because the grouping is then part of thecontrol's semantics, not a visual hint — screen readers announce the
group when moving into it, and it survives the native select rendering on
mobile. A coloured badge or a suffix in the label would convey the same
thing to sighted mouse users only.
Custom families appear only in the group matching their category, exactly
as catalogue families do.
Licence page
apps/web/src/pages/FontCatalogPage.tsxlists the catalogue familieswith their licences. Custom fonts join the list, marked as provided by
the operator, showing the licence label and linking the licence URL when
one was given.
This is what makes an attribution requirement satisfiable — many
commercial font licences require naming the foundry or the licence, and
an operator who cannot point at such a page cannot comply.
Accessibility
type requirement (WOFF2, optionally WOFF) is stated in text, not only
enforced on rejection.
file too large — are announced, not just coloured. They go through the
existing form error path so they reach assistive technology.
the consequence in text.
colour or motion alone.
apps/web/e2e/a11y.spec.tsper the standingaccessibility rule (ADR 0017,
code/CLAUDE.md).Acceptance criteria
family with several weights, see it listed, use it in a pond, and
delete it.
labelled groups, in de and en.
and the exported PDF matches.
the a11y spec covers it.
pnpm lint,pnpm typecheck,pnpm i18n:checkand the a11y specpass.