shadimage
wxcn
blockforecast-dashboardsource: ok · hit

Forecast Dashboard

Weather and moon for Austin, with a separate coastal tide card.

npx shadcn add "https://wxcn.dev/r/react/forecast-dashboard.json"
free

Where it goes

kanbandashboard-shell

Use cases

dashboard

Tags auto-generated by rules on 9/24/2026 — empty means no evidence, not lack of support.

Dependencies

Bundle weight · light

Registry dependencies

https://wxcn.dev/r/react/weather-forecast.jsonhttps://wxcn.dev/r/react/moon-forecast.jsonhttps://wxcn.dev/r/react/tide-forecast.json

Files1 · source cached 10/14/2026, 12:24:57 PM

packages/react/src/components/wxcn/forecast-dashboard.tsx
import type { IconSet } from './forecast-icons';
import type {
	ForecastType,
	LocationInput,
	TideUnit,
	WeatherUnit,
	CurrentWeather,
	WeatherBackground,
	WeatherPeriod
} from '@/lib/wxcn/types.js';
import { WeatherForecast } from './weather-forecast';
import { TideForecast } from './tide-forecast';
import { MoonForecast } from './moon-forecast';

export type ForecastDashboardProps = {
	interactive?: boolean;
	iconType?: IconSet;
	timeZone?: string;
	type?: ForecastType;
	size?: 'sm' | 'default' | 'lg';
	density?: 'compact' | 'comfortable';
	weatherUnit?: WeatherUnit;
	windUnit?: 'mph' | 'km/h' | 'm/s' | 'knots';
	tideUnit?: TideUnit;
	background?: WeatherBackground;
	showTemperatureTrend?: boolean;
	showHighLow?: boolean;
	currentWeather?: CurrentWeather | null;
	hourlyForecast?: WeatherPeriod[];
	location?: LocationInput;
	tideLocation?: LocationInput;
};

export function ForecastDashboard({
	interactive = false,
	iconType,
	timeZone,
	type = 'summary',
	size = 'default',
	density = 'comfortable',
	weatherUnit = 'fahrenheit',
	windUnit = 'mph',
	tideUnit = 'ft',
	background = 'none',
	showTemperatureTrend = false,
	showHighLow = false,
	currentWeather,
	hourlyForecast,
	tideLocation,
	location
}: ForecastDashboardProps) {
	return (
		<div className="@container/dashboard w-full">
			<div className="grid items-start gap-4 @min-[38rem]/dashboard:grid-cols-2 @min-[52rem]/dashboard:grid-cols-3">
				<div className="min-w-0 @min-[38rem]/dashboard:col-span-2 @min-[52rem]/dashboard:col-span-1">
					<WeatherForecast
						interactive={interactive}
						iconType={iconType}
						timeZone={timeZone}
						type={type}
						size={size}
						density={density}
						unit={weatherUnit}
						windUnit={windUnit}
						location={location}
						background={background}
						showTemperatureTrend={showTemperatureTrend}
						showHighLow={showHighLow}
						currentWeather={currentWeather}
						hourlyForecast={hourlyForecast}
					/>
				</div>
				<TideForecast
					interactive={interactive}
					iconType={iconType}
					timeZone={timeZone}
					type={type}
					size={size}
					density={density}
					unit={tideUnit}
					location={tideLocation}
				/>
				<MoonForecast
					interactive={interactive}
					iconType={iconType}
					timeZone={timeZone}
					type={type}
					size={size}
					density={density}
					location={location}
				/>
			</div>
		</div>
	);
}

export default ForecastDashboard;

More from wxcn

Browse all components in this library →