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 @@