@seamapi/react 0.26.0 → 0.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 (100) hide show
  1. package/README.md +5 -4
  2. package/index.css +69 -3
  3. package/index.css.map +1 -1
  4. package/index.min.css +1 -1
  5. package/index.min.css.map +1 -1
  6. package/lib/copy-to-clipboard.d.ts +1 -0
  7. package/lib/copy-to-clipboard.js +4 -0
  8. package/lib/copy-to-clipboard.js.map +1 -0
  9. package/lib/icons/Close.d.ts +2 -0
  10. package/lib/icons/Close.js +5 -0
  11. package/lib/icons/Close.js.map +1 -0
  12. package/lib/icons/Search.d.ts +2 -0
  13. package/lib/icons/Search.js +5 -0
  14. package/lib/icons/Search.js.map +1 -0
  15. package/lib/ui/AccessCodeTable/AccessCodeTable.js +4 -4
  16. package/lib/ui/AccessCodeTable/AccessCodeTable.js.map +1 -1
  17. package/lib/ui/Alert/Alert.d.ts +6 -4
  18. package/lib/ui/Alert/Alert.js +7 -4
  19. package/lib/ui/Alert/Alert.js.map +1 -1
  20. package/lib/ui/Alert/Alerts.d.ts +4 -4
  21. package/lib/ui/Alert/Alerts.js +4 -2
  22. package/lib/ui/Alert/Alerts.js.map +1 -1
  23. package/lib/ui/DeviceDetails/DeviceDetails.js +2 -3
  24. package/lib/ui/DeviceDetails/DeviceDetails.js.map +1 -1
  25. package/lib/ui/DeviceTable/DeviceRow.d.ts +2 -2
  26. package/lib/ui/DeviceTable/DeviceRow.js +0 -1
  27. package/lib/ui/DeviceTable/DeviceRow.js.map +1 -1
  28. package/lib/ui/DeviceTable/DeviceTable.js +9 -1
  29. package/lib/ui/DeviceTable/DeviceTable.js.map +1 -1
  30. package/lib/ui/Menu/Menu.d.ts +9 -10
  31. package/lib/ui/Menu/Menu.js +23 -21
  32. package/lib/ui/Menu/Menu.js.map +1 -1
  33. package/lib/ui/Menu/MenuItem.d.ts +4 -4
  34. package/lib/ui/Menu/MenuItem.js +1 -1
  35. package/lib/ui/Menu/MenuItem.js.map +1 -1
  36. package/lib/ui/Menu/MoreActionsMenu.d.ts +5 -4
  37. package/lib/ui/Menu/MoreActionsMenu.js +6 -6
  38. package/lib/ui/Menu/MoreActionsMenu.js.map +1 -1
  39. package/lib/ui/SupportedDevices/SupportedDeviceRow.d.ts +1 -1
  40. package/lib/ui/SupportedDevices/SupportedDeviceRow.js +8 -14
  41. package/lib/ui/SupportedDevices/SupportedDeviceRow.js.map +1 -1
  42. package/lib/ui/SupportedDevices/SupportedDevices.js +2 -2
  43. package/lib/ui/SupportedDevices/SupportedDevices.js.map +1 -1
  44. package/lib/ui/SupportedDevices/SupportedDevicesHeader.d.ts +1 -1
  45. package/lib/ui/SupportedDevices/SupportedDevicesHeader.js +1 -1
  46. package/lib/ui/SupportedDevices/SupportedDevicesHeader.js.map +1 -1
  47. package/lib/ui/Table/TableFilterBar/TableFilterBar.d.ts +3 -2
  48. package/lib/ui/Table/TableFilterBar/TableFilterBar.js +1 -1
  49. package/lib/ui/Table/TableFilterBar/TableFilterBar.js.map +1 -1
  50. package/lib/ui/Table/TableFilterBar/TableFilterItem.d.ts +2 -1
  51. package/lib/ui/Table/TableFilterBar/TableFilterItem.js +1 -1
  52. package/lib/ui/Table/TableFilterBar/TableFilterItem.js.map +1 -1
  53. package/lib/ui/Table/TableHeader.js +1 -1
  54. package/lib/ui/Table/TableHeader.js.map +1 -1
  55. package/lib/ui/TextField/SearchTextField.d.ts +1 -1
  56. package/lib/ui/TextField/SearchTextField.js +52 -2
  57. package/lib/ui/TextField/SearchTextField.js.map +1 -1
  58. package/lib/ui/TextField/TextField.d.ts +12 -5
  59. package/lib/ui/TextField/TextField.js +7 -5
  60. package/lib/ui/TextField/TextField.js.map +1 -1
  61. package/lib/ui/device/BatteryStatus.d.ts +2 -1
  62. package/lib/ui/device/LockStatus.d.ts +2 -1
  63. package/lib/ui/device/OnlineStatus.d.ts +2 -1
  64. package/lib/use-toggle.d.ts +1 -2
  65. package/lib/use-toggle.js +1 -2
  66. package/lib/use-toggle.js.map +1 -1
  67. package/package.json +1 -1
  68. package/src/lib/copy-to-clipboard.ts +3 -0
  69. package/src/lib/icons/Close.tsx +30 -0
  70. package/src/lib/icons/Search.tsx +30 -0
  71. package/src/lib/ui/AccessCodeTable/AccessCodeTable.tsx +4 -4
  72. package/src/lib/ui/Alert/Alert.tsx +21 -18
  73. package/src/lib/ui/Alert/Alerts.tsx +7 -5
  74. package/src/lib/ui/DeviceDetails/DeviceDetails.tsx +3 -6
  75. package/src/lib/ui/DeviceTable/DeviceRow.tsx +4 -4
  76. package/src/lib/ui/DeviceTable/DeviceTable.tsx +16 -1
  77. package/src/lib/ui/Menu/Menu.tsx +34 -34
  78. package/src/lib/ui/Menu/MenuItem.tsx +6 -4
  79. package/src/lib/ui/Menu/MoreActionsMenu.tsx +15 -10
  80. package/src/lib/ui/SupportedDevices/SupportedDeviceRow.tsx +9 -20
  81. package/src/lib/ui/SupportedDevices/SupportedDevices.tsx +2 -2
  82. package/src/lib/ui/SupportedDevices/SupportedDevicesHeader.tsx +1 -1
  83. package/src/lib/ui/Table/TableFilterBar/TableFilterBar.tsx +5 -3
  84. package/src/lib/ui/Table/TableFilterBar/TableFilterItem.tsx +2 -2
  85. package/src/lib/ui/Table/TableHeader.tsx +5 -1
  86. package/src/lib/ui/TextField/SearchTextField.tsx +79 -0
  87. package/src/lib/ui/TextField/TextField.tsx +45 -14
  88. package/src/lib/ui/device/BatteryStatus.tsx +1 -1
  89. package/src/lib/ui/device/LockStatus.tsx +1 -1
  90. package/src/lib/ui/device/OnlineStatus.tsx +1 -1
  91. package/src/lib/use-toggle.ts +3 -3
  92. package/src/styles/_colors.scss +1 -0
  93. package/src/styles/_device-table.scss +4 -0
  94. package/src/styles/_inputs.scss +74 -2
  95. package/src/styles/_supported-devices.scss +0 -1
  96. package/src/styles/_tables.scss +8 -1
  97. package/lib/copy.d.ts +0 -1
  98. package/lib/copy.js +0 -4
  99. package/lib/copy.js.map +0 -1
  100. package/src/lib/copy.ts +0 -3
