@seamapi/react 1.11.1 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/README.md +5 -1
  2. package/dist/elements.js +1827 -1769
  3. package/dist/elements.js.map +1 -1
  4. package/lib/seam/components/ConnectAccountButton/ConnectAccountButton.d.ts +5 -0
  5. package/lib/seam/components/ConnectAccountButton/ConnectAccountButton.js +22 -0
  6. package/lib/seam/components/ConnectAccountButton/ConnectAccountButton.js.map +1 -0
  7. package/lib/seam/components/DeviceTable/DeviceTable.d.ts +2 -1
  8. package/lib/seam/components/DeviceTable/DeviceTable.js +6 -6
  9. package/lib/seam/components/DeviceTable/DeviceTable.js.map +1 -1
  10. package/lib/seam/components/index.d.ts +1 -0
  11. package/lib/seam/components/index.js +1 -0
  12. package/lib/seam/components/index.js.map +1 -1
  13. package/lib/seam/connect-webviews/use-create-connect-webview.d.ts +7 -0
  14. package/lib/seam/connect-webviews/use-create-connect-webview.js +19 -0
  15. package/lib/seam/connect-webviews/use-create-connect-webview.js.map +1 -0
  16. package/lib/seam/devices/use-toggle-lock.js.map +1 -1
  17. package/lib/seam/index.d.ts +1 -0
  18. package/lib/seam/index.js +1 -0
  19. package/lib/seam/index.js.map +1 -1
  20. package/lib/version.d.ts +1 -1
  21. package/lib/version.js +1 -1
  22. package/package.json +1 -1
  23. package/src/lib/seam/components/ConnectAccountButton/ConnectAccountButton.element.ts +11 -0
  24. package/src/lib/seam/components/ConnectAccountButton/ConnectAccountButton.tsx +40 -0
  25. package/src/lib/seam/components/DeviceTable/DeviceTable.element.ts +2 -0
  26. package/src/lib/seam/components/DeviceTable/DeviceTable.tsx +12 -6
  27. package/src/lib/seam/components/elements.ts +1 -0
  28. package/src/lib/seam/components/index.ts +1 -0
  29. package/src/lib/seam/connect-webviews/use-create-connect-webview.ts +46 -0
  30. package/src/lib/seam/devices/use-toggle-lock.ts +1 -1
  31. package/src/lib/seam/index.ts +1 -0
  32. package/src/lib/version.ts +1 -1
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export interface ConnectAccountButtonProps {
3
+ className?: string;
4
+ }
5
+ export declare function ConnectAccountButton({ className, }?: ConnectAccountButtonProps): JSX.Element;
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useCallback } from 'react';
3
+ import { useCreateConnectWebview } from '../../../../lib/seam/connect-webviews/use-create-connect-webview.js';
4
+ import { Button } from '../../../../lib/ui/Button.js';
5
+ export function ConnectAccountButton({ className, } = {}) {
6
+ const { isLoading, mutate } = useCreateConnectWebview({
7
+ willNavigateToWebview: true,
8
+ });
9
+ const url = window.location.href;
10
+ const handleClick = useCallback(() => {
11
+ mutate({
12
+ accepted_providers: [],
13
+ custom_redirect_url: url,
14
+ custom_redirect_failure_url: url,
15
+ });
16
+ }, [mutate, url]);
17
+ return (_jsx(Button, { size: 'small', onClick: handleClick, className: className, disabled: isLoading, children: t.connectAccount }));
18
+ }
19
+ const t = {
20
+ connectAccount: 'Connect Account',
21
+ };
22
+ //# sourceMappingURL=ConnectAccountButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectAccountButton.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/ConnectAccountButton/ConnectAccountButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAEnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAA;AACjG,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAMzC,MAAM,UAAU,oBAAoB,CAAC,EACnC,SAAS,MACoB,EAAE;IAC/B,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,uBAAuB,CAAC;QACpD,qBAAqB,EAAE,IAAI;KAC5B,CAAC,CAAA;IAEF,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAA;IAChC,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,MAAM,CAAC;YACL,kBAAkB,EAAE,EAAE;YACtB,mBAAmB,EAAE,GAAG;YACxB,2BAA2B,EAAE,GAAG;SACjC,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;IAEjB,OAAO,CACL,KAAC,MAAM,IACL,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,SAAS,YAElB,CAAC,CAAC,cAAc,GACV,CACV,CAAA;AACH,CAAC;AAED,MAAM,CAAC,GAAG;IACR,cAAc,EAAE,iBAAiB;CAClC,CAAA"}
@@ -1,7 +1,8 @@
1
1
  /// <reference types="react" />
