Hasil akhir · daftar klien yang bereaksi
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
Mencari, melihat pratinjau, dan perencanaan lewat agent tidak memakai kuota.
Langkah 2 · Jelajahi katalog
Buka asset.inwebsite.online. Katalognya berisi 172 snippet. Persempit lewat kategori, tempat pemakaian, atau kata kunci.
Langkah 3 · Buka halaman snippet
npm i gsap @gsap/react. Syaratnya React + Tailwind CSS.Langkah 4 · Ambil kodenya
Agent mencari, memilih, dan memasang snippet sendiri. Buka halaman For agents, login, buat API key, lalu salin perintahnya.
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.
Login, buka halaman snippet, tekan Copy di tab Code. Simpan sebagai komponen, lalu pasang sendiri atau kirim ke agent.
Simpan sebagai components/LogoCloudMarquee.jsx. Tiap Copy memakai 1 dari 5 jatah harian akun gratis.
Langkah 5 · Beri konteks ke agent
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.
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>
# 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
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./*
* 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
Di layar lebar, kartu kanan hidup: arahkan kursor ke salah satu nama klien. Di HP, kartu menampilkan rekamannya.
Mau daftar klien di web-mu tampil seperti ini tanpa memasangnya sendiri? Tim InWebsite bisa bikinin web-mu.
Lihat paket InWebsite →