feat(flow): input feather, center puppet, smiley nav, arc buttons

- Input bar: show bouncing feather icon while typing (circle static); send
  after pause or on submit; debounced isTyping state
- Move puppet to center empty state (replacing feather); hide when there
  are messages
- Add smiley button next to mic; same as Talk (web: location, native: modal)
- Puppet actions: place four buttons in arc above puppet with icons; increase
  spacing between buttons and puppet
This commit is contained in:
Ada
2026-02-07 01:06:44 -08:00
parent 1e6c06bfef
commit 6ac492983a
8 changed files with 546 additions and 71 deletions

View File

@@ -51,7 +51,7 @@ export function PuppetView({ action, isTalking }: PuppetViewProps) {
const loop = Animated.loop(
Animated.sequence([
Animated.timing(smileScale, {
toValue: 1.12,
toValue: 1.18,
duration: 400,
useNativeDriver: true,
easing: Easing.out(Easing.ease),
@@ -314,26 +314,26 @@ const styles = StyleSheet.create({
backgroundColor: '#0c4a6e',
},
mouthSmile: {
width: 22,
height: 6,
borderBottomLeftRadius: 11,
borderBottomRightRadius: 11,
width: 28,
height: 10,
borderBottomLeftRadius: 14,
borderBottomRightRadius: 14,
borderTopLeftRadius: 0,
borderTopRightRadius: 0,
},
mouthOpen: {
width: 18,
height: 6,
height: 8,
top: BODY_SIZE * 0.51,
borderRadius: 3,
backgroundColor: 'rgba(12, 74, 110, 0.9)',
},
mouthBigSmile: {
width: 32,
height: 10,
top: BODY_SIZE * 0.51,
borderBottomLeftRadius: 16,
borderBottomRightRadius: 16,
width: 42,
height: 24,
top: BODY_SIZE * 0.50,
borderBottomLeftRadius: 21,
borderBottomRightRadius: 21,
borderTopLeftRadius: 0,
borderTopRightRadius: 0,
},