import wixData from 'wix-data'; import wixLocation from 'wix-location'; const MOMENTS = [ "An invitation rather than a destination.", "Time to pause, to notice, and to grow.", "Meaningful keepsakes for moments that matter.", "…and moments that may not deserve your energy.", "Humour, reflection and quiet courage for life as it really is.", "Passing moments within oneself and the world may signal subtle shifts in perception." ]; $w.onReady(async function () { initialiseMoments(); wireNavigation(); await loadFeaturedProducts(); }); function initialiseMoments() { let currentIndex = 0; if ($w('#txtMoment')) { $w('#txtMoment').text = MOMENTS[currentIndex]; setInterval(() => { currentIndex = (currentIndex + 1) % MOMENTS.length; $w('#txtMoment').text = MOMENTS[currentIndex]; }, 5000); } } function wireNavigation() { if ($w('#btnShop')) { $w('#btnShop').onClick(() => wixLocation.to('/shop')); } if ($w('#btnAbout')) { $w('#btnAbout').onClick(() => wixLocation.to('/about')); } if ($w('#btnHumour')) { $w('#btnHumour').onClick(() => wixLocation.to('/category/humour-for-survival')); } if ($w('#btnPerspective')) { $w('#btnPerspective').onClick(() => wixLocation.to('/category/perspective-keepers')); } if ($w('#btnCourage')) { $w('#btnCourage').onClick(() => wixLocation.to('/category/quiet-courage')); } } async function loadFeaturedProducts() { try { setStatus('Loading featured keepsakes...'); const results = await wixData .query('FeaturedProducts') .eq('isFeatured', true) .ascending('sortOrder') .include('productRef') .find(); const items = results.items .filter(item => item.productRef) .map(item => ({ _id: item._id, name: item.productRef.name || '', blurb: item.shortBlurb || '', price: item.productRef.formattedPrice || '', image: getImageSrc(item.productRef.mainMedia), url: item.productRef.productPageUrl || '/shop', theme: item.theme || '' })); if (!items.length) { setStatus('No featured products found yet.'); $w('#rptFeatured').collapse(); return; } $w('#rptFeatured').data = items; $w('#rptFeatured').onItemReady(($item, itemData) => { $item('#txtName').text = itemData.name; $item('#txtBlurb').text = itemData.blurb; $item('#txtPrice').text = itemData.price; if (itemData.image) { $item('#imgProduct').src = itemData.image; $item('#imgProduct').alt = itemData.name; } $item('#btnView').label = 'View product'; $item('#btnView').onClick(() => wixLocation.to(itemData.url)); $item('#imgProduct').onClick(() => wixLocation.to(itemData.url)); }); clearStatus(); $w('#rptFeatured').expand(); } catch (error) { console.error('Error loading featured products:', error); setStatus('Something went wrong while loading featured products.'); } } function getImageSrc(mainMedia) { if (!mainMedia) return ''; if (typeof mainMedia === 'string') return mainMedia; if (mainMedia.src) return mainMedia.src; if (mainMedia.image) return mainMedia.image; return ''; } function setStatus(message) { if ($w('#txtStatus')) { $w('#txtStatus').text = message; } if ($w('#boxStatus')) { $w('#boxStatus').expand(); } } function clearStatus() { if ($w('#boxStatus')) { $w('#boxStatus').collapse(); } }