managarten/apps-archived/maerchenzauber/apps/mobile/components/atoms/Skeleton.tsx
Till-JS 61d181fbc2 chore: archive inactive projects to apps-archived/
Move inactive projects out of active workspace:
- bauntown (community website)
- maerchenzauber (AI story generation)
- memoro (voice memo app)
- news (news aggregation)
- nutriphi (nutrition tracking)
- reader (reading app)
- uload (URL shortener)
- wisekeep (AI wisdom extraction)

Update CLAUDE.md documentation:
- Add presi to active projects
- Document archived projects section
- Update workspace configuration

Archived apps can be re-activated by moving back to apps/

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 07:03:59 +01:00

46 lines
912 B
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',
},
});