docs(website, sanity): standardisere og migrere komponentdokumentasjonen - #444
docs(website, sanity): standardisere og migrere komponentdokumentasjonen#444ceciliehrr wants to merge 3 commits into
Conversation
8f84ba5 to
7658813
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 11 out of 12 changed files in this pull request and generated no new comments.
Suppressed comments (6)
apps/studio-linje/components/TitleSuggestionsInput.tsx:63
Cardrendres som<button>uten eksplisitttype. I forms kan default væresubmit, som kan gi uønsket submit/sideeffekter. Setttype="button"på knappene i dropdownen.
<Card
key={s}
as="button"
padding={3}
radius={1}
tone="default"
style={{
apps/studio-linje/schemaTypes/objects/componentDocTab.ts:31
componentDocTabkan nå lagres med verkensectionsellercontentsatt, som gir tomme faner i dokumentasjonen. Legg til validering som krever minst én seksjon (eller legacycontentmens migreringen pågår).
defineField({
name: 'sections',
title: 'Seksjoner',
type: 'array',
of: [{ type: 'docSection' }],
description:
'Legg til seksjoner med standardtitler (f.eks. Bruk, Retningslinjer, Eksempler).',
}),
apps/documentation/src/components/Navigations/TableOfContent/SanityTableOfContent.tsx:28
extractHeadingsFromPortableTextlegger nå til TOC-overskrifter fortextBlocks.title(når variant ikke eralert).textBlocks-resolveren renderer ikke tittelen som en heading/anchor i DOM, så TOC-lenker kan peke til ikke-eksisterende anker (og potensielt vise "spøkelses"-overskrifter). Begrens TOC-generering til typer som faktisk renderer heading anchors (f.eks.docSectionog Portable Textblock-headings).
if (
(block._type === 'docSection' ||
(block._type === 'textBlocks' && block.variant !== 'alert')) &&
block.title
) {
apps/studio-linje/components/TitleSuggestionsInput.tsx:13
TitleSuggestionsInputinitialiserersearchTermfraprops.value, men synker ikke state når verdien endres utenfra (f.eks. undo/redo, patch fra andre felter, initialValue). Det kan gjøre at inputen viser feil verdi. Synk state motprops.value.
This issue also appears on line 57 of the same file.
const [searchTerm, setSearchTerm] = useState(props.value ?? '');
const [showDropdown, setShowDropdown] = useState(false);
const filtered = suggestions.filter(s =>
s.toLowerCase().includes(searchTerm.toLowerCase()),
apps/studio-linje/components/AutocompleteTagInput.tsx:113
Cardrendres som<button>uten eksplisitttype. I forms kan default væresubmit, som kan gi uønsket submit/sideeffekter. Setttype="button"på valg-knappene i dropdownen.
<Card
key={tag}
as="button"
padding={3}
radius={1}
tone="default"
style={{
apps/studio-linje/components/AutocompletePageFieldInput.tsx:135
Cardrendres som<button>uten eksplisitttype. I forms kan default væresubmit, som kan gi uønsket submit/sideeffekter. Setttype="button"på valg-knappene i dropdownen.
<Card
key={option.value}
as="button"
padding={3}
radius={1}
tone="default"
style={{
|
Preview for this PR in https://entur-design-system--preview-444-etu-74037-standardise-g27zywq8.web.app |
|
Legger ved et resultat fra Claude for min egen hukommelses skyld: |
daa005e to
90c83b9
Compare
5478735 to
64166ca
Compare
@magnusrand Ser på og fikser disse nå 🙏 |
|
ed84b1e to
8abfccc
Compare
4408706 to
fc826f7
Compare
There was a problem hiding this comment.
Denne PR-en brekker Table of Content i sanity-genererte dokumenter. ToC vises, men å velge et ankerpunkt skroller frem til punktet. Dette funker per i dag, så det er noe med den nye ID-håndteringen som ikke fungerer.
There was a problem hiding this comment.
Fant den til slutt — var HeadingIdContext.tsx sin "ambient reuse"-endring (implisitt useContext-oppslag for å dele ID-teller på tvers av docSections). Den plukket opp gamle, allerede-inkrementerte tellere fra Gatsby sin "Query on demand" i dev-modus, som ga "+1" på alle overskrifts-IDer. Bekreftet med A/B-test at kun denne filens diff forårsaket det. Fikset i 015c32f: reverterte til main sin enkle logikk, og gjorde delt telling eksplisitt via en sharedHeadingIds-prop i stedet for implisitt oppslag. Testet på nytt på begge sidene – fungerer nå.
Dette ble et rabbithole for Claude stakkar, men vi fant ut av det 😅
974bbf4 to
1b3ffb0
Compare
…tion model Replaces the flat, per-tab content field with a sections array of docSection blocks (title + items), so each component doc tab is built from named, reorderable sections instead of one long portable text blob. Adds TitleSuggestionsInput for consistent section/tab title suggestions across docs, and a Sanity schema resolver so _rawSections is always queryable even before gatsby-source-sanity can infer its shape from ingested data. Extends TOC extraction to recurse into group/guideline/imageAndText blocks (they nest content under content/text, not items, so headings inside them were silently skipped and their DOM ids drifted out of sync with what the TOC linked to). Shared heading-id counting across a tab's docSection siblings is now explicit rather than inferred: PortableText takes a sharedHeadingIds prop, set only by the one caller (a docSection body) that is always rendered inside its own tab's HeadingIdProvider. The previous approach — HeadingIdProvider guessing whether to reuse an ambient counter via a bare useContext lookup — could not tell an intended parent provider from one still mounted from an unrelated render pass, and Gatsby dev's query-on-demand refetching left exactly that kind of overlap, so ids on Sanity-rendered pages silently drifted by one count and every TOC link resolved to the wrong heading in dev mode. Verified live against both a sanityPage and a componentDoc with docSection content.
Adds a dedicated standard for what to write and where in a componentDoc, including how to migrate a tab from legacy content to the new sections model, and updates the surrounding Sanity skill references (querying, patching, schema) to match the docSection structure.
015c32f to
684645b
Compare
Todo:
💡 Hvorfor?
Komponentdokumentasjonen i Sanity manglet en felles standard for struktur. Fanene hadde ingen fast
inndeling, og innholdsforfattere måtte finne opp hjulet på nytt for hver komponent. Målet er en
forutsigbar og gjenbrukbar struktur med faste faner (Oversikt, Kode, Tilgjengelighet) og seksjoner
med standardtitler (Bruk, Retningslinjer, Komponentprops osv.).
🔧 Hvordan?
kodeeksempler, props-tabeller, guidelines m.m.)
content-feltet (textBlocks). Det gamle feltet beholdes som deprecated og skjult frem til alle
dokumenter er migrert — ingen breaking change for eksisterende data
korrekt under overgangen
🧩 Type endring
🖼️ Skjermbilder
Legges til etter at Logo er migrert og testet lokalt.
💬 Tilleggsnotater
av denne PR-en
umiddelbart, test i vei!
etter godkjenning fra teamet
💣 Breaking changes
Ikke aktuelt — gammelt content-felt beholdes og rendres korrekt inntil alle dokumenter er migrert.
✅ Sjekkliste
🧪 Testing
gammelt format. Logo testes lokalt med ny struktur via overlayDrafts i development mode