diff --git a/site/blueprints/pages/privacy.yml b/site/blueprints/pages/privacy.yml new file mode 100644 index 0000000..c9628fb --- /dev/null +++ b/site/blueprints/pages/privacy.yml @@ -0,0 +1,41 @@ +title: Confidentialité +icon: lock + +tabs: + content: + label: Contenu + icon: text + columns: + - width: 1/3 + fields: + backgroundImage: + label: Image de fond + type: files + max: 1 + layout: cards + accept: image/* + translate: false + + - width: 2/3 + fields: + body: + label: Corps + type: blocks + fieldsets: + text: + extends: blocks/text + fields: + text: + headings: + - 3 + nodes: + - heading + marks: + - bold + - italic + - underline + - strike + - link + + files: tabs/files + seo: seo/page diff --git a/site/config/menu.php b/site/config/menu.php index c88dcc5..a7b0f9d 100644 --- a/site/config/menu.php +++ b/site/config/menu.php @@ -30,7 +30,8 @@ return [ 'jouer' => menuItem('jouer', 'Jouer', 'play', 'pages/jouer'), 'a-propos' => menuItem('a-propos', 'À propos', 'users', 'pages/a-propos'), 'blog' => menuItem('blog', 'Blog', 'text', 'pages/blog'), - 'white-papers' => menuItem('livres-blancs', 'Livres blancs', 'book', 'pages/livres-blancs'), + 'white-papers' => menuItem('livres-blancs', 'Livres blancs', 'book', 'pages/livres-blancs'), + 'confidentialite' => menuItem('confidentialite', 'Confidentialité', 'lock', 'pages/confidentialite'), '-', 'users', 'system', diff --git a/site/templates/portfolio.json.php b/site/templates/portfolio.json.php index dfe1640..a14345d 100644 --- a/site/templates/portfolio.json.php +++ b/site/templates/portfolio.json.php @@ -1,8 +1,11 @@ defaultLanguage()->code(); + $specificData = [ 'backgroundImage' => $page->backgroundImage()->toFile()?->url(), - 'projects' => $page->children()->listed()->map(function($project) { + 'projects' => $page->children()->listed()->map(function($project) use ($defaultLang) { + $mockupFile = $project->content($defaultLang)->mockup()->toFile(); return [ 'title' => $project->title()->value(), 'slug' => $project->slug(), @@ -14,9 +17,9 @@ $specificData = [ 'srcset' => $f->srcset('gallery'), 'webp' => $f->srcset('gallery-webp'), ])->values(), - 'mockup' => $project->content(kirby()->defaultLanguage()->code())->mockup()->toFile()?->url(), - 'mockupSrcset' => $project->content(kirby()->defaultLanguage()->code())->mockup()->toFile()?->srcset('mockup'), - 'mockupWebp' => $project->content(kirby()->defaultLanguage()->code())->mockup()->toFile()?->srcset('mockup-webp'), + 'mockup' => $mockupFile?->url(), + 'mockupSrcset' => $mockupFile?->srcset('mockup'), + 'mockupWebp' => $mockupFile?->srcset('mockup-webp'), 'galleryAnimationMode' => $project->galleryAnimationMode()->value() ?: 'vertical', 'secondsPerImage' => $project->secondsPerImage()->isNotEmpty() ? (int) $project->secondsPerImage()->value() : 8, 'galleryBackgroundColor' => $project->galleryBackgroundColor()->value(), diff --git a/site/templates/privacy.json.php b/site/templates/privacy.json.php new file mode 100644 index 0000000..80f02b3 --- /dev/null +++ b/site/templates/privacy.json.php @@ -0,0 +1,21 @@ +body()->toBlocks() as $block) { + if ($block->type() === 'text') { + $bodyBlocks[] = [ + 'type' => 'text', + 'html' => $block->content()->text()->value(), + ]; + } +} + +$specificData = [ + 'backgroundImage' => $page->backgroundImage()->toFile()?->url(), + 'body' => $bodyBlocks, +]; + +$pageData = array_merge($genericData, $specificData); + +header('Content-Type: application/json'); +echo json_encode($pageData); diff --git a/site/templates/privacy.php b/site/templates/privacy.php new file mode 100644 index 0000000..f31b64d --- /dev/null +++ b/site/templates/privacy.php @@ -0,0 +1,2 @@ + + diff --git a/src/App.svelte b/src/App.svelte index 68ee0a5..9ceb7af 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -17,6 +17,7 @@ import Blog from '@views/Blog.svelte' import Article from '@views/Article.svelte' import WhitePapers from '@views/WhitePapers.svelte' + import Privacy from '@views/Privacy.svelte' import Default from '@views/Default.svelte' const templates = { @@ -30,6 +31,7 @@ blog: Blog, article: Article, 'white-papers': WhitePapers, + privacy: Privacy, default: Default } @@ -37,13 +39,15 @@ const wrapperTransform = $derived(`translateX(-${slides.activeIndex * 100}vw)`) const linesBySlide = { - home: [6, 11, 16], - expertise: [6, 8, 11, 14, 16], - about: [6, 8, 11, 14, 16], - portfolio: [11, 16], + home: [6, 11, 16], + expertise: [6, 8, 11, 14, 16], + about: [6, 8, 11, 14, 16], + portfolio: [11, 16], + privacy: [6, 8, 11, 14, 16], } const ALL_COLS = [6, 8, 11, 14, 16] - const activeLines = $derived(new Set(linesBySlide[slides.active?.template] ?? [])) + const activeTemplate = $derived(slides.standalone?.template ?? slides.active?.template) + const activeLines = $derived(new Set(linesBySlide[activeTemplate] ?? [])) let isReady = $state(false) let isResizing = $state(false) @@ -143,22 +147,29 @@
-
- {#each slides.all as slide, i} -
- {#if slide.loaded} - - {/if} -
- {/each} -
+ {#if slides.standalone} + + {:else} +
+ {#each slides.all as slide, i} +
+ {#if slide.loaded} + + {/if} +
+ {/each} +
+ {/if}
diff --git a/src/components/layout/Footer.svelte b/src/components/layout/Footer.svelte index 3c99870..61c9eb9 100644 --- a/src/components/layout/Footer.svelte +++ b/src/components/layout/Footer.svelte @@ -1,5 +1,6 @@ + +
navigation.setScrolled(sectionEl.scrollTop > 100)} +> +
+ {#if body.length > 0} +
+ {#each body as block} + {#if block.type === 'text'} +
+ {@html block.html} +
+ {/if} + {/each} +
+ {/if} + +
+
+
+ + diff --git a/src/views/WhitePaper.svelte b/src/views/WhitePaper.svelte index 5607615..ee871db 100644 --- a/src/views/WhitePaper.svelte +++ b/src/views/WhitePaper.svelte @@ -375,15 +375,6 @@ width: 100vw; max-width: none; scale: 1.5; - - /* position: absolute; - bottom: -10%; - left: 50%; - transform: translateX(-50%); - width: 75%; - max-width: 300px; - z-index: 0; - pointer-events: none; */ } /* Quand le formulaire est affiché : masque le contenu principal */