Skip to content

Latest commit

 

History

26 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

<script src="https://elfsightcdn.com/platform.js" async></script>
<iframe src="https://msha.ke/debeatzgh#links-5" width="100%" height="400" frameborder="0" allowfullscreen></iframe> <style> :root { --nav-bg: rgba(13, 17, 23, 0.9); --nav-border: #30363d; --nav-accent: #58a6ff; --nav-hover: #1f6feb; --glow-color: rgba(88, 166, 255, 0.5); }
    /* Dock Container */
    .nav-dock {
        position: fixed;
        right: 20px;
        top: 50%;
        transform: translateY(-50%);
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 15px;
        z-index: 10000;
    }

    /* Launcher (>) */
    #nav-launcher {
        width: 38px;
        height: 38px;
        background: var(--nav-bg);
        border: 1px solid var(--nav-border);
        color: var(--nav-accent);
        border-radius: 10px;
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 1.4rem;
        backdrop-filter: blur(8px);
        transition: all 0.3s ease;
        box-shadow: 0 4px 15px rgba(0,0,0,0.4);
    }

    #nav-launcher.open {
        color: white;
        background: var(--nav-hover);
        border-color: var(--nav-accent);
    }

    /* Button Group */
    .nav-group {
        display: flex;
        flex-direction: column;
        gap: 10px;
        pointer-events: none;
    }

    .nav-group.active {
        pointer-events: auto;
    }

    .nav-btn {
        width: 34px;
        height: 34px;
        background: var(--nav-bg);
        border: 1px solid var(--nav-border);
        color: #c9d1d9;
        border-radius: 50%;
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        opacity: 0;
        transform: scale(0.5) translateX(30px);
        transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
        text-decoration: none;
        position: relative;
    }

    /* Active/Open State for Buttons */
    .nav-group.active .nav-btn {
        opacity: 1;
        transform: scale(1) translateX(0);
    }

    /* Heartbeat Glow Animation */
    @keyframes heartbeatGlow {
        0% { box-shadow: 0 0 0 0 var(--glow-color); transform: scale(1); }
        50% { box-shadow: 0 0 15px 5px var(--glow-color); transform: scale(1.1); }
        100% { box-shadow: 0 0 0 0 var(--glow-color); transform: scale(1); }
    }

    .heartbeat-active {
        animation: heartbeatGlow 1.2s ease-in-out 2; /* Runs twice on open */
    }

    .nav-btn:hover {
        background: var(--nav-hover);
        color: white;
        border-color: var(--nav-accent);
    }

    /* Staggered transition delays for a smooth "pop-in" effect */
    .nav-group.active .nav-btn:nth-child(1) { transition-delay: 0.1s; }
    .nav-group.active .nav-btn:nth-child(2) { transition-delay: 0.2s; }
    .nav-group.active .nav-btn:nth-child(3) { transition-delay: 0.3s; }

    .nav-btn svg { width: 18px; height: 18px; }
</style>
<div class="nav-dock">
    <button id="nav-launcher" onclick="toggleNav()">›</button>

    <div class="nav-group" id="navGroup">
        <button class="nav-btn" onclick="window.scrollTo({top: 0, behavior: 'smooth'})">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="18 15 12 9 6 15"></polyline></svg>
        </button>

        <a href="https://debeatzgh1.github.io/posts/" class="nav-btn">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>
        </a>

        <button class="nav-btn" onclick="window.scrollTo({top: document.body.scrollHeight, behavior: 'smooth'})">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
        </button>
    </div>
</div>

<script>
    function toggleNav() {
        const group = document.getElementById('navGroup');
        const launcher = document.getElementById('nav-launcher');
        const buttons = document.querySelectorAll('.nav-btn');
        
        const isOpen = group.classList.toggle('active');
        launcher.classList.toggle('open');
        launcher.innerText = isOpen ? '‹' : '›';

        if (isOpen) {
            // Trigger heartbeat animation on each button when opened
            buttons.forEach((btn, index) => {
                // Slight delay before heartbeat starts to match the pop-in
                setTimeout(() => {
                    btn.classList.add('heartbeat-active');
                }, (index + 1) * 200);

                // Remove class after animation ends so it can re-trigger next time
                setTimeout(() => {
                    btn.classList.remove('heartbeat-active');
                }, 3000);
            });
        }
    }
