Буквы заголовка служат маской для шейдера Skia: внутри них медленно течёт шёлковая жидкость с мягкими складками. Узор тянется за пальцем или курсором, а по касанию весь текст плавно перетекает в следующую палитру из списка.
Каждая палитра — три цвета: тень, основной тон и блик. Шейдер считается на GPU, время идёт на UI-потоке Reanimated; при «Уменьшении движения» узор замирает. Шрифт по умолчанию — Inter Bold, свой можно передать через fontSource. Работает на iOS, Android и в вебе.
Поставьте зависимости:
npm install @shopify/react-native-skia react-native-gesture-handler react-native-reanimated react-native-worklets expo-asset @expo-google-fonts/interpnpm add @shopify/react-native-skia react-native-gesture-handler react-native-reanimated react-native-worklets expo-asset @expo-google-fonts/interyarn add @shopify/react-native-skia react-native-gesture-handler react-native-reanimated react-native-worklets expo-asset @expo-google-fonts/interbun add @shopify/react-native-skia react-native-gesture-handler react-native-reanimated react-native-worklets expo-asset @expo-google-fonts/interСкопируйте эти файлы в src/shared/components/organisms/liquid-headline/:
Код доступен по подпискеPro
Исходник «Жидкий заголовок» открывается с подпиской Pro. Уже оформили? Войдите в аккаунт.
Проверьте алиас путей. Импорты в коде выше записаны так, как их пишет astra-rn add: @/shared/components, @/shared/utils и @/shared/hooks. Нужен алиас "@/*": ["./src/*"] в tsconfig.json — или поправьте импорты под свои пути.
Код доступен по подпискеPro
Исходник «Жидкий заголовок» открывается с подпиской Pro. Уже оформили? Войдите в аккаунт.
linesТип readonly string[]
palettes?Тип readonly LiquidPalette[]
seed?Тип number
speed?Тип number
crease?Тип number
zoom?Тип number
interactive?Тип boolean
fontSize?Тип number
fontSource?Тип DataModule
style?Тип StyleProp<ViewStyle>
onChange?Тип (index: number) => void