header

The latest update has been completed 66%
HTML , CSS , javascript , bootstrap 5.3
<header class="di-container-header">
<div id="di-header-hr1">
  <div class="di-top-link-top">
    <p>Welcome to Martfury Online Store !</p>Thank you for reading this post, don't forget to subscribe!
    <ul class="di-cont-link">
      <li class="di-top-link"><a href="#">Track Order</a></li>
      <li class="di-top-link"><a href="">Track Order</a></li>
      <li>
        <div class="dropdown">
          <button class="dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
            <i class="fi fi-rr-world"></i>
            language
          </button>
          <ul class="dropdown-menu slideup-to-down">
            <li><button class="dropdown-item" type="button" onclick="changeLanguage('en')"> English</button>
            </li>
            <li><button class="dropdown-item" type="button" onclick="changeLanguage('ar')">sa العربية</button>
            </li>
          </ul>
        </div>
      </li>
      <li>
        <div class="dropdown">
          <button class="dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
            <i class="fi fi-rr-usd-circle"></i>
            Currency
          </button>
          <ul class="dropdown-menu slideup-to-down">
            <li><button class="dropdown-item" type="button" onclick="changeCurrency('USD')"> US Dollar
                (USD)</button></li>
            <li><button class="dropdown-item" type="button" onclick="changeCurrency('EUR')"> Euro (EUR)</button>
            </li>
            <li><button class="dropdown-item" type="button" onclick="changeCurrency('GBP')"> British Pound
                (GBP)</button></li>
            <li><button class="dropdown-item" type="button" onclick="changeCurrency('JPY')"> Japanese Yen
                (JPY)</button></li>
            <li><button class="dropdown-item" type="button" onclick="changeCurrency('CHF')"> Swiss Franc
                (CHF)</button></li>
            <li><button class="dropdown-item" type="button" onclick="changeCurrency('CNY')"> Chinese Yuan
                (CNY)</button></li>
          </ul>
        </div>
      </li>
    </ul>
  </div>
  <div class="di-middle-link">
    <div class="logo"><img alt="" height="80px" id="header-logo"></div>
    <div class="input-group mb-3">
      <input type="text" class="form-control" placeholder="Recipient's username" aria-label="Recipient's username"
        aria-describedby="button-addon2">
      <button class="btn btn-outline-secondary" type="button" id="button-addon2">Button</button>
    </div>
    <div class="di-container-link-profile">
      <a href=""><i class="fi fi-rr-comment"></i></a>
      <a href=""><i class="fi fi-rr-shopping-cart"></i></a>
      <a href=""><i class="fi fi-rr-comment-heart"></i></a>
      <a href="/login.php"><i class="fi fi-rr-user">Login</a></i>
      <a href=""><i class="fi fi-rr-exit"></i></a>
    </div>
  </div>
  <div class="di-lowest-link">
    <nav class="navbar navbar-expand-lg navbar-dark">
      <div class="container di-container-link-profile-mobile">
        <div class="di-col">
          <div class="di-menu-mobile-block">
            <button class="btn btn-outline-light d-lg-none" type="button" data-bs-toggle="offcanvas"
              data-bs-target="#offcanvasMenu">
              <i class="fi fi-rr-apps"></i>
            </button>
            <a href=""><i class="fi fi-rr-comment"></i></a>
            <a href=""><i class="fi fi-rr-shopping-cart"></i></a>
            <a href=""><i class="fi fi-rr-comment-heart"></i></a>
            <a href="/login.php"><i class="fi fi-rr-user">Login</a></i>
          </div>
          <div class="collapse navbar-collapse">
            <ul class="navbar-nav">
              <li class="nav-item dropdown">
                <a class="nav-link dropdown-toggle" href="#" id="categories">Categories</a>
                <ul class="dropdown-menu" id="navbarMenu"></ul>
              </li>
            </ul>
          </div>
        </div>
        <ul class="di-menu-pag-disktop">
          <li><a href="#">Home</a></li>
          <li><a href="#">Categories</a></li>
          <li><a href="#">Special</a></li>
          <li><a href="#">Blog</a></li>
          <li><a href="#">About us</a></li>
          <li><a href="/contact-us.php">Contact us</a></li>
        </ul>
        <a class="phone-number" href="#">Hotline : 1-800-234-5678</a>
      </div>
    </nav>
    <div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvasMenu">
      <div class="offcanvas-header">
        <h5 class="offcanvas-title">Gaming Store</h5>
        <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas"></button>
      </div>
      <div class="offcanvas-body">
        <ul class="di-menu-pag">
          <li><a href="#">Home</a></li>
          <li><a href="#">Categories</a></li>
          <li><a href="#">Special</a></li>
          <li><a href="#">Blog</a></li>
          <li><a href="#">About us</a></li>
          <li><a href="#">Contact us</a></li>
        </ul>
        <hr>
        <ul class="list-group" id="offcanvasMenuList"></ul>
      </div>
    </div>
  </div>
