Transitions & Animation
Typewriting Class provides utilities for CSS transitions and animations, making it easy to add smooth interactive effects.
Transition presets
Use preset transition utilities for common property groups:
import { cx, transition, transitionAll, transitionColors, transitionOpacity, transitionShadow, transitionTransform, transitionNone } from 'typewritingclass'
cx(transition()) // transition-property: color, background-color, border-color, ...cx(transitionAll()) // transition-property: allcx(transitionColors()) // transition-property: color, background-color, border-color, ...cx(transitionOpacity()) // transition-property: opacitycx(transitionShadow()) // transition-property: box-shadowcx(transitionTransform()) // transition-property: transformcx(transitionNone()) // transition-property: noneAll presets include default duration (150ms) and timing-function (cubic-bezier).
Duration
import { cx, transitionColors, duration } from 'typewritingclass'
cx(transitionColors(), duration(75)) // 75mscx(transitionColors(), duration(150)) // 150mscx(transitionColors(), duration(300)) // 300mscx(transitionColors(), duration(500)) // 500mscx(transitionColors(), duration(1000)) // 1000mscx(transitionColors(), duration('2s')) // 2s (string pass-through)Numeric values automatically get ms appended.
Timing function
import { cx, transition, ease } from 'typewritingclass'
cx(transition(), ease('linear')) // linearcx(transition(), ease('ease-in')) // ease-incx(transition(), ease('ease-out')) // ease-outcx(transition(), ease('ease-in-out')) // ease-in-outcx(transition(), ease('cubic-bezier(0.4, 0, 0.2, 1)')) // custom bezierDelay
import { cx, transitionAll, delay } from 'typewritingclass'
cx(transitionAll(), delay(75)) // transition-delay: 75mscx(transitionAll(), delay(150)) // transition-delay: 150mscx(transitionAll(), delay(300)) // transition-delay: 300msAnimation
import { cx, animate } from 'typewritingclass'
cx(animate('spin 1s linear infinite')) // animation: spin 1s linear infinitecx(animate('ping 1s cubic-bezier(0, 0, 0.2, 1) infinite'))cx(animate('bounce 1s infinite'))cx(animate('none')) // animation: nonePre-built animation keyframes are available from the theme:
import { spin, ping, pulse, bounce, keyframes } from 'typewritingclass/theme/animations'
cx(animate(spin)) // spin animationcx(animate(pulse)) // pulse animationcx(animate(bounce)) // bounce animationHover transition example
import { cx, bg, textColor, transitionColors, duration, rounded, px, py, when, hover } from 'typewritingclass'import { indigo, white } from 'typewritingclass/theme/colors'
const button = cx( px(5), py(2.5), rounded('0.5rem'), bg(indigo[500]), textColor(white), transitionColors(), duration(200), when(hover)(bg(indigo[600])),)