@seamapi/react 1.61.1 → 1.61.2

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.
Files changed (41) hide show
  1. package/README.md +1 -1
  2. package/dist/elements.js +1213 -1224
  3. package/dist/elements.js.map +1 -1
  4. package/dist/index.css +121 -12
  5. package/dist/index.css.map +1 -1
  6. package/dist/index.min.css +1 -1
  7. package/dist/index.min.css.map +1 -1
  8. package/lib/icons/CheckGreen.d.ts +2 -0
  9. package/lib/icons/CheckGreen.js +7 -0
  10. package/lib/icons/CheckGreen.js.map +1 -0
  11. package/lib/icons/CloseWhite.d.ts +2 -0
  12. package/lib/icons/CloseWhite.js +7 -0
  13. package/lib/icons/CloseWhite.js.map +1 -0
  14. package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.js +1 -2
  15. package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.js.map +1 -1
  16. package/lib/seam/components/SupportedDeviceTable/FilterCategoryMenu.js +12 -9
  17. package/lib/seam/components/SupportedDeviceTable/FilterCategoryMenu.js.map +1 -1
  18. package/lib/ui/Menu/Menu.js +32 -25
  19. package/lib/ui/Menu/Menu.js.map +1 -1
  20. package/lib/ui/Snackbar/Snackbar.d.ts +16 -0
  21. package/lib/ui/Snackbar/Snackbar.js +38 -0
  22. package/lib/ui/Snackbar/Snackbar.js.map +1 -0
  23. package/lib/ui/thermostat/ClimateModeMenu.js +4 -4
  24. package/lib/ui/thermostat/ClimateModeMenu.js.map +1 -1
  25. package/lib/version.d.ts +1 -1
  26. package/lib/version.js +1 -1
  27. package/package.json +2 -2
  28. package/src/lib/icons/CheckGreen.tsx +36 -0
  29. package/src/lib/icons/CloseWhite.tsx +36 -0
  30. package/src/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.tsx +1 -6
  31. package/src/lib/seam/components/SupportedDeviceTable/FilterCategoryMenu.tsx +20 -15
  32. package/src/lib/ui/Menu/Menu.tsx +50 -40
  33. package/src/lib/ui/Snackbar/Snackbar.tsx +97 -0
  34. package/src/lib/ui/thermostat/ClimateModeMenu.tsx +4 -4
  35. package/src/lib/version.ts +1 -1
  36. package/src/styles/_colors.scss +2 -0
  37. package/src/styles/_loading_toast.scss +5 -16
  38. package/src/styles/_main.scss +2 -0
  39. package/src/styles/_motion.scss +34 -0
  40. package/src/styles/_snackbar.scss +107 -0
  41. package/src/styles/_supported-device-table.scss +9 -0
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function CloseWhiteIcon(props) {
3
+ return (_jsxs("svg", { xmlns: 'http://www.w3.org/2000/svg', width: 24, height: 24, fill: 'none', ...props, children: [_jsx("mask", { id: 'close-white_svg__a', width: 24, height: 24, x: 0, y: 0, maskUnits: 'userSpaceOnUse', style: {
4
+ maskType: 'alpha',
5
+ }, children: _jsx("path", { fill: '#D9D9D9', d: 'M0 0h24v24H0z' }) }), _jsx("g", { mask: 'url(#close-white_svg__a)', children: _jsx("path", { fill: '#fff', d: 'M6.4 19 5 17.6l5.6-5.6L5 6.4 6.4 5l5.6 5.6L17.6 5 19 6.4 13.4 12l5.6 5.6-1.4 1.4-5.6-5.6L6.4 19Z' }) })] }));
6
+ }
7
+ //# sourceMappingURL=CloseWhite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CloseWhite.js","sourceRoot":"","sources":["../../src/lib/icons/CloseWhite.tsx"],"names":[],"mappings":";AAKA,MAAM,UAAU,cAAc,CAAC,KAA8B;IAC3D,OAAO,CACL,eACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE,EACV,IAAI,EAAC,MAAM,KACP,KAAK,aAET,eACE,EAAE,EAAC,oBAAoB,EACvB,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE,EACV,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,EACJ,SAAS,EAAC,gBAAgB,EAC1B,KAAK,EAAE;oBACL,QAAQ,EAAE,OAAO;iBAClB,YAED,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,eAAe,GAAG,GACpC,EACP,YAAG,IAAI,EAAC,0BAA0B,YAChC,eACE,IAAI,EAAC,MAAM,EACX,CAAC,EAAC,kGAAkG,GACpG,GACA,IACA,CACP,CAAA;AACH,CAAC"}
@@ -37,7 +37,7 @@ export function ThermostatDeviceDetails(props) {
37
37
  }, children: _jsx("div", { className: 'seam-detail-row-rotated-icon', children: _jsx(ChevronWideIcon, {}) }) }) }), _jsx(DetailSection, { label: t.currentSettings, tooltipContent: t.currentSettingsTooltip, children: _jsx(DetailRow, { label: t.climate, children: _jsx(ClimateSettingStatus, { climateSetting: device.properties.current_climate_setting, temperatureUnit: 'fahrenheit' }) }) }), _jsxs(DetailSection, { label: t.defaultSettings, tooltipContent: t.defaultSettingsTooltip, children: [_jsx(DetailRow, { label: t.defaultClimate, children: device.properties.default_climate_setting != null ? (_jsx(ClimateSettingStatus, { climateSetting: device.properties.default_climate_setting, temperatureUnit: 'fahrenheit' })) : (_jsx("p", { children: t.none })) }), _jsx(DetailRow, { label: t.allowManualOverride, children: _jsx("p", { children: device.properties.current_climate_setting
38
38
  .manual_override_allowed
39
39
  ? t.yes
40
- : t.no }) })] }), _jsxs(DetailSection, { label: t.deviceDetails, tooltipContent: t.deviceDetailsTooltip, children: [_jsx(DetailRow, { label: t.brand, children: _jsxs("div", { className: 'seam-detail-row-hstack', children: [device.properties.model.manufacturer_display_name, device.properties.manufacturer === 'ecobee' && _jsx(BeeIcon, {})] }) }), _jsx(DetailRow, { label: t.linkedAccount, sublabel: connectedAccount?.user_identifier?.email ??
40
+ : t.no }) })] }), _jsxs(DetailSection, { label: t.deviceDetails, children: [_jsx(DetailRow, { label: t.brand, children: _jsxs("div", { className: 'seam-detail-row-hstack', children: [device.properties.model.manufacturer_display_name, device.properties.manufacturer === 'ecobee' && _jsx(BeeIcon, {})] }) }), _jsx(DetailRow, { label: t.linkedAccount, sublabel: connectedAccount?.user_identifier?.email ??
41
41
  device.connected_account_id }), _jsx(DetailRow, { label: t.deviceId, sublabel: device.device_id })] })] }) })] })] }));