</script>
<title>Multi-Tab Launcher</title> <script src="https://cdn.tailwindcss.com"></script> <style> .modal-bg{ display:none; position:fixed; inset:0; background:rgba(0,0,0,.75); backdrop-filter:blur(6px); z-index:9999; } .modal-box{ width:100%; height:100%; background:#fff; display:flex; flex-direction:column; } .tabs{ display:flex; gap:6px; padding:10px; background:#0f172a; } .tab{ padding:8px 14px; border-radius:10px; font-size:13px; font-weight:700; color:#cbd5f5; cursor:pointer; } .tab.active{ background:#2563eb; color:#fff; } .controls{ display:flex; gap:8px; padding:8px 10px; background:#020617; } .ctrl-btn{ background:rgba(255,255,255,.15); color:#fff; padding:6px 12px; border-radius:8px; font-size:12px; font-weight:700; cursor:pointer; } iframe{ flex:1; width:100%; border:none; } .mobile-tabs{display:none} @media (max-width:768px){ .tabs{display:none} .mobile-tabs{ display:flex; justify-content:space-around; background:#020617; padding:6px 0; } .mobile-tab{ color:#cbd5f5; font-size:12px; font-weight:700; padding:6px 8px; } .mobile-tab.active{ color:#fff; background:#2563eb; border-radius:8px; } } </style>

AI Hub

All your platforms in one smart workspace

Launch Hub
<!-- Desktop Tabs -->
<div class="tabs">
  <div class="tab active" data-tab="wordpress" onclick="switchTab('wordpress')">Web</div>
  <div class="tab" data-tab="blogger" onclick="switchTab('blogger')">Blog</div>
  <div class="tab" data-tab="offers" onclick="switchTab('offers')">Offers</div>
  <div class="tab" data-tab="sign" onclick="switchTab('sign')">Sign</div>
  <div class="tab" data-tab="suggest" onclick="switchTab('suggest')">Suggest</div>
</div>

<!-- Controls -->
<div class="controls">
  <div class="ctrl-btn" onclick="goBack()">⟵</div>
  <div class="ctrl-btn" onclick="goForward()">⟶</div>
  <div class="ctrl-btn" onclick="toggleFS()">⛶</div>
  <div class="ctrl-btn" onclick="closeLauncher()">✕</div>
</div>

<iframe id="frame"></iframe>

<!-- Mobile Tabs (Icons open Blogspot too) -->
<div class="mobile-tabs">
  <div class="mobile-tab active" data-tab="wordpress" onclick="switchTab('wordpress')">🌐</div>
  <div class="mobile-tab" data-tab="blogger" onclick="switchTab('blogger')">📝</div>
  <div class="mobile-tab" data-tab="offers" onclick="switchTab('offers')">🎁</div>
  <div class="mobile-tab" data-tab="sign" onclick="switchTab('sign')">✅</div>
  <div class="mobile-tab" data-tab="suggest" onclick="switchTab('suggest')">💡</div>
</div>
<script> const modal = document.getElementById("modal"); const frame = document.getElementById("frame"); const tabs = document.querySelectorAll(".tab"); const mobileTabs = document.querySelectorAll(".mobile-tab"); /* ✅ CLEAN & VALID URL MAP */ const URLS = { wordpress: "https://debeatzgh.wordpress.com/", blogger: "https://debeatzgh1.blogspot.com/", offers: "https://msha.ke/debeatzgh/", sign: "https://digimartgh.blogspot.com/", suggest: "https://beatzde4.blogspot.com/" }; let historyStack = []; let historyIndex = -1; function load(url){ frame.src = url; if(historyStack[historyIndex] !== url){ historyStack = historyStack.slice(0, historyIndex + 1); historyStack.push(url); historyIndex++; } } function openLauncher(tab){ modal.style.display="flex"; switchTab(tab); } function closeLauncher(){ modal.style.display="none"; frame.src=""; historyStack=[]; historyIndex=-1; if(document.fullscreenElement) document.exitFullscreen(); } function switchTab(tab){ tabs.forEach(t=>t.classList.remove("active")); mobileTabs.forEach(t=>t.classList.remove("active")); document.querySelectorAll(`[data-tab="${tab}"]`) .forEach(t=>t.classList.add("active")); load(URLS[tab]); } function goBack(){ if(historyIndex > 0){ historyIndex--; frame.src = historyStack[historyIndex]; } } function goForward(){ if(historyIndex < historyStack.length - 1){ historyIndex++; frame.src = historyStack[historyIndex]; } } function toggleFS(){ const el = document.getElementById("modalBox"); if(!document.fullscreenElement) el.requestFullscreen(); else document.exitFullscreen(); } </script> <script> window.__ow = window.__ow || {}; window.__ow.organizationId = "8dbd48aa-17f7-49aa-b323-23eb6ad358fa"; window.__ow.integration_name = "manual_settings"; window.__ow.product_name = "openwidget"; ;(function(n,t,c){function i(n){return e._h?e._h.apply(null,n):e._q.push(n)}var e={_q:[],_h:null,_v:"2.0",on:function(){i(["on",c.call(arguments)])},once:function(){i(["once",c.call(arguments)])},off:function(){i(["off",c.call(arguments)])},get:function(){if(!e._h)throw new Error("[OpenWidget] You can't use getters before load.");return i(["get",c.call(arguments)])},call:function(){i(["call",c.call(arguments)])},init:function(){var n=t.createElement("script");n.async=!0,n.type="text/javascript",n.src="https://cdn.openwidget.com/openwidget.js",t.head.appendChild(n)}};!n.__ow.asyncInit&&e.init(),n.OpenWidget=n.OpenWidget||e}(window,document,[].slice)) </script>

You need to enable JavaScript to use the communication tool powered by OpenWidget

About

Here are designed content and experiences that command attention. Utilising the latest tools, technologies and design principles enables this site created with solutions that are relevant, engaging, and most importantly, put the user at the core of the experience.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors