<!DOCTYPE html><html lang="en"> <head><meta charset="utf-8"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="icon" type="image/png" href="/favicon.png"><link rel="icon" type="image/x-icon" href="/favicon.ico"><meta name="viewport" content="width=device-width"><link rel="canonical" href="https://topminisite.com/"><title>404 - Page Not Found</title><meta name="title" content="Page Not Found - TopMiniSite"><meta name="description" content="Sorry, the page you are looking for does not exist. Go back to the homepage."><link rel="sitemap" href="/sitemap-index.xml"><link rel="alternate" type="application/rss+xml" title="404 - Page Not Found" href="https://topminisite.com/feed.xml"><meta property="og:title" content="404 - Page Not Found"><meta property="og:description"><meta property="og:url" content="https://topminisite.com/"><meta property="og:image" content="https://topminisite.com/image.png"><meta property="twitter:card" content="summary_large_image"><meta property="twitter:url" content="https://topminisite.com/"><meta property="twitter:title" content="404 - Page Not Found"><meta property="twitter:description"><meta property="twitter:image" content="https://topminisite.com/image.png"><link as="font" crossorigin rel="preload" href="https://fonts.gstatic.com/s/poppins/v23/pxiGyp8kv8JHgFVrJJLucXtAOvWDSHFF.woff2" type="font/woff2"><link as="font" crossorigin rel="preload" href="https://fonts.gstatic.com/s/poppins/v23/pxiGyp8kv8JHgFVrJJLufntAOvWDSHFF.woff2" type="font/woff2"><link as="font" crossorigin rel="preload" href="https://fonts.gstatic.com/s/poppins/v23/pxiGyp8kv8JHgFVrJJLucHtAOvWDSA.woff2" type="font/woff2"><link as="font" crossorigin rel="preload" href="https://fonts.gstatic.com/s/poppins/v23/pxiDyp8kv8JHgFVrJJLmy15VFteOYktMqlap.woff2" type="font/woff2"><link as="font" crossorigin rel="preload" href="https://fonts.gstatic.com/s/poppins/v23/pxiDyp8kv8JHgFVrJJLmy15VGdeOYktMqlap.woff2" type="font/woff2"><link as="font" crossorigin rel="preload" href="https://fonts.gstatic.com/s/poppins/v23/pxiDyp8kv8JHgFVrJJLmy15VF9eOYktMqg.woff2" type="font/woff2"><link as="font" crossorigin rel="preload" href="https://fonts.gstatic.com/s/poppins/v23/pxiEyp8kv8JHgFVrJJbecnFHGPezSQ.woff2" type="font/woff2"><link as="font" crossorigin rel="preload" href="https://fonts.gstatic.com/s/poppins/v23/pxiEyp8kv8JHgFVrJJnecnFHGPezSQ.woff2" type="font/woff2"><link as="font" crossorigin rel="preload" href="https://fonts.gstatic.com/s/poppins/v23/pxiEyp8kv8JHgFVrJJfecnFHGPc.woff2" type="font/woff2"><link as="font" crossorigin rel="preload" href="https://fonts.gstatic.com/s/poppins/v23/pxiByp8kv8JHgFVrLEj6Z11lFd2JQEl8qw.woff2" type="font/woff2"><link as="font" crossorigin rel="preload" href="https://fonts.gstatic.com/s/poppins/v23/pxiByp8kv8JHgFVrLEj6Z1JlFd2JQEl8qw.woff2" type="font/woff2"><link as="font" crossorigin rel="preload" href="https://fonts.gstatic.com/s/poppins/v23/pxiByp8kv8JHgFVrLEj6Z1xlFd2JQEk.woff2" type="font/woff2"><style>@font-face {unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B09;font-weight: 400;font-style: italic;font-family: 'Poppins';font-display: swap;src: url(https://fonts.gstatic.com/s/poppins/v23/pxiGyp8kv8JHgFVrJJLucXtAOvWDSHFF.woff2)} @font-face {unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;font-weight: 400;font-style: italic;font-family: 'Poppins';font-display: swap;src: url(https://fonts.gstatic.com/s/poppins/v23/pxiGyp8kv8JHgFVrJJLufntAOvWDSHFF.woff2)} @font-face {unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;font-weight: 400;font-style: italic;font-family: 'Poppins';font-display: swap;src: url(https://fonts.gstatic.com/s/poppins/v23/pxiGyp8kv8JHgFVrJJLucHtAOvWDSA.woff2)} @font-face {unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B09;font-weight: 700;font-style: italic;font-family: 'Poppins';font-display: swap;src: url(https://fonts.gstatic.com/s/poppins/v23/pxiDyp8kv8JHgFVrJJLmy15VFteOYktMqlap.woff2)} @font-face {unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;font-weight: 700;font-style: italic;font-family: 'Poppins';font-display: swap;src: url(https://fonts.gstatic.com/s/poppins/v23/pxiDyp8kv8JHgFVrJJLmy15VGdeOYktMqlap.woff2)} @font-face {unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;font-weight: 700;font-style: italic;font-family: 'Poppins';font-display: swap;src: url(https://fonts.gstatic.com/s/poppins/v23/pxiDyp8kv8JHgFVrJJLmy15VF9eOYktMqg.woff2)} @font-face {unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B09;font-weight: 400;font-style: normal;font-family: 'Poppins';font-display: swap;src: url(https://fonts.gstatic.com/s/poppins/v23/pxiEyp8kv8JHgFVrJJbecnFHGPezSQ.woff2)} @font-face {unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;font-weight: 400;font-style: normal;font-family: 'Poppins';font-display: swap;src: url(https://fonts.gstatic.com/s/poppins/v23/pxiEyp8kv8JHgFVrJJnecnFHGPezSQ.woff2)} @font-face {unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;font-weight: 400;font-style: normal;font-family: 'Poppins';font-display: swap;src: url(https://fonts.gstatic.com/s/poppins/v23/pxiEyp8kv8JHgFVrJJfecnFHGPc.woff2)} @font-face {unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B09;font-weight: 600;font-style: normal;font-family: 'Poppins';font-display: swap;src: url(https://fonts.gstatic.com/s/poppins/v23/pxiByp8kv8JHgFVrLEj6Z11lFd2JQEl8qw.woff2)} @font-face {unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;font-weight: 600;font-style: normal;font-family: 'Poppins';font-display: swap;src: url(https://fonts.gstatic.com/s/poppins/v23/pxiByp8kv8JHgFVrLEj6Z1JlFd2JQEl8qw.woff2)} @font-face {unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;font-weight: 600;font-style: normal;font-family: 'Poppins';font-display: swap;src: url(https://fonts.gstatic.com/s/poppins/v23/pxiByp8kv8JHgFVrLEj6Z1xlFd2JQEk.woff2)} body { font-family: 'Poppins', '_font_fallback_515989345431', sans-serif; } @font-face { font-family: '_font_fallback_515989345431'; size-adjust: 100.00%; src: local('Arial'); ascent-override: 105.00%; descent-override: 35.00%; line-gap-override: 10.00%; }</style><script data-default-mode="light">
window.mode ??= (() => {
const defaultMode = document.currentScript.getAttribute('data-default-mode')
const storageKey = 'mode'
const store =
typeof localStorage !== 'undefined'
? localStorage
: { getItem: () => null, setItem: () => {} }
const mediaMatcher = window.matchMedia('(prefers-color-scheme: light)')
mediaMatcher.addEventListener('change', () => {
applyMode(mode.getMode())
})
function applyMode(mode) {
document.documentElement.dataset.mode = mode
document.documentElement.style.colorScheme = mode
}
function setMode(mode = defaultMode) {
store.setItem(storageKey, mode)
applyMode(mode)
}
function getMode() {
return store.getItem(storageKey) || defaultMode
}
return { setMode, getMode }
})()
mode.setMode(mode.getMode())
</script> <script type="module">document.addEventListener("astro:after-swap",()=>window.mode.setMode(window.mode.getMode()));</script><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="animate"><script type="module" src="/_astro/ClientRouter.astro_astro_type_script_index_0_lang.CtSceO8m.js"></script><script data-category="analytics" type="text/plain" data-service="Google Tag Manager">(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-M4CK5W73');</script><link href="/zoom-vanilla.js/zoom.css" rel="stylesheet"><link rel="stylesheet" href="/_astro/_page_.DL7IbyIm.css">
<link rel="stylesheet" href="/_astro/index.CmeLmptv.css"><script type="module" src="/_astro/page.JlAKmP-M.js"></script></head> <body> <div class="mx-auto flex min-h-[100svh] w-full max-w-[90%] flex-col justify-between md:max-w-3xl"> <header> <a href="#main" class="absolute -top-full left-8 px-2 py-2 focus:top-8">Skip to main content</a> <div class="flex justify-between py-4 sm:py-8"> <a href="/" class="text-accent flex items-center gap-2 text-4xl font-semibold"> <span class="inline-block text-4xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-orange-500 via-yellow-500 to-pink-500"> TopMiniSite </span> </a> <nav class="hidden flex-col justify-end sm:flex"> <ul class="flex gap-6"> <li class="flex flex-col justify-center"> <a href="/blog" class="flex items-center gap-1 whitespace-nowrap clickable" target="_self"> <span class> Blog </span> </a> </li> <li class="text-2xl"> <a href="/search/" class="flex items-center" aria-label="Search"> <svg width="1em" height="1em" class="clickable" data-icon="tabler:search"> <symbol id="ai:tabler:search" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 10a7 7 0 1 0 14 0a7 7 0 1 0-14 0m18 11l-6-6"/></symbol><use href="#ai:tabler:search"></use> </svg> </a> </li> <li class="text-2xl"> <dark-light-toggle> <button title="Toggle dark & light mode" class="flex items-center"> <svg width="1em" height="1em" class="clickable block dark:hidden" data-icon="tabler:moon"> <symbol id="ai:tabler:moon" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3h.393a7.5 7.5 0 0 0 7.92 12.446A9 9 0 1 1 12 2.992z"/></symbol><use href="#ai:tabler:moon"></use> </svg> <svg width="1em" height="1em" class="clickable hidden dark:block" data-icon="tabler:sun"> <symbol id="ai:tabler:sun" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12a4 4 0 1 0 8 0a4 4 0 1 0-8 0m-5 0h1m8-9v1m8 8h1m-9 8v1M5.6 5.6l.7.7m12.1-.7l-.7.7m0 11.4l.7.7m-12.1-.7l-.7.7"/></symbol><use href="#ai:tabler:sun"></use> </svg> </button> </dark-light-toggle> <script type="module">class a extends HTMLElement{connectedCallback(){const e=this.querySelector("button");if(!e)return;const l=window.matchMedia("(prefers-color-scheme: dark)").matches,o=window.localStorage.getItem("theme")||(l?"dark":"light");window.mode.setMode(o),e.setAttribute("aria-label",o);const d=()=>{const t=window.mode.getMode()==="light"?"dark":"light";window.mode.setMode(t),window.localStorage.setItem("theme",t),e.setAttribute("aria-label",t)};e.addEventListener("click",d)}}customElements.get("dark-light-toggle")||customElements.define("dark-light-toggle",a);</script> </li> </ul> </nav> <div class="flex items-center justify-center gap-4 text-2xl sm:hidden"> <dark-light-toggle> <button title="Toggle dark & light mode" class="flex items-center"> <svg width="1em" height="1em" viewBox="0 0 24 24" class="clickable block dark:hidden" data-icon="tabler:moon"> <use href="#ai:tabler:moon"></use> </svg> <svg width="1em" height="1em" viewBox="0 0 24 24" class="clickable hidden dark:block" data-icon="tabler:sun"> <use href="#ai:tabler:sun"></use> </svg> </button> </dark-light-toggle> <a href="/search/" aria-label="Search"> <svg width="1em" height="1em" viewBox="0 0 24 24" class="clickable text-xl" data-icon="tabler:search"> <use href="#ai:tabler:search"></use> </svg> </a> <mobile-nav-toggle> <button class="flex items-center" title="Toggle mobile nav" aria-label="closed"> <!-- Menu icon (shown when closed) --> <svg width="1em" height="1em" id="mobile-nav-icon-closed" class="block" data-icon="tabler:menu-2"> <symbol id="ai:tabler:menu-2" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"/></symbol><use href="#ai:tabler:menu-2"></use> </svg> <svg width="1em" height="1em" id="mobile-nav-icon-open" class="hidden" data-icon="tabler:x"> <symbol id="ai:tabler:x" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18 6L6 18M6 6l12 12"/></symbol><use href="#ai:tabler:x"></use> </svg> </button> </mobile-nav-toggle> <script type="module">class a extends HTMLElement{connectedCallback(){const t=document.querySelector("#mobile-nav"),e=this.querySelector("#mobile-nav-icon-closed"),s=this.querySelector("#mobile-nav-icon-open"),o=this.querySelector("button");if(!t||!e||!s||!o)return;const n=()=>!t.classList.contains("hidden"),l=()=>{t.classList.add("hidden"),e.classList.remove("hidden"),e.classList.add("block"),s.classList.remove("block"),s.classList.add("hidden"),o.setAttribute("aria-label","closed")},c=()=>{t.classList.remove("hidden"),e.classList.remove("block"),e.classList.add("hidden"),s.classList.remove("hidden"),s.classList.add("block"),o.setAttribute("aria-label","open")},i=()=>{n()?l():c()};o.addEventListener("click",i)}}customElements.get("mobile-nav-toggle")||customElements.define("mobile-nav-toggle",a);</script> </div> </div> <hr class="border-separate border-accent/75 undefined"> <div id="mobile-nav" class="hidden"> <nav class="flex-col justify-end py-6"> <ul class="flex flex-col items-center gap-2"> <li class="flex flex-col justify-center"> <a href="/blog" class="flex items-center gap-1 whitespace-nowrap clickable" target="_self"> <span class> Blog </span> </a> </li> </ul> </nav> <hr class="border-separate border-accent/75 undefined"> </div> </header> <aside class="scrollbar-hide fixed h-screen w-full max-w-sm -translate-x-full overflow-y-auto overscroll-y-none pr-8"> </aside> <main id="main" class="mt-6 sm:mt-12"> <div class="prose prose-lg max-w-full dark:prose-invert prose-h1:text-4xl prose-code:before:!content-none prose-code:after:!content-none sm:prose-h1:text-5xl prose-em:pr-[2px] mb-6 sm:mb-12"> <div class="flex flex-col items-center justify-center max-h-screen text-center"> <a href="/" aria-label="TopDealsNet.com" class="lg:text-5xl md:text-4xl text-3xl font-semibold text-gray-500 dark:text-slate-100">
TopDealsNet.com
</a> <h1 class="mt-6 text-9xl font-extrabold text-gray-500 tracking-widest" aria-hidden="true">404</h1> <div class="text-white px-4 py-1 text-sm font-semibold rounded-lg transform rotate-6 mt-4">
Page Not Found
</div> <a href="/" class="mt-6 inline-block text-sm font-medium text-[#FF6A3D] group focus:outline-none focus:ring"> <span class="absolute inset-0 transform translate-x-0.5 translate-y-0.5 group-hover:translate-x-0 group-hover:translate-y-0 transition"></span> <span class="relative block px-8 py-3 border border-[#FF6A3D] text-black dark:text-white font-bold rounded-lg">
Go Home
</span> </a> </div> </div> </main> <footer class="mt-auto"> <hr class="border-separate border-accent/75 undefined"> <div class="flex items-center flex-col md:flex-row justify-between gap-2 py-4 text-2xl sm:py-8"> <span class="text-base">© 2025 Copyright: topminisite.com</span> <div class="grow"></div> <div class="flex flex-col items-center justify-center gap-y-2 sm:flex-row sm:gap-x-4 sm:gap-y-0"> <a class="text-base text-center" href="/terms/" aria-label="Terms" rel="noopener">
Terms
</a> <a class="text-base text-center" href="/privacy-policy/" aria-label="Privacy Policy" rel="noopener">
Privacy
</a> <a href="#" data-cc="show-preferencesModal" class="text-base text-center">
Your privacy choices
</a> <a class="text-base text-center" href="/contact/" aria-label="Contact us" rel="noopener">
Contact us
</a> </div> <a class="flex flex-col justify-center" href="https://x.com/JordanKEurope" target="_blank" aria-label="Twitter" rel="noopener noreferrer"> <svg width="1em" height="1em" class="clickable" data-icon="tabler:brand-x"> <title>Twitter</title> <symbol id="ai:tabler:brand-x" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m4 4l11.733 16H20L8.267 4zm0 16l6.768-6.768m2.46-2.46L20 4"/></symbol><use href="#ai:tabler:brand-x"></use> </svg> </a> </div> </footer> </div> <scroll-progress-bar class="fixed top-0 w-full z-50"> <div class="h-1 w-0 bg-gradient-to-r from-orange-500 via-yellow-500 to-pink-500 transition-all duration-150 ease-linear"></div> </scroll-progress-bar> <script type="module">class o extends HTMLElement{connectedCallback(){const t=this.children[0];function c(){const e=document.body.scrollTop||document.documentElement.scrollTop,l=document.documentElement.scrollHeight-document.documentElement.clientHeight;return e/l*100}document.addEventListener("scroll",()=>{const e=c();t.style.width=`${e}%`})}}customElements.get("scroll-progress-bar")||customElements.define("scroll-progress-bar",o);</script><scroll-top-button class="fixed! right-4 bottom-4 z-10 hidden pr-2 sm:right-8 sm:bottom-8 lg:right-16 lg:bottom-16"> <button class="clickable flex items-center gap-2" title="Scroll to top" aria-label="Scroll to top"> <svg width="1em" height="1em" aria-hidden="true" class="text-4xl" data-icon="tabler:arrow-up"> <symbol id="ai:tabler:arrow-up" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 5v14m6-8l-6-6m-6 6l6-6"/></symbol><use href="#ai:tabler:arrow-up"></use> </svg> </button> </scroll-top-button> <script type="module">class n extends HTMLElement{connectedCallback(){const t=this.querySelector("button");if(!t)return;function e(){const o=document.documentElement.clientHeight;return(document.body.scrollTop||document.documentElement.scrollTop)>o}t.addEventListener("click",()=>{document.body.scrollTop=0,document.documentElement.scrollTop=0}),document.addEventListener("scroll",()=>{e()?this.classList.remove("hidden"):this.classList.add("hidden")})}}customElements.get("scroll-top-button")||customElements.define("scroll-top-button",n);</script> <button class="copy-button" title="Copy"> <svg width="1em" height="1em" class="copy-btn hidden" data-icon="tabler--copy" data-icon="tabler:copy"> <symbol id="ai:tabler:copy" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M7 9.667A2.667 2.667 0 0 1 9.667 7h8.666A2.667 2.667 0 0 1 21 9.667v8.666A2.667 2.667 0 0 1 18.333 21H9.667A2.667 2.667 0 0 1 7 18.333z"/><path d="M4.012 16.737A2 2 0 0 1 3 15V5c0-1.1.9-2 2-2h10c.75 0 1.158.385 1.5 1"/></g></symbol><use href="#ai:tabler:copy"></use> </svg> <svg width="1em" height="1em" class="copy-success hidden" data-icon="tabler--check" data-icon="tabler:check"> <symbol id="ai:tabler:check" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m5 12l5 5L20 7"/></symbol><use href="#ai:tabler:check"></use> </svg> </button> <script data-astro-rerun>
function setupCopyCodeButtons() {
document.querySelectorAll('.astro-code-header > button').forEach((btn) => {
btn.addEventListener('click', async () => {
const code = btn.closest('.astro-code-header').nextElementSibling.querySelector('.astro-code code');
const copyIcon = btn.querySelector('.copy-btn');
const successIcon = btn.querySelector('.copy-success');
if (!code || !copyIcon || !successIcon) return;
await navigator.clipboard.writeText(code.innerText);
// Toggle visibility
copyIcon.classList.add('hidden');
successIcon.classList.remove('hidden');
// Revert after 1 second
setTimeout(() => {
copyIcon.classList.remove('hidden');
successIcon.classList.add('hidden');
}, 1000);
});
});
}
setupCopyCodeButtons();
</script> <script data-astro-rerun src="/zoom-vanilla.js/zoom-vanilla.min.js"></script> <noscript> <iframe src="https://www.googletagmanager.com/ns.html?id=GTM-M4CK5W73" data-category="analytics" data-service="Google Tag Manager" height="0" width="0" style="display:none;visibility:hidden"></iframe> </noscript> </body> </html> <script type="text/plain" data-category="analytics" data-service="Google Analytics">
if (!window.pushToDataLayer) {
window.pushToDataLayer = () => {
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: "page_view",
page_path: window.location.pathname,
page_url: window.location.href,
page_title: document.title
});
};
document.addEventListener("astro:page-load", window.pushToDataLayer);
} else {
document.removeEventListener("astro:page-load", window.pushToDataLayer);
document.addEventListener("astro:page-load", window.pushToDataLayer);
}
</script>