diff --git a/front/src/content.config.ts b/front/src/content.config.ts index 4e4e162..4ef1500 100644 --- a/front/src/content.config.ts +++ b/front/src/content.config.ts @@ -23,6 +23,7 @@ const ekintzak = defineCollection({ logo { formats } + esteka } } hitzordua diff --git a/front/src/models/Ekintza.ts b/front/src/models/Ekintza.ts index eae8449..fbb9661 100644 --- a/front/src/models/Ekintza.ts +++ b/front/src/models/Ekintza.ts @@ -1,8 +1,14 @@ +import type { Erakundea } from "./Erakundea"; import type { ImageMedia } from "./ImageMedia"; import type { Zikloa } from "./Zikloa"; import dayjs from "dayjs"; import "dayjs/locale/eu"; +export interface Elkarlana { + label: string; + erakundeak?: Erakundea[]; +} + export interface Ekintza { id: string; slug: string; @@ -11,6 +17,7 @@ export interface Ekintza { titularra: string; deskribapena: string; hitzordua: string; + elkarlana?: Elkarlana; sarrera: { label: string; deskribapena: string; diff --git a/front/src/models/Erakundea.ts b/front/src/models/Erakundea.ts new file mode 100644 index 0000000..b85cc4a --- /dev/null +++ b/front/src/models/Erakundea.ts @@ -0,0 +1,7 @@ +import type { ImageMedia } from "./ImageMedia"; + +export interface Erakundea { + izena: string; + logo?: ImageMedia; + esteka?: string; +} diff --git a/front/src/views/ekintza/Ekintza.astro b/front/src/views/ekintza/Ekintza.astro index ef82be2..5610db1 100644 --- a/front/src/views/ekintza/Ekintza.astro +++ b/front/src/views/ekintza/Ekintza.astro @@ -10,6 +10,7 @@ import { getUrl } from "models/Zikloa"; import { getImageData } from "models/ImageMedia"; import "dayjs/locale/eu"; +import Elkarlana from "./_components/Elkarlana.astro"; dayjs.locale("eu"); interface Props { @@ -37,6 +38,14 @@ const irudia = ekintza.mainMedia ? getImageData(ekintza.mainMedia) : null; /> ) } + + { + ekintza.elkarlana && ( +
+ +
+ ) + }

{ekintza.izenburua}

@@ -66,6 +75,14 @@ const irudia = ekintza.mainMedia ? getImageData(ekintza.mainMedia) : null; ) } + + { + ekintza.elkarlana && ( +
+ +
+ ) + }
@@ -178,8 +195,26 @@ const irudia = ekintza.mainMedia ? getImageData(ekintza.mainMedia) : null; .deskribapena { margin-top: var(--space-04-mobile); + color: var(--marroia); + @include mediaQueries.aboveTablet { margin-top: var(--space-05-desktop); } } + + .elkarlana-wrapper-desktop { + margin-top: var(--space-07-desktop); + + @include mediaQueries.belowTablet { + display: none; + } + } + + .elkarlana-wrapper-mobile { + margin-top: var(--space-05-mobile); + + @include mediaQueries.aboveTablet { + display: none; + } + } diff --git a/front/src/views/ekintza/_components/Elkarlana.astro b/front/src/views/ekintza/_components/Elkarlana.astro new file mode 100644 index 0000000..1fa3749 --- /dev/null +++ b/front/src/views/ekintza/_components/Elkarlana.astro @@ -0,0 +1,87 @@ +--- +import { type Elkarlana } from "models/Ekintza"; +import { getImageData } from "models/ImageMedia"; + +interface Props { + elkarlana: Elkarlana; +} + +const { elkarlana } = Astro.props; +--- + +
+

{elkarlana.label}

+ + { + elkarlana.erakundeak?.map((erakundea) => { + const irudia = erakundea.logo ? getImageData(erakundea.logo) : null; + + return ( + + {irudia && ( + {irudia.alt} + )} + + {erakundea.izena} + + ); + }) + } +
+ +