← Semua tutor

Hasil akhir · daftar klien yang bereaksi

Nama klien menyala saat disentuh.

Sebelum · strip klien satu baris

Sesudah · marquee dari asset.inwebsite.online

Coba sendiri ↗

Dua web yang sama, bedanya satu snippet. Di kanan, nama klien bergeser dalam dua baris yang berlawanan arah. Begitu kursor masuk, barisnya melambat dan nama yang disentuh berubah oranye.

Langkah 1 · Siapkan dulu

Yang perlu ada sebelum mulai.

  • Editor kode apa saja. VS Code, Cursor, atau yang kamu biasa pakai.
  • Node.js dan proyek React. Snippet berjalan di React dan memakai kelas Tailwind CSS.
  • AI agent (opsional, tapi paling cepat). Di panduan ini contohnya Claude Code.
  • Akun InWebAsset. Mencari dan merencanakan gratis tanpa login, tapi kode hanya bisa diambil setelah login.
Perlu loginTanpa login kamu bisa menjelajah, melihat pratinjau, dan memakai MCP untuk mencari. Tombol Copy kode dan API key MCP baru bisa dipakai setelah Sign in.
Batas harian: 5 salinanAkun gratis boleh menyalin kode snippet 5 kali sehari. Setiap salinan dihitung, termasuk snippet yang pernah kamu salin, dan kuotanya dipakai bersama antara situs dan MCP. Akun Pro tanpa batas.

Mencari, melihat pratinjau, dan perencanaan lewat agent tidak memakai kuota.

Langkah 2 · Jelajahi katalog

Pilih desain yang mau diambil.

Buka asset.inwebsite.online. Katalognya berisi 172 snippet. Persempit lewat kategori, tempat pemakaian, atau kata kunci.

  • Pilih kategori Cards & Sections.
  • Di Where it goes, pilih Social proof.
  • Ketik logo di kolom cari untuk mempersempit.
  • Arahkan kursor ke kartu untuk melihat pratinjau bergerak, lalu klik Logo Cloud Marquee.
REKAMAN · KATALOG
REKAMAN · HALAMAN SNIPPET

Langkah 3 · Buka halaman snippet

Lihat dulu, baru ambil.

  • Tab Preview: arahkan kursor ke satu logo. Barisnya melambat dan ikon logo itu berwarna.
  • Tab Code: sebelum login, kodenya terkunci. Muncul tombol Sign in to copy.
  • Install: npm i gsap @gsap/react. Syaratnya React + Tailwind CSS.
  • When to use: strip logo di bawah hero, bagian partner atau media, atau bukti sosial di atas tabel harga.
  • For agents: ada tombol Copy prompt dan tautan registry untuk AI agent.
IngatUntuk menyalin kode kamu harus login, dan akun gratis dibatasi 5 salinan per hari.

Langkah 4 · Ambil kodenya

Dua jalur, pilih satu.

JALUR A · LEBIH CEPATPakai MCP lewat AI agent

Agent mencari, memilih, dan memasang snippet sendiri. Buka halaman For agents, login, buat API key, lalu salin perintahnya.

$claude mcp add --transport http InWebAsset https://asset.inwebsite.online/mcp --header "Authorization: Bearer <API key-mu>"

Perintah di atas untuk Claude Code. Halaman itu juga punya versi Claude Desktop, Cursor, dan VS Code. Jangan pernah membagikan API key-mu.

Mencari dan perencanaan tanpa kunci. Kodenya (get_snippet) baru keluar dengan API key, dan memakai jatah 5 salinan akun gratis.

JALUR B · MANUALSalin source code

Login, buka halaman snippet, tekan Copy di tab Code. Simpan sebagai komponen, lalu pasang sendiri atau kirim ke agent.

$ npm i gsap @gsap/react

Simpan sebagai components/LogoCloudMarquee.jsx. Tiap Copy memakai 1 dari 5 jatah harian akun gratis.

REKAMAN · HALAMAN FOR AGENTS

Langkah 5 · Beri konteks ke agent

Bilang apa yang harus berubah.

Snippet ini aslinya berisi 14 merek karangan dengan ikon dan warna masing-masing. Web contohnya studio branding yang sudah punya daftar klien, jadi agent perlu tahu datanya, fontnya, dan warnanya. Tanpa itu, yang muncul di web-mu malah logo Lumen dan Arcwave.

