Skip to content

feat(LINCHPIN-5639): Build the admin screen on the shared Linchpin UI library - #20

Merged
aaronware merged 2 commits into
mainfrom
issue/LINCHPIN-5639
Sep 22, 2026
Merged

aaronware merged 2 commits into
mainfrom
issue/LINCHPIN-5639

Conversation

@aaronware

@aaronware aaronware commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

Psst is the first real consumer of @linchpinagency/ui. Task: Standard admin component library: linchpin/ui.

@linchpinagency/ui@0.3.0 is published and this branch is on it. (The library released as 0.3.0, not the 0.2.3 this was first written against — release-please treats a feature on a pre-1.0 package as a minor bump.)

What changed

The brand bar, page header, two-column body, help column, footer and danger zone all come from the library now. Four hand-rolled components and both Linchpin logo files are gone, the sidebar is three of the library's cards, and admin.scss drops from 413 lines to 220.

Was Now
components/topbar.js + 2 SVGs <LinchpinAdminTopBar>
components/masthead.js + TabPanel <LinchpinAdminPage> (core's Page) + sectionNavigation()
components/footer.js <LinchpinAdminFooter>
components/notices.js <LinchpinNotices>
Local Section / PageCard wrappers <SettingsCard>
Uninstall as an ordinary card <DangerZone>
Hand-built BRAND and UTM links defineBrand() + linchpinLinks()

Sections are links rather than TabPanel state, so ?tab=pages is a real address that survives a save — the URLs the e2e suite already navigates to are unchanged. A fifth section renders the standard About Linchpin page.

Two changes to the Pages section

  • The page picker puts search and create on one line, separated by an "or", with the help text under both.
  • The front end accounts switch now appears beside the three pages it governs, and those pages keep their heading and status badge but hide their inputs until it is on. That replaces three copies of a notice explaining why the inputs did not work. Gating follows the unsaved draft, so flipping it reveals the pickers and the problem count immediately.

Verified

Every section in a browser against the Studio site: settings, pages, secrets, health, about. The accounts switch round-trips — saving it on created the three account pages and all five went to Ready — and I toggled it back off afterwards. Snackbar centres at 720/720 with only the library's class on it. No console errors.

lint:js, lint:css, build, 15 crypto tests and 106 PHP tests pass. The Playwright e2e suite was not run locally (needs the Playground server); its selectors are intact.

… library

The brand bar, page header, two column body, help column, footer and danger
zone now come from @linchpinagency/ui. That removes four hand rolled
components, the two Linchpin logo files and 190 lines of stylesheet, and the
sidebar becomes three of the library's cards.

Sections are links rather than TabPanel state, so ?tab= is a real address that
survives a save, and a fifth section renders the standard About Linchpin page.

Two changes to the Pages section while it was open: the page picker puts search
and create on one line, and the front end accounts switch appears beside the
three pages it governs, with their inputs hidden until it is on.

Requires @linchpinagency/ui 0.2.3, which is not published yet, so npm ci will
fail until it is.
…ibrary

The library released as 0.3.0 rather than the 0.2.3 this branch was written
against: release-please treats a feature on a pre-1.0 package as a minor bump,
and a caret range on a 0.x version pins the minor, so ^0.2.3 would not have
matched it.

Verified against the published package rather than a local pack: lint, build
and both test suites pass, and the chrome lands in build/admin.css with no
webpack configuration of its own.
@aaronware
aaronware merged commit 16aa637 into main Sep 22, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant