+
{t('home.ctaTitle')}
@@ -274,7 +297,7 @@ export default function HomePage({
trackEvent('CTA Click', { location: 'bottom', label: 'explore_map' });
onOpenDashboard();
}}
- className="px-8 py-4 bg-coral-500 text-white rounded-lg font-semibold hover:bg-coral-600 transition-colors text-lg shadow-lg shadow-coral-500/25"
+ className="w-full sm:w-auto px-8 py-4 bg-coral-500 text-white rounded-lg font-semibold hover:bg-coral-600 transition-colors text-lg shadow-lg shadow-coral-500/25"
>
{t('home.exploreTheMap')}
@@ -287,4 +310,3 @@ export default function HomePage({
);
}
-
diff --git a/frontend/src/components/invite/InvitePage.tsx b/frontend/src/components/invite/InvitePage.tsx
index 8798327..004dc77 100644
--- a/frontend/src/components/invite/InvitePage.tsx
+++ b/frontend/src/components/invite/InvitePage.tsx
@@ -202,7 +202,9 @@ export default function InvitePage({
{`\u00A3${(Math.round(pricePence * 0.7) / 100).toFixed(2)}`}
-
{t('upgrade.once')}
+
+ {t('upgrade.once')}
+
)}
diff --git a/frontend/src/components/learn/LearnPage.tsx b/frontend/src/components/learn/LearnPage.tsx
index 11747e9..805f2f5 100644
--- a/frontend/src/components/learn/LearnPage.tsx
+++ b/frontend/src/components/learn/LearnPage.tsx
@@ -14,37 +14,111 @@ interface DataSourceDef {
}
const DATA_SOURCE_DEFS: DataSourceDef[] = [
- { id: 'price-paid', url: 'https://www.gov.uk/government/statistical-data-sets/price-paid-data-downloads', license: 'Open Government Licence v3.0' },
- { id: 'epc', url: 'https://epc.opendatacommunities.org/downloads/domestic', license: 'Open Government Licence v3.0', optOutUrl: 'https://www.gov.uk/guidance/energy-performance-certificates-opt-out-of-public-disclosure' },
- { id: 'nspl', url: 'https://www.arcgis.com/sharing/rest/content/items/077631e063eb4e1ab43575d01381ec33/data', license: 'Open Government Licence v3.0' },
- { id: 'iod', url: 'https://www.gov.uk/government/statistics/english-indices-of-deprivation-2025', license: 'Open Government Licence v3.0' },
- { id: 'ethnicity', url: 'https://www.ethnicity-facts-figures.service.gov.uk/uk-population-by-ethnicity/national-and-regional-populations/regional-ethnic-diversity/latest/#download-the-data', license: 'Open Government Licence v3.0' },
+ {
+ id: 'price-paid',
+ url: 'https://www.gov.uk/government/statistical-data-sets/price-paid-data-downloads',
+ license: 'Open Government Licence v3.0',
+ },
+ {
+ id: 'epc',
+ url: 'https://epc.opendatacommunities.org/downloads/domestic',
+ license: 'Open Government Licence v3.0',
+ optOutUrl:
+ 'https://www.gov.uk/guidance/energy-performance-certificates-opt-out-of-public-disclosure',
+ },
+ {
+ id: 'nspl',
+ url: 'https://www.arcgis.com/sharing/rest/content/items/077631e063eb4e1ab43575d01381ec33/data',
+ license: 'Open Government Licence v3.0',
+ },
+ {
+ id: 'iod',
+ url: 'https://www.gov.uk/government/statistics/english-indices-of-deprivation-2025',
+ license: 'Open Government Licence v3.0',
+ },
+ {
+ id: 'ethnicity',
+ url: 'https://www.ethnicity-facts-figures.service.gov.uk/uk-population-by-ethnicity/national-and-regional-populations/regional-ethnic-diversity/latest/#download-the-data',
+ license: 'Open Government Licence v3.0',
+ },
{ id: 'crime', url: 'https://data.police.uk/data/', license: 'Open Government Licence v3.0' },
- { id: 'osm-pois', url: 'https://download.geofabrik.de/europe/great-britain-latest.osm.pbf', license: 'Open Data Commons Open Database License (ODbL)' },
- { id: 'os-open-greenspace', url: 'https://osdatahub.os.uk/downloads/open/OpenGreenspace', license: 'Open Government Licence v3.0' },
- { id: 'naptan', url: 'https://naptan.dft.gov.uk/naptan/schema/2.4/doc/NaPTANSchemaGuide-2.4-v0.57.pdf', license: 'Open Government Licence v3.0' },
- { id: 'noise', url: 'https://environment.data.gov.uk/spatialdata/road-noise-all-metrics-england-round-4/wcs', license: 'Open Government Licence v3.0' },
- { id: 'ofsted', url: 'https://www.gov.uk/government/statistical-data-sets/monthly-management-information-ofsteds-school-inspections-outcomes', license: 'Open Government Licence v3.0' },
- { id: 'broadband', url: 'https://www.ofcom.org.uk/phones-and-broadband/coverage-and-speeds/connected-nations-20252/data-downloads-2025', license: 'Open Government Licence v3.0' },
- { id: 'council-tax', url: 'https://www.gov.uk/government/statistics/council-tax-levels-set-by-local-authorities-in-england-2025-to-2026', license: 'Open Government Licence v3.0' },
- { id: 'ons-rental', url: 'https://www.ons.gov.uk/peoplepopulationandcommunity/housing/datasets/privaterentalmarketsummarystatisticsinengland', license: 'Open Government Licence v3.0' },
+ {
+ id: 'osm-pois',
+ url: 'https://download.geofabrik.de/europe/great-britain-latest.osm.pbf',
+ license: 'Open Data Commons Open Database License (ODbL)',
+ },
+ {
+ id: 'os-open-greenspace',
+ url: 'https://osdatahub.os.uk/downloads/open/OpenGreenspace',
+ license: 'Open Government Licence v3.0',
+ },
+ {
+ id: 'naptan',
+ url: 'https://naptan.dft.gov.uk/naptan/schema/2.4/doc/NaPTANSchemaGuide-2.4-v0.57.pdf',
+ license: 'Open Government Licence v3.0',
+ },
+ {
+ id: 'noise',
+ url: 'https://environment.data.gov.uk/spatialdata/road-noise-all-metrics-england-round-4/wcs',
+ license: 'Open Government Licence v3.0',
+ },
+ {
+ id: 'ofsted',
+ url: 'https://www.gov.uk/government/statistical-data-sets/monthly-management-information-ofsteds-school-inspections-outcomes',
+ license: 'Open Government Licence v3.0',
+ },
+ {
+ id: 'broadband',
+ url: 'https://www.ofcom.org.uk/phones-and-broadband/coverage-and-speeds/connected-nations-20252/data-downloads-2025',
+ license: 'Open Government Licence v3.0',
+ },
+ {
+ id: 'council-tax',
+ url: 'https://www.gov.uk/government/statistics/council-tax-levels-set-by-local-authorities-in-england-2025-to-2026',
+ license: 'Open Government Licence v3.0',
+ },
+ {
+ id: 'ons-rental',
+ url: 'https://www.ons.gov.uk/peoplepopulationandcommunity/housing/datasets/privaterentalmarketsummarystatisticsinengland',
+ license: 'Open Government Licence v3.0',
+ },
];
// Maps data source id → [nameKey, originKey, useKey] in en.ts learnPage section
const DS_KEYS: Record = {
- 'price-paid': ['learnPage.dsPricePaidName', 'learnPage.dsPricePaidOrigin', 'learnPage.dsPricePaidUse'],
- 'epc': ['learnPage.dsEpcName', 'learnPage.dsEpcOrigin', 'learnPage.dsEpcUse'],
- 'nspl': ['learnPage.dsNsplName', 'learnPage.dsNsplOrigin', 'learnPage.dsNsplUse'],
- 'iod': ['learnPage.dsIodName', 'learnPage.dsIodOrigin', 'learnPage.dsIodUse'],
- 'ethnicity': ['learnPage.dsEthnicityName', 'learnPage.dsEthnicityOrigin', 'learnPage.dsEthnicityUse'],
- 'crime': ['learnPage.dsCrimeName', 'learnPage.dsCrimeOrigin', 'learnPage.dsCrimeUse'],
+ 'price-paid': [
+ 'learnPage.dsPricePaidName',
+ 'learnPage.dsPricePaidOrigin',
+ 'learnPage.dsPricePaidUse',
+ ],
+ epc: ['learnPage.dsEpcName', 'learnPage.dsEpcOrigin', 'learnPage.dsEpcUse'],
+ nspl: ['learnPage.dsNsplName', 'learnPage.dsNsplOrigin', 'learnPage.dsNsplUse'],
+ iod: ['learnPage.dsIodName', 'learnPage.dsIodOrigin', 'learnPage.dsIodUse'],
+ ethnicity: [
+ 'learnPage.dsEthnicityName',
+ 'learnPage.dsEthnicityOrigin',
+ 'learnPage.dsEthnicityUse',
+ ],
+ crime: ['learnPage.dsCrimeName', 'learnPage.dsCrimeOrigin', 'learnPage.dsCrimeUse'],
'osm-pois': ['learnPage.dsOsmName', 'learnPage.dsOsmOrigin', 'learnPage.dsOsmUse'],
- 'os-open-greenspace': ['learnPage.dsGreenspaceName', 'learnPage.dsGreenspaceOrigin', 'learnPage.dsGreenspaceUse'],
- 'naptan': ['learnPage.dsNaptanName', 'learnPage.dsNaptanOrigin', 'learnPage.dsNaptanUse'],
- 'noise': ['learnPage.dsNoiseName', 'learnPage.dsNoiseOrigin', 'learnPage.dsNoiseUse'],
- 'ofsted': ['learnPage.dsOfstedName', 'learnPage.dsOfstedOrigin', 'learnPage.dsOfstedUse'],
- 'broadband': ['learnPage.dsBroadbandName', 'learnPage.dsBroadbandOrigin', 'learnPage.dsBroadbandUse'],
- 'council-tax': ['learnPage.dsCouncilTaxName', 'learnPage.dsCouncilTaxOrigin', 'learnPage.dsCouncilTaxUse'],
+ 'os-open-greenspace': [
+ 'learnPage.dsGreenspaceName',
+ 'learnPage.dsGreenspaceOrigin',
+ 'learnPage.dsGreenspaceUse',
+ ],
+ naptan: ['learnPage.dsNaptanName', 'learnPage.dsNaptanOrigin', 'learnPage.dsNaptanUse'],
+ noise: ['learnPage.dsNoiseName', 'learnPage.dsNoiseOrigin', 'learnPage.dsNoiseUse'],
+ ofsted: ['learnPage.dsOfstedName', 'learnPage.dsOfstedOrigin', 'learnPage.dsOfstedUse'],
+ broadband: [
+ 'learnPage.dsBroadbandName',
+ 'learnPage.dsBroadbandOrigin',
+ 'learnPage.dsBroadbandUse',
+ ],
+ 'council-tax': [
+ 'learnPage.dsCouncilTaxName',
+ 'learnPage.dsCouncilTaxOrigin',
+ 'learnPage.dsCouncilTaxUse',
+ ],
'ons-rental': ['learnPage.dsRentalName', 'learnPage.dsRentalOrigin', 'learnPage.dsRentalUse'],
};
@@ -207,53 +281,53 @@ export default function LearnPage() {
const keys = DS_KEYS[source.id];
const [nameKey, originKey, useKey] = keys;
return (
-
);
})}
@@ -308,9 +382,7 @@ export default function LearnPage() {
>
) : tab === 'faq' ? (