@seamapi/react 1.61.0 → 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 (127) hide show
  1. package/README.md +1 -1
  2. package/dist/elements.js +3679 -3727
  3. package/dist/elements.js.map +1 -1
  4. package/dist/index.css +134 -25
  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/dates.d.ts +6 -67
  9. package/lib/dates.js +13 -111
  10. package/lib/dates.js.map +1 -1
  11. package/lib/icons/CheckGreen.d.ts +2 -0
  12. package/lib/icons/CheckGreen.js +7 -0
  13. package/lib/icons/CheckGreen.js.map +1 -0
  14. package/lib/icons/CloseWhite.d.ts +2 -0
  15. package/lib/icons/CloseWhite.js +7 -0
  16. package/lib/icons/CloseWhite.js.map +1 -0
  17. package/lib/seam/components/AccessCodeDetails/AccessCodeDetails.js +14 -20
  18. package/lib/seam/components/AccessCodeDetails/AccessCodeDetails.js.map +1 -1
  19. package/lib/seam/components/AccessCodeTable/CodeDetails.js +4 -6
  20. package/lib/seam/components/AccessCodeTable/CodeDetails.js.map +1 -1
  21. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.js +8 -8
  22. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.js.map +1 -1
  23. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.js +2 -2
  24. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.js.map +1 -1
  25. package/lib/seam/components/ClimateSettingScheduleDetails/dates.d.ts +1 -0
  26. package/lib/seam/components/ClimateSettingScheduleDetails/dates.js +9 -0
  27. package/lib/seam/components/ClimateSettingScheduleDetails/dates.js.map +1 -0
  28. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.js +4 -6
  29. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.js.map +1 -1
  30. package/lib/seam/components/CreateAccessCodeForm/CreateAccessCodeForm.js +3 -4
  31. package/lib/seam/components/CreateAccessCodeForm/CreateAccessCodeForm.js.map +1 -1
  32. package/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.js +3 -4
  33. package/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.js.map +1 -1
  34. package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.js +1 -2
  35. package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.js.map +1 -1
  36. package/lib/seam/components/EditAccessCodeForm/EditAccessCodeForm.js +3 -4
  37. package/lib/seam/components/EditAccessCodeForm/EditAccessCodeForm.js.map +1 -1
  38. package/lib/seam/components/SupportedDeviceTable/FilterCategoryMenu.js +12 -9
  39. package/lib/seam/components/SupportedDeviceTable/FilterCategoryMenu.js.map +1 -1
  40. package/lib/ui/AccessCodeForm/AccessCodeForm.d.ts +1 -1
  41. package/lib/ui/AccessCodeForm/AccessCodeForm.js +45 -46
  42. package/lib/ui/AccessCodeForm/AccessCodeForm.js.map +1 -1
  43. package/lib/ui/AccessCodeForm/AccessCodeFormDatePicker.d.ts +8 -7
  44. package/lib/ui/AccessCodeForm/AccessCodeFormDatePicker.js +8 -4
  45. package/lib/ui/AccessCodeForm/AccessCodeFormDatePicker.js.map +1 -1
  46. package/lib/ui/AccessCodeForm/AccessCodeFormTimeZonePicker.d.ts +8 -0
  47. package/lib/ui/AccessCodeForm/AccessCodeFormTimeZonePicker.js +17 -0
  48. package/lib/ui/AccessCodeForm/{AccessCodeFormTimezonePicker.js.map → AccessCodeFormTimeZonePicker.js.map} +1 -1
  49. package/lib/ui/AccessCodeForm/AccessCodeFormTimes.d.ts +3 -2
  50. package/lib/ui/AccessCodeForm/AccessCodeFormTimes.js +3 -2
  51. package/lib/ui/AccessCodeForm/AccessCodeFormTimes.js.map +1 -1
  52. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.d.ts +2 -2
  53. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.js +9 -9
  54. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.js.map +1 -1
  55. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.d.ts +3 -3
  56. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.js +4 -4
  57. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.js.map +1 -1
  58. package/lib/ui/ClimateSettingForm/{ClimateSettingScheduleFormTimezonePicker.d.ts → ClimateSettingScheduleFormTimeZonePicker.d.ts} +2 -2
  59. package/lib/ui/ClimateSettingForm/{ClimateSettingScheduleFormTimezonePicker.js → ClimateSettingScheduleFormTimeZonePicker.js} +5 -5
  60. package/lib/ui/ClimateSettingForm/{ClimateSettingScheduleFormTimezonePicker.js.map → ClimateSettingScheduleFormTimeZonePicker.js.map} +1 -1
  61. package/lib/ui/LoadingToast/LoadingToast.js +12 -14
  62. package/lib/ui/LoadingToast/LoadingToast.js.map +1 -1
  63. package/lib/ui/Menu/Menu.js +32 -25
  64. package/lib/ui/Menu/Menu.js.map +1 -1
  65. package/lib/ui/Snackbar/Snackbar.d.ts +16 -0
  66. package/lib/ui/Snackbar/Snackbar.js +38 -0
  67. package/lib/ui/Snackbar/Snackbar.js.map +1 -0
  68. package/lib/ui/TimeZonePicker/TimeZonePicker.d.ts +8 -0
  69. package/lib/ui/TimeZonePicker/TimeZonePicker.js +28 -0
  70. package/lib/ui/TimeZonePicker/TimeZonePicker.js.map +1 -0
  71. package/lib/ui/device/BatteryStatus.js +10 -6
  72. package/lib/ui/device/BatteryStatus.js.map +1 -1
  73. package/lib/ui/thermostat/ClimateModeMenu.js +4 -4
  74. package/lib/ui/thermostat/ClimateModeMenu.js.map +1 -1
  75. package/lib/ui/use-now.d.ts +2 -0
  76. package/lib/ui/{use-current-time.js → use-now.js} +2 -2
  77. package/lib/ui/use-now.js.map +1 -0
  78. package/lib/version.d.ts +1 -1
  79. package/lib/version.js +1 -1
  80. package/package.json +2 -2
  81. package/src/lib/dates.ts +19 -135
  82. package/src/lib/icons/CheckGreen.tsx +36 -0
  83. package/src/lib/icons/CloseWhite.tsx +36 -0
  84. package/src/lib/seam/components/AccessCodeDetails/AccessCodeDetails.tsx +6 -9
  85. package/src/lib/seam/components/AccessCodeTable/CodeDetails.tsx +2 -3
  86. package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.tsx +9 -9
  87. package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.tsx +5 -8
  88. package/src/lib/seam/components/ClimateSettingScheduleDetails/dates.ts +10 -0
  89. package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.tsx +2 -3
  90. package/src/lib/seam/components/CreateAccessCodeForm/CreateAccessCodeForm.tsx +3 -4
  91. package/src/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.tsx +3 -5
  92. package/src/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.tsx +1 -6
  93. package/src/lib/seam/components/EditAccessCodeForm/EditAccessCodeForm.tsx +3 -4
  94. package/src/lib/seam/components/SupportedDeviceTable/FilterCategoryMenu.tsx +20 -15
  95. package/src/lib/telemetry/client.ts +1 -0
  96. package/src/lib/ui/AccessCodeForm/AccessCodeForm.tsx +61 -67
  97. package/src/lib/ui/AccessCodeForm/AccessCodeFormDatePicker.tsx +28 -18
  98. package/src/lib/ui/AccessCodeForm/{AccessCodeFormTimezonePicker.tsx → AccessCodeFormTimeZonePicker.tsx} +10 -10
  99. package/src/lib/ui/AccessCodeForm/AccessCodeFormTimes.tsx +9 -5
  100. package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.tsx +12 -12
  101. package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.tsx +10 -10
  102. package/src/lib/ui/ClimateSettingForm/{ClimateSettingScheduleFormTimezonePicker.tsx → ClimateSettingScheduleFormTimeZonePicker.tsx} +8 -8
  103. package/src/lib/ui/LoadingToast/LoadingToast.tsx +13 -16
  104. package/src/lib/ui/Menu/Menu.tsx +50 -40
  105. package/src/lib/ui/Snackbar/Snackbar.tsx +97 -0
  106. package/src/lib/ui/TimeZonePicker/TimeZonePicker.tsx +69 -0
  107. package/src/lib/ui/device/BatteryStatus.tsx +23 -14
  108. package/src/lib/ui/thermostat/ClimateModeMenu.tsx +4 -4
  109. package/src/lib/ui/{use-current-time.ts → use-now.ts} +1 -1
  110. package/src/lib/version.ts +1 -1
  111. package/src/styles/_access-code-form.scss +4 -4
  112. package/src/styles/_climate-setting-schedule-form.scss +1 -1
  113. package/src/styles/_colors.scss +2 -0
  114. package/src/styles/_loading_toast.scss +5 -16
  115. package/src/styles/_main.scss +4 -2
  116. package/src/styles/_motion.scss +34 -0
  117. package/src/styles/_snackbar.scss +107 -0
  118. package/src/styles/_supported-device-table.scss +9 -0
  119. package/src/styles/{_timezone-picker.scss → _time-zone-picker.scss} +3 -3
  120. package/lib/ui/AccessCodeForm/AccessCodeFormTimezonePicker.d.ts +0 -8
  121. package/lib/ui/AccessCodeForm/AccessCodeFormTimezonePicker.js +0 -17
  122. package/lib/ui/TimezonePicker/TimezonePicker.d.ts +0 -8
  123. package/lib/ui/TimezonePicker/TimezonePicker.js +0 -28
  124. package/lib/ui/TimezonePicker/TimezonePicker.js.map +0 -1
  125. package/lib/ui/use-current-time.d.ts +0 -2
  126. package/lib/ui/use-current-time.js.map +0 -1
  127. package/src/lib/ui/TimezonePicker/TimezonePicker.tsx +0 -70
