content-explorer/workplans/evidence/CONTENT-WP-0002-ImplementationNotes.md
tegwick a6e360aaa5 Port the explorer shell: tokens, header, hero, and a generic table.
CONTENT-WP-0002-T01 adapts the pinned OnCo visual system under ui/ without the corpus, mark, or kind routes.

Assistant: grok
Assistant-Session: 01a1346c-fdff-7741-b1af-b7283661554b
2026-10-13 22:51:00 +02:00

2.6 KiB

CONTENT-WP-0002 implementation notes

Date: 2026-10-13

T01 — tokens, layout, header, hero, table

Pinned upstream: b594d7433bf4e408b44215e25e5304696d6f840e.

R4 applies. ResultsTable.tsx in the pin depends on translation, column filters, column resize, and infinite scroll. SiteChrome.tsx and src/app/layout.tsx depend on the OnCo mark, garden art, command palette, and medical footer. Those files were not copied whole.

What landed under ui/:

  • Color tokens, type classes (.display, .kicker), card, chip, button, hero wash, skip link, and sticky table rules, adapted from src/app/globals.css. The table class is records.
  • A sticky header and a footer. The header links to / and #records only, so it does not point at kind routes that do not exist yet.
  • A hero with the upstream structure and Content Explorer copy. The sample is examples/dataspaces/systems-thinking/snapshot.json.
  • ResultsTable renders columns, an empty state, sort buttons, and aria-sort. The parent owns the sort. URL query state stays with T04.

Deviations:

  • Accent values stay the upstream pink (#c2185b / #d6336c). That color is part of the token file being adapted. It is not used as a medical claim.
  • Geist font files are not fetched. The sans stack is the system UI font.
  • Garden keyframes, the OnCo mark, column resize, column filters, and paging are omitted.
  • Sort state is local React state.

Provenance: ui/NOTICE contains Copyright (c) 2026 OnCo and the MIT permission text. Adapted files name the pin.

Checks on 2026-10-13:

  • npm test in ui/: 4 tests passed (sort order, empty state, sort button, aria-sort).
  • npm run typecheck in ui/: tsc --noEmit passed.
  • python3 scripts/check_ui_boundary.py: no oncology, cancer, drug, or target token on UI import lines, and the notice is present. This does not close T07; that gate still has to cover the later components.
  • python3 scripts/validate_fixtures.py and python3 -m unittest tests.test_contract tests.test_ingest passed.
  • next dev on 127.0.0.1:3400 returned the home page (HTTP 200, Next.js 16.3.4). The HTML contained the Content Explorer heading, the skip link, #main, and the fixture titles Feedback, Requisite variety, and Stock and flow model. The rendered page did not contain the words oncology or cancer. The dev server was stopped after that check. No browser pane was available, so this was an HTTP render check, not a keyboard or screenshot pass. Those remain T09.

Not done: kind index, detail, BrowserRow, URL facets, keyboard states, both dataspaces, the formal import gate, or keyboard and small-screen smoke.