import classNames from 'classnames' import { useState } from 'react' import { FanIcon } from 'lib/icons/Fan.js' import { OffIcon } from 'lib/icons/Off.js' import type { ThermostatDevice } from 'lib/seam/thermostats/thermostat-device.js' import { DeviceImage } from 'lib/ui/device/DeviceImage.js' import { EditableDeviceName } from 'lib/ui/device/EditableDeviceName.js' import { ClimateSettingStatus } from 'lib/ui/thermostat/ClimateSettingStatus.js' import { Temperature } from 'lib/ui/thermostat/Temperature.js' interface ThermostatCardProps { device: ThermostatDevice onEditName?: (newName: string) => void onTemperatureUnitChange?: (temperatureUnit: 'fahrenheit' | 'celsius') => void } export function ThermostatCard(props: ThermostatCardProps): JSX.Element { return (
) } function Content(props: ThermostatCardProps): JSX.Element | null { const { device } = props const [temperatureUnit, setTemperatureUnit] = useState< 'fahrenheit' | 'celsius' >('fahrenheit') const toggleTemperatureUnit = (): void => { const newUnit = temperatureUnit === 'fahrenheit' ? 'celsius' : 'fahrenheit' setTemperatureUnit(newUnit) props.onTemperatureUnitChange?.(newUnit) } const { temperature_fahrenheit: temperatureFahrenheit, temperature_celsius: temperatureCelsius, current_climate_setting: currentClimateSetting, is_fan_running: isFanRunning, relative_humidity: relativeHumidity, } = device.properties const systemStatus = getSystemStatus(device) return (

{t.temperature}:

|

{t.humidity}:

{relativeHumidity != null && (

{relativeHumidity * 100}%

)}

{t.setting}:

{t.fanMode}:

{isFanRunning ? : }

{isFanRunning ? t.auto : t.off}

{t.systemStatus}:

{systemStatus === 'off' ? '--' : t[systemStatus]}

) } const getSystemStatus = ( device: ThermostatDevice ): 'heating' | 'cooling' | 'fan' | 'off' => { const { properties } = device const { is_heating: isHeating, is_cooling: isCooling, is_fan_running: isFanRunning, } = properties if (isHeating) return 'heating' if (isCooling) return 'cooling' if (isFanRunning) return 'fan' return 'off' } const t = { fahrenheit: '˚F', celsius: '˚C', auto: 'Auto', off: 'Off', temperature: 'Temperature', humidity: 'Humidity', setting: 'Setting', fanMode: 'Fan mode', systemStatus: 'System status', cooling: 'Cooling', heating: 'Heating', fan: 'Fan only', }