2
2
  export interface DeviceTableProps {
3
3
  deviceIds?: string[];
4
+ onDeviceClick?: (deviceId: string) => void;
4
5
  onBack?: () => void;
5
6
  className?: string;
6
7
  }
7
- export declare function DeviceTable({ deviceIds, onBack, className, }?: DeviceTableProps): JSX.Element | null;
8
+ export declare function DeviceTable({ deviceIds, onDeviceClick, onBack, className, }?: DeviceTableProps): JSX.Element | null;
@@ -12,15 +12,15 @@ import { TableHeader } from '../../../../lib/ui/Table/TableHeader.js';
12
12
  import { TableTitle } from '../../../../lib/ui/Table/TableTitle.js';
13
13
  import { SearchTextField } from '../../../../lib/ui/TextField/SearchTextField.js';
14
14
  import { Caption } from '../../../../lib/ui/typography/Caption.js';
15
- export function DeviceTable({ deviceIds, onBack, className, } = {}) {
15
+ export function DeviceTable({ deviceIds, onDeviceClick, onBack, className, } = {}) {
16
16
  const { devices, isLoading, isError, error } = useDevices({
17
17
  device_ids: deviceIds,
18
18
  });
19
- const [selectedDeviceId, selectDevice] = useState(null);
19
+ const [selectedDeviceId, setSelectedDeviceId] = useState(null);
20
20
  const [searchTerm, setSearchTerm] = useState('');
21
21
  if (selectedDeviceId != null) {
22
22
  return (_jsx(DeviceDetails, { className: className, deviceId: selectedDeviceId, onBack: () => {
23
- selectDevice(null);
23
+ setSelectedDeviceId(null);
24
24
  } }));
25
25
  }
26
26
  if (isLoading) {
@@ -39,10 +39,10 @@ export function DeviceTable({ deviceIds, onBack, className, } = {}) {
39
39
  }
40
40
  return new RegExp(searchTerm, 'i').test(device.properties.name);
41
41
  });
42
- return (_jsxs("div", { className: classNames('seam-device-table', className), children: [_jsx(ContentHeader, { onBack: onBack }), _jsxs(TableHeader, { children: [_jsxs(TableTitle, { children: [t.devices, " ", _jsxs(Caption, { children: ["(", deviceCount, ")"] })] }), _jsx(SearchTextField, { value: searchTerm, onChange: setSearchTerm, disabled: deviceCount === 0 })] }), _jsx(TableBody, { children: _jsx(Body, { devices: filteredDevices, selectDevice: selectDevice }) })] }));
42
+ return (_jsxs("div", { className: classNames('seam-device-table', className), children: [_jsx(ContentHeader, { onBack: onBack }), _jsxs(TableHeader, { children: [_jsxs(TableTitle, { children: [t.devices, " ", _jsxs(Caption, { children: ["(", deviceCount, ")"] })] }), _jsx(SearchTextField, { value: searchTerm, onChange: setSearchTerm, disabled: deviceCount === 0 })] }), _jsx(TableBody, { children: _jsx(Body, { devices: filteredDevices, onDeviceClick: onDeviceClick ?? setSelectedDeviceId }) })] }));
43
43
  }
