@seamapi/react 4.3.0 → 4.4.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 +7369 -7159
- package/dist/elements.js.map +1 -1
- package/lib/seam/components/AccessCodeTable/AccessCodeMainIcon.js +6 -3
- package/lib/seam/components/AccessCodeTable/AccessCodeMainIcon.js.map +1 -1
- package/lib/seam/components/DeviceDetails/LockDeviceDetails.js +2 -2
- package/lib/seam/components/DeviceDetails/LockDeviceDetails.js.map +1 -1
- package/lib/seam/components/DeviceDetails/NoiseSensorDeviceDetails.js +2 -2
- package/lib/seam/components/DeviceDetails/NoiseSensorDeviceDetails.js.map +1 -1
- package/lib/{seam/components/SeamEditableDeviceName/SeamEditableDeviceName.d.ts → ui/device/EditableDeviceName.d.ts} +3 -2
- package/lib/{seam/components/SeamEditableDeviceName/SeamEditableDeviceName.js → ui/device/EditableDeviceName.js} +28 -28
- package/lib/ui/device/EditableDeviceName.js.map +1 -0
- package/lib/ui/thermostat/TemperatureControlGroup.js +3 -3
- package/lib/ui/thermostat/TemperatureControlGroup.js.map +1 -1
- package/lib/ui/thermostat/ThermostatCard.js +2 -2
- package/lib/ui/thermostat/ThermostatCard.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +4 -4
- package/src/lib/seam/components/AccessCodeTable/AccessCodeMainIcon.tsx +7 -3
- package/src/lib/seam/components/DeviceDetails/LockDeviceDetails.tsx +2 -2
- package/src/lib/seam/components/DeviceDetails/NoiseSensorDeviceDetails.tsx +2 -2
- package/src/lib/{seam/components/SeamEditableDeviceName/SeamEditableDeviceName.tsx → ui/device/EditableDeviceName.tsx} +50 -45
- package/src/lib/ui/thermostat/TemperatureControlGroup.tsx +4 -4
- package/src/lib/ui/thermostat/ThermostatCard.tsx +2 -2
- package/src/lib/version.ts +1 -1
- package/lib/icons/ThermostatCoolLarge.d.ts +0 -2
- package/lib/icons/ThermostatCoolLarge.js +0 -7
- package/lib/icons/ThermostatCoolLarge.js.map +0 -1
- package/lib/icons/ThermostatHeatLarge.d.ts +0 -2
- package/lib/icons/ThermostatHeatLarge.js +0 -5
- package/lib/icons/ThermostatHeatLarge.js.map +0 -1
- package/lib/seam/components/SeamEditableDeviceName/SeamEditableDeviceName.js.map +0 -1
- package/src/lib/icons/ThermostatCoolLarge.tsx +0 -39
- package/src/lib/icons/ThermostatHeatLarge.tsx +0 -24
|
@@ -13,12 +13,15 @@ export function AccessCodeMainIcon({ accessCode, }) {
|
|
|
13
13
|
? `${warningCount} ${t.codeIssues}`
|
|
14
14
|
: `${warningCount} ${t.codeIssue}`;
|
|
15
15
|
if (errorCount > 0) {
|
|
16
|
-
return (_jsxs(_Fragment, { children: [_jsx("div", { className: 'seam-issue-icon-wrap seam-md-invisible', title: errorIconTitle, children: _jsx(ExclamationCircleOutlineIcon, {}) }), _jsx("div", { className: 'seam-invisible seam-md-flex', children: _jsx(
|
|
16
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: 'seam-issue-icon-wrap seam-md-invisible', title: errorIconTitle, children: _jsx(ExclamationCircleOutlineIcon, {}) }), _jsx("div", { className: 'seam-invisible seam-md-flex', children: _jsx(KeyIcon, {}) })] }));
|
|
17
17
|
}
|
|
18
18
|
if (errorCount === 0 && warningCount > 0) {
|
|
19
|
-
return (_jsxs(_Fragment, { children: [_jsx("div", { className: 'seam-issue-icon-wrap seam-md-invisible', title: warningIconTitle, children: _jsx(TriangleWarningOutlineIcon, {}) }), _jsx("div", { className: 'seam-invisible seam-md-flex', children: _jsx(
|
|
19
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: 'seam-issue-icon-wrap seam-md-invisible', title: warningIconTitle, children: _jsx(TriangleWarningOutlineIcon, {}) }), _jsx("div", { className: 'seam-invisible seam-md-flex', children: _jsx(KeyIcon, {}) })] }));
|
|
20
20
|
}
|
|
21
|
-
return (_jsx("div", { className: 'seam-issue-icon-wrap', children: _jsx(
|
|
21
|
+
return (_jsx("div", { className: 'seam-issue-icon-wrap', children: _jsx(KeyIcon, {}) }));
|
|
22
|
+
}
|
|
23
|
+
function KeyIcon() {
|
|
24
|
+
return _jsx(AccessCodeKeyIcon, { style: { fontSize: '24px' } });
|
|
22
25
|
}
|
|
23
26
|
const t = {
|
|
24
27
|
codeIssue: 'code issue',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessCodeMainIcon.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/AccessCodeTable/AccessCodeMainIcon.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAA;AACpF,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAA;AAMhF,MAAM,UAAU,kBAAkB,CAAC,EACjC,UAAU,GACc;IACxB,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAA;IAC3C,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAA;IAC/C,MAAM,QAAQ,GAAG,UAAU,KAAK,CAAC,IAAI,UAAU,GAAG,CAAC,CAAA;IACnD,MAAM,cAAc,GAAG,QAAQ;QAC7B,CAAC,CAAC,GAAG,UAAU,IAAI,CAAC,CAAC,UAAU,EAAE;QACjC,CAAC,CAAC,GAAG,UAAU,IAAI,CAAC,CAAC,SAAS,EAAE,CAAA;IAClC,MAAM,gBAAgB,GAAG,QAAQ;QAC/B,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,CAAC,UAAU,EAAE;QACnC,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,CAAC,SAAS,EAAE,CAAA;IAEpC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,CACL,8BACE,cACE,SAAS,EAAC,wCAAwC,EAClD,KAAK,EAAE,cAAc,YAErB,KAAC,4BAA4B,KAAG,GAC5B,EACN,cAAK,SAAS,EAAC,6BAA6B,YAC1C,KAAC,
|
|
1
|
+
{"version":3,"file":"AccessCodeMainIcon.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/AccessCodeTable/AccessCodeMainIcon.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAA;AACpF,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAA;AAMhF,MAAM,UAAU,kBAAkB,CAAC,EACjC,UAAU,GACc;IACxB,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAA;IAC3C,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAA;IAC/C,MAAM,QAAQ,GAAG,UAAU,KAAK,CAAC,IAAI,UAAU,GAAG,CAAC,CAAA;IACnD,MAAM,cAAc,GAAG,QAAQ;QAC7B,CAAC,CAAC,GAAG,UAAU,IAAI,CAAC,CAAC,UAAU,EAAE;QACjC,CAAC,CAAC,GAAG,UAAU,IAAI,CAAC,CAAC,SAAS,EAAE,CAAA;IAClC,MAAM,gBAAgB,GAAG,QAAQ;QAC/B,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,CAAC,UAAU,EAAE;QACnC,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,CAAC,SAAS,EAAE,CAAA;IAEpC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,CACL,8BACE,cACE,SAAS,EAAC,wCAAwC,EAClD,KAAK,EAAE,cAAc,YAErB,KAAC,4BAA4B,KAAG,GAC5B,EACN,cAAK,SAAS,EAAC,6BAA6B,YAC1C,KAAC,OAAO,KAAG,GACP,IACL,CACJ,CAAA;IACH,CAAC;IAED,IAAI,UAAU,KAAK,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACzC,OAAO,CACL,8BACE,cACE,SAAS,EAAC,wCAAwC,EAClD,KAAK,EAAE,gBAAgB,YAEvB,KAAC,0BAA0B,KAAG,GAC1B,EACN,cAAK,SAAS,EAAC,6BAA6B,YAC1C,KAAC,OAAO,KAAG,GACP,IACL,CACJ,CAAA;IACH,CAAC;IAED,OAAO,CACL,cAAK,SAAS,EAAC,sBAAsB,YACnC,KAAC,OAAO,KAAG,GACP,CACP,CAAA;AACH,CAAC;AAED,SAAS,OAAO;IACd,OAAO,KAAC,iBAAiB,IAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAI,CAAA;AAC3D,CAAC;AAED,MAAM,CAAC,GAAG;IACR,SAAS,EAAE,YAAY;IACvB,UAAU,EAAE,aAAa;CAC1B,CAAA"}
|
|
@@ -5,13 +5,13 @@ import { useAccessCodes } from '../../../../lib/seam/access-codes/use-access-cod
|
|
|
5
5
|
import { NestedAccessCodeTable } from '../../../../lib/seam/components/AccessCodeTable/AccessCodeTable.js';
|
|
6
6
|
import { DeviceInfo } from '../../../../lib/seam/components/DeviceDetails/DeviceInfo.js';
|
|
7
7
|
import { DeviceModel } from '../../../../lib/seam/components/DeviceDetails/DeviceModel.js';
|
|
8
|
-
import { SeamEditableDeviceName } from '../../../../lib/seam/components/SeamEditableDeviceName/SeamEditableDeviceName.js';
|
|
9
8
|
import { deviceErrorFilter, deviceWarningFilter } from '../../../../lib/seam/filters.js';
|
|
10
9
|
import { useToggleLock } from '../../../../lib/seam/locks/use-toggle-lock.js';
|
|
11
10
|
import { Alerts } from '../../../../lib/ui/Alert/Alerts.js';
|
|
12
11
|
import { Button } from '../../../../lib/ui/Button.js';
|
|
13
12
|
import { BatteryStatusIndicator } from '../../../../lib/ui/device/BatteryStatusIndicator.js';
|
|
14
13
|
import { DeviceImage } from '../../../../lib/ui/device/DeviceImage.js';
|
|
14
|
+
import { EditableDeviceName } from '../../../../lib/ui/device/EditableDeviceName.js';
|
|
15
15
|
import { OnlineStatus } from '../../../../lib/ui/device/OnlineStatus.js';
|
|
16
16
|
import { ContentHeader } from '../../../../lib/ui/layout/ContentHeader.js';
|
|
17
17
|
import { useToggle } from '../../../../lib/ui/use-toggle.js';
|
|
@@ -46,7 +46,7 @@ export function LockDeviceDetails({ device, errorFilter, warningFilter, disableL
|
|
|
46
46
|
message: warning.message,
|
|
47
47
|
})),
|
|
48
48
|
];
|
|
49
|
-
return (_jsxs("div", { className: classNames('seam-device-details', className), children: [_jsx(ContentHeader, { title: 'Device', onBack: onBack }), _jsxs("div", { className: 'seam-body', children: [_jsxs("div", { className: 'seam-summary', children: [_jsxs("div", { className: 'seam-content', children: [_jsx("div", { className: 'seam-image', children: _jsx(DeviceImage, { device: device }) }), _jsxs("div", { className: 'seam-info', children: [_jsx("span", { className: 'seam-label', children: t.device }), _jsx(
|
|
49
|
+
return (_jsxs("div", { className: classNames('seam-device-details', className), children: [_jsx(ContentHeader, { title: 'Device', onBack: onBack }), _jsxs("div", { className: 'seam-body', children: [_jsxs("div", { className: 'seam-summary', children: [_jsxs("div", { className: 'seam-content', children: [_jsx("div", { className: 'seam-image', children: _jsx(DeviceImage, { device: device }) }), _jsxs("div", { className: 'seam-info', children: [_jsx("span", { className: 'seam-label', children: t.device }), _jsx(EditableDeviceName, { tagName: 'h4', value: device.properties.name, className: 'seam-device-name', onEdit: onEditName }), _jsxs("div", { className: 'seam-properties', children: [_jsxs("span", { className: 'seam-label', children: [t.status, ":"] }), ' ', _jsx(OnlineStatus, { device: device }), device.properties.online && (_jsxs(_Fragment, { children: [_jsxs("span", { className: 'seam-label', children: [t.power, ":"] }), ' ', _jsx(BatteryStatusIndicator, { device: device })] })), _jsx(DeviceModel, { device: device })] })] })] }), _jsx(Alerts, { alerts: alerts, className: 'seam-alerts-space-top' })] }), _jsx("div", { className: 'seam-box', children: _jsxs("div", { className: 'seam-content seam-access-codes', onClick: toggleAccessCodesOpen, children: [_jsxs("span", { className: 'seam-value', children: [accessCodeCount, " ", t.accessCodes] }), _jsx(ChevronRightIcon, {})] }) }), _jsxs("div", { className: 'seam-box', children: [device.properties.locked && device.properties.online && (_jsxs("div", { className: 'seam-content seam-lock-status', children: [_jsxs("div", { children: [_jsx("span", { className: 'seam-label', children: t.lockStatus }), _jsx("span", { className: 'seam-value', children: lockStatus })] }), _jsx("div", { className: 'seam-right', children: !disableLockUnlock &&
|
|
50
50
|
device.capabilities_supported.includes('lock') && (_jsx(Button, { size: 'small', onClick: () => {
|
|
51
51
|
toggleLock.mutate(device);
|
|
52
52
|
}, children: toggleLockLabel })) })] })), _jsx(AccessCodeLength, { supportedCodeLengths: device.properties?.supported_code_lengths ?? [] })] }), _jsx(DeviceInfo, { device: device, disableConnectedAccountInformation: disableConnectedAccountInformation, disableResourceIds: disableResourceIds })] })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LockDeviceDetails.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/DeviceDetails/LockDeviceDetails.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAA;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAA;AAE9F,OAAO,EAAE,UAAU,EAAE,MAAM,iDAAiD,CAAA;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,kDAAkD,CAAA;AAC9E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"LockDeviceDetails.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/DeviceDetails/LockDeviceDetails.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,8 @@ import classNames from 'classnames';
|
|
|
3
3
|
import { useState } from 'react';
|
|
4
4
|
import { DeviceInfo } from '../../../../lib/seam/components/DeviceDetails/DeviceInfo.js';
|
|
5
5
|
import { DeviceModel } from '../../../../lib/seam/components/DeviceDetails/DeviceModel.js';
|
|
6
|
-
import { SeamEditableDeviceName } from '../../../../lib/seam/components/SeamEditableDeviceName/SeamEditableDeviceName.js';
|
|
7
6
|
import { DeviceImage } from '../../../../lib/ui/device/DeviceImage.js';
|
|
7
|
+
import { EditableDeviceName } from '../../../../lib/ui/device/EditableDeviceName.js';
|
|
8
8
|
import { NoiseLevelStatus } from '../../../../lib/ui/device/NoiseLevelStatus.js';
|
|
9
9
|
import { OnlineStatus } from '../../../../lib/ui/device/OnlineStatus.js';
|
|
10
10
|
import { ContentHeader } from '../../../../lib/ui/layout/ContentHeader.js';
|
|
@@ -13,7 +13,7 @@ import { NoiseThresholdsList } from '../../../../lib/ui/noise-sensor/NoiseThresh
|
|
|
13
13
|
import { TabSet } from '../../../../lib/ui/TabSet.js';
|
|
14
14
|
export function NoiseSensorDeviceDetails({ device, disableConnectedAccountInformation, disableResourceIds, onBack, className, onEditName, }) {
|
|
15
15
|
const [tab, setTab] = useState('details');
|
|
16
|
-
return (_jsx("div", { className: classNames('seam-device-details', className), children: _jsxs("div", { className: 'seam-body seam-body-no-margin', children: [_jsxs("div", { className: 'seam-contained-summary', children: [_jsx(ContentHeader, { title: t.noiseSensor, onBack: onBack, className: 'seam-content-header-contained' }), _jsx("div", { className: 'seam-summary', children: _jsxs("div", { className: 'seam-content', children: [_jsx("div", { className: 'seam-image', children: _jsx(DeviceImage, { device: device }) }), _jsxs("div", { className: 'seam-info', children: [_jsx("span", { className: 'seam-label', children: t.noiseSensor }), _jsx(
|
|
16
|
+
return (_jsx("div", { className: classNames('seam-device-details', className), children: _jsxs("div", { className: 'seam-body seam-body-no-margin', children: [_jsxs("div", { className: 'seam-contained-summary', children: [_jsx(ContentHeader, { title: t.noiseSensor, onBack: onBack, className: 'seam-content-header-contained' }), _jsx("div", { className: 'seam-summary', children: _jsxs("div", { className: 'seam-content', children: [_jsx("div", { className: 'seam-image', children: _jsx(DeviceImage, { device: device }) }), _jsxs("div", { className: 'seam-info', children: [_jsx("span", { className: 'seam-label', children: t.noiseSensor }), _jsx(EditableDeviceName, { onEdit: onEditName, tagName: 'h4', value: device.properties.name }), _jsxs("div", { className: 'seam-properties', children: [_jsxs("span", { className: 'seam-label', children: [t.status, ":"] }), ' ', _jsx(OnlineStatus, { device: device }), _jsx(NoiseLevelStatus, { device: device }), _jsx(DeviceModel, { device: device })] })] })] }) }), _jsx(TabSet, { tabs: ['details', 'activity'], tabTitles: {
|
|
17
17
|
details: t.details,
|
|
18
18
|
activity: t.activity,
|
|
19
19
|
}, activeTab: tab, onTabChange: (tab) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NoiseSensorDeviceDetails.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/DeviceDetails/NoiseSensorDeviceDetails.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAGhC,OAAO,EAAE,UAAU,EAAE,MAAM,iDAAiD,CAAA;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,kDAAkD,CAAA;
|
|
1
|
+
{"version":3,"file":"NoiseSensorDeviceDetails.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/DeviceDetails/NoiseSensorDeviceDetails.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { type HTMLAttributes } from 'react';
|
|
2
|
-
|
|
2
|
+
type EditableDeviceNameProps = {
|
|
3
3
|
onEdit?: (newName: string) => void;
|
|
4
4
|
editable?: boolean;
|
|
5
5
|
tagName?: string;
|
|
6
6
|
value: string;
|
|
7
7
|
} & HTMLAttributes<HTMLElement>;
|
|
8
|
-
export declare function
|
|
8
|
+
export declare function EditableDeviceName({ onEdit, editable, tagName, value, ...props }: EditableDeviceNameProps): JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -1,33 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import classNames from 'classnames';
|
|
3
3
|
import { useCallback, useState, } from 'react';
|
|
4
|
-
import { CheckIcon } from '
|
|
5
|
-
import { CloseIcon } from '
|
|
6
|
-
import { EditIcon } from '
|
|
7
|
-
function
|
|
8
|
-
return (_jsx("button", { ...props, className: classNames('seam-editable-device-name-icon-button', props.className), children: props.children }));
|
|
9
|
-
}
|
|
10
|
-
const fixName = (name) => {
|
|
11
|
-
return name.replace(/\s+/g, ' ').trim();
|
|
12
|
-
};
|
|
13
|
-
const isValidName = (name) => {
|
|
14
|
-
if (name.length < 2) {
|
|
15
|
-
return {
|
|
16
|
-
type: 'error',
|
|
17
|
-
message: 'Name must be at least 2 characters long',
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
if (name.length > 64) {
|
|
21
|
-
return {
|
|
22
|
-
type: 'error',
|
|
23
|
-
message: 'Name must be at most 64 characters long',
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
return {
|
|
27
|
-
type: 'success',
|
|
28
|
-
};
|
|
29
|
-
};
|
|
30
|
-
export function SeamEditableDeviceName({ onEdit, editable = true, tagName, value, ...props }) {
|
|
4
|
+
import { CheckIcon } from '../../../lib/icons/Check.js';
|
|
5
|
+
import { CloseIcon } from '../../../lib/icons/Close.js';
|
|
6
|
+
import { EditIcon } from '../../../lib/icons/Edit.js';
|
|
7
|
+
export function EditableDeviceName({ onEdit, editable = true, tagName, value, ...props }) {
|
|
31
8
|
const [editing, setEditing] = useState(false);
|
|
32
9
|
const [errorText, setErrorText] = useState(null);
|
|
33
10
|
const [currentValue, setCurrentValue] = useState(value);
|
|
@@ -82,4 +59,27 @@ function ActionButtons(props) {
|
|
|
82
59
|
}
|
|
83
60
|
return (_jsx(IconButton, { onClick: props.onEdit, children: _jsx(EditIcon, { width: '1em', height: '1em', viewBox: '0 0 24 24' }) }));
|
|
84
61
|
}
|
|
85
|
-
|
|
62
|
+
function IconButton(props) {
|
|
63
|
+
return (_jsx("button", { ...props, className: classNames('seam-editable-device-name-icon-button', props.className), children: props.children }));
|
|
64
|
+
}
|
|
65
|
+
const fixName = (name) => {
|
|
66
|
+
return name.replace(/\s+/g, ' ').trim();
|
|
67
|
+
};
|
|
68
|
+
const isValidName = (name) => {
|
|
69
|
+
if (name.length < 2) {
|
|
70
|
+
return {
|
|
71
|
+
type: 'error',
|
|
72
|
+
message: 'Name must be at least 2 characters long',
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
if (name.length > 64) {
|
|
76
|
+
return {
|
|
77
|
+
type: 'error',
|
|
78
|
+
message: 'Name must be at most 64 characters long',
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
type: 'success',
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=EditableDeviceName.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditableDeviceName.js","sourceRoot":"","sources":["../../../src/lib/ui/device/EditableDeviceName.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useEffect, useMemo } from 'react';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { ThermostatCoolIcon } from '../../../lib/icons/ThermostatCool.js';
|
|
4
|
+
import { ThermostatHeatIcon } from '../../../lib/icons/ThermostatHeat.js';
|
|
5
5
|
import { getCoolBounds, getHeatBounds, getTemperatureBounds, } from '../../../lib/seam/thermostats/temperature-bounds.js';
|
|
6
6
|
import { TemperatureControl } from '../../../lib/ui/thermostat/TemperatureControl.js';
|
|
7
7
|
export function TemperatureControlGroup({ mode, heatValue, onHeatValueChange, coolValue, onCoolValueChange, delta = 5, minHeat = 60, maxHeat = 90, minCool = 60, maxCool = 90, }) {
|
|
@@ -74,6 +74,6 @@ export function TemperatureControlGroup({ mode, heatValue, onHeatValueChange, co
|
|
|
74
74
|
// This is done so that both sliders are operating on the same range of numbers
|
|
75
75
|
const heatCoolSliderMin = Math.min(minCool, minHeat);
|
|
76
76
|
const heatCoolSliderMax = Math.max(maxCool, maxHeat);
|
|
77
|
-
return (_jsxs("div", { className: 'seam-temperature-control-group', children: [showHeat && (_jsxs("div", { className: 'seam-temperature-control-group-block', children: [_jsx(
|
|
77
|
+
return (_jsxs("div", { className: 'seam-temperature-control-group', children: [showHeat && (_jsxs("div", { className: 'seam-temperature-control-group-block', children: [_jsx(ThermostatHeatIcon, { className: 'seam-temperature-control-group-block-thermostat-icon' }), _jsx(TemperatureControl, { variant: 'heat', value: heatValue, onChange: adjustHeat, min: mode === 'heat_cool' ? heatCoolSliderMin : minHeat, max: mode === 'heat_cool' ? heatCoolSliderMax : maxHeat })] })), showCool && (_jsxs("div", { className: 'seam-temperature-control-group-block', children: [_jsx(ThermostatCoolIcon, { className: 'seam-temperature-control-group-block-thermostat-icon' }), _jsx(TemperatureControl, { variant: 'cool', value: coolValue, onChange: adjustCool, min: mode === 'heat_cool' ? heatCoolSliderMin : minCool, max: mode === 'heat_cool' ? heatCoolSliderMax : maxCool })] }))] }));
|
|
78
78
|
}
|
|
79
79
|
//# sourceMappingURL=TemperatureControlGroup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TemperatureControlGroup.js","sourceRoot":"","sources":["../../../src/lib/ui/thermostat/TemperatureControlGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAEvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"TemperatureControlGroup.js","sourceRoot":"","sources":["../../../src/lib/ui/thermostat/TemperatureControlGroup.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,8 @@ import classNames from 'classnames';
|
|
|
3
3
|
import { useState } from 'react';
|
|
4
4
|
import { FanIcon } from '../../../lib/icons/Fan.js';
|
|
5
5
|
import { OffIcon } from '../../../lib/icons/Off.js';
|
|
6
|
-
import { SeamEditableDeviceName } from '../../../lib/seam/components/SeamEditableDeviceName/SeamEditableDeviceName.js';
|
|
7
6
|
import { DeviceImage } from '../../../lib/ui/device/DeviceImage.js';
|
|
7
|
+
import { EditableDeviceName } from '../../../lib/ui/device/EditableDeviceName.js';
|
|
8
8
|
import { ClimateSettingStatus } from '../../../lib/ui/thermostat/ClimateSettingStatus.js';
|
|
9
9
|
import { Temperature } from '../../../lib/ui/thermostat/Temperature.js';
|
|
10
10
|
export function ThermostatCard(props) {
|
|
@@ -18,7 +18,7 @@ function Content(props) {
|
|
|
18
18
|
};
|
|
19
19
|
const { temperature_fahrenheit: temperatureFahrenheit, temperature_celsius: temperatureCelsius, current_climate_setting: currentClimateSetting, is_fan_running: isFanRunning, relative_humidity: relativeHumidity, } = device.properties;
|
|
20
20
|
const systemStatus = getSystemStatus(device);
|
|
21
|
-
return (_jsxs("div", { className: 'seam-thermostat-card-content', children: [_jsx("div", { className: 'seam-thermostat-card-image-wrap', children: _jsx(DeviceImage, { device: device }) }), _jsxs("div", { className: 'seam-thermostat-card-details', children: [_jsxs("div", { className: 'seam-thermostat-heading-wrap', children: [_jsx(
|
|
21
|
+
return (_jsxs("div", { className: 'seam-thermostat-card-content', children: [_jsx("div", { className: 'seam-thermostat-card-image-wrap', children: _jsx(DeviceImage, { device: device }) }), _jsxs("div", { className: 'seam-thermostat-card-details', children: [_jsxs("div", { className: 'seam-thermostat-heading-wrap', children: [_jsx(EditableDeviceName, { value: device.properties.name, tagName: 'h4', className: 'seam-thermostat-card-heading', onEdit: props.onEditName }), _jsx("button", { onClick: toggleTemperatureUnit, className: 'seam-thermostat-temperature-toggle', children: _jsx("span", { className: 'seam-thermostat-temperature-toggle-label', children: temperatureUnit === 'fahrenheit' ? t.fahrenheit : t.celsius }) })] }), _jsx("div", { className: 'seam-thermostat-properties-wrap', children: _jsxs("div", { className: 'seam-thermostat-properties', children: [_jsx("div", { className: 'seam-thermostat-property-block', children: _jsxs("p", { className: 'seam-thermostat-property-label', children: [t.temperature, ":"] }) }), _jsxs("div", { className: 'seam-thermostat-property-block', children: [_jsx("p", { className: 'seam-thermostat-property-value', children: _jsx(Temperature, { fahrenheit: temperatureFahrenheit, celsius: temperatureCelsius, unit: temperatureUnit }) }), _jsx("p", { className: 'seam-thermostat-property-value', children: "|" }), _jsxs("p", { className: 'seam-thermostat-property-label', children: [t.humidity, ":"] }), relativeHumidity != null && (_jsxs("p", { className: 'seam-thermostat-property-value', children: [relativeHumidity * 100, "%"] }))] }), _jsx("div", { className: 'seam-thermostat-property-block', children: _jsxs("p", { className: 'seam-thermostat-property-label', children: [t.setting, ":"] }) }), _jsx("div", { className: 'seam-thermostat-property-block', children: _jsx(ClimateSettingStatus, { climateSetting: currentClimateSetting, temperatureUnit: temperatureUnit }) }), _jsx("div", { className: 'seam-thermostat-property-block', children: _jsxs("p", { className: 'seam-thermostat-property-label', children: [t.fanMode, ":"] }) }), _jsxs("div", { className: 'seam-thermostat-property-block seam-thermostat-property-icon-block', children: [_jsx("div", { className: 'seam-thermostat-property-icon', children: isFanRunning ? _jsx(FanIcon, {}) : _jsx(OffIcon, {}) }), _jsx("p", { className: 'seam-thermostat-property-value', children: isFanRunning ? t.auto : t.off })] }), _jsx("div", { className: 'seam-thermostat-property-block', children: _jsxs("p", { className: 'seam-thermostat-property-label', children: [t.systemStatus, ":"] }) }), _jsx("div", { className: 'seam-thermostat-property-block', children: _jsx("div", { className: classNames('seam-thermostat-property-tag', `seam-thermostat-property-tag-${systemStatus}`), children: _jsx("p", { className: 'seam-thermostat-property-tag-label', children: systemStatus === 'off' ? '--' : t[systemStatus] }) }) })] }) })] })] }));
|
|
22
22
|
}
|
|
23
23
|
const getSystemStatus = (device) => {
|
|
24
24
|
const { properties } = device;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThermostatCard.js","sourceRoot":"","sources":["../../../src/lib/ui/thermostat/ThermostatCard.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"ThermostatCard.js","sourceRoot":"","sources":["../../../src/lib/ui/thermostat/ThermostatCard.tsx"],"names":[],"mappings":"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"}
|
package/lib/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const seamapiReactVersion = "4.
|
|
1
|
+
declare const seamapiReactVersion = "4.4.0";
|
|
2
2
|
export default seamapiReactVersion;
|
package/lib/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seamapi/react",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.4.0",
|
|
4
4
|
"description": "Seam Components.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
"npm": ">= 9.0.0"
|
|
110
110
|
},
|
|
111
111
|
"peerDependencies": {
|
|
112
|
-
"@seamapi/types": "^1.
|
|
112
|
+
"@seamapi/types": "^1.344.3",
|
|
113
113
|
"@types/react": "^18.0.0",
|
|
114
114
|
"@types/react-dom": "^18.0.0",
|
|
115
115
|
"react": "^18.0.0",
|
|
@@ -127,7 +127,7 @@
|
|
|
127
127
|
}
|
|
128
128
|
},
|
|
129
129
|
"dependencies": {
|
|
130
|
-
"@seamapi/http": "^1.
|
|
130
|
+
"@seamapi/http": "^1.20.0",
|
|
131
131
|
"@tanstack/react-query": "^5.27.5",
|
|
132
132
|
"classnames": "^2.3.2",
|
|
133
133
|
"luxon": "^3.3.0",
|
|
@@ -144,7 +144,7 @@
|
|
|
144
144
|
"@rxfork/r2wc-react-to-web-component": "^2.4.0",
|
|
145
145
|
"@seamapi/fake-devicedb": "^1.6.1",
|
|
146
146
|
"@seamapi/fake-seam-connect": "^1.69.1",
|
|
147
|
-
"@seamapi/types": "^1.
|
|
147
|
+
"@seamapi/types": "^1.344.3",
|
|
148
148
|
"@storybook/addon-designs": "^7.0.1",
|
|
149
149
|
"@storybook/addon-essentials": "^7.0.2",
|
|
150
150
|
"@storybook/addon-links": "^7.0.2",
|
|
@@ -31,7 +31,7 @@ export function AccessCodeMainIcon({
|
|
|
31
31
|
<ExclamationCircleOutlineIcon />
|
|
32
32
|
</div>
|
|
33
33
|
<div className='seam-invisible seam-md-flex'>
|
|
34
|
-
<
|
|
34
|
+
<KeyIcon />
|
|
35
35
|
</div>
|
|
36
36
|
</>
|
|
37
37
|
)
|
|
@@ -47,7 +47,7 @@ export function AccessCodeMainIcon({
|
|
|
47
47
|
<TriangleWarningOutlineIcon />
|
|
48
48
|
</div>
|
|
49
49
|
<div className='seam-invisible seam-md-flex'>
|
|
50
|
-
<
|
|
50
|
+
<KeyIcon />
|
|
51
51
|
</div>
|
|
52
52
|
</>
|
|
53
53
|
)
|
|
@@ -55,11 +55,15 @@ export function AccessCodeMainIcon({
|
|
|
55
55
|
|
|
56
56
|
return (
|
|
57
57
|
<div className='seam-issue-icon-wrap'>
|
|
58
|
-
<
|
|
58
|
+
<KeyIcon />
|
|
59
59
|
</div>
|
|
60
60
|
)
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
function KeyIcon(): JSX.Element {
|
|
64
|
+
return <AccessCodeKeyIcon style={{ fontSize: '24px' }} />
|
|
65
|
+
}
|
|
66
|
+
|
|
63
67
|
const t = {
|
|
64
68
|
codeIssue: 'code issue',
|
|
65
69
|
codeIssues: 'code issues',
|
|
@@ -6,7 +6,6 @@ import { NestedAccessCodeTable } from 'lib/seam/components/AccessCodeTable/Acces
|
|
|
6
6
|
import type { NestedSpecificDeviceDetailsProps } from 'lib/seam/components/DeviceDetails/DeviceDetails.js'
|
|
7
7
|
import { DeviceInfo } from 'lib/seam/components/DeviceDetails/DeviceInfo.js'
|
|
8
8
|
import { DeviceModel } from 'lib/seam/components/DeviceDetails/DeviceModel.js'
|
|
9
|
-
import { SeamEditableDeviceName } from 'lib/seam/components/SeamEditableDeviceName/SeamEditableDeviceName.js'
|
|
10
9
|
import { deviceErrorFilter, deviceWarningFilter } from 'lib/seam/filters.js'
|
|
11
10
|
import type { LockDevice } from 'lib/seam/locks/lock-device.js'
|
|
12
11
|
import { useToggleLock } from 'lib/seam/locks/use-toggle-lock.js'
|
|
@@ -14,6 +13,7 @@ import { Alerts } from 'lib/ui/Alert/Alerts.js'
|
|
|
14
13
|
import { Button } from 'lib/ui/Button.js'
|
|
15
14
|
import { BatteryStatusIndicator } from 'lib/ui/device/BatteryStatusIndicator.js'
|
|
16
15
|
import { DeviceImage } from 'lib/ui/device/DeviceImage.js'
|
|
16
|
+
import { EditableDeviceName } from 'lib/ui/device/EditableDeviceName.js'
|
|
17
17
|
import { OnlineStatus } from 'lib/ui/device/OnlineStatus.js'
|
|
18
18
|
import { ContentHeader } from 'lib/ui/layout/ContentHeader.js'
|
|
19
19
|
import { useToggle } from 'lib/ui/use-toggle.js'
|
|
@@ -98,7 +98,7 @@ export function LockDeviceDetails({
|
|
|
98
98
|
</div>
|
|
99
99
|
<div className='seam-info'>
|
|
100
100
|
<span className='seam-label'>{t.device}</span>
|
|
101
|
-
<
|
|
101
|
+
<EditableDeviceName
|
|
102
102
|
tagName='h4'
|
|
103
103
|
value={device.properties.name}
|
|
104
104
|
className='seam-device-name'
|
|
@@ -4,9 +4,9 @@ import { useState } from 'react'
|
|
|
4
4
|
import type { NestedSpecificDeviceDetailsProps } from 'lib/seam/components/DeviceDetails/DeviceDetails.js'
|
|
5
5
|
import { DeviceInfo } from 'lib/seam/components/DeviceDetails/DeviceInfo.js'
|
|
6
6
|
import { DeviceModel } from 'lib/seam/components/DeviceDetails/DeviceModel.js'
|
|
7
|
-
import { SeamEditableDeviceName } from 'lib/seam/components/SeamEditableDeviceName/SeamEditableDeviceName.js'
|
|
8
7
|
import type { NoiseSensorDevice } from 'lib/seam/noise-sensors/noise-sensor-device.js'
|
|
9
8
|
import { DeviceImage } from 'lib/ui/device/DeviceImage.js'
|
|
9
|
+
import { EditableDeviceName } from 'lib/ui/device/EditableDeviceName.js'
|
|
10
10
|
import { NoiseLevelStatus } from 'lib/ui/device/NoiseLevelStatus.js'
|
|
11
11
|
import { OnlineStatus } from 'lib/ui/device/OnlineStatus.js'
|
|
12
12
|
import { ContentHeader } from 'lib/ui/layout/ContentHeader.js'
|
|
@@ -48,7 +48,7 @@ export function NoiseSensorDeviceDetails({
|
|
|
48
48
|
</div>
|
|
49
49
|
<div className='seam-info'>
|
|
50
50
|
<span className='seam-label'>{t.noiseSensor}</span>
|
|
51
|
-
<
|
|
51
|
+
<EditableDeviceName
|
|
52
52
|
onEdit={onEditName}
|
|
53
53
|
tagName='h4'
|
|
54
54
|
value={device.properties.name}
|
|
@@ -12,62 +12,20 @@ import { CheckIcon } from 'lib/icons/Check.js'
|
|
|
12
12
|
import { CloseIcon } from 'lib/icons/Close.js'
|
|
13
13
|
import { EditIcon } from 'lib/icons/Edit.js'
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
type EditableDeviceNameProps = {
|
|
16
16
|
onEdit?: (newName: string) => void
|
|
17
17
|
editable?: boolean
|
|
18
18
|
tagName?: string
|
|
19
19
|
value: string
|
|
20
20
|
} & HTMLAttributes<HTMLElement>
|
|
21
21
|
|
|
22
|
-
function
|
|
23
|
-
props: PropsWithChildren<HTMLAttributes<HTMLButtonElement>>
|
|
24
|
-
): JSX.Element {
|
|
25
|
-
return (
|
|
26
|
-
<button
|
|
27
|
-
{...props}
|
|
28
|
-
className={classNames(
|
|
29
|
-
'seam-editable-device-name-icon-button',
|
|
30
|
-
props.className
|
|
31
|
-
)}
|
|
32
|
-
>
|
|
33
|
-
{props.children}
|
|
34
|
-
</button>
|
|
35
|
-
)
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
const fixName = (name: string): string => {
|
|
39
|
-
return name.replace(/\s+/g, ' ').trim()
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
type Result = { type: 'success' } | { type: 'error'; message: string }
|
|
43
|
-
|
|
44
|
-
const isValidName = (name: string): Result => {
|
|
45
|
-
if (name.length < 2) {
|
|
46
|
-
return {
|
|
47
|
-
type: 'error',
|
|
48
|
-
message: 'Name must be at least 2 characters long',
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
if (name.length > 64) {
|
|
53
|
-
return {
|
|
54
|
-
type: 'error',
|
|
55
|
-
message: 'Name must be at most 64 characters long',
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
return {
|
|
60
|
-
type: 'success',
|
|
61
|
-
} as const
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
export function SeamEditableDeviceName({
|
|
22
|
+
export function EditableDeviceName({
|
|
65
23
|
onEdit,
|
|
66
24
|
editable = true,
|
|
67
25
|
tagName,
|
|
68
26
|
value,
|
|
69
27
|
...props
|
|
70
|
-
}:
|
|
28
|
+
}: EditableDeviceNameProps): JSX.Element {
|
|
71
29
|
const [editing, setEditing] = useState(false)
|
|
72
30
|
const [errorText, setErrorText] = useState<null | string>(null)
|
|
73
31
|
const [currentValue, setCurrentValue] = useState(value)
|
|
@@ -206,3 +164,50 @@ function ActionButtons(props: ActionButtonsProps): JSX.Element {
|
|
|
206
164
|
</IconButton>
|
|
207
165
|
)
|
|
208
166
|
}
|
|
167
|
+
|
|
168
|
+
function IconButton(
|
|
169
|
+
props: PropsWithChildren<HTMLAttributes<HTMLButtonElement>>
|
|
170
|
+
): JSX.Element {
|
|
171
|
+
return (
|
|
172
|
+
<button
|
|
173
|
+
{...props}
|
|
174
|
+
className={classNames(
|
|
175
|
+
'seam-editable-device-name-icon-button',
|
|
176
|
+
props.className
|
|
177
|
+
)}
|
|
178
|
+
>
|
|
179
|
+
{props.children}
|
|
180
|
+
</button>
|
|
181
|
+
)
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
const fixName = (name: string): string => {
|
|
185
|
+
return name.replace(/\s+/g, ' ').trim()
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
type Result =
|
|
189
|
+
| { type: 'success' }
|
|
190
|
+
| {
|
|
191
|
+
type: 'error'
|
|
192
|
+
message: string
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
const isValidName = (name: string): Result => {
|
|
196
|
+
if (name.length < 2) {
|
|
197
|
+
return {
|
|
198
|
+
type: 'error',
|
|
199
|
+
message: 'Name must be at least 2 characters long',
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
if (name.length > 64) {
|
|
204
|
+
return {
|
|
205
|
+
type: 'error',
|
|
206
|
+
message: 'Name must be at most 64 characters long',
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
return {
|
|
211
|
+
type: 'success',
|
|
212
|
+
} as const
|
|
213
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useCallback, useEffect, useMemo } from 'react'
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { ThermostatCoolIcon } from 'lib/icons/ThermostatCool.js'
|
|
4
|
+
import { ThermostatHeatIcon } from 'lib/icons/ThermostatHeat.js'
|
|
5
5
|
import {
|
|
6
6
|
getCoolBounds,
|
|
7
7
|
getHeatBounds,
|
|
@@ -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
|
-
<
|
|
141
|
+
<ThermostatHeatIcon 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
|
-
<
|
|
154
|
+
<ThermostatCoolIcon className='seam-temperature-control-group-block-thermostat-icon' />
|
|
155
155
|
<TemperatureControl
|
|
156
156
|
variant='cool'
|
|
157
157
|
value={coolValue}
|
|
@@ -3,9 +3,9 @@ import { useState } from 'react'
|
|
|
3
3
|
|
|
4
4
|
import { FanIcon } from 'lib/icons/Fan.js'
|
|
5
5
|
import { OffIcon } from 'lib/icons/Off.js'
|
|
6
|
-
import { SeamEditableDeviceName } from 'lib/seam/components/SeamEditableDeviceName/SeamEditableDeviceName.js'
|
|
7
6
|
import type { ThermostatDevice } from 'lib/seam/thermostats/thermostat-device.js'
|
|
8
7
|
import { DeviceImage } from 'lib/ui/device/DeviceImage.js'
|
|
8
|
+
import { EditableDeviceName } from 'lib/ui/device/EditableDeviceName.js'
|
|
9
9
|
import { ClimateSettingStatus } from 'lib/ui/thermostat/ClimateSettingStatus.js'
|
|
10
10
|
import { Temperature } from 'lib/ui/thermostat/Temperature.js'
|
|
11
11
|
|
|
@@ -52,7 +52,7 @@ function Content(props: ThermostatCardProps): JSX.Element | null {
|
|
|
52
52
|
</div>
|
|
53
53
|
<div className='seam-thermostat-card-details'>
|
|
54
54
|
<div className='seam-thermostat-heading-wrap'>
|
|
55
|
-
<
|
|
55
|
+
<EditableDeviceName
|
|
56
56
|
value={device.properties.name}
|
|
57
57
|
tagName='h4'
|
|
58
58
|
className='seam-thermostat-card-heading'
|
package/src/lib/version.ts
CHANGED