diff --git a/src/lib/block-types.ts b/src/lib/block-types.ts index e6e8793..f60c7ae 100644 --- a/src/lib/block-types.ts +++ b/src/lib/block-types.ts @@ -331,6 +331,24 @@ export interface OrganisationsBlockData { layout?: BlockLayout; } +export interface ContactEntry { + _type?: "contact"; + _slug?: string; + name?: string; + role?: string; + email?: string; + phone?: string; + note?: string; +} + +export interface ContactsBlockData { + _type?: "contacts_block"; + _slug?: string; + headline?: string; + contacts?: (string | ContactEntry)[]; + layout?: BlockLayout; +} + /** Live-Strommix-Widget (_type: "live_strommix"). Editorial-Konfig + Platzierungs-Instanz. * Fetched live data from /api/strommix (aggregator) and renders status bucket * derived from `(wind_onshore + wind_offshore + solar) / load * 100`. */ diff --git a/src/lib/components/BlockRenderer.svelte b/src/lib/components/BlockRenderer.svelte index bd3db3d..efbe294 100644 --- a/src/lib/components/BlockRenderer.svelte +++ b/src/lib/components/BlockRenderer.svelte @@ -16,6 +16,7 @@ import CalendarBlock from "./blocks/CalendarBlock.svelte"; import CalendarCompactBlock from "./blocks/CalendarCompactBlock.svelte"; import OrganisationsBlock from "./blocks/OrganisationsBlock.svelte"; + import ContactsBlock from "./blocks/ContactsBlock.svelte"; import OpnFormBlock from "./blocks/OpnFormBlock.svelte"; import InternalComponentBlock from "./blocks/InternalComponentBlock.svelte"; import DeadlineBannerBlock from "./blocks/DeadlineBannerBlock.svelte"; @@ -39,6 +40,7 @@ SearchableTextBlockData, CalendarBlockData, OrganisationsBlockData, + ContactsBlockData, OpnFormBlockData, InternalComponentBlockData, DeadlineBannerBlockData, @@ -91,6 +93,8 @@ {/if} {:else if type === "organisations"} +{:else if type === "contacts_block"} + {:else if type === "opnform"} {:else if type === "internal_component"} diff --git a/src/lib/components/ContactCard.svelte b/src/lib/components/ContactCard.svelte new file mode 100644 index 0000000..64b05dd --- /dev/null +++ b/src/lib/components/ContactCard.svelte @@ -0,0 +1,31 @@ + + +
+
+ {contact.name ?? ""} + {#if contact.role} + {contact.role} + {/if} +
+ {#if contact.phone} + + + {contact.phone} + + {/if} + {#if contact.email} + + + {contact.email} + + {/if} + {#if contact.note} +

{contact.note}

+ {/if} +
diff --git a/src/lib/components/blocks/ContactsBlock.svelte b/src/lib/components/blocks/ContactsBlock.svelte new file mode 100644 index 0000000..52ac719 --- /dev/null +++ b/src/lib/components/blocks/ContactsBlock.svelte @@ -0,0 +1,25 @@ + + +{#if contacts.length > 0} +
+ {#if block.headline} +

{block.headline}

+ {/if} +
+ {#each contacts as contact} +
+ +
+ {/each} +
+
+{/if}