feat(settings): menu and body-text font size, and a bolder menu by default
The sidebar read as muted 13px; the menu items now use their own size at medium weight so they carry at a glance (Todoist-ish). Both sizes are choices under Settings → Appearance: - Menu font size drives a dedicated --menu-size the sidebar uses. - Body text size re-scales the shared type tokens (the list and the notes), the same mechanism a look uses. The two are independent on purpose — one is a glance down a list of names, the other a paragraph you read. Kept in localStorage like theme and look, and applied in app.html before first paint so a chosen size does not flash in and resize. Four steps each (Small/Default/Large/Largest); Default carries no attribute so the base tokens stand. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
c0c1281415
commit
8dfab618f7
@@ -245,6 +245,38 @@ test('hver fane under indstillinger renderer', async ({ page }) => {
|
||||
expect(trouble).toEqual([]);
|
||||
});
|
||||
|
||||
test('menu- og brødtekststørrelse sættes hver for sig og overlever en genindlæsning', async ({
|
||||
page
|
||||
}) => {
|
||||
const trouble = watchForTrouble(page);
|
||||
await page.goto('/indstillinger');
|
||||
|
||||
// Two independent knobs under Udseende — the sidebar's size, and the body text's.
|
||||
await page.getByLabel('Menu', { exact: true }).selectOption('large');
|
||||
await page.getByLabel('Brødtekst', { exact: true }).selectOption('xl');
|
||||
await expect(page.getByLabel('Menu', { exact: true })).toHaveValue('large');
|
||||
|
||||
const attrs = () =>
|
||||
page.evaluate(() => [
|
||||
document.documentElement.dataset.menuSize,
|
||||
document.documentElement.dataset.textSize
|
||||
]);
|
||||
expect(await attrs()).toEqual(['large', 'xl']);
|
||||
|
||||
// They live in localStorage like the theme, so they survive a reload — and are
|
||||
// applied before first paint, so the picker comes back showing the saved choice.
|
||||
await page.reload();
|
||||
expect(await attrs()).toEqual(['large', 'xl']);
|
||||
await expect(page.getByLabel('Menu', { exact: true })).toHaveValue('large');
|
||||
|
||||
// Put them back, so the shared account does not leak a size into other tests.
|
||||
await page.getByLabel('Menu', { exact: true }).selectOption('default');
|
||||
await page.getByLabel('Brødtekst', { exact: true }).selectOption('default');
|
||||
expect(await attrs()).toEqual([undefined, undefined]);
|
||||
|
||||
expect(trouble).toEqual([]);
|
||||
});
|
||||
|
||||
/**
|
||||
* The PWA's own files. Both of the bugs found last in this project were of this
|
||||
* kind — a manifest promising icons that were never generated — and they are
|
||||
|
||||
Reference in New Issue
Block a user