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)

    5 Ways to Practice Sustainability at Home

    Gone are the days when we were just learning about global warming and greenhouse gases. Sustainability is not merely a global buzzword; We have reached the melting point where it is a critical practice that must be embraced at the grassroots level – within our own homes. In a country like India, where the population density is high, and resources are often strained, practicing sustainability at home becomes imperative.

    As individuals seek to reduce their environmental footprint, one area that often goes overlooked is the cookware we use daily. Single-use plastics, including disposable cutlery and kitchenware, contribute to the global plastic pollution crisis. The Central Pollution Control Board (CPCB) in India estimates that the country generates over 25,000 tonnes of plastic waste daily. Choosing sustainable kitchenware alternatives will most certainly help curb the use of single-use plastics and mitigate the environmental impact of plastic pollution.

    While this may be a small start, a lot more can be done. Let’s explore the world of cookware sustainability at home and gain insights into making eco-friendly culinary choices.

    1. Choose Timeless, Durable Materials:

    The materials used in cookware production play a crucial role in its overall sustainability. Opting for timeless, durable materials not only ensures longevity but also reduces the need for frequent replacements. Stainless steel, aluminum, and cast iron are excellent choices for sustainable cookware options since they are known for their durability and ability to withstand high temperatures. These materials have the added advantage of being recyclable at the end of their lifecycle, minimizing environmental impact. Vinod Cookware products are made from high-quality and food-grade materials which makes them last longer. Therefore, they not only make an eco-friendly choice but also a budget-friendly one.

    1. PFOA Free Non-Stick Cookware:

    Traditional non-stick coatings often contain harmful chemicals like PFOA, which can release toxic fumes when overheated. To address this concern, consider non-stick cookware that prioritizes health and sustainability. Non-stick cookware manufactured by Vinod Cookware is free from PFOA, heavy metals, and harmful chemicals, providing a safer and more environmentally friendly choice.

    1. Multi-Functional Cookware:

    Reducing the number of individual cookware pieces in your kitchen not only saves space but also contributes to sustainability. Investing in multi-functional cookware, such as a 3-in-1 Pressure Cooker from Vinod Cookware that can be used for simmering, frying, baking, and more, minimizes the need for a variety of specialized pots and pans. This not only reduces the demand for raw materials but also saves energy during the manufacturing process.

    1. Energy-Efficient Cooking:

    Sustainability extends beyond the materials of the cookware to the way we use them. Energy-efficient cooking practices can significantly reduce our environmental impact. Choose cookware that heats up quickly and evenly, allowing you to use lower heat settings. Use lids on saucepans and pots to help retain heat. This helps reduce cooking time and energy consumption. By adopting mindful cooking techniques, you can contribute to a more sustainable kitchen.

    1. Minimalist Kitchen Practices:

    Embracing a minimalist approach to your kitchen can lead to more sustainable practices. Having fewer cookware items encourages mindful consumption, reduces clutter, and minimizes the need for excessive resources in the production of kitchen tools. Consider what you truly need in your kitchen and invest in high-quality, versatile cookware from Vinod Cookware that serves multiple purposes.

    Sustainability is not just a global movement; it is a personal responsibility, particularly in a country like India which faces unique environmental challenges. By embracing sustainable practices at home, individuals can make a tangible impact on resource conservation, waste reduction, and overall environmental health. Adopting sustainable cookware practices at home involves a combination of mindful material choices, energy-efficient cooking practices, and a commitment to the entire lifecycle of your kitchen tools. By making informed decisions about the cookware you use, you not only contribute to a greener planet but also create a healthier and more sustainable kitchen for yourself and future generations.

    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