44
44
  function Body(props) {
45
- const { devices, selectDevice } = props;
45
+ const { devices, onDeviceClick } = props;
46
46
  const [filter, setFilter] = useState(null);
47
47
  if (devices.length === 0) {
48
48
  return _jsx(EmptyPlaceholder, { children: t.noDevicesMessage });
@@ -57,7 +57,7 @@ function Body(props) {
57
57
  return true;
58
58
  });
59
59
  return (_jsxs(_Fragment, { children: [_jsx(DeviceHealthBar, { devices: devices, filter: filter, onFilterSelect: setFilter }), filteredDevices.map((device) => (_jsx(DeviceRow, { device: device, onClick: () => {
60
- selectDevice(device.device_id);
60
+ onDeviceClick(device.device_id);
61
61
  } }, device.device_id)))] }));
62
62
  }
63
63
  const t = {
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceTable.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/DeviceTable/DeviceTable.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DeviceTable.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/DeviceTable/DeviceTable.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export * from './AccessCodeDetails/AccessCodeDetails.js';
2
2
  export * from './AccessCodeTable/AccessCodeTable.js';
3
+ export * from './ConnectAccountButton/ConnectAccountButton.js';
3
4
  export * from './DeviceDetails/DeviceDetails.js';
4
5
  export * from './DeviceTable/DeviceTable.js';
5
6
  export * from './SupportedDeviceTable/SupportedDeviceTable.js';
@@ -1,5 +1,6 @@
1
1
  export * from './AccessCodeDetails/AccessCodeDetails.js';
2
2
  export * from './AccessCodeTable/AccessCodeTable.js';
3
+ export * from './ConnectAccountButton/ConnectAccountButton.js';
3
4
  export * from './DeviceDetails/DeviceDetails.js';
4
5
  export * from './DeviceTable/DeviceTable.js';
5
6
  export * from './SupportedDeviceTable/SupportedDeviceTable.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/seam/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,0CAA0C,CAAA;AACxD,cAAc,sCAAsC,CAAA;AACpD,cAAc,kCAAkC,CAAA;AAChD,cAAc,8BAA8B,CAAA;AAC5C,cAAc,gDAAgD,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/seam/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,0CAA0C,CAAA;AACxD,cAAc,sCAAsC,CAAA;AACpD,cAAc,gDAAgD,CAAA;AAC9D,cAAc,kCAAkC,CAAA;AAChD,cAAc,8BAA8B,CAAA;AAC5C,cAAc,gDAAgD,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { type UseMutationResult } from '@tanstack/react-query';
2
+ import type { ConnectWebview, ConnectWebviewCreateRequest, SeamError } from 'seamapi';
3
+ export interface UseCreateConnectWebviewParams {
4
+ willNavigateToWebview?: boolean;
5
+ }
6
+ export type UseCreateConnectWebviewMutationParams = ConnectWebviewCreateRequest;
7
+ export declare function useCreateConnectWebview({ willNavigateToWebview, }?: UseCreateConnectWebviewParams): UseMutationResult<ConnectWebview, SeamError, ConnectWebviewCreateRequest>;
@@ -0,0 +1,19 @@
1
+ import { useMutation } from '@tanstack/react-query';
2
+ import { useSeamClient } from '../../../lib/seam/use-seam-client.js';
3
+ export function useCreateConnectWebview({ willNavigateToWebview = false, } = {}) {
4
+ const { client } = useSeamClient();
5
+ return useMutation({
6
+ mutationFn: async (mutationParams) => {
7
+ if (client == null) {
8
+ throw new Error('Missing seam client');
9
+ }
10
+ return await client.connectWebviews.create(mutationParams);
11
+ },
12
+ onSuccess: ({ url }) => {
13
+ if (willNavigateToWebview && url != null) {
14
+ globalThis.location.href = url;
15
+ }
16
+ },
17
+ });
18
+ }
19
+ //# sourceMappingURL=use-create-connect-webview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-create-connect-webview.js","sourceRoot":"","sources":["../../../src/lib/seam/connect-webviews/use-create-connect-webview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA0B,MAAM,uBAAuB,CAAA;AAQ3E,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAQ3D,MAAM,UAAU,uBAAuB,CAAC,EACtC,qBAAqB,GAAG,KAAK,MACI,EAAE;IAKnC,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;IAElC,OAAO,WAAW,CAIhB;QACA,UAAU,EAAE,KAAK,EACf,cAAqD,EACrD,EAAE;YACF,IAAI,MAAM,IAAI,IAAI,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;aACvC;YAED,OAAO,MAAM,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;QAC5D,CAAC;QACD,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;YACrB,IAAI,qBAAqB,IAAI,GAAG,IAAI,IAAI,EAAE;gBACxC,UAAU,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAA;aAC/B;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-toggle-lock.js","sourceRoot":"","sources":["../../../src/lib/seam/devices/use-toggle-lock.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,cAAc,GACf,MAAM,uBAAuB,CAAA;AAS9B,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAE3D,MAAM,UAAU,aAAa,CAAC,EAC5B,SAAS,EAAE,QAAQ,EACnB,UAAU,EAAE,EAAE,MAAM,EAAE,GACX;IAKX,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,OAAO,WAAW,CAAC;QACjB,UAAU,EAAE,KAAK,IAAI,EAAE;YACrB,IAAI,MAAM,IAAI,IAAI,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;aACvC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAA;YACvE,OAAO,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC/B,CAAC;QACD,QAAQ,EAAE,GAAG,EAAE;YACb,WAAW,CAAC,YAAY,CACtB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,EACvB,CAAC,OAAO,EAAE,EAAE;gBACV,IAAI,OAAO,IAAI,IAAI,EAAE;oBACnB,OAAM;iBACP;gBAED,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;oBAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAA;oBAC9C,IAAI,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE;wBACpC,OAAO;4BACL,GAAG,MAAM;4BACT,UAAU,EAAE;gCACV,GAAG,MAAM,CAAC,UAAU;gCACpB,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM;6BAClC;yBACF,CAAA;qBACF;oBAED,OAAO,MAAM,CAAA;gBACf,CAAC,CAAC,CAAA;YACJ,CAAC,CACF,CAAA;YAED,WAAW,CAAC,YAAY,CACtB,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAC3C,CAAC,MAAM,EAAE,EAAE;gBACT,IAAI,MAAM,IAAI,IAAI,EAAE;oBAClB,OAAM;iBACP;gBAED,OAAO;oBACL,GAAG,MAAM;oBACT,UAAU,EAAE;wBACV,GAAG,MAAM,CAAC,UAAU;wBACpB,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM;qBAClC;iBACF,CAAA;YACH,CAAC,CACF,CAAA;QACH,CAAC;QACD,SAAS,EAAE,KAAK,IAAI,EAAE;YACpB,MAAM,WAAW,CAAC,iBAAiB,CAAC;gBAClC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;aAC9B,CAAC,CAAA;YACF,MAAM,WAAW,CAAC,iBAAiB,CAAC;gBAClC,QAAQ,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;aACtD,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"use-toggle-lock.js","sourceRoot":"","sources":["../../../src/lib/seam/devices/use-toggle-lock.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,cAAc,GACf,MAAM,uBAAuB,CAAA;AAS9B,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAE3D,MAAM,UAAU,aAAa,CAAC,EAC5B,SAAS,EAAE,QAAQ,EACnB,UAAU,EAAE,EAAE,MAAM,EAAE,GACX;IAKX,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,OAAO,WAAW,CAA8C;QAC9D,UAAU,EAAE,KAAK,IAAI,EAAE;YACrB,IAAI,MAAM,IAAI,IAAI,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;aACvC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAA;YACvE,OAAO,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC/B,CAAC;QACD,QAAQ,EAAE,GAAG,EAAE;YACb,WAAW,CAAC,YAAY,CACtB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,EACvB,CAAC,OAAO,EAAE,EAAE;gBACV,IAAI,OAAO,IAAI,IAAI,EAAE;oBACnB,OAAM;iBACP;gBAED,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;oBAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAA;oBAC9C,IAAI,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE;wBACpC,OAAO;4BACL,GAAG,MAAM;4BACT,UAAU,EAAE;gCACV,GAAG,MAAM,CAAC,UAAU;gCACpB,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM;6BAClC;yBACF,CAAA;qBACF;oBAED,OAAO,MAAM,CAAA;gBACf,CAAC,CAAC,CAAA;YACJ,CAAC,CACF,CAAA;YAED,WAAW,CAAC,YAAY,CACtB,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAC3C,CAAC,MAAM,EAAE,EAAE;gBACT,IAAI,MAAM,IAAI,IAAI,EAAE;oBAClB,OAAM;iBACP;gBAED,OAAO;oBACL,GAAG,MAAM;oBACT,UAAU,EAAE;wBACV,GAAG,MAAM,CAAC,UAAU;wBACpB,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM;qBAClC;iBACF,CAAA;YACH,CAAC,CACF,CAAA;QACH,CAAC;QACD,SAAS,EAAE,KAAK,IAAI,EAAE;YACpB,MAAM,WAAW,CAAC,iBAAiB,CAAC;gBAClC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;aAC9B,CAAC,CAAA;YACF,MAAM,WAAW,CAAC,iBAAiB,CAAC;gBAClC,QAAQ,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;aACtD,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export * from './access-codes/use-access-code.js';
2
2
  export * from './access-codes/use-access-codes.js';
3
+ export * from './connect-webviews/use-create-connect-webview.js';
3
4
  export * from './device-models/use-device-models.js';
4
5
  export * from './devices/use-device.js';
5
6
  export * from './devices/use-devices.js';
package/lib/seam/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './access-codes/use-access-code.js';
2
2
  export * from './access-codes/use-access-codes.js';
3
+ export * from './connect-webviews/use-create-connect-webview.js';
3
4
  export * from './device-models/use-device-models.js';
4
5
  export * from './devices/use-device.js';
5
6
  export * from './devices/use-devices.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/seam/index.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAA;AACjD,cAAc,oCAAoC,CAAA;AAClD,cAAc,sCAAsC,CAAA;AACpD,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/seam/index.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAA;AACjD,cAAc,oCAAoC,CAAA;AAClD,cAAc,kDAAkD,CAAA;AAChE,cAAc,sCAAsC,CAAA;AACpD,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA"}
package/lib/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const seamapiReactVersion = "1.11.1";
1
+ declare const seamapiReactVersion = "1.13.0";
2
2
  export default seamapiReactVersion;
package/lib/version.js CHANGED
@@ -1,3 +1,3 @@
1
- const seamapiReactVersion = '1.11.1';
1
+ const seamapiReactVersion = '1.13.0';
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.11.1",
3
+ "version": "1.13.0",
4
4
  "description": "Seam Components.",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -0,0 +1,11 @@
1
+ import type { ElementProps } from 'lib/element.js'
2
+
3
+ import type { ConnectAccountButtonProps } from './ConnectAccountButton.js'
4
+
5
+ export const name = 'seam-connect-account-button'
6
+
7
+ export const props: ElementProps<ConnectAccountButtonProps> = {
8
+ className: 'string',
9
+ }
10
+
11
+ export { ConnectAccountButton as Component } from './ConnectAccountButton.js'
@@ -0,0 +1,40 @@
1
+ import { useCallback } from 'react'
2
+
3
+ import { useCreateConnectWebview } from 'lib/seam/connect-webviews/use-create-connect-webview.js'
4
+ import { Button } from 'lib/ui/Button.js'
5
+
6
+ export interface ConnectAccountButtonProps {
7
+ className?: string
8
+ }
9
+
10
+ export function ConnectAccountButton({
11
+ className,
12
+ }: ConnectAccountButtonProps = {}): JSX.Element {
13
+ const { isLoading, mutate } = useCreateConnectWebview({
14
+ willNavigateToWebview: true,
15
+ })
16
+
17
+ const url = window.location.href
18
+ const handleClick = useCallback(() => {
19
+ mutate({
20
+ accepted_providers: [],
21
+ custom_redirect_url: url,
22
+ custom_redirect_failure_url: url,
23
+ })
24
+ }, [mutate, url])
25
+
26
+ return (
27
+ <Button
28
+ size='small'
29
+ onClick={handleClick}
30
+ className={className}
31
+ disabled={isLoading}
32
+ >
33
+ {t.connectAccount}
34
+ </Button>
35
+ )
36
+ }
37
+
38
+ const t = {
39
+ connectAccount: 'Connect Account',
40
+ }
@@ -5,6 +5,8 @@ import type { DeviceTableProps } from './DeviceTable.js'
5
5
  export const name = 'seam-device-table'
6
6
 
7
7
  export const props: ElementProps<DeviceTableProps> = {
8
+ deviceIds: 'json',
9
+ onDeviceClick: 'function',
8
10
  onBack: 'function',
9
11
  className: 'string',
10
12
  }
@@ -21,12 +21,14 @@ import { Caption } from 'lib/ui/typography/Caption.js'
21
21
 
22
22
  export interface DeviceTableProps {
23
23
  deviceIds?: string[]
24
+ onDeviceClick?: (deviceId: string) => void
24
25
  onBack?: () => void
25
26
  className?: string
26
27
  }
27
28
 
28
29
  export function DeviceTable({
29
30
  deviceIds,
31
+ onDeviceClick,
30
32
  onBack,
31
33
  className,
32
34
  }: DeviceTableProps = {}): JSX.Element | null {
@@ -34,7 +36,8 @@ export function DeviceTable({
34
36
  device_ids: deviceIds,
35
37
  })
36
38
 
37
- const [selectedDeviceId, selectDevice] = useState<string | null>(null)
39
+ const [selectedDeviceId, setSelectedDeviceId] = useState<string | null>(null)
40
+
38
41
  const [searchTerm, setSearchTerm] = useState('')
39
42
 
40
43
  if (selectedDeviceId != null) {
@@ -43,7 +46,7 @@ export function DeviceTable({
43
46
  className={className}
44
47
  deviceId={selectedDeviceId}
45
48
  onBack={() => {
46
- selectDevice(null)
49
+ setSelectedDeviceId(null)
47
50
  }}
48
51
  />
49
52
  )
@@ -85,7 +88,10 @@ export function DeviceTable({
85
88
  />
86
89
  </TableHeader>
87
90
  <TableBody>
88
- <Body devices={filteredDevices} selectDevice={selectDevice} />
91
+ <Body
92
+ devices={filteredDevices}
93
+ onDeviceClick={onDeviceClick ?? setSelectedDeviceId}
94
+ />
89
95
  </TableBody>
90
96
  </div>
91
97
  )
@@ -93,9 +99,9 @@ export function DeviceTable({
93
99
 
94
100
  function Body(props: {
95
101
  devices: Array<UseDevicesData[number]>
96
- selectDevice: (id: string) => void
102
+ onDeviceClick: (deviceId: string) => void
97
103
  }): JSX.Element {
98
- const { devices, selectDevice } = props
104
+ const { devices, onDeviceClick } = props
99
105
  const [filter, setFilter] = useState<DeviceFilter | null>(null)
100
106
 
101
107
  if (devices.length === 0) {
@@ -126,7 +132,7 @@ function Body(props: {
126
132
  device={device}
127
133
  key={device.device_id}
128
134
  onClick={() => {
129
- selectDevice(device.device_id)
135
+ onDeviceClick(device.device_id)
130
136
  }}
131
137
  />
132
138
  ))}
@@ -1,5 +1,6 @@
1
1
  export * as AccessCodeDetails from './AccessCodeDetails/AccessCodeDetails.element.js'
2
2
  export * as AccessCodeTable from './AccessCodeTable/AccessCodeTable.element.js'
3
+ export * as ConnectAccountButton from './ConnectAccountButton/ConnectAccountButton.element.js'
3
4
  export * as DeviceDetails from './DeviceDetails/DeviceDetails.element.js'
4
5
  export * as DeviceTable from './DeviceTable/DeviceTable.element.js'
5
6
  export * as SupportedDeviceTable from './SupportedDeviceTable/SupportedDeviceTable.element.js'
@@ -1,5 +1,6 @@
1
1
  export * from './AccessCodeDetails/AccessCodeDetails.js'
2
2
  export * from './AccessCodeTable/AccessCodeTable.js'
3
+ export * from './ConnectAccountButton/ConnectAccountButton.js'
3
4
  export * from './DeviceDetails/DeviceDetails.js'
4
5
  export * from './DeviceTable/DeviceTable.js'
5
6
  export * from './SupportedDeviceTable/SupportedDeviceTable.js'
@@ -0,0 +1,46 @@
1
+ import { useMutation, type UseMutationResult } from '@tanstack/react-query'
2
+ import type {
3
+ ConnectWebview,
4
+ ConnectWebviewCreateRequest,
5
+ ConnectWebviewCreateResponse,
6
+ SeamError,
7
+ } from 'seamapi'
8
+
9
+ import { useSeamClient } from 'lib/seam/use-seam-client.js'
10
+
11
+ export interface UseCreateConnectWebviewParams {
12
+ willNavigateToWebview?: boolean
13
+ }
14
+
15
+ export type UseCreateConnectWebviewMutationParams = ConnectWebviewCreateRequest
16
+
17
+ export function useCreateConnectWebview({
18
+ willNavigateToWebview = false,
19
+ }: UseCreateConnectWebviewParams = {}): UseMutationResult<
20
+ ConnectWebview,
21
+ SeamError,
22
+ ConnectWebviewCreateRequest
23
+ > {
24
+ const { client } = useSeamClient()
25
+
26
+ return useMutation<
27
+ ConnectWebviewCreateResponse['connect_webview'],
28
+ SeamError,
29
+ UseCreateConnectWebviewMutationParams
30
+ >({
31
+ mutationFn: async (
32
+ mutationParams: UseCreateConnectWebviewMutationParams
33
+ ) => {
34
+ if (client == null) {
35
+ throw new Error('Missing seam client')
36
+ }
37
+
38
+ return await client.connectWebviews.create(mutationParams)
39
+ },
40
+ onSuccess: ({ url }) => {
41
+ if (willNavigateToWebview && url != null) {
42
+ globalThis.location.href = url
43
+ }
44
+ },
45
+ })
46
+ }
@@ -25,7 +25,7 @@ export function useToggleLock({
25
25
  const { client } = useSeamClient()
26
26
  const queryClient = useQueryClient()
27
27
 
28
- return useMutation({
28
+ return useMutation<{ actionAttempt: ActionAttempt }, SeamError>({
29
29
  mutationFn: async () => {
30
30
  if (client == null) {
31
31
  throw new Error('Missing seam client')
@@ -1,5 +1,6 @@
1
1
  export * from './access-codes/use-access-code.js'
2
2
  export * from './access-codes/use-access-codes.js'
3
+ export * from './connect-webviews/use-create-connect-webview.js'
3
4
  export * from './device-models/use-device-models.js'
4
5
  export * from './devices/use-device.js'
5
6
  export * from './devices/use-devices.js'
@@ -1,3 +1,3 @@
1
- const seamapiReactVersion = '1.11.1'
1
+ const seamapiReactVersion = '1.13.0'
2
2
 
3
3
  export default seamapiReactVersion