icon

Custom Event Setup

×

Click on the elements you want to track as custom events. Selected elements will appear in the list below.

Selected Elements (0)

    Best Cookware Sets of 2024 from Vinod Cookware

    What makes a good meal? Some say it’s the quality of the ingredients, while others may say it’s the skills of the chef or the love of the homemaker. But in the ever-evolving world of culinary delights, the importance of reliable and efficient cookware cannot be overstated.

    There are a lot of options and brands available now and choosing the best cookware set can get a little overwhelming. One brand that you can trust for quality, durable,              and sustainable cookware is Vinod Cookware. Our range of cookware sets will redefine your cooking experience.

    As we step into the year 2024, we bring you the best cookware sets of 2024 from Vinod Cookware, designed to elevate your cooking endeavours to new heights.

    1. Vinod Veneto Sets

    At the forefront of Vinod Cookware's offerings for 2024 is the Vinod Veneto Cookware Sets.  This set is a testament to our dedication to precision engineering and top-notch quality.

    Make: The Veneto Sets are made of 100% food-grade stainless steel and have an encapsulated aluminum SAS base. This ensures even heat distribution, preventing hot spots and allowing for precise temperature control. Crafted with premium stainless steel, the Veneto Sets have an elegant mirror finish and can be doubled up as a serveware. The ergonomic design provides a comfortable grip and the tempered glass lids let you monitor your culinary creations effortlessly. Whether you're a seasoned chef or a home cook, the Veneto Sets is poised to become an indispensable part of your kitchen arsenal.

    Consists of: The set comes in two combo sizes. The 2-piece combo set includes a kadai and saucepan with a glass lid. The 3-piece combo set includes a kadai, saucepan, and frypan with glass lids.

    1. Kitchen-In-The-Box Cookware Set

    Kitchen-in-the-Box cookware set is a practical choice for those who demand efficiency and aesthetics in equal measure. This cookware set can help set up your kitchen with a variety of cookware sets made out of Stainless steel, Hard Anodised and Non-Stick products.

    Make: The cookware set includes a range of stainless steel, hard anodised, and non-stick products. The set includes a range of pots, pans, etc. that is suitable for various cooking style. The heat-resistant handles on the products provide a secure grip.

    Consists of: The cookware set consists of 25 pieces that are a kitchen must-have such as Frypans, Kadais, Grill pans, Spoons, Steamer, Saucepot, Saucepan, Roti & Dosa Tawa, and topes with lid. It now comes with a Free 3-litre Outer Lid Pressure Cooker as well.

    1. Vinod Legacy Pre-Seasoned Cast Iron Combo Set

    Embracing the timeless appeal of cast iron, Vinod Cookware presents a cast iron cookware set that harks back to traditional cooking methods. This set is perfect for those who appreciate the robustness and versatility of cast iron in the kitchen.

    Make: The products are entirely made of cast iron with no synthetic coating or chemicals applied on the inner or outer surface. They have a uni-body, i.e. the cookware is made out of a single piece of cast iron. They are free of any screws or weld joints. The cookware products are pre-seasoned, allowing for immediate use and easy maintenance.

    Consists of: Vinod Legacy Pre-Seasoned Cast Iron Combo set consists of a Frypan and a Kadai.

    Vinod Cookware's best cookware sets of 2024 represent a fusion of culinary artistry and technological innovation. Whether you're a culinary enthusiast or a professional chef, these cookware sets cater to a diverse range of preferences and cooking styles. As you navigate the culinary landscape of 2024, elevate your cooking experience with these cookware sets and embark on a journey of gastronomic delight.

    You have successfully subscribed!
    This email has been registered
    ", defaultCountry, geoCountries.includes(defaultCountry) ); return geoCountries.includes(defaultCountry); }; const startOTPObserverIfEligible = async () => { const shouldRunOTP = await checkDefaultCountry(); if (shouldRunOTP) { codkLog("observePreOrderOTPEnabled running"); observePreOrderOTPEnabled(); } else { codkLog("OTP observer skipped due to geo restrictions."); enableNormalCheckout(); } }; try { console.log( "%c████████████ COD King 2 ████████████", "font-weight: bold; font-size: 14px; background: red; color: white; padding: 4px 8px; border-radius: 4px;" ); disableNormalCheckout(); setTimeout(async function () { codkLog("before calling setting from extension"); let settings; const settingsChanged = sessionStorage.getItem("codk_settings_changed"); const settingsStr = sessionStorage.getItem("settingSession"); if (settingsChanged || !settingsStr) { if (settingsChanged) { sessionStorage.removeItem("codk_settings_changed"); codkLog("Metafield changed - calling fetchSettings() to update settingSession"); } const response = await fetchSettings(); if (response) { const newSettings = codkMapSettingsToCamel({ ...response, routeUrl: ROUTE_URL.replace(/\/$/, ""), shopDomain: window.Shopify.shop, }); sessionStorage.setItem("settingSession", JSON.stringify(newSettings)); startOTPObserverIfEligible(); if (newSettings?.partialPaymentEnabled === true) { callPartialRuleSets(); callPartialDummyVariantId(); } settings = newSettings; } else { codkLog("Failed to load settings from server."); enableNormalCheckout(); return; } } else { settings = JSON.parse(settingsStr); const needsMigration = settings && !("enablePreOrderOtp" in settings) && "enable_pre_order_otp" in settings; if (needsMigration) { const migratedSettings = codkMapSettingsToCamel(settings); sessionStorage.setItem( "settingSession", JSON.stringify(migratedSettings) ); settings = migratedSettings; } startOTPObserverIfEligible(); if (settings?.partialPaymentEnabled === true) { const ruleSets = JSON.parse(sessionStorage.getItem("ruleSets")); if (!ruleSets) { callPartialRuleSets(); } const variantId = sessionStorage.getItem("partialDummyVariantId"); if (!variantId) { callPartialDummyVariantId(); } } } if (settings?.partialPaymentEnabled === true) { initProductHiding(); } loadScript(); }, 10); } catch (e) { codkLog("Error Loading OTP Box, Please reach out to us via chat bubble"); enableNormalCheckout(); } })(); }; const initSvelteApp = function(buttonBlocking, settings) { window.codkInitSvelteApp = () => initSvelteApp(buttonBlocking, settings); // Ensure ROUTE_URL is set if (typeof window.codkingRouteUrl === 'undefined' || !window.codkingRouteUrl || window.codkingRouteUrl.trim() === '') { console.error("❌ ROUTE_URL is empty in initSvelteApp!"); if (buttonBlocking) buttonBlocking.removeButtonListeners(); return; } const ROUTE_URL = window.codkingRouteUrl; const DEBUG = true; const codkLog = (msg, ...args) => { if (DEBUG) console.log(`[notifik_svelte.liquid] ${msg}`, ...args); }; codkLog("***************************** notifik_svelte.liquid loaded (SKELETON) *****************************"); codkLog("✅ web_ux_version is 2, initializing Svelte app"); // If buttonBlocking not provided, unblock and exit if (!buttonBlocking) { console.error("❌ buttonBlocking not provided to initSvelteApp!"); return; } const isMobile = () => { const viewportWidth = window.parent && window.parent !== window ? window.parent.innerWidth : window.innerWidth; return viewportWidth <= 640; }; const showIframe = (iframe) => { if (!iframe) return; iframe.setAttribute('data-visible', 'true'); // Fire global event when the iframe-based modal becomes visible // (Do NOT fire this on iframe creation because the iframe is preloaded.) try { if (!window.codkOtpModalOpen) { const parentWindow = window.parent || window; parentWindow.dispatchEvent(new Event("codking:otpModalOpened")); window.codkOtpModalOpen = true; codkLog("📣 Dispatched codking:otpModalOpened"); // IMMEDIATE FALLBACK: If cart drawer manager isn't ready yet (first open), // directly hide cart drawers using Strategy 6 logic (Razorpay Magic Checkout pattern). // This is the EXACT same logic as initializeCartDrawerHidingLogicSix.closeCartDrawerSafely() const hideCartDrawerFallback = function() { try { const cartDrawerLayouts = getCartDrawerLayouts(); // Iterate through all cart drawer layout selectors (from COD_CART_DRAWER_LAYOUT) for (const selector of cartDrawerLayouts) { try { const element = document.querySelector(selector); if (!element) continue; // If it's a component with close() method, use it (like Razorpay Magic Checkout) const elementAny = element; if (typeof elementAny.close === "function") { try { elementAny.close(); codkLog(" 🔒 Fallback: Closed via " + selector + ".close()"); return true; } catch (e) { codkLog(" ⚠️ Fallback: " + selector + ".close() failed:", e); // continue to try dialog fallback } } // Fallback: find dialog[open] inside the cart drawer element const dialog = element.querySelector("dialog[open]"); if (dialog) { try { dialog.close(); dialog.removeAttribute("open"); codkLog(" 🔒 Fallback: Closed dialog inside " + selector); return true; } catch (e) { codkLog(" ⚠️ Fallback: Failed to close dialog in " + selector + ":", e); // continue to next selector } } // If the element itself is a dialog with open attribute if (element.tagName === "DIALOG" && element.hasAttribute("open")) { try { element.close(); element.removeAttribute("open"); codkLog(" 🔒 Fallback: Closed dialog " + selector); return true; } catch (e) { codkLog(" ⚠️ Fallback: Failed to close dialog " + selector + ":", e); // continue to next selector } } } catch (e) { // Skip invalid selectors codkLog(" ⚠️ Fallback: Invalid selector " + selector + ":", e); } } return false; } catch (e) { codkLog("⚠️ Fallback hide failed:", e); return false; } }; // Try immediate fallback first (works even if Svelte cart drawer manager hasn't loaded) hideCartDrawerFallback(); // Also retry calling the handler directly until it exists (for full strategy support) const tryHideDrawer = function(attempt) { try { if (typeof parentWindow.codkingHideDrawer === "function") { parentWindow.codkingHideDrawer(); codkLog("📣 Called codkingHideDrawer() directly"); return; } } catch (e) {} if ((attempt || 0) < 40) { setTimeout(function() { tryHideDrawer((attempt || 0) + 1); }, 50); } }; tryHideDrawer(0); } } catch (e) { // fail silently } codkLog("✅ Iframe shown (CSS from Svelte)"); }; const hideIframe = (iframe) => { if (!iframe) return; iframe.setAttribute('data-visible', 'false'); // Fire global event when the iframe-based modal is hidden try { if (window.codkOtpModalOpen) { (window.parent || window).dispatchEvent(new Event("codking:otpModalClosed")); window.codkOtpModalOpen = false; codkLog("📣 Dispatched codking:otpModalClosed"); } } catch (e) { // fail silently } codkLog("✅ Iframe hidden (CSS from Svelte)"); }; if (!window.codkIframeDestroyListenerAdded) { window.codkIframeDestroyListenerAdded = true; window.addEventListener('message', (event) => { if ( event.data && typeof event.data === 'object' && event.data.type === 'CODK_DESTROY_IFRAME' ) { const iframeId = event.data.iframeId || 'codk-full-modal-svelte'; const targetIframe = document.getElementById(iframeId); if (targetIframe && targetIframe.parentNode) { codkLog("🧹 Removing iframe via CODK_DESTROY_IFRAME message:", iframeId); targetIframe.parentNode.removeChild(targetIframe); // If the modal was open, ensure we emit a close event on destroy try { if (window.codkOtpModalOpen) { (window.parent || window).dispatchEvent(new Event("codking:otpModalClosed")); window.codkOtpModalOpen = false; codkLog("📣 Dispatched codking:otpModalClosed (destroy)"); } } catch (e) { // fail silently } } else { codkLog("ℹ️ CODK_DESTROY_IFRAME: iframe not found (maybe already removed)", iframeId); } const wrapper = document.getElementById('codk-modal-wrapper'); if (wrapper) { wrapper.setAttribute('data-visible', 'false'); wrapper.style.display = 'none'; } iframe = null; window.codkSvelteInitialized = false; window.codkingSvelteReady = false; window.codkSvelteAppMounted = false; window.codkModalShowingSpinner = false; setTimeout(() => { iframe = ensureIframe(); if (typeof window.codkInitSvelteApp === "function") { window.codkInitSvelteApp(); } }, 50); return; } if ( event.data && typeof event.data === 'object' && event.data.type === 'CODK_REDIRECT_TO_CHECKOUT' ) { codkLog("🚀 Received CODK_REDIRECT_TO_CHECKOUT message"); if (typeof enableNormalCheckout === "function") { enableNormalCheckout(); } try { window.location.href = "/checkout"; } catch (redirectError) { console.warn("[app-embed.liquid] ⚠️ Parent redirect failed:", redirectError); } return; } }); } const ensureIframe = () => { let iframeElement = document.getElementById('codk-full-modal-svelte'); if (!iframeElement) { iframeElement = document.createElement('iframe'); iframeElement.id = 'codk-full-modal-svelte'; iframeElement.setAttribute('data-visible', 'false'); document.body.appendChild(iframeElement); codkLog("✅ Iframe created (CSS handled by Svelte)", { isMobile: isMobile() }); } else { codkLog("⏸️ Iframe already exists - reusing existing iframe"); } return iframeElement; }; let iframe = ensureIframe(); if (window.codkSvelteInitialized) { codkLog("⏸️ Svelte app already initialized - skipping duplicate initialization"); } else { window.codkSvelteInitialized = true; const initializeSvelteApp = () => { try { if (iframe.contentWindow && iframe.contentWindow.codkingSvelteReady) { codkLog("⏸️ Svelte app already ready in iframe - skipping initialization"); return; } try { const iframeDoc = iframe.contentWindow.document; if (iframeDoc && iframeDoc.body) { const existingScript = iframeDoc.querySelector('script[type="module"][src*="notifik_svelte"]'); if (existingScript) { codkLog("⏸️ Script tag already exists in iframe - skipping initialization (app may be loading)"); return; } } } catch (e) { codkLog("⚠️ Could not check iframe document (may not be ready yet):", e.message); } codkLog("🚀 Initializing iframe with Svelte app..."); const iframeDoc = iframe.contentWindow.document; iframeDoc.open(); const bodyStyle = isMobile() ? 'margin:0;padding:0;background:transparent;height:100vh;' : 'margin:0;padding:0;background:transparent;height:auto;min-height:100%;'; const htmlStyle = isMobile() ? 'background:transparent;height:100%;' : 'background:transparent;height:auto;min-height:100%;'; window.codkSvelteAppMounted = false; iframeDoc.write( '' + '' + 'COD King OTP' + '' + '' + '
    ' + '
    tag in theme.liquid 2. The quiz will automatically open when clicking any link with href="#kitchen-quiz" Example button/link: Find Your Perfect Colour ═══════════════════════════════════════════════════════════════════════════ -->

    Kitchen Energy Quiz

    Discover the colour that feels like home

    Your kitchen isn't just where you cook — it's where you reset, gather, and create. This quiz reveals the ceramic colour that matches your energy, your rhythm, and the way you move through life.

    Ceramic Colour Quiz
    1 of 4