Liquid Glass for the web: the rim refraction, light and motion of iOS 27 glass on any rounded element. React bindings and pill tabs. MIT.
| 6 | export type SpringConfig = { omega: number; zeta: number }; |
| 7 | export type Spring = { value: number; velocity: number }; |
| 8 |
| 9 | /** The substep, in seconds. */ |
| 10 | export const STEP = 1 / 240; |
| 11 |
| 12 | export function spring(value = 0): Spring { |
| 13 | return { value, velocity: 0 }; |
| 14 | } |
| 15 |
| 16 | export function stepSpring(spring: Spring, target: number, { omega, zeta }: SpringConfig, dt: number) { |
| 17 | spring.velocity += (omega * omega * (target - spring.value) - 2 * zeta * omega * spring.velocity) * dt; |
| 18 | spring.value += spring.velocity * dt; |
| 19 | } |
| 20 |