@seamapi/react 4.0.0 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/elements.js +12429 -12362
- package/dist/elements.js.map +1 -1
- package/dist/index.css +51 -12
- package/dist/index.css.map +1 -1
- package/dist/index.min.css +1 -1
- package/dist/index.min.css.map +1 -1
- package/lib/icons/AccessCodeKey.js +1 -1
- package/lib/icons/AccessCodeKey.js.map +1 -1
- package/lib/icons/Add.js +1 -1
- package/lib/icons/Add.js.map +1 -1
- package/lib/icons/ArrowBack.js +1 -1
- package/lib/icons/ArrowBack.js.map +1 -1
- package/lib/icons/ArrowRestart.js +1 -1
- package/lib/icons/ArrowRestart.js.map +1 -1
- package/lib/icons/ArrowRight.js +1 -1
- package/lib/icons/ArrowRight.js.map +1 -1
- package/lib/icons/BatteryLevelCritical.js +1 -1
- package/lib/icons/BatteryLevelCritical.js.map +1 -1
- package/lib/icons/BatteryLevelFull.js +1 -1
- package/lib/icons/BatteryLevelFull.js.map +1 -1
- package/lib/icons/BatteryLevelHigh.js +1 -1
- package/lib/icons/BatteryLevelHigh.js.map +1 -1
- package/lib/icons/BatteryLevelLow.js +1 -1
- package/lib/icons/BatteryLevelLow.js.map +1 -1
- package/lib/icons/BatteryLevelWired.js +1 -1
- package/lib/icons/BatteryLevelWired.js.map +1 -1
- package/lib/icons/Bee.js +1 -1
- package/lib/icons/Bee.js.map +1 -1
- package/lib/icons/Check.js +1 -1
- package/lib/icons/Check.js.map +1 -1
- package/lib/icons/CheckBlack.js +1 -1
- package/lib/icons/CheckBlack.js.map +1 -1
- package/lib/icons/CheckGreen.js +1 -1
- package/lib/icons/CheckGreen.js.map +1 -1
- package/lib/icons/CheckboxBlank.js +1 -1
- package/lib/icons/CheckboxBlank.js.map +1 -1
- package/lib/icons/CheckboxFilled.js +1 -1
- package/lib/icons/CheckboxFilled.js.map +1 -1
- package/lib/icons/ChevronDown.js +1 -1
- package/lib/icons/ChevronDown.js.map +1 -1
- package/lib/icons/ChevronRight.js +1 -1
- package/lib/icons/ChevronRight.js.map +1 -1
- package/lib/icons/ChevronWide.js +1 -1
- package/lib/icons/ChevronWide.js.map +1 -1
- package/lib/icons/ClimateSettingSchedule.js +1 -1
- package/lib/icons/ClimateSettingSchedule.js.map +1 -1
- package/lib/icons/Clock.js +1 -1
- package/lib/icons/Clock.js.map +1 -1
- package/lib/icons/Close.js +1 -1
- package/lib/icons/Close.js.map +1 -1
- package/lib/icons/CloseWhite.js +1 -1
- package/lib/icons/CloseWhite.js.map +1 -1
- package/lib/icons/Copy.js +1 -1
- package/lib/icons/Copy.js.map +1 -1
- package/lib/icons/DotsEllipsisMore.js +1 -1
- package/lib/icons/DotsEllipsisMore.js.map +1 -1
- package/lib/icons/Edit.js +1 -1
- package/lib/icons/Edit.js.map +1 -1
- package/lib/icons/ExclamationCircle.js +1 -1
- package/lib/icons/ExclamationCircle.js.map +1 -1
- package/lib/icons/ExclamationCircleOutline.js +1 -1
- package/lib/icons/ExclamationCircleOutline.js.map +1 -1
- package/lib/icons/Fan.js +1 -1
- package/lib/icons/Fan.js.map +1 -1
- package/lib/icons/FanOutline.js +1 -1
- package/lib/icons/FanOutline.js.map +1 -1
- package/lib/icons/Info.js +1 -1
- package/lib/icons/Info.js.map +1 -1
- package/lib/icons/InfoBlue.js +1 -1
- package/lib/icons/InfoBlue.js.map +1 -1
- package/lib/icons/InfoDark.js +1 -1
- package/lib/icons/InfoDark.js.map +1 -1
- package/lib/icons/LockLocked.js +1 -1
- package/lib/icons/LockLocked.js.map +1 -1
- package/lib/icons/LockUnlocked.js +1 -1
- package/lib/icons/LockUnlocked.js.map +1 -1
- package/lib/icons/NoiseLevels.js +1 -1
- package/lib/icons/NoiseLevels.js.map +1 -1
- package/lib/icons/NoiseLevelsRed.js +1 -1
- package/lib/icons/NoiseLevelsRed.js.map +1 -1
- package/lib/icons/Off.js +1 -1
- package/lib/icons/Off.js.map +1 -1
- package/lib/icons/OnlineStatusAccountOffline.js +1 -1
- package/lib/icons/OnlineStatusAccountOffline.js.map +1 -1
- package/lib/icons/OnlineStatusDeviceOffline.js +1 -1
- package/lib/icons/OnlineStatusDeviceOffline.js.map +1 -1
- package/lib/icons/OnlineStatusOnline.js +1 -1
- package/lib/icons/OnlineStatusOnline.js.map +1 -1
- package/lib/icons/RadioChecked.js +1 -1
- package/lib/icons/RadioChecked.js.map +1 -1
- package/lib/icons/RadioUnchecked.js +1 -1
- package/lib/icons/RadioUnchecked.js.map +1 -1
- package/lib/icons/Seam.js +1 -1
- package/lib/icons/Seam.js.map +1 -1
- package/lib/icons/Search.js +1 -1
- package/lib/icons/Search.js.map +1 -1
- package/lib/icons/TemperatureAdd.js +1 -1
- package/lib/icons/TemperatureAdd.js.map +1 -1
- package/lib/icons/TemperatureSubtract.js +1 -1
- package/lib/icons/TemperatureSubtract.js.map +1 -1
- package/lib/icons/ThermostatCool.js +1 -1
- package/lib/icons/ThermostatCool.js.map +1 -1
- package/lib/icons/ThermostatCoolLarge.js +1 -1
- package/lib/icons/ThermostatCoolLarge.js.map +1 -1
- package/lib/icons/ThermostatHeat.js +1 -1
- package/lib/icons/ThermostatHeat.js.map +1 -1
- package/lib/icons/ThermostatHeatCool.js +1 -1
- package/lib/icons/ThermostatHeatCool.js.map +1 -1
- package/lib/icons/ThermostatHeatLarge.js +1 -1
- package/lib/icons/ThermostatHeatLarge.js.map +1 -1
- package/lib/icons/ThermostatOff.js +1 -1
- package/lib/icons/ThermostatOff.js.map +1 -1
- package/lib/icons/TriangleWarning.js +1 -1
- package/lib/icons/TriangleWarning.js.map +1 -1
- package/lib/icons/TriangleWarningOutline.js +1 -1
- package/lib/icons/TriangleWarningOutline.js.map +1 -1
- package/lib/seam/components/AccessCodeDetails/AccessCodeDetails.js +1 -1
- package/lib/seam/components/AccessCodeDetails/AccessCodeDetails.js.map +1 -1
- package/lib/seam/components/AccessCodeDetails/AccessCodeDevice.js +1 -1
- package/lib/seam/components/AccessCodeDetails/AccessCodeDevice.js.map +1 -1
- package/lib/seam/components/AccessCodeTable/AccessCodeTable.d.ts +1 -1
- package/lib/seam/components/AccessCodeTable/AccessCodeTable.js +11 -2
- package/lib/seam/components/AccessCodeTable/AccessCodeTable.js.map +1 -1
- package/lib/seam/components/DeviceDetails/DeviceInfo.js +1 -1
- package/lib/seam/components/DeviceDetails/DeviceInfo.js.map +1 -1
- package/lib/seam/components/DeviceDetails/LockDeviceDetails.js +3 -3
- package/lib/seam/components/DeviceDetails/LockDeviceDetails.js.map +1 -1
- package/lib/seam/locks/lock-device.js +9 -1
- package/lib/seam/locks/lock-device.js.map +1 -1
- package/lib/ui/Snackbar/Snackbar.js +1 -1
- package/lib/ui/Snackbar/Snackbar.js.map +1 -1
- package/lib/ui/device/BatteryStatusIndicator.js +4 -4
- package/lib/ui/device/BatteryStatusIndicator.js.map +1 -1
- package/lib/ui/device/LockStatus.js +3 -0
- package/lib/ui/device/LockStatus.js.map +1 -1
- package/lib/ui/device/OnlineStatus.js +3 -3
- package/lib/ui/device/OnlineStatus.js.map +1 -1
- package/lib/ui/thermostat/ClimateModeMenu.js +1 -1
- package/lib/ui/thermostat/ClimateModeMenu.js.map +1 -1
- package/lib/ui/thermostat/ClimateSettingStatus.js +7 -1
- package/lib/ui/thermostat/ClimateSettingStatus.js.map +1 -1
- package/lib/ui/thermostat/TemperatureControlGroup.js +1 -1
- package/lib/ui/thermostat/TemperatureControlGroup.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +2 -2
- package/src/lib/icons/AccessCodeKey.tsx +3 -2
- package/src/lib/icons/Add.tsx +3 -2
- package/src/lib/icons/ArrowBack.tsx +3 -2
- package/src/lib/icons/ArrowRestart.tsx +3 -2
- package/src/lib/icons/ArrowRight.tsx +3 -2
- package/src/lib/icons/BatteryLevelCritical.tsx +3 -2
- package/src/lib/icons/BatteryLevelFull.tsx +3 -2
- package/src/lib/icons/BatteryLevelHigh.tsx +3 -2
- package/src/lib/icons/BatteryLevelLow.tsx +3 -2
- package/src/lib/icons/BatteryLevelWired.tsx +3 -2
- package/src/lib/icons/Bee.tsx +3 -2
- package/src/lib/icons/Check.tsx +3 -2
- package/src/lib/icons/CheckBlack.tsx +3 -2
- package/src/lib/icons/CheckGreen.tsx +3 -2
- package/src/lib/icons/CheckboxBlank.tsx +3 -2
- package/src/lib/icons/CheckboxFilled.tsx +3 -2
- package/src/lib/icons/ChevronDown.tsx +3 -2
- package/src/lib/icons/ChevronRight.tsx +3 -2
- package/src/lib/icons/ChevronWide.tsx +3 -2
- package/src/lib/icons/ClimateSettingSchedule.tsx +3 -2
- package/src/lib/icons/Clock.tsx +3 -2
- package/src/lib/icons/Close.tsx +3 -2
- package/src/lib/icons/CloseWhite.tsx +3 -2
- package/src/lib/icons/Copy.tsx +3 -2
- package/src/lib/icons/DotsEllipsisMore.tsx +3 -2
- package/src/lib/icons/Edit.tsx +3 -2
- package/src/lib/icons/ExclamationCircle.tsx +3 -2
- package/src/lib/icons/ExclamationCircleOutline.tsx +3 -2
- package/src/lib/icons/Fan.tsx +3 -2
- package/src/lib/icons/FanOutline.tsx +3 -2
- package/src/lib/icons/Info.tsx +3 -2
- package/src/lib/icons/InfoBlue.tsx +3 -2
- package/src/lib/icons/InfoDark.tsx +3 -2
- package/src/lib/icons/LockLocked.tsx +3 -2
- package/src/lib/icons/LockUnlocked.tsx +3 -2
- package/src/lib/icons/NoiseLevels.tsx +3 -2
- package/src/lib/icons/NoiseLevelsRed.tsx +3 -2
- package/src/lib/icons/Off.tsx +3 -2
- package/src/lib/icons/OnlineStatusAccountOffline.tsx +3 -2
- package/src/lib/icons/OnlineStatusDeviceOffline.tsx +3 -2
- package/src/lib/icons/OnlineStatusOnline.tsx +3 -2
- package/src/lib/icons/RadioChecked.tsx +3 -2
- package/src/lib/icons/RadioUnchecked.tsx +3 -2
- package/src/lib/icons/Seam.tsx +3 -2
- package/src/lib/icons/Search.tsx +3 -2
- package/src/lib/icons/TemperatureAdd.tsx +3 -2
- package/src/lib/icons/TemperatureSubtract.tsx +3 -2
- package/src/lib/icons/ThermostatCool.tsx +3 -2
- package/src/lib/icons/ThermostatCoolLarge.tsx +3 -2
- package/src/lib/icons/ThermostatHeat.tsx +3 -2
- package/src/lib/icons/ThermostatHeatCool.tsx +3 -2
- package/src/lib/icons/ThermostatHeatLarge.tsx +3 -2
- package/src/lib/icons/ThermostatOff.tsx +3 -2
- package/src/lib/icons/TriangleWarning.tsx +3 -2
- package/src/lib/icons/TriangleWarningOutline.tsx +3 -2
- package/src/lib/seam/components/AccessCodeDetails/AccessCodeDetails.tsx +2 -2
- package/src/lib/seam/components/AccessCodeDetails/AccessCodeDevice.tsx +1 -1
- package/src/lib/seam/components/AccessCodeTable/AccessCodeTable.tsx +19 -8
- package/src/lib/seam/components/DeviceDetails/DeviceInfo.tsx +3 -1
- package/src/lib/seam/components/DeviceDetails/LockDeviceDetails.tsx +27 -20
- package/src/lib/seam/locks/lock-device.ts +11 -2
- package/src/lib/ui/Snackbar/Snackbar.tsx +4 -1
- package/src/lib/ui/device/BatteryStatusIndicator.tsx +4 -4
- package/src/lib/ui/device/LockStatus.tsx +4 -0
- package/src/lib/ui/device/OnlineStatus.tsx +3 -3
- package/src/lib/ui/thermostat/ClimateModeMenu.tsx +1 -1
- package/src/lib/ui/thermostat/ClimateSettingStatus.tsx +10 -1
- package/src/lib/ui/thermostat/TemperatureControlGroup.tsx +2 -2
- package/src/lib/version.ts +1 -1
- package/src/styles/_access-code-details.scss +2 -2
- package/src/styles/_alert.scss +1 -0
- package/src/styles/_buttons.scss +6 -8
- package/src/styles/_checkbox.scss +1 -0
- package/src/styles/_device-details.scss +1 -1
- package/src/styles/_icons.scss +2 -0
- package/src/styles/_inputs.scss +1 -1
- package/src/styles/_layout.scss +2 -0
- package/src/styles/_radio-field.scss +1 -0
- package/src/styles/_seam-table.scss +4 -3
- package/src/styles/_snackbar.scss +6 -0
- package/src/styles/_supported-device-table-manufacturer-keys.scss +1 -0
- package/src/styles/_supported-device-table.scss +1 -0
- package/src/styles/_tables.scss +3 -2
- package/src/styles/_thermostat.scss +26 -0
- package/src/styles/_typography.scss +7 -0
|
@@ -7,9 +7,10 @@ export function ThermostatOffIcon(props: SVGProps<SVGSVGElement>): JSX.Element {
|
|
|
7
7
|
return (
|
|
8
8
|
<svg
|
|
9
9
|
xmlns='http://www.w3.org/2000/svg'
|
|
10
|
-
width=
|
|
11
|
-
height=
|
|
10
|
+
width='1em'
|
|
11
|
+
height='1em'
|
|
12
12
|
fill='none'
|
|
13
|
+
viewBox='0 0 14 14'
|
|
13
14
|
{...props}
|
|
14
15
|
>
|
|
15
16
|
<path
|
|
@@ -9,9 +9,10 @@ export function TriangleWarningOutlineIcon(
|
|
|
9
9
|
return (
|
|
10
10
|
<svg
|
|
11
11
|
xmlns='http://www.w3.org/2000/svg'
|
|
12
|
-
width=
|
|
13
|
-
height=
|
|
12
|
+
width='1em'
|
|
13
|
+
height='1em'
|
|
14
14
|
fill='none'
|
|
15
|
+
viewBox='0 0 24 24'
|
|
15
16
|
{...props}
|
|
16
17
|
>
|
|
17
18
|
<path fill='#FF9800' d='m12 6.49 7.53 13.01H4.47zm0-3.99-11 19h22z' />
|
|
@@ -217,7 +217,7 @@ export function AccessCodeDetails({
|
|
|
217
217
|
</div>
|
|
218
218
|
{(!disableEditAccessCode || !disableDeleteAccessCode) && (
|
|
219
219
|
<div className='seam-actions'>
|
|
220
|
-
{!disableEditAccessCode && (
|
|
220
|
+
{!disableEditAccessCode && !accessCode.is_offline_access_code && (
|
|
221
221
|
<Button
|
|
222
222
|
size='small'
|
|
223
223
|
onClick={handleEdit}
|
|
@@ -226,7 +226,7 @@ export function AccessCodeDetails({
|
|
|
226
226
|
{t.editCode}
|
|
227
227
|
</Button>
|
|
228
228
|
)}
|
|
229
|
-
{!disableDeleteAccessCode && (
|
|
229
|
+
{!disableDeleteAccessCode && !accessCode.is_offline_access_code && (
|
|
230
230
|
<Button
|
|
231
231
|
size='small'
|
|
232
232
|
onClick={handleDelete}
|
|
@@ -4,6 +4,7 @@ import { useCallback, useEffect, useMemo, useState } from 'react'
|
|
|
4
4
|
|
|
5
5
|
import { compareByCreatedAtDesc } from 'lib/dates.js'
|
|
6
6
|
import { AddIcon } from 'lib/icons/Add.js'
|
|
7
|
+
import { useDevice } from 'lib/index.js'
|
|
7
8
|
import { useAccessCodes } from 'lib/seam/access-codes/use-access-codes.js'
|
|
8
9
|
import { NestedAccessCodeDetails } from 'lib/seam/components/AccessCodeDetails/AccessCodeDetails.js'
|
|
9
10
|
import {
|
|
@@ -73,6 +74,10 @@ export function AccessCodeTable({
|
|
|
73
74
|
device_id: deviceId,
|
|
74
75
|
})
|
|
75
76
|
|
|
77
|
+
const { device } = useDevice({
|
|
78
|
+
device_id: deviceId,
|
|
79
|
+
})
|
|
80
|
+
|
|
76
81
|
const [selectedViewAccessCodeId, setSelectedViewAccessCodeId] = useState<
|
|
77
82
|
string | null
|
|
78
83
|
>(null)
|
|
@@ -128,6 +133,10 @@ export function AccessCodeTable({
|
|
|
128
133
|
}
|
|
129
134
|
}, [accessCodeResult])
|
|
130
135
|
|
|
136
|
+
if (device == null) {
|
|
137
|
+
return <></>
|
|
138
|
+
}
|
|
139
|
+
|
|
131
140
|
if (selectedEditAccessCodeId != null) {
|
|
132
141
|
return (
|
|
133
142
|
<NestedEditAccessCodeForm
|
|
@@ -214,14 +223,16 @@ export function AccessCodeTable({
|
|
|
214
223
|
) : (
|
|
215
224
|
<div className='seam-fragment' />
|
|
216
225
|
)}
|
|
217
|
-
{!disableCreateAccessCode &&
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
226
|
+
{!disableCreateAccessCode &&
|
|
227
|
+
(device.properties.online_access_codes_enabled === true ||
|
|
228
|
+
device.can_program_online_access_codes === true) && (
|
|
229
|
+
<IconButton
|
|
230
|
+
onClick={toggleAddAccessCodeForm}
|
|
231
|
+
className='seam-add-button'
|
|
232
|
+
>
|
|
233
|
+
<AddIcon />
|
|
234
|
+
</IconButton>
|
|
235
|
+
)}
|
|
225
236
|
</div>
|
|
226
237
|
<div className='seam-table-header-loading-wrap'>
|
|
227
238
|
<LoadingToast
|
|
@@ -32,7 +32,9 @@ export function DeviceInfo({
|
|
|
32
32
|
<DetailRow label={t.manufacturer}>
|
|
33
33
|
<div className='seam-detail-row-hstack'>
|
|
34
34
|
{device.properties.model.manufacturer_display_name}
|
|
35
|
-
{device.properties.manufacturer === 'ecobee' &&
|
|
35
|
+
{device.properties.manufacturer === 'ecobee' && (
|
|
36
|
+
<BeeIcon style={{ fontSize: '33px' }} />
|
|
37
|
+
)}
|
|
36
38
|
</div>
|
|
37
39
|
</DetailRow>
|
|
38
40
|
{!disableConnectedAccountInformation && (
|
|
@@ -99,8 +99,12 @@ export function LockDeviceDetails({
|
|
|
99
99
|
<div className='seam-properties'>
|
|
100
100
|
<span className='seam-label'>{t.status}:</span>{' '}
|
|
101
101
|
<OnlineStatus device={device} />
|
|
102
|
-
|
|
103
|
-
|
|
102
|
+
{device.properties.online && (
|
|
103
|
+
<>
|
|
104
|
+
<span className='seam-label'>{t.power}:</span>{' '}
|
|
105
|
+
<BatteryStatusIndicator device={device} />
|
|
106
|
+
</>
|
|
107
|
+
)}
|
|
104
108
|
<DeviceModel device={device} />
|
|
105
109
|
</div>
|
|
106
110
|
</div>
|
|
@@ -120,25 +124,28 @@ export function LockDeviceDetails({
|
|
|
120
124
|
</div>
|
|
121
125
|
|
|
122
126
|
<div className='seam-box'>
|
|
123
|
-
|
|
124
|
-
<div>
|
|
125
|
-
<
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
127
|
+
{device.properties.locked && device.properties.online && (
|
|
128
|
+
<div className='seam-content seam-lock-status'>
|
|
129
|
+
<div>
|
|
130
|
+
<span className='seam-label'>{t.lockStatus}</span>
|
|
131
|
+
<span className='seam-value'>{lockStatus}</span>
|
|
132
|
+
</div>
|
|
133
|
+
<div className='seam-right'>
|
|
134
|
+
{!disableLockUnlock &&
|
|
135
|
+
device.capabilities_supported.includes('lock') && (
|
|
136
|
+
<Button
|
|
137
|
+
size='small'
|
|
138
|
+
onClick={() => {
|
|
139
|
+
toggleLock.mutate(device)
|
|
140
|
+
}}
|
|
141
|
+
>
|
|
142
|
+
{toggleLockLabel}
|
|
143
|
+
</Button>
|
|
144
|
+
)}
|
|
145
|
+
</div>
|
|
140
146
|
</div>
|
|
141
|
-
|
|
147
|
+
)}
|
|
148
|
+
|
|
142
149
|
<AccessCodeLength
|
|
143
150
|
supportedCodeLengths={
|
|
144
151
|
device.properties?.supported_code_lengths ?? []
|
|
@@ -5,5 +5,14 @@ export type LockDevice = Omit<Device, 'properties'> & {
|
|
|
5
5
|
NonNullable<Required<Pick<Device['properties'], 'locked'>>>
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
export const isLockDevice = (device: Device): device is LockDevice =>
|
|
9
|
-
|
|
8
|
+
export const isLockDevice = (device: Device): device is LockDevice => {
|
|
9
|
+
return (
|
|
10
|
+
'locked' in device.properties ||
|
|
11
|
+
'can_remotely_lock' in device ||
|
|
12
|
+
'can_remotely_unlock' in device ||
|
|
13
|
+
'can_program_online_access_code' in device ||
|
|
14
|
+
'can_program_offline_access_code' in device ||
|
|
15
|
+
device.properties.online_access_codes_enabled === true ||
|
|
16
|
+
device.properties.offline_access_codes_enabled === true
|
|
17
|
+
)
|
|
18
|
+
}
|
|
@@ -67,7 +67,10 @@ export function Snackbar({
|
|
|
67
67
|
'seam-snackbar-visible': automaticVisibility ? !hidden : visible,
|
|
68
68
|
})}
|
|
69
69
|
>
|
|
70
|
-
<
|
|
70
|
+
<span className='seam-snackbar-icon-wrap'>
|
|
71
|
+
<SnackbarIcon variant={variant} />
|
|
72
|
+
</span>
|
|
73
|
+
|
|
71
74
|
<div className='seam-snackbar-message-wrap'>
|
|
72
75
|
<p className='seam-snackbar-message'>{message}</p>
|
|
73
76
|
</div>
|
|
@@ -34,7 +34,7 @@ function Content(props: {
|
|
|
34
34
|
if (status === 'full') {
|
|
35
35
|
return (
|
|
36
36
|
<>
|
|
37
|
-
<BatteryLevelFullIcon />
|
|
37
|
+
<BatteryLevelFullIcon style={{ fontSize: '24px' }} />
|
|
38
38
|
<span className='seam-status-text'>
|
|
39
39
|
{t.full}
|
|
40
40
|
<Percentage level={level} />
|
|
@@ -46,7 +46,7 @@ function Content(props: {
|
|
|
46
46
|
if (status === 'good') {
|
|
47
47
|
return (
|
|
48
48
|
<>
|
|
49
|
-
<BatteryLevelHighIcon />
|
|
49
|
+
<BatteryLevelHighIcon style={{ fontSize: '24px' }} />
|
|
50
50
|
<span className='seam-status-text'>
|
|
51
51
|
{t.high}
|
|
52
52
|
<Percentage level={level} />
|
|
@@ -58,7 +58,7 @@ function Content(props: {
|
|
|
58
58
|
if (status === 'low') {
|
|
59
59
|
return (
|
|
60
60
|
<>
|
|
61
|
-
<BatteryLevelLowIcon />
|
|
61
|
+
<BatteryLevelLowIcon style={{ fontSize: '24px' }} />
|
|
62
62
|
<span className='seam-status-text'>
|
|
63
63
|
{t.low}
|
|
64
64
|
<Percentage level={level} />
|
|
@@ -70,7 +70,7 @@ function Content(props: {
|
|
|
70
70
|
if (status === 'critical') {
|
|
71
71
|
return (
|
|
72
72
|
<>
|
|
73
|
-
<BatteryLevelCriticalIcon />
|
|
73
|
+
<BatteryLevelCriticalIcon style={{ fontSize: '24px' }} />
|
|
74
74
|
<span className='seam-text-danger'>
|
|
75
75
|
{t.critical}
|
|
76
76
|
<Percentage level={level} />
|
|
@@ -25,7 +25,7 @@ export function OnlineStatus(props: OnlineStatusProps): JSX.Element {
|
|
|
25
25
|
function AccountOfflineContent(): JSX.Element {
|
|
26
26
|
return (
|
|
27
27
|
<>
|
|
28
|
-
<OnlineStatusAccountOfflineIcon />
|
|
28
|
+
<OnlineStatusAccountOfflineIcon className='seam-font-24' />
|
|
29
29
|
<span className='seam-text-danger'>{t.accountOffline}</span>
|
|
30
30
|
</>
|
|
31
31
|
)
|
|
@@ -36,7 +36,7 @@ function AccountOnlineContent(props: { isOnline: boolean }): JSX.Element {
|
|
|
36
36
|
if (isOnline) {
|
|
37
37
|
return (
|
|
38
38
|
<>
|
|
39
|
-
<OnlineStatusOnlineIcon />
|
|
39
|
+
<OnlineStatusOnlineIcon className='seam-font-24' />
|
|
40
40
|
<span className='seam-status-text'>{t.online}</span>
|
|
41
41
|
</>
|
|
42
42
|
)
|
|
@@ -44,7 +44,7 @@ function AccountOnlineContent(props: { isOnline: boolean }): JSX.Element {
|
|
|
44
44
|
|
|
45
45
|
return (
|
|
46
46
|
<>
|
|
47
|
-
<OnlineStatusDeviceOfflineIcon />
|
|
47
|
+
<OnlineStatusDeviceOfflineIcon className='seam-font-24' />
|
|
48
48
|
<span className='seam-text-danger'>{t.deviceOffline}</span>
|
|
49
49
|
</>
|
|
50
50
|
)
|
|
@@ -25,7 +25,7 @@ export function ClimateModeMenu({
|
|
|
25
25
|
<div className='seam-climate-mode-menu-button-icon'>
|
|
26
26
|
<ModeIcon mode={mode} />
|
|
27
27
|
</div>
|
|
28
|
-
<ChevronDownIcon />
|
|
28
|
+
<ChevronDownIcon className='seam-climate-mode-menu-button-chevron' />
|
|
29
29
|
</button>
|
|
30
30
|
)}
|
|
31
31
|
verticalOffset={-180}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import classNames from 'classnames'
|
|
2
|
+
|
|
1
3
|
import { ThermostatCoolIcon } from 'lib/icons/ThermostatCool.js'
|
|
2
4
|
import { ThermostatHeatIcon } from 'lib/icons/ThermostatHeat.js'
|
|
3
5
|
import { ThermostatHeatCoolIcon } from 'lib/icons/ThermostatHeatCool.js'
|
|
@@ -46,7 +48,14 @@ function ClimateSettingIcon(props: {
|
|
|
46
48
|
const { mode } = props
|
|
47
49
|
|
|
48
50
|
return (
|
|
49
|
-
<div
|
|
51
|
+
<div
|
|
52
|
+
className={classNames('seam-climate-setting-status-icon', {
|
|
53
|
+
'seam-climate-setting-status-icon-cool': mode === 'cool',
|
|
54
|
+
'seam-climate-setting-status-icon-heat': mode === 'heat',
|
|
55
|
+
'seam-climate-setting-status-icon-heat-cool': mode === 'heat_cool',
|
|
56
|
+
'seam-climate-setting-status-icon-off': mode === 'off',
|
|
57
|
+
})}
|
|
58
|
+
>
|
|
50
59
|
{mode === 'cool' && <ThermostatCoolIcon />}
|
|
51
60
|
{mode === 'heat' && <ThermostatHeatIcon />}
|
|
52
61
|
{mode === 'heat_cool' && <ThermostatHeatCoolIcon />}
|
|
@@ -138,7 +138,7 @@ export function TemperatureControlGroup({
|
|
|
138
138
|
<div className='seam-temperature-control-group'>
|
|
139
139
|
{showHeat && (
|
|
140
140
|
<div className='seam-temperature-control-group-block'>
|
|
141
|
-
<ThermostatHeatLargeIcon />
|
|
141
|
+
<ThermostatHeatLargeIcon className='seam-temperature-control-group-block-thermostat-icon' />
|
|
142
142
|
<TemperatureControl
|
|
143
143
|
variant='heat'
|
|
144
144
|
value={heatValue}
|
|
@@ -151,7 +151,7 @@ export function TemperatureControlGroup({
|
|
|
151
151
|
|
|
152
152
|
{showCool && (
|
|
153
153
|
<div className='seam-temperature-control-group-block'>
|
|
154
|
-
<ThermostatCoolLargeIcon />
|
|
154
|
+
<ThermostatCoolLargeIcon className='seam-temperature-control-group-block-thermostat-icon' />
|
|
155
155
|
<TemperatureControl
|
|
156
156
|
variant='cool'
|
|
157
157
|
value={coolValue}
|
package/src/lib/version.ts
CHANGED
package/src/styles/_alert.scss
CHANGED
package/src/styles/_buttons.scss
CHANGED
|
@@ -11,17 +11,15 @@
|
|
|
11
11
|
line-height: 0;
|
|
12
12
|
width: 30px;
|
|
13
13
|
height: 30px;
|
|
14
|
+
font-size: 18px;
|
|
15
|
+
color: colors.$primary;
|
|
14
16
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
+
path {
|
|
18
|
+
fill: colors.$primary;
|
|
17
19
|
}
|
|
18
20
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
* {
|
|
23
|
-
fill: colors.$primary;
|
|
24
|
-
}
|
|
21
|
+
&:hover {
|
|
22
|
+
background: rgb(0 122 252 / 8%);
|
|
25
23
|
}
|
|
26
24
|
}
|
|
27
25
|
}
|
package/src/styles/_icons.scss
CHANGED
package/src/styles/_inputs.scss
CHANGED
package/src/styles/_layout.scss
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
top: 50%;
|
|
19
19
|
transform: translate(4px, -50%);
|
|
20
20
|
left: 0;
|
|
21
|
+
font-size: 24px;
|
|
21
22
|
cursor: pointer;
|
|
22
23
|
}
|
|
23
24
|
|
|
@@ -281,6 +282,7 @@
|
|
|
281
282
|
justify-content: center;
|
|
282
283
|
align-items: center;
|
|
283
284
|
transition: transform 0.2s ease-in-out;
|
|
285
|
+
font-size: 24px;
|
|
284
286
|
}
|
|
285
287
|
}
|
|
286
288
|
}
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
justify-content: center;
|
|
35
35
|
margin-right: 4px;
|
|
36
36
|
|
|
37
|
-
@media only screen and (width >=
|
|
37
|
+
@media only screen and (width >=768px) {
|
|
38
38
|
width: 40px;
|
|
39
39
|
margin-right: 4px;
|
|
40
40
|
}
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
display: flex;
|
|
61
61
|
flex-wrap: wrap;
|
|
62
62
|
|
|
63
|
-
@media only screen and (width >=
|
|
63
|
+
@media only screen and (width >=768px) {
|
|
64
64
|
font-size: 14px;
|
|
65
65
|
}
|
|
66
66
|
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
align-items: center;
|
|
83
83
|
justify-content: center;
|
|
84
84
|
|
|
85
|
-
@media only screen and (width >=
|
|
85
|
+
@media only screen and (width >=768px) {
|
|
86
86
|
margin-right: 12px;
|
|
87
87
|
}
|
|
88
88
|
}
|
|
@@ -92,6 +92,7 @@
|
|
|
92
92
|
justify-content: center;
|
|
93
93
|
align-items: center;
|
|
94
94
|
margin-right: 8px;
|
|
95
|
+
font-size: 25px;
|
|
95
96
|
}
|
|
96
97
|
}
|
|
97
98
|
|
|
@@ -40,6 +40,11 @@
|
|
|
40
40
|
visibility: visible;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
.seam-snackbar-icon-wrap {
|
|
44
|
+
font-size: 24px;
|
|
45
|
+
display: inline-flex;
|
|
46
|
+
}
|
|
47
|
+
|
|
43
48
|
.seam-snackbar-message-wrap {
|
|
44
49
|
display: flex;
|
|
45
50
|
max-width: 300px;
|
|
@@ -101,6 +106,7 @@
|
|
|
101
106
|
padding: 0;
|
|
102
107
|
cursor: pointer;
|
|
103
108
|
transition: opacity 0.2s ease-in-out;
|
|
109
|
+
font-size: 24px;
|
|
104
110
|
|
|
105
111
|
&:hover {
|
|
106
112
|
opacity: 0.75;
|
package/src/styles/_tables.scss
CHANGED
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
padding: 0;
|
|
89
89
|
|
|
90
90
|
svg {
|
|
91
|
-
|
|
91
|
+
font-size: 20px;
|
|
92
92
|
|
|
93
93
|
* {
|
|
94
94
|
fill: colors.$text-gray-1;
|
|
@@ -107,7 +107,8 @@
|
|
|
107
107
|
line-height: 134%;
|
|
108
108
|
|
|
109
109
|
svg {
|
|
110
|
-
|
|
110
|
+
font-size: 19px;
|
|
111
|
+
margin: 3px 4px;
|
|
111
112
|
}
|
|
112
113
|
|
|
113
114
|
&.seam-clickable {
|
|
@@ -28,6 +28,10 @@
|
|
|
28
28
|
align-items: center;
|
|
29
29
|
flex-direction: row;
|
|
30
30
|
gap: 8px;
|
|
31
|
+
|
|
32
|
+
.seam-temperature-control-group-block-thermostat-icon {
|
|
33
|
+
font-size: 24px;
|
|
34
|
+
}
|
|
31
35
|
}
|
|
32
36
|
}
|
|
33
37
|
|
|
@@ -89,6 +93,10 @@
|
|
|
89
93
|
align-items: center;
|
|
90
94
|
flex-direction: row;
|
|
91
95
|
gap: 7px;
|
|
96
|
+
|
|
97
|
+
svg {
|
|
98
|
+
font-size: 20px;
|
|
99
|
+
}
|
|
92
100
|
}
|
|
93
101
|
|
|
94
102
|
.seam-temperature-range-wrap {
|
|
@@ -330,6 +338,11 @@
|
|
|
330
338
|
display: flex;
|
|
331
339
|
justify-content: center;
|
|
332
340
|
align-items: center;
|
|
341
|
+
font-size: 14px;
|
|
342
|
+
|
|
343
|
+
.seam-climate-setting-status-icon-heat-cool {
|
|
344
|
+
font-size: 19px;
|
|
345
|
+
}
|
|
333
346
|
}
|
|
334
347
|
}
|
|
335
348
|
|
|
@@ -541,6 +554,10 @@
|
|
|
541
554
|
cursor: pointer;
|
|
542
555
|
transition: 0.2s ease;
|
|
543
556
|
|
|
557
|
+
svg {
|
|
558
|
+
font-size: 20px;
|
|
559
|
+
}
|
|
560
|
+
|
|
544
561
|
&:hover {
|
|
545
562
|
border-color: colors.$text-gray-2;
|
|
546
563
|
}
|
|
@@ -556,6 +573,10 @@
|
|
|
556
573
|
align-items: center;
|
|
557
574
|
flex-direction: row;
|
|
558
575
|
gap: 10px;
|
|
576
|
+
|
|
577
|
+
svg {
|
|
578
|
+
font-size: 22px;
|
|
579
|
+
}
|
|
559
580
|
}
|
|
560
581
|
|
|
561
582
|
.seam-fan-mode-menu-button-text {
|
|
@@ -594,6 +615,10 @@
|
|
|
594
615
|
background-color: colors.$bg-c;
|
|
595
616
|
border-color: colors.$text-gray-2;
|
|
596
617
|
}
|
|
618
|
+
|
|
619
|
+
.seam-climate-mode-menu-button-chevron {
|
|
620
|
+
font-size: 20px;
|
|
621
|
+
}
|
|
597
622
|
}
|
|
598
623
|
|
|
599
624
|
.seam-climate-mode-menu-button-icon {
|
|
@@ -602,6 +627,7 @@
|
|
|
602
627
|
display: flex;
|
|
603
628
|
justify-content: center;
|
|
604
629
|
align-items: center;
|
|
630
|
+
font-size: 18px;
|
|
605
631
|
}
|
|
606
632
|
}
|
|
607
633
|
|
|
@@ -55,6 +55,12 @@
|
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
+
@mixin font-size {
|
|
59
|
+
.seam-font-24 {
|
|
60
|
+
font-size: 24px;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
58
64
|
@mixin all {
|
|
59
65
|
@include headers;
|
|
60
66
|
@include caption;
|
|
@@ -62,4 +68,5 @@
|
|
|
62
68
|
@include font-family;
|
|
63
69
|
@include defaults;
|
|
64
70
|
@include truncated-text;
|
|
71
|
+
@include font-size;
|
|
65
72
|
}
|