Bagian web section .clientsFile Clients.jsxData CLIENTS di data.jsLogo nama klien sebagai teksWarna #e8461eStack React + CSS biasa
Kalau pakai Jalur B: tempel kodenya setelah prompt ini
Ini kode komponen dari asset.inwebsite.online. Pasang di section .clients (src/sections/Clients.jsx) menggantikan marquee satu baris yang ada. Logonya dari CLIENTS di src/data.js: tulis nama klien sebagai wordmark dengan kelas font yang sudah ada (f-serif, f-display, f-mono), tanpa ikon tambahan. Tiap baris harus lebih lebar dari layar 1440 px. Judulnya pakai label lama "Dipercaya 60+ usaha dari Aceh sampai Ambon". Proyek saya React + CSS biasa tanpa Tailwind: pasang Tailwind v4 tanpa preflight supaya gaya lama tidak berubah. Saat hover, nama klien menyala dengan aksen #e8461e. Situs tidak punya mode gelap. Lebar kartu sama dengan kontainer situs.

<tempel kode di sini>
contoh · Claude Code (Jalur A)
# sekali saja: sambungkan MCP
$ claude mcp add --transport http InWebAsset https://asset.inwebsite.online/mcp --header "Authorization: Bearer <API key-mu>"

# masuk ke folder proyek, jalankan agent
$ claude

