diff --git a/site/blueprints/site.yml b/site/blueprints/site.yml index 36fb972..80e54ef 100644 --- a/site/blueprints/site.yml +++ b/site/blueprints/site.yml @@ -14,19 +14,19 @@ columns: status: listed - width: 1/2 fields: - contact_email: + contactEmail: label: Email type: email width: 1/2 translate: false - contact_address: + contactAddress: label: Adresse type: writer buttons: false nodes: false width: 1/2 placeholder: 33 rue Jean Dupont - social_links: + socialLinks: label: Liens réseaux sociaux type: structure translate: false @@ -55,7 +55,7 @@ columns: contact: type: fields fields: - mentions_legales: + legalNotices: label: Mentions légales (PDF) type: files max: 1 diff --git a/site/controllers/site.php b/site/controllers/site.php index 75b5cdb..a3ab047 100644 --- a/site/controllers/site.php +++ b/site/controllers/site.php @@ -24,6 +24,18 @@ return function ($page, $kirby, $site) { 'name' => $l->name() ]; })->values(), + 'contact' => [ + 'email' => (string)$site->contactEmail()->value(), + 'address' => (string)$site->contactAddress()->value(), + 'socials' => $site->socialLinks()->toStructure()->map(function($item) { + return [ + 'label' => (string)$item->label()->value(), + 'url' => (string)$item->url()->value(), + 'picto' => (string)$item->picto()->value(), + ]; + })->values(), + 'legalNotice' => $site->legalNotices()->toFile()?->url(), + ], 'navigation' => $navPages->map(function($p) use ($kirby) { $titles = []; foreach ($kirby->languages() as $lang) { diff --git a/src/components/layout/Header.svelte b/src/components/layout/Header.svelte index 55e213a..25b9cff 100644 --- a/src/components/layout/Header.svelte +++ b/src/components/layout/Header.svelte @@ -2,6 +2,7 @@ import { navigation } from '@state/navigation.svelte' import { locale } from '@state/locale.svelte' import { slides } from '@state/slides.svelte' + import Menu from '@components/layout/Menu.svelte' const isMenuOpen = $derived(navigation.isMenuOpen) const currentLang = $derived(locale.current) @@ -41,6 +42,7 @@ onclick={toggleMenu} aria-label={isMenuOpen ? 'Fermer le menu' : 'Ouvrir le menu'} aria-expanded={isMenuOpen} + aria-controls="main-menu" > @@ -53,6 +55,8 @@ + + diff --git a/src/router/index.js b/src/router/index.js index 2e2a712..edf64d0 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -16,29 +16,19 @@ async function loadSlide(path) { slides.setLoading(path, true); } - console.log(`[router] loadSlide: ${path}`); - try { const response = await fetch(`${path}.json`); if (!response.ok) throw new Error(`HTTP ${response.status}`); const data = await response.json(); - console.log(`[router] fetch ok: ${path}`, { - template: data.template, - hasSite: !!data.site, - navigation: data.site?.navigation, - }); - if (!siteInitialized && data.site) { site.set(data.site); locale.initialize(data.site.language, data.site.languages); slides.init(data.site.navigation); siteInitialized = true; - console.log(`[router] slides initialized:`, slides.all.map(s => s.path)); } slides.setData(path, data); - console.log(`[router] setData done: ${path}, slides loaded:`, slides.all.map(s => `${s.path}=${s.loaded}`)); } catch (error) { console.error(`[router] Failed to load slide ${path}:`, error); slides.setLoading(path, false); @@ -72,12 +62,10 @@ export function slideTo(path, { skipHistory = false } = {}) { export async function initRouter() { const initialPath = normalizePath(window.location.pathname); - console.log(`[router] initRouter, initialPath: ${initialPath}`); await loadSlide(initialPath); const idx = slides.getIndexByPath(initialPath); - console.log(`[router] after initial load, idx=${idx}, slides.all.length=${slides.all.length}`); if (idx !== -1) { slides.setActiveIndex(idx); } diff --git a/src/state/site.svelte.js b/src/state/site.svelte.js index 01271e7..1aeaeaa 100644 --- a/src/state/site.svelte.js +++ b/src/state/site.svelte.js @@ -4,6 +4,7 @@ let language = $state('fr') let languages = $state([]) let logo = $state(null) let navigation = $state([]) +let contact = $state({}) export const site = { get title() { return title }, @@ -12,6 +13,7 @@ export const site = { get languages() { return languages }, get logo() { return logo }, get navigation() { return navigation }, + get contact() { return contact }, set: (data) => { title = data.title || '' @@ -20,5 +22,6 @@ export const site = { languages = data.languages || [] logo = data.logo || null navigation = data.navigation || [] + contact = data.contact || {} } }