diff --git a/CHANGELOG.md b/CHANGELOG.md index c709ee7..682642a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,14 @@ The release version **is** the plugin contract version (`HOST_API_VERSION`), so contract break: a plugin's `apiVersion` must match the host's `major.minor` or discovery refuses it at boot. Entries start at 0.3.0. +## Unreleased + +### One horizontal inset across the content pane + +The topbar, filter bar, pager, form page and empty-table message inset their content by `--pad-x` +(12px), as table cells do, instead of 16px. A plugin that overrides `--pad-x` now moves all of them +together. + ## 0.4.0 **Breaking.** Set `apiVersion: "0.4.0"`. The app shell no longer bounds the content column, so a page diff --git a/public/css/styles.css b/public/css/styles.css index 341a100..3250bc4 100644 --- a/public/css/styles.css +++ b/public/css/styles.css @@ -58,7 +58,7 @@ --radius: 5px; --nav-w: 264px; --row-h: 34px; - --pad-x: 12px; + --pad-x: 12px; /* side padding of the content pane's bars and form page, and of every table cell, so their text lines up */ --fz: 13px; --fz-sm: 12px; --fz-xs: 11px; @@ -336,7 +336,7 @@ span.nav-self { cursor: default; } /* static / non-clickable */ .topbar { flex: 0 0 auto; height: 48px; display: flex; align-items: center; gap: 12px; - padding: 0 16px; border-bottom: 1px solid var(--border); + padding: 0 var(--pad-x); border-bottom: 1px solid var(--border); background: var(--surface); } .hamburger { display: none; } /* shown only on narrow */ @@ -352,7 +352,7 @@ span.nav-self { cursor: default; } /* static / non-clickable */ .filters { flex: 0 0 auto; background: var(--surface); border-bottom: 1px solid var(--border); - padding: 10px 16px; + padding: 10px var(--pad-x); display: flex; flex-direction: column; gap: 9px; } .filter-row { @@ -584,7 +584,7 @@ table.table { .col-num { text-align: right; } .cell-strong { font-weight: 550; } .cell-muted { color: var(--text-muted); } -.table-empty { text-align: center; color: var(--text-muted); padding: 28px 12px; } +.table-empty { text-align: center; color: var(--text-muted); padding: 28px var(--pad-x); } .cell-mono { font-variant-numeric: tabular-nums; font-family: ui-monospace, "SF Mono", Menlo, monospace; font-size: var(--fz-sm); } @@ -648,7 +648,7 @@ th[aria-sort="descending"] .sort-ico { transform: rotate(180deg); } .pager { flex: 0 0 auto; display: flex; align-items: center; gap: 12px; - padding: 8px 16px; border-top: 1px solid var(--border); + padding: 8px var(--pad-x); border-top: 1px solid var(--border); background: var(--surface); font-size: var(--fz-sm); color: var(--text-muted); } .pager .spacer { flex: 1 1 auto; } @@ -696,7 +696,7 @@ th[aria-sort="descending"] .sort-ico { transform: rotate(180deg); } #nav-toggle { position: fixed; top: 0; left: 0; opacity: 0; pointer-events: none; } /* admin forms: create/edit user, account actions */ -.form-page { padding: 16px; display: flex; flex-direction: column; gap: 14px; max-width: 560px; } +.form-page { padding: 16px var(--pad-x); display: flex; flex-direction: column; gap: 14px; max-width: 560px; } .form-card { display: flex; flex-direction: column; gap: 14px; padding: 18px; background: var(--surface); diff --git a/todo.md b/todo.md index 025755f..b536222 100644 --- a/todo.md +++ b/todo.md @@ -6,7 +6,7 @@ `Bar = 1` -`Next ID = 27` +`Next ID = 28` ## Items @@ -24,6 +24,7 @@ | 24 | 0.4.21 | | | **Retire `src/ui/shell-context.ts` and render the dashboard from `ctx.chrome`.** | 2 | 1 | 2 | 3 | 4 | code health by 3 | 9.0 | | 17 | 0.4.21 | | | **Remove the icons no caller uses from `ICON_NAMES` and the sprite.** | 1 | 1 | 1 | 1 | 1 | 8 by 1, code health by 1 | 8.8 | | 21 | 0.4.21 | | | **Fail the gate on a function that exceeds a size or complexity limit.** | 3 | 1 | 1 | 3 | 5 | code health by 4 | 7.2 | +| 27 | 0.4.21 | | | **Inset the scheduling example's lead text, shift count, alerts and call-to-action by `--pad-x`, like the bars around them.** | 1 | 2 | 1 | 2 | 1 | 9 by 2, 2 by 1 | 4.8 | | 25 | 0.4.21 | | | **Point the views' references to `docs/plugin-contract.md` at the README.** | 1 | 2 | 1 | 2 | 1 | 9 by 3 | 4.6 | | 20 | 0.4.21 | | | **Redirect an anonymous hit on a session-needing flow page to sign-in, instead of a 500.** | 2 | 2 | 2 | 4 | 3 | 2 by 4 | 4.2 | | 4 | 0.4.21 | | | **Refuse a permission save whose baseline no longer matches Keto, so concurrent edits are not silently lost.** | 2 | 2 | 2 | 4 | 4 | 2 by 4 | 2.8 | @@ -91,6 +92,11 @@ AGENTS.md → "`ICON_NAMES` is a host-owned registry" already makes this routine Only `tsc --strict` runs today. A new tool is a new dependency, so justify it. +### 27. Inset the scheduling example's lead text, shift count, alerts and call-to-action by `--pad-x`, like the bars around them. + +They sit flush against the content pane's edge while the filter bar, table and pager sit 12px in. +The fix belongs in `examples/plugins/scheduling/public/scheduling.css`; check each page in a browser. + ### 25. Point the views' references to `docs/plugin-contract.md` at the README. `examples/plugins/scheduling/views/shifts.ejs` still cites it.