> Pakai InWebAsset MCP. Ambil snippet cards-sections/logo-cloud-marquee dan pasang di section .clients (src/sections/Clients.jsx) menggantikan marquee satu baris yang ada. Logonya dari CLIENTS di src/data.js: nama klien sebagai wordmark dengan kelas font yang sudah ada (f-serif, f-display, f-mono), tanpa ikon tambahan, dan tiap baris harus lebih lebar dari layar 1440 px. Judul pakai label lama. Proyek saya React + CSS biasa tanpa Tailwind, jadi pasang Tailwind v4 tanpa preflight. Kirim look situs (terang, aksen #e8461e, sudut bulat, gerak tenang) ke get_snippet supaya dapat daftar penyesuaian. Cek dulu dengan includeCode:false, lalu ambil kodenya sekali. Jangan ubah bagian lain.

Yang kamu dapat

Snippet itu titik awal.

Kode di kanan adalah komponen yang terpasang di web contoh. Ini yang diubah dari versi asli di katalog:

  • TSXjadi JSX: tipe dan "use client" dihapus, karena web contoh memakai Vite + JavaScript.
  • logo contoh14 merek karangan (Lumen, Arcwave, dan lainnya) diganti nama klien dari CLIENTS, ditulis dengan font situs. Tidak ada ikon baru yang dibuat.
  • lcm-glyphdipasang di seluruh nama, bukan di ikon. Jadi yang berubah warna saat hover adalah namanya.
  • dua baristiap baris berisi kedelapan klien (baris kedua urutannya digeser). Empat nama per baris terlalu pendek untuk layar 1440 px.
  • warna14 warna merek diganti satu aksen #e8461e, sesuai saran "Fit this site" dari get_snippet. Abu-abu Tailwind diganti warna tinta situs.
  • kartumax-w-3xl dibuang; kartu selebar kontainer situs dan teksnya 26–34 px, mendekati marquee lama.
  • dibuangjudul "Trusted by 4,000+…" (diganti label lama), tautan Read customer stories, demo autoPlay, kelas dark:, dan cabang reduced-motion.
  • Tailwindweb contoh tidak memakai Tailwind. Dipasang v4 tanpa preflight (hanya theme + utilities), jadi <ul> diberi m-0 p-0 list-none supaya bullet bawaan browser hilang.
components/LogoCloudMarquee.jsx · terpasang di web contoh
/*
 * Logo Cloud Marquee — diadaptasi untuk Tandarupa
 * Asal: https://asset.inwebsite.online/snippets/cards-sections/logo-cloud-marquee (v1.0.1)
 * Perubahan: TSX → JSX, nama klien dari CLIENTS jadi wordmark dengan font situs, semua warna merek
 * jadi aksen #e8461e, abu-abu netral jadi warna tinta situs, kartu selebar kontainer situs,
 * tanpa mode gelap, tanpa demo autoPlay, tanpa cabang reduced-motion, tanpa tautan "Read customer stories".
 */
import { useRef } from 'react'
import gsap from 'gsap'
import { useGSAP } from '@gsap/react'

gsap.registerPlugin(useGSAP)

const ACCENT = '#e8461e'

export default function LogoCloudMarquee({ logos, title, duration = 34, className = '' }) {
  const root = useRef(null)
  const loops = useRef([])

  const half = Math.ceil(logos.length / 2)
  const rows = [logos.slice(0, half), logos.slice(half)]

  // Kecepatan baris diubah pelan, tidak meloncat (hover memperlambat baris).
  const setSpeed = (row, speed) => {
    const loop = loops.current[row]
    if (loop) gsap.to(loop, { timeScale: speed, duration: 0.7, ease: 'power2.out', overwrite: true })
  }

  useGSAP(
    () => {
      const q = gsap.utils.selector(root)
      // Tiap track berisi logonya dua kali, jadi geser setengah lebar = loop tanpa sambungan.
      loops.current = q('.lcm-track').map((track, i) =>
        i % 2 === 0
          ? gsap.fromTo(track, { xPercent: 0 }, { xPercent: -50, duration, ease: 'none', repeat: -1 })
          : gsap.fromTo(track, { xPercent: -50 }, { xPercent: 0, duration: duration * 1.12, ease: 'none', repeat: -1 }),
      )
      gsap.from('.lcm-row', { autoAlpha: 0, y: 10, duration: 0.9, ease: 'power3.out', stagger: 0.12 })
      return () => {
        loops.current = []
      }
    },
    { scope: root, dependencies: [duration, logos.length], revertOnUpdate: true },
  )

  return (
    <div
      ref={root}
      className={`relative w-full overflow-hidden rounded-[28px] bg-[#faf8f3] py-9 shadow-[0_1px_2px_rgba(20,19,17,0.04),0_12px_40px_-12px_rgba(20,19,17,0.14)] ring-1 ring-[rgba(20,19,17,0.08)] sm:py-11 ${className}`}
    >
      <p className="mx-auto max-w-md px-6 text-center text-balance">{title}</p>

      <div className="mt-7 border-y border-[rgba(20,19,17,0.12)] [mask-image:linear-gradient(to_right,transparent,black_14%,black_86%,transparent)] sm:mt-8">
        {rows.map((row, r) => (
          <div
            key={r}
            onPointerEnter={() => setSpeed(r, 0.18)}
            onPointerLeave={() => setSpeed(r, 1)}
            className={`lcm-row group/row overflow-hidden ${r > 0 ? 'border-t border-[rgba(20,19,17,0.12)]' : ''}`}
          >
            <ul aria-label={r === 0 ? 'Logo klien' : undefined} className="lcm-track m-0 flex w-max list-none p-0">
              {[0, 1].map((copy) =>
                row.map((item) => (
                  <li
                    key={`${copy}-${item.name}`}
                    aria-hidden={copy === 1 || undefined}
                    style={{ '--lcm-brand': item.color ?? ACCENT }}
                    // Menyala saat hover: kontras penuh, naik sedikit, wordmark berwarna aksen.
                    className="lcm-logo relative isolate flex h-[68px] items-center px-7 text-[#5b5750] transition-[color,opacity,translate] duration-300 group-hover/row:opacity-40 hover:-translate-y-0.5 hover:text-[#141311] hover:opacity-100! sm:h-[84px] sm:px-10 [&_.lcm-glyph]:transition-colors [&_.lcm-glyph]:duration-300 [&:hover_.lcm-glyph]:[color:var(--lcm-brand)]"
                  >
                    <span
                      aria-hidden
                      className="pointer-events-none absolute inset-x-4 inset-y-5 -z-10 rounded-full opacity-0 blur-xl transition-opacity duration-500 [background:var(--lcm-brand)] [li:hover>&]:opacity-20"
                    />
                    <span aria-hidden className="flex items-center">
                      {item.logo}
                    </span>
                    <span className="sr-only">{item.name}</span>
                  </li>
                )),
              )}
            </ul>
          </div>
        ))}
      </div>
    </div>
  )
}

Langkah 6 · Bandingkan

Sebelum vs sesudah.

Sebelum

Sesudah

Di layar lebar, kartu kanan hidup: arahkan kursor ke salah satu nama klien. Di HP, kartu menampilkan rekamannya.

01 · SIAPKANEditor, React, agent, akun (login)
02 · JELAJAHCards & Sections → Social proof
03 · BUKAPratinjau, install, kode (login)
04 · PASANGBeri data klien, font, dan warna ke agent