Сфера с круглыми глазами сидит в углу экрана: глаза следят за пальцем (в вебе — за курсором) и иногда моргают, а через заданную задержку рядом всплывает подсказка. При нажатии на сферу или на подсказку она плавно перетекает в панель AI-чата, где та же сфера становится аватаром в шапке.
Панель закрывается кнопкой в шапке, а в вебе ещё и клавишей Escape. Морфинг считается на UI-потоке Reanimated; при «Уменьшении движения» сфера раскрывается в панель мгновенно, без пружины. Работает на iOS, Android и в вебе.
Поставьте зависимости:
npm install react-native-gesture-handler react-native-reanimated react-native-svg react-native-workletspnpm add react-native-gesture-handler react-native-reanimated react-native-svg react-native-workletsyarn add react-native-gesture-handler react-native-reanimated react-native-svg react-native-workletsbun add react-native-gesture-handler react-native-reanimated react-native-svg react-native-workletsСкопируйте эти файлы в src/shared/components/organisms/chat-orb/:
Код доступен по подпискеPro
Исходник «Чат-сфера» открывается с подпиской Pro. Уже оформили? Войдите в аккаунт.
Он импортирует ещё несколько модулей — astra-rn add кладёт их рядом сам, вручную скопируйте и их:
Сфера открывает компонент «AI-чат» — добавьте и его в src/shared/components/organisms/ai-chat/.
Проверьте алиас путей. Импорты в коде выше записаны так, как их пишет astra-rn add: @/shared/components, @/shared/utils и @/shared/hooks. Нужен алиас "@/*": ["./src/*"] в tsconfig.json — или поправьте импорты под свои пути.
Код доступен по подпискеPro
Исходник «Чат-сфера» открывается с подпиской Pro. Уже оформили? Войдите в аккаунт.
Позиция inline встраивает сферу в родительский блок вместо угла экрана, а пропсы самого чата передаются через chat.
position?Тип TChatOrbPosition
teaser?Тип string
teaserDelay?Тип number
defaultOpen?Тип boolean
color?Тип string
eyeColor?Тип string
size?Тип number
chat?Тип IAIChat
style?Тип StyleProp<ViewStyle>