@dankupfer/create-dn-starter
Version:
Interactive CLI for creating modular React Native apps with Expo
328 lines (322 loc) • 8.67 kB
text/typescript
// template/src/modules/core/combined-auth/styles.ts
import { StyleSheet } from 'react-native';
import { ProcessedTheme } from '../../../theme/tokenProcessor';
export const createCombinedAuthStyles = (theme: ProcessedTheme) =>
StyleSheet.create({
container: {
flex: 1,
backgroundColor: theme.colors.background,
},
// Splash styles
splashContainer: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: theme.colors.background,
padding: theme.spacing.xl,
},
splashTitle: {
fontSize: theme.fontSize.xl,
fontWeight: 'bold',
color: theme.colors.text,
marginBottom: theme.spacing.sm,
},
splashSubtitle: {
fontSize: theme.fontSize.base,
color: theme.colors.textSecondary,
marginBottom: theme.spacing.xl,
},
splashLoader: {
marginTop: theme.spacing.lg,
},
// Auth styles
authContainer: {
flex: 1,
backgroundColor: theme.colors.background,
},
authContent: {
flex: 1,
justifyContent: 'center',
padding: theme.spacing.lg,
},
authTitle: {
fontSize: theme.fontSize.xl,
fontWeight: 'bold',
color: theme.colors.text,
textAlign: 'center',
marginBottom: theme.spacing.sm,
},
authSubtitle: {
fontSize: theme.fontSize.base,
color: theme.colors.textSecondary,
textAlign: 'center',
marginBottom: theme.spacing.xl,
},
inputContainer: {
marginBottom: theme.spacing.lg,
},
input: {
backgroundColor: theme.colors.surface,
borderWidth: 1,
borderColor: theme.colors.border,
borderRadius: theme.borderRadius.md,
paddingHorizontal: theme.spacing.md,
paddingVertical: theme.spacing.md,
fontSize: theme.fontSize.base,
color: theme.colors.text,
marginBottom: theme.spacing.md,
},
primaryButton: {
backgroundColor: theme.colors.primary[500],
borderRadius: theme.borderRadius.md,
paddingVertical: theme.spacing.md,
alignItems: 'center',
marginBottom: theme.spacing.md,
},
disabledButton: {
backgroundColor: theme.colors.neutral[500],
},
primaryButtonText: {
color: theme.colors.neutral[50],
fontSize: theme.fontSize.base,
fontWeight: '600',
},
secondaryButton: {
alignItems: 'center',
},
secondaryButtonText: {
color: theme.colors.textSecondary,
fontSize: theme.fontSize.sm,
},
// Dashboard styles
dashboardContainer: {
flex: 1,
backgroundColor: theme.colors.background,
},
header: {
flexDirection: 'row',
justifyContent: 'space-between',
alignItems: 'center',
padding: theme.spacing.md,
paddingTop: theme.spacing.sm,
},
headerLeft: {
flex: 1,
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'flex-start',
},
headerCenter: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
headerRight: {
flex: 1,
alignItems: 'flex-end',
justifyContent: 'center',
},
notificationBadge: {
backgroundColor: theme.colors.neutral[200], // Changed from semantic.error to neutral gray
borderRadius: theme.borderRadius.sm, // Changed from sm * 3 to just sm for more rectangular shape
paddingHorizontal: theme.spacing.xs + 4, // Slightly more horizontal padding
paddingVertical: theme.spacing.xs, // More vertical padding for rectangular shape
},
notificationCount: {
color: theme.colors.neutral[500], // Changed from neutral[50] to dark text
fontSize: theme.fontSize.sm,
fontWeight: 'bold',
},
greeting: {
color: theme.colors.text,
fontSize: theme.fontSize.lg,
fontWeight: '600',
},
logoutButton: {
backgroundColor: theme.colors.surface,
paddingHorizontal: theme.spacing.md,
paddingVertical: theme.spacing.xs + 2,
borderRadius: theme.borderRadius.sm,
},
logoutText: {
color: theme.colors.text,
fontSize: theme.fontSize.sm,
},
// Keep the existing navigation styles for now (we'll theme these later)
topNav: {
paddingHorizontal: 16,
paddingVertical: 8,
marginBottom: 16,
},
pillContainer: {
position: 'relative',
height: 32,
},
pillMask: {
position: 'absolute',
top: 0,
width: 100,
height: 32,
backgroundColor: 'transparent',
borderRadius: 20,
borderWidth: 1,
borderColor: theme.colors.border,
zIndex: 2,
},
pillScrollView: {
position: 'relative',
zIndex: 3,
},
slidingBackground: {
position: 'absolute',
top: 0,
left: 0,
width: 100,
height: 32,
backgroundColor: theme.colors.neutral[900], // Changed from primary[500] to black
borderRadius: 20, // Add border radius to match pills
zIndex: 1,
},
navPill: {
backgroundColor: theme.colors.neutral[100], // Light gray background for inactive
borderWidth: 0, // Remove border
borderRadius: 20,
paddingHorizontal: 16,
paddingVertical: 6,
marginRight: 8,
height: 32,
justifyContent: 'center',
minWidth: 100,
},
navPillActive: {
backgroundColor: theme.colors.neutral[900], // Black background for active
borderColor: 'transparent',
},
navPillText: {
color: theme.colors.neutral[500], // Dark gray text for inactive
fontSize: theme.fontSize.sm,
textAlign: 'center',
},
navPillTextActive: {
color: theme.colors.neutral[50], // White text for active
fontWeight: '600',
},
navPillSolid: {
backgroundColor: theme.colors.surface,
borderColor: theme.colors.surface,
},
content: {
flex: 1,
paddingHorizontal: theme.spacing.md,
},
carouselContainer: {
flex: 1,
},
carouselContent: {},
sectionContainer: {
flex: 1,
},
sectionScrollView: {
flex: 1,
},
sectionContent: {
paddingHorizontal: theme.spacing.md,
},
sectionTitle: {
color: theme.colors.text,
fontSize: theme.fontSize.lg,
fontWeight: '600',
marginBottom: theme.spacing.md,
},
bottomPadding: {
height: theme.spacing.lg,
},
// Placeholder styles
placeholderContainer: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
paddingVertical: 80,
paddingHorizontal: theme.spacing.lg,
},
placeholderTitle: {
color: theme.colors.text,
fontSize: theme.fontSize.xl,
fontWeight: 'bold',
marginBottom: theme.spacing.md,
textAlign: 'center',
},
placeholderText: {
color: theme.colors.textSecondary,
fontSize: theme.fontSize.base,
textAlign: 'center',
marginBottom: theme.spacing.sm,
lineHeight: 24,
},
placeholderSubtext: {
color: theme.colors.textSecondary,
fontSize: theme.fontSize.sm,
textAlign: 'center',
fontStyle: 'italic',
},
// Overlay styles
overlayContainer: {
flex: 1,
backgroundColor: 'rgba(0, 0, 0, 0.5)',
justifyContent: 'flex-end',
},
overlayBackdrop: {
flex: 1,
},
overlayContent: {
backgroundColor: theme.colors.surface,
paddingHorizontal: theme.spacing.lg,
paddingBottom: 34,
paddingTop: theme.spacing.md,
flex: 1,
minHeight: 300,
maxHeight: '100%',
shadowColor: '#000',
shadowOffset: {
width: 0,
height: -4,
},
shadowOpacity: 0.3,
shadowRadius: 8,
elevation: 8,
},
overlayHandle: {
width: 40,
height: 4,
backgroundColor: theme.colors.border,
borderRadius: 2,
alignSelf: 'center',
marginBottom: theme.spacing.lg,
},
overlayTitle: {
color: theme.colors.text,
fontSize: theme.fontSize.xl,
fontWeight: 'bold',
marginBottom: theme.spacing.md,
textAlign: 'center',
},
overlayText: {
color: theme.colors.textSecondary,
fontSize: theme.fontSize.base,
textAlign: 'center',
marginBottom: theme.spacing.xl,
lineHeight: 24,
},
overlayCloseButton: {
backgroundColor: theme.colors.primary[500],
borderRadius: theme.borderRadius.md,
paddingVertical: theme.spacing.md,
alignItems: 'center',
marginTop: 'auto',
},
overlayCloseText: {
color: theme.colors.neutral[50],
fontSize: theme.fontSize.base,
fontWeight: '600',
},
});