Logos

Name : Logos / mini / Logo with case study link
This is a mini component used within the main component to create a system of logos with similar properties.
Name: Logos / Group Logos

Options:

Heading – You can edit the heading and control its visibility.
Logos - You can add or replace up to 14 logos (you can also hide them).
Each logo option allows you to add a link and a tag, which can be shown or hidden via properties.
Trusted by the world’s most innovative companies
Name: Logos / Heading / Grid
Options: You can add or replace up to 8 logos (you can also hide them).

Options:

Heading – You can edit the heading and control its visibility.

Background - Can be updated

Logos - You can add or replace up to 8 logos (you can also hide them).
Trusted by the world’s leading brands
Name: Logos / Single Row

Options:

Logos - You can add or replace up to 5 logos (you can also hide them).

Background - Can be updated

Name: Logos / Marquee / 16 logos

Options:

Logos - You can add or replace up to 16 logos (you can also hide them).

In Head Tag

<style>
/* CSS Keyframe Animation */
@keyframes translateX { 
	to {
    transform: translateX(-100%);
  }
}

[data-css-marquee-list] {
  animation: translateX 40s linear;
  animation-iteration-count: infinite;
  animation-play-state: paused;
}
</style>

In Before Body Tag

<script src="https://cdn.jsdelivr.net/npm/gsap@3.13.0/dist/gsap.min.js"></script>

<!-- GSAP Animation -->
<script>
  window.addEventListener('load', () => {
    const timeline = gsap.timeline({
      defaults: { delay:1, duration: 0.8, ease: "power1.inOut" }
    });
    // Animate all hero layers with stagger
    timeline.fromTo(".food-bev__second-img",
      { y: -20, opacity: 0 },
      { y: 0, opacity: 1, stagger: 2 },
      "+=0.1"
    );
  });
</script>

<!-- Marquee -->
<script>
function initCSSMarquee() {
  const pixelsPerSecond = 50; // Set desired scroll speed (pixels per second)
  const marquees = document.querySelectorAll('[data-css-marquee]');
  
  marquees.forEach(marquee => {
    // Remove any previously duplicated marquee lists (cleanup)
    marquee.querySelectorAll('.marquee-duplicate').forEach(el => el.remove());

    marquee.querySelectorAll('[data-css-marquee-list]').forEach(list => {
      // Duplicate the list for seamless looping
      const duplicate = list.cloneNode(true);
      duplicate.classList.add('marquee-duplicate');
      marquee.appendChild(duplicate);
    });
  });

  const observer = new IntersectionObserver(entries => {
    entries.forEach(entry => {
      entry.target.querySelectorAll('[data-css-marquee-list]').forEach(list => {
        list.style.animationPlayState = entry.isIntersecting ? 'running' : 'paused';
      });
      entry.target.querySelectorAll('.marquee-duplicate').forEach(list => {
        list.style.animationPlayState = entry.isIntersecting ? 'running' : 'paused';
      });
    });
  }, { threshold: 0 });

  marquees.forEach(marquee => {
    // Recalculate duration using total width
    const totalWidth = Array.from(marquee.querySelectorAll('[data-css-marquee-list], .marquee-duplicate'))
      .reduce((sum, el) => sum + el.offsetWidth, 0);
    const duration = totalWidth / pixelsPerSecond;

    marquee.querySelectorAll('[data-css-marquee-list], .marquee-duplicate').forEach(list => {
      list.style.animationDuration = duration + 's';
      list.style.animationPlayState = 'paused';
    });

    observer.observe(marquee);
  });
}

// Wait until all resources (images/fonts) are loaded for correct width calculation
window.addEventListener('load', function() {
  initCSSMarquee();
});

// Also rerun when window is resized (for responsiveness)
window.addEventListener('resize', function() {
  initCSSMarquee();
});
</script>
Name: Logos / Tile / Button

Options:


Logos – You can replace logos based on the specific layout: 3 large logos at the top, 5 in the first bottom row, and another 5 in the second bottom row.

Button – The link and copy can be updated, along with its visibility.
View our partner directory
Name: Logos / 7

Options:

Heading – You can edit the heading and control its visibility.

Background - Can be updated

Logos - You can update 7 logos.
Trusted by the world’s leading brands