export const challengeDetail = { title: 'Challenge Details', notFound: 'Challenge not found, please try again later.', loading: 'Loading challenge details…', retry: 'Reload', share: { generating: 'Generating share card...', failed: 'Share failed, please try again later', messageJoined: 'I\'m participating in "{{title}}" challenge, completed {{completed}}/{{target}} days! Join me!', messageNotJoined: 'Found an amazing challenge "{{title}}", let\'s join together!', }, dateRange: { format: '{{start}} - {{end}}', monthDay: 'Month {{month}} Day {{day}}', ongoing: 'Ongoing updates', }, participants: { count: '{{count}} participants', ongoing: 'Ongoing updates', more: 'More', }, detail: { requirement: 'Daily check-in auto accumulates', viewAllRanking: 'View All', }, checkIn: { title: 'Challenge Check-in', todayChecked: 'Checked in today', subtitle: 'Daily check-ins accumulate progress towards goal', subtitleChecked: 'Today\'s progress recorded, keep it up tomorrow', button: { checkIn: 'Check In Now', checking: 'Checking in…', checked: 'Checked in today', notJoined: 'Join to check in', upcoming: 'Not started yet', expired: 'Challenge ended', }, toast: { alreadyChecked: 'Already checked in today', notStarted: 'Challenge not started yet, check in after it begins', expired: 'Challenge has ended, cannot check in', mustJoin: 'Join the challenge to check in', success: 'Check-in successful, keep going!', failed: 'Check-in failed, please try again', }, }, cta: { join: 'Join Challenge', joining: 'Joining…', leave: 'Leave Challenge', leaving: 'Leaving…', delete: 'Delete Challenge', deleting: 'Deleting…', upcoming: 'Starting Soon', expired: 'Challenge Ended', }, highlight: { join: { title: 'Join Challenge Now', subtitle: 'Invite friends to persist together, achieve more easily', }, leave: { title: 'Don\'t leave just yet', subtitle: 'Keep going, the next milestone is around the corner', }, upcoming: { title: 'Challenge Starting Soon', subtitle: 'Starts on {{date}}, stay tuned', subtitleFallback: 'Challenge coming soon, stay tuned', }, expired: { title: 'Challenge Ended', subtitle: 'Ended on {{date}}, look forward to the next one', subtitleFallback: 'This round has ended, look forward to the next challenge', }, }, alert: { leaveConfirm: { title: 'Confirm leaving challenge?', message: 'You will need to rejoin to continue.', cancel: 'Cancel', confirm: 'Leave Challenge', }, joinFailed: 'Failed to join challenge', leaveFailed: 'Failed to leave challenge', archiveConfirm: { title: 'Delete this challenge?', message: 'This cannot be undone and participants will lose access.', cancel: 'Cancel', confirm: 'Delete Challenge', }, archiveFailed: 'Failed to delete challenge', archiveSuccess: 'Challenge deleted', }, ranking: { title: 'Leaderboard', description: '', empty: 'Leaderboard opening soon, grab your spot.', today: 'Today', todayGoal: 'Today\'s Goal', hour: 'hrs', }, leaderboard: { title: 'Leaderboard', loading: 'Loading leaderboard…', notFound: 'Challenge not found.', loadFailed: 'Unable to load leaderboard, please try again later.', empty: 'Leaderboard opening soon, grab your spot.', loadMore: 'Loading more…', loadMoreFailed: 'Failed to load more, pull to refresh and retry', }, shareCard: { footer: 'Out Live · Beyond Life', progress: { label: 'My Progress', days: '{{completed}} / {{target}} days', completed: '🎉 Challenge Completed!', remaining: '{{remaining}} days to complete', }, info: { checkInDaily: 'Daily check-in', joinUs: 'Join us!', }, shareCode: { copied: 'Share code copied', }, }, shareCode: { copied: 'Share code copied', }, }; export const badges = { title: 'Badge Gallery', subtitle: 'Celebrate every effort', hero: { highlight: 'Keep checking in to unlock rarer badges.', earnedLabel: 'Earned', totalLabel: 'Total', progressLabel: 'Progress', }, categories: { all: 'All', sleep: 'Sleep', exercise: 'Exercise', diet: 'Nutrition', challenge: 'Challenge', social: 'Social', special: 'Special', }, rarities: { common: 'Common', uncommon: 'Uncommon', rare: 'Rare', epic: 'Epic', legendary: 'Legendary', }, status: { earned: 'Unlocked', locked: 'Locked', earnedAt: 'Unlocked on {{date}}', }, legend: 'Rarity legend', filterLabel: 'Badge categories', empty: { title: 'No badges yet', description: 'Complete sleep, workout, or challenge tasks to earn your first badge.', action: 'Explore plans', }, }; export const challenges = { title: 'Challenges', subtitle: 'Join challenges to stay consistent', loading: 'Loading challenges…', loadFailed: 'Failed to load challenges, please try again later.', retry: 'Retry', empty: 'No challenges yet. Join one to get started.', customChallenges: 'Custom Challenges', officialChallengesTitle: 'Official Challenges', officialChallenges: 'Official challenges launching soon.', join: 'Join', joined: 'Joined', invalidInviteCode: 'Please enter a valid invite code', joinSuccess: 'Joined challenge successfully', joinFailed: 'Failed to join challenge', joinModal: { title: 'Join via invite code', description: 'Enter the invite code to join a challenge', confirm: 'Join', joining: 'Joining…', cancel: 'Cancel', placeholder: 'Enter invite code', }, statusLabels: { upcoming: 'Upcoming', ongoing: 'Ongoing', expired: 'Ended', }, createCustom: { title: 'Create Challenge', editTitle: 'Edit Challenge', yourChallenge: 'Your challenge', basicInfo: 'Basic Info', challengeSettings: 'Challenge Settings', displayInteraction: 'Display & Interaction', durationDays: '{{days}} days', durationDaysChallenge: '{{days}}-day challenge', dayUnit: 'days', defaultTitle: 'Custom Challenge', rankingDescription: 'Leaderboard updates daily', typeLabels: { water: 'Hydration', exercise: 'Exercise', diet: 'Diet', sleep: 'Sleep', mood: 'Mood', weight: 'Weight', custom: 'Custom', }, fields: { title: 'Challenge title', titlePlaceholder: 'e.g., 21-day hydration', coverImage: 'Cover image', uploadCover: 'Upload cover', challengeDescription: 'Challenge description', descriptionPlaceholder: 'Describe the goal and check-in rules', challengeType: 'Challenge type', challengeTypeHelper: 'Pick the category closest to your goal', timeRange: 'Time range', start: 'Start date', end: 'End date', duration: 'Duration', periodLabel: 'Period label', periodLabelPlaceholder: 'e.g., 21-day sprint', dailyTargetAndUnit: 'Daily target & unit', dailyTargetPlaceholder: 'Daily target value', unitPlaceholder: 'Unit (cups / mins / steps...)', unitHelper: 'Optional, shown after the daily target', minimumCheckInDays: 'Minimum check-in days', minimumCheckInDaysPlaceholder: 'Cannot exceed total duration', maxParticipants: 'Max participants', noLimit: 'No limit', isPublic: 'Allow public join', publicDescription: 'Others can join with the invite code when enabled.', }, floatingCTA: { title: 'Generate invite code', subtitle: 'Create a challenge and share it with friends', editTitle: 'Save changes', editSubtitle: 'Update the challenge for all participants', }, buttons: { createAndGenerateCode: 'Create & generate code', creating: 'Creating…', updateAndSave: 'Save changes', updating: 'Saving…', }, datePicker: { confirm: 'Confirm', cancel: 'Cancel', }, alerts: { titleRequired: 'Please enter a challenge title', endTimeError: 'End date must be after start date', targetValueError: 'Daily target must be between 1 and 1000', minimumDaysError: 'Minimum check-in days must be between 1 and 365', minimumDaysExceedError: 'Minimum check-in days cannot exceed total duration', participantsError: 'Participants must be between 2 and 10000 or leave empty', createFailed: 'Failed to create challenge', createSuccess: 'Challenge created', updateSuccess: 'Challenge updated', }, imageUpload: { selectSource: 'Choose cover', selectMessage: 'Take a photo or pick from album', camera: 'Camera', album: 'Album', cancel: 'Cancel', cameraPermission: 'Camera permission required', cameraPermissionMessage: 'Enable camera access to take a photo.', albumPermissionMessage: 'Enable photo access to choose from library.', cameraFailed: 'Failed to open camera', cameraFailedMessage: 'Please try again or choose from album.', selectFailed: 'Selection failed', selectFailedMessage: 'Could not select an image, please try again.', uploadFailed: 'Upload failed', uploadFailedMessage: 'Cover upload failed, please retry.', uploading: 'Uploading…', clear: 'Remove cover', helper: 'Use a 16:9 cover under 2MB for better results.', }, shareModal: { title: 'Invite code generated', subtitle: 'Share this code so others can join your challenge', generatingCode: 'Generating…', copyCode: 'Copy code', viewChallenge: 'View challenge', later: 'Share later', }, }, };