${function() {
const variantData = data.variant || {"id":"fc8fa16b-7257-4708-af99-dc00d5447456","product_id":"5ed98dba-42a1-42b1-afec-7368f251ceb9","title":"Natural Color-12 12 12","weight_unit":"kg","inventory_quantity":100,"sku":"","barcode":"","position":1,"option1":"Natural Color","option2":"12 12 12","option3":"","note":"","image":null,"wholesale_price":[{"price":99.46,"min_quantity":1}],"weight":"0.33","compare_at_price":"117.01","price":"99.46","retail_price":"117.01","available":true,"url":"\/products\/3-bundles-lot-peruvian-hair-body-wave-100-human-hair-weave-yvonne-body-wavy-remy-hair-free-shipping-cost?variant=fc8fa16b-7257-4708-af99-dc00d5447456","available_quantity":100,"options":[{"name":"Color","value":"Natural Color"},{"name":"Length","value":"12 12 12"}],"off_ratio":"15","flashsale_info":{"variant_id":"fc8fa16b-7257-4708-af99-dc00d5447456","product_id":"","quantity":0,"discount_id":"5c7cb029-41a8-4762-a245-7900c4b45591","limit_time":-1,"limit_buy":-1,"user_limit_buy":-1,"discount_sales":4,"discount_sales_rate":"4","discount_stock":100,"ends_at":-1,"starts_at":1714464000,"allow_oversold":"uncheck","allocation_method":"none","price":"99.46","compare_at_price":"117.01","discount_price":"99.46","customary_saved_price":"17.55","customary_off_ratio":"15","discount_saved_price":"17.55","discount_off_ratio":"15","use_before_price":false,"before_price":"0","title":"","properties":"","color_setting_promotional_copy":"","discount_quantity":0,"is_need_split":false},"sales":136};
const saveType = "percentage";
const saveText = "Save {{saved_amount}}";
const productLabelDiscountOn = true;
return `
-
${saveText.replace('\{\{saved_amount\}\}',
saveType == 'percentage'
? variantData.off_ratio + '%'
: ``
)}
`;
}()}
${function(){
const tipText = "Please select a {{ name }}".replace(/\{\{\s+name\s+\}\}/g, data);
return `${tipText}
`
}()}
${function(){
const tipText = "Please select a {{ name }}".replace(/\{\{\s+name\s+\}\}/g, data);
return `${tipText}
`
}()}
Product was out of stock.
Product is unavailable.
/** @private {string} */
class SpzCustomAnchorScroll extends SPZ.BaseElement {
static deferredMount() {
return false;
}
constructor(element) {
super(element);
/** @private {Element} */
this.scrollableContainer_ = null;
}
isLayoutSupported(layout) {
return layout == SPZCore.Layout.LOGIC;
}
buildCallback() {
this.viewport_ = this.getViewport();
this.initActions_();
}
setTarget(containerId, targetId) {
this.containerId = '#' + containerId;
this.targetId = '#' + targetId;
}
scrollToTarget() {
const container = document.querySelector(this.containerId);
const target = container.querySelector(this.targetId);
const {scrollTop} = container;
const eleOffsetTop = this.getOffsetTop_(target, container);
this.viewport_
.interpolateScrollIntoView_(
container,
scrollTop,
scrollTop + eleOffsetTop
);
}
initActions_() {
this.registerAction(
'scrollToTarget',
(invocation) => this.scrollToTarget(invocation?.caller)
);
this.registerAction(
'setTarget',
(invocation) => this.setTarget(invocation?.args?.containerId, invocation?.args?.targetId)
);
}
/**
* @param {Element} element
* @param {Element} container
* @return {number}
* @private
*/
getOffsetTop_(element, container) {
if (!element./*OK*/ getClientRects().length) {
return 0;
}
const rect = element./*OK*/ getBoundingClientRect();
if (rect.width || rect.height) {
return rect.top - container./*OK*/ getBoundingClientRect().top;
}
return rect.top;
}
}
SPZ.defineElement('spz-custom-anchor-scroll', SpzCustomAnchorScroll);
const STRENGTHEN_TRUST_URL = "/api/strengthen_trust/settings";
class SpzCustomStrengthenTrust extends SPZ.BaseElement {
constructor(element) {
super(element);
this.renderElement_ = null;
}
isLayoutSupported(layout) {
return layout == SPZCore.Layout.CONTAINER;
}
buildCallback() {
this.xhr_ = SPZServices.xhrFor(this.win);
const renderId = this.element.getAttribute('render-id');
SPZCore.Dom.waitForChild(
document.body,
() => !!document.getElementById(renderId),
() => {
this.renderElement_ = SPZCore.Dom.scopedQuerySelector(
document.body,
`#${renderId}`
);
if (this.renderElement_) {
this.render_();
}
this.registerAction('track', (invocation) => {
this.track_(invocation.args);
});
}
);
}
render_() {
this.fetchData_().then((data) => {
if (!data) {
return;
}
SPZ.whenApiDefined(this.renderElement_).then((apis) => {
apis?.render(data);
document.querySelector('#strengthen-trust-render-1539149753700').addEventListener('click',(event)=>{
if(event.target.nodeName == 'A'){
this.track_({type: 'trust_content_click'});
}
})
});
});
}
track_(data = {}) {
const track = window.sa && window.sa.track;
if (!track) {
return;
}
track('trust_enhancement_event', data);
}
parseJSON_(string) {
let result = {};
try {
result = JSON.parse(string);
} catch (e) {}
return result;
}
fetchData_() {
return this.xhr_
.fetchJson(STRENGTHEN_TRUST_URL)
.then((responseData) => {
if (!responseData || !responseData.data) {
return null;
}
const data = responseData.data;
const moduleSettings = (data.module_settings || []).reduce((result, moduleSetting) => {
return result.concat(Object.assign(moduleSetting, {
logos: (moduleSetting.logos || []).map((item) => {
return moduleSetting.logos_type == 'custom' ? this.parseJSON_(item) : item;
})
}));
}, []);
return Object.assign(data, {
module_settings: moduleSettings,
isEditor: window.self !== window.top,
});
});
}
}
SPZ.defineElement('spz-custom-strengthen-trust', SpzCustomStrengthenTrust);
${data.module_title}
To display this card to customers, you need to go to "Booster & Store Conversion" to turn on the trust enhancement feature.
${item.content.replaceAll("{store_name}","YVONNE HAIR")}
To display this card to customers, you need to go to "Booster & Store Conversion" to turn on the trust enhancement feature.
${function(){
const variantData = data.variant || {"id":"fc8fa16b-7257-4708-af99-dc00d5447456","product_id":"5ed98dba-42a1-42b1-afec-7368f251ceb9","title":"Natural Color-12 12 12","weight_unit":"kg","inventory_quantity":100,"sku":"","barcode":"","position":1,"option1":"Natural Color","option2":"12 12 12","option3":"","note":"","image":null,"wholesale_price":[{"price":99.46,"min_quantity":1}],"weight":"0.33","compare_at_price":"117.01","price":"99.46","retail_price":"117.01","available":true,"url":"\/products\/3-bundles-lot-peruvian-hair-body-wave-100-human-hair-weave-yvonne-body-wavy-remy-hair-free-shipping-cost?variant=fc8fa16b-7257-4708-af99-dc00d5447456","available_quantity":100,"options":[{"name":"Color","value":"Natural Color"},{"name":"Length","value":"12 12 12"}],"off_ratio":"15","flashsale_info":{"variant_id":"fc8fa16b-7257-4708-af99-dc00d5447456","product_id":"","quantity":0,"discount_id":"5c7cb029-41a8-4762-a245-7900c4b45591","limit_time":-1,"limit_buy":-1,"user_limit_buy":-1,"discount_sales":4,"discount_sales_rate":"4","discount_stock":100,"ends_at":-1,"starts_at":1714464000,"allow_oversold":"uncheck","allocation_method":"none","price":"99.46","compare_at_price":"117.01","discount_price":"99.46","customary_saved_price":"17.55","customary_off_ratio":"15","discount_saved_price":"17.55","discount_off_ratio":"15","use_before_price":false,"before_price":"0","title":"","properties":"","color_setting_promotional_copy":"","discount_quantity":0,"is_need_split":false},"sales":136};
return `
Sku : ${variantData && variantData.sku}
`
}()}
- General Return Policy:
We want you to be completely satisfied with your purchase of our hair products. If for any reason you are not entirely happy with your purchase, we offer a hassle-free return and exchange policy. Please read the following terms and conditions:
- Return Eligibility:
- Returns are accepted within 15 days from the date of purchase. Purchases may only be returned or exchanged at the original location of purchase.
- The product must be in its original condition, unopened, and unused. Products must not be opened, worn or tampered with due to hygienic reasons and the safety of our customers.
- The packaging, including seals and labels, must remain intact.
- Return Process:
- To initiate a return or exchange, please contact our customer service team within the specified return period.
- Provide your order number, reason for return/exchange, and any relevant details.
- Our team will guide you through the return process and provide you with a return authorization if applicable.
- Please ensure that the product is securely packaged to prevent any damage during transit.
- Return Shipping:
- The cost of return shipping is the responsibility of the customer, unless the return is due to an error on our part (e.g., incorrect or damaged item).
- We recommend using a trackable shipping method to ensure the safe arrival of the returned product.
- Upon receiving the returned item, we will inspect it and process your refund or exchange accordingly.
- Refunds:
- Refunds will be issued to the original form of payment used during the purchase.
- Please allow 3 - 4 working days for the refund to be processed and reflected in your account.
- Exchanges:
- Once the return is approved and received, we will assist you in placing a new order for the desired item.
- Non-Returnable Items:
- Customized Products.
- For hygienic reasons, certain items such as hair brushes, hair extensions, and hair accessories cannot be returned or exchanged unless they are damaged or defective upon arrival.
Please note that these terms are subject to change and may vary based on specific product categories or promotions. We strive to provide the best customer service possible, and if you have any further questions or concerns regarding returns or exchanges, please don't hesitate to contact our customer support team.
Customer Service Team:
Emali: aftersales@hywig.com
WhatsApp: 0086 185 8886 2177