@seamapi/react 1.25.0 → 1.27.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 (166) hide show
  1. package/README.md +55 -4
  2. package/dist/elements.js +3058 -2958
  3. package/dist/elements.js.map +1 -1
  4. package/lib/icons/AccessCodeKey.d.ts +1 -1
  5. package/lib/icons/AccessCodeKey.js +3 -1
  6. package/lib/icons/AccessCodeKey.js.map +1 -1
  7. package/lib/icons/ArrowBack.d.ts +1 -1
  8. package/lib/icons/ArrowBack.js +5 -3
  9. package/lib/icons/ArrowBack.js.map +1 -1
  10. package/lib/icons/ArrowRestart.d.ts +1 -1
  11. package/lib/icons/ArrowRestart.js +5 -3
  12. package/lib/icons/ArrowRestart.js.map +1 -1
  13. package/lib/icons/BatteryLevelCritical.d.ts +1 -1
  14. package/lib/icons/BatteryLevelCritical.js +3 -1
  15. package/lib/icons/BatteryLevelCritical.js.map +1 -1
  16. package/lib/icons/BatteryLevelFull.d.ts +1 -1
  17. package/lib/icons/BatteryLevelFull.js +3 -1
  18. package/lib/icons/BatteryLevelFull.js.map +1 -1
  19. package/lib/icons/BatteryLevelHigh.d.ts +1 -1
  20. package/lib/icons/BatteryLevelHigh.js +3 -1
  21. package/lib/icons/BatteryLevelHigh.js.map +1 -1
  22. package/lib/icons/BatteryLevelLow.d.ts +1 -1
  23. package/lib/icons/BatteryLevelLow.js +3 -1
  24. package/lib/icons/BatteryLevelLow.js.map +1 -1
  25. package/lib/icons/BatteryLevelWired.d.ts +1 -1
  26. package/lib/icons/BatteryLevelWired.js +5 -3
  27. package/lib/icons/BatteryLevelWired.js.map +1 -1
  28. package/lib/icons/Check.d.ts +1 -1
  29. package/lib/icons/Check.js +3 -1
  30. package/lib/icons/Check.js.map +1 -1
  31. package/lib/icons/ChevronDown.d.ts +1 -1
  32. package/lib/icons/ChevronDown.js +3 -1
  33. package/lib/icons/ChevronDown.js.map +1 -1
  34. package/lib/icons/ChevronRight.d.ts +1 -1
  35. package/lib/icons/ChevronRight.js +5 -3
  36. package/lib/icons/ChevronRight.js.map +1 -1
  37. package/lib/icons/Close.d.ts +1 -1
  38. package/lib/icons/Close.js +5 -3
  39. package/lib/icons/Close.js.map +1 -1
  40. package/lib/icons/Copy.d.ts +1 -1
  41. package/lib/icons/Copy.js +5 -3
  42. package/lib/icons/Copy.js.map +1 -1
  43. package/lib/icons/DotsEllipsisMore.d.ts +1 -1
  44. package/lib/icons/DotsEllipsisMore.js +5 -3
  45. package/lib/icons/DotsEllipsisMore.js.map +1 -1
  46. package/lib/icons/ExclamationCircle.d.ts +1 -1
  47. package/lib/icons/ExclamationCircle.js +5 -3
  48. package/lib/icons/ExclamationCircle.js.map +1 -1
  49. package/lib/icons/ExclamationCircleOutline.d.ts +1 -1
  50. package/lib/icons/ExclamationCircleOutline.js +5 -3
  51. package/lib/icons/ExclamationCircleOutline.js.map +1 -1
  52. package/lib/icons/LockLocked.d.ts +1 -1
  53. package/lib/icons/LockLocked.js +5 -3
  54. package/lib/icons/LockLocked.js.map +1 -1
  55. package/lib/icons/LockUnlocked.d.ts +1 -1
  56. package/lib/icons/LockUnlocked.js +5 -3
  57. package/lib/icons/LockUnlocked.js.map +1 -1
  58. package/lib/icons/OnlineStatusAccountOffline.d.ts +1 -1
  59. package/lib/icons/OnlineStatusAccountOffline.js +5 -3
  60. package/lib/icons/OnlineStatusAccountOffline.js.map +1 -1
  61. package/lib/icons/OnlineStatusDeviceOffline.d.ts +1 -1
  62. package/lib/icons/OnlineStatusDeviceOffline.js +3 -1
  63. package/lib/icons/OnlineStatusDeviceOffline.js.map +1 -1
  64. package/lib/icons/OnlineStatusOnline.d.ts +1 -1
  65. package/lib/icons/OnlineStatusOnline.js +3 -1
  66. package/lib/icons/OnlineStatusOnline.js.map +1 -1
  67. package/lib/icons/Seam.d.ts +1 -1
  68. package/lib/icons/Seam.js +5 -3
  69. package/lib/icons/Seam.js.map +1 -1
  70. package/lib/icons/Search.d.ts +1 -1
  71. package/lib/icons/Search.js +5 -3
  72. package/lib/icons/Search.js.map +1 -1
  73. package/lib/icons/TriangleWarning.d.ts +1 -1
  74. package/lib/icons/TriangleWarning.js +5 -3
  75. package/lib/icons/TriangleWarning.js.map +1 -1
  76. package/lib/icons/TriangleWarningOutline.d.ts +1 -1
  77. package/lib/icons/TriangleWarningOutline.js +3 -1
  78. package/lib/icons/TriangleWarningOutline.js.map +1 -1
  79. package/lib/seam/access-codes/use-access-code.js +1 -1
  80. package/lib/seam/access-codes/use-access-code.js.map +1 -1
  81. package/lib/seam/access-codes/use-access-codes.js +1 -1
  82. package/lib/seam/access-codes/use-access-codes.js.map +1 -1
  83. package/lib/seam/components/DeviceTable/DeviceRow.js +11 -19
  84. package/lib/seam/components/DeviceTable/DeviceRow.js.map +1 -1
  85. package/lib/seam/components/SupportedDeviceTable/HiddenDevicesOverlay.d.ts +2 -1
  86. package/lib/seam/components/SupportedDeviceTable/HiddenDevicesOverlay.js +1 -1
  87. package/lib/seam/components/SupportedDeviceTable/HiddenDevicesOverlay.js.map +1 -1
  88. package/lib/seam/components/SupportedDeviceTable/ShowAllDevicesButton.d.ts +2 -1
  89. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceBrandSection.d.ts +2 -1
  90. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceBrandSection.js +4 -7
  91. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceBrandSection.js.map +1 -1
  92. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceContent.js +1 -1
  93. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceContent.js.map +1 -1
  94. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceFilterArea.d.ts +2 -1
  95. package/lib/seam/components/SupportedDeviceTable/{SupportedDeviceFilterResultRowProps.d.ts → SupportedDeviceFilterResultRow.d.ts} +3 -2
  96. package/lib/seam/components/SupportedDeviceTable/{SupportedDeviceFilterResultRowProps.js → SupportedDeviceFilterResultRow.js} +1 -1
  97. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceFilterResultRow.js.map +1 -0
  98. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceRow.d.ts +5 -4
  99. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceRow.js +3 -3
  100. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceRow.js.map +1 -1
  101. package/lib/seam/components/SupportedDeviceTable/use-device-provider.d.ts +1 -1
  102. package/lib/seam/components/SupportedDeviceTable/use-device-provider.js +9 -11
  103. package/lib/seam/components/SupportedDeviceTable/use-device-provider.js.map +1 -1
  104. package/lib/seam/device-models/use-device-models.js +1 -2
  105. package/lib/seam/device-models/use-device-models.js.map +1 -1
  106. package/lib/seam/devices/use-device-providers.d.ts +5 -5
  107. package/lib/seam/devices/use-device-providers.js +7 -8
  108. package/lib/seam/devices/use-device-providers.js.map +1 -1
  109. package/lib/seam/devices/use-device.js +1 -1
  110. package/lib/seam/devices/use-device.js.map +1 -1
  111. package/lib/seam/devices/use-devices.js +1 -1
  112. package/lib/seam/devices/use-devices.js.map +1 -1
  113. package/lib/seam/index.d.ts +2 -0
  114. package/lib/seam/index.js +2 -0
  115. package/lib/seam/index.js.map +1 -1
  116. package/lib/ui/device/OnlineStatus.d.ts +1 -0
  117. package/lib/ui/device/OnlineStatus.js +6 -9
  118. package/lib/ui/device/OnlineStatus.js.map +1 -1
  119. package/lib/version.d.ts +1 -1
  120. package/lib/version.js +1 -1
  121. package/package.json +17 -8
  122. package/src/lib/element.tsx +2 -2
  123. package/src/lib/icons/AccessCodeKey.tsx +22 -18
  124. package/src/lib/icons/ArrowBack.tsx +32 -26
  125. package/src/lib/icons/ArrowRestart.tsx +32 -28
  126. package/src/lib/icons/BatteryLevelCritical.tsx +31 -25
  127. package/src/lib/icons/BatteryLevelFull.tsx +31 -18
  128. package/src/lib/icons/BatteryLevelHigh.tsx +31 -25
  129. package/src/lib/icons/BatteryLevelLow.tsx +31 -25
  130. package/src/lib/icons/BatteryLevelWired.tsx +35 -29
  131. package/src/lib/icons/Check.tsx +20 -14
  132. package/src/lib/icons/ChevronDown.tsx +22 -18
  133. package/src/lib/icons/ChevronRight.tsx +32 -28
  134. package/src/lib/icons/Close.tsx +32 -26
  135. package/src/lib/icons/Copy.tsx +32 -26
  136. package/src/lib/icons/DotsEllipsisMore.tsx +33 -27
  137. package/src/lib/icons/ExclamationCircle.tsx +33 -27
  138. package/src/lib/icons/ExclamationCircleOutline.tsx +33 -27
  139. package/src/lib/icons/LockLocked.tsx +34 -28
  140. package/src/lib/icons/LockUnlocked.tsx +34 -30
  141. package/src/lib/icons/OnlineStatusAccountOffline.tsx +33 -27
  142. package/src/lib/icons/OnlineStatusDeviceOffline.tsx +27 -21
  143. package/src/lib/icons/OnlineStatusOnline.tsx +25 -19
  144. package/src/lib/icons/Seam.tsx +24 -18
  145. package/src/lib/icons/Search.tsx +32 -26
  146. package/src/lib/icons/TriangleWarning.tsx +33 -27
  147. package/src/lib/icons/TriangleWarningOutline.tsx +22 -16
  148. package/src/lib/seam/access-codes/use-access-code.ts +1 -1
  149. package/src/lib/seam/access-codes/use-access-codes.ts +1 -1
  150. package/src/lib/seam/components/DeviceTable/DeviceRow.tsx +28 -44
  151. package/src/lib/seam/components/SupportedDeviceTable/HiddenDevicesOverlay.tsx +3 -1
  152. package/src/lib/seam/components/SupportedDeviceTable/ShowAllDevicesButton.tsx +1 -1
  153. package/src/lib/seam/components/SupportedDeviceTable/SupportedDeviceBrandSection.tsx +9 -12
  154. package/src/lib/seam/components/SupportedDeviceTable/SupportedDeviceContent.tsx +1 -1
  155. package/src/lib/seam/components/SupportedDeviceTable/SupportedDeviceFilterArea.tsx +1 -1
  156. package/src/lib/seam/components/SupportedDeviceTable/{SupportedDeviceFilterResultRowProps.tsx → SupportedDeviceFilterResultRow.tsx} +2 -2
  157. package/src/lib/seam/components/SupportedDeviceTable/SupportedDeviceRow.tsx +10 -4
  158. package/src/lib/seam/components/SupportedDeviceTable/use-device-provider.ts +9 -15
  159. package/src/lib/seam/device-models/use-device-models.ts +1 -2
  160. package/src/lib/seam/devices/use-device-providers.ts +22 -14
  161. package/src/lib/seam/devices/use-device.ts +1 -1
  162. package/src/lib/seam/devices/use-devices.ts +1 -1
  163. package/src/lib/seam/index.ts +2 -0
  164. package/src/lib/ui/device/OnlineStatus.tsx +13 -14
  165. package/src/lib/version.ts +1 -1
  166. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceFilterResultRowProps.js.map +0 -1