@@ -3,6 +3,10 @@
3
3
  $row-padding: 8px;
4
4
 
5
5
  @mixin all {
6
+ .seam-supported-device-table-content-wrap {
7
+ background: colors.$white;
8
+ }
9
+
6
10
  .seam-supported-device-table-filter-area {
7
11
  width: 100%;
8
12
  display: flex;
@@ -372,4 +376,9 @@ $row-padding: 8px;
372
376
  align-items: center;
373
377
  }
374
378
  }
379
+
380
+ .seam-supported-device-table-filter-menu-content {
381
+ max-height: 300px;
382
+ overflow: auto;
383
+ }
375
384
  }
@@ -1,12 +1,12 @@
1
1
  @use './colors';
2
2
 
3
3
  @mixin all {
4
- .seam-timezone-picker {
5
- .seam-manual-timezone-checkbox {
4
+ .seam-time-zone-picker {
5
+ .seam-manual-time-zone-checkbox {
6
6
  margin-bottom: 8px;
7
7
  }
8
8
 
9
- > .seam-timezone-select {
9
+ > .seam-time-zone-select {
10
10
  background: colors.$white;
11
11
  padding: 0 12px;
12
12
  width: 100%;
@@ -1,8 +0,0 @@
1
- /// <reference types="react" resolution-mode="require"/>
2
- interface AccessCodeFormTimezonePickerProps {
3
- value: string;
4
- onChange: (timezone: string) => void;
5
- onClose: () => void;
6
- }
7
- export declare function AccessCodeFormTimezonePicker({ onChange, value, onClose, }: AccessCodeFormTimezonePickerProps): JSX.Element;
8
- export {};
@@ -1,17 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState } from 'react';
3
- import { ContentHeader } from '../../../lib/ui/layout/ContentHeader.js';
4
- import { TimezonePicker } from '../../../lib/ui/TimezonePicker/TimezonePicker.js';
5
- export function AccessCodeFormTimezonePicker({ onChange, value, onClose, }) {
6
- const [title, setTitle] = useState(t.titleAuto);
7
- return (_jsxs("div", { className: 'seam-access-code-timezone-picker', children: [_jsx(ContentHeader, { title: title, onBack: onClose }), _jsx("div", { className: 'seam-content', children: _jsx(TimezonePicker, { value: value, onChange: onChange, onManualTimezoneSelected: (manualTimezoneSelected) => {
8
- setTitle(manualTimezoneSelected ? t.titleManual : t.titleAuto);
9
- } }) })] }));
10
- }
11
- const t = {
12
- titleAuto: 'Time Zone (automatic)',
13
- titleManual: 'Time Zone (manual)',
14
- utc: 'UTC',
15
- setTimezoneManuallyLabel: 'Use local time zone',
16
- };
17
- //# sourceMappingURL=AccessCodeFormTimezonePicker.js.map
@@ -1,8 +0,0 @@
1
- /// <reference types="react" resolution-mode="require"/>
2
- interface TimezonePickerProps {
3
- value: string;
4
- onChange: (timezone: string) => void;
5
- onManualTimezoneSelected?: (manualTimezoneSelected: boolean) => void;
6
- }
7
- export declare function TimezonePicker({ onChange, value, onManualTimezoneSelected, }: TimezonePickerProps): JSX.Element;
8
- export {};
@@ -1,28 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useState } from 'react';
3
- import { getBrowserTimezone, getTimezoneLabel, getTimezoneOffset, getTimezones, } from '../../../lib/dates.js';
4
- import { Checkbox } from '../../../lib/ui/Checkbox.js';
5
- import { handleString } from '../../../lib/ui/TextField/TextField.js';
6
- export function TimezonePicker({ onChange, value, onManualTimezoneSelected, }) {
7
- const [manualTimezoneEnabled, setManualTimezoneEnabled] = useState(false);
8
- const isBrowserTimezoneSelected = value === getBrowserTimezone();
9
- const isManualTimezoneSelected = !isBrowserTimezoneSelected || manualTimezoneEnabled;
10
- useEffect(() => {
11
- if (onManualTimezoneSelected != null)
12
- onManualTimezoneSelected(isManualTimezoneSelected);
13
- }, [isManualTimezoneSelected, onManualTimezoneSelected]);
14
- const handleChangeManualTimezone = (enabled) => {
15
- setManualTimezoneEnabled(enabled);
16
- if (!enabled) {
17
- onChange(getBrowserTimezone());
18
- }
19
- };
20
- return (_jsxs("div", { className: 'seam-timezone-picker', children: [_jsx(Checkbox, { label: t.setTimezoneManuallyLabel, checked: !isManualTimezoneSelected, onChange: (manual) => {
21
- handleChangeManualTimezone(!manual);
22
- }, className: 'seam-manual-timezone-checkbox' }), _jsx("select", { value: value, onChange: handleString(onChange), className: 'seam-timezone-select', children: getTimezones().map((timezone) => (_jsxs("option", { value: timezone, children: [t.utc, " ", getTimezoneOffset(timezone), " ", getTimezoneLabel(timezone)] }, timezone))) })] }));
23
- }
24
- const t = {
25
- utc: 'UTC',
26
- setTimezoneManuallyLabel: 'Use local time zone',
27
- };
28
- //# sourceMappingURL=TimezonePicker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimezonePicker.js","sourceRoot":"","sources":["../../../src/lib/ui/TimezonePicker/TimezonePicker.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,GACb,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAQ5D,MAAM,UAAU,cAAc,CAAC,EAC7B,QAAQ,EACR,KAAK,EACL,wBAAwB,GACJ;IACpB,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEzE,MAAM,yBAAyB,GAAG,KAAK,KAAK,kBAAkB,EAAE,CAAA;IAChE,MAAM,wBAAwB,GAC5B,CAAC,yBAAyB,IAAI,qBAAqB,CAAA;IAErD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,wBAAwB,IAAI,IAAI;YAClC,wBAAwB,CAAC,wBAAwB,CAAC,CAAA;IACtD,CAAC,EAAE,CAAC,wBAAwB,EAAE,wBAAwB,CAAC,CAAC,CAAA;IAExD,MAAM,0BAA0B,GAAG,CAAC,OAAgB,EAAQ,EAAE;QAC5D,wBAAwB,CAAC,OAAO,CAAC,CAAA;QACjC,IAAI,CAAC,OAAO,EAAE;YACZ,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAA;SAC/B;IACH,CAAC,CAAA;IAED,OAAO,CACL,eAAK,SAAS,EAAC,sBAAsB,aACnC,KAAC,QAAQ,IACP,KAAK,EAAE,CAAC,CAAC,wBAAwB,EACjC,OAAO,EAAE,CAAC,wBAAwB,EAClC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;oBACnB,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAA;gBACrC,CAAC,EACD,SAAS,EAAC,+BAA+B,GACzC,EAEF,iBACE,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,EAChC,SAAS,EAAC,sBAAsB,YAE/B,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAChC,kBAAQ,KAAK,EAAE,QAAQ,aACpB,CAAC,CAAC,GAAG,OAAG,iBAAiB,CAAC,QAAQ,CAAC,OAAG,gBAAgB,CAAC,QAAQ,CAAC,KADrC,QAAQ,CAE7B,CACV,CAAC,GACK,IACL,CACP,CAAA;AACH,CAAC;AAED,MAAM,CAAC,GAAG;IACR,GAAG,EAAE,KAAK;IACV,wBAAwB,EAAE,qBAAqB;CAChD,CAAA"}
@@ -1,2 +0,0 @@
1
- import { DateTime } from 'luxon';
2
- export declare function useCurrentTime(): DateTime;
@@ -1 +0,0 @@
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"}
@@ -1,70 +0,0 @@
1
- import { useEffect, useState } from 'react'
2
-
3
- import {
4
- getBrowserTimezone,
5
- getTimezoneLabel,
6
- getTimezoneOffset,
7
- getTimezones,
8
- } from 'lib/dates.js'
9
- import { Checkbox } from 'lib/ui/Checkbox.js'
10
- import { handleString } from 'lib/ui/TextField/TextField.js'
11
-
12
- interface TimezonePickerProps {
13
- value: string
14
- onChange: (timezone: string) => void
15
- onManualTimezoneSelected?: (manualTimezoneSelected: boolean) => void
16
- }
17
-
18
- export function TimezonePicker({
19
- onChange,
20
- value,
21
- onManualTimezoneSelected,
22
- }: TimezonePickerProps): JSX.Element {
23
- const [manualTimezoneEnabled, setManualTimezoneEnabled] = useState(false)
24
-
25
- const isBrowserTimezoneSelected = value === getBrowserTimezone()
26
- const isManualTimezoneSelected =
27
- !isBrowserTimezoneSelected || manualTimezoneEnabled
28
-
29
- useEffect(() => {
30
- if (onManualTimezoneSelected != null)
31
- onManualTimezoneSelected(isManualTimezoneSelected)
32
- }, [isManualTimezoneSelected, onManualTimezoneSelected])
33
-
34
- const handleChangeManualTimezone = (enabled: boolean): void => {
35
- setManualTimezoneEnabled(enabled)
36
- if (!enabled) {
37
- onChange(getBrowserTimezone())
38
- }
39
- }
40
-
41
- return (
42
- <div className='seam-timezone-picker'>
43
- <Checkbox
44
- label={t.setTimezoneManuallyLabel}
45
- checked={!isManualTimezoneSelected}
46
- onChange={(manual) => {
47
- handleChangeManualTimezone(!manual)
48
- }}
49
- className='seam-manual-timezone-checkbox'
50
- />
51
-
52
- <select
53
- value={value}
54
- onChange={handleString(onChange)}
55
- className='seam-timezone-select'
56
- >
57
- {getTimezones().map((timezone) => (
58
- <option value={timezone} key={timezone}>
59
- {t.utc} {getTimezoneOffset(timezone)} {getTimezoneLabel(timezone)}
60
- </option>
61
- ))}
62
- </select>
63
- </div>
64
- )
65
- }
66
-
67
- const t = {
68
- utc: 'UTC',
69
- setTimezoneManuallyLabel: 'Use local time zone',
70
- }