@@ -1,19 +1,18 @@
1
- /// <reference types="react" />
1
+ import { type MouseEvent, type PropsWithChildren } from 'react';
2
2
  export interface MenuProps {
3
- children: JSX.Element | JSX.Element[];
4
3
  verticalOffset?: number;
5
4
  horizontalOffset?: number;
6
5
  edgeOffset?: number;
7
- button: (props: {
8
- open: (event: React.MouseEvent<HTMLElement>) => void;
9
- }) => React.ReactElement;
10
- BackgroundProps?: Partial<{
6
+ renderButton: (props: {
7
+ onOpen: (event: MouseEvent<HTMLElement>) => void;
8
+ }) => JSX.Element;
9
+ backgroundProps?: Partial<{
11
10
  className?: string;
12
11
  }>;
13
12
  }
14
- interface MenuContextProps {
13
+ interface MenuContextValue {
15
14
  close: () => void;
16
15
  }
17
- declare const Menu: ({ verticalOffset, horizontalOffset, edgeOffset, children, button, BackgroundProps, }: MenuProps) => import("react/jsx-runtime").JSX.Element | null;
18
- export declare function useMenu(): MenuContextProps;
19
- export default Menu;
16
+ export declare function Menu({ verticalOffset, horizontalOffset, edgeOffset, children, renderButton, backgroundProps, }: PropsWithChildren<MenuProps>): import("react/jsx-runtime").JSX.Element | null;
17
+ export declare function useMenu(): MenuContextValue;
18
+ export {};
@@ -2,15 +2,20 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import classNames from 'classnames';
3
3
  import { createContext, useCallback, useContext, useEffect, useLayoutEffect, useState, } from 'react';
4
4
  import { createPortal } from 'react-dom';
5
- const MenuContext = createContext(undefined);
6
- const Menu = ({ verticalOffset = 5, horizontalOffset = 0, edgeOffset = 5, children, button, BackgroundProps, }) => {
5
+ const menuContext = createContext({
6
+ close: () => { },
7
+ });
8
+ export function Menu({ verticalOffset = 5, horizontalOffset = 0, edgeOffset = 5, children, renderButton, backgroundProps, }) {
9
+ const { Provider } = menuContext;
7
10
  const [anchorEl, setAnchorEl] = useState(null);
8
11
  const [documentEl, setDocumentEl] = useState(null);
9
12
  const [contentEl, setContentEl] = useState(null);
10
13
  const [top, setTop] = useState(0);
11
14
  const [left, setLeft] = useState(0);
12
15
  useEffect(() => {
13
- const containers = document.querySelectorAll('.seam-components');
16
+ const containers = globalThis?.document?.querySelectorAll('.seam-components');
17
+ if (containers == null)
18
+ return;
14
19
  const el = containers[containers.length - 1];
15
20
  if (el != null) {
16
21
  setDocumentEl(el);
@@ -19,7 +24,7 @@ const Menu = ({ verticalOffset = 5, horizontalOffset = 0, edgeOffset = 5, childr
19
24
  const handleClose = () => {
20
25
  setAnchorEl(null);
21
26
  };
22
- const open = (event) => {
27
+ const handleOpen = (event) => {
23
28
  setAnchorEl(event.currentTarget);
24
29
  };
25
30
  const setPositions = useCallback(() => {
@@ -33,15 +38,13 @@ const Menu = ({ verticalOffset = 5, horizontalOffset = 0, edgeOffset = 5, childr
33
38
  const left = anchorLeft + horizontalOffset;
34
39
  const right = left + contentWidth;
35
40
  const bottom = top + contentHeight;
36
- // If the content would overflow right, we'll need to set it relative
37
- // to the right of the container.
41
+ // If the content would overflow right, set it relative to the right of the container.
38
42
  const isOverflowingRight = right > containerRight;
39
43
  const visibleLeft = isOverflowingRight
40
44
  ? containerRight - contentWidth - horizontalOffset - edgeOffset
41
45
  : left;
42
46
  setLeft(visibleLeft);
43
- // If the content would overflow bottom, we'll position it to be
44
- // above the anchor.
47
+ // If the content would overflow bottom, position it above the anchor.
45
48
  const isOverFlowingBottom = bottom > containerBottom;
46
49
  const visibleTop = isOverFlowingBottom
47
50
  ? anchorTop - contentHeight - verticalOffset
@@ -55,39 +58,38 @@ const Menu = ({ verticalOffset = 5, horizontalOffset = 0, edgeOffset = 5, childr
55
58
  documentEl,
56
59
  edgeOffset,
57
60
  ]);
58
- const isOpen = Boolean(anchorEl);
59
61
  useLayoutEffect(() => {
60
62
  setPositions();
61
- window.addEventListener('scroll', setPositions);
62
- window.addEventListener('resize', setPositions);
63
+ globalThis?.addEventListener('scroll', setPositions);
64
+ globalThis?.addEventListener('resize', setPositions);
63
65
  return () => {
64
- window.removeEventListener('scroll', setPositions);
65
- window.removeEventListener('resize', setPositions);
66
+ globalThis?.removeEventListener('scroll', setPositions);
67
+ globalThis?.removeEventListener('resize', setPositions);
66
68
  };
67
69
  }, [setPositions]);
70
+ const isOpen = anchorEl != null;
68
71
  const hasSetPosition = top !== 0 && left !== 0;
69
72
  const visible = isOpen && hasSetPosition;
70
73
  if (documentEl == null) {
71
74
  return null;
72
75
  }
73
- return (_jsxs(MenuContext.Provider, { value: {
76
+ return (_jsxs(Provider, { value: {
74
77
  close: handleClose,
75
- }, children: [button({ open }), createPortal(_jsx("div", { className: classNames('seam-menu-bg', BackgroundProps?.className), style: {
78
+ }, children: [renderButton({ onOpen: handleOpen }), createPortal(_jsx("div", { className: classNames('seam-menu-bg', backgroundProps?.className), style: {
76
79
  display: visible ? 'flex' : 'none',
77
- }, onClick: (e) => {
78
- e.stopPropagation();
80
+ }, onClick: (event) => {
81
+ event.stopPropagation();
79
82
  handleClose();
80
83
  }, children: _jsx("div", { className: 'seam-menu-content', style: {
81
84
  top,
82
85
  left,
83
86
  }, children: children }) }), documentEl), _jsx("div", { className: 'seam-menu-shadow', children: _jsx("div", { className: 'seam-menu-content', ref: setContentEl, children: children }) })] }));
84
- };
87
+ }
85
88
  export function useMenu() {
86
- const context = useContext(MenuContext);
87
- if (context === undefined) {
89
+ const context = useContext(menuContext);
90
+ if (context == null) {
88
91
  throw new Error('useMenu must be used within a Menu.');
89
92
  }
90
93
  return context;
91
94
  }
92
- export default Menu;
93
95
  //# sourceMappingURL=Menu.js.map
@@ -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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"}
@@ -1,6 +1,6 @@
1
- import type { ReactNode } from 'react';
2
- export interface MenuItemProps {
3
- children: ReactNode;
1
+ import type { PropsWithChildren } from 'react';
2
+ interface MenuItemProps {
4
3
  onClick: () => void;
5
4
  }
6
- export declare function MenuItem({ children, onClick }: MenuItemProps): import("react/jsx-runtime").JSX.Element;
5
+ export declare function MenuItem({ onClick, children, }: PropsWithChildren<MenuItemProps>): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useMenu } from '../../../lib/ui/Menu/Menu.js';
3
- export function MenuItem({ children, onClick }) {
3
+ export function MenuItem({ onClick, children, }) {
4
4
  const { close: closeMenu } = useMenu();
5
5
  return (_jsx("div", { className: 'seam-menu-item', onClick: () => {
6
6
  onClick();
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItem.js","sourceRoot":"","sources":["../../../src/lib/ui/Menu/MenuItem.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAO7C,MAAM,UAAU,QAAQ,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAiB;IAC3D,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAA;IAEtC,OAAO,CACL,cACE,SAAS,EAAC,gBAAgB,EAC1B,OAAO,EAAE,GAAG,EAAE;YACZ,OAAO,EAAE,CAAA;YACT,SAAS,EAAE,CAAA;QACb,CAAC,YAEA,QAAQ,GACL,CACP,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"MenuItem.js","sourceRoot":"","sources":["../../../src/lib/ui/Menu/MenuItem.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAM7C,MAAM,UAAU,QAAQ,CAAC,EACvB,OAAO,EACP,QAAQ,GACyB;IACjC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAA;IAEtC,OAAO,CACL,cACE,SAAS,EAAC,gBAAgB,EAC1B,OAAO,EAAE,GAAG,EAAE;YACZ,OAAO,EAAE,CAAA;YACT,SAAS,EAAE,CAAA;QACb,CAAC,YAEA,QAAQ,GACL,CACP,CAAA;AACH,CAAC"}
@@ -1,6 +1,7 @@
1
+ import type { PropsWithChildren } from 'react';
1
2
  import { type MenuProps } from '../../../lib/ui/Menu/Menu.js';
2
- export interface MoreActionsMenuProps {
3
- children: JSX.Element | JSX.Element[];
4
- MenuProps?: Partial<MenuProps>;
3
+ interface MoreActionsMenuProps {
4
+ menuProps?: Partial<MenuProps>;
5
5
  }
6
- export declare function MoreActionsMenu({ children, MenuProps }: MoreActionsMenuProps): import("react/jsx-runtime").JSX.Element;
6
+ export declare function MoreActionsMenu({ children, menuProps, }: PropsWithChildren<MoreActionsMenuProps>): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -1,11 +1,11 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { DotsEllipsisMoreIcon } from '../../../lib/icons/DotsEllipsisMore.js';
3
3
  import { IconButton } from '../../../lib/ui/IconButton.js';
4
- import Menu, {} from '../../../lib/ui/Menu/Menu.js';
5
- export function MoreActionsMenu({ children, MenuProps }) {
6
- return (_jsx(Menu, { button: ({ open }) => (_jsx(IconButton, { onClick: (e) => {
7
- e.stopPropagation();
8
- open(e);
9
- }, children: _jsx(DotsEllipsisMoreIcon, {}) })), ...MenuProps, children: children }));
4
+ import { Menu } from '../../../lib/ui/Menu/Menu.js';
5
+ export function MoreActionsMenu({ children, menuProps, }) {
6
+ return (_jsx(Menu, { renderButton: ({ onOpen }) => (_jsx(IconButton, { onClick: (event) => {
7
+ event.stopPropagation();
8
+ onOpen(event);
9
+ }, children: _jsx(DotsEllipsisMoreIcon, {}) })), ...menuProps, children: children }));
10
10
  }
11
11
  //# sourceMappingURL=MoreActionsMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MoreActionsMenu.js","sourceRoot":"","sources":["../../../src/lib/ui/Menu/MoreActionsMenu.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,IAAI,EAAE,EAAkB,MAAM,qBAAqB,CAAA;AAM1D,MAAM,UAAU,eAAe,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAwB;IAC3E,OAAO,CACL,KAAC,IAAI,IACH,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CACpB,KAAC,UAAU,IACT,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACb,CAAC,CAAC,eAAe,EAAE,CAAA;gBACnB,IAAI,CAAC,CAAC,CAAC,CAAA;YACT,CAAC,YAED,KAAC,oBAAoB,KAAG,GACb,CACd,KACG,SAAS,YAEZ,QAAQ,GACJ,CACR,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"MoreActionsMenu.js","sourceRoot":"","sources":["../../../src/lib/ui/Menu/MoreActionsMenu.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,IAAI,EAAkB,MAAM,qBAAqB,CAAA;AAM1D,MAAM,UAAU,eAAe,CAAC,EAC9B,QAAQ,EACR,SAAS,GAC+B;IACxC,OAAO,CACL,KAAC,IAAI,IACH,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAC5B,KAAC,UAAU,IACT,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjB,KAAK,CAAC,eAAe,EAAE,CAAA;gBACvB,MAAM,CAAC,KAAK,CAAC,CAAA;YACf,CAAC,YAED,KAAC,oBAAoB,KAAG,GACb,CACd,KACG,SAAS,YAEZ,QAAQ,GACJ,CACR,CAAA;AACH,CAAC"}
@@ -2,4 +2,4 @@ import type { DeviceModel } from '../../../lib/ui/SupportedDevices/types.js';
2
2
  export interface SupportedDeviceRowProps {
3
3
  deviceModel: DeviceModel;
4
4
  }
5
- export default function SupportedDeviceRow({ deviceModel, }: SupportedDeviceRowProps): import("react/jsx-runtime").JSX.Element;
5
+ export declare function SupportedDeviceRow({ deviceModel }: SupportedDeviceRowProps): import("react/jsx-runtime").JSX.Element;
@@ -1,18 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import classNames from 'classnames';
3
- export default function SupportedDeviceRow({ deviceModel, }) {
4
- function getColorFromSupportLevel() {
5
- switch (deviceModel.support_level) {
6
- case 'Live':
7
- return 'green';
8
- case 'Beta':
9
- return 'blue';
10
- case 'Unsupported':
11
- return 'orange';
12
- default:
13
- return 'gray';
14
- }
15
- }
16
- return (_jsxs("tr", { children: [_jsx("td", { children: _jsx("img", { style: { width: 40 }, src: deviceModel.icon_url }) }), _jsx("td", { children: deviceModel.main_category }), _jsx("td", { children: deviceModel.model_name }), _jsx("td", { children: deviceModel.manufacturer_model_id }), _jsx("td", { children: deviceModel.connection_type }), _jsx("td", { children: _jsx("div", { className: classNames('seam-status-pill', `status-${getColorFromSupportLevel()}`), children: _jsx("span", { children: deviceModel.support_level }) }) })] }));
3
+ export function SupportedDeviceRow({ deviceModel }) {
4
+ const statusColor = supportLevelColors[deviceModel.support_level] ?? 'gray';
5
+ return (_jsxs("tr", { children: [_jsx("td", { children: _jsx("img", { style: { width: 40 }, src: deviceModel.icon_url }) }), _jsx("td", { children: deviceModel.main_category }), _jsx("td", { children: deviceModel.model_name }), _jsx("td", { children: deviceModel.manufacturer_model_id }), _jsx("td", { children: deviceModel.connection_type }), _jsx("td", { children: _jsx("div", { className: classNames('seam-status-pill', `status-${statusColor}`), children: _jsx("span", { children: deviceModel.support_level }) }) })] }));
17
6
  }
7
+ const supportLevelColors = {
8
+ Live: 'green',
9
+ Beta: 'blue',
10
+ Unsupported: 'orange',
11
+ };
18
12
  //# sourceMappingURL=SupportedDeviceRow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SupportedDeviceRow.js","sourceRoot":"","sources":["../../../src/lib/ui/SupportedDevices/SupportedDeviceRow.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AAQnC,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EACzC,WAAW,GACa;IACxB,SAAS,wBAAwB;QAC/B,QAAQ,WAAW,CAAC,aAAa,EAAE;YACjC,KAAK,MAAM;gBACT,OAAO,OAAO,CAAA;YAChB,KAAK,MAAM;gBACT,OAAO,MAAM,CAAA;YACf,KAAK,aAAa;gBAChB,OAAO,QAAQ,CAAA;YACjB;gBACE,OAAO,MAAM,CAAA;SAChB;IACH,CAAC;IAED,OAAO,CACL,yBACE,uBACE,cAAK,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,QAAQ,GAAI,GACrD,EACL,uBAAK,WAAW,CAAC,aAAa,GAAM,EACpC,uBAAK,WAAW,CAAC,UAAU,GAAM,EACjC,uBAAK,WAAW,CAAC,qBAAqB,GAAM,EAC5C,uBAAK,WAAW,CAAC,eAAe,GAAM,EACtC,uBACE,cACE,SAAS,EAAE,UAAU,CACnB,kBAAkB,EAClB,UAAU,wBAAwB,EAAE,EAAE,CACvC,YAED,yBAAO,WAAW,CAAC,aAAa,GAAQ,GACpC,GACH,IACF,CACN,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"SupportedDeviceRow.js","sourceRoot":"","sources":["../../../src/lib/ui/SupportedDevices/SupportedDeviceRow.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AAQnC,MAAM,UAAU,kBAAkB,CAAC,EAAE,WAAW,EAA2B;IACzE,MAAM,WAAW,GAAG,kBAAkB,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,MAAM,CAAA;IAC3E,OAAO,CACL,yBACE,uBACE,cAAK,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,QAAQ,GAAI,GACrD,EACL,uBAAK,WAAW,CAAC,aAAa,GAAM,EACpC,uBAAK,WAAW,CAAC,UAAU,GAAM,EACjC,uBAAK,WAAW,CAAC,qBAAqB,GAAM,EAC5C,uBAAK,WAAW,CAAC,eAAe,GAAM,EACtC,uBACE,cACE,SAAS,EAAE,UAAU,CAAC,kBAAkB,EAAE,UAAU,WAAW,EAAE,CAAC,YAElE,yBAAO,WAAW,CAAC,aAAa,GAAQ,GACpC,GACH,IACF,CACN,CAAA;AACH,CAAC;AAED,MAAM,kBAAkB,GAAG;IACzB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,QAAQ;CACtB,CAAA"}
@@ -2,8 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
2
2
  import { useQuery } from '@tanstack/react-query';
3
3
  import axios from 'axios';
4
4
  import { Button } from '../../../lib/ui/Button.js';
5
- import SupportedDeviceRow from './SupportedDeviceRow.js';
6
- import SupportedDevicesHeader from './SupportedDevicesHeader.js';
5
+ import { SupportedDeviceRow } from './SupportedDeviceRow.js';
6
+ import { SupportedDevicesHeader } from './SupportedDevicesHeader.js';
7
7
  export function SupportedDevices() {
8
8
  const { data, isLoading, isError, refetch } = useQuery({
9
9
  queryKey: ['supported_devices'],
@@ -1 +1 @@
1
- {"version":3,"file":"SupportedDevices.js","sourceRoot":"","sources":["../../../src/lib/ui/SupportedDevices/SupportedDevices.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAGzC,OAAO,kBAAkB,MAAM,yBAAyB,CAAA;AACxD,OAAO,sBAAsB,MAAM,6BAA6B,CAAA;AAEhE,MAAM,UAAU,gBAAgB;IAC9B,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,QAAQ,CAInD;QACD,QAAQ,EAAE,CAAC,mBAAmB,CAAC;QAC/B,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,OAAO,MAAM,KAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAA;QAC3E,CAAC;KACF,CAAC,CAAA;IAEF,OAAO,CACL,4BACE,eAAK,SAAS,EAAC,mCAAmC,aAC/C,SAAS,IAAI,CACZ,cAAK,SAAS,EAAC,0CAA0C,YACvD,mDAA+B,GAC3B,CACP,EAEA,OAAO,IAAI,CACV,eAAK,SAAS,EAAC,0CAA0C,aACvD,qEAAiD,EACjD,KAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,GAAG,EAAE;gCACZ,KAAK,OAAO,EAAE,CAAA;4BAChB,CAAC,sBAGM,IACL,CACP,EAEA,CAAC,SAAS;oBACT,CAAC,OAAO;oBACR,IAAI,EAAE,IAAI,EAAE,aAAa,KAAK,IAAI;oBAClC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAC1C,iBAAO,SAAS,EAAC,8BAA8B,aAC7C,KAAC,sBAAsB,KAAG,EAC1B,0BACG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAC5C,KAAC,kBAAkB,IAEjB,WAAW,EAAE,WAAW,IADnB,WAAW,CAAC,qBAAqB,CAEtC,CACH,CAAC,GACI,IACF,CACT,IACC,GACL,CACJ,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"SupportedDevices.js","sourceRoot":"","sources":["../../../src/lib/ui/SupportedDevices/SupportedDevices.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAGzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAEpE,MAAM,UAAU,gBAAgB;IAC9B,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,QAAQ,CAInD;QACD,QAAQ,EAAE,CAAC,mBAAmB,CAAC;QAC/B,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,OAAO,MAAM,KAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAA;QAC3E,CAAC;KACF,CAAC,CAAA;IAEF,OAAO,CACL,4BACE,eAAK,SAAS,EAAC,mCAAmC,aAC/C,SAAS,IAAI,CACZ,cAAK,SAAS,EAAC,0CAA0C,YACvD,mDAA+B,GAC3B,CACP,EAEA,OAAO,IAAI,CACV,eAAK,SAAS,EAAC,0CAA0C,aACvD,qEAAiD,EACjD,KAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,GAAG,EAAE;gCACZ,KAAK,OAAO,EAAE,CAAA;4BAChB,CAAC,sBAGM,IACL,CACP,EAEA,CAAC,SAAS;oBACT,CAAC,OAAO;oBACR,IAAI,EAAE,IAAI,EAAE,aAAa,KAAK,IAAI;oBAClC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAC1C,iBAAO,SAAS,EAAC,8BAA8B,aAC7C,KAAC,sBAAsB,KAAG,EAC1B,0BACG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAC5C,KAAC,kBAAkB,IAEjB,WAAW,EAAE,WAAW,IADnB,WAAW,CAAC,qBAAqB,CAEtC,CACH,CAAC,GACI,IACF,CACT,IACC,GACL,CACJ,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- export default function SupportedDevicesHeader(): import("react/jsx-runtime").JSX.Element;
1
+ export declare function SupportedDevicesHeader(): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export default function SupportedDevicesHeader() {
2
+ export function SupportedDevicesHeader() {
3
3
  return (_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", {}), _jsx("th", { children: "Category" }), _jsx("th", { children: "Model Name" }), _jsx("th", { children: "Manufacturer Model ID" }), _jsx("th", { children: "Connection Type" }), _jsx("th", { children: "Status" })] }) }));
4
4
  }
5
5
  //# sourceMappingURL=SupportedDevicesHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SupportedDevicesHeader.js","sourceRoot":"","sources":["../../../src/lib/ui/SupportedDevices/SupportedDevicesHeader.tsx"],"names":[],"mappings":";AAAA,MAAM,CAAC,OAAO,UAAU,sBAAsB;IAC5C,OAAO,CACL,0BACE,yBACE,cAAM,EACN,oCAAiB,EACjB,sCAAmB,EACnB,iDAA8B,EAC9B,2CAAwB,EACxB,kCAAe,IACZ,GACC,CACT,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"SupportedDevicesHeader.js","sourceRoot":"","sources":["../../../src/lib/ui/SupportedDevices/SupportedDevicesHeader.tsx"],"names":[],"mappings":";AAAA,MAAM,UAAU,sBAAsB;IACpC,OAAO,CACL,0BACE,yBACE,cAAM,EACN,oCAAiB,EACjB,sCAAmB,EACnB,iDAA8B,EAC9B,2CAAwB,EACxB,kCAAe,IACZ,GACC,CACT,CAAA;AACH,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type { DivProps } from '../../../../lib/ui/types.js';
2
- export interface TableFiltersProps extends DivProps {
2
+ interface TableFilterBarProps extends DivProps {
3
3
  isFilterCleared?: boolean;
4
4
  onFilterClear?: () => void;
5
5
  }
6
- export declare function TableFilterBar({ isFilterCleared, onFilterClear, children, ...props }: TableFiltersProps): import("react/jsx-runtime").JSX.Element;
6
+ export declare function TableFilterBar({ isFilterCleared, onFilterClear, children, ...props }: TableFilterBarProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -3,7 +3,7 @@ import { ArrowRestartIcon } from '../../../../lib/icons/ArrowRestart.js';
3
3
  import { IconButton } from '../../../../lib/ui/IconButton.js';
4
4
  export function TableFilterBar({ isFilterCleared, onFilterClear, children, ...props }) {
5
5
  const showClearFilterButton = isFilterCleared === false;
6
- return (_jsxs("div", { className: 'seam-table-filter-bar', ...props, children: [children, ' ', showClearFilterButton && _jsx(ClearFiltersButton, { onClick: onFilterClear })] }));
6
+ return (_jsxs("div", { className: 'seam-table-filter-bar', ...props, children: [children, ' ', showClearFilterButton ? (_jsx(ClearFiltersButton, { onClick: onFilterClear })) : null] }));
7
7
  }
8
8
  function ClearFiltersButton(props) {
9
9
  return (_jsx(IconButton, { ...props, className: 'seam-clear-filters-button', children: _jsx(ArrowRestartIcon, {}) }));
@@ -1 +1 @@
1
- {"version":3,"file":"TableFilterBar.js","sourceRoot":"","sources":["../../../../src/lib/ui/Table/TableFilterBar/TableFilterBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAQjD,MAAM,UAAU,cAAc,CAAC,EAC7B,eAAe,EACf,aAAa,EACb,QAAQ,EACR,GAAG,KAAK,EACU;IAClB,MAAM,qBAAqB,GAAG,eAAe,KAAK,KAAK,CAAA;IACvD,OAAO,CACL,eAAK,SAAS,EAAC,uBAAuB,KAAK,KAAK,aAC7C,QAAQ,EAAE,GAAG,EACb,qBAAqB,IAAI,KAAC,kBAAkB,IAAC,OAAO,EAAE,aAAa,GAAI,IACpE,CACP,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAkB;IAC5C,OAAO,CACL,KAAC,UAAU,OAAK,KAAK,EAAE,SAAS,EAAC,2BAA2B,YAC1D,KAAC,gBAAgB,KAAG,GACT,CACd,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"TableFilterBar.js","sourceRoot":"","sources":["../../../../src/lib/ui/Table/TableFilterBar/TableFilterBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAQjD,MAAM,UAAU,cAAc,CAAC,EAC7B,eAAe,EACf,aAAa,EACb,QAAQ,EACR,GAAG,KAAK,EACY;IACpB,MAAM,qBAAqB,GAAG,eAAe,KAAK,KAAK,CAAA;IACvD,OAAO,CACL,eAAK,SAAS,EAAC,uBAAuB,KAAK,KAAK,aAC7C,QAAQ,EAAE,GAAG,EACb,qBAAqB,CAAC,CAAC,CAAC,CACvB,KAAC,kBAAkB,IAAC,OAAO,EAAE,aAAa,GAAI,CAC/C,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAkB;IAC5C,OAAO,CACL,KAAC,UAAU,OAAK,KAAK,EAAE,SAAS,EAAC,2BAA2B,YAC1D,KAAC,gBAAgB,KAAG,GACT,CACd,CAAA;AACH,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { DivProps } from '../../../../lib/ui/types.js';
2
- export interface TableFilterItemProps extends DivProps {
2
+ interface TableFilterItemProps extends DivProps {
3
3
  selected?: boolean;
4
4
  }
5
5
  export declare function TableFilterItem({ onClick, selected, ...props }: TableFilterItemProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import classNames from 'classnames';
3
3
  export function TableFilterItem({ onClick, selected, ...props }) {
4
4
  return (_jsx("div", { onClick: onClick, className: classNames('seam-table-filter-item', {
5
- 'seam-clickable': onClick !== undefined,
5
+ 'seam-clickable': onClick != null,
6
6
  'seam-selected': selected,
7
7
  }), ...props }));
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TableFilterItem.js","sourceRoot":"","sources":["../../../../src/lib/ui/Table/TableFilterBar/TableFilterItem.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AAQnC,MAAM,UAAU,eAAe,CAAC,EAC9B,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACa;IACrB,OAAO,CACL,cACE,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,UAAU,CAAC,wBAAwB,EAAE;YAC9C,gBAAgB,EAAE,OAAO,KAAK,SAAS;YACvC,eAAe,EAAE,QAAQ;SAC1B,CAAC,KACE,KAAK,GACT,CACH,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"TableFilterItem.js","sourceRoot":"","sources":["../../../../src/lib/ui/Table/TableFilterBar/TableFilterItem.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AAQnC,MAAM,UAAU,eAAe,CAAC,EAC9B,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACa;IACrB,OAAO,CACL,cACE,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,UAAU,CAAC,wBAAwB,EAAE;YAC9C,gBAAgB,EAAE,OAAO,IAAI,IAAI;YACjC,eAAe,EAAE,QAAQ;SAC1B,CAAC,KACE,KAAK,GACT,CACH,CAAA;AACH,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  export function TableHeader({ children }) {
3
- return _jsx("div", { className: 'seam-table-header', children: children });
3
+ return (_jsx("div", { className: 'seam-table-header', children: _jsx("div", { className: 'seam-body', children: children }) }));
4
4
  }
5
5
  //# sourceMappingURL=TableHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableHeader.js","sourceRoot":"","sources":["../../../src/lib/ui/Table/TableHeader.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,WAAW,CAAC,EAAE,QAAQ,EAAqB;IACzD,OAAO,cAAK,SAAS,EAAC,mBAAmB,YAAE,QAAQ,GAAO,CAAA;AAC5D,CAAC"}
1
+ {"version":3,"file":"TableHeader.js","sourceRoot":"","sources":["../../../src/lib/ui/Table/TableHeader.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,WAAW,CAAC,EAAE,QAAQ,EAAqB;IACzD,OAAO,CACL,cAAK,SAAS,EAAC,mBAAmB,YAChC,cAAK,SAAS,EAAC,WAAW,YAAE,QAAQ,GAAO,GACvC,CACP,CAAA;AACH,CAAC"}
@@ -1,2 +1,2 @@
1
1
  import { type TextFieldProps } from '../../../lib/ui/TextField/TextField.js';
2
- export declare function SearchTextField({ className, ...props }: TextFieldProps): JSX.Element;
2
+ export declare function SearchTextField({ className, value, onChange, ...props }: TextFieldProps): JSX.Element;
@@ -1,7 +1,57 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import classNames from 'classnames';
3
+ import { useEffect, useState } from 'react';
4
+ import { CloseIcon } from '../../../lib/icons/Close.js';
5
+ import { SearchIcon } from '../../../lib/icons/Search.js';
3
6
  import { TextField } from '../../../lib/ui/TextField/TextField.js';
4
- export function SearchTextField({ className, ...props }) {
5
- return (_jsx(TextField, { ...props, className: classNames(className, 'seam-search-text-field') }));
7
+ export function SearchTextField({ className, value, onChange, ...props }) {
8
+ const [inputEl, setInputEl] = useState(null);
9
+ const valueIsEmpty = useValueIsEmpty(value, inputEl);
10
+ const clearInput = () => {
11
+ if (onChange != null) {
12
+ onChange('');
13
+ return;
14
+ }
15
+ if (inputEl != null) {
16
+ inputEl.value = '';
17
+ }
18
+ };
19
+ return (_jsx(TextField, { value: value, onChange: onChange, ...props, className: classNames(className, 'seam-search-text-field'), startAdornment: _jsx(SearchIcon, {}), inputProps: {
20
+ ref: setInputEl,
21
+ placeholder: 'Search',
22
+ }, endAdornment: _jsx("button", { className: classNames({
23
+ 'seam-hidden': valueIsEmpty,
24
+ }), onClick: clearInput, children: _jsx(CloseIcon, {}) }) }));
25
+ }
26
+ function useValueIsEmpty(value, inputEl) {
27
+ const [valueIsEmpty, setValueIsEmpty] = useState(true);
28
+ // If this is a controlled element, we'll just look at `value`
29
+ useEffect(() => {
30
+ setValueIsEmpty(value == null || value === '');
31
+ }, [value]);
32
+ // If this is not a controlled element, we'll need to listen to `input`
33
+ // events.
34
+ useEffect(() => {
35
+ if (inputEl == null) {
36
+ return;
37
+ }
38
+ const handler = (event) => {
39
+ if (value !== undefined) {
40
+ return;
41
+ }
42
+ if (event.target == null || !('value' in event.target)) {
43
+ return;
44
+ }
45
+ const inputValue = event.target.value;
46
+ if (value === undefined) {
47
+ setValueIsEmpty(inputValue === '');
48
+ }
49
+ };
50
+ inputEl.addEventListener('input', handler);
51
+ return () => {
52
+ inputEl.removeEventListener('input', handler);
53
+ };
54
+ }, [inputEl, value]);
55
+ return valueIsEmpty;
6
56
  }
7
57
  //# sourceMappingURL=SearchTextField.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchTextField.js","sourceRoot":"","sources":["../../../src/lib/ui/TextField/SearchTextField.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AAEnC,OAAO,EAAE,SAAS,EAAuB,MAAM,+BAA+B,CAAA;AAE9E,MAAM,UAAU,eAAe,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACO;IACf,OAAO,CACL,KAAC,SAAS,OACJ,KAAK,EACT,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,wBAAwB,CAAC,GAC1D,CACH,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"SearchTextField.js","sourceRoot":"","sources":["../../../src/lib/ui/TextField/SearchTextField.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAuB,MAAM,+BAA+B,CAAA;AAE9E,MAAM,UAAU,eAAe,CAAC,EAC9B,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACO;IACf,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAA0B,IAAI,CAAC,CAAA;IAErE,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACpD,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,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,OAAO,CACL,KAAC,SAAS,IACR,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,KACd,KAAK,EACT,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,wBAAwB,CAAC,EAC1D,cAAc,EAAE,KAAC,UAAU,KAAG,EAC9B,UAAU,EAAE;YACV,GAAG,EAAE,UAAU;YACf,WAAW,EAAE,QAAQ;SACtB,EACD,YAAY,EACV,iBACE,SAAS,EAAE,UAAU,CAAC;gBACpB,aAAa,EAAE,YAAY;aAC5B,CAAC,EACF,OAAO,EAAE,UAAU,YAEnB,KAAC,SAAS,KAAG,GACN,GAEX,CACH,CAAA;AACH,CAAC;AAED,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,EAAE,EAAE;YAC/B,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,7 +1,14 @@
1
- import type { ChangeEvent, InputHTMLAttributes } from 'react';
2
- export type TextFieldProps = {
1
+ import type { ChangeEvent, InputHTMLAttributes, MutableRefObject } from 'react';
2
+ export interface TextFieldProps {
3
3
  value?: string;
4
- onChange: (value: string) => void;
5
- } & Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange'>;
4
+ onChange?: (value: string) => void;
5
+ startAdornment?: JSX.Element;
6
+ endAdornment?: JSX.Element;
7
+ disabled?: boolean;
8
+ className?: string;
9
+ inputProps?: {
10
+ ref?: MutableRefObject<HTMLInputElement | null> | ((inputEl: HTMLInputElement) => void);
11
+ } & Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange'>;
12
+ }
6
13
  export declare function TextField(props: TextFieldProps): JSX.Element;
7
- export declare const handleString: (setter: (v: string) => void) => (e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
14
+ export declare const handleString: (setter: (v: string) => void) => (event: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
@@ -1,10 +1,12 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import classNames from 'classnames';
3
3
  export function TextField(props) {
4
- const { value, onChange, className, ...inputProps } = props;
5
- return (_jsx("input", { className: classNames('seam-text-field', className), value: value, onChange: handleString(onChange), type: 'text', ...inputProps }));
4
+ const { value, onChange, className, startAdornment, endAdornment, inputProps, disabled, } = props;
5
+ return (_jsxs("div", { className: classNames('seam-text-field', className, {
6
+ 'seam-disabled': disabled,
7
+ }), children: [startAdornment != null && (_jsx("div", { className: 'seam-adornment seam-start', children: startAdornment })), _jsx("input", { className: 'seam-text-field-input', value: value, onChange: onChange == null ? undefined : handleString(onChange), type: 'text', disabled: disabled, ...inputProps }), endAdornment != null && (_jsx("div", { className: 'seam-adornment seam-end', children: endAdornment }))] }));
6
8
  }
7
- export const handleString = (setter) => (e) => {
8
- setter(e.currentTarget.value);
9
+ export const handleString = (setter) => (event) => {
10
+ setter(event.currentTarget.value);
9
11
  };
10
12
  //# sourceMappingURL=TextField.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextField.js","sourceRoot":"","sources":["../../../src/lib/ui/TextField/TextField.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AAQnC,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAA;IAC3D,OAAO,CACL,gBACE,SAAS,EAAE,UAAU,CAAC,iBAAiB,EAAE,SAAS,CAAC,EACnD,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,EAChC,IAAI,EAAC,MAAM,KACP,UAAU,GACd,CACH,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GACvB,CAAC,MAA2B,EAAE,EAAE,CAChC,CAAC,CAAsD,EAAQ,EAAE;IAC/D,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;AAC/B,CAAC,CAAA"}
1
+ {"version":3,"file":"TextField.js","sourceRoot":"","sources":["../../../src/lib/ui/TextField/TextField.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AAiBnC,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,MAAM,EACJ,KAAK,EACL,QAAQ,EACR,SAAS,EACT,cAAc,EACd,YAAY,EACZ,UAAU,EACV,QAAQ,GACT,GAAG,KAAK,CAAA;IAET,OAAO,CACL,eACE,SAAS,EAAE,UAAU,CAAC,iBAAiB,EAAE,SAAS,EAAE;YAClD,eAAe,EAAE,QAAQ;SAC1B,CAAC,aAED,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,IAAI,EAAC,MAAM,EACX,QAAQ,EAAE,QAAQ,KACd,UAAU,GACd,EACD,YAAY,IAAI,IAAI,IAAI,CACvB,cAAK,SAAS,EAAC,yBAAyB,YAAE,YAAY,GAAO,CAC9D,IACG,CACP,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GACvB,CAAC,MAA2B,EAAE,EAAE,CAChC,CAAC,KAA0D,EAAQ,EAAE;IACnE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;AACnC,CAAC,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import type { LockDevice } from 'seamapi';
2
- export interface BatteryStatusProps {
2
+ interface BatteryStatusProps {
3
3
  device: LockDevice;
4
4
  }
5
5
  export declare function BatteryStatus(props: BatteryStatusProps): JSX.Element;
6
+ export {};
@@ -1,5 +1,6 @@
1
1
  import type { LockDevice } from 'seamapi';
2
- export interface LockStatusProps {
2
+ interface LockStatusProps {
3
3
  device: LockDevice;
4
4
  }
5
5
  export declare function LockStatus(props: LockStatusProps): JSX.Element;
6
+ export {};
@@ -1,5 +1,6 @@
1
1
  import type { LockDevice } from 'seamapi';
2
- export interface OnlineStatusProps {
2
+ interface OnlineStatusProps {
3
3
  device: LockDevice;
4
4
  }
5
5
  export declare function OnlineStatus(props: OnlineStatusProps): JSX.Element;
6
+ export {};
@@ -1,5 +1,4 @@
1
1
  /**
2
2
  * Simple util to quickly handle on/off states.
3
3
  */
4
- declare const useToggle: (initialState?: boolean) => [boolean, () => void];
5
- export default useToggle;
4
+ export declare const useToggle: (initialState?: boolean) => [boolean, () => void];
package/lib/use-toggle.js CHANGED
@@ -2,7 +2,7 @@ import { useCallback, useState } from 'react';
2
2
  /**
3
3
  * Simple util to quickly handle on/off states.
4
4
  */
5
- const useToggle = (initialState = false) => {
5
+ export const useToggle = (initialState = false) => {
6
6
  const [isTrue, setIsTrue] = useState(initialState);
7
7
  // use callback otherwise it would yield unexpected results in promises
8
8
  const toggle = useCallback(() => {
@@ -10,5 +10,4 @@ const useToggle = (initialState = false) => {
10
10
  }, [setIsTrue]);
11
11
  return [isTrue, toggle];
12
12
  };
13
- export default useToggle;
14
13
  //# sourceMappingURL=use-toggle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-toggle.js","sourceRoot":"","sources":["../src/lib/use-toggle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE7C;;GAEG;AACH,MAAM,SAAS,GAAG,CAAC,eAAwB,KAAK,EAAyB,EAAE;IACzE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAA;IAElD,uEAAuE;IAEvE,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9B,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAEf,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AACzB,CAAC,CAAA;AAED,eAAe,SAAS,CAAA"}
1
+ {"version":3,"file":"use-toggle.js","sourceRoot":"","sources":["../src/lib/use-toggle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,eAAwB,KAAK,EACN,EAAE;IACzB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAA;IAElD,uEAAuE;IAEvE,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9B,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAEf,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AACzB,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seamapi/react",
3
- "version": "0.26.0",
3
+ "version": "0.27.0",
4
4
  "description": "Seam React component library.",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -0,0 +1,3 @@
1
+ export async function copyToClipboard(value: string) {
2
+ await globalThis?.navigator?.clipboard?.writeText(value)
3
+ }
@@ -0,0 +1,30 @@
1
+ import type { SVGProps } from 'react'
2
+ export const CloseIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (
3
+ <svg
4
+ xmlns='http://www.w3.org/2000/svg'
5
+ width={24}
6
+ height={24}
7
+ fill='none'
8
+ {...props}
9
+ >
10
+ <mask
11
+ id='close_svg__a'
12
+ width={24}
13
+ height={24}
14
+ x={0}
15
+ y={0}
16
+ maskUnits='userSpaceOnUse'
17
+ style={{
18
+ maskType: 'alpha',
19
+ }}
20
+ >
21
+ <path fill='#D9D9D9' d='M0 0h24v24H0z' />
22
+ </mask>
23
+ <g mask='url(#close_svg__a)'>
24
+ <path
25
+ fill='#B9BEC5'
26
+ d='M6.4 19 5 17.6l5.6-5.6L5 6.4 6.4 5l5.6 5.6L17.6 5 19 6.4 13.4 12l5.6 5.6-1.4 1.4-5.6-5.6L6.4 19Z'
27
+ />
28
+ </g>
29
+ </svg>
30
+ )