@@ -3,7 +3,7 @@ import type { DeviceModel } from 'seamapi'
3
3
 
4
4
  import { DotDivider } from 'lib/ui/layout/DotDivider.js'
5
5
 
6
- export interface SupportedDeviceRowProps {
6
+ interface SupportedDeviceRowProps {
7
7
  deviceModel: DeviceModel
8
8
  }
9
9
 
@@ -19,7 +19,9 @@ export function SupportedDeviceRow({
19
19
  )
20
20
  }
21
21
 
22
- export function ImageColumn({ deviceModel }: SupportedDeviceRowProps) {
22
+ export function ImageColumn({
23
+ deviceModel,
24
+ }: SupportedDeviceRowProps): JSX.Element {
23
25
  return (
24
26
  <div className='seam-col seam-device-image-col'>
25
27
  <div className='seam-image-box'>
@@ -29,7 +31,9 @@ export function ImageColumn({ deviceModel }: SupportedDeviceRowProps) {
29
31
  )
30
32
  }
31
33
 
32
- export function ModelColumn({ deviceModel }: SupportedDeviceRowProps) {
34
+ export function ModelColumn({
35
+ deviceModel,
36
+ }: SupportedDeviceRowProps): JSX.Element {
33
37
  return (
34
38
  <div className='seam-col seam-model-col'>
35
39
  <div className='seam-model-name'>{deviceModel.model_name}</div>
@@ -42,7 +46,9 @@ export function ModelColumn({ deviceModel }: SupportedDeviceRowProps) {
42
46
  )
43
47
  }
44
48
 
45
- export function StatusColumn({ deviceModel }: SupportedDeviceRowProps) {
49
+ export function StatusColumn({
50
+ deviceModel,
51
+ }: SupportedDeviceRowProps): JSX.Element {
46
52
  const statusColor = supportLevelColors[deviceModel.support_level] ?? 'unknown'
47
53
 
48
54
  return (
@@ -2,21 +2,15 @@ import type { DeviceProvider } from 'seamapi'
2
2
 
3
3
  import { useDeviceProviders } from 'lib/seam/devices/use-device-providers.js'
4
4
 
5
- export function useDeviceProvider(brand: string): DeviceProvider {
5
+ export function useDeviceProvider(name: string): DeviceProvider {
6
6
  const { deviceProviders } = useDeviceProviders()
7
+ const provider = deviceProviders?.find((p) => p.device_provider_name === name)
8
+ return provider ?? unknownProvider
9
+ }
7
10
 
8
- const definedProvider = deviceProviders?.find(
9
- (provider) => provider.device_provider_name === brand
10
- )
11
-
12
- if (definedProvider != null) {
13
- return definedProvider
14
- }
15
-
16
- return {
17
- device_provider_name: 'unknown',
18
- display_name: 'Unknown',
19
- image_url: `https://connect.getseam.com/assets/images/logos/seam.png`,
20
- provider_categories: [],
21
- }
11
+ const unknownProvider: DeviceProvider = {
12
+ device_provider_name: 'unknown',
13
+ display_name: 'Unknown',
14
+ image_url: 'https://connect.getseam.com/assets/images/logos/seam.png',
15
+ provider_categories: [],
22
16
  }
@@ -28,11 +28,10 @@ export function useDeviceModels(
28
28
  queryKey: ['device_models', 'list', params],
29
29
  queryFn: async () => {
30
30
  if (client == null) return []
31
- const deviceModels = await client?.deviceModels.list({
31
+ return await client.deviceModels.list({
32
32
  ...params,
33
33
  acknowledge_intentional_use_of_internal_api: true,
34
34
  })
35
- return deviceModels
36
35
  },
37
36
  })
38
37
 
@@ -1,25 +1,33 @@
1
1
  import { useQuery } from '@tanstack/react-query'
2
- import type { DeviceProvider } from 'seamapi'
2
+ import type {
3
+ DeviceProvider,
4
+ DeviceProvidersListRequest,
5
+ DeviceProvidersListResponse,
6
+ SeamError,
7
+ } from 'seamapi'
3
8
 
4
9
  import { useSeamClient } from 'lib/seam/use-seam-client.js'
10
+ import type { UseSeamQueryResult } from 'lib/seam/use-seam-query-result.js'
5
11
 
6
- export function useDeviceProviders(): {
7
- deviceProviders: DeviceProvider[] | undefined
8
- isLoading: boolean
9
- } {
12
+ export type UseDeviceProvidersParams = DeviceProvidersListRequest
13
+ export type UseDeviceProvidersData = DeviceProvider[]
14
+
15
+ export function useDeviceProviders(
16
+ params?: UseDeviceProvidersParams
17
+ ): UseSeamQueryResult<'deviceProviders', UseDeviceProvidersData> {
10
18
  const { client } = useSeamClient()
11
19
 
12
- const { data, isLoading } = useQuery({
20
+ const { data, ...rest } = useQuery<
21
+ DeviceProvidersListResponse['device_providers'],
22
+ SeamError
23
+ >({
24
+ enabled: client != null,
25
+ queryKey: ['devices', 'list_device_providers', params],
13
26
  queryFn: async () => {
14
- if (client == null) {
15
- return []
16
- }
17
-
18
- return await client?.devices.listDeviceProviders({})
27
+ if (client == null) return []
28
+ return await client.devices.listDeviceProviders(params)
19
29
  },
20
- queryKey: ['devices', 'list_device_providers'],
21
- enabled: client != null,
22
30
  })
23
31
 
24
- return { deviceProviders: data, isLoading }
32
+ return { ...rest, deviceProviders: data }
25
33
  }
@@ -27,7 +27,7 @@ export function useDevice(
27
27
  queryKey: ['devices', 'get', normalizedParams],
28
28
  queryFn: async () => {
29
29
  if (client == null) return null
30
- return await client?.devices.get(normalizedParams)
30
+ return await client.devices.get(normalizedParams)
31
31
  },
32
32
  })
33
33
 
@@ -24,7 +24,7 @@ export function useDevices(
24
24
  queryKey: ['devices', 'list', params],
25
25
  queryFn: async () => {
26
26
  if (client == null) return []
27
- return await client?.devices.list(params)
27
+ return await client.devices.list(params)
28
28
  },
29
29
  onSuccess: (devices) => {
30
30
  // Prime cache for each device.
@@ -2,5 +2,7 @@ export * from './access-codes/use-access-code.js'
2
2
  export * from './access-codes/use-access-codes.js'
3
3
  export * from './connect-webviews/use-create-connect-webview.js'
4
4
  export * from './devices/use-device.js'
5
+ export * from './devices/use-device-providers.js'
5
6
  export * from './devices/use-devices.js'
7
+ export * from './SeamProvider.js'
6
8
  export * from './use-seam-client.js'
@@ -11,32 +11,27 @@ interface OnlineStatusProps {
11
11
  export function OnlineStatus(props: OnlineStatusProps): JSX.Element {
12
12
  const { device } = props
13
13
 
14
- const isAccountOffline =
15
- device.errors.filter((error) => error.error_code === 'account_disconnected')
16
- .length > 0
17
-
18
- if (isAccountOffline) {
19
- return <AccountOfflineContent />
20
- }
21
-
22
14
  return (
23
15
  <div className='seam-online-status'>
24
- {isAccountOffline && <OnlineStatusAccountOfflineIcon />}
25
- <DeviceOnlineContent isOnline={device.properties.online} />
16
+ {isDeviceAccountOffline(device) ? (
17
+ <AccountOfflineContent />
18
+ ) : (
19
+ <AccountOnlineContent isOnline={device.properties.online} />
20
+ )}
26
21
  </div>
27
22
  )
28
23
  }
29
24
 
30
- function AccountOfflineContent() {
25
+ function AccountOfflineContent(): JSX.Element {
31
26
  return (
32
- <div className='seam-online-status'>
27
+ <>
33
28
  <OnlineStatusAccountOfflineIcon />
34
29
  <span className='seam-text-danger'>{t.accountOffline}</span>
35
- </div>
30
+ </>
36
31
  )
37
32
  }
38
33
 
39
- function DeviceOnlineContent(props: { isOnline: boolean }): JSX.Element {
34
+ function AccountOnlineContent(props: { isOnline: boolean }): JSX.Element {
40
35
  const { isOnline } = props
41
36
  if (isOnline) {
42
37
  return (
@@ -55,6 +50,10 @@ function DeviceOnlineContent(props: { isOnline: boolean }): JSX.Element {
55
50
  )
56
51
  }
57
52
 
53
+ export const isDeviceAccountOffline = (device: CommonDevice): boolean =>
54
+ device.errors.filter((error) => error.error_code === 'account_disconnected')
55
+ .length > 0
56
+
58
57
  const t = {
59
58
  online: 'Online',
60
59
  accountOffline: 'Account Offline',
@@ -1,3 +1,3 @@
1
- const seamapiReactVersion = '1.25.0'
1
+ const seamapiReactVersion = '1.27.0'
2
2
 
3
3
  export default seamapiReactVersion
@@ -1 +0,0 @@
1
- {"version":3,"file":"SupportedDeviceFilterResultRowProps.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/SupportedDeviceTable/SupportedDeviceFilterResultRowProps.tsx"],"names":[],"mappings":";AAEA,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,YAAY,GACb,MAAM,gEAAgE,CAAA;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iEAAiE,CAAA;AACnG,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAMxD,MAAM,UAAU,8BAA8B,CAAC,EAC7C,WAAW,GACyB;IACpC,OAAO,CACL,eAAK,SAAS,EAAC,4BAA4B,aACzC,KAAC,WAAW,IAAC,WAAW,EAAE,WAAW,GAAI,EACzC,KAAC,WAAW,IAAC,WAAW,EAAE,WAAW,GAAI,EACzC,KAAC,YAAY,IAAC,WAAW,EAAE,WAAW,GAAI,IACtC,CACP,CAAA;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAC1B,WAAW,GACyB;IACpC,MAAM,cAAc,GAAG,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IAE3D,OAAO,CACL,eAAK,SAAS,EAAC,yBAAyB,aACtC,eAAK,SAAS,EAAC,iBAAiB,aAC9B,cACE,GAAG,EAAE,cAAc,CAAC,SAAS,EAC7B,GAAG,EAAE,WAAW,CAAC,KAAK,EACtB,SAAS,EAAC,kBAAkB,GAC5B,EAAC,GAAG,EACL,WAAW,CAAC,UAAU,IACnB,EACN,eAAK,SAAS,EAAC,eAAe,aAC3B,WAAW,CAAC,qBAAqB,EAClC,KAAC,UAAU,KAAG,EACb,mBAAmB,CAAC,WAAW,CAAC,eAAe,CAAC,IAC7C,IACF,CACP,CAAA;AACH,CAAC"}