Conversation
e3d1a28 to
7829f8d
Compare
7829f8d to
ba25bd7
Compare
ba25bd7 to
bda8a64
Compare
bda8a64 to
4530322
Compare
There was a problem hiding this comment.
Pull request overview
Legger til en konfigurerbar forside i portalen ved å introdusere en Sanity-singleton for forsiden, samt nye React-komponenter og styling for hero/portalseksjoner/nyheter/bildestripe. PR-en erstatter også tidligere “placeholder”-forside og justerer header-layout og Next.js-konfig for Sanity-bilder.
Changes:
- Ny Sanity-dokumenttype (
jokul_frontpage) + desk-structure entry, samt GROQ-query og typegenererte resultater for forsidedata. - Ny forsideimplementasjon i Next (komponentisert) med hero-logoanimasjon, lenkekort, bildestripe og “nyheter/sist oppdatert”.
- Oppdateringer i header/CSS og Next.js image remotePatterns for å støtte Sanity CDN.
Reviewed changes
Copilot reviewed 26 out of 26 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| portal/src/sanity/types.ts | Oppdaterte typegen-typer og la til FrontpageQueryResult + Jokul_frontpage. |
| portal/src/sanity/schemas/index.ts | Registrerer ny frontpage-schema type. |
| portal/src/sanity/schemas/documents/frontpage.ts | Ny Sanity-schema for konfigurerbar forside (hero, lenkekort, grid-bilder, fremhevet nyhet). |
| portal/src/sanity/queries/frontpage.ts | Ny GROQ-query for forsidedata + siste oppdaterte dokumenter. |
| portal/src/frontpagePortalLinks.ts | Default “portal-lenkekort” brukt som initialValue/fallback. |
| portal/src/components/layout/header/Logo.tsx | Forenkler logo til statisk tekst. |
| portal/src/components/layout/header/Header.tsx | Endrer header-markup for nytt layout/sticky wrapper. |
| portal/src/components/layout/global-layout.module.scss | Ny sticky/full-bleed header-styling, fjerner holiday-logo styling. |
| portal/src/components/frontpage/index.ts | Eksporterer nye forsidekomponenter. |
| portal/src/components/frontpage/FrontPagePortalSections/FrontPagePortalSections.tsx | Render av lenkekort-seksjonen på forsiden med fallback til defaults. |
| portal/src/components/frontpage/FrontPagePortalSections/frontPagePortalSections.module.scss | Styling for lenkekort-grid. |
| portal/src/components/frontpage/frontpagePage.module.scss | Wrapper-layout for forsiden. |
| portal/src/components/frontpage/FrontPageNewsSection/* | Nyhetsseksjon (fremhevet + liste) og tilhørende styling. |
| portal/src/components/frontpage/FrontPageLogo/* | Ny hero-logoanimasjon med reduced-motion støtte. |
| portal/src/components/frontpage/FrontPageImageStrip/* | Bildestripe/marquee basert på Sanity-bilder. |
| portal/src/app/(frontend)/page.tsx | Erstatter placeholder-forside med faktisk forside som fetcher fra Sanity. |
| portal/src/app/(frontend)/global.scss | Innfører --portal-inline-padding og bruker den i main-padding. |
| portal/sanity.config.ts | Legger til “Forside” singleton i studio-strukturen og filtrerer bort type i listen. |
| portal/next.config.mjs | Fjerner redirect fra / og legger til images.remotePatterns for cdn.sanity.io. |
| <Card | ||
| as={Link} | ||
| key={link.href} | ||
| href={link.href} | ||
| clickable | ||
| padding="xl" | ||
| className={styles.link} | ||
| > | ||
| <h2 className={styles.linkTitle}>{link.title}</h2> | ||
| <p className={styles.linkDescription}>{link.description}</p> | ||
| </Card> |
There was a problem hiding this comment.
Disse klikkbare Card-lenkene mangler aria-label. Jøkul anbefaler å gi klikkbare kort et tilgjengelig navn slik at skjermlesere ikke leser opp hele kortinnholdet; vurder å sette et aria-label (f.eks. basert på link.title).
| } | ||
|
|
||
| &:first-of-type { | ||
| grid-column: 1 / 3; |
There was a problem hiding this comment.
grid-column: 1 / 3 på første kort kan opprette implisitte grid-kolonner når layouten bare har én kolonne (smale skjermer), og gi uventet overflow/layout. Bruk heller grid-column: 1 / -1 (span alle eksisterende kolonner) eller begrens regelen til tilfeller der grid faktisk har minst 2 kolonner (f.eks. via media query).
| grid-column: 1 / 3; | |
| @include jkl.from-medium-device { | |
| grid-column: 1 / 3; | |
| } |
| const { data } = await sanityFetch({ | ||
| query: frontpageQuery, | ||
| requestTag: "frontpage", | ||
| tags: [ | ||
| "jokul_frontpage", | ||
| "jokul_component", | ||
| "jokul_fundamentals", | ||
| "jokul_blog_post", | ||
| ], | ||
| }); | ||
| const frontpageData = data as FrontpageQueryResult | null; | ||
| const frontpage = frontpageData?.frontpage || null; | ||
| const latestUpdatedDocuments = frontpageData?.latestUpdatedDocuments || []; |
There was a problem hiding this comment.
data as FrontpageQueryResult omgår typesikkerhet og kan skjule mismatch mellom GROQ-query og genererte typer. Andre sider bruker sanityFetch uten type-assertion (f.eks. portal/src/app/(frontend)/blog/page.tsx), så vurder å la sanityFetch/defineQuery inferere typen direkte eller angi generisk type i fetch-kallet.
4530322 to
d8ddb3b
Compare
Oppsummering
Testing