UsernameNew
A username picker with a penguin holding a sign: your name appears on it as you type; if it’s taken, its smug owner slides in hugging a sign with your name on it.
Used forOnboardingProfile settingsWorkspace URLsCreator links
Install with the shadcn CLI
$ npxnpx shadcn@latest add https://hairlineui.com/r/username.jsonTemplates
Need the whole page?
43 Next.js landing pages, each designed from scratch. Try any of them live; one is $39, all of them $99, and 5 are free.
Where it’s used
Onboarding
Choose a handle right after signing up.
Profile settings
Change your username, with suggestions when it’s gone.
Workspace URLs
Claim your team’s slug (relay.app/northwind).
Creator links
Pick the link people will share.
What it handles for you
A username field usually waits until submit to say a name is taken, and leaves people guessing what to try. This block checks as they type, says why a name won’t do, and offers names that are free.
- 01
Checked as you type
check runs 380ms after typing stops; a newer name aborts the older request.
- 02
Rules said plainly
Lowercase as you type; too short, too long or a character that isn’t allowed says so before any check.
- 03
Something to try
When a name is taken, the suggestions your check returns are one-tap chips.
- 04
Your prefix
prefix shows @, or your domain for workspace URLs.
- 05
Claim with states
Claim @name → Claiming → Claimed, or the server’s reason under the field.
- 06
A check that failed
If check throws, the field says it couldn’t check instead of guessing.
Overview
Picking a username is a field, a spinner and a red “taken”. This one hands the name to Handle, an illustrated penguin holding a blank sign on the lit stage. As you type, the name appears on his sign letter by letter. When the check says it’s free he beams and a green tick lands on the corner of the sign. When it’s taken his sign goes blank and his face falls, and its owner, a smug penguin in a red scarf, slides in from the side hugging a sign with your name on it: “@ana is mine.” The suggestions your check returns come back as chips under the field, and one tap writes them on the sign. Under the penguins it is a careful picker: lowercase as you type, a length range and allowed characters with a plain hint, a debounced, abortable check, and Claim wired to your function.
States
- empty
- Handle holds up a sign with just “@”; “Handle will hold it up”.
- typing
- The name appears on his sign as you type (letters rise in through Text morph), shrinking to fit longer names; “Handle is asking around” while the check runs.
- free
- He beams (pose crossfade, 220ms), a green tick springs onto the sign’s corner, the hint says Available and Claim @name lights up.
- taken
- His sign goes blank and his face falls; the owner slides in from the right (520ms) hugging a sign with the name; “@ana is mine.” Suggestions rise in under the field, 50ms apart.
- not allowed
- A character outside the pattern: he looks lost, and the field shows the hint (“Letters, numbers and _ only.”) with no check.
- claimed
- Claim → Claiming → Claimed with a drawn check; “Hello, @ana”. If onClaim throws, the message shows under the field.
Usage
import { Username } from "@/components/username";<Username check={(name, signal) => fetch(`/api/usernames/${name}`, { signal }).then((r) => r.json())} onClaim={(name) => fetch("/api/me/username", { method: "PUT", body: JSON.stringify({ name }) })}/>Works with
Installs with it
- InputA one-line field with a label, hint and error that trade places, a clear button that folds in, and one shake when an error arrives.
- Status buttonSave, Saving, Saved: the spinner opens in, the check draws itself, errors shake, and the label morphs between them.
- Text morphText that changes the way it should: shared letters slide over, new ones rise out of a blur, the width eases.
With your users table
Return { available, suggestions } from one endpoint and let a unique index have the last word on claim.
"use client";import { Username } from "@/components/username";export function PickUsername({ onDone }: { onDone: () => void }) { return ( <Username check={async (name, signal) => { const res = await fetch(`/api/usernames/${encodeURIComponent(name)}`, { signal }); if (!res.ok) throw new Error("Couldn’t check"); return res.json(); // { available: boolean, suggestions?: string[] } }} onClaim={async (name) => { const res = await fetch("/api/me/username", { method: "PUT", body: JSON.stringify({ name }) }); if (res.status === 409) throw new Error("Someone just took it. Try another."); if (!res.ok) throw new Error("Couldn’t save that."); setTimeout(onDone, 900); }} /> );}Props
| Prop | Type | Description |
|---|---|---|
| check | (name: string, signal: AbortSignal) => Promise<{ available: boolean; suggestions?: string[] }> | Is the name free? Called 380ms after typing stops; aborted when a newer name starts. |
| onClaim | (name: string) => Promise<unknown> | Keep the name. Throw an Error to show its message. |
| minLength / maxLength | numberdefault 3 / 20 | The length range, said in the line under the title. |
| pattern / patternHint | RegExp / stringdefault /^[a-z0-9_]+$/ / "Letters, numbers and _ only." | What the whole name may contain, and what to say when it doesn’t. |
| prefix | stringdefault "@" | Shown in the field and on the signs; use your domain for workspace URLs. |
| defaultValue / title / name | stringdefault "" / "Pick a username" / "Handle" | A starting name, the heading, and the penguin’s name in his lines. |
Accessibility and motion
- The field is a labelled username input; its hint says Available or Taken and its error says why a name won’t do. A status region announces availability and the claim.
- The penguins are decoration (aria-hidden). Their poses are illustrations shipped inside handle-art.ts as WebP data URIs (37KB of images), with each sign’s position and tilt measured so the name is written on it in code.
- The scene is drawn at 364 × 176 and scaled to the stage; the owner slides in with a transform.
- With reduced motion the poses and the owner change in place.
- Built from Input, Status button and Text morph, which the CLI installs with it. No animation library.
Requirements
React 19, Tailwind CSS v4 and shadcn/ui theme variables (any style, light and dark). Icons from lucide-react.
The CLI also installs Input, Status button, Text morph.
Source
"use client";import * as React from "react";import { HANDLE_ART as ART, HANDLE_GEO as GEO } from "./handle-art";import { Input } from "./input";import { StatusButton, type ActionStatus } from "./status-button";import { TextMorph } from "./text-morph";import { EASE_OUT, useInteractionReducedMotion } from "./ui-interaction-motion";/* ───────────────────────────────────────────────────────── * USERNAME: a penguin holds up the name you want * * write as you type, the name appears on Handle's sign, * letter by letter * free check() says it's available: he beams, a green tick * lands on the corner of his sign * taken it isn't: his sign goes blank and his face falls, * and its owner, a smug penguin in a scarf, slides in * hugging a sign with your name on it ("@ana is mine") * try suggestions come back as chips; one tap writes it * claim Claim @name → Claiming → Claimed * * check(name, signal) and onClaim(name) are yours; the field * lowercases as you type and keeps to the characters you allow. * ───────────────────────────────────────────────────────── */export interface UsernameProps { /** Is the name free? Aborted when a newer name starts. Suggestions show when it isn't. */ check: (name: string, signal: AbortSignal) => Promise<{ available: boolean; suggestions?: string[] }>; /** Keep the name; throw to say why not. */ onClaim: (name: string) => Promise<unknown>; defaultValue?: string; minLength?: number; maxLength?: number; /** Characters allowed (the whole name is tested). */ pattern?: RegExp; /** Says what's allowed when the pattern fails. */ patternHint?: string; /** "@", or your domain ("relay.app/"). */ prefix?: string; title?: string; /** What the penguin is called in his lines. */ name?: string; className?: string;}type Phase = "empty" | "short" | "invalid" | "checking" | "free" | "taken" | "error";const mix = (color: string, amount: number, into = "transparent") => `color-mix(in oklab, ${color} ${amount}%, ${into})`;const PF = "var(--primary-foreground)";const CARD: React.CSSProperties = { backgroundImage: `linear-gradient(180deg, var(--card), ${mix("var(--card)", 95, "var(--foreground)")})`, boxShadow: `0 0 0 1px var(--border), inset 0 1px 0 ${mix("var(--background)", 85)}`,};/* The one lit surface: an ice floe's soft glow under the penguins, and faint snow. */const STAGE: React.CSSProperties = { backgroundColor: "var(--primary)", backgroundImage: [ `radial-gradient(60% 40% at 50% 100%, ${mix(PF, 26)} 0%, transparent 70%)`, `linear-gradient(175deg, transparent 40%, ${mix("black", 20)} 100%)`, `radial-gradient(circle, ${mix(PF, 28)} 0 1px, transparent 1.5px)`, `radial-gradient(circle, ${mix(PF, 18)} 0 1px, transparent 1.5px)`, ].join(", "), backgroundSize: "auto, auto, 46px 38px, 31px 27px", backgroundPosition: "0 0, 0 0, 0 0, 14px 9px", boxShadow: `inset 0 1px 0 ${mix(PF, 36)}, inset 0 0 0 1px ${mix(PF, 12)}`,};const LIT: React.CSSProperties = { backgroundImage: `linear-gradient(180deg, ${mix(PF, 16)}, transparent 60%)`, boxShadow: `inset 0 1px 0 ${mix(PF, 32)}, inset 0 0 0 1px ${mix("black", 10)}`,};const INK = "oklch(0.25 0.02 260)";/* the scene, drawn at 364 × 176 and scaled to the stage */const W = 364;const H = 176;const GROUND = 172;const OURS = { x: 118, h: 124 };const OWNER = { x: 272, out: W + 80, h: 124 };type Pose = "hope" | "joy" | "sad" | "owner";/** A penguin, standing with its feet at (x, GROUND), with `text` written on its sign. */function Penguin({ pose, x, h, text, tick, style }: { pose: Pose; x: number; h: number; text: string; tick?: boolean; style?: React.CSSProperties }) { const g = GEO[pose]; const k = h / g.h; const w = g.w * k; const b = g.board; const len = Math.max(1, text.length); const font = Math.min(17, ((b.w * k * 0.82) / len) * 1.6); return ( <div className="absolute left-0 top-0" style={{ transform: `translate(${x - w / 2}px, ${GROUND - h}px)`, width: w, height: h, ...style }}> {/* eslint-disable-next-line @next/next/no-img-element */} <img src={ART[pose]} alt="" draggable={false} className="pointer-events-none absolute inset-0 size-full max-w-none select-none" /> <div className="absolute flex items-center justify-center whitespace-nowrap font-semibold tracking-[-0.02em]" style={{ left: (b.x - b.w / 2) * k, top: (b.y - b.h / 2) * k, width: b.w * k, height: b.h * k, transform: `rotate(${b.angle}deg)`, color: INK, fontSize: font, }} > <TextMorph>{text || " "}</TextMorph> <span className="absolute -right-1.5 -top-1.5 grid size-[18px] place-items-center rounded-full text-white" style={{ background: "var(--color-emerald-500, oklch(0.7 0.16 162))", opacity: tick ? 1 : 0, transform: tick ? "scale(1) rotate(0deg)" : "scale(0.3) rotate(-30deg)", transition: "opacity 200ms, transform 420ms cubic-bezier(0.34,1.36,0.64,1)" }} > <svg viewBox="0 0 16 16" className="size-3" fill="none"> <path d="M3.8 8.3 6.6 11 12.2 5" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round" /> </svg> </span> </div> </div> );}export function Username({ check, onClaim, defaultValue = "", minLength = 3, maxLength = 20, pattern = /^[a-z0-9_]+$/, patternHint = "Letters, numbers and _ only.", prefix = "@", title = "Pick a username", name = "Handle", className = "",}: UsernameProps) { const reduced = useInteractionReducedMotion(); const baseId = React.useId(); const [value, setValue] = React.useState(defaultValue.toLowerCase()); const [result, setResult] = React.useState<{ name: string; available: boolean; suggestions: string[] } | null>(null); const [failed, setFailed] = React.useState<string | null>(null); const [claim, setClaim] = React.useState<{ status: ActionStatus; error?: string }>({ status: "idle" }); const checkRef = React.useRef(check); React.useEffect(() => { checkRef.current = check; }); const valid = value.length >= minLength && pattern.test(value); React.useEffect(() => { if (!valid) return; const ctrl = new AbortController(); const timer = window.setTimeout(() => { checkRef.current(value, ctrl.signal).then( (r) => !ctrl.signal.aborted && setResult({ name: value, available: r.available, suggestions: r.suggestions ?? [] }), () => !ctrl.signal.aborted && setFailed(value), ); }, 380); return () => { window.clearTimeout(timer); ctrl.abort(); }; }, [value, valid]); const known = result && result.name === value ? result : null; const phase: Phase = !value ? "empty" : !pattern.test(value) ? "invalid" : value.length < minLength ? "short" : failed === value ? "error" : !known ? "checking" : known.available ? "free" : "taken"; const claimed = claim.status === "success"; const pose: Pose = claimed || phase === "free" ? "joy" : phase === "taken" || phase === "invalid" ? "sad" : "hope"; const handle = `${prefix}${value}`; const mood = claimed ? `Hello, ${handle}` : phase === "free" ? `${handle} is all yours` : phase === "taken" ? `“${handle} is mine.”` : phase === "checking" ? `${name} is asking around` : phase === "invalid" ? `${name} can’t write that` : phase === "short" ? "A little longer" : phase === "error" ? `${name} couldn’t check` : `${name} will hold it up`; const set = (next: string) => { setValue(next.toLowerCase().slice(0, maxLength)); if (claim.status !== "idle" && claim.status !== "pending") setClaim({ status: "idle" }); }; const submit = async (e: React.FormEvent) => { e.preventDefault(); if (phase !== "free" || claim.status === "pending" || claimed) return; setClaim({ status: "pending" }); try { await onClaim(value); setClaim({ status: "success" }); } catch (err) { setClaim({ status: "error", error: err instanceof Error && err.message ? err.message : "Couldn’t claim that. Try again." }); } }; const fade = reduced ? "none" : `transform 520ms cubic-bezier(0.22,1,0.36,1), opacity 300ms ${EASE_OUT}`; const ownerIn = phase === "taken"; const error = phase === "invalid" ? patternHint : phase === "error" ? "Couldn’t check that name. Try again." : claim.status === "error" ? claim.error : undefined; return ( <section aria-labelledby={`${baseId}-title`} className={`relative w-full max-w-[380px] rounded-[28px] p-2 text-card-foreground ${className}`} style={CARD}> {/* Its natural width where the parent sizes to its content, without forcing it on narrow screens. */} <div aria-hidden="true" data-natural-width className="grid h-0" style={{ gridTemplateColumns: "minmax(0, 380px)" }} /> <div className="@container w-full"> <div className="relative overflow-clip rounded-[22px] text-primary-foreground" style={STAGE}> <Scene> {(["hope", "joy", "sad"] as const).map((p) => ( <Penguin key={p} pose={p} x={OURS.x} h={OURS.h} text={phase === "taken" ? "" : value ? handle : prefix} tick={p === "joy" && (phase === "free" || claimed)} style={{ opacity: p === pose ? 1 : 0, transition: reduced ? "none" : `opacity 220ms ${EASE_OUT}` }} /> ))} {/* the one who already has it */} <Penguin pose="owner" x={ownerIn ? OWNER.x : OWNER.out} h={OWNER.h} text={known && !known.available ? `${prefix}${known.name}` : ""} style={{ opacity: ownerIn ? 1 : 0, transition: fade }} /> </Scene> <p className="absolute left-3.5 top-3 z-10 max-w-[70%] text-[12.5px] font-medium text-primary-foreground/85"> <TextMorph>{mood}</TextMorph> </p> </div> <form className="px-3 pb-1 pt-3" onSubmit={submit} noValidate> <h2 id={`${baseId}-title`} className="text-[15px] font-medium tracking-[-0.01em]"> {title} </h2> <p className="mt-0.5 text-[12.5px] text-muted-foreground"> {minLength} to {maxLength} characters. You can change it later. </p> <Input className="mt-3" aria-label="Username" leading={<span className="text-[13.5px]">{prefix}</span>} placeholder="yourname" value={value} onValueChange={set} autoComplete="username" autoCapitalize="off" spellCheck={false} maxLength={maxLength} error={error} hint={phase === "taken" ? "Taken. Try one of these:" : phase === "free" ? "Available." : undefined} /> {phase === "taken" && known && known.suggestions.length > 0 && ( <div className="mt-2 flex flex-wrap gap-1.5" aria-label="Suggestions"> {known.suggestions.slice(0, 4).map((s, i) => ( <button key={s} type="button" onClick={() => set(s)} className="h-7 cursor-pointer rounded-full border border-border bg-background px-2.5 text-[12.5px] hover:bg-accent" style={reduced ? undefined : { animation: `ui-fade-up 320ms ${EASE_OUT} ${i * 50}ms backwards` }} > {prefix} {s} </button> ))} </div> )} <StatusButton type="submit" status={claim.status} labels={{ idle: phase === "free" ? `Claim ${handle}` : "Claim", pending: "Claiming", success: "Claimed", error: "Try again" }} disabled={phase !== "free" && claim.status !== "pending" && !claimed} className="mt-3 h-10 w-full text-[13.5px] disabled:bg-[color-mix(in_oklab,var(--foreground)_7%,transparent)] disabled:text-muted-foreground" style={phase === "free" && claim.status !== "error" ? LIT : undefined} /> </form> </div> <span className="sr-only" role="status"> {phase === "free" ? `${handle} is available.` : phase === "taken" ? `${handle} is taken.` : claimed ? `${handle} is yours.` : ""} </span> </section> );}/** The stage's scene, drawn at 364 × 176 and scaled to fit. */function Scene({ children }: { children: React.ReactNode }) { const host = React.useRef<HTMLDivElement>(null); const scene = React.useRef<HTMLDivElement>(null); React.useLayoutEffect(() => { const h = host.current; const s = scene.current; if (!h || !s) return; const fit = () => s.style.setProperty("transform", `scale(${h.clientWidth / W})`); fit(); const ro = new ResizeObserver(fit); ro.observe(h); return () => ro.disconnect(); }, []); return ( <div ref={host} aria-hidden="true" className="relative w-full" style={{ aspectRatio: `${W} / ${H}` }}> <div ref={scene} className="absolute left-0 top-0 origin-top-left" style={{ width: W, height: H }}> {children} </div> </div> );}export default Username;/* Handle's art: an illustrated penguin with a blank sign, hopeful, overjoyed and let down, and the smug penguin who already has your name. As WebP data URIs so one install brings everything; sizes in each image's own pixels, and the sign's middle, size and tilt so a name can be written on it. */export const HANDLE_ART = { hope: "data:image/webp;base64,UklGRqghAABXRUJQVlA4WAoAAAAQAAAAwAAA8AAAQUxQSKQLAAARwMds+/unrR6971eWjRw5MgIL5IiKCrKESDQJQyAqku6W7g0959Ao2mf4dBNEMxwR7VAUOlFRNgrqXnRQgbIYikg6HLlWRRE4Aysylq3vq+f5A2P79/l+v5+/I2IC0KDmyHwD2j/Yv2vPp2CZ5vANhynp1XZYlhmW/kkaGxstX+/OMnNsektlkKGhLDPD18VSkqgTczPMDHcpqMlO9mSYY7OCOseJOfll+ExMUOcaOh8GM5/UssiwYIjUFAZmWeE4t1sW7dSEpnKkHYAv3bi5f+uN6+YAlj2OtaMTnNJ+YGX/wVFNevy7S2C5Y3hCpaYY2vPZA5IUEUFK73wBljeG7iFyKtKwpCA1KUud7IVlzuUTmnZoqiSvhWeNY404DVJTLvXqeWaZs3Za0yx1chkM+Wpmha2kOGMM/WUxDFlq5oUZzu4ZnjlK3++AIzvN3DF5cX7vxdd+/uSMhU5vAAyZaV7g7NlXfnHL4/uOHR9+p9SMU8Pr4IasNDcAtmTjg/uGJnRuzhTLfVeizZGR5gag+/q7Xx6XJEYEJ9XMPbG+B7DCMsEcQM+ndg1JEoNUmoPbLgPglgHmgK/bdVISg1SqpDTxx5vmA24NZw50bnpeEoNKmyFp+N4FgFuDmQPd//OaxKAqSIZ06u55gFtTOdDz9UEpqMoypKG+bsAbyQztfSekoCrNkIZudrg1jwPXHZaCqjxDOrAa8IYxw8KfUEHVIkP8/jwUjeLAfw6LVG2SGlgFs+ZwzHpECtVqqbFbAW8IM1zxvEjVLKVd3fBGMOCmUYXql6FXV6BoAEP7Domq5dDox1HUnqPjpwqqpkOxAW71VqD7VypV3yRvhFudOS55WaE6J9UHs/pyvG9YoXontd3d6srx/gmF6p6ltqOoKceiYYXqn6U2oaglQ9fzCjUhObYaXkOGtr2impH6Vy+sdszanlWoKUN/anOrGXP8SKWas1Q/vGYcfSrVoIy4HlYrjsvHySYR9Xq3WY2Y+35RzRraBq8Rx1ZRDUuOXQGvDcenRDUu9Xy7WU2YXXCKDaTQDfCacDyjUAOTg7PNasHxGYUaOXQHvA7Meo6TzUSe6DGrAcfDCjV06C7UgGHpONlU5Kl5sMo59irU2KHb4FVzfERUc1MvFGbVMus42mhiuQxeLcftCjV56L6KmfUOk41G/b0TViXHAwo1O3kdvEJm7zpNNlxoR6UcdynU8NRAJ6wyZrOPk00ncg28Mo4+hRo/tBVFVczOGyRz4E+wqjg2iGp+argHVhErns8CkWvh1XB8hFQOhv4HRSXMOo4qFx6HVQN3KJSF1CsFrAJmi0bJXDi9oBrYqVAmUmvh6RkuGyNzIfQVFFV4QqFcLLWtAo7VJZWNoWdgyZn9RhlBHQAsMce6oHJioCM5w3OKrHhzbmqGxSNkVowvSs2xVaG8vBqelGHWUTIrqNWJOa4YV268P7kNKpUZn0iuXxN5EdqAIimzX6jMjdvSMnQPiLnxrdSWvMXMKNWf2oozpXLju/CUHCvHJpgXoadSW3FmQrmxD5aSYelIybygXmuDJTX/OLPj9ILE2o8oO7QSnhAMv8wNUevTcmxTZMdGFGldT2ZGqC8tQ+eAmBv98JTg2KEyN3bCEruOkRtPJGbW9oKYFdSexOD4YmaEdqdm1nZQzIv74GnBcX1u9KFIDGZ/VGQE9Ql4ao5lZTAbqLFLYanBsFVlRhxrr4L7MypzIbgTjvTNOveLmUB9phIwLBgQs4A8ORdWBTiuHCdzILQdhop8aILKQHL0YquEFVh4XFkQ2gxDBR3oPiAqA6kDHVYBA9ou3aNQBpLDi+BI3oCNL42IykKObL8AlppZx08kUdk4eCUsNdytM1Q+lvpbl1lShoUjJZWTpf4DnpTjKyqVlcEfpmbfYWSG9sKSKvBD5Yd5SgWuHyVz4y+ApeO49JSozCTvd1gqjosGRGUn9dMuWBqOxQOiMrTUr7pgKTgWDyiUpaF958Na51j4N4UytdQvO+CtcvS+olC2hvZ2wlvjmHdYpTI2tH8evBWG+S8rlLWlXl0MnznD3IMqlbmhwaXwmTLM3q9xZW9ocCF8Zsw6fq9xZXDocA98Jsz8GZXK4tDL74LPgGO7SmVyaGAxbFqOmxTK5tCxHtg0HGvHg/mk0L4OsymZzRsUldOltqGYirk9p1JZzSjXwafg2KpSmU0NLYSdw3E1ydwS9dvCbDLDXoXyO3QzfBLD5eNUhpP/7jE7y/GYIscU2gIHYLh4hMwy8lQvDHA8oFCeh7bAYeh6ncw08m8dMMf7Gcp1ciXccb/KbAttRoHiJTHbqN/AcNE7WXdiDrBeVL6TK4BvKjIudCOwM/MeBp7NvCeAn2beXmBv5v0U2JN5e4Bdmbcb2Jp5/cAnxIyjNgLvHlG+U3ElYAcVGffPThToV5ltJR+HO64cj2yjPo4CZnvFTCP/2QmD4cpxMs9Ct8MBGO5XZBn1crvZWTbnX2KGMbQWhrMN7yeZXSz1HRgmd2ySSuYVqR2wc8Hx+dNSMJvIEL8FM0zRcckTExLJHIqQdHgdzDBlB67dOVgqk8cP3tAOx3TNgO6VX9w0JObO6Pb/XALAMYNmAHA0d6iTPQDcMLPmXhzMn6Hewg0zb/ilIncOz4KhhY5d+fMrWEsKbMuf3TC0pi93Qg/AW+L4jJg7t7XIcMm4mDXk+1oE8+fzhhpZDGuN436VeXOsvXUfFXMmtBuG1hrmDotZcxOKFsGwR5Ev1PgSWKsKfF7MmYNmaLVhzr/FbAn1oWgZDI8pcoU8vQCWwmVnyEwJ7YYhQcOPFJlCroGn4LiiJLMk9CcYkjQ8p8gS6oPwNBxXB5kh1J/MkKhhlyI/GFwFT8Z6T4rZUeoBOJI1fDDIzAi91GGWDhy3KfKCfHMxDCkX2KHIitB6OJI2a9+nyIhS96FA4obeQZXZUOqPbW6pwbH0uCITSh2eC0P6jouOKLKg1O9nw1BFR/cvVDYfQ3s6Yaimo32nyIaj9IDBUFUD+qVoMpYavwlmqK4ZNo2KbCxKx1bADZV2XP4LKdhIDE3c14UCVXdg7T4p2DgM6YVlgKP6ZvDNY1I0jfTOlnYUhlp0YOkPR9W0I9+/GDDUpTmw6P6ySagTy4A2Q30asPiHwQaRysO3dwNWF2ZYunNEzTtwazvcasGBb46J0TQM6aU1gNeAY+EzUqkGZmh8Wxe8aub41EkF1cykjl4LrxpuoELNHRr9PLxSjm+JVI2SqSkU/wGvkOE/RSpxksEopxrlOYOUmJpIbYJVxtA7TCq5M6MTE+OhGWV55q2SqYkcWwKriuMuhRInT666eNnqdR/6/Kabbv/6HVvv7r9327b7tm355v/fvukT1y1buugXitQU+n5lDG1HydRCn0WLLxkhUyMHzoNVZc4JpRbajcLNZ7JwdzcrsFFkajq9qDqdA0yMenW2GVrr2EQyMR7vqQoMO1UmRZ66FIZWF/hfTaQ1ob0wVMUWv6mIIINJkPoEHC23AjtUpsGYVBOr4FWBYcUxJRzqgyNBs2KPIolzvr4ehuoaZn38sd8eOPDbE+T0OB2G7oIjSUPXyyqnxemRQ7ueeOap7Ru6YKiy4WzDTYrpMMSpMXQX3NKAYcFRxTSo4HRCGzC5odrmbjDr+ptiKgxJFKdC6l6YIVXDnF8oOBVqXGJwKqHDHYWbuRtq0GBYe0YlKZERlHjkaysPqORkLMVvwgzpOtp/KAUnY6knLv36UUmM4KSlxlfDUKeOtQOa4tH+FW3AvN9IjIigNPB+mCFlA244LkUZZVD6TSfQtnr7oKZ4aj0M9Wro/t/9b0mnj/10y5p2AO4obv2bJn2trxuOxM0w/+G3NOmbj5wHdwBd7/naE6+8NTY6fHDzBTDUrQHoXbZsQRsAuBlgQOe6r9/f/z/vmQU40neg94v37/r+lvXzAQPMHQCK+RctmgvAUL9WYFIr3DCpOc5ZGKpojnOaYVLzwjBpYUgVVlA4IN4VAACwXwCdASrBAPEAPm0wlEekIqIhJrQbyIANiWVu+F5mBgwNbvz6r9/puR3PT3KZy/2k9s328+pz5zPrs8wv6tfuN7xfpo/0fqAf2bqY/QY8u32Tf3k9L3NhP7p6NPJH9p4k+ZH3j+3/uL7Dehfskwd/Qfo//zvEX5cahfsr/Zb/7OP6iPdn/k+Gbqa+DPYA4JL0X2Av6H/df+h/ePY2+pfQl+g/6L9pvgL/mX9h/5n9+9tz2N+iH+yJv8yCBvgOoPky2mXt0voHmT+ZBFejiN//+3NkebAuw0ZiCObPe/zkRn0Hoe9Uazeh1wFdNLeR+KiSWYrJEW0kP1BDXprJ3Eu6nzjs2QUfjNldEpR80ur5BHBHOOfWWo6PWn2HuIke8Jq/q5+xvLMbnuy/6xJFGYI5mw6gdg5Tm1SS1O4ZyEScj8sD8yGS5eZf8oR6Y72DUuT/UYa3roOrxmwMub/8F3Rt3b2CN8MEzV9wkmywtqYmlguDHmUXUxD5uo1zEJ7sTAJbf2Mg5wiSK+ESBKAUQeRno0OOv/2rlb5eNaDnmwLHFbvtcf5jeMYnRTaNVCWF3uIC9GcMc1AgevOGXsDQ5/jDrQEoBVIEQtCFPPlFNp2l1Kddq0J2UQbzd3F2vijKEAh60J7NOUSMsfuV2LCUTFLe7qxSjVlqqtHy0Hnb8qvNWLP6y9SHNMSldf95pabxu/6gjAGj7iKy+mPrdwW7T2dBXaYuINe+C0ypyw0eJqDaxF7WfFUi9+zaFeRv9UxdGjBOxqWBBjBdQ5wlyQqXYtw1fmaOeSXlkWu2OCCAG3lt65dfscunHmlIhwJRJhMyDlLMdf43gZLwlbTIT0Yhz+o00QFhOXLpLLKyFFxo965C94ammSO8LIaH/NQE/KSg2plm3REvm4rRowocaz8BBQM1MCmfRij+0Dx74eDPR+qtvn+NNvJpWlCHhASd3p71cezVVQ0vdojSj399sEh2baHiq8fbFuZIchRX20pCIv693jgf3vhtOZvNEaxqctkvFIuPVDxM5BAA/vz4QHXfqj3lnvhIFWDCxqaXj3E7r2Cp8D3H9wAd+u75czdcGRE2wTCEVr64/bxAB+zEx706OOKUCakhRAWAuvYxPIC6ivWkW7eayusWfior4cMObI/OcJu7gY9sMtjlEobSvN0jllPoQaOuXZ/r4WaCrQSnGOgK4NwN9mAWIegcA9Qthej1k5rC16AEEvT2lJOALk3gIT0ZZ2ejbGNAXouaLHccmYLpLs7d6nOHlfQVofl1UUWa7V8ZiF0kzL4apAQcZ2IzVWBcOm7LUq+cat2pM4fZ/Ec374DVUWTt8j04k9a2YqYIAZ8YV9OcHh+IjisNpW1nHMsRQhJ3BMyEspEnlAwzPfrGcTCdHb1P/Ovt9F3DataPGskG5cqkB+/Ibu54cwm+sF8PmASbZHVaGDIxReCzq/bgw5EjtfiH8xH9jokaECicS+TU7tna56wUHCQg14cnuppkxeI56KYNFTT3F/mBa9le11Di9H2LqKA9IEikbrc/4rm0PCFNAEVop5zQ7/LBfJMd2MTKIBZzjJnOUGX4RcAEh5QW0EJvY3fX88PLJiqQ6/5az4oRh2I7VMVm54ZFrIHIk95XaoYgNFqUfeGwlEA5OhW0PKVoYrNKEzCqEOYXETEWk8T4J+HQbXKnnW+30MRnbF01wMYDMd98qkTeW97KrsqG8oa58Y2pLKehSnWiuskH613oubrvK1qkECkT/kzePRj5GF93dgdG/NASQdsMoIeh6OE/WAVPH+eJ/hb/kG8hVScyPisCs/08MbSemPljhO6yNmzVLn9l292f43f5E5UK+tEvmSCo2pMs6uJN6H2fMP5o+CSgh22Outo0eVzaIYA+kPW7BZ2am93LIR6LrWCvbxs3CwHlnYqs56ia9JVeleLAYI2EDENYpwCVuRsKdjuaFAzhv1vHbypJPCfrhIhBVVib2GosScMMCI/ssjuBnPvMTxXRcyjI/VsTD45xCDznzikTKxyzcc20FKuSr5RG0CGJxo9H+YfACGgf/nDx/24Zxw69JXQjlZh5MFx0y0dRDq8WzBNPAjrB5Hxjnewz29lhwOfMgG/L38/I4UfKcUGrV+ugLesQiyuNk1/uFfpv8WAhq40cI4CEuM/y8zbBkmt+SVCdr88k46VFLwEZ/OSfwiTLU3zZTkGy8OaWSq7akp7viNt4o/NjEh3Jk01ttX7cx6cWQrfeS4F7vvXZSb+4lDORwa8G/Pb7uf47YXbyv+waPMGgcbVe6w2BYQDNcJIH0K1205USQKNTgc6B6DdvqJzMSVpJa8lHsiLtwl4JnX5Vaqbt3s3ASFyhcwDxd9HfxSt7hcW2hwfLDqTWGvqAzFQmJjD88na7ui57L1l0FYXV4qlDHH55GsqLmaRYHIlq8lMnBtaGcaYgbLTxKGKJ9iU3r3NgC5Nf+vS9X7+V9txMdsSM7KhhuqoLpGparpbOHW46sCzV9HV7CifUAoJK/ZaMFmBeJSzzEiAzmWCM3p69oBJ6CYY9Brx69BFDgiHjLB/3CZS/wySfH4YE2sUBBVSaoPwEKm7A6bdem7PzukmF9PG3FdDnvMKycIYpjzk1leIXoKbf3TL6QRfjhyUzM/T8kP/LW2fFPlVCviYUdcTHcTLpVwicDmCDEYhqBPdUmLm6TnUqGP9Fk0AthR0nWHswGo7y42dYZdBsRfAhP+4E/a1AARjKuwbgtz+U26UkWhAd55Xnwq9IRfcmV4KtujoG5qkiy9S+V5wG23DdEhAzU8wf8ZGB5CjP1NjaWbYLdnov7Qan0gpQMwly+AuXGvLNnf1m7VAm3qzUpojf/E/X+/0ghV9w/vKwSgySLONySBUNADU/hUh7ThtHi5tSCx5lE5gG8iifYtMgDZsGrBo8szxP5to3hgwm3/ZnrZiKGKEcc1O1chRM7S7WjeB471dMxpNPAH0uGXPM7VNDFAFIlcgUb+HF53FOCl4u2HiTS9lGq08QVNi8XS5/LDPq0k9C0sx0r0babU/xDno/2o3Qzmqd0Wr7QiezYD5lKuWz3ncgyM7bsun6hGCAroxW5PmzrlHYI1yS6XHJAOdX+147v924KmU6pHW7jnPCn04c4/RsPdLLIymj7vF9fs4XrVp7u/13AF9muSattlVnBqXXK7sA56Tf7WkqDKfP8xtkmLuQkJ/PJllyplwKPrfbpwIKTzz3StfLdvs7aPW9kNZnT6o/na+WnkuiU9l/sv9E1vTx8YfCVTCdLhe9Y4xH6ZDAC9gjO9Rc81ooqP60eXyIFNxCHxJAMO7FbaQ/QKi2OxtXn+jkM18LHpjuUfc5DuumJncCyraa2f13u5edH2NJIV8LgNOp0s33ptSEYqzA4gQ1iyKqr4RS6OleATC7XMvtXcz5A1fVXsJhKSVM62P42Dd5I4sI8E3S1xRDNSHPEiP/VfEBeAr2i7vd7vaw85z8ieeTs4MsADgVeE0ZdY0nJkbxtzXWxPcWyr1FDOZk99C8Z8XvQP8f1uUMxoM6j8FrBvlNPorirc1rhz5tbnuSxy9ZnUS7M7GqUj6JZ1+p2ZWt3WzMqQvfSdk8c5dcHFkOhJxikdb03T6gWYIOAeNK1s1O3HK0fpoKS7HO6f5Rx59OkU/gV8qLlfZDsJ5OdeUp8cLaFbav2GsUZmn7yIxosl1UebsI0CWEfQl2HKW7gNdtun8vkjpJ7oiCFCh5L0w42FhJrn9FUxFHPCsaWVakr1OhgEFCaNuX4lX0+IPx/FV45yiexvj/PIPmb57oRASn7U3D+YTZTY1fcYYa0icaRLwzLK5Xu/SrTF+zmfRURxhv62qwj3xXLZuLV/P6Fvtb9CrkjVtFz38DPzwuTK4BKldBgsjVQHUN1zF3NIAKlgodTDgZBE4uUhdsmvTGQA5geW1Iime8/FjFO59STF/JGlZQ9lR4GGyNYZYNCKi1M3FwyVBw2jUXYB+Y/A9tGfD+TN8uSvW1Oh17136SbCsWfPHVYwbufJXUuwFqFBdLt8/TnXNF3E1DA37TRgkW+hPf0/VObDj0ofSU6gJp7/2iw5INS/rHPgQj56m8rmAIZqw9XyWwXIAmc8ZYpVAeHxvmpWc7ENIO44PBXEKDTuGfE7U91/M5mDpTiJT0XtK7qdoqbCQ4a0y9jbVud/X51aN6UppJMaaEkTZQ+ay7/irpcBaKx3MI+7AYiW/pNRqLcNKQHtNQwv77INOpLq1DHviY3LTsIwQRy4JP6GWOCbjMYHznrU9PIG8ipDmvoBx0r4QHshrXwT6uR+1VHVdMkaNfWqCQc3lQ18WIOGhFoWxiBHc809YRqEDbY2b6Ui3ft8EqVvwSWJd1N3zx+4W6/bQRh7mhGR+t790TYpK73oPu3tYHfB8mzIeIJSPbpJufzog8t+98/Ok4qQwUo78TpdL5cGX3Kqyc4KNpYRpRTXdGQaQsNM7xYYLzbfatfKDZd8NiAsJRwZf+6RhdiyG1HCykMB/r1VtGOZuVbUrHhUkYLmGv/H5KpvqR6zbS70HLCAuaKVeeghiiFcbCV2t25fmcu+Yqb24CwEhVoTORqaKgMMcAhGkx8U2oTsj21USKheNemqgmpY78zuFREboc/yvtHC/uVazohEIDLxQ3G/Mc8vwOFHn9/E/11dyFikc7/Zf8GNes7/xx1yHu/iFUYkWAxjG4zU95bpfotGaPjvKEC9Kqe/AkBOz6htE/WyQKIb0/46IEWN6wFURYH68x7ovWswQkPmRQkVinVmcHOJC1WwFOQ+3jrVS0IyBoRu9aCq36mIQup8urQpcm/QKSbwMDy/50NHe2c787oZeYpamNGsbE0sdIE6peHxz53bO2EBFjd42ONCIaLjpj8te+51HOLTQeLf9FoT1PT7NviSwzWD2NAr/T5ZyJUPBel2sZPy071f+Sy/5zznzMTHqLHphF+IrR5miYQf05x11eQ/GVDcmIZlC64xWAf/DVqMKoer/XYo42gzOJa4F6F8qcNiMHIXFqrV/kIUDBjCm8FsSwV1dTcMY1nkcgjK6Z0aGSTuG9syZRYbYCXiULIWMJCKcQEFOwGGzsin/Gsdl1jhJr/v+HXrwSSMu2T0nK8u/4rGpgCb+8ZkdCgA0hPxLwduTzsRJdTX3jw3MOlvC6UjBnPuuc/PIliYAjuq3m/T1/YAXlmJNDm7rUWGR7mmWVlu/vaAOf8ydGpP7txL7Bzg/WhvplGbs2hOe3x5UJDCHVDd1EVUQ9Q8IYm5IDxyPmMOksU7sxe1BG+Nh4bSctbGVw/5HjXy3dMHMRxMkxerFaxIu74dT16BpYTtFpZ/hBuaBBvf+tudHZ2mJmQ3w9BIVqu+Q0kK5RgwUUrA3s/9qR9zjTIHxFzLek/e2Q+6y4B4iHO6NIiUS83vIPGYuT0/NeXpP5oP/nozpua3jZs1NkIGIEFln9jiQ49t32uRaLqGDm/yMz8Tngd2ET+xilPV+J7rjSFzYZcessjUPj3CfA64xn/nzrVwodYfjFrR95gf8W3EvPdrf4HfXXpobccFteShnMU9hV0bi9qw09wjLk06V2V6+m6u78aRB6wGianwowEM4Dotrp7nL7bNf7rcLZpAZI63e8rGHUpWQ3PWmN0NBAFDeIQtSn/rkc7YQeD3zbkQs0KqKcEbqGWn2Ztiwb8XMTGa1V+N3Twz9G0ETG729V0sgVGVx2svWygphGWAXtVn3bWAmeCf3Hr8pH4dWZM4t08izM0jU8IURhHF9qg7dMfI774jWHbuy0CRPkUNKuzF3dsoYAtk9jgQ/NPzn37TLqC/b7c9ME952Fp2kudYzCB+yxKW6V4CBgSoZ2xwTINEPg59BGywCk2O4EW86SoKs1joiVSb0m6oCb+Gj9LW7p/BJKhg43icU9lBdHdsQj/byz3N6+kaqwZbHAcmxzFW7TTZCGeM+2vyaaiFdxMQ5W0v2pqTn13G+UT71loIg6JSSVuoqtBls5U9gInhY3ivnx/O5yAht1yCtJbm/XsnuzX6njUco2xFlGZBPeJEW/07qm2CrUSKZprL8gC0/gvEyk1vOYQY+2Z9pAkwJYpTjLMYBHyzq7ELWUpPUIhhmaugUSFYszAwd0zcQkvw/YllwNlYaZDkz3yZnBM2BLBZLD1l0itm3One2b1RZkQZPNk1+f4B5A6kw5bvhXXg/Fy8bn5/Lvq+4KlMN6Fb1biUb0TUnKHjSw4dI084hXgkBozkooKvVF0Jehen/F3Juc5UBadgfpyezKXpipt81ef8JWP+gSdTK1Yc8Ye5VrF5yuFOMEBySe6NiEd19NWAW/ebIF71vSNIoihXhsgBeFu/UOAyow/UINtwiMnzjdb+yYc7A5TyaI5OzhB7sgPGp5Ld5ve7LtbrC5vRoBpRGwUEq5Vx+aACKMHAevAMwpDgHpPFERgID/PSeooOzXm8WjUf05wcXlot2iHOmEmHv8XkUoBbXlXv6AGxDGmCi3yru40mhhXWPjCrcmYuLkESnh5egWwNB9hWf99S5O3TAfm9v3r2vex46lTHVcAx98vOgo4wa1PT+kPOTwk7Bmu6blXvrkploPUe2I12JEkbC4Fb8Eef9M81lOJ4QHx8xgNaBtYQouulzqS8wz0IWaKAIi6CPsiBDJNovTJsUaAEpmBcytpHPr9Sw5sbNmAi92kOWKJpRt1JgZqZPbzWAdQimM/hHkkxF01FUtYfjMEAg//55M9KiSd8tYGTz8mJguxGkhKNLYJxFl1/cJv+b3kdb+vvLPa9v5yacfvr8J4yQBz249E4eDRYj5dYt+rHDH85Z4BBJj+ca22SEg4W+h2ZdLpB6B3e6W26Zp0T7UaM21nDNA7Dm+1rSW/ikFKN3Mu5729RHaCthPrSKZMVSIFDFtOX+pfLVy6EnhbPOzqWVK0oC6oHp7C7T20qKNmU8wr2Do+KELEV+bQuF/PSbX7JmwTeIEILoNF/4KZjeLIx5mYixiOl4meH0zps8oL6JgLe7J8yJ+38sxANasaiNeT9rB1XROIom9Lb08jjUP/aRWd+TvCHQfkfHJJAggD4vKYxAGbx8wQ0jbj8wEZexVeaoGK8c6YX7JH/5cL8gwuYFW7Rm7Ao8PfQklZ7/b3MpnFk1H01W1ucv0evYevb5aNWzu9QWKQblL55vX8w4tZNG55x62OPH3e/lDgiyk4oFKG8OVe6idyyGNSs+Mv0UDtVGfIhEc2AVCQJuLdFYIUqQ0iPmLBLZU+ANu2aXBUDLQsc/IJXv784+Z1cqg9uWn7UPVlVt8leOhPLXVdyuWQSTyQ858EYRam6A71jG+Rus4wl43ngmkRANW5dfIy/HRmdKiMj9pGkCGYkFwCMFGEjdjOJf6r9N/RmVgfMOR9RX07j/iB2zJRyHdsnkpa/EgFzcefUHx8E1NG8gKd8+NY3GVp+MtSQ3/hq/R8wJDjLUxW9Z7LEceQoiVpYiE3M1x2hgAAAAAAAAAAAA=", joy: "data:image/webp;base64,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", sad: "data:image/webp;base64,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", owner: "data:image/webp;base64,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",};export const HANDLE_GEO = { hope: { w: 193, h: 241, board: { x: 96, y: 154.7, w: 140.1, h: 70.8, angle: 0 } }, joy: { w: 198, h: 244, board: { x: 98.5, y: 139.9, w: 152.5, h: 73.1, angle: -2.9 } }, sad: { w: 186, h: 248, board: { x: 93.2, y: 165.9, w: 125.8, h: 66, angle: 0 } }, owner: { w: 208, h: 250, board: { x: 100, y: 150, w: 92, h: 66, angle: -8 } },} as const;'use client';import * as React from 'react';export const EASE_OUT = 'cubic-bezier(0.16, 1, 0.3, 1)';export const EASE_SETTLE = 'cubic-bezier(0.22, 1.18, 0.36, 1)';/** Thrown things (indicators, thumbs): a slight overshoot on transform only. */export const EASE_THROW = 'cubic-bezier(0.34, 1.36, 0.64, 1)';/** * The press every button primitive shares: a 3% give that eases in and settles back. * Tailwind v4's scale-* writes the `scale` property, so `scale` has to be in the list * or the press snaps. */export const INTERACTION_PRESS = 'transition-[background-color,color,box-shadow,opacity,scale] duration-200 ease-[cubic-bezier(0.16,1,0.3,1)] active:scale-[0.97] motion-reduce:transition-none motion-reduce:active:scale-100';export const INTERACTION_FOCUS ='focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50 focus-visible:ring-offset-2 focus-visible:ring-offset-background';const query = '(prefers-reduced-motion: reduce)';const subscribe = (notify: () => void) => { const media = window.matchMedia(query); media.addEventListener('change', notify); return () => media.removeEventListener('change', notify);};export const useInteractionReducedMotion = () => React.useSyncExternalStore(subscribe, () => window.matchMedia(query).matches, () => false);export function useInteractionActivity<T extends Element>() { const ref = React.useRef<T>(null); const [visible, setVisible] = React.useState(false); const [hidden, setHidden] = React.useState(false); React.useEffect(() => { const el = ref.current; if (!el) return; const observer = new IntersectionObserver(([entry]) => setVisible(entry.isIntersecting)); observer.observe(el); const visibility = () => setHidden(document.hidden); visibility(); document.addEventListener('visibilitychange', visibility); return () => { observer.disconnect(); document.removeEventListener('visibilitychange', visibility); }; }, []); return { ref, active: visible && !hidden };}export function interactionIcon(on: boolean, reduced: boolean): React.CSSProperties { return { opacity: on ? 1 : 0, transform: on ? 'none' : 'scale(0.6)', filter: on ? 'blur(0px)' : 'blur(3px)', transition: reduced ? 'none' : `opacity 220ms ${EASE_OUT}, transform 380ms ${EASE_OUT}, filter 220ms ${EASE_OUT}` };}/** Sample recent movement rather than averaging a long drag and losing its release velocity. */export type PointerSample = { x: number; time: number };export function samplePointer(samples: PointerSample[], x: number, time: number) { samples.push({ x, time }); while (samples.length > 2 && time - samples[0].time > 100) samples.shift();}export function releaseVelocity(samples: PointerSample[], now: number) { if (samples.length < 2 || now - samples[samples.length - 1].time > 100) return 0; const first = samples[0], last = samples[samples.length - 1]; return (last.x - first.x) / Math.max(1, last.time - first.time);}/** Smooth Apple/rational rubber-band curve: continuous exponential-like resistance without linear kinks. */export function rubberBand(overshoot: number, dimension = 320, constant = 0.55): number { const d = dimension || 320; const abs = Math.abs(overshoot); return Math.sign(overshoot) * (1 - 1 / ((abs * constant) / d + 1)) * d;}/** Projects resting travel from release velocity (velocity in px/ms; time in seconds). */export function projectInertia(distance: number, velocity: number, time = 0.12): number { return distance + velocity * 1000 * time;}/** Smooths incoming release velocity toward a boundary so springs don't slam or clip into walls. */export function softenVelocity(velocity: number, distanceToTarget: number, factor = 10): number { const maxAllowed = Math.abs(distanceToTarget) * factor; return Math.sign(velocity) * Math.min(Math.abs(velocity), maxAllowed);}/** A damped spring sampled by WAAPI: tuned for organic lightness with a hint of life (3% breath). */export function springFrames( from: number, to: number, velocity = 0, duration = 480, config: { omega?: number; damping?: number; steps?: number } = {},) { const { omega = 16, damping = 0.74, steps = 36 } = config; const damped = omega * Math.sqrt(Math.max(0.001, 1 - damping * damping)); const displacement = from - to; const coefficient = (velocity * 1000 + damping * omega * displacement) / damped; return Array.from({ length: steps + 1 }, (_, i) => { const t = (i / steps) * (duration / 1000); const value = to + Math.exp(-damping * omega * t) * (displacement * Math.cos(damped * t) + coefficient * Math.sin(damped * t)); return { value: i === steps ? to : value, offset: i / steps }; });}Registry item: /r/username.json


