-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconstants.ts
More file actions
158 lines (154 loc) · 11.5 KB
/
constants.ts
File metadata and controls
158 lines (154 loc) · 11.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
import type { ScoutData, ChatMessage, Requirement } from './types';
export const mockScoutData: ScoutData = {
name: 'Alex Johnson',
troop: 'Troop 123',
currentRank: 'Life',
percentToEagle: 78,
targetEagleDate: 'December 15, 2024',
ranks: [
{ name: 'Scout', requirementsCompleted: 5, totalRequirements: 5, iconUrl: '/ranks/scout.png' },
{ name: 'Tenderfoot', requirementsCompleted: 13, totalRequirements: 13, iconUrl: '/ranks/tenderfoot.png' },
{ name: 'Second Class', requirementsCompleted: 11, totalRequirements: 11, iconUrl: '/ranks/second_class.png' },
{ name: 'First Class', requirementsCompleted: 10, totalRequirements: 10, iconUrl: '/ranks/first_class.png' },
{ name: 'Star', requirementsCompleted: 6, totalRequirements: 6, iconUrl: '/ranks/star.png' },
{ name: 'Life', requirementsCompleted: 4, totalRequirements: 6, iconUrl: '/ranks/life.png' },
{ name: 'Eagle', requirementsCompleted: 2, totalRequirements: 7, iconUrl: '/ranks/eagle.png' },
],
meritBadges: [
{ id: 'mb_first_aid', name: 'First Aid', completed: true, inProgress: false, category: 'Eagle Required', imageUrl: '/badges/first_aid.png' },
{ id: 'mb_cit_community', name: 'Citizenship in the Community', completed: true, inProgress: false, category: 'Eagle Required', imageUrl: '/badges/cit_community.png' },
{ id: 'mb_cit_nation', name: 'Citizenship in the Nation', completed: true, inProgress: false, category: 'Eagle Required', imageUrl: '/badges/cit_nation.png' },
{ id: 'mb_cit_world', name: 'Citizenship in Society', completed: true, inProgress: false, category: 'Eagle Required', imageUrl: '/badges/cit_society.png' },
{ id: 'mb_communication', name: 'Communication', completed: true, inProgress: false, category: 'Eagle Required', imageUrl: '/badges/communication.png' },
{ id: 'mb_cooking', name: 'Cooking', completed: true, inProgress: false, category: 'Eagle Required', imageUrl: '/badges/cooking.png' },
{ id: 'mb_personal_fitness', name: 'Personal Fitness', completed: true, inProgress: false, category: 'Eagle Required', imageUrl: '/badges/personal_fitness.png' },
{ id: 'mb_emergency_preparedness', name: 'Emergency Preparedness', completed: false, inProgress: true, category: 'Eagle Required', imageUrl: '/badges/emergency_preparedness.png' },
{ id: 'mb_env_sci', name: 'Environmental Science', completed: true, inProgress: false, category: 'Eagle Required', imageUrl: '/badges/env_sci.png' },
{ id: 'mb_personal_management', name: 'Personal Management', completed: false, inProgress: true, category: 'Eagle Required', imageUrl: '/badges/personal_management.png' },
{ id: 'mb_swimming', name: 'Swimming', completed: true, inProgress: false, category: 'Eagle Required', imageUrl: '/badges/swimming.png' },
{ id: 'mb_camping', name: 'Camping', completed: true, inProgress: false, category: 'Eagle Required', imageUrl: '/badges/camping.png' },
{ id: 'mb_family_life', name: 'Family Life', completed: true, inProgress: false, category: 'Eagle Required', imageUrl: '/badges/family_life.png' },
{ id: 'mb_sustainability', name: 'Sustainability', completed: false, inProgress: false, category: 'Eagle Required', imageUrl: '/badges/sustainability.png' },
{ id: 'mb_wood_carving', name: 'Wood Carving', completed: true, inProgress: false, category: 'Elective', imageUrl: '/badges/wood_carving.png' },
{ id: 'mb_archery', name: 'Archery', completed: true, inProgress: false, category: 'Elective', imageUrl: '/badges/archery.png' },
{ id: 'mb_leatherwork', name: 'Leatherwork', completed: false, inProgress: true, category: 'Elective', imageUrl: '/badges/leatherwork.png' },
{ id: 'mb_photography', name: 'Photography', completed: false, inProgress: false, category: 'Elective', imageUrl: '/badges/photography.png' },
{ id: 'mb_kayaking', name: 'Kayaking', completed: false, inProgress: false, category: 'Elective', imageUrl: '/badges/kayaking.png' },
{ id: 'mb_welding', name: 'Welding', completed: false, inProgress: false, category: 'Elective', imageUrl: '/badges/welding.png' },
{ id: 'mb_geology', name: 'Geology', completed: false, inProgress: false, category: 'Elective', imageUrl: '/badges/geology.png' },
],
upcomingEvents: [
{ id: 1, name: 'Troop Meeting', date: 'Tomorrow, 7:00 PM', type: 'Meeting', location: 'Scout Hall',
agenda: [
{ time: '7:00 PM', topic: 'Opening Ceremony' },
{ time: '7:15 PM', topic: 'Skill Instruction: Lashing', requirementLink: 'first_class_3a' },
{ time: '7:45 PM', topic: 'Patrol Corners' },
{ time: '8:15 PM', topic: 'Game: Steal the Bacon' },
{ time: '8:30 PM', topic: 'Closing & Announcements' }
],
healthAndSafety: [
{ title: 'Uniform', content: 'Class A uniform is required.' },
{ title: 'Emergency Contact', content: 'Scoutmaster Smith: 555-123-4567' },
]
},
{ id: 2, name: 'District Camporee', date: 'in 3 days', type: 'Campout', location: 'Oak Creek Park',
packingList: [
{ id: 1, name: 'Tent', packed: true },
{ id: 2, name: 'Sleeping Bag', packed: true },
{ id: 3, name: 'Mess Kit', packed: false },
{ id: 4, name: 'Rain Gear', packed: false },
{ id: 5, name: 'Scout Handbook', packed: true },
],
weather: [
{ day: 'Fri', icon: 'cloudy', high: 68, low: 52 },
{ day: 'Sat', icon: 'rainy', high: 62, low: 48 },
{ day: 'Sun', icon: 'sunny', high: 70, low: 55 },
],
healthAndSafety: [
{ title: 'First Aid Kit', content: 'Each patrol should have a fully stocked first aid kit.' },
{ title: 'Hydration', content: 'Bring a reusable water bottle. Refill stations are available.' },
{ title: 'Buddy System', content: 'The buddy system is in effect at all times.' },
]
},
{ id: 3, name: 'Park Cleanup', date: 'in 1 week', type: 'Service Project', location: 'City Central Park' },
{ id: 4, name: 'Eagle Court of Honor', date: 'in 2 weeks', type: 'Court of Honor', location: 'Community Center' },
],
counselors: [
{ id: 1, name: 'Mr. David Chen', badge: 'Personal Management', availability: 'Accepting New Scouts', distance: '2.5 mi away' },
{ id: 2, name: 'Mrs. Sarah Wills', badge: 'Sustainability', availability: 'Accepting New Scouts', distance: '3.1 mi away' },
{ id: 3, name: 'Mr. Tom Rogers', badge: 'Emergency Preparedness', availability: 'Unavailable', distance: '5.0 mi away' },
],
serviceProjects: [
{ id: 1, name: 'Food Bank Sorting', organization: 'Community Food Bank', date: 'This Saturday', location: '123 Giving Ln.' },
{ id: 2, name: 'Trail Maintenance', organization: 'City Parks Dept.', date: 'Next Weekend', location: 'Mountain View Trail' },
],
eagleProject: {
title: 'Community Garden Restoration',
beneficiary: 'Northwood Community Center',
milestones: [
{ name: 'Project Proposal Approval', dueDate: '1 month ago', completed: true },
{ name: 'Fundraising Complete', dueDate: '2 weeks ago', completed: true },
{ name: 'Materials Acquired', dueDate: 'in 1 week', completed: false },
{ name: 'Build Day', dueDate: 'in 3 weeks', completed: false },
{ name: 'Final Report Submission', dueDate: 'in 6 weeks', completed: false },
],
budget: [
{ item: 'Lumber', category: 'Materials', amount: 350, actual: 325.50, receiptUrl: '/receipts/lumber.pdf' },
{ item: 'Soil & Compost', category: 'Materials', amount: 200, actual: 215.00 },
{ item: 'Hardware', category: 'Materials', amount: 50, actual: 45.75 },
{ item: 'Tool Rental', category: 'Fees', amount: 75, actual: 0 },
],
volunteers: [
{ name: 'Ben Carter', role: 'Fellow Scout', hoursLogged: 8 },
{ name: 'Olivia Green', role: 'Friend', hoursLogged: 6 },
{ name: 'Mr. Johnson', role: 'Parent', hoursLogged: 12 },
]
},
announcements: [
{ id: 1, title: 'Summer Camp Payments Due', author: 'Mr. Smith', date: '2 days ago' },
{ id: 2, title: 'Popcorn Fundraiser Kick-off', author: 'Committee Chair', date: '5 days ago' },
],
skills: [
{ id: 1, name: 'Tying Knots', category: 'Knots', icon: 'PuzzlePieceIcon' },
{ id: 2, name: 'First Aid Basics', category: 'First Aid', icon: 'PuzzlePieceIcon' },
{ id: 3, name: 'Map & Compass', category: 'Navigation', icon: 'PuzzlePieceIcon' },
{ id: 4, name: 'Tent Pitching', category: 'Camping', icon: 'PuzzlePieceIcon' },
],
otherAwards: [
{ id: 1, name: 'STEM Nova', date: 'May 2024', level: 'Science Everywhere' },
{ id: 2, name: 'National Outdoor Award', date: 'Jan 2024', level: 'Camping Gold' },
],
gearLocker: [
{ id: 1, name: 'Hiking Boots', category: 'Clothing', owned: true },
{ id: 2, name: 'Compass', category: 'Essentials', owned: true },
{ id: 3, name: '3-Season Tent', category: 'Camping', owned: false },
{ id: 4, name: 'Water Filter', category: 'Essentials', owned: true },
],
financials: [
{ id: 1, item: 'Annual Dues', date: 'Sep 1, 2024', amount: -150.00, category: 'Dues' },
{ id: 2, item: 'Popcorn Sales', date: 'Oct 15, 2024', amount: 250.00, category: 'Fundraising' },
{ id: 3, item: 'Camporee Fee', date: 'Oct 20, 2024', amount: -45.00, category: 'Camp Fees' },
]
};
export const mockChatMessages: ChatMessage[] = [
{ id: 1, sender: 'other', senderName: 'Ben C.', avatar: 'https://i.pravatar.cc/40?u=Ben', text: 'Hey, are you going to the camporee this weekend?', timestamp: '10:30 AM' },
{ id: 2, sender: 'me', senderName: 'Alex J.', avatar: `https://i.pravatar.cc/40?u=${mockScoutData.name}`, text: 'Yeah, definitely! Just finishing up my packing.', timestamp: '10:31 AM' },
{ id: 3, sender: 'other', senderName: 'Ben C.', avatar: 'https://i.pravatar.cc/40?u=Ben', text: 'Cool. Did you see the weather forecast? Looks like rain on Saturday.', timestamp: '10:31 AM' },
{ id: 4, sender: 'me', senderName: 'Alex J.', avatar: `https://i.pravatar.cc/40?u=${mockScoutData.name}`, text: 'Oof, thanks for the heads up. I better remember my rain gear.', timestamp: '10:32 AM' },
];
export const mockRequirement: Requirement = {
id: 'pm_req_2a',
name: 'Personal Management',
description: 'Prepare a budget for a period of at least 90 consecutive days; keep a record of your actual income and expenses for that period.',
completed: false,
guidance: "This requirement is designed to teach you the fundamentals of financial planning. Use a notebook, spreadsheet, or a budgeting app to track every dollar you receive and spend. The goal is to understand where your money goes and to learn how to make informed financial decisions.",
tips: [
"Set reminders on your phone to log your expenses daily.",
"Categorize your spending to see where most of your money goes (e.g., food, hobbies, savings).",
"At the end of the 90 days, write a summary of what you learned.",
],
userContent: [
{ type: 'tip', author: 'Eagle Scout 2022', content: 'I used a free app called Mint to track everything. It made it super easy to see graphs of my spending!' },
{ type: 'video', author: 'Mr. Davison', content: 'youtube.com/watch?v=12345' },
]
};