diff --git a/wp-content/themes/moonshine/acf-json/group_abstract_builder.json b/wp-content/themes/moonshine/acf-json/group_abstract_builder.json
new file mode 100644
index 0000000..423ff49
--- /dev/null
+++ b/wp-content/themes/moonshine/acf-json/group_abstract_builder.json
@@ -0,0 +1,154 @@
+{
+ "key": "group_abstract_builder",
+ "title": "Abstract - Builder",
+ "fields": [
+ {
+ "key": "field_builder_sections",
+ "label": "Section(s)",
+ "name": "sections",
+ "aria-label": "",
+ "type": "flexible_content",
+ "instructions": "",
+ "required": 0,
+ "conditional_logic": 0,
+ "wrapper": {
+ "width": "",
+ "class": "",
+ "id": ""
+ },
+ "acfe_flexible_advanced": 1,
+ "acfe_flexible_stylised_button": 0,
+ "acfe_flexible_hide_empty_message": 0,
+ "acfe_flexible_empty_message": "",
+ "acfe_flexible_layouts_templates": 0,
+ "acfe_flexible_layouts_placeholder": 0,
+ "acfe_flexible_layouts_thumbnails": 0,
+ "acfe_flexible_async": [],
+ "acfe_flexible_add_actions": [
+ "copy",
+ "title",
+ "toggle"
+ ],
+ "acfe_flexible_remove_button": [],
+ "acfe_flexible_remove_top_actions": [],
+ "acfe_flexible_modal_edit": {
+ "acfe_flexible_modal_edit_enabled": "1",
+ "acfe_flexible_modal_edit_size": "xlarge"
+ },
+ "acfe_flexible_modal": {
+ "acfe_flexible_modal_enabled": "0",
+ "acfe_flexible_modal_title": false,
+ "acfe_flexible_modal_size": "xlarge",
+ "acfe_flexible_modal_col": "4",
+ "acfe_flexible_modal_categories": false
+ },
+ "acfe_flexible_modal_settings": {
+ "acfe_flexible_modal_settings_enabled": "1",
+ "acfe_flexible_modal_settings_size": "large",
+ "acfe_flexible_modal_settings_close": "1",
+ "acfe_flexible_modal_settings_close_label": ""
+ },
+ "layouts": {
+ "layout_6852f761e95b0": {
+ "key": "layout_6852f761e95b0",
+ "name": "text_block",
+ "label": "Bloc de texte",
+ "display": "block",
+ "sub_fields": [
+ {
+ "key": "field_68eeceb62b8a6",
+ "label": "Contenu",
+ "name": "content",
+ "aria-label": "",
+ "type": "wysiwyg",
+ "instructions": "",
+ "required": 1,
+ "conditional_logic": 0,
+ "wrapper": {
+ "width": "",
+ "class": "",
+ "id": ""
+ },
+ "default_value": "",
+ "acfe_wysiwyg_height": 300,
+ "acfe_wysiwyg_max_height": "",
+ "acfe_wysiwyg_valid_elements": "",
+ "acfe_wysiwyg_custom_style": "",
+ "acfe_wysiwyg_disable_wp_style": 0,
+ "acfe_wysiwyg_autoresize": 0,
+ "acfe_wysiwyg_disable_resize": 0,
+ "acfe_wysiwyg_remove_path": 0,
+ "acfe_wysiwyg_menubar": 0,
+ "acfe_wysiwyg_transparent": 0,
+ "acfe_wysiwyg_merge_toolbar": 0,
+ "acfe_wysiwyg_custom_toolbar": 0,
+ "required_message": "",
+ "allow_in_bindings": 0,
+ "tabs": "all",
+ "toolbar": "full",
+ "media_upload": 1,
+ "delay": 0,
+ "show_in_graphql": 1,
+ "graphql_description": "",
+ "graphql_field_name": "content",
+ "graphql_non_null": 1,
+ "acfe_wysiwyg_auto_init": 0,
+ "acfe_wysiwyg_min_height": 300,
+ "acfe_wysiwyg_toolbar_buttons": []
+ }
+ ],
+ "min": "",
+ "max": "",
+ "acfe_flexible_modal_edit_size": "",
+ "acfe_flexible_settings": "",
+ "acfe_flexible_settings_size": "large",
+ "acfe_flexible_render_template": false,
+ "acfe_flexible_render_style": false,
+ "acfe_flexible_render_script": false,
+ "acfe_flexible_thumbnail": false,
+ "acfe_flexible_category": false
+ }
+ },
+ "min": "",
+ "max": "",
+ "button_label": "Ajouter un élément",
+ "show_in_graphql": 1,
+ "graphql_description": "",
+ "graphql_field_name": "sections",
+ "graphql_non_null": 0,
+ "acfe_flexible_layouts_previews": false,
+ "acfe_flexible_close_button_label": "",
+ "acfe_flexible_layouts_state": false
+ }
+ ],
+ "location": [
+ [
+ {
+ "param": "abstract"
+ }
+ ]
+ ],
+ "menu_order": 0,
+ "position": "acf_after_title",
+ "style": "seamless",
+ "label_placement": "top",
+ "instruction_placement": "label",
+ "hide_on_screen": [
+ "the_content"
+ ],
+ "active": true,
+ "description": "",
+ "show_in_rest": 0,
+ "display_title": "",
+ "acfe_autosync": [
+ "json"
+ ],
+ "acfe_form": 0,
+ "show_in_graphql": 1,
+ "graphql_field_name": "GroupAbstractBuilder",
+ "map_graphql_types_from_location_rules": 0,
+ "graphql_types": "",
+ "acfe_meta": "",
+ "acfe_note": "",
+ "modified": 1768336919
+}
diff --git a/wp-content/themes/moonshine/acf-json/group_post_page.json b/wp-content/themes/moonshine/acf-json/group_post_page.json
new file mode 100644
index 0000000..05a5495
--- /dev/null
+++ b/wp-content/themes/moonshine/acf-json/group_post_page.json
@@ -0,0 +1,66 @@
+{
+ "key": "group_post_page",
+ "title": "Post - Page",
+ "fields": [
+ {
+ "key": "field_690cbda0abcbb",
+ "label": "Constructeur de page",
+ "name": "builder",
+ "aria-label": "",
+ "type": "clone",
+ "instructions": "",
+ "required": 0,
+ "conditional_logic": 0,
+ "wrapper": {
+ "width": "",
+ "class": "",
+ "id": ""
+ },
+ "graphql_field_name": "builder",
+ "clone": [
+ "group_abstract_builder"
+ ],
+ "display": "seamless",
+ "layout": "block",
+ "prefix_label": 0,
+ "prefix_name": 0,
+ "acfe_seamless_style": 0,
+ "acfe_clone_modal": 0,
+ "acfe_clone_modal_close": 0,
+ "acfe_clone_modal_button": "",
+ "acfe_clone_modal_size": "large"
+ }
+ ],
+ "location": [
+ [
+ {
+ "param": "post_type",
+ "operator": "==",
+ "value": "page"
+ }
+ ]
+ ],
+ "menu_order": 0,
+ "position": "normal",
+ "style": "seamless",
+ "label_placement": "top",
+ "instruction_placement": "label",
+ "hide_on_screen": [
+ "the_content"
+ ],
+ "active": true,
+ "description": "",
+ "show_in_rest": 0,
+ "display_title": "",
+ "acfe_autosync": [
+ "json"
+ ],
+ "acfe_form": 0,
+ "show_in_graphql": 1,
+ "graphql_field_name": "GroupPostPage",
+ "map_graphql_types_from_location_rules": 0,
+ "graphql_types": "",
+ "acfe_meta": "",
+ "acfe_note": "",
+ "modified": 1768336934
+}
diff --git a/wp-content/themes/moonshine/app/components/builder/BuilderSections.fragment.gql b/wp-content/themes/moonshine/app/components/builder/BuilderSections.fragment.gql
new file mode 100644
index 0000000..f982706
--- /dev/null
+++ b/wp-content/themes/moonshine/app/components/builder/BuilderSections.fragment.gql
@@ -0,0 +1,8 @@
+fragment BuilderSections on GroupAbstractBuilder_Fields {
+ sections {
+ __typename
+ ... on GroupAbstractBuilderSectionsTextBlockLayout {
+ ... SectionTextBlock
+ }
+ }
+}
diff --git a/wp-content/themes/moonshine/app/components/builder/BuilderSections.vue b/wp-content/themes/moonshine/app/components/builder/BuilderSections.vue
new file mode 100644
index 0000000..abdf203
--- /dev/null
+++ b/wp-content/themes/moonshine/app/components/builder/BuilderSections.vue
@@ -0,0 +1,9 @@
+
+
+
+ {{ sections }}
+
diff --git a/wp-content/themes/moonshine/app/components/nodes/NodePage.fragment.gql b/wp-content/themes/moonshine/app/components/nodes/NodePage.fragment.gql
new file mode 100644
index 0000000..68d51fb
--- /dev/null
+++ b/wp-content/themes/moonshine/app/components/nodes/NodePage.fragment.gql
@@ -0,0 +1,6 @@
+fragment NodePage on Page {
+ title
+ groupPostPage {
+ ... BuilderSections
+ }
+}
\ No newline at end of file
diff --git a/wp-content/themes/moonshine/app/components/nodes/NodePage.global.vue b/wp-content/themes/moonshine/app/components/nodes/NodePage.global.vue
new file mode 100644
index 0000000..b35206e
--- /dev/null
+++ b/wp-content/themes/moonshine/app/components/nodes/NodePage.global.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+ {{ title }}
+
+
+
+
diff --git a/wp-content/themes/moonshine/app/components/sections/SectionTextBlock.fragment.gql b/wp-content/themes/moonshine/app/components/sections/SectionTextBlock.fragment.gql
new file mode 100644
index 0000000..ff452af
--- /dev/null
+++ b/wp-content/themes/moonshine/app/components/sections/SectionTextBlock.fragment.gql
@@ -0,0 +1,3 @@
+fragment SectionTextBlock on GroupAbstractBuilderSectionsTextBlockLayout {
+ content
+}
diff --git a/wp-content/themes/moonshine/app/components/sections/SectionTextBlock.vue b/wp-content/themes/moonshine/app/components/sections/SectionTextBlock.vue
new file mode 100644
index 0000000..8f17098
--- /dev/null
+++ b/wp-content/themes/moonshine/app/components/sections/SectionTextBlock.vue
@@ -0,0 +1,9 @@
+
+
+
+
+
diff --git a/wp-content/themes/moonshine/app/graphql/NodebyUri.query.gql b/wp-content/themes/moonshine/app/graphql/NodebyUri.query.gql
new file mode 100644
index 0000000..1b59449
--- /dev/null
+++ b/wp-content/themes/moonshine/app/graphql/NodebyUri.query.gql
@@ -0,0 +1,8 @@
+query NodeByUri($uri: String!) {
+ nodeByUri(uri: $uri) {
+ __typename
+ ... on Page {
+ ... NodePage
+ }
+ }
+}
diff --git a/wp-content/themes/moonshine/app/pages/[...uri].vue b/wp-content/themes/moonshine/app/pages/[...uri].vue
index 58a23b2..f023b65 100644
--- a/wp-content/themes/moonshine/app/pages/[...uri].vue
+++ b/wp-content/themes/moonshine/app/pages/[...uri].vue
@@ -1,6 +1,19 @@
-
+
+
+