@na.nadyya: H-3 bulan gimana caranya siapkan diri ini 🫠

Nanadyya
Nanadyya
Open In TikTok:
Region: ID
Wednesday 02 September 2026 03:50:43 GMT
10364
286
8
9

Music

Download

Comments

mpuyy24
manusia imupp :
Kaka sapa dungk
2026-09-02 11:10:32
1
moli12386
iki sopo? tula💅🥰 :
haloo
2026-09-02 04:43:57
0
nnditaaa12_
12⋆. :
hai
2026-09-02 03:56:59
0
jvitaplengerrr
jopp_atletikk🏃🏻‍♀️ :
🥰
2026-09-02 15:18:48
0
To see more videos from user @na.nadyya, please go to the Tikwm homepage.

Other Videos

How I build with Lovable 👇 Academy in bio 🔗 Turning a page into story mode with play controls, step by step: 1. Build the entire page as ONE GSAP timeline: const tl = gsap.timeline({ paused: true }). 2. Name every chapter with a label: tl.addLabel('intro').to(...).addLabel('product').to(...).addLabel('bundle').to(...). The labels are what make everything below possible. 3. Next button: tl.tweenTo('product', { duration: 1.2, ease: 'power2.inOut' }). Prev button: tl.tweenTo('intro'). You are jumping between labels, not scrolling. 4. Play and pause: tl.play() and tl.pause(). One boolean in state swaps the icon. 5. Keep the current chapter index in state and clamp it with Math.max(0, Math.min(i, labels.length - 1)), so the buttons cannot run past the ends. 6. Give the user an escape hatch. Any keydown on ArrowRight or ArrowLeft should hit the same two functions. Progress bar: 7. On the timeline: onUpdate: function() { setPct(Math.round(tl.progress() * 100)); }. 8. Fill the bar with transform: scaleX(pct / 100) and transform-origin: left. Never animate width, scaleX runs on the GPU. 9. Chunky styling: height 14px, border 3px solid #000, border-radius 999px, fill in the accent color. That thick black border is what makes it read as a game instead of a form field. Unlock toast: 10. Fire it exactly once: if (tl.progress() > 0.75 && !unlocked.current) { unlocked.current = true; showToast(); }. The ref is what stops it firing 60 times a second. 11. Animate it in: gsap.fromTo(el, { y: 40, opacity: 0 }, { y: 0, opacity: 1, duration: 0.5, ease: 'back.out(1.7)' }). That overshoot is what makes it feel like a reward. Sticker type: 12. -webkit-text-stroke: 6px #000 with a solid fill, then text-shadow: 6px 6px 0 #000 for the hard offset, then transform: rotate(-3deg). Three properties, zero images. Impact marks: 13. Each burst is an inline SVG, position absolute. Animate scale from 0 to 1 with ease 'back.out(2.5)' and stagger 0.06. Set transform-origin: center or they shoot off the screen. Save this if you want a page that plays like a game 🎮 #lovablepartner #buildinpublic
How I build with Lovable 👇 Academy in bio 🔗 Turning a page into story mode with play controls, step by step: 1. Build the entire page as ONE GSAP timeline: const tl = gsap.timeline({ paused: true }). 2. Name every chapter with a label: tl.addLabel('intro').to(...).addLabel('product').to(...).addLabel('bundle').to(...). The labels are what make everything below possible. 3. Next button: tl.tweenTo('product', { duration: 1.2, ease: 'power2.inOut' }). Prev button: tl.tweenTo('intro'). You are jumping between labels, not scrolling. 4. Play and pause: tl.play() and tl.pause(). One boolean in state swaps the icon. 5. Keep the current chapter index in state and clamp it with Math.max(0, Math.min(i, labels.length - 1)), so the buttons cannot run past the ends. 6. Give the user an escape hatch. Any keydown on ArrowRight or ArrowLeft should hit the same two functions. Progress bar: 7. On the timeline: onUpdate: function() { setPct(Math.round(tl.progress() * 100)); }. 8. Fill the bar with transform: scaleX(pct / 100) and transform-origin: left. Never animate width, scaleX runs on the GPU. 9. Chunky styling: height 14px, border 3px solid #000, border-radius 999px, fill in the accent color. That thick black border is what makes it read as a game instead of a form field. Unlock toast: 10. Fire it exactly once: if (tl.progress() > 0.75 && !unlocked.current) { unlocked.current = true; showToast(); }. The ref is what stops it firing 60 times a second. 11. Animate it in: gsap.fromTo(el, { y: 40, opacity: 0 }, { y: 0, opacity: 1, duration: 0.5, ease: 'back.out(1.7)' }). That overshoot is what makes it feel like a reward. Sticker type: 12. -webkit-text-stroke: 6px #000 with a solid fill, then text-shadow: 6px 6px 0 #000 for the hard offset, then transform: rotate(-3deg). Three properties, zero images. Impact marks: 13. Each burst is an inline SVG, position absolute. Animate scale from 0 to 1 with ease 'back.out(2.5)' and stagger 0.06. Set transform-origin: center or they shoot off the screen. Save this if you want a page that plays like a game 🎮 #lovablepartner #buildinpublic

About