@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.
Files changed (83) hide show
  1. package/README.md +1 -1
  2. package/dist/elements.js +3213 -3191
  3. package/dist/elements.js.map +1 -1
  4. package/dist/index.css +400 -1
  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 +9 -0
  9. package/lib/dates.js +15 -0
  10. package/lib/dates.js.map +1 -1
  11. package/lib/icons/ArrowRight.d.ts +2 -0
  12. package/lib/icons/ArrowRight.js +7 -0
  13. package/lib/icons/ArrowRight.js.map +1 -0
  14. package/lib/icons/TemperatureAdd.d.ts +2 -0
  15. package/lib/icons/TemperatureAdd.js +7 -0
  16. package/lib/icons/TemperatureAdd.js.map +1 -0
  17. package/lib/icons/TemperatureSubtract.d.ts +2 -0
  18. package/lib/icons/TemperatureSubtract.js +7 -0
  19. package/lib/icons/TemperatureSubtract.js.map +1 -0
  20. package/lib/seam/SeamProvider.d.ts +2 -2
  21. package/lib/seam/SeamProvider.js.map +1 -1
  22. package/lib/seam/access-codes/use-generate-access-code-code.d.ts +6 -0
  23. package/lib/seam/access-codes/use-generate-access-code-code.js +13 -0
  24. package/lib/seam/access-codes/use-generate-access-code-code.js.map +1 -0
  25. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.d.ts +6 -0
  26. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.js +41 -0
  27. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.js.map +1 -0
  28. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.d.ts +4 -0
  29. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.js +29 -0
  30. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.js.map +1 -0
  31. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.js +2 -2
  32. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.js.map +1 -1
  33. package/lib/seam/components/ClimateSettingScheduleTable/{ClimateSettingScheduleDetails.d.ts → ClimateSettingScheduleRowDetails.d.ts} +1 -1
  34. package/lib/seam/components/ClimateSettingScheduleTable/{ClimateSettingScheduleDetails.js → ClimateSettingScheduleRowDetails.js} +2 -2
  35. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.js.map +1 -0
  36. package/lib/seam/use-seam-client.js +2 -2
  37. package/lib/seam/use-seam-client.js.map +1 -1
  38. package/lib/ui/AccessCodeForm/AccessCodeFormDatePicker.js +1 -1
  39. package/lib/ui/AccessCodeForm/AccessCodeFormDatePicker.js.map +1 -1
  40. package/lib/ui/Menu/Menu.js +5 -5
  41. package/lib/ui/Menu/Menu.js.map +1 -1
  42. package/lib/ui/Switch/Switch.d.ts +8 -0
  43. package/lib/ui/Switch/Switch.js +15 -0
  44. package/lib/ui/Switch/Switch.js.map +1 -0
  45. package/lib/ui/TextField/TextField.js +1 -3
  46. package/lib/ui/TextField/TextField.js.map +1 -1
  47. package/lib/ui/clipboard.js +1 -1
  48. package/lib/ui/clipboard.js.map +1 -1
  49. package/lib/ui/thermostat/TemperatureControl.d.ts +11 -0
  50. package/lib/ui/thermostat/TemperatureControl.js +42 -0
  51. package/lib/ui/thermostat/TemperatureControl.js.map +1 -0
  52. package/lib/ui/use-current-time.d.ts +2 -0
  53. package/lib/ui/use-current-time.js +12 -0
  54. package/lib/ui/use-current-time.js.map +1 -0
  55. package/lib/version.d.ts +1 -1
  56. package/lib/version.js +1 -1
  57. package/package.json +7 -7
  58. package/src/lib/dates.ts +17 -0
  59. package/src/lib/element.tsx +6 -4
  60. package/src/lib/icons/ArrowRight.tsx +36 -0
  61. package/src/lib/icons/TemperatureAdd.tsx +38 -0
  62. package/src/lib/icons/TemperatureSubtract.tsx +35 -0
  63. package/src/lib/seam/SeamProvider.tsx +2 -3
  64. package/src/lib/seam/access-codes/use-generate-access-code-code.ts +38 -0
  65. package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.tsx +101 -0
  66. package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.tsx +58 -0
  67. package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.tsx +2 -2
  68. package/src/lib/seam/components/ClimateSettingScheduleTable/{ClimateSettingScheduleDetails.tsx → ClimateSettingScheduleRowDetails.tsx} +1 -1
  69. package/src/lib/seam/use-seam-client.ts +2 -2
  70. package/src/lib/ui/AccessCodeForm/AccessCodeFormDatePicker.tsx +2 -2
  71. package/src/lib/ui/Menu/Menu.tsx +5 -6
  72. package/src/lib/ui/Switch/Switch.tsx +38 -0
  73. package/src/lib/ui/TextField/TextField.tsx +1 -3
  74. package/src/lib/ui/clipboard.ts +1 -1
  75. package/src/lib/ui/thermostat/TemperatureControl.tsx +121 -0
  76. package/src/lib/ui/use-current-time.ts +16 -0
  77. package/src/lib/version.ts +1 -1
  78. package/src/styles/_colors.scss +4 -0
  79. package/src/styles/_main.scss +2 -0
  80. package/src/styles/_switch.scss +53 -0
  81. package/src/styles/_thermostat.scss +384 -2
  82. package/src/styles/_tooltip.scss +3 -0
  83. 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,EAAE,YAAY,EAAE,OAAO,CAAC,uBAAuB,CAAC;QAC1D,eAAe,MAAM,EAAE,EAAE,CAAA;IAE3B,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,uBAAuB,EAAE,WAAW,CAAC,CAAA;IAEvE,OAAO,WAAW,CAAA;AACpB,CAAC"}
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 == null ? '' : startDate, onChange: setStartDate, size: 'large' })] }), _jsxs(FormField, { children: [_jsx(InputLabel, { children: t.endTimeLabel }), _jsx(DateTimePicker, { value: endDate == null ? '' : endDate, onChange: setEndDate, size: 'large' })] })] })] }));
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,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EACzC,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,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EACrC,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"}
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"}
@@ -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?.document?.querySelectorAll('.seam-components');
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?.addEventListener('scroll', setPositions);
64
- globalThis?.addEventListener('resize', setPositions);
63
+ globalThis.addEventListener('scroll', setPositions);
64
+ globalThis.addEventListener('resize', setPositions);
65
65
  return () => {
66
- globalThis?.removeEventListener('scroll', setPositions);
67
- globalThis?.removeEventListener('resize', setPositions);
66
+ globalThis.removeEventListener('scroll', setPositions);
67
+ globalThis.removeEventListener('resize', setPositions);
68
68
  };
