Список из крупных заголовков. По нажатию на пункт остальные приглушаются, рядом появляется квадрат с жидким шейдером Skia в палитре этого пункта и иконкой, а под выбранным пунктом раскрывается описание. При переходе между пунктами цвета жидкости плавно перетекают в новую палитру.
Шейдер считается целиком на GPU, время идёт на UI-потоке Reanimated, поэтому React не перерисовывается на каждом кадре. Анимация замирает, когда приложение свёрнуто, а при «Уменьшении движения» жидкость стоит на месте и переходы происходят сразу. Работает на iOS, Android и в вебе.
Поставьте зависимости:
npm install @shopify/react-native-skia react-native-reanimated react-native-workletspnpm add @shopify/react-native-skia react-native-reanimated react-native-workletsyarn add @shopify/react-native-skia react-native-reanimated react-native-workletsbun add @shopify/react-native-skia react-native-reanimated react-native-workletsСкопируйте эти файлы в src/shared/components/organisms/shader-index/:
Код доступен по подпискеPro
Исходник «Шейдерный индекс» открывается с подпиской Pro. Уже оформили? Войдите в аккаунт.
Проверьте алиас путей. Импорты в коде выше записаны так, как их пишет astra-rn add: @/shared/components, @/shared/utils и @/shared/hooks. Нужен алиас "@/*": ["./src/*"] в tsconfig.json — или поправьте импорты под свои пути.
Код доступен по подпискеPro
Исходник «Шейдерный индекс» открывается с подпиской Pro. Уже оформили? Войдите в аккаунт.
itemsТип readonly ShaderIndexItem[]
blockSize?Тип number
titleSize?Тип number
speed?Тип number
crease?Тип number
style?Тип StyleProp<ViewStyle>