forked from brooksbingham/theme-elegance
Merge branch 'main' into main
commit
20aae25995
|
@ -0,0 +1 @@
|
|||
@import "./node_modules/jquery-offcanvas/dist/jquery-offcanvas.min.css"
|
|
@ -5,11 +5,17 @@
|
|||
body {
|
||||
@apply bg-white;
|
||||
@apply text-gray-600;
|
||||
@apply font-normal;
|
||||
@apply font-light;
|
||||
}
|
||||
|
||||
a {
|
||||
apply text-gray-600;
|
||||
@apply text-gray-600;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
@apply text-blue-900;
|
||||
@apply underline;
|
||||
@apply underline-offset-2;
|
||||
}
|
||||
|
||||
.icon-tabler {
|
||||
|
|
|
@ -0,0 +1,374 @@
|
|||
import $ from 'jquery';
|
||||
import prestashop from 'prestashop';
|
||||
import debounce from './components/debounce';
|
||||
|
||||
prestashop.cart = prestashop.cart || {};
|
||||
|
||||
prestashop.cart.active_inputs = null;
|
||||
|
||||
const spinnerSelector = 'input[name="product-quantity-spin"]';
|
||||
let hasError = false;
|
||||
let isUpdateOperation = false;
|
||||
let errorMsg = '';
|
||||
|
||||
const CheckUpdateQuantityOperations = {
|
||||
switchErrorStat: () => {
|
||||
/**
|
||||
* if errorMsg is not empty or if notifications are shown, we have error to display
|
||||
* if hasError is true, quantity was not updated : we don't disable checkout button
|
||||
*/
|
||||
const $checkoutBtn = $(prestashop.themeSelectors.checkout.btn);
|
||||
|
||||
if ($(prestashop.themeSelectors.notifications.dangerAlert).length || (errorMsg !== '' && !hasError)) {
|
||||
$checkoutBtn.addClass('disabled');
|
||||
}
|
||||
|
||||
if (errorMsg !== '') {
|
||||
const strError = `
|
||||
<article class="alert alert-danger" role="alert" data-alert="danger">
|
||||
<ul>
|
||||
<li>${errorMsg}</li>
|
||||
</ul>
|
||||
</article>
|
||||
`;
|
||||
$(prestashop.themeSelectors.notifications.container).html(strError);
|
||||
errorMsg = '';
|
||||
isUpdateOperation = false;
|
||||
if (hasError) {
|
||||
// if hasError is true, quantity was not updated : allow checkout
|
||||
$checkoutBtn.removeClass('disabled');
|
||||
}
|
||||
} else if (!hasError && isUpdateOperation) {
|
||||
hasError = false;
|
||||
isUpdateOperation = false;
|
||||
$(prestashop.themeSelectors.notifications.container).html('');
|
||||
$checkoutBtn.removeClass('disabled');
|
||||
}
|
||||
},
|
||||
checkUpdateOperation: (resp) => {
|
||||
/**
|
||||
* resp.hasError can be not defined but resp.errors not empty: quantity is updated but order cannot be placed
|
||||
* when resp.hasError=true, quantity is not updated
|
||||
*/
|
||||
const {hasError: hasErrorOccurred, errors: errorData} = resp;
|
||||
hasError = hasErrorOccurred ?? false;
|
||||
const errors = errorData ?? '';
|
||||
|
||||
// 1.7.2.x returns errors as string, 1.7.3.x returns array
|
||||
if (errors instanceof Array) {
|
||||
errorMsg = errors.join(' ');
|
||||
} else {
|
||||
errorMsg = errors;
|
||||
}
|
||||
|
||||
isUpdateOperation = true;
|
||||
},
|
||||
};
|
||||
|
||||
/**
|
||||
* Attach Bootstrap TouchSpin event handlers
|
||||
*/
|
||||
function createSpin() {
|
||||
$.each($(spinnerSelector), (index, spinner) => {
|
||||
$(spinner).TouchSpin({
|
||||
verticalbuttons: true,
|
||||
verticalupclass: 'material-icons touchspin-up',
|
||||
verticaldownclass: 'material-icons touchspin-down',
|
||||
buttondown_class: 'btn btn-touchspin js-touchspin js-increase-product-quantity',
|
||||
buttonup_class: 'btn btn-touchspin js-touchspin js-decrease-product-quantity',
|
||||
min: parseInt($(spinner).attr('min'), 10),
|
||||
max: 1000000,
|
||||
});
|
||||
});
|
||||
|
||||
$(prestashop.themeSelectors.touchspin).off('touchstart.touchspin');
|
||||
|
||||
CheckUpdateQuantityOperations.switchErrorStat();
|
||||
}
|
||||
|
||||
const preventCustomModalOpen = (event) => {
|
||||
if (window.shouldPreventModal) {
|
||||
event.preventDefault();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
$(document).ready(() => {
|
||||
const productLineInCartSelector = prestashop.themeSelectors.cart.productLineQty;
|
||||
const promises = [];
|
||||
|
||||
prestashop.on('updateCart', () => {
|
||||
$(prestashop.themeSelectors.cart.quickview).modal('hide');
|
||||
});
|
||||
|
||||
prestashop.on('updatedCart', () => {
|
||||
window.shouldPreventModal = false;
|
||||
|
||||
$(prestashop.themeSelectors.product.customizationModal).on('show.bs.modal', (modalEvent) => {
|
||||
preventCustomModalOpen(modalEvent);
|
||||
});
|
||||
|
||||
createSpin();
|
||||
});
|
||||
|
||||
createSpin();
|
||||
|
||||
const $body = $('body');
|
||||
|
||||
function isTouchSpin(namespace) {
|
||||
return namespace === 'on.startupspin' || namespace === 'on.startdownspin';
|
||||
}
|
||||
|
||||
function shouldIncreaseProductQuantity(namespace) {
|
||||
return namespace === 'on.startupspin';
|
||||
}
|
||||
|
||||
function findCartLineProductQuantityInput($target) {
|
||||
const $input = $target.parents(prestashop.themeSelectors.cart.touchspin).find(productLineInCartSelector);
|
||||
|
||||
if ($input.is(':focus')) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $input;
|
||||
}
|
||||
|
||||
function camelize(subject) {
|
||||
const actionTypeParts = subject.split('-');
|
||||
let i;
|
||||
let part;
|
||||
let camelizedSubject = '';
|
||||
|
||||
for (i = 0; i < actionTypeParts.length; i += 1) {
|
||||
part = actionTypeParts[i];
|
||||
|
||||
if (i !== 0) {
|
||||
part = part.substring(0, 1).toUpperCase() + part.substring(1);
|
||||
}
|
||||
|
||||
camelizedSubject += part;
|
||||
}
|
||||
|
||||
return camelizedSubject;
|
||||
}
|
||||
|
||||
function parseCartAction($target, namespace) {
|
||||
if (!isTouchSpin(namespace)) {
|
||||
return {
|
||||
url: $target.attr('href'),
|
||||
type: camelize($target.data('link-action')),
|
||||
};
|
||||
}
|
||||
|
||||
const $input = findCartLineProductQuantityInput($target);
|
||||
|
||||
if (!$input) {
|
||||
return false;
|
||||
}
|
||||
|
||||
let cartAction = {};
|
||||
|
||||
if (shouldIncreaseProductQuantity(namespace)) {
|
||||
cartAction = {
|
||||
url: $input.data('up-url'),
|
||||
type: 'increaseProductQuantity',
|
||||
};
|
||||
} else {
|
||||
cartAction = {
|
||||
url: $input.data('down-url'),
|
||||
type: 'decreaseProductQuantity',
|
||||
};
|
||||
}
|
||||
|
||||
return cartAction;
|
||||
}
|
||||
|
||||
const abortPreviousRequests = () => {
|
||||
let promise;
|
||||
while (promises.length > 0) {
|
||||
promise = promises.pop();
|
||||
promise.abort();
|
||||
}
|
||||
};
|
||||
|
||||
const getTouchSpinInput = ($button) => $($button.parents(prestashop.themeSelectors.cart.touchspin).find('input'));
|
||||
|
||||
$(prestashop.themeSelectors.product.customizationModal).on('show.bs.modal', (modalEvent) => {
|
||||
preventCustomModalOpen(modalEvent);
|
||||
});
|
||||
|
||||
const handleCartAction = (event) => {
|
||||
abortPreviousRequests();
|
||||
window.shouldPreventModal = true;
|
||||
event.preventDefault();
|
||||
|
||||
const $target = $(event.currentTarget);
|
||||
const {dataset} = event.currentTarget;
|
||||
const cartAction = parseCartAction($target, event.namespace);
|
||||
const requestData = {
|
||||
ajax: '1',
|
||||
action: 'update',
|
||||
};
|
||||
|
||||
if (!cartAction) {
|
||||
return;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: cartAction.url,
|
||||
method: 'POST',
|
||||
data: requestData,
|
||||
dataType: 'json',
|
||||
beforeSend(jqXHR) {
|
||||
promises.push(jqXHR);
|
||||
},
|
||||
})
|
||||
.then((resp) => {
|
||||
const $quantityInput = getTouchSpinInput($target);
|
||||
CheckUpdateQuantityOperations.checkUpdateOperation(resp);
|
||||
$quantityInput.val(resp.quantity);
|
||||
|
||||
// Refresh cart preview
|
||||
prestashop.emit('updateCart', {
|
||||
reason: dataset,
|
||||
resp,
|
||||
});
|
||||
})
|
||||
.fail((resp) => {
|
||||
prestashop.emit('handleError', {
|
||||
eventType: 'updateProductInCart',
|
||||
resp,
|
||||
cartAction: cartAction.type,
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
$body.on('click', prestashop.themeSelectors.cart.actions, handleCartAction);
|
||||
|
||||
function sendUpdateQuantityInCartRequest(updateQuantityInCartUrl, requestData, $target) {
|
||||
abortPreviousRequests();
|
||||
window.shouldPreventModal = true;
|
||||
|
||||
return $.ajax({
|
||||
url: updateQuantityInCartUrl,
|
||||
method: 'POST',
|
||||
data: requestData,
|
||||
dataType: 'json',
|
||||
beforeSend(jqXHR) {
|
||||
promises.push(jqXHR);
|
||||
},
|
||||
})
|
||||
.then((resp) => {
|
||||
CheckUpdateQuantityOperations.checkUpdateOperation(resp);
|
||||
|
||||
$target.val(resp.quantity);
|
||||
const dataset = ($target && $target.dataset) ? $target.dataset : resp;
|
||||
|
||||
// Refresh cart preview
|
||||
prestashop.emit('updateCart', {
|
||||
reason: dataset,
|
||||
resp,
|
||||
});
|
||||
})
|
||||
.fail((resp) => {
|
||||
prestashop.emit('handleError', {
|
||||
eventType: 'updateProductQuantityInCart',
|
||||
resp,
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function getQuantityChangeType($quantity) {
|
||||
return $quantity > 0 ? 'up' : 'down';
|
||||
}
|
||||
|
||||
function getRequestData(quantity) {
|
||||
return {
|
||||
ajax: '1',
|
||||
qty: Math.abs(quantity),
|
||||
action: 'update',
|
||||
op: getQuantityChangeType(quantity),
|
||||
};
|
||||
}
|
||||
|
||||
function updateProductQuantityInCart(event) {
|
||||
const $target = $(event.currentTarget);
|
||||
const updateQuantityInCartUrl = $target.data('update-url');
|
||||
const baseValue = $target.attr('value');
|
||||
|
||||
// There should be a valid product quantity in cart
|
||||
const targetValue = $target.val();
|
||||
/* eslint-disable */
|
||||
if (targetValue != parseInt(targetValue, 10) || targetValue < 0 || isNaN(targetValue)) {
|
||||
window.shouldPreventModal = false;
|
||||
$target.val(baseValue);
|
||||
return;
|
||||
}
|
||||
/* eslint-enable */
|
||||
// There should be a new product quantity in cart
|
||||
const qty = targetValue - baseValue;
|
||||
|
||||
if (qty === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (targetValue === '0') {
|
||||
$target.closest('.product-line-actions').find('[data-link-action="delete-from-cart"]').click();
|
||||
} else {
|
||||
$target.attr('value', targetValue);
|
||||
sendUpdateQuantityInCartRequest(updateQuantityInCartUrl, getRequestData(qty), $target);
|
||||
}
|
||||
}
|
||||
|
||||
$body.on('touchspin.on.stopspin', spinnerSelector, debounce(updateProductQuantityInCart));
|
||||
|
||||
$body.on('focusout keyup', productLineInCartSelector, (event) => {
|
||||
if (event.type === 'keyup') {
|
||||
if (event.keyCode === 13) {
|
||||
isUpdateOperation = true;
|
||||
updateProductQuantityInCart(event);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!isUpdateOperation) {
|
||||
updateProductQuantityInCart(event);
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
const $timeoutEffect = 400;
|
||||
|
||||
$body.on('hidden.bs.collapse', prestashop.themeSelectors.cart.promoCode, () => {
|
||||
$(prestashop.themeSelectors.cart.displayPromo).show($timeoutEffect);
|
||||
});
|
||||
|
||||
$body.on('click', prestashop.themeSelectors.cart.promoCodeButton, (event) => {
|
||||
event.preventDefault();
|
||||
|
||||
$(prestashop.themeSelectors.cart.promoCode).collapse('toggle');
|
||||
});
|
||||
|
||||
$body.on('click', prestashop.themeSelectors.cart.displayPromo, (event) => {
|
||||
$(event.currentTarget).hide($timeoutEffect);
|
||||
});
|
||||
|
||||
$body.on('click', prestashop.themeSelectors.cart.discountCode, (event) => {
|
||||
event.stopPropagation();
|
||||
|
||||
const $code = $(event.currentTarget);
|
||||
const $discountInput = $(prestashop.themeSelectors.cart.discountName);
|
||||
|
||||
$discountInput.val($code.text());
|
||||
// Show promo code field
|
||||
$(prestashop.themeSelectors.cart.promoCode).collapse('show');
|
||||
$(prestashop.themeSelectors.cart.displayPromo).hide($timeoutEffect);
|
||||
|
||||
return false;
|
||||
});
|
||||
});
|
|
@ -0,0 +1,81 @@
|
|||
/**
|
||||
* Copyright since 2007 PrestaShop SA and Contributors
|
||||
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.md.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://devdocs.prestashop.com/ for more information.
|
||||
*
|
||||
* @author PrestaShop SA and Contributors <contact@prestashop.com>
|
||||
* @copyright Since 2007 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
*/
|
||||
import $ from 'jquery';
|
||||
import prestashop from 'prestashop';
|
||||
|
||||
function setUpCheckout() {
|
||||
$(prestashop.themeSelectors.checkout.termsLink).on('click', (event) => {
|
||||
event.preventDefault();
|
||||
let url = $(event.target).attr('href');
|
||||
|
||||
if (url) {
|
||||
// TODO: Handle request if no pretty URL
|
||||
url += '?content_only=1';
|
||||
$.get(url, (content) => {
|
||||
$(prestashop.themeSelectors.modal)
|
||||
.find(prestashop.themeSelectors.modalContent)
|
||||
.html($(content).find('.page-cms').contents());
|
||||
}).fail((resp) => {
|
||||
prestashop.emit('handleError', {eventType: 'clickTerms', resp});
|
||||
});
|
||||
}
|
||||
|
||||
$(prestashop.themeSelectors.modal).modal('show');
|
||||
});
|
||||
|
||||
$(prestashop.themeSelectors.checkout.giftCheckbox).on('click', () => {
|
||||
$('#gift').slideToggle();
|
||||
});
|
||||
}
|
||||
|
||||
function toggleImage() {
|
||||
// Arrow show/hide details Checkout page
|
||||
$(prestashop.themeSelectors.checkout.imagesLink).on('click', function () {
|
||||
const icon = $(this).find('i.material-icons');
|
||||
|
||||
if (icon.text() === 'expand_more') {
|
||||
icon.text('expand_less');
|
||||
} else {
|
||||
icon.text('expand_more');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$(document).ready(() => {
|
||||
if ($('body#checkout').length === 1) {
|
||||
setUpCheckout();
|
||||
toggleImage();
|
||||
}
|
||||
|
||||
prestashop.on('updatedDeliveryForm', (params) => {
|
||||
if (typeof params.deliveryOption === 'undefined' || params.deliveryOption.length === 0) {
|
||||
return;
|
||||
}
|
||||
// Hide all carrier extra content ...
|
||||
$(prestashop.themeSelectors.checkout.carrierExtraContent).hide();
|
||||
// and show the one related to the selected carrier
|
||||
params.deliveryOption.next(prestashop.themeSelectors.checkout.carrierExtraContent).slideDown();
|
||||
});
|
||||
});
|
|
@ -0,0 +1,50 @@
|
|||
/**
|
||||
* Copyright since 2007 PrestaShop SA and Contributors
|
||||
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.md.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://devdocs.prestashop.com/ for more information.
|
||||
*
|
||||
* @author PrestaShop SA and Contributors <contact@prestashop.com>
|
||||
* @copyright Since 2007 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
*/
|
||||
import prestashop from 'prestashop';
|
||||
import $ from 'jquery';
|
||||
|
||||
prestashop.blockcart = prestashop.blockcart || {};
|
||||
|
||||
prestashop.blockcart.showModal = (html) => {
|
||||
function getBlockCartModal() {
|
||||
return $('#blockcart-modal');
|
||||
}
|
||||
|
||||
let $blockCartModal = getBlockCartModal();
|
||||
|
||||
if ($blockCartModal.length) {
|
||||
$blockCartModal.remove();
|
||||
}
|
||||
|
||||
$('body').append(html);
|
||||
|
||||
$blockCartModal = getBlockCartModal();
|
||||
$blockCartModal.modal('show').on('hidden.bs.modal', (event) => {
|
||||
prestashop.emit('updateProduct', {
|
||||
reason: event.currentTarget.dataset,
|
||||
event,
|
||||
});
|
||||
});
|
||||
};
|
|
@ -1,10 +1,11 @@
|
|||
{**
|
||||
* 2007-2019 PrestaShop and Contributors
|
||||
/**
|
||||
* Copyright since 2007 PrestaShop SA and Contributors
|
||||
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* that is bundled with this package in the file LICENSE.md.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
|
@ -15,14 +16,18 @@
|
|||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://www.prestashop.com for more information.
|
||||
* needs please refer to https://devdocs.prestashop.com/ for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2019 PrestaShop SA and Contributors
|
||||
* @author PrestaShop SA and Contributors <contact@prestashop.com>
|
||||
* @copyright Since 2007 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
*/
|
||||
|
||||
<div class="advertising-block">
|
||||
<a href="{$adv_link}" title="{$adv_title}"><img src="{$image}" alt="{$adv_title}" title="{$adv_title}"/></a>
|
||||
</div>
|
||||
export default function debounce(func, timeout = 300) {
|
||||
let timer;
|
||||
|
||||
return (...args) => {
|
||||
clearTimeout(timer);
|
||||
timer = setTimeout(() => { func.apply(this, args); }, timeout);
|
||||
};
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
/**
|
||||
* Copyright since 2007 PrestaShop SA and Contributors
|
||||
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.md.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://devdocs.prestashop.com/ for more information.
|
||||
*
|
||||
* @author PrestaShop SA and Contributors <contact@prestashop.com>
|
||||
* @copyright Since 2007 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
*/
|
||||
import $ from 'jquery';
|
||||
|
||||
export default class DropDown {
|
||||
constructor(el) {
|
||||
this.el = el;
|
||||
}
|
||||
|
||||
init() {
|
||||
this.el.on('show.bs.dropdown', (e, el) => {
|
||||
if (el) {
|
||||
$(`#${el}`).find('.dropdown-menu').first().stop(true, true)
|
||||
.slideDown();
|
||||
} else {
|
||||
$(e.target).find('.dropdown-menu').first().stop(true, true)
|
||||
.slideDown();
|
||||
}
|
||||
});
|
||||
|
||||
this.el.on('hide.bs.dropdown', (e, el) => {
|
||||
if (el) {
|
||||
$(`#${el}`).find('.dropdown-menu').first().stop(true, true)
|
||||
.slideUp();
|
||||
} else {
|
||||
$(e.target).find('.dropdown-menu').first().stop(true, true)
|
||||
.slideUp();
|
||||
}
|
||||
});
|
||||
|
||||
this.el.find('select.link').each((idx, el) => {
|
||||
$(el).on('change', function () {
|
||||
window.location = $(this).val();
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
/**
|
||||
* Copyright since 2007 PrestaShop SA and Contributors
|
||||
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.md.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://devdocs.prestashop.com/ for more information.
|
||||
*
|
||||
* @author PrestaShop SA and Contributors <contact@prestashop.com>
|
||||
* @copyright Since 2007 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
*/
|
||||
import $ from 'jquery';
|
||||
|
||||
export default class Form {
|
||||
init() {
|
||||
this.parentFocus();
|
||||
this.togglePasswordVisibility();
|
||||
}
|
||||
|
||||
parentFocus() {
|
||||
$('.js-child-focus').on('focus', function () {
|
||||
$(this).closest('.js-parent-focus').addClass('focus');
|
||||
});
|
||||
$('.js-child-focus').on('focusout', function () {
|
||||
$(this).closest('.js-parent-focus').removeClass('focus');
|
||||
});
|
||||
}
|
||||
|
||||
togglePasswordVisibility() {
|
||||
$('button[data-action="show-password"]').on('click', function () {
|
||||
const elm = $(this).closest('.input-group').children('input.js-visible-password');
|
||||
|
||||
if (elm.attr('type') === 'password') {
|
||||
elm.attr('type', 'text');
|
||||
$(this).text($(this).data('textHide'));
|
||||
} else {
|
||||
elm.attr('type', 'password');
|
||||
$(this).text($(this).data('textShow'));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
/**
|
||||
* Copyright since 2007 PrestaShop SA and Contributors
|
||||
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.md.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://devdocs.prestashop.com/ for more information.
|
||||
*
|
||||
* @author PrestaShop SA and Contributors <contact@prestashop.com>
|
||||
* @copyright Since 2007 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
*/
|
||||
import $ from 'jquery';
|
||||
|
||||
export default class ProductMinitature {
|
||||
init() {
|
||||
$('.js-product-miniature').each((index, element) => {
|
||||
// Limit number of shown colors
|
||||
if ($(element).find('.color').length > 5) {
|
||||
let count = 0;
|
||||
|
||||
$(element)
|
||||
.find('.color')
|
||||
.each((colorIndex, colorElement) => {
|
||||
if (colorIndex > 4) {
|
||||
$(colorElement).hide();
|
||||
count += 1;
|
||||
}
|
||||
});
|
||||
|
||||
$(element).find('.js-count').append(`+${count}`);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,97 @@
|
|||
/**
|
||||
* Copyright since 2007 PrestaShop SA and Contributors
|
||||
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.md.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://devdocs.prestashop.com/ for more information.
|
||||
*
|
||||
* @author PrestaShop SA and Contributors <contact@prestashop.com>
|
||||
* @copyright Since 2007 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
*/
|
||||
import $ from 'jquery';
|
||||
// eslint-disable-next-line
|
||||
import 'velocity-animate';
|
||||
// import updateSources from 'update-sources';
|
||||
|
||||
export default class ProductSelect {
|
||||
init() {
|
||||
const MAX_THUMBS = 5;
|
||||
const $arrows = $('.js-modal-arrows');
|
||||
const $thumbnails = $('.js-modal-product-images');
|
||||
|
||||
$('body')
|
||||
.on('click', '.js-modal-thumb', (event) => {
|
||||
// Swap active classes on thumbnail
|
||||
if ($('.js-modal-thumb').hasClass('selected')) {
|
||||
$('.js-modal-thumb').removeClass('selected');
|
||||
}
|
||||
$(event.currentTarget).addClass('selected');
|
||||
|
||||
// Get data from thumbnail and update cover src, alt and title
|
||||
$(prestashop.themeSelectors.product.modalProductCover).attr('src', $(event.target).data('image-large-src'));
|
||||
$(prestashop.themeSelectors.product.modalProductCover).attr('title', $(event.target).attr('title'));
|
||||
$(prestashop.themeSelectors.product.modalProductCover).attr('alt', $(event.target).attr('alt'));
|
||||
|
||||
// Get data from thumbnail and update cover sources
|
||||
// updateSources(
|
||||
// $(prestashop.themeSelectors.product.modalProductCover),
|
||||
// $(event.target).data('image-large-sources'),
|
||||
// );
|
||||
})
|
||||
.on('click', 'aside#thumbnails', (event) => {
|
||||
if (event.target.id === 'thumbnails') {
|
||||
$('#product-modal').modal('hide');
|
||||
}
|
||||
});
|
||||
|
||||
if ($('.js-modal-product-images li').length <= MAX_THUMBS) {
|
||||
$arrows.css('opacity', '.2');
|
||||
} else {
|
||||
$arrows.on('click', (event) => {
|
||||
if ($(event.target).hasClass('arrow-up') && $thumbnails.position().top < 0) {
|
||||
this.move('up');
|
||||
$('.js-modal-arrow-down').css('opacity', '1');
|
||||
} else if (
|
||||
$(event.target).hasClass('arrow-down')
|
||||
&& $thumbnails.position().top + $thumbnails.height() > $('.js-modal-mask').height()
|
||||
) {
|
||||
this.move('down');
|
||||
$('.js-modal-arrow-up').css('opacity', '1');
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
move(direction) {
|
||||
const THUMB_MARGIN = 10;
|
||||
const $thumbnails = $('.js-modal-product-images');
|
||||
const thumbHeight = $('.js-modal-product-images li img').height() + THUMB_MARGIN;
|
||||
const currentPosition = $thumbnails.position().top;
|
||||
$thumbnails.velocity(
|
||||
{
|
||||
translateY: direction === 'up' ? currentPosition + thumbHeight : currentPosition - thumbHeight,
|
||||
},
|
||||
() => {
|
||||
if ($thumbnails.position().top >= 0) {
|
||||
$('.js-modal-arrow-up').css('opacity', '.2');
|
||||
} else if ($thumbnails.position().top + $thumbnails.height() <= $('.js-modal-mask').height()) {
|
||||
$('.js-modal-arrow-down').css('opacity', '.2');
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,80 @@
|
|||
/**
|
||||
* Copyright since 2007 PrestaShop SA and Contributors
|
||||
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.md.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://devdocs.prestashop.com/ for more information.
|
||||
*
|
||||
* @author PrestaShop SA and Contributors <contact@prestashop.com>
|
||||
* @copyright Since 2007 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
*/
|
||||
import $ from 'jquery';
|
||||
import prestashop from 'prestashop';
|
||||
import DropDown from './drop-down';
|
||||
|
||||
export default class TopMenu extends DropDown {
|
||||
init() {
|
||||
let elmtClass;
|
||||
const self = this;
|
||||
this.el.find('li').on('mouseenter mouseleave', (e) => {
|
||||
if (this.el.parent().hasClass('mobile')) {
|
||||
return;
|
||||
}
|
||||
const currentTargetClass = $(e.currentTarget).attr('class');
|
||||
|
||||
if (elmtClass !== currentTargetClass) {
|
||||
const classesSelected = Array.prototype.slice
|
||||
.call(e.currentTarget.classList)
|
||||
.map((elem) => (typeof elem === 'string' ? `.${elem}` : false));
|
||||
|
||||
elmtClass = classesSelected.join('');
|
||||
|
||||
if (elmtClass && $(e.target).data('depth') === 0) {
|
||||
$(`${elmtClass} .js-sub-menu`).css({
|
||||
top: $(`${elmtClass}`).height() + $(`${elmtClass}`).position().top,
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
$('#menu-icon').on('click', () => {
|
||||
$('#mobile_top_menu_wrapper').toggle();
|
||||
self.toggleMobileMenu();
|
||||
});
|
||||
|
||||
this.el.on('click', (e) => {
|
||||
if (this.el.parent().hasClass('mobile')) {
|
||||
return;
|
||||
}
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
prestashop.on('responsive update', () => {
|
||||
$('.js-sub-menu').removeAttr('style');
|
||||
self.toggleMobileMenu();
|
||||
});
|
||||
super.init();
|
||||
}
|
||||
|
||||
toggleMobileMenu() {
|
||||
$('#header').toggleClass('is-open');
|
||||
if ($('#mobile_top_menu_wrapper').is(':visible')) {
|
||||
$('#notifications, #wrapper, #footer').hide();
|
||||
} else {
|
||||
$('#notifications, #wrapper, #footer').show();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
/**
|
||||
* Copyright since 2007 PrestaShop SA and Contributors
|
||||
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.md.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://devdocs.prestashop.com/ for more information.
|
||||
*
|
||||
* @author PrestaShop SA and Contributors <contact@prestashop.com>
|
||||
* @copyright Since 2007 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
*/
|
||||
import $ from 'jquery';
|
||||
|
||||
export default function updateSources(img, sources) {
|
||||
if (sources === undefined) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Get source siblings of the img tag
|
||||
const imgSiblingWebp = $(img).siblings('source[type="image/webp"]');
|
||||
const imgSiblingAvif = $(img).siblings('source[type="image/avif"]');
|
||||
|
||||
// Update them if they exist and we have a source for them
|
||||
if (sources.webp !== undefined && imgSiblingWebp.length) {
|
||||
imgSiblingWebp.attr('srcset', sources.webp);
|
||||
}
|
||||
if (sources.avif !== undefined && imgSiblingAvif.length) {
|
||||
imgSiblingAvif.attr('srcset', sources.avif);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,198 @@
|
|||
/**
|
||||
* Copyright since 2007 PrestaShop SA and Contributors
|
||||
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.md.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://devdocs.prestashop.com/ for more information.
|
||||
*
|
||||
* @author PrestaShop SA and Contributors <contact@prestashop.com>
|
||||
* @copyright Since 2007 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
*/
|
||||
|
||||
import {sprintf} from 'sprintf-js';
|
||||
|
||||
const {passwordPolicy: PasswordPolicyMap} = prestashop.themeSelectors;
|
||||
|
||||
const PASSWORD_POLICY_ERROR = 'The password policy elements are undefined.';
|
||||
|
||||
const getPasswordStrengthFeedback = (
|
||||
strength,
|
||||
) => {
|
||||
switch (strength) {
|
||||
case 0:
|
||||
return {
|
||||
color: 'bg-danger',
|
||||
};
|
||||
|
||||
case 1:
|
||||
return {
|
||||
color: 'bg-danger',
|
||||
};
|
||||
|
||||
case 2:
|
||||
return {
|
||||
color: 'bg-warning',
|
||||
};
|
||||
|
||||
case 3:
|
||||
return {
|
||||
color: 'bg-success',
|
||||
};
|
||||
|
||||
case 4:
|
||||
return {
|
||||
color: 'bg-success',
|
||||
};
|
||||
|
||||
default:
|
||||
throw new Error('Invalid password strength indicator.');
|
||||
}
|
||||
};
|
||||
|
||||
const watchPassword = async (
|
||||
elementInput,
|
||||
feedbackContainer,
|
||||
hints,
|
||||
) => {
|
||||
const {prestashop} = window;
|
||||
const passwordValue = elementInput.value;
|
||||
const elementIcon = feedbackContainer.querySelector(PasswordPolicyMap.requirementScoreIcon);
|
||||
const result = await prestashop.checkPasswordScore(passwordValue);
|
||||
const feedback = getPasswordStrengthFeedback(result.score);
|
||||
const passwordLength = passwordValue.length;
|
||||
const popoverContent = [];
|
||||
|
||||
$(elementInput).popover('dispose');
|
||||
|
||||
feedbackContainer.style.display = passwordValue === '' ? 'none' : 'block';
|
||||
|
||||
if (result.feedback.warning !== '') {
|
||||
if (result.feedback.warning in hints) {
|
||||
popoverContent.push(hints[result.feedback.warning]);
|
||||
}
|
||||
}
|
||||
|
||||
result.feedback.suggestions.forEach((suggestion) => {
|
||||
if (suggestion in hints) {
|
||||
popoverContent.push(hints[suggestion]);
|
||||
}
|
||||
});
|
||||
|
||||
$(elementInput).popover({
|
||||
html: true,
|
||||
placement: 'top',
|
||||
content: popoverContent.join('<br/>'),
|
||||
}).popover('show');
|
||||
|
||||
const passwordLengthValid = passwordLength >= parseInt(elementInput.dataset.minlength, 10)
|
||||
&& passwordLength <= parseInt(elementInput.dataset.maxlength, 10);
|
||||
const passwordScoreValid = parseInt(elementInput.dataset.minscore, 10) <= result.score;
|
||||
|
||||
feedbackContainer.querySelector(PasswordPolicyMap.requirementLengthIcon).classList.toggle(
|
||||
'text-success',
|
||||
passwordLengthValid,
|
||||
);
|
||||
|
||||
elementIcon.classList.toggle(
|
||||
'text-success',
|
||||
passwordScoreValid,
|
||||
);
|
||||
|
||||
// Change input border color depending on the validity
|
||||
elementInput
|
||||
.classList.remove('border-success', 'border-danger');
|
||||
elementInput
|
||||
.classList.add(passwordScoreValid && passwordLengthValid ? 'border-success' : 'border-danger');
|
||||
elementInput
|
||||
.classList.add('form-control', 'border');
|
||||
|
||||
const percentage = (result.score * 20) + 20;
|
||||
const progressBar = feedbackContainer.querySelector(PasswordPolicyMap.progressBar);
|
||||
|
||||
// increase and decrease progress bar
|
||||
if (progressBar) {
|
||||
progressBar.style.width = `${percentage}%`;
|
||||
progressBar.classList.remove('bg-success', 'bg-danger', 'bg-warning');
|
||||
progressBar.classList.add(feedback.color);
|
||||
}
|
||||
};
|
||||
|
||||
// Not testable because it manipulates SVG elements, unsupported by JSDom
|
||||
const usePasswordPolicy = (selector) => {
|
||||
const elements = document.querySelectorAll(selector);
|
||||
elements.forEach((element) => {
|
||||
const inputColumn = element?.querySelector(PasswordPolicyMap.inputColumn);
|
||||
const elementInput = element?.querySelector('input');
|
||||
const templateElement = document.createElement('div');
|
||||
const feedbackTemplate = document.querySelector(PasswordPolicyMap.template);
|
||||
let feedbackContainer;
|
||||
|
||||
if (feedbackTemplate && element && inputColumn && elementInput) {
|
||||
templateElement.innerHTML = feedbackTemplate.innerHTML;
|
||||
inputColumn.append(templateElement);
|
||||
feedbackContainer = element.querySelector(PasswordPolicyMap.container);
|
||||
|
||||
if (feedbackContainer) {
|
||||
const hintElement = document.querySelector(PasswordPolicyMap.hint);
|
||||
|
||||
if (hintElement) {
|
||||
const hints = JSON.parse(hintElement.innerHTML);
|
||||
|
||||
// eslint-disable-next-line max-len
|
||||
const passwordRequirementsLength = feedbackContainer.querySelector(PasswordPolicyMap.requirementLength);
|
||||
// eslint-disable-next-line max-len
|
||||
const passwordRequirementsScore = feedbackContainer.querySelector(PasswordPolicyMap.requirementScore);
|
||||
const passwordLengthText = passwordRequirementsLength?.querySelector('span');
|
||||
const passwordRequirementsText = passwordRequirementsScore?.querySelector('span');
|
||||
|
||||
if (passwordLengthText && passwordRequirementsLength && passwordRequirementsLength.dataset.translation) {
|
||||
passwordLengthText.innerText = sprintf(
|
||||
passwordRequirementsLength.dataset.translation,
|
||||
elementInput.dataset.minlength,
|
||||
elementInput.dataset.maxlength,
|
||||
);
|
||||
}
|
||||
|
||||
if (passwordRequirementsText && passwordRequirementsScore && passwordRequirementsScore.dataset.translation) {
|
||||
passwordRequirementsText.innerText = sprintf(
|
||||
passwordRequirementsScore.dataset.translation,
|
||||
hints[elementInput.dataset.minscore],
|
||||
);
|
||||
}
|
||||
|
||||
// eslint-disable-next-line max-len
|
||||
elementInput.addEventListener('keyup', () => watchPassword(elementInput, feedbackContainer, hints));
|
||||
elementInput.addEventListener('blur', () => {
|
||||
$(elementInput).popover('dispose');
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (element) {
|
||||
return {
|
||||
element,
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
error: new Error(PASSWORD_POLICY_ERROR),
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
export default usePasswordPolicy;
|
|
@ -0,0 +1,43 @@
|
|||
/**
|
||||
* Copyright since 2007 PrestaShop SA and Contributors
|
||||
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.md.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://devdocs.prestashop.com/ for more information.
|
||||
*
|
||||
* @author PrestaShop SA and Contributors <contact@prestashop.com>
|
||||
* @copyright Since 2007 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
*/
|
||||
import $ from 'jquery';
|
||||
import prestashop from 'prestashop';
|
||||
|
||||
function initRmaItemSelector() {
|
||||
$(`${prestashop.themeSelectors.order.returnForm} table thead input[type=checkbox]`).on('click', function () {
|
||||
const checked = $(this).prop('checked');
|
||||
$(`${prestashop.themeSelectors.order.returnForm} table tbody input[type=checkbox]`).each((_, checkbox) => {
|
||||
$(checkbox).prop('checked', checked);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function setupCustomerScripts() {
|
||||
if ($('body#order-detail')) {
|
||||
initRmaItemSelector();
|
||||
}
|
||||
}
|
||||
|
||||
$(document).ready(setupCustomerScripts);
|
|
@ -0,0 +1 @@
|
|||
import $ from "jquery";
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,262 @@
|
|||
/**
|
||||
* Copyright since 2007 PrestaShop SA and Contributors
|
||||
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.md.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://devdocs.prestashop.com/ for more information.
|
||||
*
|
||||
* @author PrestaShop SA and Contributors <contact@prestashop.com>
|
||||
* @copyright Since 2007 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
*/
|
||||
import $ from 'jquery';
|
||||
import prestashop from 'prestashop';
|
||||
// eslint-disable-next-line
|
||||
import "velocity-animate";
|
||||
import updateSources from './components/update-sources';
|
||||
import ProductMinitature from './components/product-miniature';
|
||||
|
||||
$(document).ready(() => {
|
||||
const move = (direction) => {
|
||||
const THUMB_MARGIN = 20;
|
||||
const $thumbnails = $('.js-qv-product-images');
|
||||
const thumbHeight = $('.js-qv-product-images li img').height() + THUMB_MARGIN;
|
||||
const currentPosition = $thumbnails.position().top;
|
||||
$thumbnails.velocity(
|
||||
{
|
||||
translateY:
|
||||
direction === 'up'
|
||||
? currentPosition + thumbHeight
|
||||
: currentPosition - thumbHeight,
|
||||
},
|
||||
() => {
|
||||
if ($thumbnails.position().top >= 0) {
|
||||
$('.arrow-up').css('opacity', '.2');
|
||||
} else if (
|
||||
$thumbnails.position().top + $thumbnails.height()
|
||||
<= $('.js-qv-mask').height()
|
||||
) {
|
||||
$('.arrow-down').css('opacity', '.2');
|
||||
}
|
||||
},
|
||||
);
|
||||
};
|
||||
|
||||
const productConfig = (qv) => {
|
||||
const MAX_THUMBS = 4;
|
||||
const $arrows = $(prestashop.themeSelectors.product.arrows);
|
||||
const $thumbnails = qv.find('.js-qv-product-images');
|
||||
$(prestashop.themeSelectors.product.thumb).on('click', (event) => {
|
||||
// Swap active classes on thumbnail
|
||||
if ($(prestashop.themeSelectors.product.thumb).hasClass('selected')) {
|
||||
$(prestashop.themeSelectors.product.thumb).removeClass('selected');
|
||||
}
|
||||
$(event.currentTarget).addClass('selected');
|
||||
|
||||
// Get data from thumbnail and update cover src, alt and title
|
||||
$(prestashop.themeSelectors.product.cover).attr('src', $(event.target).data('image-large-src'));
|
||||
$(prestashop.themeSelectors.product.cover).attr('alt', $(event.target).attr('alt'));
|
||||
$(prestashop.themeSelectors.product.cover).attr('title', $(event.target).attr('title'));
|
||||
|
||||
// Get data from thumbnail and update cover sources
|
||||
updateSources(
|
||||
$(prestashop.themeSelectors.product.cover),
|
||||
$(event.target).data('image-large-sources'),
|
||||
);
|
||||
});
|
||||
if ($thumbnails.find('li').length <= MAX_THUMBS) {
|
||||
$arrows.hide();
|
||||
} else {
|
||||
$arrows.on('click', (event) => {
|
||||
if (
|
||||
$(event.target).hasClass('arrow-up')
|
||||
&& $('.js-qv-product-images').position().top < 0
|
||||
) {
|
||||
move('up');
|
||||
$(prestashop.themeSelectors.arrowDown).css('opacity', '1');
|
||||
} else if (
|
||||
$(event.target).hasClass('arrow-down')
|
||||
&& $thumbnails.position().top + $thumbnails.height()
|
||||
> $('.js-qv-mask').height()
|
||||
) {
|
||||
move('down');
|
||||
$(prestashop.themeSelectors.arrowUp).css('opacity', '1');
|
||||
}
|
||||
});
|
||||
}
|
||||
qv.find(prestashop.selectors.quantityWanted).TouchSpin({
|
||||
verticalbuttons: true,
|
||||
verticalupclass: 'material-icons touchspin-up',
|
||||
verticaldownclass: 'material-icons touchspin-down',
|
||||
buttondown_class: 'btn btn-touchspin js-touchspin',
|
||||
buttonup_class: 'btn btn-touchspin js-touchspin',
|
||||
min: 1,
|
||||
max: 1000000,
|
||||
});
|
||||
|
||||
$(prestashop.themeSelectors.touchspin).off('touchstart.touchspin');
|
||||
};
|
||||
|
||||
prestashop.on('clickQuickView', (elm) => {
|
||||
const data = {
|
||||
action: 'quickview',
|
||||
id_product: elm.dataset.idProduct,
|
||||
id_product_attribute: elm.dataset.idProductAttribute,
|
||||
};
|
||||
$.post(prestashop.urls.pages.product, data, null, 'json')
|
||||
.then((resp) => {
|
||||
$('body').append(resp.quickview_html);
|
||||
const productModal = $(
|
||||
`#quickview-modal-${resp.product.id}-${resp.product.id_product_attribute}`,
|
||||
);
|
||||
productModal.modal('show');
|
||||
productConfig(productModal);
|
||||
productModal.on('hidden.bs.modal', () => {
|
||||
productModal.remove();
|
||||
});
|
||||
})
|
||||
.fail((resp) => {
|
||||
prestashop.emit('handleError', {
|
||||
eventType: 'clickQuickView',
|
||||
resp,
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
$('body').on(
|
||||
'click',
|
||||
prestashop.themeSelectors.listing.searchFilterToggler,
|
||||
() => {
|
||||
$(prestashop.themeSelectors.listing.searchFiltersWrapper).removeClass(
|
||||
'hidden-sm-down',
|
||||
);
|
||||
$(prestashop.themeSelectors.contentWrapper).addClass('hidden-sm-down');
|
||||
$(prestashop.themeSelectors.footer).addClass('hidden-sm-down');
|
||||
},
|
||||
);
|
||||
$(
|
||||
`${prestashop.themeSelectors.listing.searchFilterControls} ${prestashop.themeSelectors.clear}`,
|
||||
).on('click', () => {
|
||||
$(prestashop.themeSelectors.listing.searchFiltersWrapper).addClass(
|
||||
'hidden-sm-down',
|
||||
);
|
||||
$(prestashop.themeSelectors.contentWrapper).removeClass('hidden-sm-down');
|
||||
$(prestashop.themeSelectors.footer).removeClass('hidden-sm-down');
|
||||
});
|
||||
$(`${prestashop.themeSelectors.listing.searchFilterControls} .ok`).on(
|
||||
'click',
|
||||
() => {
|
||||
$(prestashop.themeSelectors.listing.searchFiltersWrapper).addClass(
|
||||
'hidden-sm-down',
|
||||
);
|
||||
$(prestashop.themeSelectors.contentWrapper).removeClass('hidden-sm-down');
|
||||
$(prestashop.themeSelectors.footer).removeClass('hidden-sm-down');
|
||||
},
|
||||
);
|
||||
|
||||
const parseSearchUrl = function (event) {
|
||||
if (event.target.dataset.searchUrl !== undefined) {
|
||||
return event.target.dataset.searchUrl;
|
||||
}
|
||||
|
||||
if ($(event.target).parent()[0].dataset.searchUrl === undefined) {
|
||||
throw new Error('Can not parse search URL');
|
||||
}
|
||||
|
||||
return $(event.target).parent()[0].dataset.searchUrl;
|
||||
};
|
||||
|
||||
function updateProductListDOM(data) {
|
||||
$(prestashop.themeSelectors.listing.searchFilters).replaceWith(
|
||||
data.rendered_facets,
|
||||
);
|
||||
$(prestashop.themeSelectors.listing.activeSearchFilters).replaceWith(
|
||||
data.rendered_active_filters,
|
||||
);
|
||||
$(prestashop.themeSelectors.listing.listTop).replaceWith(
|
||||
data.rendered_products_top,
|
||||
);
|
||||
|
||||
const renderedProducts = $(data.rendered_products);
|
||||
const productSelectors = $(prestashop.themeSelectors.listing.product);
|
||||
|
||||
if (productSelectors.length > 0) {
|
||||
productSelectors.removeClass().addClass(productSelectors.first().attr('class'));
|
||||
} else {
|
||||
productSelectors.removeClass().addClass(renderedProducts.first().attr('class'));
|
||||
}
|
||||
|
||||
$(prestashop.themeSelectors.listing.list).replaceWith(renderedProducts);
|
||||
|
||||
$(prestashop.themeSelectors.listing.listBottom).replaceWith(
|
||||
data.rendered_products_bottom,
|
||||
);
|
||||
if (data.rendered_products_header) {
|
||||
$(prestashop.themeSelectors.listing.listHeader).replaceWith(
|
||||
data.rendered_products_header,
|
||||
);
|
||||
}
|
||||
|
||||
const productMinitature = new ProductMinitature();
|
||||
productMinitature.init();
|
||||
}
|
||||
|
||||
$('body').on(
|
||||
'change',
|
||||
`${prestashop.themeSelectors.listing.searchFilters} input[data-search-url]`,
|
||||
(event) => {
|
||||
prestashop.emit('updateFacets', parseSearchUrl(event));
|
||||
},
|
||||
);
|
||||
|
||||
$('body').on(
|
||||
'click',
|
||||
prestashop.themeSelectors.listing.searchFiltersClearAll,
|
||||
(event) => {
|
||||
prestashop.emit('updateFacets', parseSearchUrl(event));
|
||||
},
|
||||
);
|
||||
|
||||
$('body').on('click', prestashop.themeSelectors.listing.searchLink, (event) => {
|
||||
event.preventDefault();
|
||||
prestashop.emit(
|
||||
'updateFacets',
|
||||
$(event.target)
|
||||
.closest('a')
|
||||
.get(0).href,
|
||||
);
|
||||
});
|
||||
|
||||
window.addEventListener('popstate', (e) => {
|
||||
if (e.state && e.state.current_url) {
|
||||
window.location.href = e.state.current_url;
|
||||
}
|
||||
});
|
||||
|
||||
$('body').on(
|
||||
'change',
|
||||
`${prestashop.themeSelectors.listing.searchFilters} select`,
|
||||
(event) => {
|
||||
const form = $(event.target).closest('form');
|
||||
prestashop.emit('updateFacets', `?${form.serialize()}`);
|
||||
},
|
||||
);
|
||||
|
||||
prestashop.on('updateProductList', (data) => {
|
||||
updateProductListDOM(data);
|
||||
window.scrollTo(0, 0);
|
||||
});
|
||||
});
|
|
@ -0,0 +1,191 @@
|
|||
/**
|
||||
* Copyright since 2007 PrestaShop SA and Contributors
|
||||
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.md.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://devdocs.prestashop.com/ for more information.
|
||||
*
|
||||
* @author PrestaShop SA and Contributors <contact@prestashop.com>
|
||||
* @copyright Since 2007 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
*/
|
||||
import $ from 'jquery';
|
||||
import prestashop from 'prestashop';
|
||||
import ProductSelect from './components/product-select';
|
||||
import updateSources from './components/update-sources';
|
||||
|
||||
$(document).ready(() => {
|
||||
function coverImage() {
|
||||
const productCover = $(prestashop.themeSelectors.product.cover);
|
||||
const modalProductCover = $(prestashop.themeSelectors.product.modalProductCover);
|
||||
let thumbSelected = $(prestashop.themeSelectors.product.selected);
|
||||
|
||||
const swipe = (selectedThumb, thumbParent) => {
|
||||
const newSelectedThumb = thumbParent.find(prestashop.themeSelectors.product.thumb);
|
||||
|
||||
// Swap active classes on thumbnail
|
||||
selectedThumb.removeClass('selected');
|
||||
newSelectedThumb.addClass('selected');
|
||||
|
||||
// Update sources of both cover and modal cover
|
||||
modalProductCover.prop('src', newSelectedThumb.data('image-large-src'));
|
||||
productCover.prop('src', newSelectedThumb.data('image-medium-src'));
|
||||
|
||||
// Get data from thumbnail and update cover src, alt and title
|
||||
productCover.attr('title', newSelectedThumb.attr('title'));
|
||||
modalProductCover.attr('title', newSelectedThumb.attr('title'));
|
||||
productCover.attr('alt', newSelectedThumb.attr('alt'));
|
||||
modalProductCover.attr('alt', newSelectedThumb.attr('alt'));
|
||||
|
||||
// Get data from thumbnail and update cover sources
|
||||
updateSources(productCover, newSelectedThumb.data('image-medium-sources'));
|
||||
updateSources(modalProductCover, newSelectedThumb.data('image-large-sources'));
|
||||
};
|
||||
|
||||
$(prestashop.themeSelectors.product.thumb).on('click', (event) => {
|
||||
thumbSelected = $(prestashop.themeSelectors.product.selected);
|
||||
swipe(thumbSelected, $(event.target).closest(prestashop.themeSelectors.product.thumbContainer));
|
||||
});
|
||||
|
||||
productCover.swipe({
|
||||
swipe: (event, direction) => {
|
||||
thumbSelected = $(prestashop.themeSelectors.product.selected);
|
||||
const parentThumb = thumbSelected.closest(prestashop.themeSelectors.product.thumbContainer);
|
||||
|
||||
if (direction === 'right') {
|
||||
if (parentThumb.prev().length > 0) {
|
||||
swipe(thumbSelected, parentThumb.prev());
|
||||
} else if (parentThumb.next().length > 0) {
|
||||
swipe(thumbSelected, parentThumb.next());
|
||||
}
|
||||
} else if (direction === 'left') {
|
||||
if (parentThumb.next().length > 0) {
|
||||
swipe(thumbSelected, parentThumb.next());
|
||||
} else if (parentThumb.prev().length > 0) {
|
||||
swipe(thumbSelected, parentThumb.prev());
|
||||
}
|
||||
}
|
||||
},
|
||||
allowPageScroll: 'vertical',
|
||||
});
|
||||
}
|
||||
|
||||
function imageScrollBox() {
|
||||
if ($('#main .js-qv-product-images li').length > 2) {
|
||||
$('#main .js-qv-mask').addClass('scroll');
|
||||
$('.scroll-box-arrows').addClass('scroll');
|
||||
$('#main .js-qv-mask').scrollbox({
|
||||
direction: 'h',
|
||||
distance: 113,
|
||||
autoPlay: false,
|
||||
});
|
||||
$('.scroll-box-arrows .left').click(() => {
|
||||
$('#main .js-qv-mask').trigger('backward');
|
||||
});
|
||||
$('.scroll-box-arrows .right').click(() => {
|
||||
$('#main .js-qv-mask').trigger('forward');
|
||||
});
|
||||
} else {
|
||||
$('#main .js-qv-mask').removeClass('scroll');
|
||||
$('.scroll-box-arrows').removeClass('scroll');
|
||||
}
|
||||
}
|
||||
|
||||
function createInputFile() {
|
||||
$(prestashop.themeSelectors.fileInput).on('change', (event) => {
|
||||
const target = $(event.currentTarget)[0];
|
||||
const file = (target) ? target.files[0] : null;
|
||||
|
||||
if (target && file) {
|
||||
$(target).prev().text(file.name);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function createProductSpin() {
|
||||
const $quantityInput = $(prestashop.selectors.quantityWanted);
|
||||
|
||||
$quantityInput.TouchSpin({
|
||||
verticalbuttons: true,
|
||||
verticalupclass: 'material-icons touchspin-up',
|
||||
verticaldownclass: 'material-icons touchspin-down',
|
||||
buttondown_class: 'btn btn-touchspin js-touchspin',
|
||||
buttonup_class: 'btn btn-touchspin js-touchspin',
|
||||
min: parseInt($quantityInput.attr('min'), 10),
|
||||
max: 1000000,
|
||||
});
|
||||
|
||||
$(prestashop.themeSelectors.touchspin).off('touchstart.touchspin');
|
||||
|
||||
$quantityInput.on('focusout', () => {
|
||||
if ($quantityInput.val() === '' || $quantityInput.val() < $quantityInput.attr('min')) {
|
||||
$quantityInput.val($quantityInput.attr('min'));
|
||||
$quantityInput.trigger('change');
|
||||
}
|
||||
});
|
||||
|
||||
$('body').on('change keyup', prestashop.selectors.quantityWanted, (e) => {
|
||||
if ($quantityInput.val() !== '') {
|
||||
$(e.currentTarget).trigger('touchspin.stopspin');
|
||||
prestashop.emit('updateProduct', {
|
||||
eventType: 'updatedProductQuantity',
|
||||
event: e,
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function addJsProductTabActiveSelector() {
|
||||
const nav = $(prestashop.themeSelectors.product.tabs);
|
||||
nav.on('show.bs.tab', (e) => {
|
||||
const target = $(e.target);
|
||||
target.addClass(prestashop.themeSelectors.product.activeNavClass);
|
||||
$(target.attr('href')).addClass(prestashop.themeSelectors.product.activeTabClass);
|
||||
});
|
||||
nav.on('hide.bs.tab', (e) => {
|
||||
const target = $(e.target);
|
||||
target.removeClass(prestashop.themeSelectors.product.activeNavClass);
|
||||
$(target.attr('href')).removeClass(prestashop.themeSelectors.product.activeTabClass);
|
||||
});
|
||||
}
|
||||
|
||||
createProductSpin();
|
||||
createInputFile();
|
||||
coverImage();
|
||||
imageScrollBox();
|
||||
addJsProductTabActiveSelector();
|
||||
|
||||
prestashop.on('updatedProduct', (event) => {
|
||||
createInputFile();
|
||||
coverImage();
|
||||
if (event && event.product_minimal_quantity) {
|
||||
const minimalProductQuantity = parseInt(event.product_minimal_quantity, 10);
|
||||
const quantityInputSelector = prestashop.selectors.quantityWanted;
|
||||
const quantityInput = $(quantityInputSelector);
|
||||
|
||||
// @see http://www.virtuosoft.eu/code/bootstrap-touchspin/ about Bootstrap TouchSpin
|
||||
quantityInput.trigger('touchspin.updatesettings', {
|
||||
min: minimalProductQuantity,
|
||||
});
|
||||
}
|
||||
imageScrollBox();
|
||||
$($(prestashop.themeSelectors.product.activeTabs).attr('href')).addClass('active').removeClass('fade');
|
||||
$(prestashop.themeSelectors.product.imagesModal).replaceWith(event.product_images_modal);
|
||||
|
||||
const productSelect = new ProductSelect();
|
||||
productSelect.init();
|
||||
});
|
||||
});
|
|
@ -0,0 +1,80 @@
|
|||
/**
|
||||
* Copyright since 2007 PrestaShop SA and Contributors
|
||||
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.md.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://devdocs.prestashop.com/ for more information.
|
||||
*
|
||||
* @author PrestaShop SA and Contributors <contact@prestashop.com>
|
||||
* @copyright Since 2007 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
*/
|
||||
import $ from 'jquery';
|
||||
import prestashop from 'prestashop';
|
||||
|
||||
prestashop.responsive = prestashop.responsive || {};
|
||||
|
||||
prestashop.responsive.current_width = window.innerWidth;
|
||||
prestashop.responsive.min_width = 768;
|
||||
prestashop.responsive.mobile = prestashop.responsive.current_width < prestashop.responsive.min_width;
|
||||
|
||||
function swapChildren(obj1, obj2) {
|
||||
const temp = obj2.children().detach();
|
||||
obj2.empty().append(obj1.children().detach());
|
||||
obj1.append(temp);
|
||||
}
|
||||
|
||||
function toggleMobileStyles() {
|
||||
if (prestashop.responsive.mobile) {
|
||||
$("*[id^='_desktop_']").each((idx, el) => {
|
||||
const target = $(`#${el.id.replace('_desktop_', '_mobile_')}`);
|
||||
|
||||
if (target.length) {
|
||||
swapChildren($(el), target);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
$("*[id^='_mobile_']").each((idx, el) => {
|
||||
const target = $(`#${el.id.replace('_mobile_', '_desktop_')}`);
|
||||
|
||||
if (target.length) {
|
||||
swapChildren($(el), target);
|
||||
}
|
||||
});
|
||||
}
|
||||
prestashop.emit('responsive update', {
|
||||
mobile: prestashop.responsive.mobile,
|
||||
});
|
||||
}
|
||||
|
||||
$(window).on('resize', () => {
|
||||
const cw = prestashop.responsive.current_width;
|
||||
const mw = prestashop.responsive.min_width;
|
||||
const w = window.innerWidth;
|
||||
const toggle = (cw >= mw && w < mw) || (cw < mw && w >= mw);
|
||||
|
||||
prestashop.responsive.current_width = w;
|
||||
prestashop.responsive.mobile = prestashop.responsive.current_width < prestashop.responsive.min_width;
|
||||
if (toggle) {
|
||||
toggleMobileStyles();
|
||||
}
|
||||
});
|
||||
|
||||
$(document).ready(() => {
|
||||
if (prestashop.responsive.mobile) {
|
||||
toggleMobileStyles();
|
||||
}
|
||||
});
|
|
@ -0,0 +1,109 @@
|
|||
/**
|
||||
* Copyright since 2007 PrestaShop SA and Contributors
|
||||
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.md.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://devdocs.prestashop.com/ for more information.
|
||||
*
|
||||
* @author PrestaShop SA and Contributors <contact@prestashop.com>
|
||||
* @copyright Since 2007 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
*/
|
||||
import prestashop from 'prestashop';
|
||||
import $ from 'jquery';
|
||||
|
||||
const passwordPolicy = {
|
||||
template: '#password-feedback',
|
||||
hint: '.js-hint-password',
|
||||
container: '.password-strength-feedback',
|
||||
strengthText: '.password-strength-text',
|
||||
requirementScore: '.password-requirements-score',
|
||||
requirementLength: '.password-requirements-length',
|
||||
requirementScoreIcon: '.password-requirements-score i',
|
||||
requirementLengthIcon: '.password-requirements-length i',
|
||||
progressBar: '.progress-bar',
|
||||
inputColumn: '.js-input-column',
|
||||
};
|
||||
|
||||
prestashop.themeSelectors = {
|
||||
product: {
|
||||
tabs: '.tabs .nav-link',
|
||||
activeNavClass: 'js-product-nav-active',
|
||||
activeTabClass: 'js-product-tab-active',
|
||||
activeTabs: '.tabs .nav-link.active, .js-product-nav-active',
|
||||
imagesModal: '.js-product-images-modal',
|
||||
thumb: '.js-thumb',
|
||||
thumbContainer: '.thumb-container, .js-thumb-container',
|
||||
arrows: '.js-arrows',
|
||||
selected: '.selected, .js-thumb-selected',
|
||||
modalProductCover: '.js-modal-product-cover',
|
||||
cover: '.js-qv-product-cover',
|
||||
customizationModal: '.js-customization-modal',
|
||||
},
|
||||
listing: {
|
||||
searchFilterToggler: '#search_filter_toggler, .js-search-toggler',
|
||||
searchFiltersWrapper: '#search_filters_wrapper',
|
||||
searchFilterControls: '#search_filter_controls',
|
||||
searchFilters: '#search_filters',
|
||||
activeSearchFilters: '#js-active-search-filters',
|
||||
listTop: '#js-product-list-top',
|
||||
product: '.js-product',
|
||||
list: '#js-product-list',
|
||||
listBottom: '#js-product-list-bottom',
|
||||
listHeader: '#js-product-list-header',
|
||||
searchFiltersClearAll: '.js-search-filters-clear-all',
|
||||
searchLink: '.js-search-link',
|
||||
},
|
||||
order: {
|
||||
returnForm: '#order-return-form, .js-order-return-form',
|
||||
},
|
||||
arrowDown: '.arrow-down, .js-arrow-down',
|
||||
arrowUp: '.arrow-up, .js-arrow-up',
|
||||
clear: '.clear',
|
||||
fileInput: '.js-file-input',
|
||||
contentWrapper: '#content-wrapper, .js-content-wrapper',
|
||||
footer: '#footer, .js-footer',
|
||||
modalContent: '.js-modal-content',
|
||||
modal: '#modal, .js-checkout-modal',
|
||||
touchspin: '.js-touchspin',
|
||||
checkout: {
|
||||
termsLink: '.js-terms a',
|
||||
giftCheckbox: '.js-gift-checkbox',
|
||||
imagesLink: '.card-block .cart-summary-products p a, .js-show-details',
|
||||
carrierExtraContent: '.carrier-extra-content, .js-carrier-extra-content',
|
||||
btn: '.checkout a',
|
||||
},
|
||||
cart: {
|
||||
productLineQty: '.js-cart-line-product-quantity',
|
||||
quickview: '.quickview',
|
||||
touchspin: '.bootstrap-touchspin',
|
||||
promoCode: '#promo-code',
|
||||
displayPromo: '.display-promo',
|
||||
promoCodeButton: '.promo-code-button',
|
||||
discountCode: '.js-discount .code',
|
||||
discountName: '[name=discount_name]',
|
||||
actions: '[data-link-action="delete-from-cart"], [data-link-action="remove-voucher"]',
|
||||
},
|
||||
notifications: {
|
||||
dangerAlert: '#notifications article.alert-danger',
|
||||
container: '#notifications .notifications-container',
|
||||
},
|
||||
passwordPolicy,
|
||||
};
|
||||
|
||||
$(document).ready(() => {
|
||||
prestashop.emit('themeSelectorsInit');
|
||||
});
|
|
@ -0,0 +1,151 @@
|
|||
/**
|
||||
* Copyright since 2007 PrestaShop SA and Contributors
|
||||
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.md.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://devdocs.prestashop.com/ for more information.
|
||||
*
|
||||
* @author PrestaShop SA and Contributors <contact@prestashop.com>
|
||||
* @copyright Since 2007 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
*/
|
||||
/* eslint-disable */
|
||||
import "jquery-offcanvas/dist/jquery.offcanvas.min.css";
|
||||
import touchspin from "bootstrap-touchspin";
|
||||
import "jquery-touchswipe";
|
||||
import "./selectors";
|
||||
|
||||
import "./responsive";
|
||||
import "./checkout";
|
||||
import "./customer";
|
||||
import "./listing";
|
||||
import "./product";
|
||||
import "./cart";
|
||||
import "./facets";
|
||||
|
||||
import prestashop from "prestashop";
|
||||
import EventEmitter from "events";
|
||||
import DropDown from "./components/drop-down";
|
||||
import Form from "./components/form";
|
||||
import usePasswordPolicy from "./components/usePasswordPolicy";
|
||||
import ProductMinitature from "./components/product-miniature";
|
||||
import ProductSelect from "./components/product-select";
|
||||
import TopMenu from "./components/top-menu";
|
||||
|
||||
import "./components/block-cart";
|
||||
import $ from "jquery";
|
||||
import jo from "jquery-offcanvas";
|
||||
jo(window, $);
|
||||
touchspin(window, $);
|
||||
/* eslint-enable */
|
||||
|
||||
// "inherit" EventEmitter
|
||||
// eslint-disable-next-line
|
||||
for (const i in EventEmitter.prototype) {
|
||||
prestashop[i] = EventEmitter.prototype[i];
|
||||
}
|
||||
|
||||
$(function () {
|
||||
const dropDownEl = $(".js-dropdown");
|
||||
const form = new Form();
|
||||
const topMenuEl = $('.js-top-menu ul[data-depth="0"]');
|
||||
const dropDown = new DropDown(dropDownEl);
|
||||
const topMenu = new TopMenu(topMenuEl);
|
||||
const productMinitature = new ProductMinitature();
|
||||
const productSelect = new ProductSelect();
|
||||
dropDown.init();
|
||||
form.init();
|
||||
topMenu.init();
|
||||
productMinitature.init();
|
||||
productSelect.init();
|
||||
usePasswordPolicy(".field-password-policy");
|
||||
|
||||
$('.carousel[data-touch="true"]').swipe({
|
||||
swipe(event, direction) {
|
||||
if (direction === "left") {
|
||||
$(this).carousel("next");
|
||||
}
|
||||
if (direction === "right") {
|
||||
$(this).carousel("prev");
|
||||
}
|
||||
},
|
||||
allowPageScroll: "vertical",
|
||||
});
|
||||
|
||||
// $("#products_top_sidebar").offcanvas({
|
||||
// effect: "slide-in-over",
|
||||
// overlay: true,
|
||||
// classes: {
|
||||
// element: "absolute top-0 z-50",
|
||||
// },
|
||||
// });
|
||||
//
|
||||
// $("#show_filters").on("click", function () {
|
||||
// $("#products_top_sidebar").offcanvas("toggle");
|
||||
// });
|
||||
|
||||
function ThAccordion() {}
|
||||
|
||||
$.extend(ThAccordion.prototype, {
|
||||
init() {},
|
||||
});
|
||||
|
||||
$.fn["thaccordion"] = function () {
|
||||
var selectors = {
|
||||
root: ".th-accordion",
|
||||
item: ".th-accordion-item",
|
||||
trigger: ".th-accordion-item-trigger",
|
||||
content: ".th-accordion-item-content",
|
||||
};
|
||||
let selection = null;
|
||||
let items = this.find(selectors.item);
|
||||
|
||||
function collapseAll() {
|
||||
items.each(function () {
|
||||
$(this).find(selectors.content).hide(500);
|
||||
});
|
||||
}
|
||||
|
||||
function open() {
|
||||
collapseAll();
|
||||
$(selection).find(selectors.content).show(500);
|
||||
}
|
||||
|
||||
function isOpen(item) {
|
||||
return $(item).find(selectors.content).is(":visible");
|
||||
}
|
||||
|
||||
collapseAll();
|
||||
|
||||
items.each(function () {
|
||||
var self = this;
|
||||
$(this)
|
||||
.find(selectors.trigger)
|
||||
.on("click", function () {
|
||||
if (selection === self) {
|
||||
selection = null;
|
||||
} else {
|
||||
selection = self;
|
||||
if (!isOpen(selection)) {
|
||||
open();
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
$(".th-accordion").thaccordion();
|
||||
});
|
|
@ -5,11 +5,24 @@
|
|||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"livereload": "^0.9.3",
|
||||
"tailwindcss": "^3.3.5"
|
||||
"tailwindcss": "^3.3.5",
|
||||
"vite": "^4.5.0"
|
||||
},
|
||||
"scripts": {
|
||||
"dev:tailwind": "tailwindcss -i ./elegance.css -o ../assets/css/theme.css --watch",
|
||||
"dev:livereload": "livereload \"../templates/, ../modules/, ../assets/\"",
|
||||
"dev": "yarn run dev:livereload & yarn run dev:tailwind"
|
||||
"dev:js": "vite build --watch",
|
||||
"dev": "yarn run dev:livereload & yarn run dev:tailwind & yarn run dev:js"
|
||||
},
|
||||
"dependencies": {
|
||||
"@tailwindcss/forms": "^0.5.6",
|
||||
"bootstrap-touchspin": "^4.7.3",
|
||||
"events": "^3.3.0",
|
||||
"jquery": "3.5.1",
|
||||
"jquery-offcanvas": "^3.4.7",
|
||||
"jquery-touchswipe": "^1.6.19",
|
||||
"postcss-import": "^15.1.0",
|
||||
"sprintf-js": "^1.1.3",
|
||||
"velocity-animate": "^1.5.2"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
module.exports = {
|
||||
plugins: {
|
||||
"postcss-import": {},
|
||||
tailwindcss: {},
|
||||
},
|
||||
};
|
|
@ -4,9 +4,8 @@ module.exports = {
|
|||
theme: {
|
||||
fontFamily: {
|
||||
sans: ["Cairo"],
|
||||
serif: ["Cairo"]
|
||||
}
|
||||
serif: ["Cairo"],
|
||||
},
|
||||
plugins: [],
|
||||
}
|
||||
|
||||
},
|
||||
plugins: [require("@tailwindcss/forms")],
|
||||
};
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
import { defineConfig } from "vite";
|
||||
|
||||
export default defineConfig({
|
||||
build: {
|
||||
sourcemap: "inline",
|
||||
minify: false,
|
||||
lib: {
|
||||
entry: "./js/theme.js",
|
||||
name: "theme",
|
||||
formats: ["iife"],
|
||||
fileName: function () {
|
||||
return "theme.js";
|
||||
},
|
||||
},
|
||||
outDir: "../assets/js/",
|
||||
rollupOptions: {
|
||||
external: ["$", "jquery", "prestashop"],
|
||||
output: {
|
||||
globals: {
|
||||
$: "$",
|
||||
jquery: "jQuery",
|
||||
prestashop: "prestashop",
|
||||
},
|
||||
},
|
||||
},
|
||||
write: true,
|
||||
},
|
||||
});
|
|
@ -0,0 +1,822 @@
|
|||
Arguments:
|
||||
/Users/dineshsalunke/.local/share/nvm/v16.20.0/bin/node /Users/dineshsalunke/.local/share/nvm/v16.20.0/bin/yarn add update-sources
|
||||
|
||||
PATH:
|
||||
/Users/dineshsalunke/.bun/bin:/Users/dineshsalunke/.local/bin:/Users/dineshsalunke/.local/share/nvm/v16.20.0/bin:/Users/dineshsalunke/.cargo/bin:/opt/homebrew/bin:/bin:/Users/dineshsalunke/go/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/usr/local/go/bin
|
||||
|
||||
Yarn version:
|
||||
1.22.19
|
||||
|
||||
Node version:
|
||||
16.20.0
|
||||
|
||||
Platform:
|
||||
darwin arm64
|
||||
|
||||
Trace:
|
||||
Error: https://registry.yarnpkg.com/update-sources: Not found
|
||||
at Request.params.callback [as _callback] (/Users/dineshsalunke/.local/share/nvm/v16.20.0/lib/node_modules/yarn/lib/cli.js:66145:18)
|
||||
at Request.self.callback (/Users/dineshsalunke/.local/share/nvm/v16.20.0/lib/node_modules/yarn/lib/cli.js:140890:22)
|
||||
at Request.emit (node:events:513:28)
|
||||
at Request.<anonymous> (/Users/dineshsalunke/.local/share/nvm/v16.20.0/lib/node_modules/yarn/lib/cli.js:141862:10)
|
||||
at Request.emit (node:events:513:28)
|
||||
at IncomingMessage.<anonymous> (/Users/dineshsalunke/.local/share/nvm/v16.20.0/lib/node_modules/yarn/lib/cli.js:141784:12)
|
||||
at Object.onceWrapper (node:events:627:28)
|
||||
at IncomingMessage.emit (node:events:525:35)
|
||||
at endReadableNT (node:internal/streams/readable:1358:12)
|
||||
at processTicksAndRejections (node:internal/process/task_queues:83:21)
|
||||
|
||||
npm manifest:
|
||||
{
|
||||
"name": "elegance",
|
||||
"version": "1.0.0",
|
||||
"main": "index.js",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"livereload": "^0.9.3",
|
||||
"tailwindcss": "^3.3.5",
|
||||
"vite": "^4.5.0"
|
||||
},
|
||||
"scripts": {
|
||||
"dev:tailwind": "tailwindcss -i ./elegance.css -o ../assets/css/theme.css --watch",
|
||||
"dev:livereload": "livereload \"../templates/, ../modules/, ../assets/\"",
|
||||
"dev:js": "vite dev",
|
||||
"dev": "yarn run dev:livereload & yarn run dev:tailwind & yarn run dev:js"
|
||||
},
|
||||
"dependencies": {
|
||||
"bootstrap-touchspin": "^4.7.3",
|
||||
"events": "^3.3.0",
|
||||
"jquery": "^3.7.1",
|
||||
"jquery-touchswipe": "^1.6.19",
|
||||
"sprintf-js": "^1.1.3",
|
||||
"velocity-animate": "^1.5.2"
|
||||
}
|
||||
}
|
||||
|
||||
yarn manifest:
|
||||
No manifest
|
||||
|
||||
Lockfile:
|
||||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@alloc/quick-lru@^5.2.0":
|
||||
version "5.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30"
|
||||
integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==
|
||||
|
||||
"@esbuild/android-arm64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622"
|
||||
integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==
|
||||
|
||||
"@esbuild/android-arm@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682"
|
||||
integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==
|
||||
|
||||
"@esbuild/android-x64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2"
|
||||
integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==
|
||||
|
||||
"@esbuild/darwin-arm64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1"
|
||||
integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==
|
||||
|
||||
"@esbuild/darwin-x64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d"
|
||||
integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==
|
||||
|
||||
"@esbuild/freebsd-arm64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54"
|
||||
integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==
|
||||
|
||||
"@esbuild/freebsd-x64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e"
|
||||
integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==
|
||||
|
||||
"@esbuild/linux-arm64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0"
|
||||
integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==
|
||||
|
||||
"@esbuild/linux-arm@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0"
|
||||
integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==
|
||||
|
||||
"@esbuild/linux-ia32@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7"
|
||||
integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==
|
||||
|
||||
"@esbuild/linux-loong64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d"
|
||||
integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==
|
||||
|
||||
"@esbuild/linux-mips64el@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231"
|
||||
integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==
|
||||
|
||||
"@esbuild/linux-ppc64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb"
|
||||
integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==
|
||||
|
||||
"@esbuild/linux-riscv64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6"
|
||||
integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==
|
||||
|
||||
"@esbuild/linux-s390x@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071"
|
||||
integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==
|
||||
|
||||
"@esbuild/linux-x64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338"
|
||||
integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==
|
||||
|
||||
"@esbuild/netbsd-x64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1"
|
||||
integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==
|
||||
|
||||
"@esbuild/openbsd-x64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae"
|
||||
integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==
|
||||
|
||||
"@esbuild/sunos-x64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d"
|
||||
integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==
|
||||
|
||||
"@esbuild/win32-arm64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9"
|
||||
integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==
|
||||
|
||||
"@esbuild/win32-ia32@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102"
|
||||
integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==
|
||||
|
||||
"@esbuild/win32-x64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d"
|
||||
integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==
|
||||
|
||||
"@jridgewell/gen-mapping@^0.3.2":
|
||||
version "0.3.3"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098"
|
||||
integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==
|
||||
dependencies:
|
||||
"@jridgewell/set-array" "^1.0.1"
|
||||
"@jridgewell/sourcemap-codec" "^1.4.10"
|
||||
"@jridgewell/trace-mapping" "^0.3.9"
|
||||
|
||||
"@jridgewell/resolve-uri@^3.1.0":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721"
|
||||
integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==
|
||||
|
||||
"@jridgewell/set-array@^1.0.1":
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
|
||||
integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
|
||||
|
||||
"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14":
|
||||
version "1.4.15"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
|
||||
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
|
||||
|
||||
"@jridgewell/trace-mapping@^0.3.9":
|
||||
version "0.3.20"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f"
|
||||
integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==
|
||||
dependencies:
|
||||
"@jridgewell/resolve-uri" "^3.1.0"
|
||||
"@jridgewell/sourcemap-codec" "^1.4.14"
|
||||
|
||||
"@nodelib/fs.scandir@2.1.5":
|
||||
version "2.1.5"
|
||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
|
||||
integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
|
||||
dependencies:
|
||||
"@nodelib/fs.stat" "2.0.5"
|
||||
run-parallel "^1.1.9"
|
||||
|
||||
"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
|
||||
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
|
||||
|
||||
"@nodelib/fs.walk@^1.2.3":
|
||||
version "1.2.8"
|
||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
|
||||
integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
|
||||
dependencies:
|
||||
"@nodelib/fs.scandir" "2.1.5"
|
||||
fastq "^1.6.0"
|
||||
|
||||
any-promise@^1.0.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
|
||||
integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==
|
||||
|
||||
anymatch@~3.1.2:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
|
||||
integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
|
||||
dependencies:
|
||||
normalize-path "^3.0.0"
|
||||
picomatch "^2.0.4"
|
||||
|
||||
arg@^5.0.2:
|
||||
version "5.0.2"
|
||||
resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c"
|
||||
integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==
|
||||
|
||||
balanced-match@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
|
||||
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
|
||||
|
||||
binary-extensions@^2.0.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
|
||||
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
|
||||
|
||||
bootstrap-touchspin@^4.7.3:
|
||||
version "4.7.3"
|
||||
resolved "https://registry.yarnpkg.com/bootstrap-touchspin/-/bootstrap-touchspin-4.7.3.tgz#0316a3e7a390eb8811996cc14ab13ff0efb647de"
|
||||
integrity sha512-VVyPKI05ybS4ciB0OJ8g4Jx4SU3rlrWa/ItSxIi7BWNVa0jUYt3eujeOiBWpkuEGukECwiAbwuzh3a+xLtxueQ==
|
||||
|
||||
brace-expansion@^1.1.7:
|
||||
version "1.1.11"
|
||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
|
||||
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
|
||||
dependencies:
|
||||
balanced-match "^1.0.0"
|
||||
concat-map "0.0.1"
|
||||
|
||||
braces@^3.0.2, braces@~3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
|
||||
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
|
||||
dependencies:
|
||||
fill-range "^7.0.1"
|
||||
|
||||
camelcase-css@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"
|
||||
integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
|
||||
|
||||
chokidar@^3.5.0, chokidar@^3.5.3:
|
||||
version "3.5.3"
|
||||
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
|
||||
integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
|
||||
dependencies:
|
||||
anymatch "~3.1.2"
|
||||
braces "~3.0.2"
|
||||
glob-parent "~5.1.2"
|
||||
is-binary-path "~2.1.0"
|
||||
is-glob "~4.0.1"
|
||||
normalize-path "~3.0.0"
|
||||
readdirp "~3.6.0"
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.2"
|
||||
|
||||
commander@^4.0.0:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
|
||||
integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
|
||||
|
||||
concat-map@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
|
||||
|
||||
cssesc@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
|
||||
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
|
||||
|
||||
didyoumean@^1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037"
|
||||
integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==
|
||||
|
||||
dlv@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79"
|
||||
integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==
|
||||
|
||||
esbuild@^0.18.10:
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6"
|
||||
integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==
|
||||
optionalDependencies:
|
||||
"@esbuild/android-arm" "0.18.20"
|
||||
"@esbuild/android-arm64" "0.18.20"
|
||||
"@esbuild/android-x64" "0.18.20"
|
||||
"@esbuild/darwin-arm64" "0.18.20"
|
||||
"@esbuild/darwin-x64" "0.18.20"
|
||||
"@esbuild/freebsd-arm64" "0.18.20"
|
||||
"@esbuild/freebsd-x64" "0.18.20"
|
||||
"@esbuild/linux-arm" "0.18.20"
|
||||
"@esbuild/linux-arm64" "0.18.20"
|
||||
"@esbuild/linux-ia32" "0.18.20"
|
||||
"@esbuild/linux-loong64" "0.18.20"
|
||||
"@esbuild/linux-mips64el" "0.18.20"
|
||||
"@esbuild/linux-ppc64" "0.18.20"
|
||||
"@esbuild/linux-riscv64" "0.18.20"
|
||||
"@esbuild/linux-s390x" "0.18.20"
|
||||
"@esbuild/linux-x64" "0.18.20"
|
||||
"@esbuild/netbsd-x64" "0.18.20"
|
||||
"@esbuild/openbsd-x64" "0.18.20"
|
||||
"@esbuild/sunos-x64" "0.18.20"
|
||||
"@esbuild/win32-arm64" "0.18.20"
|
||||
"@esbuild/win32-ia32" "0.18.20"
|
||||
"@esbuild/win32-x64" "0.18.20"
|
||||
|
||||
events@^3.3.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
|
||||
integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
|
||||
|
||||
fast-glob@^3.3.0:
|
||||
version "3.3.1"
|
||||
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4"
|
||||
integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==
|
||||
dependencies:
|
||||
"@nodelib/fs.stat" "^2.0.2"
|
||||
"@nodelib/fs.walk" "^1.2.3"
|
||||
glob-parent "^5.1.2"
|
||||
merge2 "^1.3.0"
|
||||
micromatch "^4.0.4"
|
||||
|
||||
fastq@^1.6.0:
|
||||
version "1.15.0"
|
||||
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a"
|
||||
integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==
|
||||
dependencies:
|
||||
reusify "^1.0.4"
|
||||
|
||||
fill-range@^7.0.1:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
|
||||
integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
|
||||
dependencies:
|
||||
to-regex-range "^5.0.1"
|
||||
|
||||
fs.realpath@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
||||
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
|
||||
|
||||
fsevents@~2.3.2:
|
||||
version "2.3.3"
|
||||
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
|
||||
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
|
||||
|
||||
function-bind@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
|
||||
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
|
||||
|
||||
glob-parent@^5.1.2, glob-parent@~5.1.2:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
|
||||
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
|
||||
dependencies:
|
||||
is-glob "^4.0.1"
|
||||
|
||||
glob-parent@^6.0.2:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
|
||||
integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
|
||||
dependencies:
|
||||
is-glob "^4.0.3"
|
||||
|
||||
glob@7.1.6:
|
||||
version "7.1.6"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
|
||||
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
|
||||
dependencies:
|
||||
fs.realpath "^1.0.0"
|
||||
inflight "^1.0.4"
|
||||
inherits "2"
|
||||
minimatch "^3.0.4"
|
||||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
hasown@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c"
|
||||
integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==
|
||||
dependencies:
|
||||
function-bind "^1.1.2"
|
||||
|
||||
inflight@^1.0.4:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
||||
integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
|
||||
dependencies:
|
||||
once "^1.3.0"
|
||||
wrappy "1"
|
||||
|
||||
inherits@2:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||
|
||||
is-binary-path@~2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
|
||||
integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
|
||||
dependencies:
|
||||
binary-extensions "^2.0.0"
|
||||
|
||||
is-core-module@^2.13.0:
|
||||
version "2.13.1"
|
||||
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384"
|
||||
integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==
|
||||
dependencies:
|
||||
hasown "^2.0.0"
|
||||
|
||||
is-extglob@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
|
||||
integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
|
||||
|
||||
is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
|
||||
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
|
||||
dependencies:
|
||||
is-extglob "^2.1.1"
|
||||
|
||||
is-number@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
|
||||
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
|
||||
|
||||
jiti@^1.19.1:
|
||||
version "1.21.0"
|
||||
resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d"
|
||||
integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==
|
||||
|
||||
jquery-touchswipe@^1.6.19:
|
||||
version "1.6.19"
|
||||
resolved "https://registry.yarnpkg.com/jquery-touchswipe/-/jquery-touchswipe-1.6.19.tgz#dfd5ddaec0b78212dd500d29707129b9c7fd6cd4"
|
||||
integrity sha512-b0BGje9reNRU3u6ksAK9QqnX7yBRgLNe/wYG7DOfyDlhBlYjayIT8bSOHmcuvptIDW/ubM9CTW/mnZf9Rohuow==
|
||||
|
||||
jquery@^3.7.1:
|
||||
version "3.7.1"
|
||||
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de"
|
||||
integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==
|
||||
|
||||
lilconfig@^2.0.5, lilconfig@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52"
|
||||
integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==
|
||||
|
||||
lines-and-columns@^1.1.6:
|
||||
version "1.2.4"
|
||||
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
|
||||
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
|
||||
|
||||
livereload-js@^3.3.1:
|
||||
version "3.4.1"
|
||||
resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-3.4.1.tgz#ba90fbc708ed1b9a024bb89c4ee12c96ea03d66f"
|
||||
integrity sha512-5MP0uUeVCec89ZbNOT/i97Mc+q3SxXmiUGhRFOTmhrGPn//uWVQdCvcLJDy64MSBR5MidFdOR7B9viumoavy6g==
|
||||
|
||||
livereload@^0.9.3:
|
||||
version "0.9.3"
|
||||
resolved "https://registry.yarnpkg.com/livereload/-/livereload-0.9.3.tgz#a714816375ed52471408bede8b49b2ee6a0c55b1"
|
||||
integrity sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==
|
||||
dependencies:
|
||||
chokidar "^3.5.0"
|
||||
livereload-js "^3.3.1"
|
||||
opts ">= 1.2.0"
|
||||
ws "^7.4.3"
|
||||
|
||||
merge2@^1.3.0:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
|
||||
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
|
||||
|
||||
micromatch@^4.0.4, micromatch@^4.0.5:
|
||||
version "4.0.5"
|
||||
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
|
||||
integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
|
||||
dependencies:
|
||||
braces "^3.0.2"
|
||||
picomatch "^2.3.1"
|
||||
|
||||
minimatch@^3.0.4:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
|
||||
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
|
||||
dependencies:
|
||||
brace-expansion "^1.1.7"
|
||||
|
||||
mz@^2.7.0:
|
||||
version "2.7.0"
|
||||
resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
|
||||
integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==
|
||||
dependencies:
|
||||
any-promise "^1.0.0"
|
||||
object-assign "^4.0.1"
|
||||
thenify-all "^1.0.0"
|
||||
|
||||
nanoid@^3.3.6:
|
||||
version "3.3.6"
|
||||
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
|
||||
integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
|
||||
|
||||
normalize-path@^3.0.0, normalize-path@~3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
|
||||
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
|
||||
|
||||
object-assign@^4.0.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
||||
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
|
||||
|
||||
object-hash@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9"
|
||||
integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==
|
||||
|
||||
once@^1.3.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
||||
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
|
||||
dependencies:
|
||||
wrappy "1"
|
||||
|
||||
"opts@>= 1.2.0":
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/opts/-/opts-2.0.2.tgz#a17e189fbbfee171da559edd8a42423bc5993ce1"
|
||||
integrity sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==
|
||||
|
||||
path-is-absolute@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
||||
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
|
||||
|
||||
path-parse@^1.0.7:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
|
||||
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
|
||||
|
||||
picocolors@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
|
||||
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
|
||||
|
||||
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
|
||||
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
|
||||
|
||||
pify@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
||||
integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
|
||||
|
||||
pirates@^4.0.1:
|
||||
version "4.0.6"
|
||||
resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9"
|
||||
integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==
|
||||
|
||||
postcss-import@^15.1.0:
|
||||
version "15.1.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70"
|
||||
integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==
|
||||
dependencies:
|
||||
postcss-value-parser "^4.0.0"
|
||||
read-cache "^1.0.0"
|
||||
resolve "^1.1.7"
|
||||
|
||||
postcss-js@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2"
|
||||
integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==
|
||||
dependencies:
|
||||
camelcase-css "^2.0.1"
|
||||
|
||||
postcss-load-config@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.1.tgz#152383f481c2758274404e4962743191d73875bd"
|
||||
integrity sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==
|
||||
dependencies:
|
||||
lilconfig "^2.0.5"
|
||||
yaml "^2.1.1"
|
||||
|
||||
postcss-nested@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c"
|
||||
integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==
|
||||
dependencies:
|
||||
postcss-selector-parser "^6.0.11"
|
||||
|
||||
postcss-selector-parser@^6.0.11:
|
||||
version "6.0.13"
|
||||
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b"
|
||||
integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==
|
||||
dependencies:
|
||||
cssesc "^3.0.0"
|
||||
util-deprecate "^1.0.2"
|
||||
|
||||
postcss-value-parser@^4.0.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
|
||||
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
|
||||
|
||||
postcss@^8.4.23, postcss@^8.4.27:
|
||||
version "8.4.31"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d"
|
||||
integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==
|
||||
dependencies:
|
||||
nanoid "^3.3.6"
|
||||
picocolors "^1.0.0"
|
||||
source-map-js "^1.0.2"
|
||||
|
||||
queue-microtask@^1.2.2:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
|
||||
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
|
||||
|
||||
read-cache@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
|
||||
integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==
|
||||
dependencies:
|
||||
pify "^2.3.0"
|
||||
|
||||
readdirp@~3.6.0:
|
||||
version "3.6.0"
|
||||
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
|
||||
integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
|
||||
dependencies:
|
||||
picomatch "^2.2.1"
|
||||
|
||||
resolve@^1.1.7, resolve@^1.22.2:
|
||||
version "1.22.8"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
|
||||
integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
|
||||
dependencies:
|
||||
is-core-module "^2.13.0"
|
||||
path-parse "^1.0.7"
|
||||
supports-preserve-symlinks-flag "^1.0.0"
|
||||
|
||||
reusify@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
|
||||
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
|
||||
|
||||
rollup@^3.27.1:
|
||||
version "3.29.4"
|
||||
resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981"
|
||||
integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.2"
|
||||
|
||||
run-parallel@^1.1.9:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
|
||||
integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
|
||||
dependencies:
|
||||
queue-microtask "^1.2.2"
|
||||
|
||||
source-map-js@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
|
||||
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
|
||||
|
||||
sprintf-js@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a"
|
||||
integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==
|
||||
|
||||
sucrase@^3.32.0:
|
||||
version "3.34.0"
|
||||
resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.34.0.tgz#1e0e2d8fcf07f8b9c3569067d92fbd8690fb576f"
|
||||
integrity sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==
|
||||
dependencies:
|
||||
"@jridgewell/gen-mapping" "^0.3.2"
|
||||
commander "^4.0.0"
|
||||
glob "7.1.6"
|
||||
lines-and-columns "^1.1.6"
|
||||
mz "^2.7.0"
|
||||
pirates "^4.0.1"
|
||||
ts-interface-checker "^0.1.9"
|
||||
|
||||
supports-preserve-symlinks-flag@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
|
||||
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
|
||||
|
||||
tailwindcss@^3.3.5:
|
||||
version "3.3.5"
|
||||
resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.5.tgz#22a59e2fbe0ecb6660809d9cc5f3976b077be3b8"
|
||||
integrity sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==
|
||||
dependencies:
|
||||
"@alloc/quick-lru" "^5.2.0"
|
||||
arg "^5.0.2"
|
||||
chokidar "^3.5.3"
|
||||
didyoumean "^1.2.2"
|
||||
dlv "^1.1.3"
|
||||
fast-glob "^3.3.0"
|
||||
glob-parent "^6.0.2"
|
||||
is-glob "^4.0.3"
|
||||
jiti "^1.19.1"
|
||||
lilconfig "^2.1.0"
|
||||
micromatch "^4.0.5"
|
||||
normalize-path "^3.0.0"
|
||||
object-hash "^3.0.0"
|
||||
picocolors "^1.0.0"
|
||||
postcss "^8.4.23"
|
||||
postcss-import "^15.1.0"
|
||||
postcss-js "^4.0.1"
|
||||
postcss-load-config "^4.0.1"
|
||||
postcss-nested "^6.0.1"
|
||||
postcss-selector-parser "^6.0.11"
|
||||
resolve "^1.22.2"
|
||||
sucrase "^3.32.0"
|
||||
|
||||
thenify-all@^1.0.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726"
|
||||
integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==
|
||||
dependencies:
|
||||
thenify ">= 3.1.0 < 4"
|
||||
|
||||
"thenify@>= 3.1.0 < 4":
|
||||
version "3.3.1"
|
||||
resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f"
|
||||
integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==
|
||||
dependencies:
|
||||
any-promise "^1.0.0"
|
||||
|
||||
to-regex-range@^5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
|
||||
integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
|
||||
dependencies:
|
||||
is-number "^7.0.0"
|
||||
|
||||
ts-interface-checker@^0.1.9:
|
||||
version "0.1.13"
|
||||
resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699"
|
||||
integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
|
||||
|
||||
util-deprecate@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
||||
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
|
||||
|
||||
velocity-animate@^1.5.2:
|
||||
version "1.5.2"
|
||||
resolved "https://registry.yarnpkg.com/velocity-animate/-/velocity-animate-1.5.2.tgz#5a351d75fca2a92756f5c3867548b873f6c32105"
|
||||
integrity sha512-m6EXlCAMetKztO1ppBhGU1/1MR3IiEevO6ESq6rcrSQ3Q77xYSW13jkfXW88o4xMrkXJhy/U7j4wFR/twMB0Eg==
|
||||
|
||||
vite@^4.5.0:
|
||||
version "4.5.0"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.0.tgz#ec406295b4167ac3bc23e26f9c8ff559287cff26"
|
||||
integrity sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==
|
||||
dependencies:
|
||||
esbuild "^0.18.10"
|
||||
postcss "^8.4.27"
|
||||
rollup "^3.27.1"
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.2"
|
||||
|
||||
wrappy@1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
|
||||
|
||||
ws@^7.4.3:
|
||||
version "7.5.9"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591"
|
||||
integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
|
||||
|
||||
yaml@^2.1.1:
|
||||
version "2.3.3"
|
||||
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.3.tgz#01f6d18ef036446340007db8e016810e5d64aad9"
|
||||
integrity sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==
|
205
_dev/yarn.lock
205
_dev/yarn.lock
|
@ -7,6 +7,116 @@
|
|||
resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30"
|
||||
integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==
|
||||
|
||||
"@esbuild/android-arm64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622"
|
||||
integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==
|
||||
|
||||
"@esbuild/android-arm@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682"
|
||||
integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==
|
||||
|
||||
"@esbuild/android-x64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2"
|
||||
integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==
|
||||
|
||||
"@esbuild/darwin-arm64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1"
|
||||
integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==
|
||||
|
||||
"@esbuild/darwin-x64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d"
|
||||
integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==
|
||||
|
||||
"@esbuild/freebsd-arm64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54"
|
||||
integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==
|
||||
|
||||
"@esbuild/freebsd-x64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e"
|
||||
integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==
|
||||
|
||||
"@esbuild/linux-arm64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0"
|
||||
integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==
|
||||
|
||||
"@esbuild/linux-arm@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0"
|
||||
integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==
|
||||
|
||||
"@esbuild/linux-ia32@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7"
|
||||
integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==
|
||||
|
||||
"@esbuild/linux-loong64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d"
|
||||
integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==
|
||||
|
||||
"@esbuild/linux-mips64el@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231"
|
||||
integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==
|
||||
|
||||
"@esbuild/linux-ppc64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb"
|
||||
integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==
|
||||
|
||||
"@esbuild/linux-riscv64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6"
|
||||
integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==
|
||||
|
||||
"@esbuild/linux-s390x@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071"
|
||||
integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==
|
||||
|
||||
"@esbuild/linux-x64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338"
|
||||
integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==
|
||||
|
||||
"@esbuild/netbsd-x64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1"
|
||||
integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==
|
||||
|
||||
"@esbuild/openbsd-x64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae"
|
||||
integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==
|
||||
|
||||
"@esbuild/sunos-x64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d"
|
||||
integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==
|
||||
|
||||
"@esbuild/win32-arm64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9"
|
||||
integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==
|
||||
|
||||
"@esbuild/win32-ia32@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102"
|
||||
integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==
|
||||
|
||||
"@esbuild/win32-x64@0.18.20":
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d"
|
||||
integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==
|
||||
|
||||
"@jridgewell/gen-mapping@^0.3.2":
|
||||
version "0.3.3"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098"
|
||||
|
@ -60,6 +170,13 @@
|
|||
"@nodelib/fs.scandir" "2.1.5"
|
||||
fastq "^1.6.0"
|
||||
|
||||
"@tailwindcss/forms@^0.5.6":
|
||||
version "0.5.6"
|
||||
resolved "https://registry.yarnpkg.com/@tailwindcss/forms/-/forms-0.5.6.tgz#29c6c2b032b363e0c5110efed1499867f6d7e868"
|
||||
integrity sha512-Fw+2BJ0tmAwK/w01tEFL5TiaJBX1NLT1/YbWgvm7ws3Qcn11kiXxzNTEQDMs5V3mQemhB56l3u0i9dwdzSQldA==
|
||||
dependencies:
|
||||
mini-svg-data-uri "^1.2.3"
|
||||
|
||||
any-promise@^1.0.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
|
||||
|
@ -88,6 +205,11 @@ binary-extensions@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
|
||||
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
|
||||
|
||||
bootstrap-touchspin@^4.7.3:
|
||||
version "4.7.3"
|
||||
resolved "https://registry.yarnpkg.com/bootstrap-touchspin/-/bootstrap-touchspin-4.7.3.tgz#0316a3e7a390eb8811996cc14ab13ff0efb647de"
|
||||
integrity sha512-VVyPKI05ybS4ciB0OJ8g4Jx4SU3rlrWa/ItSxIi7BWNVa0jUYt3eujeOiBWpkuEGukECwiAbwuzh3a+xLtxueQ==
|
||||
|
||||
brace-expansion@^1.1.7:
|
||||
version "1.1.11"
|
||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
|
||||
|
@ -148,6 +270,39 @@ dlv@^1.1.3:
|
|||
resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79"
|
||||
integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==
|
||||
|
||||
esbuild@^0.18.10:
|
||||
version "0.18.20"
|
||||
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6"
|
||||
integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==
|
||||
optionalDependencies:
|
||||
"@esbuild/android-arm" "0.18.20"
|
||||
"@esbuild/android-arm64" "0.18.20"
|
||||
"@esbuild/android-x64" "0.18.20"
|
||||
"@esbuild/darwin-arm64" "0.18.20"
|
||||
"@esbuild/darwin-x64" "0.18.20"
|
||||
"@esbuild/freebsd-arm64" "0.18.20"
|
||||
"@esbuild/freebsd-x64" "0.18.20"
|
||||
"@esbuild/linux-arm" "0.18.20"
|
||||
"@esbuild/linux-arm64" "0.18.20"
|
||||
"@esbuild/linux-ia32" "0.18.20"
|
||||
"@esbuild/linux-loong64" "0.18.20"
|
||||
"@esbuild/linux-mips64el" "0.18.20"
|
||||
"@esbuild/linux-ppc64" "0.18.20"
|
||||
"@esbuild/linux-riscv64" "0.18.20"
|
||||
"@esbuild/linux-s390x" "0.18.20"
|
||||
"@esbuild/linux-x64" "0.18.20"
|
||||
"@esbuild/netbsd-x64" "0.18.20"
|
||||
"@esbuild/openbsd-x64" "0.18.20"
|
||||
"@esbuild/sunos-x64" "0.18.20"
|
||||
"@esbuild/win32-arm64" "0.18.20"
|
||||
"@esbuild/win32-ia32" "0.18.20"
|
||||
"@esbuild/win32-x64" "0.18.20"
|
||||
|
||||
events@^3.3.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
|
||||
integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
|
||||
|
||||
fast-glob@^3.3.0:
|
||||
version "3.3.1"
|
||||
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4"
|
||||
|
@ -270,6 +425,21 @@ jiti@^1.19.1:
|
|||
resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d"
|
||||
integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==
|
||||
|
||||
jquery-offcanvas@^3.4.7:
|
||||
version "3.4.7"
|
||||
resolved "https://registry.yarnpkg.com/jquery-offcanvas/-/jquery-offcanvas-3.4.7.tgz#dde1f492f5904ff76bdd98ba42f1e514fa52ed70"
|
||||
integrity sha512-5E3ITQNKgyzJfXqa80Nm9QBCVng4IpbrlGqAuCMSll7yPjoqJgTBl4akZE5rZXJrIpPrp1wPIjPF8tAyuhTD6g==
|
||||
|
||||
jquery-touchswipe@^1.6.19:
|
||||
version "1.6.19"
|
||||
resolved "https://registry.yarnpkg.com/jquery-touchswipe/-/jquery-touchswipe-1.6.19.tgz#dfd5ddaec0b78212dd500d29707129b9c7fd6cd4"
|
||||
integrity sha512-b0BGje9reNRU3u6ksAK9QqnX7yBRgLNe/wYG7DOfyDlhBlYjayIT8bSOHmcuvptIDW/ubM9CTW/mnZf9Rohuow==
|
||||
|
||||
jquery@3.5.1:
|
||||
version "3.5.1"
|
||||
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.5.1.tgz#d7b4d08e1bfdb86ad2f1a3d039ea17304717abb5"
|
||||
integrity sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==
|
||||
|
||||
lilconfig@^2.0.5, lilconfig@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52"
|
||||
|
@ -308,6 +478,11 @@ micromatch@^4.0.4, micromatch@^4.0.5:
|
|||
braces "^3.0.2"
|
||||
picomatch "^2.3.1"
|
||||
|
||||
mini-svg-data-uri@^1.2.3:
|
||||
version "1.4.4"
|
||||
resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz#8ab0aabcdf8c29ad5693ca595af19dd2ead09939"
|
||||
integrity sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==
|
||||
|
||||
minimatch@^3.0.4:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
|
||||
|
@ -430,7 +605,7 @@ postcss-value-parser@^4.0.0:
|
|||
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
|
||||
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
|
||||
|
||||
postcss@^8.4.23:
|
||||
postcss@^8.4.23, postcss@^8.4.27:
|
||||
version "8.4.31"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d"
|
||||
integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==
|
||||
|
@ -472,6 +647,13 @@ reusify@^1.0.4:
|
|||
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
|
||||
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
|
||||
|
||||
rollup@^3.27.1:
|
||||
version "3.29.4"
|
||||
resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981"
|
||||
integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.2"
|
||||
|
||||
run-parallel@^1.1.9:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
|
||||
|
@ -484,6 +666,11 @@ source-map-js@^1.0.2:
|
|||
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
|
||||
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
|
||||
|
||||
sprintf-js@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a"
|
||||
integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==
|
||||
|
||||
sucrase@^3.32.0:
|
||||
version "3.34.0"
|
||||
resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.34.0.tgz#1e0e2d8fcf07f8b9c3569067d92fbd8690fb576f"
|
||||
|
@ -561,6 +748,22 @@ util-deprecate@^1.0.2:
|
|||
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
||||
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
|
||||
|
||||
velocity-animate@^1.5.2:
|
||||
version "1.5.2"
|
||||
resolved "https://registry.yarnpkg.com/velocity-animate/-/velocity-animate-1.5.2.tgz#5a351d75fca2a92756f5c3867548b873f6c32105"
|
||||
integrity sha512-m6EXlCAMetKztO1ppBhGU1/1MR3IiEevO6ESq6rcrSQ3Q77xYSW13jkfXW88o4xMrkXJhy/U7j4wFR/twMB0Eg==
|
||||
|
||||
vite@^4.5.0:
|
||||
version "4.5.0"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.0.tgz#ec406295b4167ac3bc23e26f9c8ff559287cff26"
|
||||
integrity sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==
|
||||
dependencies:
|
||||
esbuild "^0.18.10"
|
||||
postcss "^8.4.27"
|
||||
rollup "^3.27.1"
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.2"
|
||||
|
||||
wrappy@1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||
|
|
|
@ -584,6 +584,10 @@ video {
|
|||
visibility: collapse;
|
||||
}
|
||||
|
||||
.fixed {
|
||||
position: fixed;
|
||||
}
|
||||
|
||||
.absolute {
|
||||
position: absolute;
|
||||
}
|
||||
|
@ -604,6 +608,10 @@ video {
|
|||
left: 0px;
|
||||
}
|
||||
|
||||
.left-\[-300px\] {
|
||||
left: -300px;
|
||||
}
|
||||
|
||||
.left-\[100\%\] {
|
||||
left: 100%;
|
||||
}
|
||||
|
@ -632,10 +640,18 @@ video {
|
|||
top: 50%;
|
||||
}
|
||||
|
||||
.top-4 {
|
||||
top: 1rem;
|
||||
}
|
||||
|
||||
.top-full {
|
||||
top: 100%;
|
||||
}
|
||||
|
||||
.z-10 {
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.z-30 {
|
||||
z-index: 30;
|
||||
}
|
||||
|
@ -655,11 +671,6 @@ video {
|
|||
margin-right: auto;
|
||||
}
|
||||
|
||||
.my-12 {
|
||||
margin-top: 3rem;
|
||||
margin-bottom: 3rem;
|
||||
}
|
||||
|
||||
.my-2 {
|
||||
margin-top: 0.5rem;
|
||||
margin-bottom: 0.5rem;
|
||||
|
@ -695,6 +706,10 @@ video {
|
|||
margin-top: 0.25rem;
|
||||
}
|
||||
|
||||
.mt-12 {
|
||||
margin-top: 3rem;
|
||||
}
|
||||
|
||||
.mt-16 {
|
||||
margin-top: 4rem;
|
||||
}
|
||||
|
@ -755,8 +770,12 @@ video {
|
|||
height: 6rem;
|
||||
}
|
||||
|
||||
.h-48 {
|
||||
height: 12rem;
|
||||
.h-5 {
|
||||
height: 1.25rem;
|
||||
}
|
||||
|
||||
.h-5 {
|
||||
height: 1.25rem;
|
||||
}
|
||||
|
||||
.h-6 {
|
||||
|
@ -775,8 +794,8 @@ video {
|
|||
height: 100%;
|
||||
}
|
||||
|
||||
.w-1\/3 {
|
||||
width: 33.333333%;
|
||||
.h-screen {
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
.w-1\/4 {
|
||||
|
@ -795,10 +814,18 @@ video {
|
|||
width: 6rem;
|
||||
}
|
||||
|
||||
.w-40 {
|
||||
width: 10rem;
|
||||
}
|
||||
|
||||
.w-48 {
|
||||
width: 12rem;
|
||||
}
|
||||
|
||||
.w-5 {
|
||||
width: 1.25rem;
|
||||
}
|
||||
|
||||
.w-6 {
|
||||
width: 1.5rem;
|
||||
}
|
||||
|
@ -878,6 +905,10 @@ video {
|
|||
align-items: center;
|
||||
}
|
||||
|
||||
.items-baseline {
|
||||
align-items: baseline;
|
||||
}
|
||||
|
||||
.justify-end {
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
@ -914,6 +945,10 @@ video {
|
|||
gap: 2rem;
|
||||
}
|
||||
|
||||
.overflow-y-auto {
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.truncate {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
|
@ -968,10 +1003,18 @@ video {
|
|||
object-fit: cover;
|
||||
}
|
||||
|
||||
.p-2 {
|
||||
padding: 0.5rem;
|
||||
}
|
||||
|
||||
.p-3 {
|
||||
padding: 0.75rem;
|
||||
}
|
||||
|
||||
.p-4 {
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
.px-2 {
|
||||
padding-left: 0.5rem;
|
||||
padding-right: 0.5rem;
|
||||
|
@ -1068,6 +1111,11 @@ video {
|
|||
line-height: 1.75rem;
|
||||
}
|
||||
|
||||
.text-xs {
|
||||
font-size: 0.75rem;
|
||||
line-height: 1rem;
|
||||
}
|
||||
|
||||
.font-bold {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
@ -1147,12 +1195,28 @@ video {
|
|||
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
}
|
||||
|
||||
.duration-1000 {
|
||||
transition-duration: 1000ms;
|
||||
}
|
||||
|
||||
body {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
|
||||
--tw-text-opacity: 1;
|
||||
color: rgb(75 85 99 / var(--tw-text-opacity));
|
||||
font-weight: 400;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
a {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgb(75 85 99 / var(--tw-text-opacity));
|
||||
}
|
||||
|
||||
a:hover {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgb(29 78 216 / var(--tw-text-opacity));
|
||||
text-decoration-line: underline;
|
||||
text-underline-offset: 2px;
|
||||
}
|
||||
|
||||
.icon-tabler {
|
||||
|
@ -1196,19 +1260,28 @@ a:hover .icon-tabler {
|
|||
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
|
||||
}
|
||||
|
||||
.disabled\:bg-gray-700:disabled {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(55 65 81 / var(--tw-bg-opacity));
|
||||
}
|
||||
|
||||
.group:hover .group-hover\:flex {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.group:hover .group-hover\:text-gray-950 {
|
||||
.group:hover .group-hover\:text-blue-900 {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgb(3 7 18 / var(--tw-text-opacity));
|
||||
color: rgb(30 58 138 / var(--tw-text-opacity));
|
||||
}
|
||||
|
||||
@media (min-width: 640px) {
|
||||
.sm\:flex {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.sm\:flex-row {
|
||||
flex-direction: row;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
|
@ -1224,10 +1297,18 @@ a:hover .icon-tabler {
|
|||
width: 50%;
|
||||
}
|
||||
|
||||
.md\:w-1\/3 {
|
||||
width: 33.333333%;
|
||||
}
|
||||
|
||||
.md\:w-24 {
|
||||
width: 6rem;
|
||||
}
|
||||
|
||||
.md\:w-1\/3 {
|
||||
width: 33.333333%;
|
||||
}
|
||||
|
||||
.md\:grid-cols-2 {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
|
@ -1235,6 +1316,18 @@ a:hover .icon-tabler {
|
|||
.md\:grid-cols-3 {
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.md\:flex-row {
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.md\:flex-nowrap {
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
|
||||
.md\:items-start {
|
||||
align-items: flex-start;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1024px) {
|
||||
|
@ -1242,12 +1335,12 @@ a:hover .icon-tabler {
|
|||
position: static;
|
||||
}
|
||||
|
||||
.lg\:right-0 {
|
||||
right: 0px;
|
||||
.lg\:left-0 {
|
||||
left: 0px;
|
||||
}
|
||||
|
||||
.lg\:mt-36 {
|
||||
margin-top: 9rem;
|
||||
.lg\:right-0 {
|
||||
right: 0px;
|
||||
}
|
||||
|
||||
.lg\:flex {
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
/**
|
||||
* jQuery.offcanvas v3.4.7 - Easy to use jQuery offcanvas plugin.
|
||||
* Copyright 2016 Lars Graubner - http://lgraubner.github.io/jquery-offcanvas/
|
||||
* License: MIT
|
||||
*/
|
||||
.offcanvas{position:relative}
|
||||
.offcanvas-outer{left:0;overflow-x:hidden;position:absolute;top:0;width:100%}
|
||||
.offcanvas-inner{position:relative}
|
||||
.offcanvas-element{margin:0;overflow:hidden;position:absolute;top:0;z-index:2}
|
||||
.offcanvas-overlay{display:none;position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;z-index:1}
|
File diff suppressed because one or more lines are too long
|
@ -1,35 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* 2007-2019 PrestaShop and Contributors
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2019 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
|
||||
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
|
||||
|
||||
header("Cache-Control: no-store, no-cache, must-revalidate");
|
||||
header("Cache-Control: post-check=0, pre-check=0", false);
|
||||
header("Pragma: no-cache");
|
||||
|
||||
header("Location: ../");
|
||||
exit;
|
|
@ -22,15 +22,15 @@
|
|||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
<section class="featured-products clearfix mt-3">
|
||||
<h2>
|
||||
<section class="flex flex-col mt-16">
|
||||
<span class="text-lg mt-16 font-medium">
|
||||
{if $products|@count == 1}
|
||||
{l s='%s other product in the same category:' sprintf=[$products|@count] d='Shop.Theme.Catalog'}
|
||||
{else}
|
||||
{l s='%s other products in the same category:' sprintf=[$products|@count] d='Shop.Theme.Catalog'}
|
||||
{/if}
|
||||
</h2>
|
||||
<div class="products">
|
||||
</span>
|
||||
<div class="products flex flex-wrap">
|
||||
{foreach from=$products item="product"}
|
||||
{include file="catalog/_partials/miniatures/product.tpl" product=$product}
|
||||
{/foreach}
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
<h2 class="products-section-title text-2xl font-bold">
|
||||
{l s='Popular Products' d='Shop.Theme.Catalog'}
|
||||
</h2>
|
||||
<div class="products grid grid-cols-1 md:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-8">
|
||||
<div class="products flex flex-wrap">
|
||||
{foreach from=$products item="product"}
|
||||
{include file="catalog/_partials/miniatures/product.tpl" product=$product}
|
||||
{/foreach}
|
||||
|
|
|
@ -24,17 +24,17 @@
|
|||
*}
|
||||
|
||||
{if $homeslider.slides}
|
||||
<div id="carousel" data-ride="carousel" class="carousel slide" data-interval="{$homeslider.speed}" data-wrap="{(string)$homeslider.wrap}" data-pause="{$homeslider.pause}">
|
||||
<div id="carousel" data-ride="carousel" class="carousel slide mb-16" data-interval="{$homeslider.speed}" data-wrap="{(string)$homeslider.wrap}" data-pause="{$homeslider.pause}">
|
||||
<ul class="carousel-inner" role="listbox">
|
||||
{foreach from=$homeslider.slides item=slide name='homeslider'}
|
||||
<li class="carousel-item {if $smarty.foreach.homeslider.first}active{/if}" role="option" aria-hidden="{if $smarty.foreach.homeslider.first}false{else}true{/if}">
|
||||
<a href="{$slide.url}">
|
||||
<figure class="relative">
|
||||
<img src="{$slide.image_url}" alt="{$slide.legend|escape}">
|
||||
<figure class="relative h-screen bg-gray-50">
|
||||
<img class="w-full h-full object-contain md:object-cover" src="{$slide.image_url}" alt="{$slide.legend|escape}">
|
||||
{if $slide.title || $slide.description}
|
||||
<figcaption class="caption absolute right-0 bottom-0">
|
||||
<h2 class="display-1 text-uppercase">{$slide.title}</h2>
|
||||
<div class="caption-description">{$slide.description nofilter}</div>
|
||||
<figcaption class="caption absolute left-16 md:left-1/2 bottom-0 top-0 right-16 flex flex-col justify-center">
|
||||
<h2 class="text-xl md:text-2xl lg:text-4xl xl:text-6xl font-bold mb-4">{$slide.title}</h2>
|
||||
<div class="text-sm md:text-base font-medium">{$slide.description nofilter}</div>
|
||||
</figcaption>
|
||||
{/if}
|
||||
</figure>
|
||||
|
@ -42,19 +42,5 @@
|
|||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
<div class="direction" aria-label="{l s='Carousel buttons' d='Shop.Theme.Global'}">
|
||||
<a class="left carousel-control" href="#carousel" role="button" data-slide="prev">
|
||||
<span class="icon-prev hidden-xs" aria-hidden="true">
|
||||
<i class="material-icons"></i>
|
||||
</span>
|
||||
<span class="sr-only">{l s='Previous' d='Shop.Theme.Global'}</span>
|
||||
</a>
|
||||
<a class="right carousel-control" href="#carousel" role="button" data-slide="next">
|
||||
<span class="icon-next" aria-hidden="true">
|
||||
<i class="material-icons"></i>
|
||||
</span>
|
||||
<span class="sr-only">{l s='Next' d='Shop.Theme.Global'}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
|
|
@ -1,49 +0,0 @@
|
|||
{**
|
||||
* 2007-2019 PrestaShop and Contributors
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2019 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
<div id="_desktop_language_selector">
|
||||
<div class="language-selector-wrapper">
|
||||
<span id="language-selector-label" class="hidden-md-up">{l s='Language:' d='Shop.Theme.Global'}</span>
|
||||
<div class="language-selector dropdown js-dropdown">
|
||||
<button data-toggle="dropdown" class="hidden-sm-down btn-unstyle" aria-haspopup="true" aria-expanded="false" aria-label="{l s='Language dropdown' d='Shop.Theme.Global'}">
|
||||
<span class="expand-more">{$current_language.name_simple}</span>
|
||||
<i class="material-icons expand-more"></i>
|
||||
</button>
|
||||
<ul class="dropdown-menu hidden-sm-down" aria-labelledby="language-selector-label">
|
||||
{foreach from=$languages item=language}
|
||||
<li {if $language.id_lang == $current_language.id_lang} class="current" {/if}>
|
||||
<a href="{url entity='language' id=$language.id_lang}" class="dropdown-item" data-iso-code="{$language.iso_code}">{$language.name_simple}</a>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
<select class="link hidden-md-up" aria-labelledby="language-selector-label">
|
||||
{foreach from=$languages item=language}
|
||||
<option value="{url entity='language' id=$language.id_lang}"{if $language.id_lang == $current_language.id_lang} selected="selected"{/if} data-iso-code="{$language.iso_code}">
|
||||
{$language.name_simple}
|
||||
</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -22,9 +22,9 @@
|
|||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
<div class="flex flex-wrap flex-1">
|
||||
<div class="flex flex-wrap flex-1 flex-col md:flex-row">
|
||||
{foreach $linkBlocks as $linkBlock}
|
||||
<div class="flex flex-col mb-4 w-1/3">
|
||||
<div class="flex flex-col mb-4 md:w-1/3">
|
||||
<div class="font-bold mb-4">
|
||||
{$linkBlock.title}
|
||||
</div>
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* 2007-2019 PrestaShop and Contributors
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2019 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
|
||||
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
|
||||
|
||||
header("Cache-Control: no-store, no-cache, must-revalidate");
|
||||
header("Cache-Control: post-check=0, pre-check=0", false);
|
||||
header("Pragma: no-cache");
|
||||
|
||||
header("Location: ../");
|
||||
exit;
|
|
@ -1,35 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* 2007-2019 PrestaShop and Contributors
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2019 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
|
||||
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
|
||||
|
||||
header("Cache-Control: no-store, no-cache, must-revalidate");
|
||||
header("Cache-Control: post-check=0, pre-check=0", false);
|
||||
header("Pragma: no-cache");
|
||||
|
||||
header("Location: ../");
|
||||
exit;
|
|
@ -1,39 +0,0 @@
|
|||
{**
|
||||
* 2007-2019 PrestaShop and Contributors
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2019 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
|
||||
<div class="block-contact col-md-2 links wrapper">
|
||||
<h3 class="h3 hidden-sm-down">{$title}</h3>
|
||||
<div>
|
||||
{if $rss_links}
|
||||
<ul>
|
||||
{foreach from=$rss_links item='rss_link'}
|
||||
<li><a href="{$rss_link['link']}" title="{$rss_link['title']}" target="_blank">{$rss_link['title']}</a></li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
{else}
|
||||
<p>{l s='No RSS feed added' d='Shop.Theme.Catalog'}</p>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
|
@ -1,35 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* 2007-2019 PrestaShop and Contributors
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2019 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
|
||||
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
|
||||
|
||||
header("Cache-Control: no-store, no-cache, must-revalidate");
|
||||
header("Cache-Control: post-check=0, pre-check=0", false);
|
||||
header("Pragma: no-cache");
|
||||
|
||||
header("Location: ../");
|
||||
exit;
|
|
@ -1,37 +0,0 @@
|
|||
{**
|
||||
* 2007-2019 PrestaShop and Contributors
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2019 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
|
||||
{block name='social_sharing'}
|
||||
{if $social_share_links}
|
||||
<div class="social-sharing">
|
||||
<span>{l s='Share' d='Shop.Theme.Actions'}</span>
|
||||
<ul>
|
||||
{foreach from=$social_share_links item='social_share_link'}
|
||||
<li class="{$social_share_link.class} icon-gray"><a href="{$social_share_link.url}" class="text-hide" title="{$social_share_link.label}" target="_blank">{$social_share_link.label}</a></li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
{/if}
|
||||
{/block}
|
|
@ -1,34 +0,0 @@
|
|||
{**
|
||||
* 2007-2019 PrestaShop and Contributors
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/AFL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2019 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
|
||||
{block name='block_social'}
|
||||
<div class="block-social col-lg-4 col-md-12 col-sm-12">
|
||||
<ul>
|
||||
{foreach from=$social_links item='social_link'}
|
||||
<li class="{$social_link.class}"><a href="{$social_link.url}" target="_blank">{$social_link.label}</a></li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
{/block}
|
|
@ -27,18 +27,43 @@
|
|||
{hook h='displayFooterBefore'}
|
||||
{/block}
|
||||
</div>
|
||||
<div class="container mx-auto flex flex-col">
|
||||
<div class="flex">
|
||||
<div class="w-48 h-48 flex flex-col justify-center">
|
||||
<div class="container mx-auto flex flex-col gap-8">
|
||||
<div class="flex flex-col lg:flex-row gap-8">
|
||||
<div class="w-48 flex flex-row justify-center items-center">
|
||||
<a class="w-24 h-24" href="{$urls.base_url}">
|
||||
<img class="logo w-full aspect-square object-fit" src="{$shop.logo}" alt="{$shop.name}">
|
||||
</a>
|
||||
</div>
|
||||
<div class="w-full flex flex-1">
|
||||
<div class="w-full flex flex-1 flex-col lg:flex-row">
|
||||
{block name='hook_footer'}
|
||||
{hook h='displayFooter'}
|
||||
{/block}
|
||||
</div>
|
||||
<div class="flex justify-center items-center gap-4">
|
||||
<a class="p-4" href="{$urls.base_url}">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-x" width="24" height="24" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
||||
<path d="M4 4l11.733 16h4.267l-11.733 -16z"></path>
|
||||
<path d="M4 20l6.768 -6.768m2.46 -2.46l6.772 -6.772"></path>
|
||||
</svg>
|
||||
</a>
|
||||
<a class="p-4">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-instagram" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
||||
<path d="M4 4m0 4a4 4 0 0 1 4 -4h8a4 4 0 0 1 4 4v8a4 4 0 0 1 -4 4h-8a4 4 0 0 1 -4 -4z"></path>
|
||||
<path d="M12 12m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"></path>
|
||||
<path d="M16.5 7.5l0 .01"></path>
|
||||
</svg>
|
||||
</a>
|
||||
<a class="p-4">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-instagram" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
||||
<path d="M4 4m0 4a4 4 0 0 1 4 -4h8a4 4 0 0 1 4 4v8a4 4 0 0 1 -4 4h-8a4 4 0 0 1 -4 -4z"></path>
|
||||
<path d="M12 12m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"></path>
|
||||
<path d="M16.5 7.5l0 .01"></path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex">
|
||||
{block name='hook_footer_after'}
|
||||
|
@ -46,7 +71,7 @@
|
|||
{/block}
|
||||
</div>
|
||||
<div class="flex py-8">
|
||||
<a href="{$shop.url}">
|
||||
<a href="{$urls.base_url}">
|
||||
<span class="text-sm">© 2023 Brooksbingham Clothing</span>
|
||||
</a>
|
||||
</div>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{**
|
||||
* 2007-2019 PrestaShop and Contributors
|
||||
* 2007-2019 PrestaShop and Contributorslivereload
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
|
@ -76,12 +76,6 @@
|
|||
}
|
||||
}
|
||||
</script>
|
||||
{** TODO: Remove this before going live *}
|
||||
<script>document.write('<script src="http://'
|
||||
+ location.host.split(':')[0]
|
||||
+ ':35729/livereload.js"></'
|
||||
+ 'script>')</script>
|
||||
|
||||
{block name='hook_header'}
|
||||
{$HOOK_HEADER nofilter}
|
||||
{/block}
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Cairo:wght@200;300;400;500;600;700;800;900;1000&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@2.36.0/tabler-icons.min.css">
|
||||
<link rel="stylesheet" href="/themes/elegance/assets/js/style.css">
|
||||
{foreach $stylesheets.external as $stylesheet}
|
||||
<link rel="stylesheet" href="{$stylesheet.uri}" type="text/css" media="{$stylesheet.media}">
|
||||
{/foreach}
|
||||
|
|
|
@ -23,7 +23,8 @@
|
|||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
{if $facets|count}
|
||||
<div id="search_filters" class="flex gap-4 flex-1 flex-col lg:flex-row lg:items-center">
|
||||
<div id="search_filters">
|
||||
<div id="search_filter_buttons" class="flex hidden">
|
||||
{block name='facets_clearall_button'}
|
||||
{if $activeFilters|count}
|
||||
<button id="_desktop_search_filters_clear_all" data-search-url="{$clear_all_link}" class="flex w-6 h-6 flex items-center justify-center select-none js-search-filters-clear-all">
|
||||
|
@ -34,16 +35,95 @@
|
|||
</svg>
|
||||
</button>
|
||||
{else}
|
||||
<div class="flex w-6 h-6 items-center justify-center select-none">
|
||||
<button id="_desktop_search_filters" class="flex w-6 h-6 items-center justify-center select-none">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-filter hover:stroke-2 cursor-pointer" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
||||
<path d="M4 4h16v2.172a2 2 0 0 1 -.586 1.414l-4.414 4.414v7l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227z"></path>
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
{/if}
|
||||
{/block}
|
||||
</div>
|
||||
<div class="th-accordion">
|
||||
{foreach from=$facets item="facet"}
|
||||
{if !$facet.displayed}
|
||||
{continue}
|
||||
{/if}
|
||||
{if $facet.widgetType === 'dropdown'}
|
||||
<div class="th-accordion-item border-t border-gray-200 px-4 py-4">
|
||||
<h3 class="-mx-2 -my-3 flow-root">
|
||||
<!-- Expand/collapse section button -->
|
||||
<button id="show-filters-{$facet.label}" data-filter-name="{$facet.label}" type="button" class="th-accordion-item-trigger flex w-full items-center justify-between bg-white px-2 py-3 text-gray-400 hover:text-gray-500" aria-controls="filter-section-mobile-0" aria-expanded="false">
|
||||
<span class="font-medium text-gray-900">
|
||||
{$active_found = false}
|
||||
{foreach from=$facet.filters item="filter"}
|
||||
{if $filter.active}
|
||||
{$filter.label}
|
||||
{$active_found = true}
|
||||
{/if}
|
||||
{/foreach}
|
||||
{if !$active_found}
|
||||
{$facet.label}
|
||||
{/if}
|
||||
</span>
|
||||
<span class="ml-6 flex items-center">
|
||||
<!-- Expand icon, show/hide based on section open state. -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-chevron-down" width="16" height="16" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
||||
<path d="M6 9l6 6l6 -6"></path>
|
||||
</svg>
|
||||
</span>
|
||||
</button>
|
||||
</h3>
|
||||
<!-- Filter section, show/hide based on section state. -->
|
||||
<div class="th-accordion-item-content pt-6 px-4 hidden" id="filter-section-{$facet.label}" data-filter-name="{$facet.label}">
|
||||
<div class="flex flex-wrap w-full">
|
||||
{foreach from=$facet.filters item="filter"}
|
||||
{if !$filter.active}
|
||||
<a
|
||||
rel="nofollow"
|
||||
href="{$filter.nextEncodedFacetsURL}"
|
||||
class="select-list text-sm w-1/4 mb-4"
|
||||
>
|
||||
{$filter.label}
|
||||
</a>
|
||||
{/if}
|
||||
{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
{/foreach}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<div class="flex gap-4 flex-1 flex-col lg:flex-row">
|
||||
|
||||
{*
|
||||
{if $facets|count}
|
||||
<div id="products_top_sidebar" class="sidebar lg:left-0 p-2 overflow-y-auto text-center bg-white h-screen w-56">
|
||||
<div id="search_filters">
|
||||
<div id="search_filter_buttons" class="flex">
|
||||
{block name='facets_clearall_button'}
|
||||
{if $activeFilters|count}
|
||||
<button id="_desktop_search_filters_clear_all" data-search-url="{$clear_all_link}" class="flex w-6 h-6 flex items-center justify-center select-none js-search-filters-clear-all">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-filter-off hover:stroke-2 cursor-pointer" width="16" height="16" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
||||
<path d="M8 4h12v2.172a2 2 0 0 1 -.586 1.414l-3.914 3.914m-.5 3.5v4l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227"></path>
|
||||
<path d="M3 3l18 18"></path>
|
||||
</svg>
|
||||
</button>
|
||||
{else}
|
||||
<button id="_desktop_search_filters" class="flex w-6 h-6 items-center justify-center select-none">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-filter hover:stroke-2 cursor-pointer" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
||||
<path d="M4 4h16v2.172a2 2 0 0 1 -.586 1.414l-4.414 4.414v7l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227z"></path>
|
||||
</svg>
|
||||
</button>
|
||||
{/if}
|
||||
{/block}
|
||||
</div>
|
||||
|
||||
<div class="flex gap-4 flex-1 flex-col">
|
||||
{foreach from=$facets item="facet"}
|
||||
{if !$facet.displayed}
|
||||
{continue}
|
||||
|
@ -66,7 +146,7 @@
|
|||
<path d="M6 9l6 6l6 -6"></path>
|
||||
</svg>
|
||||
</button>
|
||||
<div class="dropdown-menu hidden group-hover:flex flex-col position absolute left-0 top-full w-full bg-white">
|
||||
<div class="dropdown-menu hidden group-hover:flex flex-col position absolute left-0 top-full w-full bg-white z-10">
|
||||
{foreach from=$facet.filters item="filter"}
|
||||
{if !$filter.active}
|
||||
<a
|
||||
|
@ -83,132 +163,8 @@
|
|||
{/if}
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{**
|
||||
|
||||
{if !$facet.displayed}
|
||||
{continue}
|
||||
{/if}
|
||||
|
||||
<section class="facet clearfix">
|
||||
<p class="h6 facet-title hidden-sm-down">{$facet.label}</p>
|
||||
{assign var=_expand_id value=10|mt_rand:100000}
|
||||
{assign var=_collapse value=true}
|
||||
{foreach from=$facet.filters item="filter"}
|
||||
{if $filter.active}{assign var=_collapse value=false}{/if}
|
||||
{/foreach}
|
||||
|
||||
<div class="title hidden-md-up" data-target="#facet_{$_expand_id}" data-toggle="collapse"{if !$_collapse} aria-expanded="true"{/if}>
|
||||
<p class="h6 facet-title">{$facet.label}</p>
|
||||
<span class="float-xs-right">
|
||||
<span class="navbar-toggler collapse-icons">
|
||||
<i class="material-icons add"></i>
|
||||
<i class="material-icons remove"></i>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
{if $facet.widgetType !== 'dropdown'}
|
||||
{block name='facet_item_other'}
|
||||
<ul id="facet_{$_expand_id}" class="collapse{if !$_collapse} in{/if}">
|
||||
{foreach from=$facet.filters key=filter_key item="filter"}
|
||||
{if !$filter.displayed}
|
||||
{continue}
|
||||
{/if}
|
||||
|
||||
<li>
|
||||
<label class="facet-label{if $filter.active} active {/if}" for="facet_input_{$_expand_id}_{$filter_key}">
|
||||
{if $facet.multipleSelectionAllowed}
|
||||
<span class="custom-checkbox">
|
||||
<input
|
||||
id="facet_input_{$_expand_id}_{$filter_key}"
|
||||
data-search-url="{$filter.nextEncodedFacetsURL}"
|
||||
type="checkbox"
|
||||
{if $filter.active }checked{/if}
|
||||
>
|
||||
{if isset($filter.properties.color)}
|
||||
<span class="color" style="background-color:{$filter.properties.color}"></span>
|
||||
{elseif isset($filter.properties.texture)}
|
||||
<span class="color texture" style="background-image:url({$filter.properties.texture})"></span>
|
||||
{else}
|
||||
<span {if !$js_enabled} class="ps-shown-by-js" {/if}><i class="material-icons rtl-no-flip checkbox-checked"></i></span>
|
||||
{/if}
|
||||
</span>
|
||||
{else}
|
||||
<span class="custom-radio">
|
||||
<input
|
||||
id="facet_input_{$_expand_id}_{$filter_key}"
|
||||
data-search-url="{$filter.nextEncodedFacetsURL}"
|
||||
type="radio"
|
||||
name="filter {$facet.label}"
|
||||
{if $filter.active }checked{/if}
|
||||
>
|
||||
<span {if !$js_enabled} class="ps-shown-by-js" {/if}></span>
|
||||
</span>
|
||||
{/if}
|
||||
|
||||
<a
|
||||
href="{$filter.nextEncodedFacetsURL}"
|
||||
class="_gray-darker search-link js-search-link"
|
||||
rel="nofollow"
|
||||
>
|
||||
{$filter.label}
|
||||
{if $filter.magnitude}
|
||||
<span class="magnitude">({$filter.magnitude})</span>
|
||||
{/if}
|
||||
</a>
|
||||
</label>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
{/block}
|
||||
|
||||
{else}
|
||||
|
||||
{block name='facet_item_dropdown'}
|
||||
<ul id="facet_{$_expand_id}" class="collapse{if !$_collapse} in{/if}">
|
||||
<li>
|
||||
<div class="col-sm-12 col-xs-12 col-md-12 facet-dropdown dropdown">
|
||||
<a class="select-title" rel="nofollow" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
{$active_found = false}
|
||||
<span>
|
||||
{foreach from=$facet.filters item="filter"}
|
||||
{if $filter.active}
|
||||
{$filter.label}
|
||||
{if $filter.magnitude}
|
||||
({$filter.magnitude})
|
||||
{/if}
|
||||
{$active_found = true}
|
||||
{/if}
|
||||
{/foreach}
|
||||
{if !$active_found}
|
||||
{l s='(no filter)' d='Shop.Theme.Global'}
|
||||
{/if}
|
||||
</span>
|
||||
<i class="material-icons float-xs-right"></i>
|
||||
</a>
|
||||
<div class="dropdown-menu">
|
||||
{foreach from=$facet.filters item="filter"}
|
||||
{if !$filter.active}
|
||||
<a
|
||||
rel="nofollow"
|
||||
href="{$filter.nextEncodedFacetsURL}"
|
||||
class="select-list"
|
||||
>
|
||||
{$filter.label}
|
||||
{if $filter.magnitude}
|
||||
({$filter.magnitude})
|
||||
{/if}
|
||||
</a>
|
||||
{/if}
|
||||
{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
{/block}
|
||||
{/if}
|
||||
</section>
|
||||
*}
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
{block name='product_miniature_item'}
|
||||
<a href="{$product.url}" class="group w-full flex flex-col">
|
||||
<a href="{$product.url}" class="group w-full md:w-1/2 lg:w-1/3 xl:w-1/4 flex flex-col p-4">
|
||||
{block name='product_thumbnail'}
|
||||
{if $product.cover}
|
||||
<div class="thumbnail product-thumbnail w-full aspect-[342/513] bg-gray-100">
|
||||
|
@ -54,7 +54,7 @@
|
|||
</div>
|
||||
{/block}
|
||||
{block name='product_name'}
|
||||
<span class="text-xl font-medium" itemprop="name">{$product.name|truncate:30:'...'}</span>
|
||||
<span class="text-lg font-light" itemprop="name">{$product.name|truncate:30:'...'}</span>
|
||||
{/block}
|
||||
</div>
|
||||
</a>
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
{if $product.has_discount}
|
||||
<div class="product-discount">
|
||||
{hook h='displayProductPriceBlock' product=$product type="old_price"}
|
||||
<span class="regular-price line-through text-red-700/50 leading-none">{$product.regular_price}</span>
|
||||
<span class="regular-price line-through text-red-400 leading-none">{$product.regular_price}</span>
|
||||
</div>
|
||||
{/if}
|
||||
{/block}
|
||||
|
|
|
@ -22,7 +22,43 @@
|
|||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
|
||||
<div id="js-product-list-top" class="bg-white">
|
||||
<div class="relative z-40" role="dialog" aria-modal="true">
|
||||
<div class="fixed inset-0 z-50 flex">
|
||||
<div id="product-list-top-filters" class="relative mr-auto flex h-full w-screen md:w-64 flex-col overflow-y-auto bg-white py-4 pb-12 shadow-xl">
|
||||
<div class="flex items-center justify-between px-4">
|
||||
<h2 class="text-lg font-medium text-gray-900">Filters</h2>
|
||||
<button id="hide_filters" type="button" class="-mr-2 flex h-10 w-10 items-center justify-center rounded-md bg-white p-2 text-gray-400">
|
||||
<span class="sr-only">Close menu</span>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-x" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
||||
<path d="M18 6l-12 12"></path>
|
||||
<path d="M6 6l12 12"></path>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
<form class="mt-4 border-t border-gray-200">
|
||||
{block name='sort_by'}
|
||||
{include file='catalog/_partials/sort-orders.tpl' sort_orders=$listing.sort_orders}
|
||||
{/block}
|
||||
{if !empty($listing.rendered_facets)}
|
||||
{include file='catalog/_partials/facets.tpl'}
|
||||
{else}
|
||||
<div></div>
|
||||
{/if}
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
{*
|
||||
<div id="js-product-list-top" class="flex w-full flex-col lg:flex-row lg:justify-between">
|
||||
<button id="show_filters" class=""> Filter </button>
|
||||
{if !empty($listing.rendered_facets)}
|
||||
{include file='catalog/_partials/facets.tpl'}
|
||||
{else}
|
||||
|
@ -32,3 +68,4 @@
|
|||
{include file='catalog/_partials/sort-orders.tpl' sort_orders=$listing.sort_orders}
|
||||
{/block}
|
||||
</div>
|
||||
*}
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
<div id="js-product-list flex flex-col">
|
||||
<div class="products grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8">
|
||||
<div class="products flex flex-wrap">
|
||||
{foreach from=$listing.products item="product"}
|
||||
{block name='product_miniature'}
|
||||
{include file='catalog/_partials/miniatures/product.tpl' product=$product}
|
||||
|
|
|
@ -22,21 +22,58 @@
|
|||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
<div class="relative flex gap-2 lg:items-center">
|
||||
<div class="relative w-48 dropdown group">
|
||||
|
||||
<div class="th-accordion">
|
||||
<div class="th-accordion-item border-t border-gray-200 px-4 py-4">
|
||||
<h3 class="-mx-2 -my-3 flow-root">
|
||||
<!-- Expand/collapse section button -->
|
||||
<button id="show-sort-by" type="button" class="th-accordion-item-trigger flex w-full items-center justify-between bg-white px-2 py-3 text-gray-400 hover:text-gray-500" aria-controls="filter-section-mobile-0" aria-expanded="false">
|
||||
<span class="font-medium text-gray-900">
|
||||
Sort By
|
||||
</span>
|
||||
<span class="ml-6 flex items-center">
|
||||
<!-- Expand icon, show/hide based on section open state. -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-chevron-down" width="16" height="16" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
||||
<path d="M6 9l6 6l6 -6"></path>
|
||||
</svg>
|
||||
</span>
|
||||
</button>
|
||||
</h3>
|
||||
<!-- Filter section, show/hide based on section state. -->
|
||||
<div class="pt-6 hidden th-accordion-item-content" id="filter-section-sort-by">
|
||||
<div class="flex flex-col w-full gap-4">
|
||||
{foreach from=$listing.sort_orders item=sort_order}
|
||||
<a
|
||||
rel="nofollow"
|
||||
href="{$sort_order.url}"
|
||||
class="select-list text-sm shrink-0 {['current' => $sort_order.current, 'js-search-link' => true]|classnames}"
|
||||
>
|
||||
{$sort_order.label}
|
||||
</a>
|
||||
{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{*
|
||||
<div class="relative flex gap-2 lg:items-center top-4 lg:top-0">
|
||||
<div class="relative flex-1 max-w-[140px] group">
|
||||
<button
|
||||
class="w-full px-4 pr-8 py-1 gap-4 relative text-left h-8 hover:text-yellow-700 dropdown-toggle"
|
||||
class="dropdown-toggle relative px-4 pr-6 leading-1 w-full text-left"
|
||||
type="button"
|
||||
rel="nofollow"
|
||||
aria-haspopup="true"
|
||||
aria-expanded="false">
|
||||
{if isset($listing.sort_selected)}{$listing.sort_selected}{else}{l s='Select' d='Shop.Theme.Actions'}{/if}
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-chevron-down absolute right-0 top-1" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-chevron-down absolute right-0 top-1" width="16" height="16" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
||||
<path d="M6 9l6 6l6 -6"></path>
|
||||
</svg>
|
||||
</button>
|
||||
<div class="dropdown-menu hidden group-hover:flex absolute top-full left-0 w-full flex-col bg-white">
|
||||
<div class="dropdown-menu hidden group-hover:flex absolute top-full left-0 w-full flex-col bg-white z-10">
|
||||
{foreach from=$listing.sort_orders item=sort_order}
|
||||
<a
|
||||
rel="nofollow"
|
||||
|
@ -49,3 +86,4 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
*}
|
||||
|
|
|
@ -23,21 +23,21 @@
|
|||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
{block name='cart_detailed_actions'}
|
||||
<div class="checkout cart-detailed-actions card-block">
|
||||
<div class="flex flex-col mt-4">
|
||||
{if $cart.minimalPurchaseRequired}
|
||||
<div class="alert alert-warning" role="alert">
|
||||
{$cart.minimalPurchaseRequired}
|
||||
</div>
|
||||
<div class="text-sm-center">
|
||||
<button type="button" class="btn btn-primary disabled" disabled>{l s='Proceed to checkout' d='Shop.Theme.Actions'}</button>
|
||||
<button type="button" class="flex-1 uppercase py-2 font-medium text-center bg-blue-900 text-gray-50" disabled>{l s='Proceed to checkout' d='Shop.Theme.Actions'}</button>
|
||||
</div>
|
||||
{elseif empty($cart.products) }
|
||||
<div class="text-sm-center">
|
||||
<button type="button" class="btn btn-primary disabled" disabled>{l s='Proceed to checkout' d='Shop.Theme.Actions'}</button>
|
||||
<button type="button" class="flex-1 uppercase py-2 font-medium text-center bg-blue-900 text-gray-50" disabled>{l s='Proceed to checkout' d='Shop.Theme.Actions'}</button>
|
||||
</div>
|
||||
{else}
|
||||
<div class="text-sm-center">
|
||||
<a href="{$urls.pages.order}" class="btn btn-primary">{l s='Proceed to checkout' d='Shop.Theme.Actions'}</a>
|
||||
<div class="flex">
|
||||
<a href="{$urls.pages.order}" class="flex-1 uppercase py-2 font-medium text-center bg-blue-900 text-gray-50">{l s='Proceed to checkout' d='Shop.Theme.Actions'}</a>
|
||||
{hook h='displayExpressCheckout'}
|
||||
</div>
|
||||
{/if}
|
||||
|
|
|
@ -22,106 +22,34 @@
|
|||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
<div class="product-line-grid">
|
||||
<!-- product left content: image-->
|
||||
<div class="product-line-grid-left col-md-3 col-xs-4">
|
||||
<span class="product-image media-middle">
|
||||
<img src="{$product.cover.bySize.cart_default.url}" alt="{$product.name|escape:'quotes'}">
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- product left body: description -->
|
||||
<div class="product-line-grid-body col-md-4 col-xs-8">
|
||||
<div class="flex flex-1">
|
||||
<div class="w-40 h-40">
|
||||
<img class="object-cover w-full h-full" src="{$product.cover.bySize.cart_default.url}" alt="{$product.name|escape:'quotes'}">
|
||||
</div>
|
||||
<div class="flex flex-1 flex-col gap-4">
|
||||
<div class="product-line-info">
|
||||
<a class="label" href="{$product.url}" data-id_customization="{$product.id_customization|intval}">{$product.name}</a>
|
||||
</div>
|
||||
|
||||
<div class="product-line-info product-price h5 {if $product.has_discount}has-discount{/if}">
|
||||
<div class="flex gap-4 product-line-info product-price h5 {if $product.has_discount}has-discount{/if}">
|
||||
{if $product.has_discount}
|
||||
<div class="product-discount">
|
||||
<span class="regular-price">{$product.regular_price}</span>
|
||||
{if $product.discount_type === 'percentage'}
|
||||
<span class="discount discount-percentage">
|
||||
-{$product.discount_percentage_absolute}
|
||||
</span>
|
||||
{else}
|
||||
<span class="discount discount-amount">
|
||||
-{$product.discount_to_display}
|
||||
</span>
|
||||
{/if}
|
||||
</div>
|
||||
<span class="line-through text-red-400">{$product.regular_price}</span>
|
||||
{/if}
|
||||
<div class="current-price">
|
||||
<span class="price">{$product.price}</span>
|
||||
<span class="price font-medium">{$product.price}</span>
|
||||
{if $product.unit_price_full}
|
||||
<div class="unit-price-cart">{$product.unit_price_full}</div>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br/>
|
||||
|
||||
{foreach from=$product.attributes key="attribute" item="value"}
|
||||
<div class="product-line-info">
|
||||
<span class="label">{$attribute}:</span>
|
||||
<span class="value">{$value}</span>
|
||||
</div>
|
||||
{/foreach}
|
||||
|
||||
{if is_array($product.customizations) && $product.customizations|count}
|
||||
<br>
|
||||
{block name='cart_detailed_product_line_customization'}
|
||||
{foreach from=$product.customizations item="customization"}
|
||||
<a href="#" data-toggle="modal" data-target="#product-customizations-modal-{$customization.id_customization}">{l s='Product customization' d='Shop.Theme.Catalog'}</a>
|
||||
<div class="modal fade customization-modal" id="product-customizations-modal-{$customization.id_customization}" tabindex="-1" role="dialog" aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
<h4 class="modal-title">{l s='Product customization' d='Shop.Theme.Catalog'}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
{foreach from=$customization.fields item="field"}
|
||||
<div class="product-customization-line row">
|
||||
<div class="col-sm-3 col-xs-4 label">
|
||||
{$field.label}
|
||||
</div>
|
||||
<div class="col-sm-9 col-xs-8 value">
|
||||
{if $field.type == 'text'}
|
||||
{if (int)$field.id_module}
|
||||
{$field.text nofilter}
|
||||
{else}
|
||||
{$field.text}
|
||||
{/if}
|
||||
{elseif $field.type == 'image'}
|
||||
<img src="{$field.image.small.url}">
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/foreach}
|
||||
{/block}
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<!-- product left body: description -->
|
||||
<div class="product-line-grid-right product-line-actions col-md-5 col-xs-12">
|
||||
<div class="row">
|
||||
<div class="col-xs-4 hidden-md-up"></div>
|
||||
<div class="col-md-10 col-xs-6">
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-xs-6 qty">
|
||||
<div class="flex items-center">
|
||||
<span class="font-medium">Quanity: </span>
|
||||
<div class="ml-4">
|
||||
{if isset($product.is_gift) && $product.is_gift}
|
||||
<span class="gift-quantity">{$product.quantity}</span>
|
||||
{else}
|
||||
<input
|
||||
class="js-cart-line-product-quantity"
|
||||
class="js-cart-line-product-quantity px-2 py-1"
|
||||
data-down-url="{$product.down_quantity_url}"
|
||||
data-up-url="{$product.up_quantity_url}"
|
||||
data-update-url="{$product.update_quantity_url}"
|
||||
|
@ -133,20 +61,18 @@
|
|||
/>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="col-md-6 col-xs-2 price">
|
||||
<span class="product-price">
|
||||
<strong>
|
||||
</div>
|
||||
</div>
|
||||
<div class="px-4 flex flex-1 items-center">
|
||||
<span class="product-price text-base font-bold">
|
||||
{if isset($product.is_gift) && $product.is_gift}
|
||||
<span class="gift">{l s='Gift' d='Shop.Theme.Checkout'}</span>
|
||||
{l s='Gift' d='Shop.Theme.Checkout'}
|
||||
{else}
|
||||
{$product.total}
|
||||
{/if}
|
||||
</strong>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2 col-xs-2 text-xs-right">
|
||||
<div class="flex w-24 items-center">
|
||||
<div class="cart-line-product-actions">
|
||||
<a
|
||||
class = "remove-from-cart"
|
||||
|
@ -158,7 +84,14 @@
|
|||
data-id-customization = "{$product.id_customization|escape:'javascript'}"
|
||||
>
|
||||
{if !isset($product.is_gift) || !$product.is_gift}
|
||||
<i class="material-icons float-xs-left">delete</i>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-trash" width="24" height="24" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
||||
<path d="M4 7l16 0"></path>
|
||||
<path d="M10 11l0 6"></path>
|
||||
<path d="M14 11l0 6"></path>
|
||||
<path d="M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12"></path>
|
||||
<path d="M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3"></path>
|
||||
</svg>
|
||||
{/if}
|
||||
</a>
|
||||
|
||||
|
@ -168,8 +101,4 @@
|
|||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
|
|
|
@ -23,13 +23,13 @@
|
|||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
{block name='cart_detailed_totals'}
|
||||
<div class="cart-detailed-totals">
|
||||
<div class="flex flex-col gap-4">
|
||||
|
||||
<div class="card-block">
|
||||
<div class="flex flex-col gap-8">
|
||||
{foreach from=$cart.subtotals item="subtotal"}
|
||||
{if $subtotal.value && $subtotal.type !== 'tax'}
|
||||
<div class="cart-summary-line" id="cart-subtotal-{$subtotal.type}">
|
||||
<span class="label{if 'products' === $subtotal.type} js-subtotal{/if}">
|
||||
<div class="flex font-medium" id="cart-subtotal-{$subtotal.type}">
|
||||
<span class="flex-1 label{if 'products' === $subtotal.type} js-subtotal{/if}">
|
||||
{if 'products' == $subtotal.type}
|
||||
{$cart.summary_string}
|
||||
{else}
|
||||
|
|
|
@ -23,11 +23,11 @@
|
|||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
{block name='cart_detailed_product'}
|
||||
<div class="cart-overview js-cart" data-refresh-url="{url entity='cart' params=['ajax' => true, 'action' => 'refresh']}">
|
||||
<div class="relative" data-refresh-url="{url entity='cart' params=['ajax' => true, 'action' => 'refresh']}">
|
||||
{if $cart.products}
|
||||
<ul class="cart-items">
|
||||
<ul class="flex flex-col">
|
||||
{foreach from=$cart.products item=product}
|
||||
<li class="cart-item">
|
||||
<li class="flex mb-4">
|
||||
{block name='cart_detailed_product_line'}
|
||||
{include file='checkout/_partials/cart-detailed-product-line.tpl' product=$product}
|
||||
{/block}
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
{block name='cart_summary_items_subtotal'}
|
||||
<div class="card-block cart-summary-line cart-summary-items-subtotal clearfix" id="items-subtotal">
|
||||
<div class="flex justify-between" id="items-subtotal">
|
||||
<span class="label">{$cart.summary_string}</span>
|
||||
<span class="value">{$cart.subtotals.products.amount}</span>
|
||||
</div>
|
||||
|
|
|
@ -23,22 +23,18 @@
|
|||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
|
||||
<div class="card-block cart-summary-subtotals-container">
|
||||
|
||||
<div class="flex">
|
||||
{foreach from=$cart.subtotals item="subtotal"}
|
||||
{if $subtotal.value && $subtotal.type !== 'tax'}
|
||||
<div class="cart-summary-line cart-summary-subtotals" id="cart-subtotal-{$subtotal.type}">
|
||||
|
||||
<span class="label">
|
||||
<div class="flex justify-between font-medium" id="cart-subtotal-{$subtotal.type}">
|
||||
<span>
|
||||
{$subtotal.label}
|
||||
</span>
|
||||
|
||||
<span class="value">
|
||||
<span >
|
||||
{$subtotal.value}
|
||||
</span>
|
||||
</div>
|
||||
{/if}
|
||||
{/foreach}
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -22,20 +22,20 @@
|
|||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
<div class="card-block cart-summary-totals">
|
||||
<div class="flex flex-col my-8">
|
||||
|
||||
{block name='cart_summary_total'}
|
||||
{if !$configuration.display_prices_tax_incl && $configuration.taxes_enabled}
|
||||
<div class="cart-summary-line">
|
||||
<div class="flex justify-between font-medium">
|
||||
<span class="label">{$cart.totals.total.label} {$cart.labels.tax_short}</span>
|
||||
<span class="value">{$cart.totals.total.value}</span>
|
||||
</div>
|
||||
<div class="cart-summary-line cart-total">
|
||||
<div class="flex justify-between font-medium">
|
||||
<span class="label">{$cart.totals.total_including_tax.label}</span>
|
||||
<span class="value">{$cart.totals.total_including_tax.value}</span>
|
||||
</div>
|
||||
{else}
|
||||
<div class="cart-summary-line cart-total">
|
||||
<div class="flex justify-between font-medium">
|
||||
<span class="label">{$cart.totals.total.label} {if $configuration.taxes_enabled}{$cart.labels.tax_short}{/if}</span>
|
||||
<span class="value">{$cart.totals.total.value}</span>
|
||||
</div>
|
||||
|
@ -44,7 +44,7 @@
|
|||
|
||||
{block name='cart_summary_tax'}
|
||||
{if $cart.subtotals.tax}
|
||||
<div class="cart-summary-line">
|
||||
<div class="flex justify-between font-medium">
|
||||
<span class="label sub">{l s='%label%:' sprintf=['%label%' => $cart.subtotals.tax.label] d='Shop.Theme.Global'}</span>
|
||||
<span class="value sub">{$cart.subtotals.tax.value}</span>
|
||||
</div>
|
||||
|
|
|
@ -26,26 +26,25 @@
|
|||
|
||||
{block name='content'}
|
||||
|
||||
<section id="main">
|
||||
<div class="cart-grid row">
|
||||
<section id="main" class="flex">
|
||||
<div class="flex flex-col lg:flex-row gap-8 flex-1">
|
||||
|
||||
<!-- Left Block: cart product informations & shpping -->
|
||||
<div class="cart-grid-body col-xs-12 col-lg-8">
|
||||
<div class="flex flex-col gap-4 w-full lg:w-3/5">
|
||||
|
||||
<!-- cart products detailed -->
|
||||
<div class="card cart-container">
|
||||
<div class="card-block">
|
||||
<h1 class="h1">{l s='Shopping Cart' d='Shop.Theme.Checkout'}</h1>
|
||||
<div class="flex flex-col gap-4">
|
||||
<div class="flex-1 flex mb-4">
|
||||
<span class="w-full py-2 uppercase text-center font-medium">{l s='Shopping Cart' d='Shop.Theme.Checkout'}</span>
|
||||
</div>
|
||||
<hr class="separator">
|
||||
{block name='cart_overview'}
|
||||
{include file='checkout/_partials/cart-detailed.tpl' cart=$cart}
|
||||
{/block}
|
||||
</div>
|
||||
|
||||
{block name='continue_shopping'}
|
||||
<a class="label" href="{$urls.pages.index}">
|
||||
<i class="material-icons">chevron_left</i>{l s='Continue shopping' d='Shop.Theme.Actions'}
|
||||
<a class="py-2 uppercase font-medium border border-gray-900 text-center" href="{$urls.pages.index}">
|
||||
{l s='Continue shopping' d='Shop.Theme.Actions'}
|
||||
</a>
|
||||
{/block}
|
||||
|
||||
|
@ -56,10 +55,13 @@
|
|||
</div>
|
||||
|
||||
<!-- Right Block: cart subtotal & cart total -->
|
||||
<div class="cart-grid-right col-xs-12 col-lg-4">
|
||||
<div class="flex flex-col gap-4 w-full lg:w-2/5">
|
||||
<div class="flex-1 flex mb-4">
|
||||
<span class="w-full py-2 uppercase text-center font-medium">{l s='Shopping Cart' d='Shop.Theme.Checkout'}</span>
|
||||
</div>
|
||||
|
||||
{block name='cart_summary'}
|
||||
<div class="card cart-summary">
|
||||
<div class="flex flex-col">
|
||||
|
||||
{block name='hook_shopping_cart'}
|
||||
{hook h='displayShoppingCart'}
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
{extends file='page.tpl'}
|
||||
{block name='breadcrumb'}
|
||||
{/block}
|
||||
{block name='page_content_container'}
|
||||
<section id="content" class="page-home">
|
||||
{block name='page_content_top'}{/block}
|
||||
|
|
Loading…
Reference in New Issue