69
69
  }, [setPositions]);
70
70
  const isOpen = anchorEl != null;
@@ -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,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, () => (inputEl != null ? inputEl : undefined), [
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":"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"}
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,OAAO,IAAI,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAE/D,MAAM,mBAAmB,GAAG,YAAY,IAAI,IAAI,IAAI,SAAS,CAAA;IAE7D,OAAO,CACL,eACE,SAAS,EAAE,UAAU,CAAC,iBAAiB,EAAE,SAAS,EAAE,QAAQ,IAAI,EAAE,EAAE;YAClE,eAAe,EAAE,QAAQ;YACzB,YAAY,EAAE,QAAQ;SACvB,CAAC,aAEF,eAAK,SAAS,EAAC,WAAW,aACvB,cAAc,IAAI,IAAI,IAAI,CACzB,cAAK,SAAS,EAAC,2BAA2B,YAAE,cAAc,GAAO,CAClE,EACD,gBACE,SAAS,EAAC,uBAAuB,EACjC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,EAC/D,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,KACN,UAAU,GACd,EACD,mBAAmB,IAAI,CACtB,eAAK,SAAS,EAAC,yBAAyB,aACrC,SAAS,IAAI,CACZ,iBACE,SAAS,EAAE,UAAU,CAAC;oCACpB,aAAa,EAAE,YAAY;iCAC5B,CAAC,EACF,OAAO,EAAE,UAAU,YAEnB,KAAC,SAAS,KAAG,GACN,CACV,EACA,YAAY,IACT,CACP,IACG,EACL,UAAU,IAAI,IAAI,IAAI,CACrB,cAAK,SAAS,EAAC,kBAAkB,YAAE,UAAU,GAAO,CACrD,IACG,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,YAAY,GACvB,CAAC,MAA2B,EAAE,EAAE,CAChC,CACE,KAEC,EACK,EAAE;IACR,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;AACnC,CAAC,CAAA;AAEH,SAAS,eAAe,CACtB,KAAyB,EACzB,OAAgC;IAEhC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAEtD,8DAA8D;IAC9D,SAAS,CAAC,GAAG,EAAE;QACb,eAAe,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC,CAAA;IAChD,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAEX,uEAAuE;IACvE,UAAU;IACV,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,OAAM;SACP;QAED,MAAM,OAAO,GAAG,CAAC,KAAY,EAAQ,EAAE;YACrC,IAAI,KAAK,KAAK,SAAS,EAAE;gBACvB,OAAM;aACP;YAED,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;gBACtD,OAAM;aACP;YAED,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAA;YACrC,IAAI,KAAK,KAAK,SAAS,EAAE;gBACvB,eAAe,CAAC,UAAU,KAAK,EAAE,CAAC,CAAA;aACnC;QACH,CAAC,CAAA;QAED,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAE1C,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC/C,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;IAEpB,OAAO,YAAY,CAAA;AACrB,CAAC"}
@@ -1,4 +1,4 @@
1
1
  export async function copyToClipboard(value) {
2
- await globalThis?.navigator?.clipboard?.writeText(value);
2
+ await globalThis.navigator?.clipboard?.writeText(value);
3
3
  }
4
4
  //# sourceMappingURL=clipboard.js.map
@@ -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,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;AAC1D,CAAC"}
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,2 @@
1
+ import { DateTime } from 'luxon';
2
+ export declare function useCurrentTime(): DateTime;
@@ -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.0";
1
+ declare const seamapiReactVersion = "1.48.1";
2
2
  export default seamapiReactVersion;
package/lib/version.js CHANGED
@@ -1,3 +1,3 @@
1
- const seamapiReactVersion = '1.48.0';
1
+ const seamapiReactVersion = '1.48.1';
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.48.0",
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.6.3",
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.6.0",
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": "^37.0.0",
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": "^2.0.0",
166
- "execa": "^7.1.1",
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": "^5.1.0",
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
+ })
@@ -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 = SeamProviderPropsWithPublishableKey &
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?.customElements?.define(name, element)
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?.unminifiySeamCss}
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 = PropsWithChildren<
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
+ }