diff --git a/examples/nuxt-app/test/fixtures/landingpage/full-form.json b/examples/nuxt-app/test/fixtures/landingpage/full-form.json
index abd702e624..6026b1ffa4 100644
--- a/examples/nuxt-app/test/fixtures/landingpage/full-form.json
+++ b/examples/nuxt-app/test/fixtures/landingpage/full-form.json
@@ -24,9 +24,9 @@
"showTopicTags": true,
"inPageNavHeadingLevel": "h2",
"background": "default",
- "heroHeader": {
+ "header": {
"title": "Testing forms",
- "introText": "",
+ "summary": "",
"links": {
"title": "",
"items": [],
diff --git a/examples/nuxt-app/test/fixtures/landingpage/home.json b/examples/nuxt-app/test/fixtures/landingpage/home.json
index 8e0b218f13..3bd7837b4a 100644
--- a/examples/nuxt-app/test/fixtures/landingpage/home.json
+++ b/examples/nuxt-app/test/fixtures/landingpage/home.json
@@ -92,9 +92,9 @@
"showInPageNav": true,
"inPageNavHeadingLevel": "h3",
"background": "default",
- "heroHeader": {
+ "header": {
"title": "Test landing page title",
- "introText": "Test landing page title introduction text",
+ "summary": "Test landing page title introduction text",
"links": {
"title": "Want to know more about...",
"items": [
@@ -125,14 +125,14 @@
"height": 959
},
"backgroundImage": null,
- "cornerTopImage": {
+ "cornerTop": {
"src": "https://develop.content.reference.sdp.vic.gov.au/sites/default/files/tide_demo_content/Parliament-of-Victoria.jpg",
"alt": "Demo: Parliament of Victoria",
"title": "Demo: Parliament of Victoria",
"width": 1650,
"height": 915
},
- "cornerBottomImage": {
+ "cornerBottom": {
"src": "https://develop.content.reference.sdp.vic.gov.au/sites/default/files/tide_demo_content/VicFleet-Police-car-on-road.jpg",
"alt": "Demo: VicFleet - Police car on road",
"title": "Demo: VicFleet - Police car on road",
diff --git a/examples/nuxt-app/test/fixtures/landingpage/image-banner.json b/examples/nuxt-app/test/fixtures/landingpage/image-banner.json
index 61b20d67ac..5c12dc732b 100644
--- a/examples/nuxt-app/test/fixtures/landingpage/image-banner.json
+++ b/examples/nuxt-app/test/fixtures/landingpage/image-banner.json
@@ -100,9 +100,9 @@
"showTopicTags": true,
"inPageNavHeadingLevel": "h2",
"background": "default",
- "heroHeader": {
+ "header": {
"title": "Demo Landing Page",
- "introText": "Nulla ultricies dignissim leo, posuere vestibulum erat cursus vitae",
+ "summary": "Nulla ultricies dignissim leo, posuere vestibulum erat cursus vitae",
"links": {
"title": "Want to know more about...",
"items": [
@@ -122,7 +122,7 @@
"height": 650,
"drupal_internal__target_id": 44
},
- "cornerTopImage": {
+ "cornerTop": {
"src": "https://develop.content.reference.sdp.vic.gov.au/sites/default/files/tide_demo_content/Parliament-of-Victoria.jpg",
"alt": "Demo: Parliament of Victoria",
"title": "Demo: Parliament of Victoria",
@@ -130,7 +130,7 @@
"height": 915,
"drupal_internal__target_id": 46
},
- "cornerBottomImage": null,
+ "cornerBottom": null,
"primaryAction": {
"text": "Phasellus congue",
"url": "https://www.vic.gov.au"
diff --git a/packages/nuxt-ripple-preview/pages/oauth/logging-in.vue b/packages/nuxt-ripple-preview/pages/oauth/logging-in.vue
index e8580e65de..77aebecbb4 100644
--- a/packages/nuxt-ripple-preview/pages/oauth/logging-in.vue
+++ b/packages/nuxt-ripple-preview/pages/oauth/logging-in.vue
@@ -31,6 +31,8 @@ onMounted(() => {
title="Logging in..."
:behind-nav="true"
:breadcrumbs="hasBreadcrumbs"
+ :cornerTop="site?.cornerGraphic?.top?.src || true"
+ :cornerBottom="site?.cornerGraphic?.bottom?.src || true"
/>
You will be redirected shortly
diff --git a/packages/nuxt-ripple-preview/pages/oauth/success.vue b/packages/nuxt-ripple-preview/pages/oauth/success.vue
index c32839d33c..62417db8a5 100644
--- a/packages/nuxt-ripple-preview/pages/oauth/success.vue
+++ b/packages/nuxt-ripple-preview/pages/oauth/success.vue
@@ -25,6 +25,8 @@ onMounted(() => {
title="Logged in..."
:behind-nav="true"
:breadcrumbs="hasBreadcrumbs"
+ :cornerTop="site?.cornerGraphic?.top?.src || true"
+ :cornerBottom="site?.cornerGraphic?.bottom?.src || true"
/>
Please wait
diff --git a/packages/nuxt-ripple/components/TideBaseLayout.vue b/packages/nuxt-ripple/components/TideBaseLayout.vue
index 5522bdddd5..197b05e858 100644
--- a/packages/nuxt-ripple/components/TideBaseLayout.vue
+++ b/packages/nuxt-ripple/components/TideBaseLayout.vue
@@ -33,7 +33,16 @@
-
+
+
+
diff --git a/packages/nuxt-ripple/components/TideHeroHeader.vue b/packages/nuxt-ripple/components/TideHeroHeader.vue
new file mode 100644
index 0000000000..3536e36ad9
--- /dev/null
+++ b/packages/nuxt-ripple/components/TideHeroHeader.vue
@@ -0,0 +1,97 @@
+
+
+
+
+ {{ header.summary }}
+
+
diff --git a/packages/nuxt-ripple/error.vue b/packages/nuxt-ripple/error.vue
index e79a6bf86e..a6759fbd05 100644
--- a/packages/nuxt-ripple/error.vue
+++ b/packages/nuxt-ripple/error.vue
@@ -8,7 +8,10 @@
>
-
+
()
-const is404 = computed(() => props.error?.statusCode === '404')
+const is404 = computed(() => props.error?.statusCode === 404)
const title = computed(() => (is404.value ? 'Oops!' : 'Sorry!'))
const site = is404.value ? await useTideSite() : undefined
diff --git a/packages/nuxt-ripple/pages/sitemap.vue b/packages/nuxt-ripple/pages/sitemap.vue
index 48aa0462cd..456c85f2b3 100644
--- a/packages/nuxt-ripple/pages/sitemap.vue
+++ b/packages/nuxt-ripple/pages/sitemap.vue
@@ -22,6 +22,8 @@ const site = await useTideSite()
title="Sitemap"
:behind-nav="true"
:breadcrumbs="hasBreadcrumbs"
+ :cornerTop="site?.cornerGraphic?.top?.src || true"
+ :cornerBottom="site?.cornerGraphic?.bottom?.src || true"
/>
diff --git a/packages/nuxt-ripple/types.d.ts b/packages/nuxt-ripple/types.d.ts
index 30b820bc29..79ba653e7b 100644
--- a/packages/nuxt-ripple/types.d.ts
+++ b/packages/nuxt-ripple/types.d.ts
@@ -47,7 +47,6 @@ export interface TideLink {
text: string
url: string
}
-3
export interface TideMenuItem {
text: string
@@ -74,6 +73,25 @@ export interface TideImageField {
}
}
+export interface TideHeroHeader {
+ title: string
+ summary?: string
+ links?: {
+ title: string
+ items: TideUrlField[]
+ more: TideUrlField
+ }
+ theme?: 'default' | 'reverse' | 'neutral'
+ logoImage?: TideImageField
+ backgroundImage?: TideImageField
+ backgroundImageCaption?: string
+ cornerTop?: TideImageField
+ cornerBottom?: TideImageField
+ primaryAction?: TideUrlField
+ secondaryAction?: TideUrlField
+ secondaryActionLabel?: string
+}
+
export interface TidePageBase {
title: string
created: string
diff --git a/packages/ripple-tide-api/types.d.ts b/packages/ripple-tide-api/types.d.ts
index 97ef191512..33ba23b4ce 100644
--- a/packages/ripple-tide-api/types.d.ts
+++ b/packages/ripple-tide-api/types.d.ts
@@ -25,6 +25,10 @@ export interface TideSiteData {
altText: string
}
showQuickExit: boolean
+ cornerGraphic?: {
+ top?: TideImageField
+ bottom?: TideImageField
+ }
acknowledgementHeader?: string
acknowledgementFooter: string
copyrightHtml: string
@@ -52,7 +56,6 @@ export interface TideLink {
text: string
url: string
}
-3
export interface TideMenuItem {
text: string
diff --git a/packages/ripple-tide-event/components/TideEventHeader.vue b/packages/ripple-tide-event/components/TideEventHeader.vue
deleted file mode 100644
index 59845dd00b..0000000000
--- a/packages/ripple-tide-event/components/TideEventHeader.vue
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
- {{ header.summary }}
-
-
-
-
diff --git a/packages/ripple-tide-event/components/global/TideEvent.vue b/packages/ripple-tide-event/components/global/TideEvent.vue
index 93f3cc0d3b..098b0d8a91 100644
--- a/packages/ripple-tide-event/components/global/TideEvent.vue
+++ b/packages/ripple-tide-event/components/global/TideEvent.vue
@@ -19,10 +19,7 @@
-
+
-
- {{ header.summary }}
-
-
-
-
diff --git a/packages/ripple-tide-grant/components/global/TideGrant.vue b/packages/ripple-tide-grant/components/global/TideGrant.vue
index 3ba5252972..e6ed2acfb1 100644
--- a/packages/ripple-tide-grant/components/global/TideGrant.vue
+++ b/packages/ripple-tide-grant/components/global/TideGrant.vue
@@ -19,10 +19,7 @@
-
+
diff --git a/packages/ripple-tide-landing-page/components/global/TideLandingPage.vue b/packages/ripple-tide-landing-page/components/global/TideLandingPage.vue
index 5e45e4ecb8..121ef8685e 100644
--- a/packages/ripple-tide-landing-page/components/global/TideLandingPage.vue
+++ b/packages/ripple-tide-landing-page/components/global/TideLandingPage.vue
@@ -7,7 +7,7 @@
:pageTitle="page.title"
:pageLanguage="page.lang"
:footerImageCaption="
- page.showHeroImageCaption ? page.heroHeader.backgroundImageCaption : ''
+ page.showHeroImageCaption ? page.header?.backgroundImageCaption : ''
"
:topicTags="page.showTopicTags ? page.topicTags : []"
:updatedDate="page.changed || page.created"
@@ -23,8 +23,8 @@
-
-import { computed, inject } from 'vue'
-import { ITideHeroHeader } from '../../../mapping/hero-header/hero-header-mapping'
-import type { IRplFeatureFlags } from '@dpc-sdp/ripple-tide-api/types'
-import { TideImageField } from '@dpc-sdp/nuxt-ripple/types'
-
-const props = defineProps<{
- header: ITideHeroHeader
- hideBottomCornerGraphic: boolean
- hasBreadcrumbs: boolean
- cornerTop?: TideImageField
- cornerBottom?: TideImageField
-}>()
-
-const cornerTop = computed(() => {
- if (props.header.backgroundImage) {
- return false
- }
-
- return props.header.cornerTopImage?.src || props.cornerTop?.src || true
-})
-
-const cornerBottom = computed(() => {
- if (props.header.backgroundImage || props.hideBottomCornerGraphic) {
- return false
- }
-
- return props.header.cornerBottomImage?.src || props.cornerBottom?.src || true
-})
-
-const secondaryAction = computed(() => {
- if (!props.header.secondaryAction) {
- return null
- }
- return {
- ...props.header.secondaryAction,
- title: props.header.secondaryActionLabel
- }
-})
-
-const featureFlags: IRplFeatureFlags = inject('featureFlags', {
- headerTheme: 'default'
-})
-
-const headerTheme = computed(() => {
- /*
- Theme logic : Reverse and Image variants use the Neutral styling for the blocked title and introduction text.
- The Neutral styling does not affect the ‘Default’ variant of the Header.
- */
- if (props.header.backgroundImage || props.header.theme === 'reverse') {
- if (featureFlags?.headerTheme) {
- return featureFlags.headerTheme
- }
- return props.header.theme
- }
- return props.header.theme
-})
-
-
-
-
- {{ header.introText }}
-
-
diff --git a/packages/ripple-tide-landing-page/mapping/hero-header/__test__/hero-header-mapping.test.ts b/packages/ripple-tide-landing-page/mapping/hero-header/__test__/hero-header-mapping.test.ts
index bd38c6308c..fa816a03df 100644
--- a/packages/ripple-tide-landing-page/mapping/hero-header/__test__/hero-header-mapping.test.ts
+++ b/packages/ripple-tide-landing-page/mapping/hero-header/__test__/hero-header-mapping.test.ts
@@ -1,11 +1,12 @@
import * as jsonapiParse from 'jsonapi-parse'
import { expect, describe, it } from '@jest/globals'
-import { heroHeaderMapping, ITideHeroHeader } from '../hero-header-mapping'
+import { heroHeaderMapping } from '../hero-header-mapping'
+import { TideHeroHeader } from '@dpc-sdp/nuxt-ripple/types'
import { testData } from './test-data'
-const result: ITideHeroHeader = {
+const result: TideHeroHeader = {
title: 'Ripple 2 landing page title',
- introText: "Here's the introduction text",
+ summary: "Here's the introduction text",
links: {
title: 'And here are some header links!',
items: [
@@ -33,14 +34,14 @@ const result: ITideHeroHeader = {
},
backgroundImage: null,
backgroundImageCaption: '',
- cornerTopImage: {
+ cornerTop: {
src: 'https://develop.content.reference.sdp.vic.gov.au/sites/default/files/tide_demo_content/Aerial-shot-of-new-housing-development.jpg',
alt: 'Demo: Aerial shot of new housing development',
title: 'Demo: Aerial shot of new housing development',
width: 1024,
height: 571
},
- cornerBottomImage: {
+ cornerBottom: {
src: 'https://develop.content.reference.sdp.vic.gov.au/sites/default/files/tide_demo_content/VicFleet-Police-car-on-road.jpg',
alt: 'Demo: VicFleet - Police car on road',
title: 'Demo: VicFleet - Police car on road',
diff --git a/packages/ripple-tide-landing-page/mapping/hero-header/hero-header-mapping.ts b/packages/ripple-tide-landing-page/mapping/hero-header/hero-header-mapping.ts
index c1d41b27c4..7c9bd26ffe 100644
--- a/packages/ripple-tide-landing-page/mapping/hero-header/hero-header-mapping.ts
+++ b/packages/ripple-tide-landing-page/mapping/hero-header/hero-header-mapping.ts
@@ -3,29 +3,8 @@ import {
getLinkFromField,
getImageFromField
} from '@dpc-sdp/ripple-tide-api'
-import type {
- TideImageField,
- TideUrlField
-} from '@dpc-sdp/ripple-tide-api/types'
-
-export interface ITideHeroHeader {
- title: string
- introText: string
- links: {
- title: string
- items: TideUrlField[]
- more: TideUrlField
- }
- theme: 'default' | 'reverse' | 'neutral'
- logoImage: TideImageField | null
- backgroundImage: TideImageField | null
- backgroundImageCaption: string
- cornerTopImage: TideImageField | null
- cornerBottomImage: TideImageField | null
- primaryAction: TideUrlField | null
- secondaryAction: TideUrlField | null
- secondaryActionLabel: string
-}
+import type { TideUrlField } from '@dpc-sdp/ripple-tide-api/types'
+import { TideHeroHeader } from '@dpc-sdp/nuxt-ripple/types'
// Intro text goes by many names depending on the content type
const getIntroText = (src) => {
@@ -47,10 +26,10 @@ const getHeaderTheme = (src) => {
return 'default'
}
-export const heroHeaderMapping = (src): ITideHeroHeader => {
+export const heroHeaderMapping = (src): TideHeroHeader => {
return {
title: src.title,
- introText: getIntroText(src),
+ summary: getIntroText(src),
links: {
title: getField(
src,
@@ -81,11 +60,11 @@ export const heroHeaderMapping = (src): ITideHeroHeader => {
src,
'field_landing_page_hero_image.field_media_image'
),
- cornerTopImage: getImageFromField(
+ cornerTop: getImageFromField(
src,
'field_graphical_image.field_media_image'
),
- cornerBottomImage: getImageFromField(
+ cornerBottom: getImageFromField(
src,
'field_bottom_graphical_image.field_media_image'
),
diff --git a/packages/ripple-tide-landing-page/mapping/index.ts b/packages/ripple-tide-landing-page/mapping/index.ts
index 26c79d3f2d..da6be7039a 100644
--- a/packages/ripple-tide-landing-page/mapping/index.ts
+++ b/packages/ripple-tide-landing-page/mapping/index.ts
@@ -45,7 +45,7 @@ const tideLandingPageModule: IRplTideModuleMapping = {
return 'default'
},
- heroHeader: heroHeaderMapping,
+ header: heroHeaderMapping,
primaryCampaign: primaryCampaignMapping,
secondaryCampaign: secondaryCampaignMapping,
headerComponents: async (src, tidePageApi) => {
diff --git a/packages/ripple-tide-landing-page/types.ts b/packages/ripple-tide-landing-page/types.ts
index 14e2747647..367f4cc562 100644
--- a/packages/ripple-tide-landing-page/types.ts
+++ b/packages/ripple-tide-landing-page/types.ts
@@ -2,7 +2,7 @@ import type {
TidePageBase,
TideDynamicPageComponent
} from '@dpc-sdp/ripple-tide-api/types'
-import { ITideHeroHeader } from './mapping/hero-header/hero-header-mapping'
+import { TideHeroHeader } from '@dpc-sdp/nuxt-ripple/types'
import { ITidePrimaryCampaign } from './mapping/primary-campaign/primary-campaign-mapping'
import { ITideSecondaryCampaign } from './mapping/secondary-campaign/secondary-campaign-mapping'
@@ -13,7 +13,7 @@ export interface TideLandingPagePage extends TidePageBase {
showTopicTags: boolean
inPageNavHeadingLevel: 'h2' | 'h3'
background: string
- heroHeader: ITideHeroHeader
+ header: TideHeroHeader
primaryCampaign: ITidePrimaryCampaign
secondaryCampaign: ITideSecondaryCampaign
/**
diff --git a/packages/ripple-tide-media/components/TideMediaHeader.vue b/packages/ripple-tide-media/components/TideMediaHeader.vue
deleted file mode 100644
index efb1d81f50..0000000000
--- a/packages/ripple-tide-media/components/TideMediaHeader.vue
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
diff --git a/packages/ripple-tide-media/components/global/TideMediaAudio.vue b/packages/ripple-tide-media/components/global/TideMediaAudio.vue
index d9377d0756..2db03af3b3 100644
--- a/packages/ripple-tide-media/components/global/TideMediaAudio.vue
+++ b/packages/ripple-tide-media/components/global/TideMediaAudio.vue
@@ -18,7 +18,7 @@
-
+
diff --git a/packages/ripple-tide-media/components/global/TideMediaEmbeddedVideo.vue b/packages/ripple-tide-media/components/global/TideMediaEmbeddedVideo.vue
index 7083c968f6..5f578f957d 100644
--- a/packages/ripple-tide-media/components/global/TideMediaEmbeddedVideo.vue
+++ b/packages/ripple-tide-media/components/global/TideMediaEmbeddedVideo.vue
@@ -18,7 +18,7 @@
-
+
diff --git a/packages/ripple-tide-news/components/TideNewsHeader.vue b/packages/ripple-tide-news/components/TideNewsHeader.vue
deleted file mode 100644
index 3267b9ef7a..0000000000
--- a/packages/ripple-tide-news/components/TideNewsHeader.vue
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
- {{ header.summary }}
-
-
-
-
diff --git a/packages/ripple-tide-news/components/global/TideNews.vue b/packages/ripple-tide-news/components/global/TideNews.vue
index f471983667..2bf8fefe49 100644
--- a/packages/ripple-tide-news/components/global/TideNews.vue
+++ b/packages/ripple-tide-news/components/global/TideNews.vue
@@ -19,7 +19,7 @@
-
+
diff --git a/packages/ripple-tide-publication/components/TidePublicationHeader.vue b/packages/ripple-tide-publication/components/TidePublicationHeader.vue
deleted file mode 100644
index 5085f60ef7..0000000000
--- a/packages/ripple-tide-publication/components/TidePublicationHeader.vue
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- {{ header.summary }}
-
-
-
-
diff --git a/packages/ripple-tide-publication/components/global/TidePublication.vue b/packages/ripple-tide-publication/components/global/TidePublication.vue
index e8dd660e65..8d7a423361 100644
--- a/packages/ripple-tide-publication/components/global/TidePublication.vue
+++ b/packages/ripple-tide-publication/components/global/TidePublication.vue
@@ -23,10 +23,7 @@
-
+
-
+
{
:behind-nav="true"
:breadcrumbs="hasBreadcrumbs"
:full-width="true"
- :corner-top="true"
+ :corner-top="site?.cornerGraphic?.top?.src || true"
:corner-bottom="false"
>
{{ summary }}
diff --git a/packages/ripple-tide-search/components/TideSearchPage.vue b/packages/ripple-tide-search/components/TideSearchPage.vue
index f08dc8428c..519af2625c 100644
--- a/packages/ripple-tide-search/components/TideSearchPage.vue
+++ b/packages/ripple-tide-search/components/TideSearchPage.vue
@@ -122,7 +122,7 @@ const getFilterOptions = (field) => {
:behind-nav="true"
:breadcrumbs="true"
:full-width="true"
- :corner-top="true"
+ :corner-top="site?.cornerGraphic?.top?.src || true"
:corner-bottom="false"
>