Showing 13–24 of 33 results

Premium Hand Bouquet

KH-21 Love Vows Hand Bouquet

$89.90

Premium Hand Bouquet

KH-27 Passionate Kisses

$89.90

Premium Hand Bouquet

KH-29 Blossoming Grace

$89.90

Premium Hand Bouquet

kh-151 Tulip Bouquet Bluey

$89.99
Sale!

Premium Hand Bouquet

PB-12 PAPER BOUQUET #12

Original price was: $110.00.Current price is: $90.00.
$99.90

Premium Hand Bouquet

KH-53 MS JOLLY

$99.90

Premium Hand Bouquet

KH-76 MS ATTENTION

$99.90

Premium Hand Bouquet

kh-150 Tulip Bouquet Grace

$99.99

Premium Hand Bouquet

PB-16 PAPER BOUQUET #16

$109.90

Premium Hand Bouquet

PB-29 PAPER BOUQUET #29

$119.90

Why Choose Our Tulip Bouquets?

Our tulip bouquets stand out for their unmatched quality and artistry. We source the freshest tulips directly from trusted local farms and international suppliers, ensuring every bloom is vibrant and long-lasting. Our quality assurance processes guarantee that each tulip meets the highest standards before becoming part of your bouquet. Whether you’re looking for a classic hand-tied arrangement or a modern design with a mix of flowers, our collection caters to all preferences and occasions. From romantic red tulips to cheerful multicoloured designs, you’re bound to find the perfect bouquet to express your sentiments. Crafted by experienced florists with years of expertise, each bouquet shows meticulous attention to detail and creativity.
(function(){ // cookie helpers function setCookie(name, value, days) { var expires = ""; if (days) { var date = new Date(); date.setTime(date.getTime() + (days*24*60*60*1000)); expires = "; expires=" + date.toUTCString(); } document.cookie = name + "=" + (value || "") + expires + "; path=/; SameSite=Lax"; } function getCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i].trim(); if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length); } return null; } // Build modal markup function buildModal() { var overlay = document.createElement('div'); overlay.className = 'cf-overlay'; overlay.id = 'cfOverlay'; overlay.setAttribute('aria-hidden','false'); var modal = document.createElement('div'); modal.className = 'cf-modal'; modal.setAttribute('role','dialog'); modal.setAttribute('aria-modal','true'); modal.setAttribute('aria-label','Cookie consent'); modal.innerHTML = '\ \
\ We use cookies to improve your browsing experience.\
\ This website uses cookies to enhance site navigation, analyse site usage, \ and provide personalised content. By clicking "ACCEPT", you agree to our cookie policy.\
\
\ \ \ View Cookie Policy\
'; overlay.appendChild(modal); return overlay; } // Utility: get all focusable elements inside container function getFocusable(el) { return el.querySelectorAll('a[href], button:not([disabled]), textarea, input, select, [tabindex]:not([tabindex="-1"])'); } // Show modal (blocking) function showModal() { if (document.getElementById('cfOverlay')) return; var overlay = buildModal(); document.body.appendChild(overlay); // block scroll and remember previous focus var previousActive = document.activeElement; document.body.style.overflow = 'hidden'; // show setTimeout(function(){ overlay.classList.add('show'); }, 20); // focus management: trap focus inside modal var modal = overlay.querySelector('.cf-modal'); var focusable = Array.prototype.slice.call(getFocusable(modal)); var firstFocusable = focusable[0]; var lastFocusable = focusable[focusable.length-1]; // focus first interactive element (ACCEPT) var acceptBtn = document.getElementById('cfAccept'); if (acceptBtn) acceptBtn.focus(); // keydown handler to trap Tab and disable Escape function onKeyDown(e) { if (e.key === 'Escape' || e.key === 'Esc') { // prevent ESC from closing modal e.preventDefault(); e.stopPropagation(); return; } if (e.key === 'Tab') { if (focusable.length === 0) { e.preventDefault(); return; } // forward tab if (!e.shiftKey && document.activeElement === lastFocusable) { e.preventDefault(); firstFocusable.focus(); } // backward tab else if (e.shiftKey && document.activeElement === firstFocusable) { e.preventDefault(); lastFocusable.focus(); } } } document.addEventListener('keydown', onKeyDown, true); // Event handlers document.getElementById('cfAccept').addEventListener('click', function(){ setCookie('cookie_consent','1',365); cleanup(); }); document.getElementById('cfClose').addEventListener('click', function(){ // Close without consent (does NOT set cookie) cleanup(); }); document.getElementById('cfCloseX').addEventListener('click', function(){ cleanup(); }); // IMPORTANT: DO NOT close when clicking overlay background — user must click Accept or Close // overlay.addEventListener('click', function(e){ // if (e.target === overlay) cleanup(); // disabled on purpose // }); // cleanup function function cleanup() { overlay.classList.remove('show'); setTimeout(function(){ if (overlay && overlay.parentNode) overlay.parentNode.removeChild(overlay); document.body.style.overflow = ''; document.removeEventListener('keydown', onKeyDown, true); try { if (previousActive) previousActive.focus(); } catch (e) {} }, 150); } } // init: show modal if cookie not set // dan HANYA di homepage var path = window.location.pathname.replace(/\/+$/, ''); var isHome = (path === ''); // "/" akan jadi "" setelah replace di atas if (isHome && !getCookie('cookie_consent')) { if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', showModal); } else { showModal(); } } })();
Alert Dont Save as Image & Download