Bucla de morphing a stărilor UI
Prompt
Cereți-mi: 8 până la 12 stări ale interfeței utilizator în care vreau să fie forma (de exemplu, buton, încărcător, player, cursor, comutator, tab-uri, diagramă, paletă de comenzi, toast), alb-negru pur sau o culoare de accent și o melodie fără drepturi de autor de aproximativ 120 BPM (de exemplu, Mixkit, gratuit pentru uz comercial). Mișcare la nivel de dribbble în interfața utilizatorului. O singură formă, niciodată tăiată: fiecare stare este același element care își modifică dimensiunea, raza și culoarea, în timp ce conținutul său se schimbă cu o scurtă estompare. Un cursor controlează fiecare modificare cu clicuri și trageri reale. Pânză gri cald deschis, componente alb-negru, un singur font curat în interfața utilizatorului (Geist). Izvoare peste tot, cel mult o mică depășire. Camera face zoom astfel încât fiecare stare umple cadrul. Ultimul cadru este primul, deci se repetă în buclă. Interzise: relaxarea cu reflexe, exploziile de particule, strălucirile, gradienții în interfața Chrome, contururile nepotrivite ale pictogramelor, timpul mort, orice arată ca un șablon. 120 BPM, 7 măsuri, se întâmplă ceva la fiecare bătaie. Buton → încărcător → verificare → insulă dinamică → player muzical cu o transformare redare/pauză → derulare bară de progres → devine un cursor de volum care se extinde când este tras peste valoarea maximă → un comutator se rotește în ritm → butonul devine un indicator de tab lichid → filele se deschid într-o diagramă care se desenează singură, cu un tooltip la trecerea cu mouse-ul → se restrânge în ⌘K → tastare pentru filtrare → enter → toast → înapoi la buton. 1. Un fișier HTML, cu dimensiunea pătrată de 1440x1440. Fiecare stil este calculat din momentul în care seek(t): fără tranziții CSS, fără temporizatoare, fără stare transmisă între cadre. 2. Arcurile sunt răspunsuri treptate închise. O valoare care își schimbă ținta de mai multe ori este suma unui arc per schimbare, deci rămâne o funcție pură de timp. 3. Cele două muchii ale indicatorului de clapetă sunt acționate de arcuri diferite, astfel încât muchia anterioară se întinde înaintea celei posterioare. Același truc se aplică și butonului basculant. 4. Tragerile sunt manipulări directe: în timp ce cursorul este ținut apăsat, valoarea este calculată din poziția sa. La eliberare, acesta revine de unde se afla. 5. Analizează melodia cu numpy pentru grila de ritm și începe cu o bătaie precoce. Plasează fiecare sunet UI în funcție de vârful său măsurat. 6. Randare cu Playwright: 4 subcadre pe cadru, combinate cu ffmpeg tmix pentru motion blur la 60fps. 7. Randează câte un cadru per bătaie înainte de randarea completă. Corectează orice este în afara grilei, înghesuit sau greu de citit. Nu aplicați niciodată will-change pe elementele pe care camera le scalează sau textul este redat neclar. Textul care se schimbă în interiorul unui container de transformare necesită propriul temporizator de intrare și ieșire, altfel se suprapune. Faceți ca ultimul cadru să fie identic cu primul, inclusiv poziția și viteza cursorului, altfel bucla se satură. Cere-mi datele de intrare, apoi arată-mi lista de stări de pe grila ritmică înainte să scrii vreun cod.
Ask me for: 8 to 12 UI states I want the shape to become (e.g. button, loader, player, slider, toggle, tabs, chart, command palette, toast), pure black and white or one accent color, and a royalty-free song around 120 BPM (e.g. Mixkit, free for commercial use).
Dribbble-level UI motion. One shape, never cut: every state is the same element morphing its size, radius and color while its content swaps with a short blur. A cursor drives every change with real clicks and drags. Light warm-gray canvas, black and white components, one clean UI font (Geist). Springs everywhere, a tiny overshoot at most. The camera zooms so each state fills the frame. The last frame is the first frame, so it loops.
Banned: bouncy easing, particle bursts, glows, gradients on UI chrome, mismatched icon strokes, dead time, anything that looks like a template.
120 BPM, 7 bars, something happens on every beat.
Button → loader → check → dynamic island → music player with a play/pause morph → scrub the progress bar → it becomes a volume slider that stretches when dragged past max → a toggle flips on the beat → the knob becomes a liquid tab indicator → the tabs open into a chart that draws itself, with a tooltip on hover → it collapses into ⌘K → type to filter → enter → toast → back to the button.
1. One HTML file, square 1440x1440. Every style is computed from time inside seek(t): no CSS transitions, no timers, no state carried between frames.
2. Springs are closed-form step responses. A value that changes target many times is the sum of one spring per change, so it stays a pure function of time.
3. The tab indicator's two edges ride different springs, so the leading edge stretches ahead of the trailing one. Same trick for the toggle knob.
4. Drags are direct manipulation: while the cursor is held, the value is computed from its position. On release it springs back from wherever it was.
5. Analyze the song with numpy for the beat grid and start on a downbeat. Place every UI sound by its measured peak.
6. Render with Playwright: 4 subframes per frame, blended with ffmpeg tmix for motion blur at 60fps.
7. Render one frame per beat before the full render. Fix anything off the grid, cramped or hard to read.
Never put will-change on anything the camera scales or the text renders blurry. Text that swaps inside a morphing container needs its own enter and exit timing or it overlaps. Make the last frame identical to the first, cursor position and speed included, or the loop stutters.
Ask me for the inputs, then show me the state list on the beat grid before you write any code.
Îndemn preluat de la post @demonugc.
- Model
- Opus 5.5
- Stivă
- HTML, Playwright
- Publicat
Fă un videoclip ca acesta
Creează videoclipuri ca acestea chiar tu — de 7 ori mai ieftin decât prin API — cu extensia noastră Google Chrome.. Funcționează cu Claude prin MCP: tu descrii sarcina, iar extensia se ocupă de procesul de generare de la prompt până la fișierul finalizat. Generează videoclipuri, le asamblează, le redă vocea și le traduce.
Automation — MCP для Google Flow, Google Vids и Claude
TikTok Symphony Creative Studio MCP Claude Code
SeedFlow — Seedance 2.5 в Dreamina, Qwen-Audio-3.1-TTS и Claude MCP