Центральный хаб и плитки интеграций по кругу. От каждой плитки к хабу идёт дуга, по которой бегут световые импульсы, а хаб подсвечивается в момент, когда импульс до него доходит.
Плитки — это ваши ReactNode (иконки, картинки, текст), хаб задаётся отдельно. Направление импульсов: к хабу, от хаба или попеременно (direction). Количество плиток любое, они равномерно раскладываются по окружности, начиная с угла rotation.
Работает на iOS, Android и в вебе; анимация идёт на UI-потоке и ставится на паузу в фоне и вне экрана.
Поставьте зависимости:
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/hub-beams/:
Код доступен по подпискеPro
Исходник «Хаб интеграций» открывается с подпиской Pro. Уже оформили? Войдите в аккаунт.
Проверьте алиас путей. Импорты в коде выше записаны так, как их пишет astra-rn add: @/shared/components, @/shared/utils и @/shared/hooks. Нужен алиас "@/*": ["./src/*"] в tsconfig.json — или поправьте импорты под свои пути.
Код доступен по подпискеPro
Исходник «Хаб интеграций» открывается с подпиской Pro. Уже оформили? Войдите в аккаунт.
size?Тип number
itemsТип readonly ReactNode[]
hub?Тип ReactNode
direction?Тип HubBeamsDirection
radiusRatio?Тип number
itemSize?Тип number
hubSize?Тип number
lineColor?Тип string
beamColor?Тип string
tileColor?Тип string
tileBorderColor?Тип string
lineWidth?Тип number
beamLength?Тип number
curvature?Тип number
speed?Тип number
rotation?Тип number
paused?Тип boolean
style?Тип StyleProp<ViewStyle>