feat: implement external environmental data display components

- Add WeatherWidget for current weather conditions
- Add TideDisplay for tide times and heights
- Add WaterQualityIndicator for EPA water quality data
- Add BeachQualityDisplay for beach ratings and certifications
- Add BiodiversityInfo for marine biodiversity information
- Add EnvironmentalDataPanel composite component
- Create externalDataService for API integration
- Add types for external environmental data
- Create demo page at /demo/environmental-data
- Add comprehensive README documentation

Fulfills requirements 11.1, 11.2, 11.3, 11.4, 11.6, 11.7
Completes task 19 from implementation plan
This commit is contained in:
2025-11-16 23:07:29 +00:00
parent 1e1e54e7ff
commit 2b222b65e1
16 changed files with 1041 additions and 2 deletions

View File

@@ -179,3 +179,65 @@ export interface QuantityAggregation {
count: number;
percentage: number;
}
// External environmental data types
export interface WeatherData {
temperature: number; // Celsius
feelsLike: number;
humidity: number; // percentage
windSpeed: number; // m/s
windDirection: number; // degrees
description: string;
icon: string;
timestamp: Date;
}
export interface TideData {
tides: Array<{
time: Date;
height: number; // meters
type: 'high' | 'low';
}>;
nextTide?: {
time: Date;
height: number;
type: 'high' | 'low';
};
}
export interface WaterQualityData {
status: 'excellent' | 'good' | 'sufficient' | 'poor' | 'unknown';
lastUpdated?: Date;
parameters?: {
bacteria?: number;
ph?: number;
temperature?: number;
};
source?: string;
}
export interface BeachQualityData {
rating: 'blue-flag' | 'green-coast' | 'excellent' | 'good' | 'adequate' | 'poor' | 'unknown';
awards?: string[];
facilities?: string[];
lastInspection?: Date;
}
export interface BiodiversityData {
species?: Array<{
name: string;
scientificName?: string;
status?: string;
}>;
protectedArea?: boolean;
habitatType?: string;
conservationStatus?: string;
}
export interface ExternalEnvironmentalData {
weather?: WeatherData;
tides?: TideData;
waterQuality?: WaterQualityData;
beachQuality?: BeachQualityData;
biodiversity?: BiodiversityData;
}