@semishamelesss: Excuse how tired I look it’s from the DEGREES I’m getting… anyway thoughts on ballerina farm #ballerinafarm

Eliza
Eliza
Open In TikTok:
Region: US
Friday 31 July 2026 01:28:57 GMT
771
29
0
2

Music

Download

Comments

There are no more comments for this video.
To see more videos from user @semishamelesss, 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