// Page Code for /checkout-link import { cart } from 'wix-stores'; import wixLocation from 'wix-location'; /** * Accepts `products` query parameter in Meta format: * - Encoded: products=112233%3A1%2C445566%3A2 * - Unencoded: products=112233:1,445566:2 (still works) * * Each entry is ID:QTY. Colons/commas may be RFC 3986-escaped. * Example final URL for Meta: * https://mysticalcrow.com/checkout-link?products=112233%3A1%2C445566%3A2 */ function parseProductsParam(rawParam) { if (!rawParam || typeof rawParam !== 'string') return []; // Try to decode once; if it throws or changes nothing, we still continue safely let decoded = rawParam; try { // decodeURIComponent will convert %3A -> ":", %2C -> "," decoded = decodeURIComponent(rawParam); } catch (_e) { // If decoding fails, we’ll proceed with the original string } // Split by commas (now that we normalized to ":" and ",") // Trim spaces just in case. return decoded .split(',') .map(s => s.trim()) .filter(Boolean) .map(pair => { const [id, qty] = pair.split(':').map(x => (x || '').trim()); const quantity = Number(qty); return (id && !Number.isNaN(quantity) && quantity > 0) ? { productId: id, quantity } : null; }) .filter(Boolean); } async function addAllToCart(items) { // Wix Stores cart.addProducts accepts an array of product objects. // We’ll add one by one to ensure each promise resolves, but you can batch if desired. for (const item of items) { // If a product has variants/options, you’ll need to pass the relevant // selection data here (e.g., options: [{ optionName, selection }]). // For simple products, productId + quantity is sufficient. await cart.addProducts([{ productId: item.productId, quantity: item.quantity }]); } } $w.onReady(async function () { const { products } = wixLocation.query; if (!products) { // No parameter present; go to cart so the user isn't stuck. wixLocation.to('/cart'); return; } const items = parseProductsParam(products); if (!items.length) { // Parameter present but invalid/empty after parsing wixLocation.to('/cart'); return; } try { await addAllToCart(items); // Success: go straight to checkout wixLocation.to('/checkout'); } catch (_err) { // If anything fails (bad ID, etc.), fall back to cart wixLocation.to('/cart'); } });
top of page

The February sage bundle, featuring lavender sage and a piece of straw from Brigid’s cross, carries deep significance and can be used in various ways in witchcraft:

 

Correspondences:

• Lavender Sage: Lavender is known for its calming, purifying, and protective properties. It enhances relaxation, promotes peace, and clears negative energies. Sage, in general, is a powerful herb for spiritual cleansing, protection, and warding off unwanted influences.

• Straw (Brigid’s Cross): Straw is traditionally associated with Brigid, the goddess of hearth, home, and fertility. The cross represents protection, healing, and the bringing of warmth and light into one’s life.

 

Uses in Witchcraft:

• Cleansing and Protection: The lavender sage can be burned to cleanse spaces, objects, or people from negative energies. Use it during rituals or to purify your altar, home, or sacred items.

• Peace and Tranquility: Burn lavender sage during meditation or relaxation rituals to enhance peace, calm, and mental clarity. It’s perfect for creating a serene atmosphere for introspective work.

• Sacred Intentions: The piece of straw can be used to honor Brigid in rituals focused on healing, creativity, and protection. You can incorporate it into your altar as a symbol of Brigid’s influence, or weave it into a small charm or spell for protection and blessings.

• Seasonal Magic: Use this bundle during the time of Imbolc or in the early spring to invoke new beginnings, renewal, and the nurturing energy of Brigid. It’s an ideal tool for setting intentions and preparing for the growth and transformation of the upcoming seasons.

 

This sage bundle serves as a versatile tool in your craft, blending purification, protection, and divine energy in one powerful package.

Lavender Sage Botanical Bundle from February's Subscription Box

$15.00Price
Quantity
Out of Stock
    bottom of page