42
42
  }
43
43
  const t = {
@@ -55,7 +55,6 @@ const t = {
55
55
  defaultClimate: 'Default climate',
56
56
  allowManualOverride: 'Allow manual override',
57
57
  deviceDetails: 'Device details',
58
- deviceDetailsTooltip: 'When a scheduled climate reaches its end time, the default settings will kick in.',
59
58
  brand: 'Brand',
60
59
  linkedAccount: 'Linked account',
61
60
  deviceId: 'Device ID',
@@ -1 +1 @@
1
- {"version":3,"file":"ThermostatDeviceDetails.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ThermostatDeviceDetails.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.tsx"],"names":[],"mappings":"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"}
@@ -3,15 +3,18 @@ import { ChevronDownIcon } from '../../../../lib/icons/ChevronDown.js';
3
3
  import { Menu } from '../../../../lib/ui/Menu/Menu.js';
4
4
  import { MenuItem } from '../../../../lib/ui/Menu/MenuItem.js';
5
5
  export function FilterCategoryMenu({ label = t.filter, allLabel, options, hideAllOption = false, onSelect, onAllOptionSelect, buttonLabel, }) {
6
- const usableOptions = hideAllOption ? options : [allLabel, ...options];
7
- return (_jsxs("div", { className: 'seam-supported-device-table-filter-menu-wrap', children: [_jsx("p", { children: label }), _jsx(Menu, { renderButton: ({ onOpen }) => (_jsxs("button", { onClick: onOpen, children: [_jsx("span", { children: buttonLabel }), _jsx(ChevronDownIcon, {})] })), children: usableOptions.map((option, index) => (_jsx(MenuItem, { onClick: () => {
8
- if (option === allLabel) {
9
- onAllOptionSelect?.();
10
- }
11
- else {
12
- onSelect(option);
13
- }
14
- }, children: _jsx("span", { children: option }) }, `${index}:${option}`))) })] }));
6
+ const sortedOptions = [...options].sort((a, b) => a.localeCompare(b));
7
+ const usableOptions = hideAllOption
8
+ ? sortedOptions
9
+ : [allLabel, ...sortedOptions];
10
+ return (_jsxs("div", { className: 'seam-supported-device-table-filter-menu-wrap', children: [_jsx("p", { children: label }), _jsx(Menu, { renderButton: ({ onOpen }) => (_jsxs("button", { onClick: onOpen, children: [_jsx("span", { children: buttonLabel }), _jsx(ChevronDownIcon, {})] })), children: _jsx("div", { className: 'seam-supported-device-table-filter-menu-content', children: usableOptions.map((option, index) => (_jsx(MenuItem, { onClick: () => {
11
+ if (option === allLabel) {
12
+ onAllOptionSelect?.();
13
+ }
14
+ else {
15
+ onSelect(option);
16
+ }
17
+ }, children: _jsx("span", { children: option }) }, `${index}:${option}`))) }) })] }));
15
18
  }
16
19
  const t = {
17
20
  filter: 'Filter',
@@ -1 +1 @@
1
- {"version":3,"file":"FilterCategoryMenu.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/SupportedDeviceTable/FilterCategoryMenu.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AA2BlD,MAAM,UAAU,kBAAkB,CAAC,EACjC,KAAK,GAAG,CAAC,CAAC,MAAM,EAChB,QAAQ,EACR,OAAO,EACP,aAAa,GAAG,KAAK,EACrB,QAAQ,EACR,iBAAiB,EACjB,WAAW,GACa;IACxB,MAAM,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAA;IAEtE,OAAO,CACL,eAAK,SAAS,EAAC,8CAA8C,aAC3D,sBAAI,KAAK,GAAK,EACd,KAAC,IAAI,IACH,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAC5B,kBAAQ,OAAO,EAAE,MAAM,aACrB,yBAAO,WAAW,GAAQ,EAC1B,KAAC,eAAe,KAAG,IACZ,CACV,YAEA,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CACpC,KAAC,QAAQ,IAEP,OAAO,EAAE,GAAG,EAAE;wBACZ,IAAI,MAAM,KAAK,QAAQ,EAAE;4BACvB,iBAAiB,EAAE,EAAE,CAAA;yBACtB;6BAAM;4BACL,QAAQ,CAAC,MAAM,CAAC,CAAA;yBACjB;oBACH,CAAC,YAED,yBAAO,MAAM,GAAQ,IAThB,GAAG,KAAK,IAAI,MAAM,EAAE,CAUhB,CACZ,CAAC,GACG,IACH,CACP,CAAA;AACH,CAAC;AAED,MAAM,CAAC,GAAG;IACR,MAAM,EAAE,QAAQ;CACjB,CAAA"}
1
+ {"version":3,"file":"FilterCategoryMenu.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/SupportedDeviceTable/FilterCategoryMenu.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AA2BlD,MAAM,UAAU,kBAAkB,CAAC,EACjC,KAAK,GAAG,CAAC,CAAC,MAAM,EAChB,QAAQ,EACR,OAAO,EACP,aAAa,GAAG,KAAK,EACrB,QAAQ,EACR,iBAAiB,EACjB,WAAW,GACa;IACxB,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IACrE,MAAM,aAAa,GAAG,aAAa;QACjC,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,aAAa,CAAC,CAAA;IAEhC,OAAO,CACL,eAAK,SAAS,EAAC,8CAA8C,aAC3D,sBAAI,KAAK,GAAK,EACd,KAAC,IAAI,IACH,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAC5B,kBAAQ,OAAO,EAAE,MAAM,aACrB,yBAAO,WAAW,GAAQ,EAC1B,KAAC,eAAe,KAAG,IACZ,CACV,YAED,cAAK,SAAS,EAAC,iDAAiD,YAC7D,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CACpC,KAAC,QAAQ,IAEP,OAAO,EAAE,GAAG,EAAE;4BACZ,IAAI,MAAM,KAAK,QAAQ,EAAE;gCACvB,iBAAiB,EAAE,EAAE,CAAA;6BACtB;iCAAM;gCACL,QAAQ,CAAC,MAAM,CAAC,CAAA;6BACjB;wBACH,CAAC,YAED,yBAAO,MAAM,GAAQ,IAThB,GAAG,KAAK,IAAI,MAAM,EAAE,CAUhB,CACZ,CAAC,GACE,GACD,IACH,CACP,CAAA;AACH,CAAC;AAED,MAAM,CAAC,GAAG;IACR,MAAM,EAAE,QAAQ;CACjB,CAAA"}
@@ -8,19 +8,19 @@ const menuContext = createContext({
8
8
  });
9
9
  export function Menu({ verticalOffset = 5, horizontalOffset = 0, edgeOffset = 5, children, renderButton, backgroundProps, }) {
10
10
  const { Provider } = menuContext;
11
- const [anchorEl, setAnchorEl] = useState(null);
12
11
  const [documentEl, setDocumentEl] = useState(null);
12
+ const [bodyEl, setBodyEl] = useState(null);
13
+ const [anchorEl, setAnchorEl] = useState(null);
13
14
  const [contentEl, setContentEl] = useState(null);
14
15
  const [top, setTop] = useState(0);
15
16
  const [left, setLeft] = useState(0);
16
17
  useEffect(() => {
17
- const containers = globalThis.document?.querySelectorAll(seamComponentsClassName);
18
- if (containers == null)
18
+ const documentEl = globalThis.document.documentElement;
19
+ setDocumentEl(documentEl);
20
+ const bodyElements = documentEl?.getElementsByTagName('body');
21
+ if (bodyElements[0] == null)
19
22
  return;
20
- const el = containers[containers.length - 1];
21
- if (el != null) {
22
- setDocumentEl(el);
23
- }
23
+ setBodyEl(bodyElements[0]);
24
24
  }, [setDocumentEl]);
25
25
  const handleClose = () => {
26
26
  setAnchorEl(null);
@@ -29,13 +29,19 @@ export function Menu({ verticalOffset = 5, horizontalOffset = 0, edgeOffset = 5,
29
29
  setAnchorEl(event.currentTarget);
30
30
  };
31
31
  const setPositions = useCallback(() => {
32
- if (anchorEl == null || contentEl == null || documentEl == null)
32
+ if (anchorEl == null ||
33
+ contentEl == null ||
34
+ bodyEl == null ||
35
+ documentEl == null)
33
36
  return;
34
- const { right: containerRight, bottom: containerBottom } = documentEl.getBoundingClientRect();
35
- const { height: anchorHeight } = anchorEl.getBoundingClientRect();
36
- const anchorTop = anchorEl.offsetTop;
37
- const anchorLeft = anchorEl.offsetLeft;
38
- const { width: contentWidth, height: contentHeight } = contentEl.getBoundingClientRect();
37
+ const containerRight = documentEl.offsetLeft + documentEl.clientWidth;
38
+ const containerBottom = documentEl.offsetTop + documentEl.clientHeight;
39
+ const anchorBox = anchorEl.getBoundingClientRect();
40
+ const anchorTop = anchorBox.top + bodyEl.clientTop;
41
+ const anchorLeft = anchorBox.left + bodyEl.clientLeft;
42
+ const anchorHeight = anchorEl.offsetHeight;
43
+ const contentWidth = contentEl.offsetWidth;
44
+ const contentHeight = contentEl.offsetHeight;
39
45
  const anchorBottom = anchorTop + anchorHeight;
40
46
  const top = anchorBottom + verticalOffset;
41
47
  const left = anchorLeft + horizontalOffset;
@@ -49,17 +55,18 @@ export function Menu({ verticalOffset = 5, horizontalOffset = 0, edgeOffset = 5,
49
55
  setLeft(visibleLeft);
50
56
  // If the content would overflow bottom, position it above the anchor.
51
57
  const isOverFlowingBottom = bottom > containerBottom;
52
- const visibleTop = isOverFlowingBottom
53
- ? anchorTop - contentHeight - verticalOffset
54
- : top;
58
+ const topWhenAboveAnchor = anchorTop - contentHeight - verticalOffset;
59
+ // Only open the menu above the anchor if it won't get clipped, i.e., not < 0.
60
+ const visibleTop = isOverFlowingBottom && topWhenAboveAnchor > 0 ? topWhenAboveAnchor : top;
55
61
  setTop(visibleTop);
56
62
  }, [
57
63
  anchorEl,
58
64
  horizontalOffset,
59
65
  verticalOffset,
60
66
  contentEl,
61
- documentEl,
62
67
  edgeOffset,
68
+ bodyEl,
69
+ documentEl,
63
70
  ]);
64
71
  useLayoutEffect(() => {
65
72
  setPositions();
@@ -73,18 +80,18 @@ export function Menu({ verticalOffset = 5, horizontalOffset = 0, edgeOffset = 5,
73
80
  const isOpen = anchorEl != null;
74
81
  const hasSetPosition = top !== 0 && left !== 0;
75
82
  const visible = isOpen && hasSetPosition;
76
- if (documentEl == null) {
83
+ if (bodyEl == null) {
77
84
  return null;
78
85
  }
79
86
  return (_jsxs(Provider, { value: {
80
87
  close: handleClose,
81
- }, children: [renderButton({ onOpen: handleOpen }), createPortal(_jsx("div", { className: classNames('seam-menu-bg', backgroundProps?.className, visible ? 'seam-menu-visible' : 'seam-menu-hidden'), onClick: (event) => {
82
- event.stopPropagation();
83
- handleClose();
84
- }, children: _jsx("div", { className: 'seam-menu-content', style: {
85
- top,
86
- left,
87
- }, children: children }) }), documentEl), _jsx("div", { className: 'seam-menu-shadow', children: _jsx("div", { className: 'seam-menu-content', ref: setContentEl, children: children }) })] }));
88
+ }, children: [renderButton({ onOpen: handleOpen }), createPortal(_jsx("div", { className: seamComponentsClassName, children: _jsx("div", { className: classNames('seam-menu-bg', backgroundProps?.className, visible ? 'seam-menu-visible' : 'seam-menu-hidden'), onClick: (event) => {
89
+ event.stopPropagation();
90
+ handleClose();
91
+ }, children: _jsx("div", { className: 'seam-menu-content', style: {
92
+ top,
93
+ left,
94
+ }, children: children }) }) }), bodyEl), _jsx("div", { className: 'seam-menu-shadow', children: _jsx("div", { className: 'seam-menu-content', ref: setContentEl, children: children }) })] }));
88
95
  }
89
96
  export function useMenu() {
90
97
  return useContext(menuContext);
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../../src/lib/ui/Menu/Menu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../../src/lib/ui/Menu/Menu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /// <reference types="react" resolution-mode="require"/>
2
+ type SnackbarVariant = 'success' | 'error';
3
+ interface SnackbarProps {
4
+ message: string;
5
+ variant: SnackbarVariant;
6
+ visible: boolean;
7
+ action?: {
8
+ label: string;
9
+ onClick: () => void;
10
+ };
11
+ autoDismiss?: boolean;
12
+ dismissAfterMs?: number;
13
+ disableCloseButton?: boolean;
14
+ }
15
+ export declare function Snackbar({ message, variant, visible, action, autoDismiss, dismissAfterMs, disableCloseButton, }: SnackbarProps): JSX.Element;
16
+ export {};
@@ -0,0 +1,38 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import classNames from 'classnames';
3
+ import { useEffect, useState } from 'react';
4
+ import { CheckGreenIcon } from '../../../lib/icons/CheckGreen.js';
5
+ import { CloseWhiteIcon } from '../../../lib/icons/CloseWhite.js';
6
+ import { ExclamationCircleIcon } from '../../../lib/icons/ExclamationCircle.js';
7
+ export function Snackbar({ message, variant, visible, action, autoDismiss = false, dismissAfterMs = 5000, disableCloseButton = false, }) {
8
+ const [hidden, setHidden] = useState(visible);
9
+ const { label: actionLabel, onClick: handleActionClick } = action ?? {};
10
+ useEffect(() => {
11
+ setHidden(!visible);
12
+ }, [visible]);
13
+ useEffect(() => {
14
+ if (!autoDismiss) {
15
+ return () => { };
16
+ }
17
+ const timeout = globalThis.setTimeout(() => {
18
+ setHidden(false);
19
+ }, dismissAfterMs);
20
+ return () => {
21
+ globalThis.clearTimeout(timeout);
22
+ };
23
+ }, [autoDismiss, dismissAfterMs]);
24
+ return (_jsx("div", { className: 'seam-snackbar-wrap', children: _jsxs("div", { className: classNames('seam-snackbar', {
25
+ 'seam-snackbar-hide': hidden,
26
+ }), children: [_jsx(SnackbarIcon, { variant: variant }), _jsx("div", { className: 'seam-snackbar-message-wrap', children: _jsx("p", { className: 'seam-snackbar-message', children: message }) }), _jsxs("div", { className: 'seam-snackbar-actions-wrap', children: [action != null && (_jsx("button", { className: 'seam-snackbar-action', onClick: handleActionClick, children: _jsx("span", { className: 'seam-snackbar-action-label', children: actionLabel }) })), !disableCloseButton && (_jsx("button", { className: 'seam-snackbar-close-button', onClick: () => {
27
+ setHidden(true);
28
+ }, children: _jsx(CloseWhiteIcon, {}) }))] })] }) }));
29
+ }
30
+ function SnackbarIcon(props) {
31
+ switch (props.variant) {
32
+ case 'success':
33
+ return _jsx(CheckGreenIcon, {});
34
+ case 'error':
35
+ return _jsx(ExclamationCircleIcon, {});
36
+ }
37
+ }
38
+ //# sourceMappingURL=Snackbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Snackbar.js","sourceRoot":"","sources":["../../../src/lib/ui/Snackbar/Snackbar.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AAiBtE,MAAM,UAAU,QAAQ,CAAC,EACvB,OAAO,EACP,OAAO,EACP,OAAO,EACP,MAAM,EACN,WAAW,GAAG,KAAK,EACnB,cAAc,GAAG,IAAI,EACrB,kBAAkB,GAAG,KAAK,GACZ;IACd,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;IAE7C,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,MAAM,IAAI,EAAE,CAAA;IAEvE,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,CAAC,CAAC,OAAO,CAAC,CAAA;IACrB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAEb,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;SAChB;QAED,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE;YACzC,SAAS,CAAC,KAAK,CAAC,CAAA;QAClB,CAAC,EAAE,cAAc,CAAC,CAAA;QAElB,OAAO,GAAG,EAAE;YACV,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QAClC,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAA;IAEjC,OAAO,CACL,cAAK,SAAS,EAAC,oBAAoB,YACjC,eACE,SAAS,EAAE,UAAU,CAAC,eAAe,EAAE;gBACrC,oBAAoB,EAAE,MAAM;aAC7B,CAAC,aAEF,KAAC,YAAY,IAAC,OAAO,EAAE,OAAO,GAAI,EAClC,cAAK,SAAS,EAAC,4BAA4B,YACzC,YAAG,SAAS,EAAC,uBAAuB,YAAE,OAAO,GAAK,GAC9C,EACN,eAAK,SAAS,EAAC,4BAA4B,aACxC,MAAM,IAAI,IAAI,IAAI,CACjB,iBACE,SAAS,EAAC,sBAAsB,EAChC,OAAO,EAAE,iBAAiB,YAE1B,eAAM,SAAS,EAAC,4BAA4B,YAAE,WAAW,GAAQ,GAC1D,CACV,EACA,CAAC,kBAAkB,IAAI,CACtB,iBACE,SAAS,EAAC,4BAA4B,EACtC,OAAO,EAAE,GAAG,EAAE;gCACZ,SAAS,CAAC,IAAI,CAAC,CAAA;4BACjB,CAAC,YAED,KAAC,cAAc,KAAG,GACX,CACV,IACG,IACF,GACF,CACP,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAmC;IACvD,QAAQ,KAAK,CAAC,OAAO,EAAE;QACrB,KAAK,SAAS;YACZ,OAAO,KAAC,cAAc,KAAG,CAAA;QAC3B,KAAK,OAAO;YACV,OAAO,KAAC,qBAAqB,KAAG,CAAA;KACnC;AACH,CAAC"}
@@ -8,14 +8,14 @@ import { Menu } from '../../../lib/ui/Menu/Menu.js';
8
8
  import { ThermoModeMenuOption } from '../../../lib/ui/thermostat/ThermoModeMenuOption.js';
9
9
  const modes = ['heat', 'cool', 'heat_cool', 'off'];
10
10
  export function ClimateModeMenu({ mode, onChange, }) {
11
- return (_jsx(Menu, { renderButton: ({ onOpen }) => (_jsxs("button", { onClick: onOpen, className: 'seam-climate-mode-menu-button', children: [_jsx("div", { className: 'seam-climate-mode-menu-button-icon', children: ModeIcon(mode) }), _jsx(ChevronDownIcon, {})] })), verticalOffset: -180, horizontalOffset: -32, backgroundProps: {
11
+ return (_jsx(Menu, { renderButton: ({ onOpen }) => (_jsxs("button", { onClick: onOpen, className: 'seam-climate-mode-menu-button', children: [_jsx("div", { className: 'seam-climate-mode-menu-button-icon', children: _jsx(ModeIcon, { mode: mode }) }), _jsx(ChevronDownIcon, {})] })), verticalOffset: -180, horizontalOffset: -32, backgroundProps: {
12
12
  className: 'seam-thermo-mode-menu',
13
- }, children: modes.map((m) => (_jsx(ThermoModeMenuOption, { label: t[m], icon: ModeIcon(m), isSelected: mode === m, onClick: () => {
13
+ }, children: modes.map((m) => (_jsx(ThermoModeMenuOption, { label: t[m], icon: _jsx(ModeIcon, { mode: m }), isSelected: mode === m, onClick: () => {
14
14
  onChange(m);
15
15
  } }, m))) }));
16
16
  }
17
- function ModeIcon(mode) {
18
- switch (mode) {
17
+ function ModeIcon(props) {
18
+ switch (props.mode) {
19
19
  case 'heat':
20
20
  return _jsx(ThermostatHeatIcon, {});
21
21
  case 'cool':
@@ -1 +1 @@
1
- {"version":3,"file":"ClimateModeMenu.js","sourceRoot":"","sources":["../../../src/lib/ui/thermostat/ClimateModeMenu.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAEhF,MAAM,KAAK,GAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAA;AAOrE,MAAM,UAAU,eAAe,CAAC,EAC9B,IAAI,EACJ,QAAQ,GACa;IACrB,OAAO,CACL,KAAC,IAAI,IACH,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAC5B,kBAAQ,OAAO,EAAE,MAAM,EAAE,SAAS,EAAC,+BAA+B,aAChE,cAAK,SAAS,EAAC,oCAAoC,YAChD,QAAQ,CAAC,IAAI,CAAC,GACX,EACN,KAAC,eAAe,KAAG,IACZ,CACV,EACD,cAAc,EAAE,CAAC,GAAG,EACpB,gBAAgB,EAAE,CAAC,EAAE,EACrB,eAAe,EAAE;YACf,SAAS,EAAE,uBAAuB;SACnC,YAEA,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAChB,KAAC,oBAAoB,IAEnB,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EACX,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EACjB,UAAU,EAAE,IAAI,KAAK,CAAC,EACtB,OAAO,EAAE,GAAG,EAAE;gBACZ,QAAQ,CAAC,CAAC,CAAC,CAAA;YACb,CAAC,IANI,CAAC,CAON,CACH,CAAC,GACG,CACR,CAAA;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,IAAqB;IACrC,QAAQ,IAAI,EAAE;QACZ,KAAK,MAAM;YACT,OAAO,KAAC,kBAAkB,KAAG,CAAA;QAC/B,KAAK,MAAM;YACT,OAAO,KAAC,kBAAkB,KAAG,CAAA;QAC/B,KAAK,WAAW;YACd,OAAO,KAAC,sBAAsB,KAAG,CAAA;QACnC,KAAK,KAAK;YACR,OAAO,KAAC,OAAO,KAAG,CAAA;KACrB;AACH,CAAC;AAED,MAAM,CAAC,GAAG;IACR,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,aAAa;IACxB,GAAG,EAAE,KAAK;CACX,CAAA"}
1
+ {"version":3,"file":"ClimateModeMenu.js","sourceRoot":"","sources":["../../../src/lib/ui/thermostat/ClimateModeMenu.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAEhF,MAAM,KAAK,GAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAA;AAOrE,MAAM,UAAU,eAAe,CAAC,EAC9B,IAAI,EACJ,QAAQ,GACa;IACrB,OAAO,CACL,KAAC,IAAI,IACH,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAC5B,kBAAQ,OAAO,EAAE,MAAM,EAAE,SAAS,EAAC,+BAA+B,aAChE,cAAK,SAAS,EAAC,oCAAoC,YACjD,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,GAAI,GACpB,EACN,KAAC,eAAe,KAAG,IACZ,CACV,EACD,cAAc,EAAE,CAAC,GAAG,EACpB,gBAAgB,EAAE,CAAC,EAAE,EACrB,eAAe,EAAE;YACf,SAAS,EAAE,uBAAuB;SACnC,YAEA,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAChB,KAAC,oBAAoB,IAEnB,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EACX,IAAI,EAAE,KAAC,QAAQ,IAAC,IAAI,EAAE,CAAC,GAAI,EAC3B,UAAU,EAAE,IAAI,KAAK,CAAC,EACtB,OAAO,EAAE,GAAG,EAAE;gBACZ,QAAQ,CAAC,CAAC,CAAC,CAAA;YACb,CAAC,IANI,CAAC,CAON,CACH,CAAC,GACG,CACR,CAAA;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAgC;IAChD,QAAQ,KAAK,CAAC,IAAI,EAAE;QAClB,KAAK,MAAM;YACT,OAAO,KAAC,kBAAkB,KAAG,CAAA;QAC/B,KAAK,MAAM;YACT,OAAO,KAAC,kBAAkB,KAAG,CAAA;QAC/B,KAAK,WAAW;YACd,OAAO,KAAC,sBAAsB,KAAG,CAAA;QACnC,KAAK,KAAK;YACR,OAAO,KAAC,OAAO,KAAG,CAAA;KACrB;AACH,CAAC;AAED,MAAM,CAAC,GAAG;IACR,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,aAAa;IACxB,GAAG,EAAE,KAAK;CACX,CAAA"}
package/lib/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const seamapiReactVersion = "1.61.1";
1
+ declare const seamapiReactVersion = "1.61.2";
2
2
  export default seamapiReactVersion;
package/lib/version.js CHANGED
@@ -1,3 +1,3 @@
1
- const seamapiReactVersion = '1.61.1';
1
+ const seamapiReactVersion = '1.61.2';
2
2
  export default seamapiReactVersion;
3
3
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seamapi/react",
3
- "version": "1.61.1",
3
+ "version": "1.61.2",
4
4
  "description": "Seam Components.",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -134,7 +134,7 @@
134
134
  "@mui/icons-material": "^5.11.16",
135
135
  "@mui/material": "^5.12.2",
136
136
  "@rxfork/r2wc-react-to-web-component": "^2.3.0",
137
- "@seamapi/fake-seam-connect": "^1.14.0",
137
+ "@seamapi/fake-seam-connect": "^1.17.0",
138
138
  "@storybook/addon-designs": "^7.0.1",
139
139
  "@storybook/addon-essentials": "^7.0.2",
140
140
  "@storybook/addon-links": "^7.0.2",
@@ -0,0 +1,36 @@
1
+ /*
2
+ * Automatically 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 CheckGreenIcon(props: SVGProps<SVGSVGElement>): JSX.Element {
7
+ return (
8
+ <svg
9
+ xmlns='http://www.w3.org/2000/svg'
10
+ width={24}
11
+ height={24}
12
+ fill='none'
13
+ {...props}
14
+ >
15
+ <mask
16
+ id='check-green_svg__a'
17
+ width={24}
18
+ height={24}
19
+ x={0}
20
+ y={0}
21
+ maskUnits='userSpaceOnUse'
22
+ style={{
23
+ maskType: 'alpha',
24
+ }}
25
+ >
26
+ <path fill='#D9D9D9' d='M0 0h24v24H0z' />
27
+ </mask>
28
+ <g mask='url(#check-green_svg__a)'>
29
+ <path
30
+ fill='#27AE60'
31
+ d='m10.6 16.6 7.05-7.05-1.4-1.4-5.65 5.65-2.85-2.85-1.4 1.4 4.25 4.25ZM12 22a9.733 9.733 0 0 1-3.9-.788 10.092 10.092 0 0 1-3.175-2.137c-.9-.9-1.612-1.958-2.137-3.175A9.733 9.733 0 0 1 2 12c0-1.383.263-2.683.788-3.9a10.092 10.092 0 0 1 2.137-3.175c.9-.9 1.958-1.613 3.175-2.138A9.743 9.743 0 0 1 12 2c1.383 0 2.683.262 3.9.787a10.105 10.105 0 0 1 3.175 2.138c.9.9 1.612 1.958 2.137 3.175A9.733 9.733 0 0 1 22 12a9.733 9.733 0 0 1-.788 3.9 10.092 10.092 0 0 1-2.137 3.175c-.9.9-1.958 1.612-3.175 2.137A9.733 9.733 0 0 1 12 22Z'
32
+ />
33
+ </g>
34
+ </svg>
35
+ )
36
+ }
@@ -0,0 +1,36 @@
1
+ /*
2
+ * Automatically 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 CloseWhiteIcon(props: SVGProps<SVGSVGElement>): JSX.Element {
7
+ return (
8
+ <svg
9
+ xmlns='http://www.w3.org/2000/svg'
10
+ width={24}
11
+ height={24}
12
+ fill='none'
13
+ {...props}
14
+ >
15
+ <mask
16
+ id='close-white_svg__a'
17
+ width={24}
18
+ height={24}
19
+ x={0}
20
+ y={0}
21
+ maskUnits='userSpaceOnUse'
22
+ style={{
23
+ maskType: 'alpha',
24
+ }}
25
+ >
26
+ <path fill='#D9D9D9' d='M0 0h24v24H0z' />
27
+ </mask>
28
+ <g mask='url(#close-white_svg__a)'>
29
+ <path
30
+ fill='#fff'
31
+ d='M6.4 19 5 17.6l5.6-5.6L5 6.4 6.4 5l5.6 5.6L17.6 5 19 6.4 13.4 12l5.6 5.6-1.4 1.4-5.6-5.6L6.4 19Z'
32
+ />
33
+ </g>
34
+ </svg>
35
+ )
36
+ }
@@ -128,10 +128,7 @@ export function ThermostatDeviceDetails(
128
128
  </DetailRow>
129
129
  </DetailSection>
130
130
 
131
- <DetailSection
132
- label={t.deviceDetails}
133
- tooltipContent={t.deviceDetailsTooltip}
134
- >
131
+ <DetailSection label={t.deviceDetails}>
135
132
  <DetailRow label={t.brand}>
136
133
  <div className='seam-detail-row-hstack'>
137
134
  {device.properties.model.manufacturer_display_name}
@@ -172,8 +169,6 @@ const t = {
172
169
  defaultClimate: 'Default climate',
173
170
  allowManualOverride: 'Allow manual override',
174
171
  deviceDetails: 'Device details',
175
- deviceDetailsTooltip:
176
- 'When a scheduled climate reaches its end time, the default settings will kick in.',
177
172
  brand: 'Brand',
178
173
  linkedAccount: 'Linked account',
179
174
  deviceId: 'Device ID',
@@ -36,7 +36,10 @@ export function FilterCategoryMenu({
36
36
  onAllOptionSelect,
37
37
  buttonLabel,
38
38
  }: FilterCategoryMenuProps): JSX.Element {
39
- const usableOptions = hideAllOption ? options : [allLabel, ...options]
39
+ const sortedOptions = [...options].sort((a, b) => a.localeCompare(b))
40
+ const usableOptions = hideAllOption
41
+ ? sortedOptions
42
+ : [allLabel, ...sortedOptions]
40
43
 
41
44
  return (
42
45
  <div className='seam-supported-device-table-filter-menu-wrap'>
@@ -49,20 +52,22 @@ export function FilterCategoryMenu({
49
52
  </button>
50
53
  )}
51
54
  >
52
- {usableOptions.map((option, index) => (
53
- <MenuItem
54
- key={`${index}:${option}`}
55
- onClick={() => {
56
- if (option === allLabel) {
57
- onAllOptionSelect?.()
58
- } else {
59
- onSelect(option)
60
- }
61
- }}
62
- >
63
- <span>{option}</span>
64
- </MenuItem>
65
- ))}
55
+ <div className='seam-supported-device-table-filter-menu-content'>
56
+ {usableOptions.map((option, index) => (
57
+ <MenuItem
58
+ key={`${index}:${option}`}
59
+ onClick={() => {
60
+ if (option === allLabel) {
61
+ onAllOptionSelect?.()
62
+ } else {
63
+ onSelect(option)
64
+ }
65
+ }}
66
+ >
67
+ <span>{option}</span>
68
+ </MenuItem>
69
+ ))}
70
+ </div>
66
71
  </Menu>
67
72
  </div>
68
73
  )