Introducing: The Aphrodisiac Collection

Introducing: The Aphrodisiac Collection

We are thrilled to announce the launch of our most daring collection yet — The Aphrodisiac Collection.

A Scent of Desire

Inspired by ancient love potions and exotic ingredients, this 110ml Limited Edition parfum combines rare oud, warm amber, and intoxicating jasmine to create an irresistible fragrance experience.

Limited Edition

Only a limited number of bottles will be produced, making each one a collector's item. Don't miss your chance to own this extraordinary fragrance.

Available Now

Visit our store in Kingston Upon Thames or shop online to get yours before they're gone.

new arrival aphrodisiac limited edition
Share:

B2B Partner Portal

Access our wholesale portal

Forgot Password?

Mon Mélange

Online
Hello! Welcome to Mon Mélange 🌹 I'm your personal fragrance consultant. How can I help you today?

I can help you with:
• Finding your perfect perfume
• Product recommendations
• B2B partnership inquiries
• Shipping & order info

Before we start

Please share your details so we can assist you better.

var btn = event.currentTarget; btn.disabled = true; btn.innerHTML = ''; fetch('/api/index.php?action=cart_add', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ slug: slug, quantity: 1 }) }) .then(function(r) { return r.json(); }) .then(function(data) { if (data.success) { btn.classList.add('added'); btn.innerHTML = ''; // Update cart count badge if exists var cartBadge = document.querySelector('.cart-count'); if (cartBadge && data.count !== undefined) { cartBadge.textContent = data.count; cartBadge.style.display = data.count > 0 ? 'flex' : 'none'; } setTimeout(function() { btn.classList.remove('added'); btn.innerHTML = ''; btn.disabled = false; }, 2000); } else { btn.innerHTML = ''; setTimeout(function() { btn.innerHTML = ''; btn.disabled = false; }, 1500); } }) .catch(function() { btn.innerHTML = ''; btn.disabled = false; }); } (function() { var widget = document.getElementById('mmChatWidget'); var toggle = document.getElementById('mmChatToggle'); var window_ = document.getElementById('mmChatWindow'); var minimize = document.getElementById('mmChatMinimize'); var form = document.getElementById('mmChatForm'); var input = document.getElementById('mmChatInput'); var messages = document.getElementById('mmChatMessages'); var iconOpen = document.getElementById('mmChatIconOpen'); var iconClose = document.getElementById('mmChatIconClose'); var sendBtn = document.getElementById('mmChatSend'); var isOpen = false; // Session key persistence var sessionKey = localStorage.getItem('mm_chat_session') || ''; function toggleChat() { isOpen = !isOpen; if (isOpen) { window_.classList.add('open'); iconOpen.style.display = 'none'; iconClose.style.display = 'block'; document.getElementById('mmChatBadge').style.display = 'none'; input.focus(); if (sessionKey) loadHistory(); } else { window_.classList.remove('open'); iconOpen.style.display = 'block'; iconClose.style.display = 'none'; } } toggle.addEventListener('click', toggleChat); minimize.addEventListener('click', toggleChat); function addMessage(text, isBot) { var div = document.createElement('div'); div.className = 'mm-msg ' + (isBot ? 'mm-msg-bot' : 'mm-msg-user'); var icon = isBot ? 'fa-spray-can-sparkles' : 'fa-user'; var formatted = text; if (isBot) { // Extract product cards var productCards = ''; formatted = formatted.replace(/\[PRODUCT:([^|]+)\|([^|]+)\|([^|]+)\|([^\]]+)\]/g, function(match, slug, name, price, desc) { productCards += '
' + '
' + '' + name + '' + '' + price + '' + '' + desc + '' + '
' + '
' + '' + '' + '
' + '
'; return ''; }); // Format remaining text formatted = formatted .replace(/\*\*(.*?)\*\*/g, '$1') .replace(/\n{2,}/g, '

') .replace(/\n/g, '
') .replace(/^(
)+/, '').replace(/(
)+$/, ''); if (productCards) { formatted += '
' + productCards + '
'; } } else { formatted = formatted .replace(/\*\*(.*?)\*\*/g, '$1') .replace(/\n/g, '
'); } div.innerHTML = '
' + '
' + formatted + '
'; messages.appendChild(div); messages.scrollTop = messages.scrollHeight; } function showTyping() { var div = document.createElement('div'); div.className = 'mm-msg mm-msg-bot mm-msg-typing'; div.id = 'mmTyping'; div.innerHTML = '
' + '
'; messages.appendChild(div); messages.scrollTop = messages.scrollHeight; } function hideTyping() { var el = document.getElementById('mmTyping'); if (el) el.remove(); } function sendMessage(text) { if (!text.trim()) return; addMessage(text, false); input.value = ''; sendBtn.disabled = true; showTyping(); fetch('/api/index.php?action=chat_send', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ message: text, session_key: sessionKey }) }) .then(function(r) { return r.json(); }) .then(function(data) { hideTyping(); sendBtn.disabled = false; if (data.success) { addMessage(data.message, true); if (data.session_key) { sessionKey = data.session_key; localStorage.setItem('mm_chat_session', sessionKey); } } else { addMessage(data.message || 'Sorry, something went wrong. Please try again.', true); } input.focus(); }) .catch(function() { hideTyping(); sendBtn.disabled = false; addMessage('Connection error. Please try again.', true); }); } form.addEventListener('submit', function(e) { e.preventDefault(); sendMessage(input.value); }); function loadHistory() { if (!sessionKey) return; fetch('/api/index.php?action=chat_history&session_key=' + encodeURIComponent(sessionKey)) .then(function(r) { return r.json(); }) .then(function(data) { if (data.success && data.messages && data.messages.length > 0) { // Clear default welcome message and show history messages.innerHTML = ''; data.messages.forEach(function(m) { addMessage(m.content, m.role === 'assistant'); }); } }) .catch(function() {}); } })();