fix(build): single-brace JSX for schoolUrl, migrate images.domains to remotePatterns
All checks were successful
Build and Push Docker Images / Build Backend (FastAPI) (push) Successful in 32s
Build and Push Docker Images / Build Frontend (Next.js) (push) Successful in 1m10s
Build and Push Docker Images / Build Pipeline (Meltano + dbt + Airflow) (push) Successful in 32s
Build and Push Docker Images / Trigger Portainer Update (push) Successful in 1s

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-29 14:15:06 +01:00
parent 784febc162
commit 6315f366c8
6 changed files with 14 additions and 16 deletions

View File

@@ -317,7 +317,7 @@ function CompactSchoolItem({ school, onAddToCompare, isInCompare }: CompactSchoo
<div className={styles.compactItem}> <div className={styles.compactItem}>
<div className={styles.compactItemContent}> <div className={styles.compactItemContent}>
<div className={styles.compactItemHeader}> <div className={styles.compactItemHeader}>
<a href={{schoolUrl(school.urn, school.school_name)}} className={styles.compactItemName}> <a href={schoolUrl(school.urn, school.school_name)} className={styles.compactItemName}>
{school.school_name} {school.school_name}
</a> </a>
{school.distance !== undefined && school.distance !== null && ( {school.distance !== undefined && school.distance !== null && (
@@ -353,7 +353,7 @@ function CompactSchoolItem({ school, onAddToCompare, isInCompare }: CompactSchoo
> >
{isInCompare ? '✓ Comparing' : '+ Compare'} {isInCompare ? '✓ Comparing' : '+ Compare'}
</button> </button>
<a href={{schoolUrl(school.urn, school.school_name)}} className="btn btn-tertiary btn-sm"> <a href={schoolUrl(school.urn, school.school_name)} className="btn btn-tertiary btn-sm">
View View
</a> </a>
</div> </div>

View File

@@ -267,7 +267,7 @@ export function RankingsView({
)} )}
</td> </td>
<td className={styles.schoolCell}> <td className={styles.schoolCell}>
<a href={{schoolUrl(ranking.urn, ranking.school_name)}} className={styles.schoolLink}> <a href={schoolUrl(ranking.urn, ranking.school_name)} className={styles.schoolLink}>
{ranking.school_name} {ranking.school_name}
</a> </a>
</td> </td>
@@ -277,7 +277,7 @@ export function RankingsView({
<strong>{displayValue}</strong> <strong>{displayValue}</strong>
</td> </td>
<td className={styles.actionCell}> <td className={styles.actionCell}>
<a href={{schoolUrl(ranking.urn, ranking.school_name)}} className="btn btn-tertiary btn-sm">View</a> <a href={schoolUrl(ranking.urn, ranking.school_name)} className="btn btn-tertiary btn-sm">View</a>
<button <button
onClick={() => handleAddToCompare(ranking)} onClick={() => handleAddToCompare(ranking)}
disabled={alreadyInComparison} disabled={alreadyInComparison}

View File

@@ -25,7 +25,7 @@ export function SchoolCard({ school, onAddToCompare, onRemoveFromCompare, showDi
<div className={`${styles.card} ${isInCompare ? styles.cardInCompare : ''}`}> <div className={`${styles.card} ${isInCompare ? styles.cardInCompare : ''}`}>
<div className={styles.header}> <div className={styles.header}>
<h3 className={styles.title}> <h3 className={styles.title}>
<Link href={{schoolUrl(school.urn, school.school_name)}}> <Link href={schoolUrl(school.urn, school.school_name)}>
{school.school_name} {school.school_name}
</Link> </Link>
</h3> </h3>
@@ -146,7 +146,7 @@ export function SchoolCard({ school, onAddToCompare, onRemoveFromCompare, showDi
)} )}
<div className={styles.actions}> <div className={styles.actions}>
<Link href={{schoolUrl(school.urn, school.school_name)}} className="btn btn-primary"> <Link href={schoolUrl(school.urn, school.school_name)} className="btn btn-primary">
View Details View Details
</Link> </Link>
{onAddToCompare && ( {onAddToCompare && (

View File

@@ -61,7 +61,7 @@ export function SchoolRow({
{/* Line 1: School name + Ofsted badge */} {/* Line 1: School name + Ofsted badge */}
<div className={styles.line1}> <div className={styles.line1}>
<a href={{schoolUrl(school.urn, school.school_name)}} className={styles.schoolName}> <a href={schoolUrl(school.urn, school.school_name)} className={styles.schoolName}>
{school.school_name} {school.school_name}
</a> </a>
{school.ofsted_grade && ( {school.ofsted_grade && (
@@ -155,7 +155,7 @@ export function SchoolRow({
{/* Right: actions, vertically centred */} {/* Right: actions, vertically centred */}
<div className={styles.rowActions}> <div className={styles.rowActions}>
<a href={{schoolUrl(school.urn, school.school_name)}} className="btn btn-tertiary btn-sm"> <a href={schoolUrl(school.urn, school.school_name)} className="btn btn-tertiary btn-sm">
View View
</a> </a>
{(onAddToCompare || onRemoveFromCompare) && ( {(onAddToCompare || onRemoveFromCompare) && (

View File

@@ -73,7 +73,7 @@ export function SecondarySchoolRow({
{/* Line 1: School name + Ofsted badge */} {/* Line 1: School name + Ofsted badge */}
<div className={styles.line1}> <div className={styles.line1}>
<a href={{schoolUrl(school.urn, school.school_name)}} className={styles.schoolName}> <a href={schoolUrl(school.urn, school.school_name)} className={styles.schoolName}>
{school.school_name} {school.school_name}
</a> </a>
{school.ofsted_grade && ( {school.ofsted_grade && (
@@ -155,7 +155,7 @@ export function SecondarySchoolRow({
{/* Right: actions */} {/* Right: actions */}
<div className={styles.rowActions}> <div className={styles.rowActions}>
<a href={{schoolUrl(school.urn, school.school_name)}} className="btn btn-tertiary btn-sm"> <a href={schoolUrl(school.urn, school.school_name)} className="btn btn-tertiary btn-sm">
View View
</a> </a>
{(onAddToCompare || onRemoveFromCompare) && ( {(onAddToCompare || onRemoveFromCompare) && (

View File

@@ -16,12 +16,10 @@ const nextConfig = {
// Image optimization // Image optimization
images: { images: {
domains: [ remotePatterns: [
'tile.openstreetmap.org', { protocol: 'https', hostname: '*.tile.openstreetmap.org' },
'a.tile.openstreetmap.org', { protocol: 'https', hostname: 'tile.openstreetmap.org' },
'b.tile.openstreetmap.org', { protocol: 'https', hostname: 'cdnjs.cloudflare.com' },
'c.tile.openstreetmap.org',
'cdnjs.cloudflare.com',
], ],
formats: ['image/avif', 'image/webp'], formats: ['image/avif', 'image/webp'],
minimumCacheTTL: 60, minimumCacheTTL: 60,