+ {Array.from(text).map((ch, i) => {
+ const start = 0.22 + i * stagger
+ const t = easeOutCubic(range(progress, start, start + 0.5))
+ const baseStyle = {
+ display: 'flex',
+ fontSize,
+ fontWeight: 700,
+ letterSpacing: -fontSize * 0.04,
+ opacity: t,
+ transform: `translateY(${(1 - t) * 70}px)`,
+ padding: '0 2px',
+ lineHeight: 1.1,
+ } as const
+ if (ch === ' ') {
+ return (
+
+ )
+ }
+ return (
+
+ {ch}
+
+ )
+ })}
+