- **EULA Persistence Fix**: Fixed EULA dialog showing on every login
- Added eulaAcceptedAt/eulaVersion to AuthResponse interface
- Updated login/register/getUserById endpoints to return EULA fields
- Changed EULACheck to use refreshUser() instead of window.reload()
- **Touch Target Accessibility**: All interactive elements now meet 48x48px minimum
- Fixed 14 undersized IconButtons across 5 files
- Changed size="small" to size="medium" with minWidth/minHeight constraints
- Updated children page, AI chat, analytics cards, legal viewer
- **Alt Text for Images**: Complete image accessibility for screen readers
- Added photoAlt field to children table (Migration V009)
- PhotoUpload component now includes alt text input field
- All Avatar components have meaningful alt text
- Default alt text: "Photo of {childName}", "{userName}'s profile photo"
- **Medical Tracking Consolidation**: Unified medical page with tabs
- Medicine page now has 3 tabs: Medication, Temperature, Doctor Visit
- Backward compatibility for legacy 'medicine' activity type
- Created dedicated /track/growth page for physical measurements
- **Track Page Updates**:
- Simplified to 6 options: Feeding, Sleep, Diaper, Medical, Activity, Growth
- Fixed grid layout to 3 cards per row with minWidth: 200px
- Updated terminology from "Medicine" to "Medical"
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
284 lines
7.6 KiB
JSON
284 lines
7.6 KiB
JSON
{
|
|
"title": "Activity Tracking",
|
|
"trackActivity": "Track Activity",
|
|
"selectActivity": "Select an activity to track",
|
|
"activities": {
|
|
"feeding": "Feeding",
|
|
"sleep": "Sleep",
|
|
"diaper": "Diaper",
|
|
"medicine": "Medicine",
|
|
"medical": "Medical",
|
|
"activity": "Activity",
|
|
"growth": "Growth",
|
|
"temperature": "Temperature",
|
|
"medication": "Medication"
|
|
},
|
|
"feeding": {
|
|
"title": "Feeding",
|
|
"addFeeding": "Add Feeding",
|
|
"type": "Feeding Type",
|
|
"types": {
|
|
"breast": "Breast",
|
|
"bottle": "Bottle",
|
|
"solid": "Solid Food"
|
|
},
|
|
"side": "Side",
|
|
"sides": {
|
|
"left": "Left",
|
|
"right": "Right",
|
|
"both": "Both"
|
|
},
|
|
"amount": "Amount",
|
|
"duration": "Duration",
|
|
"startTime": "Start Timer",
|
|
"endTime": "Stop Timer",
|
|
"reset": "Reset",
|
|
"notes": "Notes",
|
|
"bottleType": "Bottle Type",
|
|
"bottleTypes": {
|
|
"formula": "Formula",
|
|
"breastmilk": "Breast Milk",
|
|
"other": "Other"
|
|
},
|
|
"foodDescription": "Food Description",
|
|
"amountDescription": "Amount Description",
|
|
"placeholders": {
|
|
"amount": "Enter amount",
|
|
"notes": "Add any notes about this feeding...",
|
|
"duration": "Or enter duration manually",
|
|
"foodDescription": "e.g., Rice cereal, Banana puree",
|
|
"amountDescription": "e.g., 1/4 cup, 2 spoonfuls"
|
|
},
|
|
"units": {
|
|
"ml": "ml",
|
|
"oz": "oz",
|
|
"minutes": "minutes"
|
|
},
|
|
"validation": {
|
|
"durationRequired": "Please enter duration or use the timer",
|
|
"amountRequired": "Please enter amount",
|
|
"foodRequired": "Please enter food description"
|
|
},
|
|
"success": "Feeding logged successfully!",
|
|
"deleted": "Feeding deleted successfully",
|
|
"recentFeedings": "Recent Feedings",
|
|
"error": {
|
|
"saveFailed": "Failed to save feeding",
|
|
"deleteFailed": "Failed to delete feeding"
|
|
}
|
|
},
|
|
"sleep": {
|
|
"title": "Sleep",
|
|
"addSleep": "Add Sleep",
|
|
"logSleep": "Log Sleep",
|
|
"startTime": "Sleep Start",
|
|
"endTime": "Sleep End",
|
|
"duration": "Duration",
|
|
"quality": "Quality",
|
|
"qualities": {
|
|
"poor": "Poor",
|
|
"fair": "Fair",
|
|
"good": "Good",
|
|
"excellent": "Excellent"
|
|
},
|
|
"location": "Location",
|
|
"locations": {
|
|
"crib": "Crib",
|
|
"bed": "Bed",
|
|
"stroller": "Stroller",
|
|
"carrier": "Carrier",
|
|
"other": "Other"
|
|
},
|
|
"status": {
|
|
"title": "Sleep Status",
|
|
"completed": "Completed (has end time)",
|
|
"ongoing": "Ongoing (still sleeping)"
|
|
},
|
|
"now": "Now",
|
|
"notes": "Notes",
|
|
"placeholders": {
|
|
"notes": "Add any notes about this sleep session..."
|
|
},
|
|
"recentSleeps": "Recent Sleeps",
|
|
"success": "Sleep logged successfully!",
|
|
"deleted": "Sleep deleted successfully",
|
|
"ongoing_duration": "Ongoing - {{duration}}"
|
|
},
|
|
"diaper": {
|
|
"title": "Diaper",
|
|
"addDiaper": "Add Diaper Change",
|
|
"logDiaper": "Log Diaper Change",
|
|
"type": "Type",
|
|
"types": {
|
|
"wet": "Wet",
|
|
"dirty": "Dirty",
|
|
"both": "Both",
|
|
"dry": "Dry"
|
|
},
|
|
"time": "Time",
|
|
"now": "Now",
|
|
"conditions": {
|
|
"title": "Conditions",
|
|
"normal": "Normal",
|
|
"soft": "Soft",
|
|
"hard": "Hard",
|
|
"watery": "Watery",
|
|
"mucus": "Mucus",
|
|
"blood": "Blood"
|
|
},
|
|
"rash": {
|
|
"title": "Has Rash",
|
|
"yes": "Yes",
|
|
"no": "No",
|
|
"severity": "Rash Severity",
|
|
"alert": "Diaper rash detected. Consider applying diaper rash cream and consulting your pediatrician if it persists.",
|
|
"severities": {
|
|
"mild": "Mild",
|
|
"moderate": "Moderate",
|
|
"severe": "Severe"
|
|
}
|
|
},
|
|
"notes": "Notes",
|
|
"placeholders": {
|
|
"notes": "Add any notes about this diaper change..."
|
|
},
|
|
"recentDiapers": "Recent Diaper Changes",
|
|
"success": "Diaper change logged successfully!",
|
|
"deleted": "Diaper change deleted successfully"
|
|
},
|
|
"milestone": {
|
|
"title": "Milestone",
|
|
"addMilestone": "Add Milestone",
|
|
"category": "Category",
|
|
"categories": {
|
|
"physical": "Physical",
|
|
"cognitive": "Cognitive",
|
|
"social": "Social",
|
|
"language": "Language"
|
|
},
|
|
"description": "Description",
|
|
"date": "Date",
|
|
"notes": "Notes",
|
|
"placeholders": {
|
|
"description": "Describe the milestone...",
|
|
"notes": "Add any additional notes..."
|
|
}
|
|
},
|
|
"health": {
|
|
"title": "Health",
|
|
"addHealth": "Add Health Record",
|
|
"type": "Type",
|
|
"types": {
|
|
"temperature": "Temperature",
|
|
"medication": "Medication",
|
|
"symptom": "Symptom",
|
|
"doctor": "Doctor Visit"
|
|
},
|
|
"temperature": "Temperature",
|
|
"medication": "Medication",
|
|
"medicineInfo": "Medicine Information",
|
|
"medicineName": {
|
|
"label": "Medicine Name",
|
|
"placeholder": "e.g., Acetaminophen, Ibuprofen",
|
|
"required": "Please enter medicine name"
|
|
},
|
|
"dosage": {
|
|
"label": "Dosage",
|
|
"placeholder": "e.g., 5, 2.5",
|
|
"required": "Please enter dosage"
|
|
},
|
|
"unit": "Unit",
|
|
"route": {
|
|
"label": "Route",
|
|
"oral": "Oral",
|
|
"topical": "Topical",
|
|
"injection": "Injection",
|
|
"other": "Other"
|
|
},
|
|
"reason": {
|
|
"label": "Reason (optional)",
|
|
"placeholder": "e.g., Fever, Pain, Allergy"
|
|
},
|
|
"logMedicine": "Log Medicine",
|
|
"recentMedicines": "Recent Medicines",
|
|
"success": "Medicine logged successfully!",
|
|
"error": "Failed to save medicine",
|
|
"deleted": "Medicine deleted successfully",
|
|
"deleteError": "Failed to delete medicine",
|
|
"symptom": "Symptom",
|
|
"severity": "Severity",
|
|
"severities": {
|
|
"mild": "Mild",
|
|
"moderate": "Moderate",
|
|
"severe": "Severe"
|
|
},
|
|
"notes": "Notes",
|
|
"placeholders": {
|
|
"medication": "Medication name",
|
|
"dosage": "Dosage amount",
|
|
"symptom": "Describe symptom",
|
|
"notes": "Add any notes..."
|
|
},
|
|
"units": {
|
|
"ml": "ml",
|
|
"mg": "mg",
|
|
"tsp": "tsp",
|
|
"tbsp": "tbsp",
|
|
"drops": "drops",
|
|
"tablet": "tablet(s)",
|
|
"celsius": "°C",
|
|
"fahrenheit": "°F"
|
|
}
|
|
},
|
|
"activity": {
|
|
"title": "Activity",
|
|
"addActivity": "Add Activity",
|
|
"logActivity": "Log Activity",
|
|
"type": "Activity Type",
|
|
"types": {
|
|
"play": "Play",
|
|
"tummyTime": "Tummy Time",
|
|
"walk": "Walk",
|
|
"music": "Music",
|
|
"reading": "Reading",
|
|
"outdoor": "Outdoor Play",
|
|
"other": "Other"
|
|
},
|
|
"duration": "Duration (minutes)",
|
|
"description": "Description",
|
|
"notes": "Notes",
|
|
"placeholders": {
|
|
"duration": "Enter duration in minutes",
|
|
"description": "Describe the activity...",
|
|
"notes": "Add any notes..."
|
|
},
|
|
"recentActivities": "Recent Activities",
|
|
"success": "Activity logged successfully!",
|
|
"deleted": "Activity deleted successfully"
|
|
},
|
|
"common": {
|
|
"selectChild": "Select Child",
|
|
"cancel": "Cancel",
|
|
"delete": "Delete",
|
|
"loading": "Loading...",
|
|
"noChildrenAdded": "No Children Added",
|
|
"noChildrenMessage": "You need to add a child before you can track activities",
|
|
"addChild": "Add Child",
|
|
"recentActivities": "Recent Activities",
|
|
"error": {
|
|
"loadChildrenFailed": "Failed to load children"
|
|
}
|
|
},
|
|
"quickLog": "Quick Log",
|
|
"viewHistory": "View History",
|
|
"editEntry": "Edit Entry",
|
|
"deleteEntry": "Delete Entry",
|
|
"confirmDelete": "Are you sure you want to delete this entry?",
|
|
"filterByType": "Filter by Type",
|
|
"filterByChild": "Filter by Child",
|
|
"sortByNewest": "Newest First",
|
|
"sortByOldest": "Oldest First",
|
|
"noEntries": "No entries yet",
|
|
"addFirstEntry": "Add your first entry to start tracking"
|
|
}
|