managarten/maerchenzauber/apps/mobile/components/atoms/Skeleton.tsx
Till-JS e7f5f942f3 chore: initial commit - consolidate 4 projects into monorepo
Projects included:
- maerchenzauber (NestJS backend + Expo mobile + SvelteKit web + Astro landing)
- manacore (Expo mobile + SvelteKit web + Astro landing)
- manadeck (NestJS backend + Expo mobile + SvelteKit web)
- memoro (Expo mobile + SvelteKit web + Astro landing)

This commit preserves the current state before monorepo restructuring.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-22 23:38:24 +01:00

54 lines
1 KiB
TypeScript

import React, { useEffect } from 'react';
import { Animated, StyleSheet, ViewStyle } from 'react-native';
interface SkeletonProps {
style?: ViewStyle;
}
export default function Skeleton({ style }: SkeletonProps) {
const animatedValue = new Animated.Value(0);
useEffect(() => {
const animation = Animated.loop(
Animated.sequence([
Animated.timing(animatedValue, {
toValue: 1,
duration: 1000,
useNativeDriver: true,
}),
Animated.timing(animatedValue, {
toValue: 0,
duration: 1000,
useNativeDriver: true,
}),
])
);
animation.start();
return () => {
animation.stop();
};
}, []);
const opacity = animatedValue.interpolate({
inputRange: [0, 1],
outputRange: [0.3, 0.7],
});
return (
<Animated.View
style={[
styles.skeleton,
style,
{ opacity },
]}
/>
);
}
const styles = StyleSheet.create({
skeleton: {
backgroundColor: '#2C2C2C',
},
});