Compare commits
24 Commits
b895c40030
...
feature/ex
| Author | SHA1 | Date | |
|---|---|---|---|
| 98ccf560c9 | |||
| e393572081 | |||
| e37cafd839 | |||
| 1bf0ea3450 | |||
| a128906dc0 | |||
| ddec414409 | |||
| 2f8a8bf527 | |||
| e4c471684f | |||
| d38338b360 | |||
| cb65915c7c | |||
| 10aabb24a9 | |||
| a8869adad6 | |||
| ff9b9a3570 | |||
| 47f985815a | |||
| 8c79477559 | |||
| 5c7750e15d | |||
| 523c7d573c | |||
| 6af020d81f | |||
| f2192d11db | |||
| 982dc10038 | |||
| 4d7880fcec | |||
| fd595a0e15 | |||
| 3e96574e0a | |||
| 48e776d80d |
@ -23,20 +23,11 @@ $green: #28a745;
|
||||
$teal: #20c997;
|
||||
$cyan: #17a2b8;
|
||||
|
||||
$primary: $blue;
|
||||
$secondary: $gray-600;
|
||||
$success: $green;
|
||||
$info: $cyan;
|
||||
$warning: #ff9a52;
|
||||
$danger: $red;
|
||||
$light: $gray-100;
|
||||
$dark: $gray-800;
|
||||
|
||||
$primary: $blue;
|
||||
$secondary: $gray-600;
|
||||
|
||||
// Map for utility classes
|
||||
$theme-colors: (
|
||||
"primary": $primary,
|
||||
"secondary": $secondary,
|
||||
//"tertiary": $tertiary,
|
||||
//"quaternary": $quaternary,,
|
||||
);
|
||||
|
||||
@ -5,3 +5,4 @@
|
||||
@import "layout/index";
|
||||
@import "components/index";
|
||||
|
||||
@import "custom/custom";
|
||||
|
||||
@ -10,10 +10,10 @@ Look up all available Bootstrap variables here: https://rstudio.github.io/bslib/
|
||||
*/
|
||||
|
||||
//Abstracts: Things used throughout the site such as utility classes and generic overrides.
|
||||
//@import "abstracts/base";
|
||||
@import "abstracts/functions";
|
||||
@import "abstracts/mixins";
|
||||
@import "abstracts/utilities";
|
||||
//@import "abstracts/base";
|
||||
//@import "abstracts/utilities";
|
||||
|
||||
// Components: parts of the theme itself that are not associated with a module.
|
||||
//@import "components/buttons";
|
||||
|
||||
@ -8,10 +8,34 @@
|
||||
}
|
||||
}
|
||||
|
||||
// Font weight utility classes generator
|
||||
// Generates utility classes like .fw-100, .fw-200, etc.
|
||||
@for $i from 100 through 900 {
|
||||
@if $i % 100 == 0 {
|
||||
.fw-#{$i} {
|
||||
font-weight: #{$i} !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// gap size utility classes generator
|
||||
// Generates utility classes like .gap-4
|
||||
// Generates utility classes like .gap-4, .gap-col-4, .gap-row-4
|
||||
@for $i from 1 through 35 {
|
||||
.gap-#{$i} {
|
||||
gap: rem-calc($i * 1px) !important;
|
||||
}
|
||||
.gap-col-#{$i} {
|
||||
column-gap: rem-calc($i * 1px) !important;
|
||||
}
|
||||
.gap-row-#{$i} {
|
||||
row-gap: rem-calc($i * 1px) !important;
|
||||
}
|
||||
}
|
||||
|
||||
// hex to rgba function
|
||||
@function hex-to-rgba($hex, $alpha) {
|
||||
$r: red($hex);
|
||||
$g: green($hex);
|
||||
$b: blue($hex);
|
||||
@return rgba($r, $g, $b, $alpha);
|
||||
}
|
||||
|
||||
@ -46,7 +46,7 @@
|
||||
// Mixin to add an after pseudo-element with a mask image to customize button colors
|
||||
/* Example:
|
||||
|
||||
.btn{
|
||||
.btn-arrow-right{
|
||||
&::after {
|
||||
@include btn-after("../img/arrow-right.svg");
|
||||
}
|
||||
|
||||
@ -1,30 +1,32 @@
|
||||
// Spacers
|
||||
$section-spacer: rem-calc(50px);
|
||||
$section-spacer-small: rem-calc(25px);
|
||||
|
||||
.section-spacer {
|
||||
margin-top: $section-spacer;
|
||||
@include bs5-media-breakpoint-up(lg) {
|
||||
margin-top: calc($section-spacer * 1.5);
|
||||
}
|
||||
&--small {
|
||||
margin-top: $section-spacer-small;
|
||||
@include bs5-media-breakpoint-up(lg) {
|
||||
margin-top: calc($section-spacer-small * 1.5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Header selector for interpolation
|
||||
// Example usage: #{$headings} { ... }
|
||||
$headings: "h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6";
|
||||
|
||||
// Background
|
||||
.bg__block {
|
||||
// background: url(../img/bg.svg) repeat center center, $tertiary;
|
||||
// Section Spacers
|
||||
$section-spacer: rem-calc(50px);
|
||||
$section-spacer-small: rem-calc(25px);
|
||||
|
||||
.section-spacer-both {
|
||||
margin-top: $section-spacer;
|
||||
margin-bottom: $section-spacer;
|
||||
@include bs5-media-breakpoint-up(lg) {
|
||||
margin-top: calc($section-spacer * 1.5);
|
||||
margin-bottom: calc($section-spacer * 1.5);
|
||||
}
|
||||
&--small {
|
||||
margin-top: $section-spacer-small;
|
||||
margin-bottom: $section-spacer-small;
|
||||
@include bs5-media-breakpoint-up(lg) {
|
||||
margin-top: calc($section-spacer-small * 2);
|
||||
margin-bottom: calc($section-spacer-small * 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Border
|
||||
.bordered {
|
||||
border: 1px solid $border-color !important;
|
||||
.section-spacer {
|
||||
@extend .section-spacer-both;
|
||||
margin-bottom: unset;
|
||||
&--small {
|
||||
margin-bottom: unset;
|
||||
}
|
||||
}
|
||||
|
||||
@ -13,14 +13,4 @@ $btn-color: (
|
||||
.btn-sm-#{$name} {
|
||||
color: $color !important;
|
||||
}
|
||||
.btn-outline-#{$name},
|
||||
.btn-lg-outline-#{$name},
|
||||
.btn-sm-outline-#{$name} {
|
||||
color: $color;
|
||||
&:hover,
|
||||
&:focus,
|
||||
&:active {
|
||||
color: $color !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -79,4 +79,19 @@ $(() => {
|
||||
$(".js-select-link").on("change", ({ target }) => {
|
||||
window.location.href = $(target).val();
|
||||
});
|
||||
|
||||
// Postcode input formatting
|
||||
const $postCodeInput = $("input[name='postcode']");
|
||||
$postCodeInput.on("input", function () {
|
||||
let value = $(this).val();
|
||||
|
||||
// Match 4 digits followed by 2 letters (e.g., 1234AB)
|
||||
const match = value.match(/^(\d{4})([a-zA-Z]{2})$/);
|
||||
|
||||
if (match) {
|
||||
// Add space between numbers and letters
|
||||
const formatted = `${match[1]} ${match[2]}`;
|
||||
$(this).val(formatted);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
{/if}
|
||||
</div>
|
||||
<div class="favorite-btn__content favorite-btn__content--add">
|
||||
{capture name="svg_output"}{svg_icon file='heart.svg'}{/capture}
|
||||
{capture name="svg_output"}{svg_icon file='heart.svg' width="22"}{/capture}
|
||||
{if $smarty.capture.svg_output}
|
||||
{$smarty.capture.svg_output nofilter}
|
||||
{else}
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
{/if}
|
||||
</div>
|
||||
<div class="favorite-btn__content favorite-btn__content--add">
|
||||
{capture name="svg_output"}{svg_icon file='heart.svg'}{/capture}
|
||||
{capture name="svg_output"}{svg_icon file='heart.svg' width="22"}{/capture}
|
||||
{if $smarty.capture.svg_output}
|
||||
{$smarty.capture.svg_output nofilter}
|
||||
{else}
|
||||
|
||||
@ -28,7 +28,13 @@
|
||||
<div class="d-flex align-items-center mb-3 justify-content-between position-relative">
|
||||
<span class="h4 mb-0">{l s='Store information' d='Shop.Theme.Global'}</span>
|
||||
<a href="#footer_contact_list" class="icon-collapse stretched-link text-reset d-block d-md-none" data-toggle="collapse">
|
||||
{capture name="svg_output"}{svg_icon file='chevron_down.svg'}{/capture}
|
||||
{if $smarty.capture.svg_output}
|
||||
<span style="margin-bottom: 3px;">
|
||||
{$smarty.capture.svg_output nofilter}
|
||||
{else}
|
||||
<i class="material-icons d-block"></i>
|
||||
{/if}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
@ -28,7 +28,13 @@
|
||||
<div class="d-flex align-items-center mb-3 justify-content-between position-relative">
|
||||
<span class="h4 mb-0">{l s='Your account' d='Shop.Theme.Customeraccount'}</span>
|
||||
<a href="#footer_account_list" class="icon-collapse stretched-link text-reset d-block d-md-none" data-toggle="collapse">
|
||||
{capture name="svg_output"}{svg_icon file='chevron_down.svg'}{/capture}
|
||||
{if $smarty.capture.svg_output}
|
||||
<span style="margin-bottom: 3px;">
|
||||
{$smarty.capture.svg_output nofilter}
|
||||
{else}
|
||||
<i class="material-icons d-block"></i>
|
||||
{/if}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
@ -34,7 +34,12 @@
|
||||
{/if}
|
||||
>
|
||||
<div class="header-top__icon-container">
|
||||
{capture name="svg_output"}{svg_icon file='person.svg'}{/capture}
|
||||
{if $smarty.capture.svg_output}
|
||||
{$smarty.capture.svg_output nofilter}
|
||||
{else}
|
||||
<span class="header-top__icon material-icons">person</span>
|
||||
{/if}
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@ -4,7 +4,13 @@
|
||||
<div class="d-flex align-items-center mb-3 justify-content-between position-relative">
|
||||
<span class="h4 mb-0">{$linkBlock.title}</span>
|
||||
<a href="#footer_sub_menu_{$_expand_id}" class="icon-collapse stretched-link text-reset d-block d-md-none" data-toggle="collapse">
|
||||
{capture name="svg_output"}{svg_icon file='chevron_down.svg'}{/capture}
|
||||
{if $smarty.capture.svg_output}
|
||||
<span style="margin-bottom: 3px;">
|
||||
{$smarty.capture.svg_output nofilter}
|
||||
{else}
|
||||
<i class="material-icons d-block"></i>
|
||||
{/if}
|
||||
</a>
|
||||
</div>
|
||||
<div id="footer_sub_menu_{$_expand_id}" class="collapse d-md-block">
|
||||
|
||||
@ -29,7 +29,13 @@
|
||||
<div class="d-flex align-items-center mb-3 justify-content-between position-relative">
|
||||
<span class="h4 mb-0">{$linkBlock.title}</span>
|
||||
<a href="#footer_sub_menu_{$_expand_id}" class="icon-collapse stretched-link text-reset d-block d-md-none" data-toggle="collapse">
|
||||
{capture name="svg_output"}{svg_icon file='chevron_down.svg'}{/capture}
|
||||
{if $smarty.capture.svg_output}
|
||||
<span style="margin-bottom: 3px;">
|
||||
{$smarty.capture.svg_output nofilter}
|
||||
{else}
|
||||
<i class="material-icons d-block"></i>
|
||||
{/if}
|
||||
</a>
|
||||
</div>
|
||||
<div id="footer_sub_menu_{$_expand_id}" class="collapse d-md-block">
|
||||
|
||||
@ -21,9 +21,14 @@
|
||||
>
|
||||
<span class="align-self-center">{$node.label}</span>
|
||||
{if $node.children|count}
|
||||
{capture name="svg_output"}{svg_icon file='chevron_down.svg'}{/capture}
|
||||
{if $smarty.capture.svg_output}
|
||||
<span class="d-none d-md-block pl-1" style="margin-bottom: 3px;">
|
||||
{svg_icon file='chevron_down.svg' }
|
||||
{$smarty.capture.svg_output nofilter}
|
||||
</span>
|
||||
{else}
|
||||
<i class="material-icons d-block"></i>
|
||||
{/if}
|
||||
{/if}
|
||||
</a>
|
||||
{if $node.children|count}
|
||||
|
||||
@ -33,20 +33,6 @@
|
||||
{/block}
|
||||
|
||||
{block name='header_top'}
|
||||
{* Optional: Add USP bar at the top of the header
|
||||
Uncomment the code below to enable it
|
||||
Use the uspanywhere module and hook to "displayHeaderTopUsps" *}
|
||||
|
||||
{*
|
||||
<div class="header-cta d-none d-lg-block py-2 py-lg-3 bg-primary">
|
||||
<div class="container">
|
||||
<div class="row d-flex gap-20">
|
||||
{hook h='displayHeaderTopUsps'}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
*}
|
||||
|
||||
<div class="js-header-top-wrapper">
|
||||
<div class="header-top js-header-top">
|
||||
<div class="header-top__content pb-md-0 py-2">
|
||||
|
||||
@ -26,8 +26,12 @@
|
||||
|
||||
{block name='pagination_page_list'}
|
||||
{if $pagination.should_be_displayed}
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
<div class="results__block">
|
||||
{l s='%curr_numer% van %total_items% resultaten' sprintf=['%curr_numer%' => $pagination.items_shown_to,'%total_items%' => $pagination.total_items] d='Shop.Theme.Actions'}
|
||||
</div>
|
||||
<nav>
|
||||
<ul class="pagination justify-content-center mt-4 mb-2">
|
||||
<ul class="pagination justify-content-center m-0">
|
||||
{foreach from=$pagination.pages item="page"}
|
||||
<li class="page-item{if $page.current} active{/if} {if $page.type === 'spacer'}disabled{/if}">
|
||||
{if $page.type === 'spacer'}
|
||||
@ -59,5 +63,6 @@
|
||||
{/foreach}
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
{/if}
|
||||
{/block}
|
||||
|
||||
@ -1,5 +1,13 @@
|
||||
{* Defensive: Handles LazyArray objects for category *}
|
||||
{if is_object($category)}
|
||||
{$category = $category|json_encode|json_decode:true}
|
||||
{if isset($category.category)}
|
||||
{$category = $category.category}
|
||||
{/if}
|
||||
{/if}
|
||||
|
||||
<div id="js-product-list-footer">
|
||||
{if $category.additional_description && $listing.pagination.items_shown_from == 1}
|
||||
{if isset($category.additional_description) && $category.additional_description && $listing.pagination.items_shown_from == 1}
|
||||
<div id="category-description-2" class="cms-content my-3">
|
||||
{$category.additional_description nofilter}
|
||||
</div>
|
||||
|
||||
@ -26,7 +26,7 @@
|
||||
{$listingType = $type|default:'listing'}
|
||||
<div
|
||||
{if $listingType === 'listing'}
|
||||
class="products-list__block products-list__block--grid"
|
||||
class="products-list__block col col-sm-6 col-lg-4 col-xl-3"
|
||||
{elseif $listingType === 'slider'}
|
||||
class="swiper-slide product-slider__item col-6 col-md-4 col-lg-3"
|
||||
{/if}
|
||||
|
||||
@ -29,23 +29,6 @@
|
||||
{block name='page_content_top'}{/block}
|
||||
|
||||
{block name='page_content'}
|
||||
{* Define containers, rows and columns here for each section *}
|
||||
{* Example:
|
||||
|
||||
<section id="home_hero" class="mt-0">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-6 displayCustomhtml1">
|
||||
{hook h='displayCustomhtml1'}
|
||||
</div>
|
||||
<div class="col-6 displayHomeBanner1">
|
||||
{hook h='displayHomeBanner1'}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
*}
|
||||
{block name='hook_home'}
|
||||
{$HOOK_HOME nofilter}
|
||||
{/block}
|
||||
|
||||
@ -49,15 +49,18 @@
|
||||
</header>
|
||||
|
||||
<section id="wrapper">
|
||||
|
||||
{block name='notifications'}
|
||||
{include file='_partials/notifications.tpl'}
|
||||
{/block}
|
||||
|
||||
{hook h="displayWrapperTop"}
|
||||
<div class="{if $page.page_name == 'index' }container-fluid p-0 overflow-hidden{else} container {/if}">
|
||||
<div class="container">
|
||||
{block name='breadcrumb'}
|
||||
{include file='_partials/breadcrumb.tpl'}
|
||||
{/block}
|
||||
<div {if $page.page_name != 'index' || !isset($page.body_classes['layout-full-width'])}class="row"{/if}>
|
||||
|
||||
<div class="row">
|
||||
{block name="left_column"}
|
||||
<div id="left-column" class="col-12 col-md-4 col-lg-3">
|
||||
{if $page.page_name == 'product'}
|
||||
@ -67,6 +70,7 @@
|
||||
{/if}
|
||||
</div>
|
||||
{/block}
|
||||
|
||||
{block name="content_wrapper"}
|
||||
<div id="content-wrapper" class="js-content-wrapper left-column right-column col-md-4 col-lg-6">
|
||||
{hook h="displayContentWrapperTop"}
|
||||
@ -76,6 +80,7 @@
|
||||
{hook h="displayContentWrapperBottom"}
|
||||
</div>
|
||||
{/block}
|
||||
|
||||
{block name="right_column"}
|
||||
<div id="right-column" class="col-12 col-md-4 col-lg-3">
|
||||
{if $page.page_name == 'product'}
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
{block name='right_column'}{/block}
|
||||
|
||||
{block name='content_wrapper'}
|
||||
<div id="content-wrapper" class="{if $page.page_name != 'index' || !isset($page.body_classes['layout-full-width'])}col-12 {/if}js-content-wrapper">
|
||||
<div id="content-wrapper" class="col-12 js-content-wrapper">
|
||||
{hook h="displayContentWrapperTop"}
|
||||
{block name='content'}
|
||||
<p>Hello world! This is HTML5 Boilerplate.</p>
|
||||
|
||||
Reference in New Issue
Block a user