</div>
</header>
import { EVENTS, waitForEvents } from "/js/utils/events.js";
import { uiBuilder } from "./header-builder.js";

waitForEvents([EVENTS.CONFIG_LOADED], async function () {
  await uiBuilder();
  await onInit();
  document.dispatchEvent(new Event(EVENTS.HEADER_LOADED));
});

async function onInit() {
  generateMenu();
  initHeaderStoreInformation();
}
function initHeaderStoreInformation() {
  const storeInformation = SiteConfig.store_information;

  const logo = storeInformation.logo;

  const logoElement = document.getElementById("header-logo");

  if (logoElement) {
    logoElement.src = logo;
  }
}

const menuData = [
  {
    title: 'Xbox <span class="badge text-bg-info">Info</span>',
    // icon: '<i class="fi fi-rr-joystick"></i>',
    icon: '<img decoding="async" src="/img/1234.png" width="30px"></img>',
    subMenus: [
      {
        title: "",
        items: [{ image: "../img/m6.jpg" }],
      },
      {
        title: "",
        items: [{ image: "../img/s1.jpg" }],
      },
      {
        title: "",
        items: [{ image: "../img/t1.jpg" }],
      },
      {
        title: "",
        items: [{ image: "../img/m5.webp" }],
      },
      {
        title: "",
        items: [{ image: "../img/m5.webp" }],
      },
      {
        title: "",
        items: [{ image: "../img/m2.avif" }],
      },
      {
        title: "",
        items: [{ image: "../img/132456.jpg" }],
      },
      {
        title: "",
        items: [{ image: "../img/321465798789879.jpg" }],
      },
      {
        title: "",
        items: [{ image: "../img/123456789456123.png" }],
      },
      {
        title: "Upcoming Releases",
        items: [
          "Avowed",
          "Starfield",
          "Hellblade 2",
          "The Outer Worlds 2",
          "Perfect Dark",
          "Indiana Jones",
          "Everwild",
        ],
      },
      {
        title: "Upcoming Releases",
        items: [
          "Avowed",
          "Starfield",
          "Hellblade 2",
          "The Outer Worlds 2",
          "Perfect Dark",
          "Indiana Jones",
          "Everwild",
        ],
      },
    ],
  },
  {
    title: "Gaming Merchandise",
    icon: '<i class="fi fi-rr-dice-d6"></i>',
    subMenus: [
      {
        title: "Clothing",
        items: [
          "Gaming Hoodies",
          "T-Shirts",
          "Hats",
          "Socks",
          "Jackets",
          "Sweatpants",
          "Sneakers",
        ],
      },
      {
        title: "Decor",
        items: [
          "Wall Posters",
          "LED Light Strips",
          "Game-Themed Rugs",
          "Desk Mats",
          "Gaming Wall Art",
          "Themed Neon Signs",
        ],
      },
      {
        title: "",
        items: [{ image: "../img/321465798789879.jpg" }],
      },
      {
        title: "",
        items: [{ image: "../img/1234.png" }],
      },
    ],
  },
  {
    title: 'PC Gaming <span class="badge text-bg-danger">Danger</span>',
    icon: '<i class="fi fi-rr-computer"></i>',
    subMenus: [
      {
        title: "Gaming Hardware",
        items: [
          "High-Performance Graphics Cards",
          "Overclocked Processors",
          "RGB Motherboards",
          "Ultra-Fast RAM Modules",
          "Platinum Certified Power Supplies",
        ],
      },
      {
        title: "Gaming Peripherals",
        items: [
          "Mechanical RGB Keyboards",
          "Wireless Gaming Mice",
          "Professional Streaming Microphones",
          "High-Resolution Gaming Monitors",
          "Adjustable Ergonomic Gaming Chairs",
        ],
      },
    ],
  },
  {
    title: "Streaming Gear",
    icon: '<i class="fi fi-rr-live-alt"></i>',
    subMenus: [
      {
        title: "Capture Devices",
        items: [
          "Elgato 4K60 Pro",
          "AverMedia Live Gamer Duo",
          "Razer Ripsaw HD",
          "Blackmagic ATEM Mini Pro",
        ],
      },
      {
        title: "Lighting & Green Screens",
        items: [
          "Elgato Key Light",
          "Neewer Softbox Studio Lights",
          "Foldable Green Screens",
          "RGB LED Smart Panels",
        ],
      },
    ],
  },
  {
    title: 'VR Gaming <span class="attention-blink">Discounts 30%</span>',
    icon: '<i class="fi fi-rr-vr-cardboard"></i>',
    subMenus: [
      {
        title: "VR Headsets",
        items: [
          "Oculus Quest Pro",
          "HTC Vive Pro 2",
          "Valve Index Full Kit",
          "Pimax 8K VR Headset",
        ],
      },
      {
        title: "VR Accessories",
        items: [
          "360° Motion Tracking Sensors",
          "Haptic Feedback VR Gloves",
          "Omnidirectional VR Treadmills",
          "High-Resolution VR Lenses",
        ],
      },
    ],
  },
  {
    title: "Gaming Accessories",
    icon: '<i class="fi fi-rr-dice-alt"></i>',
    subMenus: [
      {
        title: "High-End Gaming Controllers",
        items: [
          "Elite Series 2 Controllers",
          "SCUF Customizable Controllers",
          "Arcade Fight Sticks",
          "Adaptive Gaming Controllers",
        ],
      },
      {
        title: "Headsets & Audio Gear",
        items: [
          "Wireless Surround Sound Gaming Headsets",
          "Studio-Quality Gaming Microphones",
          "Noise-Canceling Streaming Headphones",
        ],
      },
    ],
  },
  {
    title: 'Mobile Gaming <span class="badge text-bg-info">Info</span>',
    icon: '<i class="fi fi-rr-mobile-hand"></i>',
    subMenus: [
      {
        title: "Mobile Devices",
        items: [
          "Razer Phone",
          "ASUS ROG Phone",
          "Black Shark",
          "iPhone Gaming Accessories",
        ],
      },
      {
        title: "Mobile Accessories",
        items: [
          "Mobile Controllers",
          "Cooling Fans",
          "Gaming Earbuds",
          "Power Banks",
        ],
      },
    ],
  },
  {
    title: "Esports & Competitive Gaming",
    icon: '<i class="fi fi-rr-dice-d10"></i>',
    subMenus: [
      {
        title: "Popular Esports Games",
        items: [
          "League of Legends",
          'Dota 2 <span class="badge text-bg-warning">Warning</span>',
          "CS:GO",
          "Valorant",
          "Overwatch",
        ],
      },
      {
        title: "Esports Gear",
        items: [
          "High-Refresh Monitors",
          "Pro Gaming Mice",
          "Noise-Canceling Headsets",
          "Esports Jerseys",
        ],
      },
    ],
  },
  {
    title: "Board Games & Tabletop",
    icon: "<i class='fi fi-rr-dice'></i>",
    subMenus: [
      {
        title: "Popular Board Games",
        items: ["Catan", "Risk", "Gloomhaven", "Monopoly", "Ticket to Ride"],
      },
      {
        title: "Tabletop RPGs",
        items: ["Dungeons & Dragons", "Pathfinder", "Warhammer 40K"],
      },
    ],
  },
  {
    title: 'Racing Games <span class="badge text-bg-warning">Warning</span>',
    icon: "<i class='fi fi-rr-flag'></i>",
    subMenus: [
      {
        title: "Popular Racing Games",
        items: [
          'Forza Horizon 5 <span class="badge text-bg-warning">Warning</span>',
          "Gran Turismo 7",
          "Need for Speed Heat",
          "Assetto Corsa",
          "F1 2023",
        ],
      },
      {
        title: "Racing Accessories",
        items: [
          "Racing Wheels",
          "Pedals",
          "VR Racing Seats",
          "Motion Simulators",
        ],
      },
    ],
  },
];

