use-scroll-animate 2.3.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"physics.js","sources":["../../src/components/physics/spring.ts","../../src/components/physics/spring-effect.ts","../../src/components/physics/draggable.ts","../../src/components/physics/overscroll.ts","../../src/components/physics/index.ts"],"sourcesContent":["import { prefersReducedMotion, raf, caf, now, applyFrame, EASE_SPRING } from '../base';\n\n/**\n * Spring physics core (v2.3). A damped harmonic oscillator integrated in\n * 1 ms steps: `stiffness` (k, N/m), `damping` (c) and `mass` (m). Used by\n * the `<usa-spring>`, `<usa-draggable>` and `<usa-overscroll>` elements and\n * exported for your own animations:\n *\n * - `springEasing()` turns a spring into a CSS `linear()` easing + duration\n * for WAAPI / CSS (falls back to a cubic-bezier overshoot where `linear()`\n * is unsupported);\n * - `spring(el, keyframes, cfg)` animates with it;\n * - `createSpring()` is an interruptible, velocity-preserving value for\n * gestures (drag, inertia, snap).\n */\nexport interface SpringConfig {\n /** Spring stiffness (default 170). Higher = faster, snappier. */\n stiffness?: number;\n /** Damping / friction (default 26). Lower = more bounces. */\n damping?: number;\n /** Mass (default 1). Higher = slower, heavier. */\n mass?: number;\n /** Initial velocity in progress units per second (default 0). */\n velocity?: number;\n /** Rest threshold (default 0.001). */\n precision?: number;\n}\n\nexport type SpringPreset = 'default' | 'gentle' | 'wobbly' | 'stiff' | 'bouncy' | 'slow' | 'molasses';\n\nexport const SPRING_PRESETS: Record<SpringPreset, Required<Pick<SpringConfig, 'stiffness' | 'damping' | 'mass'>>> = {\n default: { stiffness: 170, damping: 26, mass: 1 },\n gentle: { stiffness: 120, damping: 14, mass: 1 },\n wobbly: { stiffness: 180, damping: 12, mass: 1 },\n stiff: { stiffness: 210, damping: 20, mass: 1 },\n bouncy: { stiffness: 300, damping: 10, mass: 1 },\n slow: { stiffness: 280, damping: 60, mass: 1 },\n molasses: { stiffness: 280, damping: 120, mass: 1 },\n};\n\nexport type SpringInput = SpringPreset | SpringConfig | string | undefined;\n\n/** Resolve a preset name or a partial config to a full config. */\nexport function resolveSpring(input?: SpringInput): Required<SpringConfig> {\n const base = typeof input === 'string' ? SPRING_PRESETS[input as SpringPreset] || SPRING_PRESETS.default : { ...SPRING_PRESETS.default, ...(input || {}) };\n const pos = (v: unknown, d: number) => (typeof v === 'number' && Number.isFinite(v) && v > 0 ? v : d);\n const o = (typeof input === 'object' && input) || {};\n return {\n stiffness: pos(base.stiffness, 170),\n damping: Math.max(0, Number.isFinite(base.damping) ? base.damping : 26),\n mass: pos(base.mass, 1),\n velocity: Number.isFinite(o.velocity) ? (o.velocity as number) : 0,\n precision: pos(o.precision, 0.001),\n };\n}\n\n/** One integration step (semi-implicit Euler) towards `to`. Returns [x, v]. */\nexport function stepSpring(cfg: Required<SpringConfig>, x: number, v: number, to: number, dt: number): [number, number] {\n const a = (-cfg.stiffness * (x - to) - cfg.damping * v) / cfg.mass;\n const nv = v + a * dt;\n return [x + nv * dt, nv];\n}\n\nconst cache = new Map<string, { values: number[]; duration: number }>();\n\n/**\n * Sample the spring from 0 to 1 at `fps` (default 60). `values` may exceed 1\n * (overshoot); `duration` is the time to rest, in ms (max 10 s).\n */\nexport function springSamples(input?: SpringInput, fps = 60): { values: number[]; duration: number } {\n const cfg = resolveSpring(input);\n const key = `${cfg.stiffness}|${cfg.damping}|${cfg.mass}|${cfg.velocity}|${cfg.precision}|${fps}`;\n const hit = cache.get(key);\n if (hit) return hit;\n const values = [0];\n let x = 0;\n let v = cfg.velocity;\n const frame = 1000 / fps;\n let t = 0;\n let next = frame;\n while (t < 10000) {\n [x, v] = stepSpring(cfg, x, v, 1, 0.001);\n t += 1;\n if (t >= next) {\n values.push(x);\n next += frame;\n if (Math.abs(1 - x) < cfg.precision && Math.abs(v) < cfg.precision * 10) break;\n }\n }\n values[values.length - 1] = 1;\n const out = { values, duration: Math.round(t) };\n if (cache.size > 64) cache.clear();\n cache.set(key, out);\n return out;\n}\n\n/** `true` when CSS `linear()` easing is supported. */\nexport function supportsLinearEasing(): boolean {\n return typeof CSS !== 'undefined' && typeof CSS.supports === 'function' && CSS.supports('animation-timing-function', 'linear(0, 1)');\n}\n\n/**\n * The spring as `{ easing, duration }` for `el.animate()` / CSS. `easing` is\n * a `linear(…)` function with at most `points` stops (default 48), or a\n * cubic-bezier overshoot where `linear()` is unsupported.\n */\nexport function springEasing(input?: SpringInput, points = 48): { easing: string; duration: number } {\n const { values, duration } = springSamples(input);\n if (!supportsLinearEasing()) return { easing: EASE_SPRING, duration: Math.min(duration, 1200) };\n return { easing: linearEasing(values, points), duration };\n}\n\n/** Build a CSS `linear()` easing from samples (down-sampled to `points`). */\nexport function linearEasing(values: number[], points = 48): string {\n const n = values.length;\n const step = Math.max(1, Math.ceil((n - 1) / Math.max(2, points - 1)));\n const out: string[] = [];\n for (let i = 0; i < n - 1; i += step) out.push(String(Math.round(values[i] * 1000) / 1000));\n out.push('1');\n return `linear(${out.join(', ')})`;\n}\n\n/**\n * Animate `el` between keyframes with spring timing (WAAPI). Under reduced\n * motion the final frame is applied immediately. Returns the Animation (or\n * `null` without WAAPI / under reduced motion).\n */\nexport function spring(el: Element, keyframes: Keyframe[], input?: SpringInput, options: KeyframeAnimationOptions = {}): Animation | null {\n const target = el as HTMLElement;\n if (prefersReducedMotion() || typeof target.animate !== 'function') {\n applyFrame(target, keyframes[keyframes.length - 1]);\n return null;\n }\n const { easing, duration } = springEasing(input);\n return target.animate(keyframes, { duration, easing, fill: 'both', ...options });\n}\n\n/* ------------------------------------------------------------------ */\n/* Interactive springs */\n/* ------------------------------------------------------------------ */\n\nexport interface SpringValueOptions {\n /** Start value (default 0). */\n value?: number;\n /** Spring config or preset (default `'default'`). */\n spring?: SpringInput;\n /** Called with the value every frame (and on `jump()`). */\n onUpdate?: (value: number, velocity: number) => void;\n /** Called when the value comes to rest at its target. */\n onRest?: (value: number) => void;\n}\n\nexport interface SpringValue {\n readonly value: number;\n /** Units per second. */\n readonly velocity: number;\n readonly target: number;\n readonly animating: boolean;\n /** Animate to `target`, optionally with a new initial velocity (units/s). */\n set(target: number, velocity?: number): void;\n /** Jump to `value` with no animation. */\n jump(value: number): void;\n /** Stop where it is. */\n stop(): void;\n /** Change the spring config. */\n configure(spring: SpringInput): void;\n}\n\n/**\n * An interruptible spring-animated number: call `set()` as often as you like,\n * the motion keeps its velocity (like iOS / Framer springs). Reduced motion\n * jumps straight to the target.\n */\nexport function createSpring(opts: SpringValueOptions = {}): SpringValue {\n let cfg = resolveSpring(opts.spring);\n let x = opts.value ?? 0;\n let v = 0;\n let to = x;\n let id = 0;\n let last = 0;\n let running = false;\n const stop = () => {\n if (running) caf(id);\n running = false;\n };\n const loop = () => {\n const t = now();\n let dt = Math.min(64, Math.max(1, t - last));\n last = t;\n while (dt > 0) {\n const s = Math.min(dt, 4);\n [x, v] = stepSpring(cfg, x, v, to, s / 1000);\n dt -= s;\n }\n const scale = Math.max(1, Math.abs(to) * 0.0005);\n if (Math.abs(to - x) < cfg.precision * scale * 10 && Math.abs(v) < cfg.precision * scale * 100) {\n x = to;\n v = 0;\n running = false;\n opts.onUpdate?.(x, 0);\n opts.onRest?.(x);\n return;\n }\n opts.onUpdate?.(x, v);\n id = raf(loop);\n };\n const api: SpringValue = {\n get value() {\n return x;\n },\n get velocity() {\n return v;\n },\n get target() {\n return to;\n },\n get animating() {\n return running;\n },\n set(target, velocity) {\n to = target;\n if (velocity !== undefined && Number.isFinite(velocity)) v = velocity;\n if (prefersReducedMotion()) {\n api.jump(target);\n opts.onRest?.(target);\n return;\n }\n if (!running) {\n running = true;\n last = now();\n id = raf(loop);\n }\n },\n jump(value) {\n stop();\n x = to = value;\n v = 0;\n opts.onUpdate?.(x, 0);\n },\n stop() {\n stop();\n v = 0;\n to = x;\n },\n configure(input) {\n cfg = resolveSpring(input);\n },\n };\n return api;\n}\n\n/* ------------------------------------------------------------------ */\n/* Inertia + snapping */\n/* ------------------------------------------------------------------ */\n\n/**\n * Where a flick at `velocity` (units/s) comes to rest with exponential\n * decay: `value + velocity · timeConstant` (default 0.325 s, iOS-like).\n */\nexport function projectInertia(value: number, velocity: number, timeConstant = 0.325): number {\n return value + velocity * timeConstant;\n}\n\n/** Snap to a grid (`number`) or the nearest of a list of points. */\nexport function snapTo(value: number, to: number | number[] | null | undefined): number {\n if (Array.isArray(to)) {\n if (!to.length) return value;\n return to.reduce((best, p) => (Math.abs(p - value) < Math.abs(best - value) ? p : best), to[0]);\n }\n if (typeof to === 'number' && to > 0) return Math.round(value / to) * to;\n return value;\n}\n\n/** iOS-style rubber-band resistance: how far content moves when pulled `distance` past an edge. */\nexport function rubberBand(distance: number, dimension: number, constant = 0.55): number {\n if (dimension <= 0) return 0;\n const sign = distance < 0 ? -1 : 1;\n const d = Math.abs(distance);\n return sign * (1 - 1 / ((d * constant) / dimension + 1)) * dimension;\n}\n","import { defineElement, type UsaElement } from '../base';\nimport { springEasing, type SpringInput } from './spring';\nimport css from './spring-effect.css?raw';\n\nexport const SPRING_EFFECTS = ['bounce-in', 'pop', 'drop', 'jelly', 'rubber-band'] as const;\nexport type SpringEffect = (typeof SPRING_EFFECTS)[number];\n\n/** Entrance effects start hidden; attention effects (jelly, rubber-band) play on visible content. */\nconst ENTRANCE = new Set<string>(['bounce-in', 'pop', 'drop']);\n\n/** Keyframes of a spring effect (entrances use spring timing, attention effects fixed frames). */\nexport function springEffectKeyframes(effect: string, reduced = false): Keyframe[] {\n if (reduced) return ENTRANCE.has(effect) ? [{ opacity: 0 }, { opacity: 1 }] : [{ opacity: 1 }, { opacity: 1 }];\n switch (effect) {\n case 'pop':\n return [{ opacity: 0, transform: 'scale(0.5)' }, { opacity: 1, transform: 'scale(1)' }];\n case 'drop':\n return [{ opacity: 0, transform: 'translate3d(0, -120%, 0)' }, { opacity: 1, transform: 'translate3d(0, 0, 0)' }];\n case 'jelly':\n return [\n { transform: 'scale3d(1, 1, 1)' },\n { transform: 'scale3d(1.25, 0.75, 1)', offset: 0.3 },\n { transform: 'scale3d(0.75, 1.25, 1)', offset: 0.4 },\n { transform: 'scale3d(1.15, 0.85, 1)', offset: 0.5 },\n { transform: 'scale3d(0.95, 1.05, 1)', offset: 0.65 },\n { transform: 'scale3d(1.05, 0.95, 1)', offset: 0.75 },\n { transform: 'scale3d(1, 1, 1)' },\n ];\n case 'rubber-band':\n return [\n { transform: 'scale3d(1, 1, 1)' },\n { transform: 'scale3d(1.3, 0.7, 1)', offset: 0.3 },\n { transform: 'scale3d(0.8, 1.2, 1)', offset: 0.45 },\n { transform: 'scale3d(1.1, 0.9, 1)', offset: 0.6 },\n { transform: 'scale3d(0.97, 1.03, 1)', offset: 0.8 },\n { transform: 'scale3d(1, 1, 1)' },\n ];\n default:\n return [{ opacity: 0, transform: 'scale(0.3)' }, { opacity: 1, transform: 'scale(1)' }];\n }\n}\n\nconst DEFAULT_PRESET: Record<string, string> = { 'bounce-in': 'bouncy', pop: 'wobbly', drop: 'bouncy' };\n\n/**\n * `<usa-spring>` — spring / bounce effects on its content.\n *\n * Attributes: `effect` (`bounce-in` default, `pop`, `drop`, `jelly`,\n * `rubber-band`), `trigger` (`view` default, `hover`, `click`, `manual`),\n * `preset` (`gentle`, `wobbly`, `stiff`, `bouncy`, …) or `stiffness` /\n * `damping` / `mass`, `delay` (ms), `duration` (ms, attention effects; 900),\n * `repeat` (replay every time it re-enters the view), `block`.\n * Events: `usa:complete`. Reduced motion: entrances fade, attention effects do nothing.\n */\nexport interface UsaSpringElement extends UsaElement {\n effect: string;\n play(): Promise<void>;\n reset(): void;\n}\n\nexport function defineSpring(tag = 'usa-spring'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaSpring extends Base {\n static get observedAttributes(): string[] {\n return ['effect', 'trigger', 'repeat'];\n }\n\n private _anim: Animation | null = null;\n\n get effect(): string {\n return this.str('effect', 'bounce-in');\n }\n set effect(v: string) {\n this.setAttribute('effect', v);\n }\n\n private config(): SpringInput {\n if (this.hasAttribute('stiffness') || this.hasAttribute('damping') || this.hasAttribute('mass'))\n return { stiffness: this.num('stiffness', 170), damping: this.num('damping', 26), mass: this.num('mass', 1) };\n return this.str('preset', DEFAULT_PRESET[this.effect] || 'wobbly');\n }\n\n mount(): void {\n const trigger = this.str('trigger', 'view');\n const entrance = ENTRANCE.has(this.effect);\n if (trigger === 'view') {\n if (entrance) this.setAttribute('data-state', 'hidden');\n this.inView((visible) => {\n if (visible) this.play();\n else if (this.flag('repeat') && entrance) this.reset();\n }, { threshold: 0.15 });\n } else {\n if (trigger === 'hover') this.listen(this, 'pointerenter', () => this.play());\n if (trigger === 'click') {\n this.listen(this, 'click', () => this.play());\n this.listen(this, 'keydown', (e: KeyboardEvent) => (e.key === 'Enter' || e.key === ' ') && !e.repeat && this.play());\n }\n }\n }\n\n unmount(): void {\n this._anim?.cancel();\n this._anim = null;\n }\n\n reset(): void {\n this._anim?.cancel();\n this._anim = null;\n if (ENTRANCE.has(this.effect)) this.setAttribute('data-state', 'hidden');\n }\n\n async play(): Promise<void> {\n const effect = this.effect;\n const reduced = this.reduced;\n this._anim?.cancel();\n this.setAttribute('data-state', 'playing');\n const frames = springEffectKeyframes(effect, reduced);\n const timing: KeyframeAnimationOptions = ENTRANCE.has(effect) && !reduced\n ? springEasing(this.config())\n : { duration: reduced ? 250 : this.num('duration', 900), easing: 'ease-out' };\n const a = this.motion(this, frames, { ...timing, delay: this.num('delay', 0), fill: 'backwards' });\n this._anim = a;\n if (a) {\n try {\n await a.finished;\n } catch {\n return;\n }\n if (this._anim !== a) return;\n }\n this._anim = null;\n this.setAttribute('data-state', 'done');\n this.emit('complete', { effect });\n }\n },\n { id: 'spring', text: css }\n );\n}\n","import { defineElement, clamp, type UsaElement } from '../base';\nimport { createSpring, projectInertia, snapTo, rubberBand, type SpringValue } from './spring';\nimport css from './draggable.css?raw';\n\n/**\n * `<usa-draggable>` — drag its content with the pointer (mouse, touch, pen)\n * or the arrow keys; physics on release.\n *\n * Attributes: `axis` (`both` default, `x`, `y`), `spring-back` (return to\n * the origin with a spring), `inertia` (keep gliding after a flick),\n * `snap` (grid size like `80`, or points like `0,120,240`), `bounds`\n * (`parent` = stay inside the parent box, rubber-banding past its edges),\n * `preset` (spring, default `wobbly`), `step` (arrow-key step, px, 16),\n * `disabled`. Methods: `moveTo(x, y, animate?)`, `reset()`. Events:\n * `usa:drag-start`, `usa:drag-end` (`{ x, y, vx, vy }`), `usa:settle`.\n * Reduced motion: positions change instantly (no spring or inertia).\n */\nexport interface UsaDraggableElement extends UsaElement {\n readonly x: number;\n readonly y: number;\n readonly dragging: boolean;\n moveTo(x: number, y: number, animate?: boolean): void;\n reset(): void;\n}\n\nconst parseSnap = (s: string): number | number[] | null => {\n if (!s.trim()) return null;\n const parts = s.split(',').map((p) => Number(p.trim())).filter((n) => Number.isFinite(n));\n if (!parts.length) return null;\n return s.includes(',') ? parts : parts[0];\n};\n\nexport function defineDraggable(tag = 'usa-draggable'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaDraggable extends Base {\n static get observedAttributes(): string[] {\n return ['axis', 'disabled', 'preset'];\n }\n\n private _x = 0;\n private _y = 0;\n private _sx!: SpringValue;\n private _sy!: SpringValue;\n private _drag: { id: number; px: number; py: number; ox: number; oy: number; samples: [number, number, number][] } | null = null;\n\n get x(): number {\n return this._x;\n }\n get y(): number {\n return this._y;\n }\n get dragging(): boolean {\n return !!this._drag;\n }\n\n private render(): void {\n this.style.transform = `translate3d(${this._x}px, ${this._y}px, 0)`;\n this.style.setProperty('--usa-drag-x', `${this._x}px`);\n this.style.setProperty('--usa-drag-y', `${this._y}px`);\n }\n\n private axis(): string {\n return this.str('axis', 'both');\n }\n\n /** Bounds relative to the origin, from the parent box. */\n private limits(): { minX: number; maxX: number; minY: number; maxY: number } | null {\n if (this.str('bounds') !== 'parent' || !this.parentElement) return null;\n const p = this.parentElement.getBoundingClientRect();\n const r = this.getBoundingClientRect();\n const ox = r.left - this._x;\n const oy = r.top - this._y;\n return { minX: p.left - ox, maxX: p.right - ox - r.width, minY: p.top - oy, maxY: p.bottom - oy - r.height };\n }\n\n mount(): void {\n let settled = 0;\n const rest = () => {\n if (++settled >= 2) {\n settled = 0;\n this.removeAttribute('data-moving');\n this.emit('settle', { x: this._x, y: this._y });\n }\n };\n const spring = this.str('preset', 'wobbly');\n this._sx = createSpring({ value: this._x, spring, onUpdate: (v) => ((this._x = v), this.render()), onRest: rest });\n this._sy = createSpring({ value: this._y, spring, onUpdate: (v) => ((this._y = v), this.render()), onRest: rest });\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n this.setAttribute('aria-roledescription', 'draggable');\n this.listen(this, 'pointerdown', (e: PointerEvent) => this.start(e));\n this.listen(this, 'pointermove', (e: PointerEvent) => this.move(e));\n this.listen(this, 'pointerup', (e: PointerEvent) => this.end(e));\n this.listen(this, 'pointercancel', (e: PointerEvent) => this.end(e));\n this.listen(this, 'keydown', (e: KeyboardEvent) => this.key(e));\n this.render();\n }\n\n unmount(): void {\n this._sx?.stop();\n this._sy?.stop();\n this._drag = null;\n }\n\n private start(e: PointerEvent): void {\n if (this.flag('disabled') || (e.pointerType === 'mouse' && e.button !== 0)) return;\n this._sx.stop();\n this._sy.stop();\n this._drag = { id: e.pointerId, px: e.clientX, py: e.clientY, ox: this._x, oy: this._y, samples: [[e.clientX, e.clientY, typeof e.timeStamp === 'number' ? e.timeStamp : Date.now()]] };\n try {\n this.setPointerCapture?.(e.pointerId);\n } catch {\n /* synthetic events */\n }\n this.setAttribute('data-dragging', '');\n this.emit('drag-start', { x: this._x, y: this._y });\n }\n\n private move(e: PointerEvent): void {\n const d = this._drag;\n if (!d || e.pointerId !== d.id) return;\n const axis = this.axis();\n let x = axis === 'y' ? d.ox : d.ox + e.clientX - d.px;\n let y = axis === 'x' ? d.oy : d.oy + e.clientY - d.py;\n const b = this.limits();\n if (b) {\n const band = (v: number, lo: number, hi: number, dim: number) => (v < lo ? lo + rubberBand(v - lo, dim) : v > hi ? hi + rubberBand(v - hi, dim) : v);\n x = band(x, b.minX, b.maxX, 200);\n y = band(y, b.minY, b.maxY, 200);\n }\n this._x = x;\n this._y = y;\n d.samples.push([e.clientX, e.clientY, typeof e.timeStamp === 'number' ? e.timeStamp : Date.now()]);\n if (d.samples.length > 6) d.samples.shift();\n this.render();\n this.emit('drag', { x, y });\n }\n\n private velocity(): [number, number] {\n const s = this._drag?.samples || [];\n if (s.length < 2) return [0, 0];\n const a = s[0];\n const b = s[s.length - 1];\n const dt = (b[2] - a[2]) / 1000;\n if (dt <= 0 || dt > 0.3) return [0, 0];\n return [(b[0] - a[0]) / dt, (b[1] - a[1]) / dt];\n }\n\n private end(e: PointerEvent): void {\n const d = this._drag;\n if (!d || e.pointerId !== d.id) return;\n let [vx, vy] = this.velocity();\n const axis = this.axis();\n if (axis === 'y') vx = 0;\n if (axis === 'x') vy = 0;\n this._drag = null;\n this.removeAttribute('data-dragging');\n let tx = this._x;\n let ty = this._y;\n if (this.flag('spring-back')) {\n tx = 0;\n ty = 0;\n } else {\n if (this.flag('inertia') && !this.reduced) {\n tx = projectInertia(tx, vx);\n ty = projectInertia(ty, vy);\n }\n [tx, ty] = this.constrain(tx, ty);\n }\n this.emit('drag-end', { x: tx, y: ty, vx, vy });\n this.go(tx, ty, vx, vy);\n }\n\n private constrain(x: number, y: number): [number, number] {\n const snap = parseSnap(this.str('snap'));\n let tx = snapTo(x, snap);\n let ty = snapTo(y, snap);\n const b = this.limits();\n if (b) {\n tx = clamp(tx, b.minX, Math.max(b.minX, b.maxX));\n ty = clamp(ty, b.minY, Math.max(b.minY, b.maxY));\n }\n const axis = this.axis();\n return [axis === 'y' ? 0 : tx, axis === 'x' ? 0 : ty];\n }\n\n private go(x: number, y: number, vx = 0, vy = 0): void {\n this.setAttribute('data-moving', '');\n this._sx.set(x, vx);\n this._sy.set(y, vy);\n }\n\n private key(e: KeyboardEvent): void {\n if (this.flag('disabled')) return;\n const step = this.num('step', 16);\n const snap = parseSnap(this.str('snap'));\n const s = typeof snap === 'number' ? snap : step;\n const map: Record<string, [number, number]> = { ArrowLeft: [-s, 0], ArrowRight: [s, 0], ArrowUp: [0, -s], ArrowDown: [0, s] };\n if (e.key === 'Home' || e.key === 'Escape') {\n e.preventDefault();\n this.reset();\n return;\n }\n const m = map[e.key];\n if (!m) return;\n e.preventDefault();\n const [tx, ty] = this.flag('spring-back') ? [this._sx.target + m[0], this._sy.target + m[1]] : this.constrain(this._sx.target + m[0], this._sy.target + m[1]);\n this.go(tx, ty);\n }\n\n moveTo(x: number, y: number, animate = true): void {\n if (!animate) {\n this._sx.jump(x);\n this._sy.jump(y);\n return;\n }\n this.go(x, y);\n }\n\n reset(): void {\n this.go(0, 0);\n }\n },\n { id: 'draggable', text: css }\n );\n}\n","import { defineElement, type UsaElement } from '../base';\nimport { createSpring, rubberBand, type SpringValue } from './spring';\nimport css from './overscroll.css?raw';\n\n/**\n * `<usa-overscroll>` — an elastic scroll container: pulling past the top or\n * bottom (touch, trackpad or wheel) stretches the content with iOS-style\n * rubber-band resistance and it springs back on release.\n *\n * Attributes: `axis` (`y` default, `x`), `max` (largest stretch in px, 120),\n * `preset` (spring, default `default`), `disabled`. CSS variable\n * `--usa-overscroll` holds the current offset. Reduced motion: no stretch\n * (a plain scroll container with `overscroll-behavior: contain`).\n */\nexport interface UsaOverscrollElement extends UsaElement {\n /** Current stretch in px (negative = pulled past the end). */\n readonly offset: number;\n}\n\nexport function defineOverscroll(tag = 'usa-overscroll'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaOverscroll extends Base {\n static get observedAttributes(): string[] {\n return ['axis', 'disabled'];\n }\n\n private _off = 0;\n private _spring!: SpringValue;\n\n get offset(): number {\n return this._off;\n }\n\n private set(v: number): void {\n this._off = v;\n this.style.setProperty('--usa-overscroll', `${v}px`);\n this.toggleAttribute('data-stretched', Math.abs(v) > 0.5);\n }\n\n private edge(delta: number): boolean {\n const x = this.str('axis', 'y') === 'x';\n const pos = x ? this.scrollLeft : this.scrollTop;\n const max = (x ? this.scrollWidth - this.clientWidth : this.scrollHeight - this.clientHeight) - 1;\n return (delta < 0 && pos <= 0) || (delta > 0 && pos >= max);\n }\n\n private stretch(raw: number): void {\n const max = this.num('max', 120);\n this.set(Math.max(-max, Math.min(max, rubberBand(raw, max * 2.5))));\n }\n\n mount(): void {\n this._spring = createSpring({ spring: this.str('preset', 'default'), onUpdate: (v) => this.set(v) });\n const x = this.str('axis', 'y') === 'x';\n const off = () => this.flag('disabled') || this.reduced;\n // Wheel / trackpad: accumulate past the edge, spring back when it stops.\n let pull = 0;\n let timer: ReturnType<typeof setTimeout> | undefined;\n this.listen(this, 'wheel', (e: WheelEvent) => {\n const d = x ? e.deltaX || e.deltaY : e.deltaY;\n if (off() || !d || !this.edge(d)) return;\n this._spring.stop();\n pull -= d;\n this.stretch(pull);\n clearTimeout(timer);\n timer = setTimeout(() => {\n pull = 0;\n this._spring.jump(this._off);\n this._spring.set(0);\n }, 140);\n }, { passive: true });\n this.onCleanup(() => clearTimeout(timer));\n // Touch: rubber-band while the finger pulls past the edge.\n let start = 0;\n let active = false;\n this.listen(this, 'touchstart', (e: TouchEvent) => {\n if (off()) return;\n const t = e.touches[0];\n start = x ? t.clientX : t.clientY;\n active = false;\n this._spring.stop();\n }, { passive: true });\n this.listen(this, 'touchmove', (e: TouchEvent) => {\n if (off()) return;\n const t = e.touches[0];\n const dist = (x ? t.clientX : t.clientY) - start;\n if (!active && dist !== 0 && this.edge(-dist)) active = true;\n if (!active) return;\n if (e.cancelable) e.preventDefault();\n this.stretch(dist);\n }, { passive: false });\n const release = () => {\n if (!active) return;\n active = false;\n this._spring.jump(this._off);\n this._spring.set(0);\n };\n this.listen(this, 'touchend', release);\n this.listen(this, 'touchcancel', release);\n }\n\n unmount(): void {\n this._spring?.stop();\n this.set(0);\n }\n },\n { id: 'overscroll', text: css }\n );\n}\n","/**\n * use-scroll-animate/components/physics — spring & bounce physics (v2.3).\n * `<usa-spring>` (bounce-in, pop, drop, jelly, rubber-band), `<usa-draggable>`\n * (spring-back, inertia, snap) and `<usa-overscroll>` (elastic edges), plus\n * the spring core: `spring()`, `springEasing()`, `createSpring()`,\n * `SPRING_PRESETS`, `projectInertia()`, `snapTo()`, `rubberBand()`.\n */\nimport { defineSpring, type UsaSpringElement } from './spring-effect';\nimport { defineDraggable, type UsaDraggableElement } from './draggable';\nimport { defineOverscroll, type UsaOverscrollElement } from './overscroll';\n\nexport { defineSpring, defineDraggable, defineOverscroll };\nexport { SPRING_EFFECTS, springEffectKeyframes } from './spring-effect';\nexport type { SpringEffect } from './spring-effect';\nexport {\n SPRING_PRESETS,\n resolveSpring,\n stepSpring,\n springSamples,\n springEasing,\n linearEasing,\n supportsLinearEasing,\n spring,\n createSpring,\n projectInertia,\n snapTo,\n rubberBand,\n} from './spring';\nexport type { SpringConfig, SpringPreset, SpringInput, SpringValue, SpringValueOptions } from './spring';\nexport type { UsaSpringElement, UsaDraggableElement, UsaOverscrollElement };\nexport { configureComponents, prefersReducedMotion } from '../base';\nexport type { ComponentsConfig, UsaElement } from '../base';\n\n/** Register every component of this category under its default tag. */\nexport function definePhysicsComponents(): void {\n defineSpring();\n defineDraggable();\n defineOverscroll();\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-spring': UsaSpringElement;\n 'usa-draggable': UsaDraggableElement;\n 'usa-overscroll': UsaOverscrollElement;\n }\n}\n"],"names":["css"],"mappings":"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"}
1
+ {"version":3,"file":"physics.js","sources":["../../src/components/physics/spring-effect.ts","../../src/components/physics/draggable.ts","../../src/components/physics/overscroll.ts","../../src/components/physics/index.ts"],"sourcesContent":["import { defineElement, type UsaElement } from '../base';\nimport { springEasing, type SpringInput } from './spring';\nimport css from './spring-effect.css?raw';\n\nexport const SPRING_EFFECTS = ['bounce-in', 'pop', 'drop', 'jelly', 'rubber-band'] as const;\nexport type SpringEffect = (typeof SPRING_EFFECTS)[number];\n\n/** Entrance effects start hidden; attention effects (jelly, rubber-band) play on visible content. */\nconst ENTRANCE = new Set<string>(['bounce-in', 'pop', 'drop']);\n\n/** Keyframes of a spring effect (entrances use spring timing, attention effects fixed frames). */\nexport function springEffectKeyframes(effect: string, reduced = false): Keyframe[] {\n if (reduced) return ENTRANCE.has(effect) ? [{ opacity: 0 }, { opacity: 1 }] : [{ opacity: 1 }, { opacity: 1 }];\n switch (effect) {\n case 'pop':\n return [{ opacity: 0, transform: 'scale(0.5)' }, { opacity: 1, transform: 'scale(1)' }];\n case 'drop':\n return [{ opacity: 0, transform: 'translate3d(0, -120%, 0)' }, { opacity: 1, transform: 'translate3d(0, 0, 0)' }];\n case 'jelly':\n return [\n { transform: 'scale3d(1, 1, 1)' },\n { transform: 'scale3d(1.25, 0.75, 1)', offset: 0.3 },\n { transform: 'scale3d(0.75, 1.25, 1)', offset: 0.4 },\n { transform: 'scale3d(1.15, 0.85, 1)', offset: 0.5 },\n { transform: 'scale3d(0.95, 1.05, 1)', offset: 0.65 },\n { transform: 'scale3d(1.05, 0.95, 1)', offset: 0.75 },\n { transform: 'scale3d(1, 1, 1)' },\n ];\n case 'rubber-band':\n return [\n { transform: 'scale3d(1, 1, 1)' },\n { transform: 'scale3d(1.3, 0.7, 1)', offset: 0.3 },\n { transform: 'scale3d(0.8, 1.2, 1)', offset: 0.45 },\n { transform: 'scale3d(1.1, 0.9, 1)', offset: 0.6 },\n { transform: 'scale3d(0.97, 1.03, 1)', offset: 0.8 },\n { transform: 'scale3d(1, 1, 1)' },\n ];\n default:\n return [{ opacity: 0, transform: 'scale(0.3)' }, { opacity: 1, transform: 'scale(1)' }];\n }\n}\n\nconst DEFAULT_PRESET: Record<string, string> = { 'bounce-in': 'bouncy', pop: 'wobbly', drop: 'bouncy' };\n\n/**\n * `<usa-spring>` — spring / bounce effects on its content.\n *\n * Attributes: `effect` (`bounce-in` default, `pop`, `drop`, `jelly`,\n * `rubber-band`), `trigger` (`view` default, `hover`, `click`, `manual`),\n * `preset` (`gentle`, `wobbly`, `stiff`, `bouncy`, …) or `stiffness` /\n * `damping` / `mass`, `delay` (ms), `duration` (ms, attention effects; 900),\n * `repeat` (replay every time it re-enters the view), `block`.\n * Events: `usa:complete`. Reduced motion: entrances fade, attention effects do nothing.\n */\nexport interface UsaSpringElement extends UsaElement {\n effect: string;\n play(): Promise<void>;\n reset(): void;\n}\n\nexport function defineSpring(tag = 'usa-spring'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaSpring extends Base {\n static get observedAttributes(): string[] {\n return ['effect', 'trigger', 'repeat'];\n }\n\n private _anim: Animation | null = null;\n\n get effect(): string {\n return this.str('effect', 'bounce-in');\n }\n set effect(v: string) {\n this.setAttribute('effect', v);\n }\n\n private config(): SpringInput {\n if (this.hasAttribute('stiffness') || this.hasAttribute('damping') || this.hasAttribute('mass'))\n return { stiffness: this.num('stiffness', 170), damping: this.num('damping', 26), mass: this.num('mass', 1) };\n return this.str('preset', DEFAULT_PRESET[this.effect] || 'wobbly');\n }\n\n mount(): void {\n const trigger = this.str('trigger', 'view');\n const entrance = ENTRANCE.has(this.effect);\n if (trigger === 'view') {\n if (entrance) this.setAttribute('data-state', 'hidden');\n this.inView((visible) => {\n if (visible) this.play();\n else if (this.flag('repeat') && entrance) this.reset();\n }, { threshold: 0.15 });\n } else {\n if (trigger === 'hover') this.listen(this, 'pointerenter', () => this.play());\n if (trigger === 'click') {\n this.listen(this, 'click', () => this.play());\n this.listen(this, 'keydown', (e: KeyboardEvent) => (e.key === 'Enter' || e.key === ' ') && !e.repeat && this.play());\n }\n }\n }\n\n unmount(): void {\n this._anim?.cancel();\n this._anim = null;\n }\n\n reset(): void {\n this._anim?.cancel();\n this._anim = null;\n if (ENTRANCE.has(this.effect)) this.setAttribute('data-state', 'hidden');\n }\n\n async play(): Promise<void> {\n const effect = this.effect;\n const reduced = this.reduced;\n this._anim?.cancel();\n this.setAttribute('data-state', 'playing');\n const frames = springEffectKeyframes(effect, reduced);\n const timing: KeyframeAnimationOptions = ENTRANCE.has(effect) && !reduced\n ? springEasing(this.config())\n : { duration: reduced ? 250 : this.num('duration', 900), easing: 'ease-out' };\n const a = this.motion(this, frames, { ...timing, delay: this.num('delay', 0), fill: 'backwards' });\n this._anim = a;\n if (a) {\n try {\n await a.finished;\n } catch {\n return;\n }\n if (this._anim !== a) return;\n }\n this._anim = null;\n this.setAttribute('data-state', 'done');\n this.emit('complete', { effect });\n }\n },\n { id: 'spring', text: css }\n );\n}\n","import { defineElement, clamp, type UsaElement } from '../base';\nimport { createSpring, projectInertia, snapTo, rubberBand, type SpringValue } from './spring';\nimport css from './draggable.css?raw';\n\n/**\n * `<usa-draggable>` — drag its content with the pointer (mouse, touch, pen)\n * or the arrow keys; physics on release.\n *\n * Attributes: `axis` (`both` default, `x`, `y`), `spring-back` (return to\n * the origin with a spring), `inertia` (keep gliding after a flick),\n * `snap` (grid size like `80`, or points like `0,120,240`), `bounds`\n * (`parent` = stay inside the parent box, rubber-banding past its edges),\n * `preset` (spring, default `wobbly`), `step` (arrow-key step, px, 16),\n * `disabled`. Methods: `moveTo(x, y, animate?)`, `reset()`. Events:\n * `usa:drag-start`, `usa:drag-end` (`{ x, y, vx, vy }`), `usa:settle`.\n * Reduced motion: positions change instantly (no spring or inertia).\n */\nexport interface UsaDraggableElement extends UsaElement {\n readonly x: number;\n readonly y: number;\n readonly dragging: boolean;\n moveTo(x: number, y: number, animate?: boolean): void;\n reset(): void;\n}\n\nconst parseSnap = (s: string): number | number[] | null => {\n if (!s.trim()) return null;\n const parts = s.split(',').map((p) => Number(p.trim())).filter((n) => Number.isFinite(n));\n if (!parts.length) return null;\n return s.includes(',') ? parts : parts[0];\n};\n\nexport function defineDraggable(tag = 'usa-draggable'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaDraggable extends Base {\n static get observedAttributes(): string[] {\n return ['axis', 'disabled', 'preset'];\n }\n\n private _x = 0;\n private _y = 0;\n private _sx!: SpringValue;\n private _sy!: SpringValue;\n private _drag: { id: number; px: number; py: number; ox: number; oy: number; samples: [number, number, number][] } | null = null;\n\n get x(): number {\n return this._x;\n }\n get y(): number {\n return this._y;\n }\n get dragging(): boolean {\n return !!this._drag;\n }\n\n private render(): void {\n this.style.transform = `translate3d(${this._x}px, ${this._y}px, 0)`;\n this.style.setProperty('--usa-drag-x', `${this._x}px`);\n this.style.setProperty('--usa-drag-y', `${this._y}px`);\n }\n\n private axis(): string {\n return this.str('axis', 'both');\n }\n\n /** Bounds relative to the origin, from the parent box. */\n private limits(): { minX: number; maxX: number; minY: number; maxY: number } | null {\n if (this.str('bounds') !== 'parent' || !this.parentElement) return null;\n const p = this.parentElement.getBoundingClientRect();\n const r = this.getBoundingClientRect();\n const ox = r.left - this._x;\n const oy = r.top - this._y;\n return { minX: p.left - ox, maxX: p.right - ox - r.width, minY: p.top - oy, maxY: p.bottom - oy - r.height };\n }\n\n mount(): void {\n let settled = 0;\n const rest = () => {\n if (++settled >= 2) {\n settled = 0;\n this.removeAttribute('data-moving');\n this.emit('settle', { x: this._x, y: this._y });\n }\n };\n const spring = this.str('preset', 'wobbly');\n this._sx = createSpring({ value: this._x, spring, onUpdate: (v) => ((this._x = v), this.render()), onRest: rest });\n this._sy = createSpring({ value: this._y, spring, onUpdate: (v) => ((this._y = v), this.render()), onRest: rest });\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n this.setAttribute('aria-roledescription', 'draggable');\n this.listen(this, 'pointerdown', (e: PointerEvent) => this.start(e));\n this.listen(this, 'pointermove', (e: PointerEvent) => this.move(e));\n this.listen(this, 'pointerup', (e: PointerEvent) => this.end(e));\n this.listen(this, 'pointercancel', (e: PointerEvent) => this.end(e));\n this.listen(this, 'keydown', (e: KeyboardEvent) => this.key(e));\n this.render();\n }\n\n unmount(): void {\n this._sx?.stop();\n this._sy?.stop();\n this._drag = null;\n }\n\n private start(e: PointerEvent): void {\n if (this.flag('disabled') || (e.pointerType === 'mouse' && e.button !== 0)) return;\n this._sx.stop();\n this._sy.stop();\n this._drag = { id: e.pointerId, px: e.clientX, py: e.clientY, ox: this._x, oy: this._y, samples: [[e.clientX, e.clientY, typeof e.timeStamp === 'number' ? e.timeStamp : Date.now()]] };\n try {\n this.setPointerCapture?.(e.pointerId);\n } catch {\n /* synthetic events */\n }\n this.setAttribute('data-dragging', '');\n this.emit('drag-start', { x: this._x, y: this._y });\n }\n\n private move(e: PointerEvent): void {\n const d = this._drag;\n if (!d || e.pointerId !== d.id) return;\n const axis = this.axis();\n let x = axis === 'y' ? d.ox : d.ox + e.clientX - d.px;\n let y = axis === 'x' ? d.oy : d.oy + e.clientY - d.py;\n const b = this.limits();\n if (b) {\n const band = (v: number, lo: number, hi: number, dim: number) => (v < lo ? lo + rubberBand(v - lo, dim) : v > hi ? hi + rubberBand(v - hi, dim) : v);\n x = band(x, b.minX, b.maxX, 200);\n y = band(y, b.minY, b.maxY, 200);\n }\n this._x = x;\n this._y = y;\n d.samples.push([e.clientX, e.clientY, typeof e.timeStamp === 'number' ? e.timeStamp : Date.now()]);\n if (d.samples.length > 6) d.samples.shift();\n this.render();\n this.emit('drag', { x, y });\n }\n\n private velocity(): [number, number] {\n const s = this._drag?.samples || [];\n if (s.length < 2) return [0, 0];\n const a = s[0];\n const b = s[s.length - 1];\n const dt = (b[2] - a[2]) / 1000;\n if (dt <= 0 || dt > 0.3) return [0, 0];\n return [(b[0] - a[0]) / dt, (b[1] - a[1]) / dt];\n }\n\n private end(e: PointerEvent): void {\n const d = this._drag;\n if (!d || e.pointerId !== d.id) return;\n let [vx, vy] = this.velocity();\n const axis = this.axis();\n if (axis === 'y') vx = 0;\n if (axis === 'x') vy = 0;\n this._drag = null;\n this.removeAttribute('data-dragging');\n let tx = this._x;\n let ty = this._y;\n if (this.flag('spring-back')) {\n tx = 0;\n ty = 0;\n } else {\n if (this.flag('inertia') && !this.reduced) {\n tx = projectInertia(tx, vx);\n ty = projectInertia(ty, vy);\n }\n [tx, ty] = this.constrain(tx, ty);\n }\n this.emit('drag-end', { x: tx, y: ty, vx, vy });\n this.go(tx, ty, vx, vy);\n }\n\n private constrain(x: number, y: number): [number, number] {\n const snap = parseSnap(this.str('snap'));\n let tx = snapTo(x, snap);\n let ty = snapTo(y, snap);\n const b = this.limits();\n if (b) {\n tx = clamp(tx, b.minX, Math.max(b.minX, b.maxX));\n ty = clamp(ty, b.minY, Math.max(b.minY, b.maxY));\n }\n const axis = this.axis();\n return [axis === 'y' ? 0 : tx, axis === 'x' ? 0 : ty];\n }\n\n private go(x: number, y: number, vx = 0, vy = 0): void {\n this.setAttribute('data-moving', '');\n this._sx.set(x, vx);\n this._sy.set(y, vy);\n }\n\n private key(e: KeyboardEvent): void {\n if (this.flag('disabled')) return;\n const step = this.num('step', 16);\n const snap = parseSnap(this.str('snap'));\n const s = typeof snap === 'number' ? snap : step;\n const map: Record<string, [number, number]> = { ArrowLeft: [-s, 0], ArrowRight: [s, 0], ArrowUp: [0, -s], ArrowDown: [0, s] };\n if (e.key === 'Home' || e.key === 'Escape') {\n e.preventDefault();\n this.reset();\n return;\n }\n const m = map[e.key];\n if (!m) return;\n e.preventDefault();\n const [tx, ty] = this.flag('spring-back') ? [this._sx.target + m[0], this._sy.target + m[1]] : this.constrain(this._sx.target + m[0], this._sy.target + m[1]);\n this.go(tx, ty);\n }\n\n moveTo(x: number, y: number, animate = true): void {\n if (!animate) {\n this._sx.jump(x);\n this._sy.jump(y);\n return;\n }\n this.go(x, y);\n }\n\n reset(): void {\n this.go(0, 0);\n }\n },\n { id: 'draggable', text: css }\n );\n}\n","import { defineElement, type UsaElement } from '../base';\nimport { createSpring, rubberBand, type SpringValue } from './spring';\nimport css from './overscroll.css?raw';\n\n/**\n * `<usa-overscroll>` — an elastic scroll container: pulling past the top or\n * bottom (touch, trackpad or wheel) stretches the content with iOS-style\n * rubber-band resistance and it springs back on release.\n *\n * Attributes: `axis` (`y` default, `x`), `max` (largest stretch in px, 120),\n * `preset` (spring, default `default`), `disabled`. CSS variable\n * `--usa-overscroll` holds the current offset. Reduced motion: no stretch\n * (a plain scroll container with `overscroll-behavior: contain`).\n */\nexport interface UsaOverscrollElement extends UsaElement {\n /** Current stretch in px (negative = pulled past the end). */\n readonly offset: number;\n}\n\nexport function defineOverscroll(tag = 'usa-overscroll'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaOverscroll extends Base {\n static get observedAttributes(): string[] {\n return ['axis', 'disabled'];\n }\n\n private _off = 0;\n private _spring!: SpringValue;\n\n get offset(): number {\n return this._off;\n }\n\n private set(v: number): void {\n this._off = v;\n this.style.setProperty('--usa-overscroll', `${v}px`);\n this.toggleAttribute('data-stretched', Math.abs(v) > 0.5);\n }\n\n private edge(delta: number): boolean {\n const x = this.str('axis', 'y') === 'x';\n const pos = x ? this.scrollLeft : this.scrollTop;\n const max = (x ? this.scrollWidth - this.clientWidth : this.scrollHeight - this.clientHeight) - 1;\n return (delta < 0 && pos <= 0) || (delta > 0 && pos >= max);\n }\n\n private stretch(raw: number): void {\n const max = this.num('max', 120);\n this.set(Math.max(-max, Math.min(max, rubberBand(raw, max * 2.5))));\n }\n\n mount(): void {\n this._spring = createSpring({ spring: this.str('preset', 'default'), onUpdate: (v) => this.set(v) });\n const x = this.str('axis', 'y') === 'x';\n const off = () => this.flag('disabled') || this.reduced;\n // Wheel / trackpad: accumulate past the edge, spring back when it stops.\n let pull = 0;\n let timer: ReturnType<typeof setTimeout> | undefined;\n this.listen(this, 'wheel', (e: WheelEvent) => {\n const d = x ? e.deltaX || e.deltaY : e.deltaY;\n if (off() || !d || !this.edge(d)) return;\n this._spring.stop();\n pull -= d;\n this.stretch(pull);\n clearTimeout(timer);\n timer = setTimeout(() => {\n pull = 0;\n this._spring.jump(this._off);\n this._spring.set(0);\n }, 140);\n }, { passive: true });\n this.onCleanup(() => clearTimeout(timer));\n // Touch: rubber-band while the finger pulls past the edge.\n let start = 0;\n let active = false;\n this.listen(this, 'touchstart', (e: TouchEvent) => {\n if (off()) return;\n const t = e.touches[0];\n start = x ? t.clientX : t.clientY;\n active = false;\n this._spring.stop();\n }, { passive: true });\n this.listen(this, 'touchmove', (e: TouchEvent) => {\n if (off()) return;\n const t = e.touches[0];\n const dist = (x ? t.clientX : t.clientY) - start;\n if (!active && dist !== 0 && this.edge(-dist)) active = true;\n if (!active) return;\n if (e.cancelable) e.preventDefault();\n this.stretch(dist);\n }, { passive: false });\n const release = () => {\n if (!active) return;\n active = false;\n this._spring.jump(this._off);\n this._spring.set(0);\n };\n this.listen(this, 'touchend', release);\n this.listen(this, 'touchcancel', release);\n }\n\n unmount(): void {\n this._spring?.stop();\n this.set(0);\n }\n },\n { id: 'overscroll', text: css }\n );\n}\n","/**\n * use-scroll-animate/components/physics — spring & bounce physics (v2.3).\n * `<usa-spring>` (bounce-in, pop, drop, jelly, rubber-band), `<usa-draggable>`\n * (spring-back, inertia, snap) and `<usa-overscroll>` (elastic edges), plus\n * the spring core: `spring()`, `springEasing()`, `createSpring()`,\n * `SPRING_PRESETS`, `projectInertia()`, `snapTo()`, `rubberBand()`.\n */\nimport { defineSpring, type UsaSpringElement } from './spring-effect';\nimport { defineDraggable, type UsaDraggableElement } from './draggable';\nimport { defineOverscroll, type UsaOverscrollElement } from './overscroll';\n\nexport { defineSpring, defineDraggable, defineOverscroll };\nexport { SPRING_EFFECTS, springEffectKeyframes } from './spring-effect';\nexport type { SpringEffect } from './spring-effect';\nexport {\n SPRING_PRESETS,\n resolveSpring,\n stepSpring,\n springSamples,\n springEasing,\n linearEasing,\n supportsLinearEasing,\n spring,\n createSpring,\n projectInertia,\n snapTo,\n rubberBand,\n} from './spring';\nexport type { SpringConfig, SpringPreset, SpringInput, SpringValue, SpringValueOptions } from './spring';\nexport type { UsaSpringElement, UsaDraggableElement, UsaOverscrollElement };\nexport { configureComponents, prefersReducedMotion } from '../base';\nexport type { ComponentsConfig, UsaElement } from '../base';\n\n/** Register every component of this category under its default tag. */\nexport function definePhysicsComponents(): void {\n defineSpring();\n defineDraggable();\n defineOverscroll();\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-spring': UsaSpringElement;\n 'usa-draggable': UsaDraggableElement;\n 'usa-overscroll': UsaOverscrollElement;\n }\n}\n"],"names":["css"],"mappings":"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"}
@@ -7,6 +7,9 @@ var components_feedback = require('./components/feedback.cjs');
7
7
  var components_background = require('./components/background.cjs');
