use-scroll-animate 2.4.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.
- package/CHANGELOG.md +15 -0
- package/README.md +1 -0
- package/README_ja.md +1 -0
- package/README_zh.md +1 -0
- package/dist/components/click.cjs +985 -0
- package/dist/components/click.cjs.map +1 -0
- package/dist/components/click.css +9 -0
- package/dist/components/click.d.cts +250 -0
- package/dist/components/click.d.ts +250 -0
- package/dist/components/click.js +967 -0
- package/dist/components/click.js.map +1 -0
- package/dist/components.cjs +19 -0
- package/dist/components.cjs.map +1 -1
- package/dist/components.css +7 -0
- package/dist/components.d.cts +214 -2
- package/dist/components.d.ts +214 -2
- package/dist/components.js +5 -1
- package/dist/components.js.map +1 -1
- package/dist/components.umd.js +2 -2
- package/dist/components.umd.js.map +1 -1
- package/docs/components.md +13 -0
- package/package.json +13 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"click.js","sources":["../../src/components/click/fx.ts","../../src/components/click/click.ts","../../src/components/click/button.ts","../../src/components/click/icon-morph.ts","../../src/components/click/like.ts","../../src/components/click/hold.ts","../../src/components/click/double-tap.ts","../../src/components/click/checkbox.ts","../../src/components/click/index.ts"],"sourcesContent":["import { prefersReducedMotion, applyFrame } from '../base';\n\n/**\n * Click-effect helpers (v2.5): `burst()`, `confetti()`, `shake()`, `haptic()`.\n * Particles live in one fixed, pointer-transparent layer and are removed when\n * their animation ends. Under reduced motion particles are skipped and\n * `shake()` only flashes an outline.\n */\n\nlet layer: HTMLElement | null = null;\nfunction fxLayer(): HTMLElement {\n if (layer && layer.isConnected) return layer;\n layer = document.createElement('div');\n layer.className = 'usa-fx-layer';\n layer.setAttribute('aria-hidden', 'true');\n layer.style.cssText = 'position:fixed;inset:0;pointer-events:none;z-index:2147483000;overflow:hidden;contain:strict';\n document.body.appendChild(layer);\n return layer;\n}\n\nexport interface BurstOptions {\n /** Number of particles (default 12). */\n count?: number;\n /** Colours to pick from (default: accent palette). */\n colors?: string[];\n /** Travel distance in px (default 48). */\n distance?: number;\n /** Particle size in px (default 6). */\n size?: number;\n /** `circle` (default), `square`, `star`, `heart` or any text / emoji. */\n shape?: 'circle' | 'square' | 'star' | 'heart' | string;\n /** Duration in ms (default 600). */\n duration?: number;\n}\n\nconst PALETTE = ['#7c5cff', '#22d3ee', '#f472b6', '#facc15', '#34d399', '#fb923c'];\nconst GLYPH: Record<string, string> = { star: '★', heart: '♥' };\n\nfunction particle(x: number, y: number, size: number, color: string, shape: string): HTMLElement {\n const p = document.createElement('span');\n const glyph = GLYPH[shape] || (shape !== 'circle' && shape !== 'square' ? shape : '');\n p.style.cssText = `position:absolute;left:${x}px;top:${y}px;width:${size}px;height:${size}px;margin:${-size / 2}px 0 0 ${-size / 2}px;will-change:transform,opacity;` +\n (glyph ? `font-size:${size * 2}px;line-height:${size}px;text-align:center;color:${color}` : `background:${color};border-radius:${shape === 'square' ? '2px' : '50%'}`);\n if (glyph) p.textContent = glyph;\n fxLayer().appendChild(p);\n return p;\n}\n\nconst done = (a: Animation | null, el: Element) => {\n if (a) a.onfinish = () => el.remove();\n else el.remove();\n};\n\n/** Particles radiating from client point (x, y). Returns the number spawned. */\nexport function burst(x: number, y: number, options: BurstOptions = {}): number {\n if (typeof document === 'undefined' || prefersReducedMotion()) return 0;\n const { count = 12, colors = PALETTE, distance = 48, size = 6, shape = 'circle', duration = 600 } = options;\n for (let i = 0; i < count; i++) {\n const angle = (i / count) * Math.PI * 2 + Math.random() * 0.4;\n const d = distance * (0.7 + Math.random() * 0.5);\n const p = particle(x, y, size, colors[i % colors.length], shape);\n const a = typeof p.animate === 'function'\n ? p.animate(\n [\n { transform: 'translate(0,0) scale(1)', opacity: 1 },\n { transform: `translate(${Math.cos(angle) * d}px, ${Math.sin(angle) * d}px) scale(0.2)`, opacity: 0 },\n ],\n { duration: duration * (0.8 + Math.random() * 0.4), easing: 'cubic-bezier(0.22, 1, 0.36, 1)', fill: 'forwards' }\n )\n : null;\n done(a, p);\n }\n return count;\n}\n\nexport interface ConfettiOptions {\n /** Origin in client px (default: centre-bottom third of the viewport). */\n x?: number;\n y?: number;\n /** Pieces (default 80). */\n count?: number;\n /** Spread angle in degrees (default 70). */\n spread?: number;\n /** Launch speed multiplier (default 1). */\n velocity?: number;\n colors?: string[];\n /** Duration in ms (default 1600). */\n duration?: number;\n}\n\n/** A confetti cannon (paper pieces with gravity, drift and spin). */\nexport function confetti(options: ConfettiOptions = {}): number {\n if (typeof document === 'undefined' || prefersReducedMotion()) return 0;\n const W = window.innerWidth || 800;\n const H = window.innerHeight || 600;\n const { x = W / 2, y = H * 0.66, count = 80, spread = 70, velocity = 1, colors = PALETTE, duration = 1600 } = options;\n for (let i = 0; i < count; i++) {\n const angle = ((-90 + (Math.random() - 0.5) * spread) * Math.PI) / 180;\n const speed = (260 + Math.random() * 320) * velocity;\n const vx = Math.cos(angle) * speed;\n const vy = Math.sin(angle) * speed;\n const p = particle(x, y, 6 + Math.random() * 5, colors[i % colors.length], Math.random() > 0.5 ? 'square' : 'circle');\n p.style.height = `${4 + Math.random() * 3}px`;\n const frames: Keyframe[] = [];\n const steps = 8;\n const T = duration / 1000;\n const spin = (Math.random() - 0.5) * 1440;\n for (let s = 0; s <= steps; s++) {\n const t = (s / steps) * T;\n const g = 900;\n frames.push({\n transform: `translate(${(vx * t * 0.8).toFixed(1)}px, ${(vy * t + 0.5 * g * t * t).toFixed(1)}px) rotate(${((spin * s) / steps).toFixed(0)}deg) rotateX(${s * 120}deg)`,\n opacity: s === steps ? 0 : 1,\n });\n }\n const a = typeof p.animate === 'function' ? p.animate(frames, { duration: duration * (0.85 + Math.random() * 0.3), easing: 'linear', fill: 'forwards' }) : null;\n done(a, p);\n }\n return count;\n}\n\n/** Horizontal error shake (`intensity` px, default 8). Reduced motion: a red outline flash. */\nexport function shake(el: Element, intensity = 8, duration = 480): Animation | null {\n const t = el as HTMLElement;\n if (typeof t.animate !== 'function') return null;\n if (prefersReducedMotion()) return t.animate([{ outline: '2px solid #e5484d' }, { outline: '2px solid transparent' }], { duration: 600 });\n const k = intensity;\n return t.animate(\n [0, -k, k, -k * 0.75, k * 0.75, -k * 0.4, k * 0.4, 0].map((v) => ({ transform: `translateX(${v}px)` })),\n { duration, easing: 'ease-in-out' }\n );\n}\n\n/** `navigator.vibrate()` where supported (Android Chrome, some WebViews). Returns whether it ran. */\nexport function haptic(pattern: number | number[] = 10): boolean {\n try {\n return typeof navigator !== 'undefined' && typeof navigator.vibrate === 'function' ? navigator.vibrate(pattern) : false;\n } catch {\n return false;\n }\n}\n\nexport { applyFrame };\n","import { defineElement, EASE_OUT, type UsaElement } from '../base';\nimport { springEasing } from '../physics/spring';\nimport { burst, confetti, shake, haptic } from './fx';\nimport css from './click.css?raw';\n\nexport const CLICK_EFFECTS = ['ripple', 'burst', 'confetti', 'squish', 'press-spring', 'shake'] as const;\nexport type ClickEffect = (typeof CLICK_EFFECTS)[number];\n\n/**\n * `<usa-click>` — click / tap effects on whatever it wraps (combinable:\n * `effect=\"press-spring burst\"`).\n *\n * - `ripple` — an ink wave from the pointer (enhanced: `color`, soft edge);\n * - `burst` — particles radiating from the pointer (`shape`: circle, square, star, heart, emoji);\n * - `confetti` — a confetti cannon from the click point;\n * - `squish` — squash on press, stretch on release (spring);\n * - `press-spring` — dips while pressed, springs back with overshoot;\n * - `shake` — horizontal error shake; plays on `invalid` events from a form\n * inside, on `shake()`, or on click when `trigger=\"click\"`.\n *\n * Attributes: `effect`, `color`, `shape`, `count`, `haptic` (vibrate ms,\n * where supported), `disabled`. Keyboard (Space/Enter) triggers the effects\n * from the centre. Reduced motion: no particles or movement; press dims.\n */\nexport interface UsaClickElement extends UsaElement {\n readonly effects: string[];\n play(x?: number, y?: number): void;\n shake(): void;\n}\n\nexport function defineClick(tag = 'usa-click'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaClick extends Base {\n static get observedAttributes(): string[] {\n return ['effect', 'disabled'];\n }\n\n private _press: Animation | null = null;\n\n get effects(): string[] {\n return this.str('effect', 'ripple').split(/[\\s,]+/).filter(Boolean);\n }\n\n mount(): void {\n this.listen(this, 'pointerdown', (e: PointerEvent) => {\n if (this.flag('disabled') || (e.pointerType === 'mouse' && e.button !== 0)) return;\n this.down();\n if (this.effects.includes('ripple')) this.ripple(e.clientX, e.clientY);\n });\n const up = () => this.up();\n this.listen(this, 'pointerup', up);\n this.listen(this, 'pointerleave', up);\n this.listen(this, 'pointercancel', up);\n this.listen(this, 'click', (e: MouseEvent) => {\n if (this.flag('disabled')) return;\n const kb = e.detail === 0;\n const r = this.getBoundingClientRect();\n const x = kb ? r.left + r.width / 2 : e.clientX;\n const y = kb ? r.top + r.height / 2 : e.clientY;\n if (kb && this.effects.includes('ripple')) this.ripple(x, y);\n this.play(x, y);\n if (this.effects.includes('shake') && this.str('trigger') === 'click') this.shake();\n });\n this.listen(this, 'keydown', (e: KeyboardEvent) => {\n if ((e.key === 'Enter' || e.key === ' ') && !e.repeat) this.down();\n });\n this.listen(this, 'keyup', up);\n if (this.effects.includes('shake')) this.listen(this, 'invalid', () => this.shake(), { capture: true });\n }\n\n /** Particles + haptics at client (x, y) (default: centre). */\n play(x?: number, y?: number): void {\n if (x === undefined || y === undefined) {\n const r = this.getBoundingClientRect();\n x = r.left + r.width / 2;\n y = r.top + r.height / 2;\n }\n const fx = this.effects;\n const colors = this.str('color') ? this.str('color').split(',') : undefined;\n if (fx.includes('burst')) burst(x, y, { count: this.num('count', 12), shape: this.str('shape', 'circle'), colors });\n if (fx.includes('confetti')) confetti({ x, y, count: this.num('count', 60), colors, spread: 90, velocity: 0.8 });\n if (this.hasAttribute('haptic')) haptic(this.num('haptic', 10));\n this.emit('click-effect', { x, y, effects: fx });\n }\n\n shake(): void {\n shake(this);\n if (this.hasAttribute('haptic')) haptic([30, 40, 30]);\n }\n\n private ripple(x: number, y: number): void {\n if (this.reduced) return;\n const r = this.getBoundingClientRect();\n const cx = x - r.left;\n const cy = y - r.top;\n const radius = Math.hypot(Math.max(cx, r.width - cx), Math.max(cy, r.height - cy));\n const wave = document.createElement('span');\n wave.className = 'usa-click-wave';\n wave.setAttribute('aria-hidden', 'true');\n wave.style.cssText = `width:${radius * 2}px;height:${radius * 2}px;left:${cx - radius}px;top:${cy - radius}px;--usa-wave:${this.str('color', 'currentColor').split(',')[0]}`;\n this.append(wave);\n const a = this.motion(wave, [{ transform: 'scale(0)', opacity: 0.35 }, { transform: 'scale(1)', opacity: 0.25, offset: 0.6 }, { transform: 'scale(1.05)', opacity: 0 }], {\n duration: 650,\n easing: EASE_OUT,\n fill: 'forwards',\n });\n if (a) a.onfinish = () => wave.remove();\n else wave.remove();\n }\n\n private down(): void {\n if (this.hasAttribute('data-pressed')) return;\n const fx = this.effects;\n if (!fx.includes('squish') && !fx.includes('press-spring')) return;\n this.setAttribute('data-pressed', '');\n this._press?.cancel();\n const to = this.reduced ? { opacity: 0.75 } : fx.includes('squish') ? { transform: 'scale(1.08, 0.86)' } : { transform: 'scale(0.94)' };\n const from: Keyframe = this.reduced ? { opacity: 1 } : { transform: 'none' };\n this._press = this.motion(this, [from, to], {\n duration: 110,\n easing: 'ease-out',\n fill: 'forwards',\n });\n }\n\n private up(): void {\n if (!this.hasAttribute('data-pressed')) return;\n this.removeAttribute('data-pressed');\n const fx = this.effects;\n this._press?.cancel();\n if (this.reduced) {\n this._press = this.motion(this, [{ opacity: 0.75 }, { opacity: 1 }], { duration: 150 });\n return;\n }\n const from = fx.includes('squish') ? 'scale(1.08, 0.86)' : 'scale(0.94)';\n const frames: Keyframe[] = fx.includes('squish')\n ? [{ transform: from }, { transform: 'scale(0.92, 1.1)', offset: 0.3 }, { transform: 'scale(1.03, 0.97)', offset: 0.6 }, { transform: 'none' }]\n : [{ transform: from }, { transform: 'none' }];\n this._press = this.motion(this, frames, fx.includes('squish') ? { duration: 520, easing: 'ease-out' } : springEasing('bouncy'));\n }\n },\n { id: 'click', text: css }\n );\n}\n","import { defineElement, clamp, type UsaElement } from '../base';\nimport { springEasing } from '../physics/spring';\nimport { shake, haptic } from './fx';\nimport css from './button.css?raw';\n\nexport const BUTTON_DEFORMS = ['squash', 'wobble', 'gooey', 'dent'] as const;\nexport type ButtonDeform = (typeof BUTTON_DEFORMS)[number];\nexport type ButtonShape = 'pill' | 'circle' | 'icon';\nexport type ButtonState = 'idle' | 'loading' | 'success' | 'error';\n\nlet gooInjected = false;\nfunction injectGoo(): void {\n if (gooInjected || typeof document === 'undefined') return;\n gooInjected = true;\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('aria-hidden', 'true');\n svg.setAttribute('width', '0');\n svg.setAttribute('height', '0');\n svg.style.position = 'absolute';\n svg.innerHTML = '<filter id=\"usa-goo\"><feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"6\" result=\"b\"/><feColorMatrix in=\"b\" values=\"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 22 -9\" result=\"g\"/><feComposite in=\"SourceGraphic\" in2=\"g\" operator=\"atop\"/></filter>';\n document.body.appendChild(svg);\n}\n\n/**\n * `<usa-button>` — **button click deformation** (按钮点击形变) around a\n * native `<button>` (or `<a>`) child — or the element itself becomes a button.\n *\n * `deform` (combinable, e.g. `deform=\"squash wobble\"`):\n * - `squash` — squash on press, stretch-and-settle on release (spring);\n * - `wobble` — elastic border-radius wobble after a click;\n * - `gooey` — liquid blob: droplets squeeze out from the press point and\n * merge back (SVG goo filter);\n * - `dent` — the surface dents toward the pressed point (3D tilt + inner shade).\n *\n * `shape=\"pill | circle | icon\"` morphs the outline with a spring (label =\n * `[data-label]`, icon = `[data-icon]` children); `morphTo(shape)`.\n *\n * `morph=\"submit\"` — click → `loading` (shrinks to a circle with a spinner,\n * `aria-busy`), then `success` (check) or `error` (shake + cross), and back\n * to `idle` after `reset` ms (1800). Drive it with `state=\"…\"` / `.state`, or\n * call `event.detail.done(ok)` from a `usa:submit` listener.\n *\n * Attributes: `deform`, `shape`, `morph`, `state`, `reset`, `haptic`,\n * `disabled`. Events: `usa:submit`, `usa:state`. Reduced motion: no\n * deformation; shape and state changes are instant; status still announced.\n */\nexport interface UsaButtonElement extends UsaElement {\n readonly target: HTMLElement;\n shape: ButtonShape;\n state: ButtonState;\n morphTo(shape: ButtonShape): Promise<void>;\n}\n\nexport function defineButton(tag = 'usa-button'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaButton extends Base {\n static get observedAttributes(): string[] {\n return ['deform', 'state', 'shape', 'disabled'];\n }\n\n private _press: Animation | null = null;\n private _timer: ReturnType<typeof setTimeout> | undefined;\n private _status: HTMLElement | null = null;\n private _shapeBefore: ButtonShape | null = null;\n\n get target(): HTMLElement {\n return (this.querySelector(':scope > button, :scope > a, :scope > [role=\"button\"]') as HTMLElement) || this;\n }\n private deforms(): string[] {\n return this.str('deform').split(/[\\s,]+/).filter(Boolean);\n }\n get shape(): ButtonShape {\n return (this.str('shape', 'pill') as ButtonShape) || 'pill';\n }\n set shape(v: ButtonShape) {\n this.morphTo(v);\n }\n get state(): ButtonState {\n return (this.str('state', 'idle') as ButtonState) || 'idle';\n }\n set state(v: ButtonState) {\n this.setAttribute('state', v);\n }\n\n mount(): void {\n const t = this.target;\n if (t === this) {\n this.setAttribute('role', 'button');\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n }\n t.classList.add('usa-button-face');\n if (this.str('morph') === 'submit' && !t.querySelector('.usa-button-status')) {\n const s = document.createElement('span');\n s.className = 'usa-button-status';\n s.setAttribute('aria-hidden', 'true');\n s.innerHTML =\n '<svg class=\"usa-button-spin\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"9\" pathLength=\"100\"/></svg>' +\n '<svg class=\"usa-button-ok\" viewBox=\"0 0 24 24\"><path d=\"M5 12.5l4.2 4.2L19 7\" pathLength=\"1\"/></svg>' +\n '<svg class=\"usa-button-err\" viewBox=\"0 0 24 24\"><path d=\"M7 7l10 10M17 7L7 17\" pathLength=\"1\"/></svg>';\n t.append(s);\n const live = document.createElement('span');\n live.className = 'usa-sr';\n live.setAttribute('role', 'status');\n this.append(live);\n this._status = live;\n }\n if (this.deforms().includes('gooey')) injectGoo();\n this.applyState();\n this.listen(t, 'pointerdown', (e: PointerEvent) => {\n if (this.isOff() || (e.pointerType === 'mouse' && e.button !== 0)) return;\n this.down(e.clientX, e.clientY);\n });\n for (const ev of ['pointerup', 'pointerleave', 'pointercancel']) this.listen(t, ev, () => this.up());\n this.listen(t, 'keydown', (e: KeyboardEvent) => (e.key === 'Enter' || e.key === ' ') && !e.repeat && this.down());\n this.listen(t, 'keyup', () => this.up());\n this.listen(t, 'click', (e: MouseEvent) => {\n if (this.isOff()) {\n if (this.state === 'loading') e.preventDefault();\n return;\n }\n if (this.deforms().includes('wobble')) this.wobble();\n if (this.hasAttribute('haptic')) haptic(this.num('haptic', 10));\n if (this.str('morph') === 'submit' && this.state === 'idle') this.submit();\n });\n if (t === this)\n this.listen(this, 'keydown', (e: KeyboardEvent) => {\n if ((e.key === 'Enter' || e.key === ' ') && !e.repeat) {\n e.preventDefault();\n this.click();\n }\n });\n }\n\n unmount(): void {\n clearTimeout(this._timer);\n this._press?.cancel();\n }\n\n changed(name: string): void {\n if (name === 'state') this.applyState();\n else if (name === 'shape') this.target.setAttribute('data-shape', this.shape);\n else {\n super.changed(name);\n }\n }\n\n private isOff(): boolean {\n return this.flag('disabled') || this.state === 'loading';\n }\n\n /* ------------------------------------------------ press deformations */\n private down(x?: number, y?: number): void {\n if (this.reduced || this.hasAttribute('data-pressed')) return;\n const d = this.deforms();\n if (!d.length) return;\n this.setAttribute('data-pressed', '');\n const t = this.target;\n const r = t.getBoundingClientRect();\n const px = x === undefined ? 0.5 : clamp((x - r.left) / (r.width || 1), 0, 1);\n const py = y === undefined ? 0.5 : clamp((y - r.top) / (r.height || 1), 0, 1);\n t.style.setProperty('--usa-dent-x', `${(px * 100).toFixed(1)}%`);\n t.style.setProperty('--usa-dent-y', `${(py * 100).toFixed(1)}%`);\n const parts: string[] = [];\n if (d.includes('dent')) parts.push(`perspective(600px) rotateX(${((0.5 - py) * -14).toFixed(2)}deg) rotateY(${((px - 0.5) * 14).toFixed(2)}deg) scale(0.97)`);\n if (d.includes('squash')) parts.push('scale(1.12, 0.84)');\n if (d.includes('gooey')) {\n parts.push('scale(0.96)');\n this.goo(px, py);\n }\n if (!parts.length) return;\n this._press?.cancel();\n this._press = this.motion(t, [{ transform: 'none' }, { transform: parts.join(' ') }], { duration: 110, easing: 'ease-out', fill: 'forwards' });\n }\n\n private up(): void {\n if (!this.hasAttribute('data-pressed')) return;\n this.removeAttribute('data-pressed');\n const t = this.target;\n const a = this._press;\n const from = (a?.effect as KeyframeEffect | null)?.getKeyframes?.().slice(-1)[0]?.transform as string | undefined;\n a?.cancel();\n if (!from) return;\n this._press = this.motion(t, [{ transform: from }, { transform: 'none' }], { ...springEasing(this.deforms().includes('squash') ? 'bouncy' : 'wobbly') });\n }\n\n private wobble(): void {\n if (this.reduced) return;\n const t = this.target;\n const r = getComputedStyle(t).borderRadius || '12px';\n this.motion(\n t,\n [\n { borderRadius: r },\n { borderRadius: '42% 58% 50% 50% / 60% 45% 55% 40%', offset: 0.2 },\n { borderRadius: '58% 42% 45% 55% / 40% 60% 40% 60%', offset: 0.45 },\n { borderRadius: '48% 52% 52% 48% / 52% 48% 52% 48%', offset: 0.7 },\n { borderRadius: r },\n ],\n { duration: 700, easing: 'ease-out' }\n );\n }\n\n private goo(px: number, py: number): void {\n const t = this.target;\n const layer = document.createElement('span');\n layer.className = 'usa-button-goo';\n layer.setAttribute('aria-hidden', 'true');\n layer.style.setProperty('--usa-goo-bg', getComputedStyle(t).backgroundColor || 'currentColor');\n const drops: HTMLElement[] = [];\n for (let i = 0; i < 4; i++) {\n const d = document.createElement('i');\n d.style.left = `${(px * 100).toFixed(1)}%`;\n d.style.top = `${(py * 100).toFixed(1)}%`;\n layer.append(d);\n drops.push(d);\n }\n this.prepend(layer);\n let left = drops.length;\n drops.forEach((d, i) => {\n const ang = (i / drops.length) * Math.PI * 2 + 0.6;\n const dist = 26 + (i % 2) * 12;\n const a = this.motion(\n d,\n [\n { transform: 'translate(-50%, -50%) scale(0.4)' },\n { transform: `translate(calc(-50% + ${(Math.cos(ang) * dist).toFixed(1)}px), calc(-50% + ${(Math.sin(ang) * dist).toFixed(1)}px)) scale(1)`, offset: 0.45 },\n { transform: 'translate(-50%, -50%) scale(0.2)' },\n ],\n { duration: 700, easing: 'cubic-bezier(0.34, 1.3, 0.64, 1)', fill: 'forwards' }\n );\n const end = () => --left === 0 && layer.remove();\n if (a) a.onfinish = end;\n else end();\n });\n }\n\n /* ------------------------------------------------ shape morph */\n async morphTo(shape: ButtonShape): Promise<void> {\n const t = this.target;\n const before = t.getBoundingClientRect();\n this.setAttribute('shape', shape);\n t.setAttribute('data-shape', shape);\n if (this.reduced) return;\n const after = t.getBoundingClientRect();\n if (!before.width || !after.width || Math.abs(before.width - after.width) < 0.5) return;\n const a = this.motion(t, [{ width: `${before.width}px` }, { width: `${after.width}px` }], springEasing('stiff'));\n await a?.finished.catch(() => undefined);\n }\n\n /* ------------------------------------------------ submit morph */\n private submit(): void {\n let settled = false;\n const done = (ok = true) => {\n if (settled) return;\n settled = true;\n this.state = ok ? 'success' : 'error';\n };\n this.state = 'loading';\n this.emit('submit', { done });\n }\n\n private applyState(): void {\n if (this.str('morph') !== 'submit') return;\n const t = this.target;\n const s = this.state;\n clearTimeout(this._timer);\n t.setAttribute('data-state', s);\n if (s === 'loading') {\n if (this._shapeBefore === null) this._shapeBefore = this.shape;\n t.setAttribute('aria-busy', 'true');\n this.morphTo('circle');\n } else {\n t.removeAttribute('aria-busy');\n }\n if (s === 'error') {\n shake(t);\n if (this.hasAttribute('haptic')) haptic([30, 40, 30]);\n }\n if (s === 'success' && !this.reduced) {\n const ok = t.querySelector('.usa-button-ok');\n if (ok) this.motion(ok, [{ transform: 'scale(0.4)' }, { transform: 'scale(1)' }], springEasing('bouncy'));\n }\n if (this._status) this._status.textContent = s === 'loading' ? 'Loading…' : s === 'success' ? 'Done' : s === 'error' ? 'Failed' : '';\n if (s === 'success' || s === 'error') {\n this._timer = setTimeout(() => {\n this.state = 'idle';\n }, this.num('reset', 1800));\n }\n if (s === 'idle' && this._shapeBefore !== null) {\n const back = this._shapeBefore;\n this._shapeBefore = null;\n this.morphTo(back);\n }\n this.emit('state', { state: s });\n }\n },\n { id: 'button', text: css }\n );\n}\n","import { defineElement, type UsaElement } from '../base';\nimport { createSpring, type SpringValue } from '../physics/spring';\nimport css from './icon-morph.css?raw';\n\ntype Pt = [number, number];\ntype Quad = [Pt, Pt, Pt, Pt];\nconst C: Quad = [[12, 12], [12, 12], [12, 12], [12, 12]];\n\n/**\n * Morphable icons: every icon is three quads (four points each) on a 24×24\n * grid, so any icon can morph into any other by interpolating points.\n */\nexport const MORPH_ICONS: Record<string, [Quad, Quad, Quad]> = {\n play: [[[7, 5], [12.5, 8.25], [12.5, 15.75], [7, 19]], [[12.5, 8.25], [19, 12], [19, 12], [12.5, 15.75]], C],\n pause: [[[6, 5], [10, 5], [10, 19], [6, 19]], [[14, 5], [18, 5], [18, 19], [14, 19]], C],\n menu: [[[4, 6], [20, 6], [20, 8], [4, 8]], [[4, 11], [20, 11], [20, 13], [4, 13]], [[4, 16], [20, 16], [20, 18], [4, 18]]],\n close: [[[5.2, 6.6], [6.6, 5.2], [18.8, 17.4], [17.4, 18.8]], C, [[17.4, 5.2], [18.8, 6.6], [6.6, 18.8], [5.2, 17.4]]],\n plus: [[[11, 4], [13, 4], [13, 20], [11, 20]], [[4, 11], [20, 11], [20, 13], [4, 13]], C],\n minus: [[[4, 11], [20, 11], [20, 13], [4, 13]], [[4, 11], [20, 11], [20, 13], [4, 13]], C],\n check: [[[4.3, 12.7], [5.7, 11.3], [10.4, 16], [9, 17.4]], [[9, 17.4], [7.6, 16], [18.3, 5.3], [19.7, 6.7]], C],\n 'arrow-right': [[[4, 11], [17, 11], [17, 13], [4, 13]], [[12.6, 6.4], [14, 5], [21, 12], [19.6, 13.4]], [[19.6, 10.6], [21, 12], [14, 19], [12.6, 17.6]]],\n};\n\n/** SVG path data for an icon, or for the interpolation `t` (0–1) between two. */\nexport function morphPath(from: string, to: string = from, t = 0): string {\n const a = MORPH_ICONS[from] || MORPH_ICONS.menu;\n const b = MORPH_ICONS[to] || a;\n return a\n .map((q, i) => {\n const pts = q.map((p, j) => {\n const r = b[i][j];\n return `${(p[0] + (r[0] - p[0]) * t).toFixed(2)} ${(p[1] + (r[1] - p[1]) * t).toFixed(2)}`;\n });\n return `M${pts.join('L')}Z`;\n })\n .join('');\n}\n\n/**\n * `<usa-icon-morph>` — an icon that morphs between shapes with a spring:\n * play ↔ pause, menu ↔ close, plus ↔ minus, check, arrow-right…\n *\n * Attributes: `icons` (comma list, cycled; default `play,pause`), `index`\n * (current, 0), `size` (px, 24), `toggle` (makes it a button that cycles\n * on click / Enter / Space), `labels` (comma list of accessible names per\n * icon, e.g. `Play,Pause`), `preset` (spring, `wobbly`). Methods:\n * `next()`, `show(nameOrIndex)`. Events: `usa:change` (`{ index, icon }`).\n * Inside a `<usa-button>` or `<button>` it is decorative. Reduced motion:\n * the icon switches instantly.\n */\nexport interface UsaIconMorphElement extends UsaElement {\n index: number;\n readonly icon: string;\n next(): void;\n show(icon: string | number): void;\n}\n\nexport function defineIconMorph(tag = 'usa-icon-morph'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaIconMorph extends Base {\n static get observedAttributes(): string[] {\n return ['icons', 'size', 'toggle'];\n }\n\n private _i = 0;\n private _from = 'play';\n private _to = 'play';\n private _t!: SpringValue;\n\n private list(): string[] {\n return this.str('icons', 'play,pause').split(',').map((s) => s.trim()).filter((s) => MORPH_ICONS[s]);\n }\n get index(): number {\n return this._i;\n }\n set index(v: number) {\n this.show(v);\n }\n get icon(): string {\n return this.list()[this._i] || 'play';\n }\n\n private draw(t: number): void {\n this.querySelector('path')?.setAttribute('d', morphPath(this._from, this._to, t));\n }\n\n mount(): void {\n const size = this.num('size', 24);\n this.innerHTML = `<svg viewBox=\"0 0 24 24\" width=\"${size}\" height=\"${size}\" aria-hidden=\"true\" focusable=\"false\"><path/></svg>`;\n this._i = Math.max(0, Math.min(this.list().length - 1, this.num('index', 0)));\n this._from = this._to = this.icon;\n this._t = createSpring({ value: 1, spring: this.str('preset', 'wobbly'), onUpdate: (v) => this.draw(v) });\n this.draw(1);\n if (this.flag('toggle')) {\n this.setAttribute('role', 'button');\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n this.listen(this, 'click', () => this.next());\n this.listen(this, 'keydown', (e: KeyboardEvent) => {\n if ((e.key === 'Enter' || e.key === ' ') && !e.repeat) {\n e.preventDefault();\n this.next();\n }\n });\n }\n this.label();\n }\n\n unmount(): void {\n this._t?.stop();\n }\n\n private label(): void {\n const labels = this.str('labels').split(',').map((s) => s.trim());\n const l = labels[this._i];\n if (l) this.setAttribute('aria-label', l);\n if (!this.flag('toggle') && !l) this.setAttribute('aria-hidden', 'true');\n }\n\n show(icon: string | number): void {\n const list = this.list();\n const i = typeof icon === 'number' ? ((icon % list.length) + list.length) % list.length : list.indexOf(icon);\n if (i < 0 || !this._t) return;\n const name = list[i];\n // morph from wherever we are now (interruptible)\n const cur = this._t.value;\n this._from = cur >= 0.5 ? this._to : this._from;\n this._to = name;\n this._i = i;\n this._t.jump(0);\n this._t.set(1);\n this.label();\n this.emit('change', { index: i, icon: name });\n }\n\n next(): void {\n this.show(this._i + 1);\n }\n },\n { id: 'icon-morph', text: css }\n );\n}\n","import { defineElement, type UsaElement } from '../base';\nimport { springEasing } from '../physics/spring';\nimport { burst, haptic } from './fx';\nimport css from './like.css?raw';\n\nconst HEART = 'M12 21s-7.5-4.6-9.6-9.2C.9 8.4 3 4.5 6.7 4.5c2.1 0 3.6 1.2 5.3 3.2 1.7-2 3.2-3.2 5.3-3.2 3.7 0 5.8 3.9 4.3 7.3C19.5 16.4 12 21 12 21z';\n\n/**\n * `<usa-like>` — a like / favourite toggle: the heart pops with a spring and\n * bursts into particles when liked. `role=\"button\"` + `aria-pressed`.\n *\n * Attributes: `liked`, `count` (shown next to the heart, updated ±1),\n * `label` (accessible name, default \"Like\"), `color`, `size` (px, 24),\n * `haptic`, `disabled`. Events: `change`, `usa:change` (`{ liked, count }`).\n * Reduced motion: colour change only.\n */\nexport interface UsaLikeElement extends UsaElement {\n liked: boolean;\n count: number | null;\n toggle(force?: boolean): void;\n}\n\nexport function defineLike(tag = 'usa-like'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaLike extends Base {\n static get observedAttributes(): string[] {\n return ['liked', 'count', 'label', 'disabled'];\n }\n\n get liked(): boolean {\n return this.flag('liked');\n }\n set liked(v: boolean) {\n this.setFlag('liked', v);\n }\n get count(): number | null {\n return this.hasAttribute('count') ? this.num('count', 0) : null;\n }\n set count(v: number | null) {\n if (v === null) this.removeAttribute('count');\n else this.setAttribute('count', String(v));\n }\n\n mount(): void {\n if (!this.querySelector(':scope > .usa-like-heart')) {\n const size = this.num('size', 24);\n this.insertAdjacentHTML('afterbegin', `<svg class=\"usa-like-heart\" viewBox=\"0 0 24 24\" width=\"${size}\" height=\"${size}\" aria-hidden=\"true\"><path d=\"${HEART}\"/></svg><span class=\"usa-like-count\" aria-hidden=\"true\"></span>`);\n }\n if (this.str('color')) this.style.setProperty('--usa-like-color', this.str('color'));\n this.setAttribute('role', 'button');\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n this.sync();\n this.listen(this, 'click', () => this.toggle());\n this.listen(this, 'keydown', (e: KeyboardEvent) => {\n if ((e.key === 'Enter' || e.key === ' ') && !e.repeat) {\n e.preventDefault();\n this.toggle();\n }\n });\n }\n\n changed(): void {\n this.sync();\n }\n\n private sync(): void {\n const c = this.count;\n const label = this.str('label', 'Like');\n this.setAttribute('aria-pressed', String(this.liked));\n this.setAttribute('aria-label', c === null ? label : `${label} (${c})`);\n this.toggleAttribute('aria-disabled', this.flag('disabled'));\n const out = this.querySelector('.usa-like-count');\n if (out) out.textContent = c === null ? '' : new Intl.NumberFormat().format(c);\n }\n\n toggle(force?: boolean): void {\n if (this.flag('disabled')) return;\n const next = force === undefined ? !this.liked : force;\n if (next === this.liked) return;\n this.liked = next;\n if (this.count !== null) this.count = Math.max(0, this.count + (next ? 1 : -1));\n this.sync();\n const heart = this.querySelector('.usa-like-heart');\n if (next && heart && !this.reduced) {\n this.motion(heart, [{ transform: 'scale(0.4)' }, { transform: 'scale(1)' }], springEasing('bouncy'));\n const r = heart.getBoundingClientRect();\n burst(r.left + r.width / 2, r.top + r.height / 2, { count: 10, distance: 28, size: 5, colors: [getComputedStyle(this).getPropertyValue('--usa-like-color').trim() || '#f43f5e', '#fb923c', '#facc15'] });\n }\n if (this.hasAttribute('haptic')) haptic(this.num('haptic', 12));\n this.dispatchEvent(new Event('change', { bubbles: true }));\n this.emit('change', { liked: next, count: this.count });\n }\n },\n { id: 'like', text: css }\n );\n}\n","import { defineElement, raf, caf, now, type UsaElement } from '../base';\nimport { haptic } from './fx';\nimport css from './hold.css?raw';\n\n/**\n * `<usa-hold>` — hold-to-confirm: press and hold (pointer, Space or Enter)\n * while a progress ring fills; releasing early rewinds it. Good for\n * destructive actions.\n *\n * Attributes: `duration` (ms, 1200), `label` (accessible name), `color`,\n * `disabled`. CSS variable `--usa-hold` (0–1). Events: `usa:progress`,\n * `usa:confirm`, `usa:cancel`. Reduced motion: same timing, the ring fills\n * without the scale pulse.\n */\nexport interface UsaHoldElement extends UsaElement {\n readonly progress: number;\n cancel(): void;\n}\n\nexport function defineHold(tag = 'usa-hold'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaHold extends Base {\n static get observedAttributes(): string[] {\n return ['duration', 'disabled'];\n }\n\n private _p = 0;\n private _frame = 0;\n private _holding = false;\n\n get progress(): number {\n return this._p;\n }\n\n private set(p: number): void {\n this._p = p;\n this.style.setProperty('--usa-hold', p.toFixed(4));\n const c = this.querySelector<SVGCircleElement>('.usa-hold-ring circle:last-child');\n if (c) c.style.strokeDashoffset = String(100 - p * 100);\n }\n\n mount(): void {\n if (!this.querySelector(':scope > .usa-hold-ring')) {\n this.insertAdjacentHTML('beforeend', '<svg class=\"usa-hold-ring\" viewBox=\"0 0 36 36\" aria-hidden=\"true\"><circle cx=\"18\" cy=\"18\" r=\"15.9\" pathLength=\"100\"/><circle cx=\"18\" cy=\"18\" r=\"15.9\" pathLength=\"100\"/></svg>');\n }\n if (this.str('color')) this.style.setProperty('--usa-hold-color', this.str('color'));\n this.setAttribute('role', 'button');\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n if (this.str('label')) this.setAttribute('aria-label', this.str('label'));\n this.setAttribute('aria-description', 'Press and hold to confirm');\n this.set(0);\n this.listen(this, 'pointerdown', (e: PointerEvent) => (e.pointerType !== 'mouse' || e.button === 0) && this.start());\n for (const t of ['pointerup', 'pointerleave', 'pointercancel']) this.listen(this, t, () => this.stop());\n this.listen(this, 'keydown', (e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n if (!e.repeat) this.start();\n }\n });\n this.listen(this, 'keyup', (e: KeyboardEvent) => (e.key === 'Enter' || e.key === ' ') && this.stop());\n this.listen(this, 'contextmenu', (e: Event) => this._holding && e.preventDefault());\n }\n\n unmount(): void {\n caf(this._frame);\n this._holding = false;\n }\n\n private start(): void {\n if (this.flag('disabled') || this._holding) return;\n this._holding = true;\n this.setAttribute('data-holding', '');\n const dur = Math.max(100, this.num('duration', 1200));\n let last = now();\n const tick = () => {\n const t = now();\n const p = Math.min(1, this._p + (t - last) / dur);\n last = t;\n this.set(p);\n this.emit('progress', { progress: p });\n if (p >= 1) {\n this._holding = false;\n this.removeAttribute('data-holding');\n this.setAttribute('data-done', '');\n if (this.hasAttribute('haptic')) haptic(20);\n this.emit('confirm');\n setTimeout(() => {\n this.removeAttribute('data-done');\n this.rewind();\n }, 700);\n return;\n }\n this._frame = raf(tick);\n };\n this._frame = raf(tick);\n }\n\n private stop(): void {\n if (!this._holding) return;\n this._holding = false;\n caf(this._frame);\n this.removeAttribute('data-holding');\n if (this._p < 1) {\n this.emit('cancel', { progress: this._p });\n this.rewind();\n }\n }\n\n private rewind(): void {\n let last = now();\n const back = () => {\n if (this._holding) return;\n const t = now();\n const p = Math.max(0, this._p - (t - last) / 250);\n last = t;\n this.set(p);\n if (p > 0) this._frame = raf(back);\n };\n this._frame = raf(back);\n }\n\n cancel(): void {\n this.stop();\n }\n },\n { id: 'hold', text: css }\n );\n}\n","import { defineElement, type UsaElement } from '../base';\nimport { burst, haptic } from './fx';\nimport css from './double-tap.css?raw';\n\n/**\n * `<usa-double-tap>` — detects a double tap / double click on its content\n * (photos, posts) and pops a heart (or `icon`) at the tap point.\n *\n * Attributes: `icon` (text / emoji, default ♥), `color`, `delay` (max ms\n * between taps, 300), `haptic`, `disabled`. Events: `usa:double-tap`\n * (`{ x, y }`, element-relative). Keyboard users: press `L` while focused.\n * Reduced motion: the icon fades in and out without scaling or particles.\n */\nexport interface UsaDoubleTapElement extends UsaElement {\n pop(x?: number, y?: number): void;\n}\n\nexport function defineDoubleTap(tag = 'usa-double-tap'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) =>\n class UsaDoubleTap extends Base {\n mount(): void {\n let last = 0;\n let lx = 0;\n let ly = 0;\n this.listen(this, 'pointerup', (e: PointerEvent) => {\n if (this.flag('disabled')) return;\n const t = e.timeStamp || Date.now();\n if (t - last < this.num('delay', 300) && Math.hypot(e.clientX - lx, e.clientY - ly) < 40) {\n last = 0;\n this.pop(e.clientX, e.clientY);\n } else {\n last = t;\n lx = e.clientX;\n ly = e.clientY;\n }\n });\n this.listen(this, 'dblclick', (e: MouseEvent) => e.preventDefault());\n this.listen(this, 'keydown', (e: KeyboardEvent) => e.key.toLowerCase() === 'l' && !e.repeat && this.pop());\n }\n\n pop(x?: number, y?: number): void {\n const r = this.getBoundingClientRect();\n if (x === undefined || y === undefined) {\n x = r.left + r.width / 2;\n y = r.top + r.height / 2;\n }\n const icon = document.createElement('span');\n icon.className = 'usa-double-tap-icon';\n icon.setAttribute('aria-hidden', 'true');\n icon.textContent = this.str('icon', '♥');\n icon.style.left = `${x - r.left}px`;\n icon.style.top = `${y - r.top}px`;\n if (this.str('color')) icon.style.color = this.str('color');\n this.append(icon);\n const frames: Keyframe[] = this.reduced\n ? [{ opacity: 0 }, { opacity: 1, offset: 0.3 }, { opacity: 0 }]\n : [\n { opacity: 0, transform: 'translate(-50%, -50%) scale(0.2) rotate(-15deg)' },\n { opacity: 1, transform: 'translate(-50%, -50%) scale(1.15) rotate(5deg)', offset: 0.3 },\n { opacity: 1, transform: 'translate(-50%, -50%) scale(1) rotate(0deg)', offset: 0.6 },\n { opacity: 0, transform: 'translate(-50%, -110%) scale(0.9)' },\n ];\n const a = this.motion(icon, frames, { duration: 900, easing: 'ease-out', fill: 'forwards' });\n if (a) a.onfinish = () => icon.remove();\n else icon.remove();\n burst(x, y, { count: 8, distance: 40, size: 5, colors: [this.str('color', '#f43f5e'), '#fb923c', '#facc15'] });\n if (this.hasAttribute('haptic')) haptic(15);\n this.emit('double-tap', { x: x - r.left, y: y - r.top });\n }\n },\n { id: 'double-tap', text: css }\n );\n}\n","import { defineElement, type UsaElement } from '../base';\nimport { springEasing } from '../physics/spring';\nimport css from './checkbox.css?raw';\n\n/**\n * `<usa-checkbox>` — an animated, form-associated checkbox: the box springs\n * and the check mark draws itself. `role=\"checkbox\"` + `aria-checked`\n * (`mixed` with `indeterminate`).\n *\n * Attributes: `checked`, `indeterminate`, `disabled`, `name`, `value`\n * (`on`), `label`, `shape` (`square` default, `circle`). Events: `change`,\n * `usa:change` (`{ checked }`). Reduced motion: no spring or drawing.\n */\nexport interface UsaCheckboxElement extends UsaElement {\n checked: boolean;\n indeterminate: boolean;\n toggle(force?: boolean): void;\n}\n\nexport function defineCheckbox(tag = 'usa-checkbox'): CustomElementConstructor | undefined {\n return defineElement(\n tag,\n (Base) => {\n class UsaCheckbox extends Base {\n static formAssociated = true;\n static get observedAttributes(): string[] {\n return ['checked', 'indeterminate', 'disabled', 'label'];\n }\n\n private _internals: ElementInternals | null = null;\n\n constructor() {\n super();\n try {\n this._internals = (this as any).attachInternals?.() ?? null;\n } catch {\n this._internals = null;\n }\n }\n\n get checked(): boolean {\n return this.flag('checked');\n }\n set checked(v: boolean) {\n this.setFlag('checked', v);\n }\n get indeterminate(): boolean {\n return this.flag('indeterminate');\n }\n set indeterminate(v: boolean) {\n this.setFlag('indeterminate', v);\n }\n\n mount(): void {\n if (!this.querySelector(':scope > .usa-checkbox-box')) {\n this.insertAdjacentHTML(\n 'afterbegin',\n '<span class=\"usa-checkbox-box\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\"><path class=\"usa-checkbox-check\" d=\"M5 12.5l4.2 4.2L19 7\" pathLength=\"1\"/><path class=\"usa-checkbox-dash\" d=\"M6 12h12\" pathLength=\"1\"/></svg></span>'\n );\n }\n this.setAttribute('role', 'checkbox');\n if (!this.hasAttribute('tabindex')) this.tabIndex = 0;\n this.sync();\n this.listen(this, 'click', () => this.toggle());\n this.listen(this, 'keydown', (e: KeyboardEvent) => {\n if (e.key === ' ' && !e.repeat) {\n e.preventDefault();\n this.toggle();\n }\n });\n }\n\n changed(): void {\n this.sync();\n }\n\n private sync(): void {\n this.setAttribute('aria-checked', this.indeterminate ? 'mixed' : String(this.checked));\n if (this.str('label')) this.setAttribute('aria-label', this.str('label'));\n this.toggleAttribute('aria-disabled', this.flag('disabled'));\n this._internals?.setFormValue?.(this.checked ? this.str('value', 'on') : null);\n }\n\n toggle(force?: boolean): void {\n if (this.flag('disabled')) return;\n const next = force === undefined ? !this.checked || this.indeterminate : force;\n this.indeterminate = false;\n this.checked = next;\n this.sync();\n const box = this.querySelector('.usa-checkbox-box');\n if (box && !this.reduced) this.motion(box, [{ transform: 'scale(0.75)' }, { transform: 'scale(1)' }], springEasing('bouncy'));\n this.dispatchEvent(new Event('change', { bubbles: true }));\n this.emit('change', { checked: next });\n }\n }\n return UsaCheckbox as unknown as CustomElementConstructor;\n },\n { id: 'checkbox', text: css }\n );\n}\n","/**\n * use-scroll-animate/components/click — click & tap effects (v2.5).\n * `<usa-click>` (ripple, burst, confetti, squish, press-spring, shake),\n * `<usa-button>` (button click deformation: squash, wobble, gooey, dent;\n * shape morph; submit → loading → success), `<usa-icon-morph>`,\n * `<usa-like>`, `<usa-hold>`, `<usa-double-tap>`, `<usa-checkbox>`, plus\n * `burst()`, `confetti()`, `shake()` and `haptic()`.\n */\nimport { defineClick, type UsaClickElement } from './click';\nimport { defineButton, type UsaButtonElement } from './button';\nimport { defineIconMorph, type UsaIconMorphElement } from './icon-morph';\nimport { defineLike, type UsaLikeElement } from './like';\nimport { defineHold, type UsaHoldElement } from './hold';\nimport { defineDoubleTap, type UsaDoubleTapElement } from './double-tap';\nimport { defineCheckbox, type UsaCheckboxElement } from './checkbox';\n\nexport { defineClick, defineButton, defineIconMorph, defineLike, defineHold, defineDoubleTap, defineCheckbox };\nexport { CLICK_EFFECTS } from './click';\nexport type { ClickEffect } from './click';\nexport { BUTTON_DEFORMS } from './button';\nexport type { ButtonDeform, ButtonShape, ButtonState } from './button';\nexport { MORPH_ICONS, morphPath } from './icon-morph';\nexport { burst, confetti, shake, haptic } from './fx';\nexport type { BurstOptions, ConfettiOptions } from './fx';\nexport type { UsaClickElement, UsaButtonElement, UsaIconMorphElement, UsaLikeElement, UsaHoldElement, UsaDoubleTapElement, UsaCheckboxElement };\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 defineClickComponents(): void {\n defineClick();\n defineButton();\n defineIconMorph();\n defineLike();\n defineHold();\n defineDoubleTap();\n defineCheckbox();\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'usa-click': UsaClickElement;\n 'usa-button': UsaButtonElement;\n 'usa-icon-morph': UsaIconMorphElement;\n 'usa-like': UsaLikeElement;\n 'usa-hold': UsaHoldElement;\n 'usa-double-tap': UsaDoubleTapElement;\n 'usa-checkbox': UsaCheckboxElement;\n }\n}\n"],"names":["css"],"mappings":"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AE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACxF,IAAA,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1H,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IACtH,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE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"}
|
package/dist/components.cjs
CHANGED
|
@@ -8,6 +8,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
10
|
var components_cards = require('./components/cards.cjs');
|
|
11
|
+
var components_click = require('./components/click.cjs');
|
|
11
12
|
var spring = require('./chunks/spring-CGO9Jd9b.cjs');
|
|
12
13
|
var base = require('./chunks/base-CJ7XfidP.cjs');
|
|
13
14
|
|
|
@@ -41,6 +42,7 @@ const COMPONENT_CATEGORIES = {
|
|
|
41
42
|
transitions: ['usa-dialog', 'usa-accordion', 'usa-flip-list', 'usa-view-switch'],
|
|
42
43
|
physics: ['usa-spring', 'usa-draggable', 'usa-overscroll'],
|
|
43
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'],
|
|
44
46
|
};
|
|
45
47
|
const BY_CATEGORY = {
|
|
46
48
|
reveal: components_reveal.defineRevealComponents,
|
|
@@ -51,6 +53,7 @@ const BY_CATEGORY = {
|
|
|
51
53
|
transitions: components_transitions.defineTransitionComponents,
|
|
52
54
|
physics: components_physics.definePhysicsComponents,
|
|
53
55
|
cards: components_cards.defineCardComponents,
|
|
56
|
+
click: components_click.defineClickComponents,
|
|
54
57
|
};
|
|
55
58
|
/**
|
|
56
59
|
* Register every `<usa-*>` component (or only the given categories).
|
|
@@ -118,6 +121,22 @@ exports.defineCardComponents = components_cards.defineCardComponents;
|
|
|
118
121
|
exports.defineCardStack = components_cards.defineCardStack;
|
|
119
122
|
exports.defineCarousel3d = components_cards.defineCarousel3d;
|
|
120
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;
|
|
121
140
|
exports.SPRING_PRESETS = spring.SPRING_PRESETS;
|
|
122
141
|
exports.createSpring = spring.createSpring;
|
|
123
142
|
exports.linearEasing = spring.linearEasing;
|
package/dist/components.cjs.map
CHANGED
|
@@ -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';\nimport { defineCardComponents } from './cards/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';\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} 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};\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"],"mappings":"
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/components.css
CHANGED
|
@@ -35,3 +35,10 @@ usa-card-stack{position:relative;display:grid;touch-action:pan-y;user-select:non
|
|
|
35
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
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
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}
|
package/dist/components.d.cts
CHANGED
|
@@ -1001,6 +1001,217 @@ declare global {
|
|
|
1001
1001
|
}
|
|
1002
1002
|
}
|
|
1003
1003
|
|
|
1004
|
+
declare const CLICK_EFFECTS: readonly ["ripple", "burst", "confetti", "squish", "press-spring", "shake"];
|
|
1005
|
+
type ClickEffect = (typeof CLICK_EFFECTS)[number];
|
|
1006
|
+
/**
|
|
1007
|
+
* `<usa-click>` — click / tap effects on whatever it wraps (combinable:
|
|
1008
|
+
* `effect="press-spring burst"`).
|
|
1009
|
+
*
|
|
1010
|
+
* - `ripple` — an ink wave from the pointer (enhanced: `color`, soft edge);
|
|
1011
|
+
* - `burst` — particles radiating from the pointer (`shape`: circle, square, star, heart, emoji);
|
|
1012
|
+
* - `confetti` — a confetti cannon from the click point;
|
|
1013
|
+
* - `squish` — squash on press, stretch on release (spring);
|
|
1014
|
+
* - `press-spring` — dips while pressed, springs back with overshoot;
|
|
1015
|
+
* - `shake` — horizontal error shake; plays on `invalid` events from a form
|
|
1016
|
+
* inside, on `shake()`, or on click when `trigger="click"`.
|
|
1017
|
+
*
|
|
1018
|
+
* Attributes: `effect`, `color`, `shape`, `count`, `haptic` (vibrate ms,
|
|
1019
|
+
* where supported), `disabled`. Keyboard (Space/Enter) triggers the effects
|
|
1020
|
+
* from the centre. Reduced motion: no particles or movement; press dims.
|
|
1021
|
+
*/
|
|
1022
|
+
interface UsaClickElement extends UsaElement {
|
|
1023
|
+
readonly effects: string[];
|
|
1024
|
+
play(x?: number, y?: number): void;
|
|
1025
|
+
shake(): void;
|
|
1026
|
+
}
|
|
1027
|
+
declare function defineClick(tag?: string): CustomElementConstructor | undefined;
|
|
1028
|
+
|
|
1029
|
+
declare const BUTTON_DEFORMS: readonly ["squash", "wobble", "gooey", "dent"];
|
|
1030
|
+
type ButtonDeform = (typeof BUTTON_DEFORMS)[number];
|
|
1031
|
+
type ButtonShape = 'pill' | 'circle' | 'icon';
|
|
1032
|
+
type ButtonState = 'idle' | 'loading' | 'success' | 'error';
|
|
1033
|
+
/**
|
|
1034
|
+
* `<usa-button>` — **button click deformation** (按钮点击形变) around a
|
|
1035
|
+
* native `<button>` (or `<a>`) child — or the element itself becomes a button.
|
|
1036
|
+
*
|
|
1037
|
+
* `deform` (combinable, e.g. `deform="squash wobble"`):
|
|
1038
|
+
* - `squash` — squash on press, stretch-and-settle on release (spring);
|
|
1039
|
+
* - `wobble` — elastic border-radius wobble after a click;
|
|
1040
|
+
* - `gooey` — liquid blob: droplets squeeze out from the press point and
|
|
1041
|
+
* merge back (SVG goo filter);
|
|
1042
|
+
* - `dent` — the surface dents toward the pressed point (3D tilt + inner shade).
|
|
1043
|
+
*
|
|
1044
|
+
* `shape="pill | circle | icon"` morphs the outline with a spring (label =
|
|
1045
|
+
* `[data-label]`, icon = `[data-icon]` children); `morphTo(shape)`.
|
|
1046
|
+
*
|
|
1047
|
+
* `morph="submit"` — click → `loading` (shrinks to a circle with a spinner,
|
|
1048
|
+
* `aria-busy`), then `success` (check) or `error` (shake + cross), and back
|
|
1049
|
+
* to `idle` after `reset` ms (1800). Drive it with `state="…"` / `.state`, or
|
|
1050
|
+
* call `event.detail.done(ok)` from a `usa:submit` listener.
|
|
1051
|
+
*
|
|
1052
|
+
* Attributes: `deform`, `shape`, `morph`, `state`, `reset`, `haptic`,
|
|
1053
|
+
* `disabled`. Events: `usa:submit`, `usa:state`. Reduced motion: no
|
|
1054
|
+
* deformation; shape and state changes are instant; status still announced.
|
|
1055
|
+
*/
|
|
1056
|
+
interface UsaButtonElement extends UsaElement {
|
|
1057
|
+
readonly target: HTMLElement;
|
|
1058
|
+
shape: ButtonShape;
|
|
1059
|
+
state: ButtonState;
|
|
1060
|
+
morphTo(shape: ButtonShape): Promise<void>;
|
|
1061
|
+
}
|
|
1062
|
+
declare function defineButton(tag?: string): CustomElementConstructor | undefined;
|
|
1063
|
+
|
|
1064
|
+
type Pt = [number, number];
|
|
1065
|
+
type Quad = [Pt, Pt, Pt, Pt];
|
|
1066
|
+
/**
|
|
1067
|
+
* Morphable icons: every icon is three quads (four points each) on a 24×24
|
|
1068
|
+
* grid, so any icon can morph into any other by interpolating points.
|
|
1069
|
+
*/
|
|
1070
|
+
declare const MORPH_ICONS: Record<string, [Quad, Quad, Quad]>;
|
|
1071
|
+
/** SVG path data for an icon, or for the interpolation `t` (0–1) between two. */
|
|
1072
|
+
declare function morphPath(from: string, to?: string, t?: number): string;
|
|
1073
|
+
/**
|
|
1074
|
+
* `<usa-icon-morph>` — an icon that morphs between shapes with a spring:
|
|
1075
|
+
* play ↔ pause, menu ↔ close, plus ↔ minus, check, arrow-right…
|
|
1076
|
+
*
|
|
1077
|
+
* Attributes: `icons` (comma list, cycled; default `play,pause`), `index`
|
|
1078
|
+
* (current, 0), `size` (px, 24), `toggle` (makes it a button that cycles
|
|
1079
|
+
* on click / Enter / Space), `labels` (comma list of accessible names per
|
|
1080
|
+
* icon, e.g. `Play,Pause`), `preset` (spring, `wobbly`). Methods:
|
|
1081
|
+
* `next()`, `show(nameOrIndex)`. Events: `usa:change` (`{ index, icon }`).
|
|
1082
|
+
* Inside a `<usa-button>` or `<button>` it is decorative. Reduced motion:
|
|
1083
|
+
* the icon switches instantly.
|
|
1084
|
+
*/
|
|
1085
|
+
interface UsaIconMorphElement extends UsaElement {
|
|
1086
|
+
index: number;
|
|
1087
|
+
readonly icon: string;
|
|
1088
|
+
next(): void;
|
|
1089
|
+
show(icon: string | number): void;
|
|
1090
|
+
}
|
|
1091
|
+
declare function defineIconMorph(tag?: string): CustomElementConstructor | undefined;
|
|
1092
|
+
|
|
1093
|
+
/**
|
|
1094
|
+
* `<usa-like>` — a like / favourite toggle: the heart pops with a spring and
|
|
1095
|
+
* bursts into particles when liked. `role="button"` + `aria-pressed`.
|
|
1096
|
+
*
|
|
1097
|
+
* Attributes: `liked`, `count` (shown next to the heart, updated ±1),
|
|
1098
|
+
* `label` (accessible name, default "Like"), `color`, `size` (px, 24),
|
|
1099
|
+
* `haptic`, `disabled`. Events: `change`, `usa:change` (`{ liked, count }`).
|
|
1100
|
+
* Reduced motion: colour change only.
|
|
1101
|
+
*/
|
|
1102
|
+
interface UsaLikeElement extends UsaElement {
|
|
1103
|
+
liked: boolean;
|
|
1104
|
+
count: number | null;
|
|
1105
|
+
toggle(force?: boolean): void;
|
|
1106
|
+
}
|
|
1107
|
+
declare function defineLike(tag?: string): CustomElementConstructor | undefined;
|
|
1108
|
+
|
|
1109
|
+
/**
|
|
1110
|
+
* `<usa-hold>` — hold-to-confirm: press and hold (pointer, Space or Enter)
|
|
1111
|
+
* while a progress ring fills; releasing early rewinds it. Good for
|
|
1112
|
+
* destructive actions.
|
|
1113
|
+
*
|
|
1114
|
+
* Attributes: `duration` (ms, 1200), `label` (accessible name), `color`,
|
|
1115
|
+
* `disabled`. CSS variable `--usa-hold` (0–1). Events: `usa:progress`,
|
|
1116
|
+
* `usa:confirm`, `usa:cancel`. Reduced motion: same timing, the ring fills
|
|
1117
|
+
* without the scale pulse.
|
|
1118
|
+
*/
|
|
1119
|
+
interface UsaHoldElement extends UsaElement {
|
|
1120
|
+
readonly progress: number;
|
|
1121
|
+
cancel(): void;
|
|
1122
|
+
}
|
|
1123
|
+
declare function defineHold(tag?: string): CustomElementConstructor | undefined;
|
|
1124
|
+
|
|
1125
|
+
/**
|
|
1126
|
+
* `<usa-double-tap>` — detects a double tap / double click on its content
|
|
1127
|
+
* (photos, posts) and pops a heart (or `icon`) at the tap point.
|
|
1128
|
+
*
|
|
1129
|
+
* Attributes: `icon` (text / emoji, default ♥), `color`, `delay` (max ms
|
|
1130
|
+
* between taps, 300), `haptic`, `disabled`. Events: `usa:double-tap`
|
|
1131
|
+
* (`{ x, y }`, element-relative). Keyboard users: press `L` while focused.
|
|
1132
|
+
* Reduced motion: the icon fades in and out without scaling or particles.
|
|
1133
|
+
*/
|
|
1134
|
+
interface UsaDoubleTapElement extends UsaElement {
|
|
1135
|
+
pop(x?: number, y?: number): void;
|
|
1136
|
+
}
|
|
1137
|
+
declare function defineDoubleTap(tag?: string): CustomElementConstructor | undefined;
|
|
1138
|
+
|
|
1139
|
+
/**
|
|
1140
|
+
* `<usa-checkbox>` — an animated, form-associated checkbox: the box springs
|
|
1141
|
+
* and the check mark draws itself. `role="checkbox"` + `aria-checked`
|
|
1142
|
+
* (`mixed` with `indeterminate`).
|
|
1143
|
+
*
|
|
1144
|
+
* Attributes: `checked`, `indeterminate`, `disabled`, `name`, `value`
|
|
1145
|
+
* (`on`), `label`, `shape` (`square` default, `circle`). Events: `change`,
|
|
1146
|
+
* `usa:change` (`{ checked }`). Reduced motion: no spring or drawing.
|
|
1147
|
+
*/
|
|
1148
|
+
interface UsaCheckboxElement extends UsaElement {
|
|
1149
|
+
checked: boolean;
|
|
1150
|
+
indeterminate: boolean;
|
|
1151
|
+
toggle(force?: boolean): void;
|
|
1152
|
+
}
|
|
1153
|
+
declare function defineCheckbox(tag?: string): CustomElementConstructor | undefined;
|
|
1154
|
+
|
|
1155
|
+
interface BurstOptions {
|
|
1156
|
+
/** Number of particles (default 12). */
|
|
1157
|
+
count?: number;
|
|
1158
|
+
/** Colours to pick from (default: accent palette). */
|
|
1159
|
+
colors?: string[];
|
|
1160
|
+
/** Travel distance in px (default 48). */
|
|
1161
|
+
distance?: number;
|
|
1162
|
+
/** Particle size in px (default 6). */
|
|
1163
|
+
size?: number;
|
|
1164
|
+
/** `circle` (default), `square`, `star`, `heart` or any text / emoji. */
|
|
1165
|
+
shape?: 'circle' | 'square' | 'star' | 'heart' | string;
|
|
1166
|
+
/** Duration in ms (default 600). */
|
|
1167
|
+
duration?: number;
|
|
1168
|
+
}
|
|
1169
|
+
/** Particles radiating from client point (x, y). Returns the number spawned. */
|
|
1170
|
+
declare function burst(x: number, y: number, options?: BurstOptions): number;
|
|
1171
|
+
interface ConfettiOptions {
|
|
1172
|
+
/** Origin in client px (default: centre-bottom third of the viewport). */
|
|
1173
|
+
x?: number;
|
|
1174
|
+
y?: number;
|
|
1175
|
+
/** Pieces (default 80). */
|
|
1176
|
+
count?: number;
|
|
1177
|
+
/** Spread angle in degrees (default 70). */
|
|
1178
|
+
spread?: number;
|
|
1179
|
+
/** Launch speed multiplier (default 1). */
|
|
1180
|
+
velocity?: number;
|
|
1181
|
+
colors?: string[];
|
|
1182
|
+
/** Duration in ms (default 1600). */
|
|
1183
|
+
duration?: number;
|
|
1184
|
+
}
|
|
1185
|
+
/** A confetti cannon (paper pieces with gravity, drift and spin). */
|
|
1186
|
+
declare function confetti(options?: ConfettiOptions): number;
|
|
1187
|
+
/** Horizontal error shake (`intensity` px, default 8). Reduced motion: a red outline flash. */
|
|
1188
|
+
declare function shake(el: Element, intensity?: number, duration?: number): Animation | null;
|
|
1189
|
+
/** `navigator.vibrate()` where supported (Android Chrome, some WebViews). Returns whether it ran. */
|
|
1190
|
+
declare function haptic(pattern?: number | number[]): boolean;
|
|
1191
|
+
|
|
1192
|
+
/**
|
|
1193
|
+
* use-scroll-animate/components/click — click & tap effects (v2.5).
|
|
1194
|
+
* `<usa-click>` (ripple, burst, confetti, squish, press-spring, shake),
|
|
1195
|
+
* `<usa-button>` (button click deformation: squash, wobble, gooey, dent;
|
|
1196
|
+
* shape morph; submit → loading → success), `<usa-icon-morph>`,
|
|
1197
|
+
* `<usa-like>`, `<usa-hold>`, `<usa-double-tap>`, `<usa-checkbox>`, plus
|
|
1198
|
+
* `burst()`, `confetti()`, `shake()` and `haptic()`.
|
|
1199
|
+
*/
|
|
1200
|
+
|
|
1201
|
+
/** Register every component of this category under its default tag. */
|
|
1202
|
+
declare function defineClickComponents(): void;
|
|
1203
|
+
declare global {
|
|
1204
|
+
interface HTMLElementTagNameMap {
|
|
1205
|
+
'usa-click': UsaClickElement;
|
|
1206
|
+
'usa-button': UsaButtonElement;
|
|
1207
|
+
'usa-icon-morph': UsaIconMorphElement;
|
|
1208
|
+
'usa-like': UsaLikeElement;
|
|
1209
|
+
'usa-hold': UsaHoldElement;
|
|
1210
|
+
'usa-double-tap': UsaDoubleTapElement;
|
|
1211
|
+
'usa-checkbox': UsaCheckboxElement;
|
|
1212
|
+
}
|
|
1213
|
+
}
|
|
1214
|
+
|
|
1004
1215
|
/** The component categories and their default tags. */
|
|
1005
1216
|
declare const COMPONENT_CATEGORIES: {
|
|
1006
1217
|
readonly reveal: readonly ["usa-reveal", "usa-stagger", "usa-scroll-progress", "usa-scrolly"];
|
|
@@ -1011,6 +1222,7 @@ declare const COMPONENT_CATEGORIES: {
|
|
|
1011
1222
|
readonly transitions: readonly ["usa-dialog", "usa-accordion", "usa-flip-list", "usa-view-switch"];
|
|
1012
1223
|
readonly physics: readonly ["usa-spring", "usa-draggable", "usa-overscroll"];
|
|
1013
1224
|
readonly cards: readonly ["usa-card", "usa-card-stack", "usa-sticky-stack", "usa-carousel-3d"];
|
|
1225
|
+
readonly click: readonly ["usa-click", "usa-button", "usa-icon-morph", "usa-like", "usa-hold", "usa-double-tap", "usa-checkbox"];
|
|
1014
1226
|
};
|
|
1015
1227
|
type ComponentCategory = keyof typeof COMPONENT_CATEGORIES;
|
|
1016
1228
|
/**
|
|
@@ -1019,5 +1231,5 @@ type ComponentCategory = keyof typeof COMPONENT_CATEGORIES;
|
|
|
1019
1231
|
*/
|
|
1020
1232
|
declare function defineComponents(categories?: ComponentCategory[]): void;
|
|
1021
1233
|
|
|
1022
|
-
export { CARD_EFFECTS, COMPONENT_CATEGORIES, REVEAL_EFFECTS, SPINNER_VARIANTS, SPRING_EFFECTS, SPRING_PRESETS, configureComponents, connectedAnimation, createSpring, defineAccordion, defineAcrylic, defineAurora, defineBackgroundComponents, defineCard, defineCardComponents, defineCardStack, defineCarousel3d, defineCheck, defineComponents, defineCounter, defineDialog, defineDraggable, defineFeedbackComponents, defineFlipList, defineGrain, defineInteractionComponents, defineMagnetic, defineMarquee, defineOverscroll, defineParticles, definePhysicsComponents, definePress, defineProgress, defineReveal, defineRevealComponents, defineRipple, defineScramble, defineScrollProgress, defineScrolly, defineShimmerText, defineSkeleton, defineSpinner, defineSplitText, defineSpotlight, defineSpring, defineStagger, defineStickyStack, defineTextComponents, defineTextRotate, defineTilt, defineToaster, defineToggle, defineTransitionComponents, defineTypewriter, defineViewSwitch, easeOutExpo, flip, linearEasing, prefersReducedMotion, projectInertia, readScrollProgress, resolveSpring, revealKeyframes, rubberBand, scrambleFrame, snapTo, spring, springEasing, springEffectKeyframes, springSamples, stepSpring, supportsLinearEasing, toast, viewTransition };
|
|
1023
|
-
export type { CardEffect, ComponentCategory, ComponentsConfig, ConnectedOptions, DialogVariant, FlipOptions, RevealEffect, SpinnerVariant, SpringConfig, SpringEffect, SpringInput, SpringPreset, SpringValue, SpringValueOptions, ToastHandle, ToastOptions, ToastType, UsaAccordionElement, UsaAcrylicElement, UsaAuroraElement, UsaCardElement, UsaCardStackElement, UsaCarousel3dElement, UsaCheckElement, UsaCounterElement, UsaDialogElement, UsaDraggableElement, UsaElement, UsaFlipListElement, UsaGrainElement, UsaMagneticElement, UsaMarqueeElement, UsaOverscrollElement, UsaParticlesElement, UsaPressElement, UsaProgressElement, UsaRevealElement, UsaRippleElement, UsaScrambleElement, UsaScrollProgressElement, UsaScrollyElement, UsaShimmerTextElement, UsaSkeletonElement, UsaSpinnerElement, UsaSplitTextElement, UsaSpotlightElement, UsaSpringElement, UsaStaggerElement, UsaStickyStackElement, UsaTextRotateElement, UsaTiltElement, UsaToasterElement, UsaToggleElement, UsaTypewriterElement, UsaViewSwitchElement, ViewTransitionOptions };
|
|
1234
|
+
export { BUTTON_DEFORMS, CARD_EFFECTS, CLICK_EFFECTS, COMPONENT_CATEGORIES, MORPH_ICONS, REVEAL_EFFECTS, SPINNER_VARIANTS, SPRING_EFFECTS, SPRING_PRESETS, burst, confetti, configureComponents, connectedAnimation, createSpring, defineAccordion, defineAcrylic, defineAurora, defineBackgroundComponents, defineButton, defineCard, defineCardComponents, defineCardStack, defineCarousel3d, defineCheck, defineCheckbox, defineClick, defineClickComponents, defineComponents, defineCounter, defineDialog, defineDoubleTap, defineDraggable, defineFeedbackComponents, defineFlipList, defineGrain, defineHold, defineIconMorph, defineInteractionComponents, defineLike, defineMagnetic, defineMarquee, defineOverscroll, defineParticles, definePhysicsComponents, definePress, defineProgress, defineReveal, defineRevealComponents, defineRipple, defineScramble, defineScrollProgress, defineScrolly, defineShimmerText, defineSkeleton, defineSpinner, defineSplitText, defineSpotlight, defineSpring, defineStagger, defineStickyStack, defineTextComponents, defineTextRotate, defineTilt, defineToaster, defineToggle, defineTransitionComponents, defineTypewriter, defineViewSwitch, easeOutExpo, flip, haptic, linearEasing, morphPath, prefersReducedMotion, projectInertia, readScrollProgress, resolveSpring, revealKeyframes, rubberBand, scrambleFrame, shake, snapTo, spring, springEasing, springEffectKeyframes, springSamples, stepSpring, supportsLinearEasing, toast, viewTransition };
|
|
1235
|
+
export type { BurstOptions, ButtonDeform, ButtonShape, ButtonState, CardEffect, ClickEffect, ComponentCategory, ComponentsConfig, ConfettiOptions, ConnectedOptions, DialogVariant, FlipOptions, RevealEffect, SpinnerVariant, SpringConfig, SpringEffect, SpringInput, SpringPreset, SpringValue, SpringValueOptions, ToastHandle, ToastOptions, ToastType, UsaAccordionElement, UsaAcrylicElement, UsaAuroraElement, UsaButtonElement, UsaCardElement, UsaCardStackElement, UsaCarousel3dElement, UsaCheckElement, UsaCheckboxElement, UsaClickElement, UsaCounterElement, UsaDialogElement, UsaDoubleTapElement, UsaDraggableElement, UsaElement, UsaFlipListElement, UsaGrainElement, UsaHoldElement, UsaIconMorphElement, UsaLikeElement, UsaMagneticElement, UsaMarqueeElement, UsaOverscrollElement, UsaParticlesElement, UsaPressElement, UsaProgressElement, UsaRevealElement, UsaRippleElement, UsaScrambleElement, UsaScrollProgressElement, UsaScrollyElement, UsaShimmerTextElement, UsaSkeletonElement, UsaSpinnerElement, UsaSplitTextElement, UsaSpotlightElement, UsaSpringElement, UsaStaggerElement, UsaStickyStackElement, UsaTextRotateElement, UsaTiltElement, UsaToasterElement, UsaToggleElement, UsaTypewriterElement, UsaViewSwitchElement, ViewTransitionOptions };
|