function generateMenu() {
  const navbarMenu = document.getElementById("navbarMenu");
  const offcanvasMenu = document.getElementById("offcanvasMenuList");

  menuData.forEach((menu, index) => {
    let dropdownItem = document.createElement("li");
    dropdownItem.className = "dropdown-item hover-bg-color";

    dropdownItem.innerHTML = `

             <div class="di-menu-desk-top-col"><a href="#" class="di-bg-hover-color">${
               menu.icon ? menu.icon + " " : ""
             }${
      menu.title
    }</a><i class="fi di-fi fi-rr-arrow-small-right"></i></div>
          <ul class="submenu">
            ${menu.subMenus
              .map(
                (subMenu) => `
              <li>
                <a href="#"><strong>${subMenu.title}</strong></a>
                <ul>
                  ${subMenu.items
                    .map((item) => {
                      let content = "";
                      if (typeof item === "object" && item.image) {
                        content = `<a href="#"><img decoding="async" src="${item.image}" alt="Image" width="50"></a>`;
                      } else {
                        content = `<a href="#">${item}</a>`;
                      }
                      return `<li>${content}</li>`;
                    })
                    .join("")}
                </ul>
              </li>
            `
              )
              .join("")}
          </ul>
        `;
    navbarMenu.appendChild(dropdownItem);

    let offcanvasItem = document.createElement("li");
    offcanvasItem.className = "list-group-item";

    offcanvasItem.innerHTML = `
          <a href="#" class="d-flex justify-content-between" onclick="toggleDropdown(event, 'offcanvasMenu${index}')">
            <div>${menu.icon ? menu.icon + " " : ""}${menu.title}</div>
            <div class="di-icons-mobile-col"><i class="fi fi-rr-angle-small-down"></i></div>
          </a>
          <ul id="offcanvasMenu${index}" class="submenu list-group">
            ${menu.subMenus
              .map(
                (subMenu) => `
              <li>
                <a href="#"><strong>${subMenu.title}</strong></a>
                <ul class="list-group">
                  ${subMenu.items
                    .map((item) => {
                      let content = "";
                      if (typeof item === "object" && item.image) {
                        content = `<a href="#"><img decoding="async" src="${item.image}" alt="Image" width="50"></a>`;
                      } else {
                        content = `<a href="#">${item}</a>`;
                      }
                      return `<li class="list-group-item">${content}</li>`;
                    })
                    .join("")}
                </ul>
              </li>
            `
              )
              .join("")}
          </ul>
        `;
    offcanvasMenu.appendChild(offcanvasItem);
  });
}

More Info

Greatly hearted has who believe. Drift allow green son walls years for blush. Sir margaret drawings repeated recurred exercise.

You have been successfully Subscribed! Ops! Something went wrong, please try again.

Quick Links

Services

About Me

Projects

Contact

Address

+1-(360) 416-7563

Phone Number

FelicitymcDowell@mail.com

Email Address

© 2024 Created with Royal Elementor Addons