diff --git a/site/web/app/themes/nynaeve/.yarn/install-state.gz b/site/web/app/themes/nynaeve/.yarn/install-state.gz index 3d9b081..909c3ef 100644 Binary files a/site/web/app/themes/nynaeve/.yarn/install-state.gz and b/site/web/app/themes/nynaeve/.yarn/install-state.gz differ diff --git a/site/web/app/themes/nynaeve/app/setup.php b/site/web/app/themes/nynaeve/app/setup.php index 9ced2e0..e87fba4 100644 --- a/site/web/app/themes/nynaeve/app/setup.php +++ b/site/web/app/themes/nynaeve/app/setup.php @@ -104,7 +104,7 @@ */ add_action('after_setup_theme', function () { add_image_size('product-gallery-main', 800, 1000, true); // 800x1000 pixels, cropped - // add_image_size('product-gallery-thumb', 150, 150, true); // 150x150 pixels, cropped + add_image_size('portfolio-slide', 800, 500, true); // 16:10 aspect ratio, good for both desktop and mobile }, 20); /** diff --git a/site/web/app/themes/nynaeve/package.json b/site/web/app/themes/nynaeve/package.json index 3ea7c3a..df6df81 100644 --- a/site/web/app/themes/nynaeve/package.json +++ b/site/web/app/themes/nynaeve/package.json @@ -22,5 +22,8 @@ "@roots/bud": "^6.24.0", "@roots/bud-tailwindcss": "^6.24.0", "@roots/sage": "^6.24.0" + }, + "dependencies": { + "swiper": "^11.2.1" } } diff --git a/site/web/app/themes/nynaeve/resources/acf-json/homepage-builder/group_581576e5add40.json b/site/web/app/themes/nynaeve/resources/acf-json/homepage-builder/group_581576e5add40.json index d99edd9..421a144 100644 --- a/site/web/app/themes/nynaeve/resources/acf-json/homepage-builder/group_581576e5add40.json +++ b/site/web/app/themes/nynaeve/resources/acf-json/homepage-builder/group_581576e5add40.json @@ -258,6 +258,127 @@ "min": "", "max": "" }, + "layout_6795901dcd22b": { + "key": "layout_6795901dcd22b", + "name": "portfolio_slider", + "label": "Portfolio Slider", + "display": "block", + "sub_fields": [ + { + "key": "field_6795901dcd22c", + "label": "Portfolio Slider Title", + "name": "portfolio_slider_title", + "aria-label": "", + "type": "text", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "maxlength": "", + "allow_in_bindings": 0, + "placeholder": "", + "prepend": "", + "append": "" + }, + { + "key": "field_6795901dcd22d", + "label": "Portfolio Slides", + "name": "portfolio_slides", + "aria-label": "", + "type": "repeater", + "instructions": "This is the portfolio slider block. Three slides are recommended", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "layout": "row", + "min": 0, + "max": 0, + "collapsed": "", + "button_label": "Add Box", + "rows_per_page": 20, + "sub_fields": [ + { + "key": "field_6795901dcd22e", + "label": "Slide Image", + "name": "slide_image", + "aria-label": "", + "type": "image", + "instructions": "Add slide image", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "return_format": "array", + "library": "all", + "min_width": "", + "min_height": "", + "min_size": "", + "max_width": "", + "max_height": "", + "max_size": "", + "mime_types": "", + "allow_in_bindings": 1, + "preview_size": "medium", + "parent_repeater": "field_6795901dcd22d" + }, + { + "key": "field_6795901dcd22f", + "label": "Slide Title", + "name": "slide_title", + "aria-label": "", + "type": "text", + "instructions": "Add slide title", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "default_value": "", + "maxlength": "", + "allow_in_bindings": 0, + "placeholder": "", + "prepend": "", + "append": "", + "parent_repeater": "field_6795901dcd22d" + }, + { + "key": "field_679870e8f9f6c", + "label": "Slide Link", + "name": "slide_url", + "aria-label": "", + "type": "link", + "instructions": "", + "required": 0, + "conditional_logic": 0, + "wrapper": { + "width": "", + "class": "", + "id": "" + }, + "return_format": "url", + "allow_in_bindings": 0, + "parent_repeater": "field_6795901dcd22d" + } + ] + } + ], + "min": "", + "max": "" + }, "5816050f16cf6": { "key": "5816050f16cf6", "name": "cta_banner", @@ -480,5 +601,5 @@ "active": true, "description": "", "show_in_rest": 0, - "modified": 1733193857 + "modified": 1738043902 } diff --git a/site/web/app/themes/nynaeve/resources/scripts/app.js b/site/web/app/themes/nynaeve/resources/scripts/app.js index 3bf3eba..dd9be1a 100644 --- a/site/web/app/themes/nynaeve/resources/scripts/app.js +++ b/site/web/app/themes/nynaeve/resources/scripts/app.js @@ -1,4 +1,12 @@ import domReady from '@roots/sage/client/dom-ready'; +// core version + navigation, pagination, autoplay modules: +import Swiper from 'swiper'; +import { Autoplay, Navigation, Pagination } from 'swiper/modules'; +// import Swiper and modules styles +import 'swiper/css'; +import 'swiper/css/autoplay'; +import 'swiper/css/navigation'; +import 'swiper/css/pagination'; /** * Application entrypoint @@ -32,6 +40,22 @@ domReady(async () => { } else { // console.error('Gallery not found.'); } + + // Portfolio slider + const portfolioSlider = new Swiper('.portfolio-slider', { + modules: [Autoplay, Navigation, Pagination], + autoplay: { + delay: 5000, + }, + navigation: { + nextEl: '.portfolio-slider-next', + prevEl: '.portfolio-slider-prev', + }, + pagination: { + el: '.portfolio-slider-pagination', + clickable: true, + }, + }); }); /** diff --git a/site/web/app/themes/nynaeve/resources/views/partials/content-front-page.blade.php b/site/web/app/themes/nynaeve/resources/views/partials/content-front-page.blade.php index 7cface2..668e505 100644 --- a/site/web/app/themes/nynaeve/resources/views/partials/content-front-page.blade.php +++ b/site/web/app/themes/nynaeve/resources/views/partials/content-front-page.blade.php @@ -63,6 +63,44 @@ + @elseif(get_row_layout() == 'portfolio_slider') +
+
+

{{ get_sub_field('portfolio_slider_title') }}

+ @if(have_rows('portfolio_slides')) +
+
+ @while(have_rows('portfolio_slides')) + @php(the_row()) + @php($slideImage = get_sub_field('slide_image')) + @php($slideUrl = get_sub_field('slide_url')) + + @endwhile +
+ +
+ +
+
+
+ @endif +
+
+ @elseif(get_row_layout() == 'cta_banner')
diff --git a/site/web/app/themes/nynaeve/yarn.lock b/site/web/app/themes/nynaeve/yarn.lock index 370846e..8b1e3da 100644 --- a/site/web/app/themes/nynaeve/yarn.lock +++ b/site/web/app/themes/nynaeve/yarn.lock @@ -7867,6 +7867,7 @@ __metadata: "@roots/bud": "npm:^6.24.0" "@roots/bud-tailwindcss": "npm:^6.24.0" "@roots/sage": "npm:^6.24.0" + swiper: "npm:^11.2.1" languageName: unknown linkType: soft @@ -8486,6 +8487,13 @@ __metadata: languageName: node linkType: hard +"swiper@npm:^11.2.1": + version: 11.2.1 + resolution: "swiper@npm:11.2.1" + checksum: 10c0/7260ad4f145d10535dc11aa634ecc736cad42280ee8b12423dfe3568efd9d3c0c5e5dc3d82dde5ebfd98b42a53b7ea6e760ebd22c1bcbb96d43ad8e1520fb7d7 + languageName: node + linkType: hard + "tailwindcss@npm:3.4.13": version: 3.4.13 resolution: "tailwindcss@npm:3.4.13"