@seamapi/react 1.48.0 → 1.48.1
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 +1 -1
- package/dist/elements.js +3213 -3191
- package/dist/elements.js.map +1 -1
- package/dist/index.css +400 -1
- package/dist/index.css.map +1 -1
- package/dist/index.min.css +1 -1
- package/dist/index.min.css.map +1 -1
- package/lib/dates.d.ts +9 -0
- package/lib/dates.js +15 -0
- package/lib/dates.js.map +1 -1
- package/lib/icons/ArrowRight.d.ts +2 -0
- package/lib/icons/ArrowRight.js +7 -0
- package/lib/icons/ArrowRight.js.map +1 -0
- package/lib/icons/TemperatureAdd.d.ts +2 -0
- package/lib/icons/TemperatureAdd.js +7 -0
- package/lib/icons/TemperatureAdd.js.map +1 -0
- package/lib/icons/TemperatureSubtract.d.ts +2 -0
- package/lib/icons/TemperatureSubtract.js +7 -0
- package/lib/icons/TemperatureSubtract.js.map +1 -0
- package/lib/seam/SeamProvider.d.ts +2 -2
- package/lib/seam/SeamProvider.js.map +1 -1
- package/lib/seam/access-codes/use-generate-access-code-code.d.ts +6 -0
- package/lib/seam/access-codes/use-generate-access-code-code.js +13 -0
- package/lib/seam/access-codes/use-generate-access-code-code.js.map +1 -0
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.d.ts +6 -0
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.js +41 -0
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.js.map +1 -0
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.d.ts +4 -0
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.js +29 -0
- package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.js.map +1 -0
- package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.js +2 -2
- package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.js.map +1 -1
- package/lib/seam/components/ClimateSettingScheduleTable/{ClimateSettingScheduleDetails.d.ts → ClimateSettingScheduleRowDetails.d.ts} +1 -1
- package/lib/seam/components/ClimateSettingScheduleTable/{ClimateSettingScheduleDetails.js → ClimateSettingScheduleRowDetails.js} +2 -2
- package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.js.map +1 -0
- package/lib/seam/use-seam-client.js +2 -2
- package/lib/seam/use-seam-client.js.map +1 -1
- package/lib/ui/AccessCodeForm/AccessCodeFormDatePicker.js +1 -1
- package/lib/ui/AccessCodeForm/AccessCodeFormDatePicker.js.map +1 -1
- package/lib/ui/Menu/Menu.js +5 -5
- package/lib/ui/Menu/Menu.js.map +1 -1
- package/lib/ui/Switch/Switch.d.ts +8 -0
- package/lib/ui/Switch/Switch.js +15 -0
- package/lib/ui/Switch/Switch.js.map +1 -0
- package/lib/ui/TextField/TextField.js +1 -3
- package/lib/ui/TextField/TextField.js.map +1 -1
- package/lib/ui/clipboard.js +1 -1
- package/lib/ui/clipboard.js.map +1 -1
- package/lib/ui/thermostat/TemperatureControl.d.ts +11 -0
- package/lib/ui/thermostat/TemperatureControl.js +42 -0
- package/lib/ui/thermostat/TemperatureControl.js.map +1 -0
- package/lib/ui/use-current-time.d.ts +2 -0
- package/lib/ui/use-current-time.js +12 -0
- package/lib/ui/use-current-time.js.map +1 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +7 -7
- package/src/lib/dates.ts +17 -0
- package/src/lib/element.tsx +6 -4
- package/src/lib/icons/ArrowRight.tsx +36 -0
- package/src/lib/icons/TemperatureAdd.tsx +38 -0
- package/src/lib/icons/TemperatureSubtract.tsx +35 -0
- package/src/lib/seam/SeamProvider.tsx +2 -3
- package/src/lib/seam/access-codes/use-generate-access-code-code.ts +38 -0
- package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.tsx +101 -0
- package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.tsx +58 -0
- package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.tsx +2 -2
- package/src/lib/seam/components/ClimateSettingScheduleTable/{ClimateSettingScheduleDetails.tsx → ClimateSettingScheduleRowDetails.tsx} +1 -1
- package/src/lib/seam/use-seam-client.ts +2 -2
- package/src/lib/ui/AccessCodeForm/AccessCodeFormDatePicker.tsx +2 -2
- package/src/lib/ui/Menu/Menu.tsx +5 -6
- package/src/lib/ui/Switch/Switch.tsx +38 -0
- package/src/lib/ui/TextField/TextField.tsx +1 -3
- package/src/lib/ui/clipboard.ts +1 -1
- package/src/lib/ui/thermostat/TemperatureControl.tsx +121 -0
- package/src/lib/ui/use-current-time.ts +16 -0
- package/src/lib/version.ts +1 -1
- package/src/styles/_colors.scss +4 -0
- package/src/styles/_main.scss +2 -0
- package/src/styles/_switch.scss +53 -0
- package/src/styles/_thermostat.scss +384 -2
- package/src/styles/_tooltip.scss +3 -0
- package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleDetails.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-seam-client.js","sourceRoot":"","sources":["../../src/lib/seam/use-seam-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAEzD,MAAM,UAAU,aAAa;IAM3B,MAAM,EACJ,MAAM,EACN,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,GAAG,OAAO,EACX,GAAG,cAAc,EAAE,CAAA;IACpB,MAAM,iBAAiB,GAAG,iCAAiC,CACzD,kBAAkB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAC5D,CAAA;IAED,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAO;QACzD,QAAQ,EAAE;YACR,QAAQ;YACR;gBACE,MAAM;gBACN,aAAa;gBACb,cAAc;gBACd,iBAAiB;gBACjB,kBAAkB;aACnB;SACF;QACD,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,MAAM,IAAI,IAAI;gBAAE,OAAO,MAAM,CAAA;YAEjC,IAAI,kBAAkB,IAAI,IAAI,EAAE;gBAC9B,OAAO,IAAI,IAAI,CAAC;oBACd,GAAG,aAAa;oBAChB,MAAM,EAAE,SAAS;oBACjB,kBAAkB;iBACnB,CAAC,CAAA;aACH;YAED,IAAI,cAAc,IAAI,IAAI,EAAE;gBAC1B,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAA;aACF;YAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC;gBAC3C,GAAG,aAAa;gBAChB,cAAc;gBACd,iBAAiB;aAClB,CAAC,CAAA;YAEF,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,cAAc,EAAE,KAAK,IAAI,IAAI,EAAE;gBAChD,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;aACrD;YAED,OAAO,IAAI,IAAI,CAAC;gBACd,GAAG,aAAa;gBAChB,MAAM,EAAE,SAAS;gBACjB,kBAAkB,EAAE,GAAG,CAAC,cAAc,CAAC,KAAK;aAC7C,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;IAEF,OAAO,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;AAC5D,CAAC;AAED,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C;QACE,KAAK,CACH;YACE,sCAAsC;YACtC,yEAAyE;YACzE,uEAAuE;YACvE,+CAA+C;SAChD,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;QACjC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;IACjD,CAAC;CACF;AAED,SAAS,iCAAiC,CACxC,iBAAqC;IAErC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,iBAAiB,IAAI,IAAI;YAAE,OAAM;QACrC,sCAAsC;QACtC,OAAO,CAAC,IAAI,CAAC;;8GAE6F,CAAC,CAAA;IAC7G,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAA;IAEvB,IAAI,iBAAiB,IAAI,IAAI,EAAE;QAC7B,OAAO,iBAAiB,CAAA;KACzB;IAED,MAAM,WAAW,GACf,UAAU,
|
|
1
|
+
{"version":3,"file":"use-seam-client.js","sourceRoot":"","sources":["../../src/lib/seam/use-seam-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { FormField } from '../../../lib/ui/FormField.js';
|
|
|
7
7
|
import { InputLabel } from '../../../lib/ui/InputLabel.js';
|
|
8
8
|
import { ContentHeader } from '../../../lib/ui/layout/ContentHeader.js';
|
|
9
9
|
export function AccessCodeFormDatePicker({ timezone, onBack, className, startDate, setStartDate, endDate, setEndDate, onChangeTimezone, }) {
|
|
10
|
-
return (_jsxs("div", { className: classNames('seam-schedule-picker', className), children: [_jsx(ContentHeader, { title: t.timingTitle, onBack: onBack }), _jsxs("div", { className: 'seam-content', children: [_jsxs("div", { className: 'seam-timezone', children: [_jsx("span", { className: 'seam-label', children: t.selectedTimezoneLabel }), _jsxs("span", { className: 'seam-selected', onClick: onChangeTimezone, children: [getTimezoneLabel(timezone), _jsx(ChevronRightIcon, {})] })] }), _jsxs(FormField, { children: [_jsx(InputLabel, { children: t.startTimeLabel }), _jsx(DateTimePicker, { value: startDate
|
|
10
|
+
return (_jsxs("div", { className: classNames('seam-schedule-picker', className), children: [_jsx(ContentHeader, { title: t.timingTitle, onBack: onBack }), _jsxs("div", { className: 'seam-content', children: [_jsxs("div", { className: 'seam-timezone', children: [_jsx("span", { className: 'seam-label', children: t.selectedTimezoneLabel }), _jsxs("span", { className: 'seam-selected', onClick: onChangeTimezone, children: [getTimezoneLabel(timezone), _jsx(ChevronRightIcon, {})] })] }), _jsxs(FormField, { children: [_jsx(InputLabel, { children: t.startTimeLabel }), _jsx(DateTimePicker, { value: startDate ?? '', onChange: setStartDate, size: 'large' })] }), _jsxs(FormField, { children: [_jsx(InputLabel, { children: t.endTimeLabel }), _jsx(DateTimePicker, { value: endDate ?? '', onChange: setEndDate, size: 'large' })] })] })] }));
|
|
11
11
|
}
|
|
12
12
|
const t = {
|
|
13
13
|
timingTitle: 'Timing',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessCodeFormDatePicker.js","sourceRoot":"","sources":["../../../src/lib/ui/AccessCodeForm/AccessCodeFormDatePicker.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAa9D,MAAM,UAAU,wBAAwB,CAAC,EACvC,QAAQ,EACR,MAAM,EACN,SAAS,EACT,SAAS,EACT,YAAY,EACZ,OAAO,EACP,UAAU,EACV,gBAAgB,GACc;IAC9B,OAAO,CACL,eAAK,SAAS,EAAE,UAAU,CAAC,sBAAsB,EAAE,SAAS,CAAC,aAC3D,KAAC,aAAa,IAAC,KAAK,EAAE,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,GAAI,EACvD,eAAK,SAAS,EAAC,cAAc,aAC3B,eAAK,SAAS,EAAC,eAAe,aAC5B,eAAM,SAAS,EAAC,YAAY,YAAE,CAAC,CAAC,qBAAqB,GAAQ,EAC7D,gBAAM,SAAS,EAAC,eAAe,EAAC,OAAO,EAAE,gBAAgB,aACtD,gBAAgB,CAAC,QAAQ,CAAC,EAC3B,KAAC,gBAAgB,KAAG,IACf,IACH,EACN,MAAC,SAAS,eACR,KAAC,UAAU,cAAE,CAAC,CAAC,cAAc,GAAc,EAC3C,KAAC,cAAc,IACb,KAAK,EAAE,SAAS,IAAI,
|
|
1
|
+
{"version":3,"file":"AccessCodeFormDatePicker.js","sourceRoot":"","sources":["../../../src/lib/ui/AccessCodeForm/AccessCodeFormDatePicker.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAa9D,MAAM,UAAU,wBAAwB,CAAC,EACvC,QAAQ,EACR,MAAM,EACN,SAAS,EACT,SAAS,EACT,YAAY,EACZ,OAAO,EACP,UAAU,EACV,gBAAgB,GACc;IAC9B,OAAO,CACL,eAAK,SAAS,EAAE,UAAU,CAAC,sBAAsB,EAAE,SAAS,CAAC,aAC3D,KAAC,aAAa,IAAC,KAAK,EAAE,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,GAAI,EACvD,eAAK,SAAS,EAAC,cAAc,aAC3B,eAAK,SAAS,EAAC,eAAe,aAC5B,eAAM,SAAS,EAAC,YAAY,YAAE,CAAC,CAAC,qBAAqB,GAAQ,EAC7D,gBAAM,SAAS,EAAC,eAAe,EAAC,OAAO,EAAE,gBAAgB,aACtD,gBAAgB,CAAC,QAAQ,CAAC,EAC3B,KAAC,gBAAgB,KAAG,IACf,IACH,EACN,MAAC,SAAS,eACR,KAAC,UAAU,cAAE,CAAC,CAAC,cAAc,GAAc,EAC3C,KAAC,cAAc,IACb,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAC,OAAO,GACZ,IACQ,EACZ,MAAC,SAAS,eACR,KAAC,UAAU,cAAE,CAAC,CAAC,YAAY,GAAc,EACzC,KAAC,cAAc,IACb,KAAK,EAAE,OAAO,IAAI,EAAE,EACpB,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAC,OAAO,GACZ,IACQ,IACR,IACF,CACP,CAAA;AACH,CAAC;AAED,MAAM,CAAC,GAAG;IACR,WAAW,EAAE,QAAQ;IACrB,qBAAqB,EAAE,cAAc;IACrC,cAAc,EAAE,OAAO;IACvB,YAAY,EAAE,KAAK;CACpB,CAAA"}
|
package/lib/ui/Menu/Menu.js
CHANGED
|
@@ -13,7 +13,7 @@ export function Menu({ verticalOffset = 5, horizontalOffset = 0, edgeOffset = 5,
|
|
|
13
13
|
const [top, setTop] = useState(0);
|
|
14
14
|
const [left, setLeft] = useState(0);
|
|
15
15
|
useEffect(() => {
|
|
16
|
-
const containers = globalThis
|
|
16
|
+
const containers = globalThis.document?.querySelectorAll('.seam-components');
|
|
17
17
|
if (containers == null)
|
|
18
18
|
return;
|
|
19
19
|
const el = containers[containers.length - 1];
|
|
@@ -60,11 +60,11 @@ export function Menu({ verticalOffset = 5, horizontalOffset = 0, edgeOffset = 5,
|
|
|
60
60
|
]);
|
|
61
61
|
useLayoutEffect(() => {
|
|
62
62
|
setPositions();
|
|
63
|
-
globalThis
|
|
64
|
-
globalThis
|
|
63
|
+
globalThis.addEventListener('scroll', setPositions);
|
|
64
|
+
globalThis.addEventListener('resize', setPositions);
|
|
65
65
|
return () => {
|
|
66
|
-
globalThis
|
|
67
|
-
globalThis
|
|
66
|
+
globalThis.removeEventListener('scroll', setPositions);
|
|
67
|
+
globalThis.removeEventListener('resize', setPositions);
|
|
68
68
|
};
|
|
69
69
|
}, [setPositions]);
|
|
70
70
|
const isOpen = anchorEl != null;
|
package/lib/ui/Menu/Menu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../../src/lib/ui/Menu/Menu.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,EACL,aAAa,EAGb,WAAW,EACX,UAAU,EACV,SAAS,EACT,eAAe,EACf,QAAQ,GACT,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAkBxC,MAAM,WAAW,GAAG,aAAa,CAAc;IAC7C,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;CAChB,CAAC,CAAA;AAEF,MAAM,UAAU,IAAI,CAAC,EACnB,cAAc,GAAG,CAAC,EAClB,gBAAgB,GAAG,CAAC,EACpB,UAAU,GAAG,CAAC,EACd,QAAQ,EACR,YAAY,EACZ,eAAe,GACL;IACV,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAA;IAChC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAqB,IAAI,CAAC,CAAA;IAClE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAiB,IAAI,CAAC,CAAA;IAClE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAwB,IAAI,CAAC,CAAA;IACvE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IACjC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAEnC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../../src/lib/ui/Menu/Menu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export interface SwitchProps {
|
|
3
|
+
checked: boolean;
|
|
4
|
+
onChange: (checked: boolean) => void;
|
|
5
|
+
enableLabel?: boolean;
|
|
6
|
+
}
|
|
7
|
+
declare function Switch({ checked, onChange, enableLabel, }: SwitchProps): JSX.Element;
|
|
8
|
+
export default Switch;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
function Switch({ checked, onChange, enableLabel = false, }) {
|
|
4
|
+
return (_jsxs("div", { className: 'seam-switch-container', children: [enableLabel && (_jsx("label", { className: 'seam-switch-label', children: checked ? t.on : t.off })), _jsx("div", { className: classNames('seam-switch', {
|
|
5
|
+
'seam-switch-checked': checked,
|
|
6
|
+
}), onClick: () => {
|
|
7
|
+
onChange(!checked);
|
|
8
|
+
}, children: _jsx("div", { className: 'seam-switch-slider' }) })] }));
|
|
9
|
+
}
|
|
10
|
+
const t = {
|
|
11
|
+
on: 'On',
|
|
12
|
+
off: 'Off',
|
|
13
|
+
};
|
|
14
|
+
export default Switch;
|
|
15
|
+
//# sourceMappingURL=Switch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Switch.js","sourceRoot":"","sources":["../../../src/lib/ui/Switch/Switch.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AAQnC,SAAS,MAAM,CAAC,EACd,OAAO,EACP,QAAQ,EACR,WAAW,GAAG,KAAK,GACP;IACZ,OAAO,CACL,eAAK,SAAS,EAAC,uBAAuB,aACnC,WAAW,IAAI,CACd,gBAAO,SAAS,EAAC,mBAAmB,YAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAS,CACtE,EACD,cACE,SAAS,EAAE,UAAU,CAAC,aAAa,EAAE;oBACnC,qBAAqB,EAAE,OAAO;iBAC/B,CAAC,EACF,OAAO,EAAE,GAAG,EAAE;oBACZ,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAA;gBACpB,CAAC,YAED,cAAK,SAAS,EAAC,oBAAoB,GAAG,GAClC,IACF,CACP,CAAA;AACH,CAAC;AAED,MAAM,CAAC,GAAG;IACR,EAAE,EAAE,IAAI;IACR,GAAG,EAAE,KAAK;CACX,CAAA;AAED,eAAe,MAAM,CAAA"}
|
|
@@ -15,9 +15,7 @@ export const TextField = forwardRef(function TextField({ value, onChange, classN
|
|
|
15
15
|
}
|
|
16
16
|
};
|
|
17
17
|
// Maintain a local ref, and still forward it along
|
|
18
|
-
useImperativeHandle(ref, () =>
|
|
19
|
-
inputEl,
|
|
20
|
-
]);
|
|
18
|
+
useImperativeHandle(ref, () => inputEl ?? undefined, [inputEl]);
|
|
21
19
|
const endAdornmentVisible = endAdornment != null || clearable;
|
|
22
20
|
return (_jsxs("div", { className: classNames('seam-text-field', className, `seam-${size}`, {
|
|
23
21
|
'seam-disabled': disabled,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextField.js","sourceRoot":"","sources":["../../../src/lib/ui/TextField/TextField.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,EAGL,UAAU,EAIV,SAAS,EACT,mBAAmB,EACnB,QAAQ,GACT,MAAM,OAAO,CAAA;AAEd,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAwB9C,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAGjC,SAAS,SAAS,CAClB,EACE,KAAK,EACL,QAAQ,EACR,SAAS,EACT,cAAc,EACd,YAAY,EACZ,UAAU,EACV,QAAQ,GAAG,KAAK,EAChB,IAAI,GAAG,OAAO,EACd,SAAS,GAAG,KAAK,EACjB,OAAO,EACP,MAAM,EACN,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,UAAU,EACV,IAAI,GAAG,MAAM,GACd,EACD,GAAG;IAEH,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAA0B,IAAI,CAAC,CAAA;IAErE,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAEpD,MAAM,UAAU,GAAG,GAAS,EAAE;QAC5B,IAAI,QAAQ,IAAI,IAAI,EAAE;YACpB,QAAQ,CAAC,EAAE,CAAC,CAAA;YACZ,OAAM;SACP;QAED,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,OAAO,CAAC,KAAK,GAAG,EAAE,CAAA;SACnB;IACH,CAAC,CAAA;IAED,mDAAmD;IACnD,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"TextField.js","sourceRoot":"","sources":["../../../src/lib/ui/TextField/TextField.tsx"],"names":[],"mappings":"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"}
|
package/lib/ui/clipboard.js
CHANGED
package/lib/ui/clipboard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/lib/ui/clipboard.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAa;IACjD,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/lib/ui/clipboard.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAa;IACjD,MAAM,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;AACzD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
interface TemperatureControlProps {
|
|
3
|
+
variant: 'heat' | 'cool';
|
|
4
|
+
value: number;
|
|
5
|
+
onChange: (temperature: number) => void;
|
|
6
|
+
min?: number;
|
|
7
|
+
max?: number;
|
|
8
|
+
unit?: 'fahrenheit' | 'celsius';
|
|
9
|
+
}
|
|
10
|
+
export declare function TemperatureControl({ variant, value, onChange, min, max, unit, }: TemperatureControlProps): JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef } from 'react';
|
|
3
|
+
import { TemperatureAddIcon } from '../../../lib/icons/TemperatureAdd.js';
|
|
4
|
+
import { TemperatureSubtractIcon } from '../../../lib/icons/TemperatureSubtract.js';
|
|
5
|
+
export function TemperatureControl({ variant, value, onChange, min = 50, max = 90, unit = 'fahrenheit', }) {
|
|
6
|
+
const increment = () => {
|
|
7
|
+
onChange(Math.min(value + 1, max));
|
|
8
|
+
};
|
|
9
|
+
const decrement = () => {
|
|
10
|
+
onChange(Math.max(value - 1, min));
|
|
11
|
+
};
|
|
12
|
+
return (_jsxs("div", { className: 'seam-temperature-control', children: [_jsx("button", { className: 'seam-temperature-stepper-button', onClick: decrement, children: _jsx(TemperatureSubtractIcon, {}) }), _jsx(RangeSlider, { variant: variant, min: min, max: max, value: value, onChange: (temperature) => {
|
|
13
|
+
onChange(temperature);
|
|
14
|
+
}, unit: unit }), _jsx("button", { className: 'seam-temperature-stepper-button', onClick: increment, children: _jsx(TemperatureAddIcon, {}) })] }));
|
|
15
|
+
}
|
|
16
|
+
function RangeSlider({ variant, value, onChange, min, max, unit, }) {
|
|
17
|
+
const wrapRef = useRef(null);
|
|
18
|
+
const inputRef = useRef(null);
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
if (wrapRef.current == null || inputRef.current == null)
|
|
21
|
+
return;
|
|
22
|
+
const wrap = wrapRef.current;
|
|
23
|
+
const input = inputRef.current;
|
|
24
|
+
wrap.style.setProperty('--temperature-current', input.value);
|
|
25
|
+
wrap.style.setProperty('--temperature-min', input.min);
|
|
26
|
+
wrap.style.setProperty('--temperature-max', input.max);
|
|
27
|
+
}, [value]);
|
|
28
|
+
const handleRangeChange = (event) => {
|
|
29
|
+
const wrap = wrapRef.current;
|
|
30
|
+
if (wrap == null)
|
|
31
|
+
return;
|
|
32
|
+
const temperature = event.target.value;
|
|
33
|
+
wrap.style.setProperty('--temperature-current', temperature);
|
|
34
|
+
onChange(Number(temperature));
|
|
35
|
+
};
|
|
36
|
+
return (_jsxs("div", { ref: wrapRef, className: 'seam-temperature-range-wrap', children: [_jsx("input", { ref: inputRef, type: 'range', min: min, max: max, value: value, onChange: handleRangeChange, className: 'seam-temperature-range', "data-variant": variant }), _jsxs("div", { className: 'seam-floating-temperature', children: [_jsx("span", { className: 'seam-floating-temperature-value', children: value }), _jsx("span", { className: 'seam-floating-temperature-unit', children: unit === 'fahrenheit' ? t.degreeFahrenheit : t.degreeCelsius })] })] }));
|
|
37
|
+
}
|
|
38
|
+
const t = {
|
|
39
|
+
degreeFahrenheit: 'ºF',
|
|
40
|
+
degreeCelsius: 'ºC',
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=TemperatureControl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemperatureControl.js","sourceRoot":"","sources":["../../../src/lib/ui/thermostat/TemperatureControl.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { DateTime } from 'luxon';
|
|
2
|
+
import { useCallback, useState } from 'react';
|
|
3
|
+
import { useInterval } from '../../lib/ui/use-interval.js';
|
|
4
|
+
export function useCurrentTime() {
|
|
5
|
+
const [date, setDate] = useState(DateTime.now());
|
|
6
|
+
const update = useCallback(() => {
|
|
7
|
+
setDate(DateTime.now());
|
|
8
|
+
}, [setDate]);
|
|
9
|
+
useInterval(update);
|
|
10
|
+
return date;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=use-current-time.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-current-time.js","sourceRoot":"","sources":["../../src/lib/ui/use-current-time.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,MAAM,UAAU,cAAc;IAC5B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAW,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAA;IAE1D,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9B,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAA;IACzB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAEb,WAAW,CAAC,MAAM,CAAC,CAAA;IAEnB,OAAO,IAAI,CAAA;AACb,CAAC"}
|
package/lib/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const seamapiReactVersion = "1.48.
|
|
1
|
+
declare const seamapiReactVersion = "1.48.1";
|
|
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": "1.48.
|
|
3
|
+
"version": "1.48.1",
|
|
4
4
|
"description": "Seam Components.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -122,7 +122,7 @@
|
|
|
122
122
|
"@tanstack/react-query": "^4.28.0",
|
|
123
123
|
"classnames": "^2.3.2",
|
|
124
124
|
"luxon": "^3.3.0",
|
|
125
|
-
"seamapi": "^8.
|
|
125
|
+
"seamapi": "^8.9.0",
|
|
126
126
|
"uuid": "^9.0.0"
|
|
127
127
|
},
|
|
128
128
|
"devDependencies": {
|
|
@@ -133,7 +133,7 @@
|
|
|
133
133
|
"@mui/icons-material": "^5.11.16",
|
|
134
134
|
"@mui/material": "^5.12.2",
|
|
135
135
|
"@rxfork/r2wc-react-to-web-component": "^2.3.0",
|
|
136
|
-
"@seamapi/fake-seam-connect": "^1.
|
|
136
|
+
"@seamapi/fake-seam-connect": "^1.9.0",
|
|
137
137
|
"@storybook/addon-designs": "^7.0.1",
|
|
138
138
|
"@storybook/addon-essentials": "^7.0.2",
|
|
139
139
|
"@storybook/addon-links": "^7.0.2",
|
|
@@ -159,11 +159,11 @@
|
|
|
159
159
|
"eslint-config-standard": "^17.1.0",
|
|
160
160
|
"eslint-config-standard-jsx": "^11.0.0",
|
|
161
161
|
"eslint-config-standard-react": "^13.0.0",
|
|
162
|
-
"eslint-config-standard-with-typescript": "^
|
|
162
|
+
"eslint-config-standard-with-typescript": "^39.0.0",
|
|
163
163
|
"eslint-plugin-simple-import-sort": "^10.0.0",
|
|
164
164
|
"eslint-plugin-storybook": "^0.6.11",
|
|
165
|
-
"eslint-plugin-unused-imports": "^
|
|
166
|
-
"execa": "^
|
|
165
|
+
"eslint-plugin-unused-imports": "^3.0.0",
|
|
166
|
+
"execa": "^8.0.1",
|
|
167
167
|
"fast-glob": "^3.2.12",
|
|
168
168
|
"http-proxy-middleware": "^2.0.6",
|
|
169
169
|
"isomorphic-fetch": "^3.0.0",
|
|
@@ -182,7 +182,7 @@
|
|
|
182
182
|
"tsc-alias": "^1.8.5",
|
|
183
183
|
"tsconfig-paths-webpack-plugin": "^4.0.1",
|
|
184
184
|
"tsx": "^3.12.7",
|
|
185
|
-
"typescript": "
|
|
185
|
+
"typescript": "~5.1.0",
|
|
186
186
|
"vite": "^4.2.1",
|
|
187
187
|
"vite-tsconfig-paths": "^4.0.8",
|
|
188
188
|
"zustand-hoist": "^1.0.0"
|
package/src/lib/dates.ts
CHANGED
|
@@ -138,3 +138,20 @@ export const createIsoDate = (date: string, timezone: string): string => {
|
|
|
138
138
|
*/
|
|
139
139
|
export const getTimezoneFromIsoDate = (date: string): string | null =>
|
|
140
140
|
DateTime.fromISO(date).zoneName
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Takes an ISO datetime string (2023-07-20T00:00:00.000-07:00) and returns a string like
|
|
144
|
+
* (Jul 20, 12:00 AM PDT).
|
|
145
|
+
*
|
|
146
|
+
* @param date
|
|
147
|
+
* @returns string
|
|
148
|
+
*
|
|
149
|
+
*/
|
|
150
|
+
export const formatDateAndTime = (date: string): string =>
|
|
151
|
+
DateTime.fromISO(date).toLocaleString({
|
|
152
|
+
month: 'short',
|
|
153
|
+
day: 'numeric',
|
|
154
|
+
hour: 'numeric',
|
|
155
|
+
minute: '2-digit',
|
|
156
|
+
timeZoneName: 'short',
|
|
157
|
+
})
|
package/src/lib/element.tsx
CHANGED
|
@@ -28,8 +28,10 @@ export type ElementProps<T> = Record<
|
|
|
28
28
|
'string' | 'number' | 'boolean' | 'array' | 'function' | 'json' | 'object'
|
|
29
29
|
>
|
|
30
30
|
|
|
31
|
-
type ProviderProps =
|
|
32
|
-
SeamProviderPropsWithClientSessionToken
|
|
31
|
+
type ProviderProps = Omit<
|
|
32
|
+
SeamProviderPropsWithPublishableKey & SeamProviderPropsWithClientSessionToken,
|
|
33
|
+
'children'
|
|
34
|
+
>
|
|
33
35
|
|
|
34
36
|
const providerProps: ElementProps<ProviderProps> = {
|
|
35
37
|
publishableKey: 'string',
|
|
@@ -53,7 +55,7 @@ export const defineCustomElement = ({
|
|
|
53
55
|
...providerProps,
|
|
54
56
|
},
|
|
55
57
|
})
|
|
56
|
-
globalThis
|
|
58
|
+
globalThis.customElements?.define(name, element)
|
|
57
59
|
}
|
|
58
60
|
|
|
59
61
|
function withProvider<P extends JSX.IntrinsicAttributes>(
|
|
@@ -82,7 +84,7 @@ function withProvider<P extends JSX.IntrinsicAttributes>(
|
|
|
82
84
|
disableFontInjection={
|
|
83
85
|
disableFontInjection ?? globalThis.disableSeamFontInjection
|
|
84
86
|
}
|
|
85
|
-
unminifiyCss={unminifiyCss ?? globalThis
|
|
87
|
+
unminifiyCss={unminifiyCss ?? globalThis.unminifiySeamCss}
|
|
86
88
|
>
|
|
87
89
|
<Component {...(props as P)} />
|
|
88
90
|
</SeamProvider>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Automaically generated by SVGR from assets/icons/*.svg.
|
|
3
|
+
* Do not edit this file or add other components to this directory.
|
|
4
|
+
*/
|
|
5
|
+
import type { SVGProps } from 'react'
|
|
6
|
+
export function ArrowRightIcon(props: SVGProps<SVGSVGElement>): JSX.Element {
|
|
7
|
+
return (
|
|
8
|
+
<svg
|
|
9
|
+
xmlns='http://www.w3.org/2000/svg'
|
|
10
|
+
width={18}
|
|
11
|
+
height={19}
|
|
12
|
+
fill='none'
|
|
13
|
+
{...props}
|
|
14
|
+
>
|
|
15
|
+
<mask
|
|
16
|
+
id='arrow-right_svg__a'
|
|
17
|
+
width={18}
|
|
18
|
+
height={19}
|
|
19
|
+
x={0}
|
|
20
|
+
y={0}
|
|
21
|
+
maskUnits='userSpaceOnUse'
|
|
22
|
+
style={{
|
|
23
|
+
maskType: 'alpha',
|
|
24
|
+
}}
|
|
25
|
+
>
|
|
26
|
+
<path fill='#D9D9D9' d='M0 .5h18v18H0z' />
|
|
27
|
+
</mask>
|
|
28
|
+
<g mask='url(#arrow-right_svg__a)'>
|
|
29
|
+
<path
|
|
30
|
+
fill='#B9BEC5'
|
|
31
|
+
d='m10.5 14-1.05-1.088 2.663-2.662H3v-1.5h9.113L9.45 6.088 10.5 5 15 9.5 10.5 14Z'
|
|
32
|
+
/>
|
|
33
|
+
</g>
|
|
34
|
+
</svg>
|
|
35
|
+
)
|
|
36
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Automaically generated by SVGR from assets/icons/*.svg.
|
|
3
|
+
* Do not edit this file or add other components to this directory.
|
|
4
|
+
*/
|
|
5
|
+
import type { SVGProps } from 'react'
|
|
6
|
+
export function TemperatureAddIcon(
|
|
7
|
+
props: SVGProps<SVGSVGElement>
|
|
8
|
+
): JSX.Element {
|
|
9
|
+
return (
|
|
10
|
+
<svg
|
|
11
|
+
xmlns='http://www.w3.org/2000/svg'
|
|
12
|
+
width={18}
|
|
13
|
+
height={18}
|
|
14
|
+
fill='none'
|
|
15
|
+
{...props}
|
|
16
|
+
>
|
|
17
|
+
<mask
|
|
18
|
+
id='temperature-add_svg__a'
|
|
19
|
+
width={18}
|
|
20
|
+
height={18}
|
|
21
|
+
x={0}
|
|
22
|
+
y={0}
|
|
23
|
+
maskUnits='userSpaceOnUse'
|
|
24
|
+
style={{
|
|
25
|
+
maskType: 'alpha',
|
|
26
|
+
}}
|
|
27
|
+
>
|
|
28
|
+
<path fill='#2196F3' d='M0 0h18v18H0z' />
|
|
29
|
+
</mask>
|
|
30
|
+
<g mask='url(#temperature-add_svg__a)'>
|
|
31
|
+
<path
|
|
32
|
+
fill='#9DA1A9'
|
|
33
|
+
d='M8.25 14.25v-4.5h-4.5v-1.5h4.5v-4.5h1.5v4.5h4.5v1.5h-4.5v4.5h-1.5Z'
|
|
34
|
+
/>
|
|
35
|
+
</g>
|
|
36
|
+
</svg>
|
|
37
|
+
)
|
|
38
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Automaically generated by SVGR from assets/icons/*.svg.
|
|
3
|
+
* Do not edit this file or add other components to this directory.
|
|
4
|
+
*/
|
|
5
|
+
import type { SVGProps } from 'react'
|
|
6
|
+
export function TemperatureSubtractIcon(
|
|
7
|
+
props: SVGProps<SVGSVGElement>
|
|
8
|
+
): JSX.Element {
|
|
9
|
+
return (
|
|
10
|
+
<svg
|
|
11
|
+
xmlns='http://www.w3.org/2000/svg'
|
|
12
|
+
width={18}
|
|
13
|
+
height={18}
|
|
14
|
+
fill='none'
|
|
15
|
+
{...props}
|
|
16
|
+
>
|
|
17
|
+
<mask
|
|
18
|
+
id='temperature-subtract_svg__a'
|
|
19
|
+
width={18}
|
|
20
|
+
height={18}
|
|
21
|
+
x={0}
|
|
22
|
+
y={0}
|
|
23
|
+
maskUnits='userSpaceOnUse'
|
|
24
|
+
style={{
|
|
25
|
+
maskType: 'alpha',
|
|
26
|
+
}}
|
|
27
|
+
>
|
|
28
|
+
<path fill='#2196F3' d='M0 0h18v18H0z' />
|
|
29
|
+
</mask>
|
|
30
|
+
<g mask='url(#temperature-subtract_svg__a)'>
|
|
31
|
+
<path fill='#9DA1A9' d='M3.75 9.75v-1.5h10.5v1.5H3.75Z' />
|
|
32
|
+
</g>
|
|
33
|
+
</svg>
|
|
34
|
+
)
|
|
35
|
+
}
|
|
@@ -25,11 +25,10 @@ export interface SeamContext {
|
|
|
25
25
|
clientSessionToken?: string | undefined
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
export type SeamProviderProps =
|
|
28
|
+
export type SeamProviderProps =
|
|
29
29
|
| SeamProviderPropsWithClient
|
|
30
30
|
| SeamProviderPropsWithPublishableKey
|
|
31
31
|
| SeamProviderPropsWithClientSessionToken
|
|
32
|
-
>
|
|
33
32
|
|
|
34
33
|
export interface SeamProviderPropsWithClient extends SeamProviderBaseProps {
|
|
35
34
|
client: Seam
|
|
@@ -48,7 +47,7 @@ export interface SeamProviderPropsWithClientSessionToken
|
|
|
48
47
|
clientSessionToken: string
|
|
49
48
|
}
|
|
50
49
|
|
|
51
|
-
interface SeamProviderBaseProps {
|
|
50
|
+
interface SeamProviderBaseProps extends PropsWithChildren {
|
|
52
51
|
disableCssInjection?: boolean | undefined
|
|
53
52
|
disableFontInjection?: boolean | undefined
|
|
54
53
|
unminifiyCss?: boolean | undefined
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { useMutation, type UseMutationResult } from '@tanstack/react-query'
|
|
2
|
+
import type {
|
|
3
|
+
AccessCode,
|
|
4
|
+
AccessCodeGenerateCodeRequest,
|
|
5
|
+
AccessCodeGenerateCodeResponse,
|
|
6
|
+
SeamError,
|
|
7
|
+
} from 'seamapi'
|
|
8
|
+
|
|
9
|
+
import { NullSeamClientError, useSeamClient } from 'lib/seam/use-seam-client.js'
|
|
10
|
+
|
|
11
|
+
export type UseGenerateAccessCodeCodeParams = never
|
|
12
|
+
export type UseGenerateAccessCodeCodeData = Pick<
|
|
13
|
+
AccessCode,
|
|
14
|
+
'code' | 'device_id'
|
|
15
|
+
>
|
|
16
|
+
export type UseGenerateAccessCodeCodeMutationParams =
|
|
17
|
+
AccessCodeGenerateCodeRequest
|
|
18
|
+
|
|
19
|
+
export function useGenerateAccessCodeCode(): UseMutationResult<
|
|
20
|
+
UseGenerateAccessCodeCodeData,
|
|
21
|
+
SeamError,
|
|
22
|
+
UseGenerateAccessCodeCodeMutationParams
|
|
23
|
+
> {
|
|
24
|
+
const { client } = useSeamClient()
|
|
25
|
+
|
|
26
|
+
return useMutation<
|
|
27
|
+
AccessCodeGenerateCodeResponse['generated_code'],
|
|
28
|
+
SeamError,
|
|
29
|
+
AccessCodeGenerateCodeRequest
|
|
30
|
+
>({
|
|
31
|
+
mutationFn: async (
|
|
32
|
+
mutationParams: UseGenerateAccessCodeCodeMutationParams
|
|
33
|
+
) => {
|
|
34
|
+
if (client === null) throw new NullSeamClientError()
|
|
35
|
+
return await client.accessCodes.generateCode(mutationParams)
|
|
36
|
+
},
|
|
37
|
+
})
|
|
38
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { DateTime } from 'luxon'
|
|
2
|
+
import type { ClimateSettingSchedule } from 'seamapi'
|
|
3
|
+
|
|
4
|
+
import { formatDateAndTime } from 'lib/dates.js'
|
|
5
|
+
import { ClimateSettingScheduleIcon } from 'lib/icons/ClimateSettingSchedule.js'
|
|
6
|
+
import { useClimateSettingSchedule } from 'lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.js'
|
|
7
|
+
import { DotDivider } from 'lib/ui/layout/DotDivider.js'
|
|
8
|
+
import { ClimateSettingStatus } from 'lib/ui/thermostat/ClimateSettingStatus.js'
|
|
9
|
+
import { useCurrentTime } from 'lib/ui/use-current-time.js'
|
|
10
|
+
|
|
11
|
+
import { ClimateSettingScheduleDeviceBar } from './ClimateSettingScheduleDeviceBar.js'
|
|
12
|
+
|
|
13
|
+
interface ClimateSettingScheduleCardProps {
|
|
14
|
+
climateSettingScheduleId: string
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function ClimateSettingScheduleCard({
|
|
18
|
+
climateSettingScheduleId,
|
|
19
|
+
}: ClimateSettingScheduleCardProps): JSX.Element {
|
|
20
|
+
return (
|
|
21
|
+
<div className='seam-climate-setting-schedule-card'>
|
|
22
|
+
<Content climateSettingScheduleId={climateSettingScheduleId} />
|
|
23
|
+
</div>
|
|
24
|
+
)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function Content(props: {
|
|
28
|
+
climateSettingScheduleId: string
|
|
29
|
+
}): JSX.Element | null {
|
|
30
|
+
const { climateSettingScheduleId } = props
|
|
31
|
+
|
|
32
|
+
const { climateSettingSchedule } = useClimateSettingSchedule(
|
|
33
|
+
climateSettingScheduleId
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
if (climateSettingSchedule == null) {
|
|
37
|
+
return null
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const name = climateSettingSchedule.name ?? t.fallbackName
|
|
41
|
+
|
|
42
|
+
return (
|
|
43
|
+
<div className='seam-climate-setting-schedule-content'>
|
|
44
|
+
<div className='seam-climate-setting-schedule-summary-container'>
|
|
45
|
+
<div className='seam-climate-setting-schedule-icon-block'>
|
|
46
|
+
<ClimateSettingScheduleIcon />
|
|
47
|
+
</div>
|
|
48
|
+
<div className='seam-climate-setting-schedule-summary'>
|
|
49
|
+
<h5 className='seam-climate-setting-schedule-heading'>{name}</h5>
|
|
50
|
+
<div className='seam-climate-setting-schedule-subheading'>
|
|
51
|
+
<ClimateSettingStatus climateSetting={climateSettingSchedule} />
|
|
52
|
+
<DotDivider />
|
|
53
|
+
<ClimateSettingScheduleTiming
|
|
54
|
+
climateSettingSchedule={climateSettingSchedule}
|
|
55
|
+
/>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
<ClimateSettingScheduleDeviceBar
|
|
60
|
+
deviceId={climateSettingSchedule.device_id}
|
|
61
|
+
/>
|
|
62
|
+
</div>
|
|
63
|
+
)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function ClimateSettingScheduleTiming(props: {
|
|
67
|
+
climateSettingSchedule: ClimateSettingSchedule
|
|
68
|
+
}): JSX.Element | null {
|
|
69
|
+
const { climateSettingSchedule } = props
|
|
70
|
+
|
|
71
|
+
const currentTime = useCurrentTime()
|
|
72
|
+
|
|
73
|
+
if (currentTime === null) return null
|
|
74
|
+
|
|
75
|
+
const startTime = DateTime.fromISO(climateSettingSchedule.schedule_starts_at)
|
|
76
|
+
const endTime = DateTime.fromISO(climateSettingSchedule.schedule_ends_at)
|
|
77
|
+
|
|
78
|
+
if (currentTime < startTime)
|
|
79
|
+
return (
|
|
80
|
+
<span>
|
|
81
|
+
{t.starts}{' '}
|
|
82
|
+
{formatDateAndTime(climateSettingSchedule.schedule_starts_at)}
|
|
83
|
+
</span>
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
if (startTime <= currentTime && currentTime <= endTime)
|
|
87
|
+
return (
|
|
88
|
+
<span>
|
|
89
|
+
{t.ends} {formatDateAndTime(climateSettingSchedule.schedule_starts_at)}
|
|
90
|
+
</span>
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
return <span>{t.expired}</span>
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const t = {
|
|
97
|
+
starts: 'Starts',
|
|
98
|
+
ends: 'Ends',
|
|
99
|
+
expired: 'Expired',
|
|
100
|
+
fallbackName: 'Climate Setting Schedule',
|
|
101
|
+
}
|