8
8
  var components_transitions = require('./components/transitions.cjs');
9
9
  var components_physics = require('./components/physics.cjs');
10
+ var components_cards = require('./components/cards.cjs');
11
+ var components_click = require('./components/click.cjs');
12
+ var spring = require('./chunks/spring-CGO9Jd9b.cjs');
10
13
  var base = require('./chunks/base-CJ7XfidP.cjs');
11
14
 
12
15
  /**
@@ -38,6 +41,8 @@ const COMPONENT_CATEGORIES = {
38
41
  background: ['usa-aurora', 'usa-particles', 'usa-grain', 'usa-marquee', 'usa-acrylic'],
39
42
  transitions: ['usa-dialog', 'usa-accordion', 'usa-flip-list', 'usa-view-switch'],
40
43
  physics: ['usa-spring', 'usa-draggable', 'usa-overscroll'],
44
+ cards: ['usa-card', 'usa-card-stack', 'usa-sticky-stack', 'usa-carousel-3d'],
45
+ click: ['usa-click', 'usa-button', 'usa-icon-morph', 'usa-like', 'usa-hold', 'usa-double-tap', 'usa-checkbox'],
41
46
  };
42
47
  const BY_CATEGORY = {
43
48
  reveal: components_reveal.defineRevealComponents,
@@ -47,6 +52,8 @@ const BY_CATEGORY = {
47
52
  background: components_background.defineBackgroundComponents,
48
53
  transitions: components_transitions.defineTransitionComponents,
49
54
  physics: components_physics.definePhysicsComponents,
55
+ cards: components_cards.defineCardComponents,
56
+ click: components_click.defineClickComponents,
50
57
  };
51
58
  /**
52
59
  * Register every `<usa-*>` component (or only the given categories).
@@ -103,23 +110,45 @@ exports.defineViewSwitch = components_transitions.defineViewSwitch;
103
110
  exports.flip = components_transitions.flip;
104
111
  exports.viewTransition = components_transitions.viewTransition;
105
112
  exports.SPRING_EFFECTS = components_physics.SPRING_EFFECTS;
106
- exports.SPRING_PRESETS = components_physics.SPRING_PRESETS;
107
- exports.createSpring = components_physics.createSpring;
108
113
  exports.defineDraggable = components_physics.defineDraggable;
109
114
  exports.defineOverscroll = components_physics.defineOverscroll;
110
115
  exports.definePhysicsComponents = components_physics.definePhysicsComponents;
111
116
  exports.defineSpring = components_physics.defineSpring;
112
- exports.linearEasing = components_physics.linearEasing;
113
- exports.projectInertia = components_physics.projectInertia;
114
- exports.resolveSpring = components_physics.resolveSpring;
115
- exports.rubberBand = components_physics.rubberBand;
116
- exports.snapTo = components_physics.snapTo;
117
- exports.spring = components_physics.spring;
118
- exports.springEasing = components_physics.springEasing;
119
117
  exports.springEffectKeyframes = components_physics.springEffectKeyframes;
120
- exports.springSamples = components_physics.springSamples;
121
- exports.stepSpring = components_physics.stepSpring;
122
- exports.supportsLinearEasing = components_physics.supportsLinearEasing;
118
+ exports.CARD_EFFECTS = components_cards.CARD_EFFECTS;
119
+ exports.defineCard = components_cards.defineCard;
120
+ exports.defineCardComponents = components_cards.defineCardComponents;
121
+ exports.defineCardStack = components_cards.defineCardStack;
122
+ exports.defineCarousel3d = components_cards.defineCarousel3d;
123
+ exports.defineStickyStack = components_cards.defineStickyStack;
124
+ exports.BUTTON_DEFORMS = components_click.BUTTON_DEFORMS;
125
+ exports.CLICK_EFFECTS = components_click.CLICK_EFFECTS;
126
+ exports.MORPH_ICONS = components_click.MORPH_ICONS;
127
+ exports.burst = components_click.burst;
128
+ exports.confetti = components_click.confetti;
129
+ exports.defineButton = components_click.defineButton;
130
+ exports.defineCheckbox = components_click.defineCheckbox;
131
+ exports.defineClick = components_click.defineClick;
132
+ exports.defineClickComponents = components_click.defineClickComponents;
133
+ exports.defineDoubleTap = components_click.defineDoubleTap;
134
+ exports.defineHold = components_click.defineHold;
135
+ exports.defineIconMorph = components_click.defineIconMorph;
136
+ exports.defineLike = components_click.defineLike;
137
+ exports.haptic = components_click.haptic;
138
+ exports.morphPath = components_click.morphPath;
139
+ exports.shake = components_click.shake;
140
+ exports.SPRING_PRESETS = spring.SPRING_PRESETS;
141
+ exports.createSpring = spring.createSpring;
142
+ exports.linearEasing = spring.linearEasing;
143
+ exports.projectInertia = spring.projectInertia;
144
+ exports.resolveSpring = spring.resolveSpring;
145
+ exports.rubberBand = spring.rubberBand;
146
+ exports.snapTo = spring.snapTo;
147
+ exports.spring = spring.spring;
148
+ exports.springEasing = spring.springEasing;
149
+ exports.springSamples = spring.springSamples;
150
+ exports.stepSpring = spring.stepSpring;
151
+ exports.supportsLinearEasing = spring.supportsLinearEasing;
123
152
  exports.configureComponents = base.configureComponents;
124
153
  exports.prefersReducedMotion = base.prefersReducedMotion;
125
154
  exports.COMPONENT_CATEGORIES = COMPONENT_CATEGORIES;
@@ -1 +1 @@
1
- {"version":3,"file":"components.cjs","sources":["../src/components/index.ts"],"sourcesContent":["/**\n * use-scroll-animate/components\n *\n * Framework-agnostic, dependency-free animated UI components built on\n * Custom Elements + CSS + the Web Animations API. They run in any browser\n * and in Windows desktop apps that render with a web view: Electron, Tauri\n * (WebView2), WinUI 3 / WPF / WinForms with WebView2, and installed PWAs.\n *\n * ```js\n * import { defineComponents } from 'use-scroll-animate/components';\n * defineComponents(); // registers every <usa-*> element\n * // or only what you use (tree-shakable):\n * import { defineTypewriter } from 'use-scroll-animate/components/text';\n * ```\n *\n * Importing has no side effects and is SSR-safe; nothing is registered\n * until a `define*()` function runs in a browser.\n *\n * @license MIT\n */\nimport { defineRevealComponents } from './reveal/index';\nimport { defineTextComponents } from './text/index';\nimport { defineInteractionComponents } from './interaction/index';\nimport { defineFeedbackComponents } from './feedback/index';\nimport { defineBackgroundComponents } from './background/index';\nimport { defineTransitionComponents } from './transitions/index';\nimport { definePhysicsComponents } from './physics/index';\n\nexport * from './reveal/index';\nexport * from './text/index';\nexport * from './interaction/index';\nexport * from './feedback/index';\nexport * from './background/index';\nexport * from './transitions/index';\nexport * from './physics/index';\n\n/** The component categories and their default tags. */\nexport const COMPONENT_CATEGORIES = {\n reveal: ['usa-reveal', 'usa-stagger', 'usa-scroll-progress', 'usa-scrolly'],\n text: ['usa-typewriter', 'usa-split-text', 'usa-scramble', 'usa-counter', 'usa-shimmer-text', 'usa-text-rotate'],\n interaction: ['usa-ripple', 'usa-magnetic', 'usa-tilt', 'usa-spotlight', 'usa-press', 'usa-toggle'],\n feedback: ['usa-spinner', 'usa-skeleton', 'usa-progress', 'usa-toaster', 'usa-check'],\n background: ['usa-aurora', 'usa-particles', 'usa-grain', 'usa-marquee', 'usa-acrylic'],\n transitions: ['usa-dialog', 'usa-accordion', 'usa-flip-list', 'usa-view-switch'],\n physics: ['usa-spring', 'usa-draggable', 'usa-overscroll'],\n} as const;\n\nexport type ComponentCategory = keyof typeof COMPONENT_CATEGORIES;\n\nconst BY_CATEGORY: Record<ComponentCategory, () => void> = {\n reveal: defineRevealComponents,\n text: defineTextComponents,\n interaction: defineInteractionComponents,\n feedback: defineFeedbackComponents,\n background: defineBackgroundComponents,\n transitions: defineTransitionComponents,\n physics: definePhysicsComponents,\n};\n\n/**\n * Register every `<usa-*>` component (or only the given categories).\n * Safe to call more than once and on the server (no-op without DOM).\n */\nexport function defineComponents(categories?: ComponentCategory[]): void {\n (categories || (Object.keys(BY_CATEGORY) as ComponentCategory[])).forEach((c) => BY_CATEGORY[c]?.());\n}\n"],"names":["defineRevealComponents","defineTextComponents","defineInteractionComponents","defineFeedbackComponents","defineBackgroundComponents","defineTransitionComponents","definePhysicsComponents"],"mappings":";;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;AAmBG;AAiBH;AACO,MAAM,oBAAoB,GAAG;IAClC,MAAM,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,qBAAqB,EAAE,aAAa,CAAC;AAC3E,IAAA,IAAI,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,CAAC;AAChH,IAAA,WAAW,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,CAAC;IACnG,QAAQ,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,CAAC;IACrF,UAAU,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC;IACtF,WAAW,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,CAAC;AAChF,IAAA,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,gBAAgB,CAAC;;AAK5D,MAAM,WAAW,GAA0C;AACzD,IAAA,MAAM,EAAEA,wCAAsB;AAC9B,IAAA,IAAI,EAAEC,oCAAoB;AAC1B,IAAA,WAAW,EAAEC,kDAA2B;AACxC,IAAA,QAAQ,EAAEC,4CAAwB;AAClC,IAAA,UAAU,EAAEC,gDAA0B;AACtC,IAAA,WAAW,EAAEC,iDAA0B;AACvC,IAAA,OAAO,EAAEC,0CAAuB;CACjC;AAED;;;AAGG;AACG,SAAU,gBAAgB,CAAC,UAAgC,EAAA;IAC/D,CAAC,UAAU,IAAK,MAAM,CAAC,IAAI,CAAC,WAAW,CAAyB,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AACtG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"components.cjs","sources":["../src/components/index.ts"],"sourcesContent":["/**\n * use-scroll-animate/components\n *\n * Framework-agnostic, dependency-free animated UI components built on\n * Custom Elements + CSS + the Web Animations API. They run in any browser\n * and in Windows desktop apps that render with a web view: Electron, Tauri\n * (WebView2), WinUI 3 / WPF / WinForms with WebView2, and installed PWAs.\n *\n * ```js\n * import { defineComponents } from 'use-scroll-animate/components';\n * defineComponents(); // registers every <usa-*> element\n * // or only what you use (tree-shakable):\n * import { defineTypewriter } from 'use-scroll-animate/components/text';\n * ```\n *\n * Importing has no side effects and is SSR-safe; nothing is registered\n * until a `define*()` function runs in a browser.\n *\n * @license MIT\n */\nimport { defineRevealComponents } from './reveal/index';\nimport { defineTextComponents } from './text/index';\nimport { defineInteractionComponents } from './interaction/index';\nimport { defineFeedbackComponents } from './feedback/index';\nimport { defineBackgroundComponents } from './background/index';\nimport { defineTransitionComponents } from './transitions/index';\nimport { definePhysicsComponents } from './physics/index';\nimport { defineCardComponents } from './cards/index';\nimport { defineClickComponents } from './click/index';\n\nexport * from './reveal/index';\nexport * from './text/index';\nexport * from './interaction/index';\nexport * from './feedback/index';\nexport * from './background/index';\nexport * from './transitions/index';\nexport * from './physics/index';\nexport * from './cards/index';\nexport * from './click/index';\n\n/** The component categories and their default tags. */\nexport const COMPONENT_CATEGORIES = {\n reveal: ['usa-reveal', 'usa-stagger', 'usa-scroll-progress', 'usa-scrolly'],\n text: ['usa-typewriter', 'usa-split-text', 'usa-scramble', 'usa-counter', 'usa-shimmer-text', 'usa-text-rotate'],\n interaction: ['usa-ripple', 'usa-magnetic', 'usa-tilt', 'usa-spotlight', 'usa-press', 'usa-toggle'],\n feedback: ['usa-spinner', 'usa-skeleton', 'usa-progress', 'usa-toaster', 'usa-check'],\n background: ['usa-aurora', 'usa-particles', 'usa-grain', 'usa-marquee', 'usa-acrylic'],\n transitions: ['usa-dialog', 'usa-accordion', 'usa-flip-list', 'usa-view-switch'],\n physics: ['usa-spring', 'usa-draggable', 'usa-overscroll'],\n cards: ['usa-card', 'usa-card-stack', 'usa-sticky-stack', 'usa-carousel-3d'],\n click: ['usa-click', 'usa-button', 'usa-icon-morph', 'usa-like', 'usa-hold', 'usa-double-tap', 'usa-checkbox'],\n} as const;\n\nexport type ComponentCategory = keyof typeof COMPONENT_CATEGORIES;\n\nconst BY_CATEGORY: Record<ComponentCategory, () => void> = {\n reveal: defineRevealComponents,\n text: defineTextComponents,\n interaction: defineInteractionComponents,\n feedback: defineFeedbackComponents,\n background: defineBackgroundComponents,\n transitions: defineTransitionComponents,\n physics: definePhysicsComponents,\n cards: defineCardComponents,\n click: defineClickComponents,\n};\n\n/**\n * Register every `<usa-*>` component (or only the given categories).\n * Safe to call more than once and on the server (no-op without DOM).\n */\nexport function defineComponents(categories?: ComponentCategory[]): void {\n (categories || (Object.keys(BY_CATEGORY) as ComponentCategory[])).forEach((c) => BY_CATEGORY[c]?.());\n}\n"],"names":["defineRevealComponents","defineTextComponents","defineInteractionComponents","defineFeedbackComponents","defineBackgroundComponents","defineTransitionComponents","definePhysicsComponents","defineCardComponents","defineClickComponents"],"mappings":";;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;AAmBG;AAqBH;AACO,MAAM,oBAAoB,GAAG;IAClC,MAAM,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,qBAAqB,EAAE,aAAa,CAAC;AAC3E,IAAA,IAAI,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,CAAC;AAChH,IAAA,WAAW,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,CAAC;IACnG,QAAQ,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,CAAC;IACrF,UAAU,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC;IACtF,WAAW,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,CAAC;AAChF,IAAA,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,gBAAgB,CAAC;IAC1D,KAAK,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,CAAC;AAC5E,IAAA,KAAK,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,CAAC;;AAKhH,MAAM,WAAW,GAA0C;AACzD,IAAA,MAAM,EAAEA,wCAAsB;AAC9B,IAAA,IAAI,EAAEC,oCAAoB;AAC1B,IAAA,WAAW,EAAEC,kDAA2B;AACxC,IAAA,QAAQ,EAAEC,4CAAwB;AAClC,IAAA,UAAU,EAAEC,gDAA0B;AACtC,IAAA,WAAW,EAAEC,iDAA0B;AACvC,IAAA,OAAO,EAAEC,0CAAuB;AAChC,IAAA,KAAK,EAAEC,qCAAoB;AAC3B,IAAA,KAAK,EAAEC,sCAAqB;CAC7B;AAED;;;AAGG;AACG,SAAU,gBAAgB,CAAC,UAAgC,EAAA;IAC/D,CAAC,UAAU,IAAK,MAAM,CAAC,IAAI,CAAC,WAAW,CAAyB,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AACtG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -31,3 +31,14 @@ usa-view-switch{display:grid}usa-view-switch>*{grid-area:1 / 1;min-width:0}usa-v
31
31
  usa-draggable{display:inline-block;touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab;will-change:transform;-webkit-tap-highlight-color:transparent}usa-draggable[axis="x"]{touch-action:pan-y}usa-draggable[axis="y"]{touch-action:pan-x}usa-draggable[block]{display:block}usa-draggable[data-dragging]{cursor:grabbing}usa-draggable[disabled]{cursor:default}usa-draggable:focus-visible{outline:2px solid var(--usa-accent,#7c5cff);outline-offset:3px}
32
32
  usa-overscroll{display:block;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}usa-overscroll[axis="x"]{overflow-y:hidden}usa-overscroll>*{transform:translate3d(0,var(--usa-overscroll,0px),0)}usa-overscroll[axis="x"]>*{transform:translate3d(var(--usa-overscroll,0px),0,0)}usa-overscroll[data-stretched]>*{will-change:transform}
33
33
  usa-spring{display:inline-block;transform-origin:50% 70%}usa-spring[block]{display:block}usa-spring[effect="drop"]{transform-origin:50% 100%}usa-spring[data-state="hidden"]{opacity:0}usa-spring[trigger="click"],usa-spring[trigger="hover"]{cursor:pointer;-webkit-tap-highlight-color:transparent}
34
+ usa-card-stack{position:relative;display:grid;touch-action:pan-y;user-select:none;-webkit-user-select:none}usa-card-stack>*{grid-area:1 / 1;transform-origin:50% 100%;transition:transform 0.35s cubic-bezier(0.34,1.3,0.64,1),opacity 0.3s ease;will-change:transform}usa-card-stack>[data-top]{cursor:grab}usa-card-stack[data-dragging]>*,usa-card-stack>[data-top]{transition:none}usa-card-stack:focus-visible{outline:2px solid var(--usa-accent,#7c5cff);outline-offset:4px;border-radius:12px}@media (prefers-reduced-motion:reduce){usa-card-stack>*{transition:none}}
35
+ usa-card{--usa-card-radius:18px;--usa-card-bg:var(--usa-surface,#1b1e27);--usa-card-glow:var(--usa-accent,#7c5cff);--usa-card-x:50%;--usa-card-y:50%;--usa-card-nx:0;--usa-card-ny:0;position:relative;display:block;border-radius:var(--usa-card-radius);isolation:isolate;-webkit-tap-highlight-color:transparent}usa-card:focus-visible{outline:2px solid var(--usa-card-glow);outline-offset:3px}usa-card[effect~="lift"]{transition:transform 0.45s cubic-bezier(0.34,1.56,0.64,1),box-shadow 0.45s ease}usa-card[effect~="lift"][data-hover],usa-card[effect~="lift"]:focus-visible{transform:translateY(-6px) perspective(900px) rotateX(calc(var(--usa-card-ny) * -4deg)) rotateY(calc(var(--usa-card-nx) * 4deg));box-shadow:0 22px 44px -18px rgb(0 0 0 / 0.55)}usa-card[effect~="glass"]{background:color-mix(in srgb,var(--usa-card-bg) 45%,transparent);border:1px solid rgb(255 255 255 / 0.16);-webkit-backdrop-filter:blur(18px) saturate(1.5);backdrop-filter:blur(18px) saturate(1.5)}usa-card[effect~="spotlight"]::before,usa-card[effect~="border-glow"]::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity 0.3s ease}usa-card[effect~="spotlight"]::before{z-index:-1;background:radial-gradient(260px circle at var(--usa-card-x) var(--usa-card-y),color-mix(in srgb,var(--usa-card-glow) 28%,transparent),transparent 70%)}usa-card[effect~="border-glow"]::after{padding:1.5px;background:radial-gradient(180px circle at var(--usa-card-x) var(--usa-card-y),var(--usa-card-glow),transparent 70%);-webkit-mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}usa-card[data-hover]::before,usa-card[data-hover]::after{opacity:1}@property --usa-card-angle{syntax:"<angle>";inherits:false;initial-value:0deg}usa-card[effect~="conic-border"]{border:2px solid transparent;background:linear-gradient(var(--usa-card-bg),var(--usa-card-bg)) padding-box,conic-gradient(from var(--usa-card-angle),var(--usa-card-glow),#22d3ee,#f472b6,var(--usa-card-glow)) border-box;animation:usa-card-spin 4s linear infinite}@keyframes usa-card-spin{to{--usa-card-angle:360deg}}usa-card .usa-card-sheen{position:absolute;inset:0;border-radius:inherit;overflow:hidden;pointer-events:none}usa-card .usa-card-sheen::before{content:"";position:absolute;top:0;bottom:0;width:45%;left:-60%;transform:skewX(-20deg);background:linear-gradient(90deg,transparent,rgb(255 255 255 / 0.35),transparent)}usa-card[effect~="sheen"]:hover .usa-card-sheen::before,usa-card[effect~="sheen"]:focus-visible .usa-card-sheen::before{left:130%;transition:left 0.8s cubic-bezier(0.22,1,0.36,1)}usa-card .usa-card-holo{position:absolute;inset:0;border-radius:inherit;pointer-events:none;mix-blend-mode:color-dodge;opacity:0.35;background:linear-gradient(115deg,transparent 20%,#ff7ad9 35%,#7af0ff 45%,#ffe27a 55%,transparent 70%) calc(var(--usa-card-x) * 1.4 - 20%) calc(var(--usa-card-y) * 1.4 - 20%) / 220% 220%;transition:opacity 0.3s ease}usa-card[data-hover] .usa-card-holo{opacity:0.7}usa-card[effect~="parallax-layers"] [data-depth]{transition:transform 0.25s ease-out;will-change:transform}usa-card[effect~="flip"]{perspective:1000px;display:grid}usa-card[effect~="flip"]>[data-front],usa-card[effect~="flip"]>[data-back]{grid-area:1 / 1;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:inherit;transition:transform 0.7s cubic-bezier(0.34,1.3,0.64,1),opacity 0.3s ease}usa-card[effect~="flip"]>[data-back]{transform:rotateY(180deg)}usa-card[effect~="flip"][axis="x"]>[data-back]{transform:rotateX(180deg)}usa-card[effect~="flip"][flipped]>[data-front],usa-card[effect~="flip"]:not([trigger="click"]):hover>[data-front]{transform:rotateY(-180deg)}usa-card[effect~="flip"][flipped]>[data-back],usa-card[effect~="flip"]:not([trigger="click"]):hover>[data-back]{transform:rotateY(0deg)}usa-card[effect~="flip"][axis="x"][flipped]>[data-front],usa-card[effect~="flip"][axis="x"]:not([trigger="click"]):hover>[data-front]{transform:rotateX(180deg)}usa-card[effect~="flip"][axis="x"][flipped]>[data-back],usa-card[effect~="flip"][axis="x"]:not([trigger="click"]):hover>[data-back]{transform:rotateX(0deg)}usa-card[effect~="flip"][trigger="click"]{cursor:pointer}usa-card[effect~="expand"]{cursor:zoom-in}usa-card[effect~="expand"]:not([expanded]) [data-detail]{display:none}usa-card[expanded]{position:fixed;inset:6vh max(4vw,calc(50vw - 420px));z-index:1000;overflow:auto;cursor:default;background:var(--usa-card-bg);box-shadow:0 30px 80px -20px rgb(0 0 0 / 0.6)}.usa-card-backdrop{position:fixed;inset:0;z-index:999;background:rgb(0 0 0 / 0.45)}@media (prefers-reduced-motion:reduce){usa-card,usa-card *,usa-card .usa-card-sheen::before{transition-duration:0.01ms !important;animation:none !important}usa-card[effect~="lift"][data-hover]{transform:none}usa-card[effect~="flip"]>[data-front],usa-card[effect~="flip"]>[data-back]{transform:none !important}usa-card[effect~="flip"][flipped]>[data-front],usa-card[effect~="flip"]:not([flipped])>[data-back]{opacity:0;visibility:hidden}usa-card[effect~="flip"]:not([trigger="click"]):hover>[data-front]{opacity:0;visibility:hidden}usa-card[effect~="flip"]:not([trigger="click"]):hover>[data-back]{opacity:1;visibility:visible}}@media (prefers-reduced-transparency:reduce),(forced-colors:active){usa-card[effect~="glass"]{background:var(--usa-card-bg);-webkit-backdrop-filter:none;backdrop-filter:none}}
36
+ usa-carousel-3d{position:relative;display:grid;place-items:center;perspective:var(--usa-c3d-perspective,1200px);transform-style:preserve-3d;touch-action:pan-y;user-select:none;-webkit-user-select:none;min-height:220px}usa-carousel-3d>*{grid-area:1 / 1;backface-visibility:hidden;transition:opacity 0.3s ease;cursor:pointer}usa-carousel-3d>[aria-current]{cursor:default}usa-carousel-3d:focus-visible{outline:2px solid var(--usa-accent,#7c5cff);outline-offset:4px;border-radius:12px}@media (prefers-reduced-motion:reduce){usa-carousel-3d{perspective:none}usa-carousel-3d>:not([aria-current]){visibility:hidden}}
37
+ usa-sticky-stack{display:grid;gap:28vh;padding-bottom:10vh}usa-sticky-stack>*{position:sticky;transform-origin:50% 0;will-change:transform}
38
+ usa-button{position:relative;display:inline-block;isolation:isolate;-webkit-tap-highlight-color:transparent;touch-action:manipulation;vertical-align:middle}usa-button[role="button"]{cursor:pointer}usa-button .usa-button-face{position:relative;overflow:hidden;will-change:transform;transform-origin:50% 60%;white-space:nowrap}usa-button[deform~="gooey"] .usa-button-face{overflow:visible}usa-button[deform~="dent"] .usa-button-face::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity 0.2s ease;background:radial-gradient(circle at var(--usa-dent-x,50%) var(--usa-dent-y,50%),rgb(0 0 0 / 0.28),transparent 60%)}usa-button[deform~="dent"][data-pressed] .usa-button-face::after{opacity:1}usa-button .usa-button-goo{position:absolute;inset:0;z-index:-1;pointer-events:none;filter:url(#usa-goo)}usa-button .usa-button-goo i{position:absolute;width:22px;height:22px;border-radius:50%;background:var(--usa-goo-bg);transform:translate(-50%,-50%) scale(0.4)}usa-button .usa-button-face[data-shape="circle"],usa-button .usa-button-face[data-shape="icon"]{padding-inline:0;aspect-ratio:1;border-radius:999px;display:inline-grid;place-items:center}usa-button .usa-button-face [data-label],usa-button .usa-button-face [data-icon]{transition:opacity 0.2s ease}usa-button .usa-button-face[data-shape="circle"] [data-label],usa-button .usa-button-face[data-shape="icon"] [data-label]{position:absolute;opacity:0;pointer-events:none}usa-button .usa-button-face[data-shape="circle"] [data-icon]{opacity:0}usa-button .usa-button-status{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}usa-button .usa-button-status svg{grid-area:1 / 1;width:1.25em;height:1.25em;fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;opacity:0}usa-button .usa-button-spin circle{stroke-dasharray:60 100;transform-origin:50% 50%;animation:usa-btn-spin 0.8s linear infinite}usa-button .usa-button-ok path,usa-button .usa-button-err path{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 0.35s ease 0.1s}usa-button .usa-button-face[data-state="loading"] .usa-button-spin,usa-button .usa-button-face[data-state="success"] .usa-button-ok,usa-button .usa-button-face[data-state="error"] .usa-button-err{opacity:1}usa-button .usa-button-face[data-state="success"] .usa-button-ok path,usa-button .usa-button-face[data-state="error"] .usa-button-err path{stroke-dashoffset:0}usa-button .usa-button-face:is([data-state="loading"],[data-state="success"],[data-state="error"])>:not(.usa-button-status){opacity:0}usa-button .usa-button-face[data-state="success"]{background:#16a34a;border-color:#16a34a;color:#fff}usa-button .usa-button-face[data-state="error"]{background:#e5484d;border-color:#e5484d;color:#fff}usa-button .usa-button-face[data-state]{transition:background-color 0.25s ease,color 0.25s ease,border-radius 0.3s ease}@keyframes usa-btn-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){usa-button .usa-button-spin circle{animation-duration:2.4s}usa-button .usa-button-face,usa-button .usa-button-face *{transition:none !important}}
39
+ usa-checkbox{--usa-checkbox-on:var(--usa-accent,#7c5cff);display:inline-flex;align-items:center;gap:0.55em;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent;vertical-align:middle}usa-checkbox .usa-checkbox-box{flex:none;width:1.25em;height:1.25em;border-radius:0.3em;border:1.5px solid color-mix(in srgb,currentColor 55%,transparent);display:grid;place-items:center;transition:background-color 0.2s ease,border-color 0.2s ease;box-sizing:border-box}usa-checkbox[shape="circle"] .usa-checkbox-box{border-radius:50%}usa-checkbox svg{width:85%;height:85%;fill:none;stroke:#fff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}usa-checkbox svg path{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 0.28s cubic-bezier(0.65,0,0.35,1) 0.05s}usa-checkbox[checked]:not([indeterminate]) .usa-checkbox-check,usa-checkbox[indeterminate] .usa-checkbox-dash{stroke-dashoffset:0}usa-checkbox[checked] .usa-checkbox-box,usa-checkbox[indeterminate] .usa-checkbox-box{background:var(--usa-checkbox-on);border-color:var(--usa-checkbox-on)}usa-checkbox[disabled]{opacity:0.45;cursor:not-allowed}usa-checkbox:focus-visible{outline:none}usa-checkbox:focus-visible .usa-checkbox-box{outline:2px solid var(--usa-checkbox-on);outline-offset:2px}@media (prefers-reduced-motion:reduce){usa-checkbox svg path,usa-checkbox .usa-checkbox-box{transition:none}}
40
+ usa-click{position:relative;display:inline-block;overflow:hidden;isolation:isolate;border-radius:inherit;-webkit-tap-highlight-color:transparent;touch-action:manipulation}usa-click[block]{display:block}usa-click .usa-click-wave{position:absolute;border-radius:50%;pointer-events:none;z-index:-1;transform:scale(0);background:radial-gradient(circle,var(--usa-wave) 0 55%,color-mix(in srgb,var(--usa-wave) 40%,transparent) 70%,transparent 72%)}
41
+ usa-double-tap{position:relative;display:block;touch-action:manipulation;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}usa-double-tap .usa-double-tap-icon{position:absolute;pointer-events:none;font-size:64px;line-height:1;color:#f43f5e;transform:translate(-50%,-50%);text-shadow:0 6px 18px rgb(0 0 0 / 0.35);z-index:2}
42
+ usa-hold{--usa-hold-color:#e5484d;position:relative;display:inline-flex;align-items:center;gap:0.5em;cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent}usa-hold .usa-hold-ring{width:1.6em;height:1.6em;transform:rotate(-90deg);flex:none}usa-hold .usa-hold-ring circle{fill:none;stroke-width:3.5;stroke-linecap:round}usa-hold .usa-hold-ring circle:first-child{stroke:color-mix(in srgb,currentColor 18%,transparent)}usa-hold .usa-hold-ring circle:last-child{stroke:var(--usa-hold-color);stroke-dasharray:100;stroke-dashoffset:100}usa-hold[data-holding]{transform:scale(calc(1 - var(--usa-hold,0) * 0.05))}usa-hold[data-done] .usa-hold-ring{animation:usa-hold-pop 0.4s cubic-bezier(0.34,1.56,0.64,1)}@keyframes usa-hold-pop{50%{transform:rotate(-90deg) scale(1.3)}}usa-hold[disabled]{opacity:0.5;cursor:not-allowed}usa-hold:focus-visible{outline:2px solid var(--usa-hold-color);outline-offset:3px;border-radius:10px}@media (prefers-reduced-motion:reduce){usa-hold[data-holding]{transform:none}usa-hold[data-done] .usa-hold-ring{animation:none}}
43
+ usa-icon-morph{display:inline-grid;place-items:center;line-height:0;color:inherit;-webkit-tap-highlight-color:transparent;vertical-align:middle}usa-icon-morph svg{fill:currentColor;overflow:visible}usa-icon-morph[toggle]{cursor:pointer;border-radius:8px}usa-icon-morph[toggle]:focus-visible{outline:2px solid var(--usa-accent,#7c5cff);outline-offset:3px}
44
+ usa-like{--usa-like-color:#f43f5e;display:inline-flex;align-items:center;gap:0.35em;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent;vertical-align:middle}usa-like .usa-like-heart{fill:transparent;stroke:currentColor;stroke-width:1.8;transition:fill 0.2s ease,stroke 0.2s ease;overflow:visible}usa-like[liked] .usa-like-heart{fill:var(--usa-like-color);stroke:var(--usa-like-color)}usa-like .usa-like-count{font-variant-numeric:tabular-nums}usa-like[disabled]{opacity:0.5;cursor:not-allowed}usa-like:focus-visible{outline:2px solid var(--usa-like-color);outline-offset:3px;border-radius:8px}