Spring Presets
Pre-configured spring settings for different animation feels
Spring Presets
SSGOI provides pre-configured spring settings to easily create different animation feels without manually tuning physics values.
Usage
You can import spring presets from the presets module:
import { config } from '@ssgoi/react/presets';
// or
import { config } from '@ssgoi/svelte/presets';
// Use in transitions
transition({
  spring: config.gentle,
  tick: (progress) => {
    // Your animation logic
  }
})
You can also import individual presets:
import { gentle, wobbly, stiff } from '@ssgoi/react/presets';
transition({
  spring: gentle,
  // ...
})
Available Presets
default
A balanced animation suitable for most use cases.
- stiffness: 170
- damping: 26
- Use case: General purpose transitions
gentle
Smooth and calm transitions with subtle movement.
- stiffness: 120
- damping: 14
- Use case: Elegant, professional interfaces
wobbly
Bouncy and playful animations with noticeable spring effect.
- stiffness: 180
- damping: 12
- Use case: Fun, interactive elements
stiff
Quick and responsive animations with minimal overshoot.
- stiffness: 210
- damping: 20
- Use case: Snappy UI responses, tooltips
slow
Deliberate and measured animations.
- stiffness: 280
- damping: 60
- Use case: Important state changes, reveals
molasses
Very slow and viscous movement.
- stiffness: 280
- damping: 120
- Use case: Dramatic effects, loading states
Custom Spring Configuration
You can always create your own spring configuration:
transition({
  spring: {
    stiffness: 150,
    damping: 15
  },
  // ...
})
Physics Values Explained
- stiffness: Controls the spring's tension. Higher values create faster animations.
- damping: Controls the resistance. Higher values reduce oscillation and create smoother stops.
Examples
Using presets in view transitions
import { Ssgoi } from '@ssgoi/react';
import { config } from '@ssgoi/react/presets';
import { fade } from '@ssgoi/react/view-transitions';
const config = {
  defaultTransition: fade({ spring: config.gentle }),
  transitions: [
    {
      from: '/home',
      to: '/about',
      transition: slide({ spring: config.wobbly })
    }
  ]
};
Using presets in element transitions
import { transition } from '@ssgoi/react';
import { config } from '@ssgoi/react/presets';
const fadeIn = transition({
  spring: config.slow,
  tick: (progress) => ({
    opacity: progress,
    transform: `translateY(${(1 - progress) * 20}px)`
  })
});
