Hasil akhir · judul yang berkilau
Dua web yang sama, bedanya satu snippet. Di kartu sesudah, seberkas cahaya oranye menyapu judul hero berulang kali, dan kilatan kecil menyala di huruf yang dilewatinya.
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/GradientTextSweep.jsx. Tiap Copy memakai 1 dari 5 jatah harian akun gratis.
Langkah 5 · Beri konteks ke agent
Aslinya snippet ini judul ungu-pink yang berdiri sendiri. Judul hero Tandarupa sudah punya animasi masuk per baris (SplitText), jadi agent perlu tahu elemennya, animasi yang sudah ada, dan warnanya. Tanpa itu, kilaunya bisa bentrok dengan animasi masuk atau tampil ungu.
Ini kode komponen dari asset.inwebsite.online. Pasang di judul hero (h1.hero__title di src/sections/Hero.jsx). Judul itu sudah dipotong per baris oleh SplitText untuk animasi masuk, jadi jangan ubah h1-nya: bungkus h1 dengan komponen ini sebagai div, dan mulai kilau sesudah judul selesai naik (sekitar 1,5 detik). Warna pita pakai aksen #e8461e dan oranye hangat, bukan ungu/pink; warna dasar teks var(--ink). Kata "gampang" tetap merah miring. Proyek saya React + CSS biasa tanpa Tailwind: pasang Tailwind v4 tanpa preflight supaya gaya lama tidak berubah. Simpan sebagai JSX, bukan TSX. <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 text-effects/gradient-text-sweep dan pasang di judul hero (h1.hero__title di src/sections/Hero.jsx). Judul itu sudah dipotong per baris oleh SplitText untuk animasi masuk: jangan ubah h1-nya, bungkus dengan komponen ini sebagai div dan mulai kilau sesudah judul selesai naik. Kirim look situs (terang, aksen #e8461e, sudut bulat, gerak tenang) ke get_snippet dan terapkan saran warnanya. Kata "gampang" tetap merah miring. Proyek saya React + CSS biasa tanpa Tailwind, jadi pasang Tailwind v4 tanpa preflight. 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:
colorsungu dan pink diganti #e8461e dan #f2683a, sesuai saran "Fit this site". Oranye di inti pita (#ff9a3d) dibiarkan karena sudah hangat. Warna dasar teks #111014 jadi var(--ink) milik situs.pembungkuskomponen dipasang sebagai div di luar h1, bukan menggantikannya. SplitText di Hero.jsx memotong judul per baris; kalau lapisan kilatan ada di dalam h1, lapisan itu ikut terpotong. Pita cahaya tetap tampil di baris-baris yang sudah dipotong.waktudelay 0,45 → 1,6 detik supaya kilau pertama menunggu judul selesai naik. duration 1,7 → 2 dan pause 0,5 → 1,8 detik supaya sapuan tidak terlalu sering. Durasi kilatan 0,28 dan 0,4 detik dikali 1,25 (saran "Fit this site").GLINTSposisi kilatan dipindah ke ujung huruf M, atas kata "yang", dan titik di akhir kalimat. Pembungkus diberi text-[clamp(50px,7vw,112px)], ukuran judul, karena kilatan berukuran 0,42em.imggambar kilatan diberi block. Tanpa preflight, gambar tampil inline, turun ke garis dasar, dan kilatan meleset sekitar 80px ke bawah.gampangtetap merah dan miring seperti aslinya. Warnanya sendiri menutupi pita, jadi cahaya hanya terlihat di kata lain.Tailwindweb contoh tidak memakai Tailwind. Dipasang v4 tanpa preflight (hanya theme + utilities) agar gaya lama tetap. Kode TSX diubah jadi JSX, dan cabang prefers-reduced-motion versi katalog tidak dipakai./*
* Gradient Text Sweep — diadaptasi untuk Tandarupa
* Asal: https://asset.inwebsite.online/snippets/text-effects/gradient-text-sweep (v1.1.0)
* Perubahan: TSX → JSX, warna kilau ungu/pink/oranye → aksen #e8461e dan oranye hangat,
* warna dasar teks = --ink situs, durasi kilatan ×1,25, jeda awal menunggu judul selesai naik,
* posisi kilatan dipindah ke huruf judul hero, gambar kilatan diberi `block`
* (tanpa preflight, img inline turun ke baseline), cabang prefers-reduced-motion dibuang.
*/
import { useRef } from 'react'
import gsap from 'gsap'
import { useGSAP } from '@gsap/react'
gsap.registerPlugin(useGSAP)
// Kilatan pipih untuk halaman terang, kilatan bercahaya untuk halaman gelap.
const GLINT_LIGHT = 'https://inassetweb-cdn.inwebsite.online/sprinkles/v1/particles/sparkle-4point.png'
const GLINT_DARK = 'https://inassetweb-cdn.inwebsite.online/sprinkles/v1/effects/twinkle.png'
// Posisi kilatan [kiri %, atas %] di kotak teks. Tiap kilatan menyala saat cahaya lewat.
// Di hero Tandarupa: ujung huruf M, atas kata "yang", dan titik di akhir "orang."
const GLINTS = [
[13, 4],
[56, 9],
[81, 90],
]
// Pita cahaya berjalan dari 40% di kiri teks sampai 40% lewat tepi kanannya.
const FROM = -0.4
const TO = 1.4
export default function GradientTextSweep({
as: Tag = 'h2',
children = 'Design at the speed of thought',
colors = ['#e8461e', '#f2683a', '#ff9a3d'],
duration = 1.7,
pause = 0.5,
sparkles = true,
glint = 'auto',
delay = 0.45,
className = '',
}) {
const root = useRef(null)
useGSAP(
() => {
const el = root.current
if (!el) return
const q = gsap.utils.selector(el)
// Posisi background (%) yang menaruh pusat pita di `x` (0 = tepi kiri, 1 = tepi kanan teks).
const place = (x) => (el.style.backgroundPosition = `${((1.5 - x) / 2) * 100}% 0, 0 0`)
const light = { x: FROM }
place(FROM)
const tl = gsap.timeline({ delay, repeat: -1, repeatDelay: pause })
tl.to(light, { x: TO, duration, ease: 'none', onUpdate: () => place(light.x) }, 0)
// Tiap kilatan menyala tepat saat pusat pita sampai di posisinya.
q('.gts-glint').forEach((glint, i) => {
const at = (((GLINTS[i]?.[0] ?? 50) / 100 - FROM) / (TO - FROM)) * duration
tl.fromTo(
glint,
{ scale: 0, rotation: -60, autoAlpha: 1 },
{ scale: 1, rotation: 0, duration: 0.35, ease: 'back.out(3)', immediateRender: false },
Math.max(0, at - 0.14),
).to(glint, { scale: 0, rotation: 45, autoAlpha: 0, duration: 0.5, ease: 'power2.in' }, '>0.05')
})
},
{ scope: root, dependencies: [duration, pause, delay], revertOnUpdate: true },
)
const style = {
// Lapisan atas: pita cahaya, simetris di sekitar intinya (transparan di luar pita). Lapisan bawah: warna dasar teks.
backgroundImage: `linear-gradient(100deg, transparent 37%, ${colors[0]} 43%, ${colors[1]} 47%, ${colors[2]} 50%, ${colors[1]} 53%, ${colors[0]} 57%, transparent 63%), linear-gradient(var(--gts-base), var(--gts-base))`,
backgroundSize: '300% 100%, 100% 100%',
backgroundRepeat: 'no-repeat',
backgroundPosition: `${((1.5 - FROM) / 2) * 100}% 0, 0 0`,
}
return (
<Tag
ref={root}
style={style}
className={`relative bg-clip-text text-transparent [--gts-base:var(--ink)] dark:[--gts-base:#f6f5f8] ${Tag === 'span' ? 'inline' : ''} ${className}`}
>
{children}
{sparkles && (
<span aria-hidden className="pointer-events-none absolute inset-0">
{GLINTS.map(([left, top], i) => (
<span
key={i}
className="gts-glint invisible absolute size-[0.42em] max-h-7 max-w-7 min-h-3 min-w-3 -translate-x-1/2 -translate-y-1/2"
style={{ left: `${left}%`, top: `${top}%` }}
>
{glint !== 'glow' && <img src={GLINT_LIGHT} alt="" className={`block size-full ${glint === 'auto' ? 'dark:hidden' : ''}`} />}
{glint !== 'flat' && <img src={GLINT_DARK} alt="" className={`size-full scale-[1.8] ${glint === 'auto' ? 'hidden dark:block' : ''}`} />}
</span>
))}
</span>
)}
</Tag>
)
}
Langkah 6 · Bandingkan
Kilau di kartu sesudah jalan sendiri dan berulang. Muat ulang halaman untuk melihat urutannya: judul naik dulu, baru cahaya mulai menyapu.
Mau judul hero yang langsung menarik perhatian tanpa memasangnya sendiri? Tim InWebsite bisa bikinin web-mu.
Lihat paket InWebsite →