← Semua tutor

Hasil akhir · judul yang berkilau

Judul diam jadi berkilau.

Sebelum · judul hero polos

Sesudah · kilau dari asset.inwebsite.online

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

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 Text Effects.
  • Di Where it goes, pilih Hero.
  • Ketik gradient di kolom cari untuk mempersempit.
  • Arahkan kursor ke kartu untuk melihat pratinjau bergerak, lalu klik Gradient Text Sweep.
REKAMAN · KATALOG
REKAMAN · HALAMAN SNIPPET

Langkah 3 · Buka halaman snippet

Lihat dulu, baru ambil.

  • Tab Preview: cahaya menyapu judul contoh "Design at the speed of thought" berulang kali. Tombol Replay memutarnya dari awal.
  • Tab Code: sebelum login, kodenya terkunci. Muncul tombol Sign in to copy.
  • Demo look: Flat glint untuk halaman terang, Glow glint on dark untuk latar gelap. Pilihan ini hanya mengubah pratinjau.
  • Install: npm i gsap @gsap/react. Syaratnya React + Tailwind CSS.
  • When to use dan For agents: kapan snippet ini cocok, 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/GradientTextSweep.jsx. Tiap Copy memakai 1 dari 5 jatah harian akun gratis.

REKAMAN · HALAMAN FOR AGENTS

Langkah 5 · Beri konteks ke agent

Tunjukkan letak judulnya.

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.

Bagian web judul heroFile Hero.jsxElemen h1.hero__titleAnimasi lama SplitText per barisWarna #e8461e + inkStack React + CSS biasa
Kalau pakai Jalur B: tempel kodenya setelah prompt ini
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>
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 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

Snippet itu titik awal.

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.
components/GradientTextSweep.jsx · terpasang di web contoh
/*
 * 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

Sebelum vs sesudah.

Sebelum

Sesudah

Kilau di kartu sesudah jalan sendiri dan berulang. Muat ulang halaman untuk melihat urutannya: judul naik dulu, baru cahaya mulai menyapu.

01 · SIAPKANEditor, React, agent, akun (login)
02 · JELAJAHText Effects → Hero
03 · BUKAPratinjau, install, kode (login)
04 · PASANGBeri elemen, animasi lama, dan warna ke agent