@seamapi/react 0.16.0 → 0.17.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.
- package/README.md +5 -2
- package/index.css +403 -71
- package/index.css.map +1 -1
- package/index.min.css +1 -1
- package/index.min.css.map +1 -1
- package/lib/NavigationProvider.d.ts +27 -0
- package/lib/NavigationProvider.js +36 -0
- package/lib/NavigationProvider.js.map +1 -0
- package/lib/NavigationView.d.ts +5 -0
- package/lib/NavigationView.js +25 -0
- package/lib/NavigationView.js.map +1 -0
- package/lib/icons/LockLocked.d.ts +2 -0
- package/lib/icons/LockLocked.js +5 -0
- package/lib/icons/LockLocked.js.map +1 -0
- package/lib/icons/LockUnlocked.d.ts +2 -0
- package/lib/icons/LockUnlocked.js +5 -0
- package/lib/icons/LockUnlocked.js.map +1 -0
- package/lib/seam/access-codes/use-access-code.d.ts +8 -0
- package/lib/seam/access-codes/use-access-code.js +32 -0
- package/lib/seam/access-codes/use-access-code.js.map +1 -0
- package/lib/seam/access-codes/use-access-codes.d.ts +9 -0
- package/lib/seam/access-codes/use-access-codes.js +18 -0
- package/lib/seam/access-codes/use-access-codes.js.map +1 -0
- package/lib/seam/devices/types.d.ts +2 -0
- package/lib/seam/devices/types.js +2 -0
- package/lib/seam/devices/types.js.map +1 -0
- package/lib/seam/devices/use-device.d.ts +9 -0
- package/lib/seam/devices/use-device.js +56 -0
- package/lib/seam/devices/use-device.js.map +1 -0
- package/lib/seam/devices/use-devices.d.ts +4 -9
- package/lib/seam/devices/use-devices.js +2 -1
- package/lib/seam/devices/use-devices.js.map +1 -1
- package/lib/seam/index.d.ts +4 -1
- package/lib/seam/index.js +4 -1
- package/lib/seam/index.js.map +1 -1
- package/lib/seam/use-seam-client.js +12 -9
- package/lib/seam/use-seam-client.js.map +1 -1
- package/lib/seam/use-seam-query-result.js.map +1 -0
- package/lib/ui/AccessCodeDetails/AccessCodeDetails.d.ts +4 -0
- package/lib/ui/AccessCodeDetails/AccessCodeDetails.js +63 -0
- package/lib/ui/AccessCodeDetails/AccessCodeDetails.js.map +1 -0
- package/lib/ui/AccessCodeDetails/AccessCodeDevice.d.ts +3 -0
- package/lib/ui/AccessCodeDetails/AccessCodeDevice.js +25 -0
- package/lib/ui/AccessCodeDetails/AccessCodeDevice.js.map +1 -0
- package/lib/ui/AccessCodeTable/AccessCodeTable.d.ts +0 -1
- package/lib/ui/AccessCodeTable/AccessCodeTable.js +14 -4
- package/lib/ui/AccessCodeTable/AccessCodeTable.js.map +1 -1
- package/lib/ui/AccessCodeTable/AccessCodeTableContent.d.ts +5 -0
- package/lib/ui/AccessCodeTable/AccessCodeTableContent.js +19 -0
- package/lib/ui/AccessCodeTable/AccessCodeTableContent.js.map +1 -0
- package/lib/ui/AccessCodeTable/CodeDetails.js +1 -1
- package/lib/ui/AccessCodeTable/CodeDetails.js.map +1 -1
- package/lib/ui/Button.d.ts +8 -0
- package/lib/ui/Button.js +8 -0
- package/lib/ui/Button.js.map +1 -0
- package/lib/ui/DeviceDetails/DeviceDetails.d.ts +2 -3
- package/lib/ui/DeviceDetails/DeviceDetails.js +32 -13
- package/lib/ui/DeviceDetails/DeviceDetails.js.map +1 -1
- package/lib/ui/DeviceDetails/DeviceModel.d.ts +7 -0
- package/lib/ui/DeviceDetails/DeviceModel.js +18 -0
- package/lib/ui/DeviceDetails/DeviceModel.js.map +1 -0
- package/lib/ui/DeviceTable/DeviceTable.d.ts +7 -0
- package/lib/ui/DeviceTable/DeviceTable.js +43 -0
- package/lib/ui/DeviceTable/DeviceTable.js.map +1 -0
- package/lib/ui/IconButton.js +1 -1
- package/lib/ui/IconButton.js.map +1 -1
- package/lib/ui/Table/TableRow.d.ts +3 -1
- package/lib/ui/Table/TableRow.js +1 -1
- package/lib/ui/Table/TableRow.js.map +1 -1
- package/lib/ui/TextButton.d.ts +7 -0
- package/lib/ui/TextButton.js +5 -0
- package/lib/ui/TextButton.js.map +1 -0
- package/lib/ui/TextField/SearchTextField.d.ts +1 -1
- package/lib/ui/TextField/SearchTextField.js +1 -1
- package/lib/ui/TextField/SearchTextField.js.map +1 -1
- package/lib/ui/device/BatteryStatus.d.ts +5 -0
- package/lib/ui/{DeviceDetails → device}/BatteryStatus.js +5 -6
- package/lib/ui/device/BatteryStatus.js.map +1 -0
- package/lib/ui/{DeviceDetails → device}/DeviceImage.d.ts +2 -1
- package/lib/ui/{DeviceDetails → device}/DeviceImage.js +2 -2
- package/lib/ui/device/DeviceImage.js.map +1 -0
- package/lib/ui/device/LockStatus.d.ts +5 -0
- package/lib/ui/device/LockStatus.js +19 -0
- package/lib/ui/device/LockStatus.js.map +1 -0
- package/lib/ui/device/OnlineStatus.d.ts +5 -0
- package/lib/ui/{DeviceDetails → device}/OnlineStatus.js +4 -5
- package/lib/ui/device/OnlineStatus.js.map +1 -0
- package/lib/ui/index.d.ts +3 -1
- package/lib/ui/index.js +3 -1
- package/lib/ui/index.js.map +1 -1
- package/lib/ui/layout/ContentHeader.d.ts +1 -2
- package/lib/ui/layout/ContentHeader.js +7 -1
- package/lib/ui/layout/ContentHeader.js.map +1 -1
- package/package.json +8 -7
- package/src/icons/lock-locked.svg +8 -0
- package/src/icons/lock-unlocked.svg +9 -0
- package/src/lib/NavigationProvider.tsx +86 -0
- package/src/lib/NavigationView.tsx +32 -0
- package/src/lib/icons/LockLocked.tsx +32 -0
- package/src/lib/icons/LockUnlocked.tsx +34 -0
- package/src/lib/seam/access-codes/use-access-code.ts +45 -0
- package/src/lib/seam/access-codes/use-access-codes.ts +39 -0
- package/src/lib/seam/devices/types.ts +5 -0
- package/src/lib/seam/devices/use-device.ts +79 -0
- package/src/lib/seam/devices/use-devices.ts +13 -8
- package/src/lib/seam/index.ts +4 -1
- package/src/lib/seam/use-seam-client.ts +12 -9
- package/src/lib/ui/AccessCodeDetails/AccessCodeDetails.tsx +144 -0
- package/src/lib/ui/AccessCodeDetails/AccessCodeDevice.tsx +43 -0
- package/src/lib/ui/AccessCodeTable/AccessCodeTable.tsx +20 -16
- package/src/lib/ui/AccessCodeTable/AccessCodeTableContent.tsx +57 -0
- package/src/lib/ui/AccessCodeTable/CodeDetails.tsx +1 -1
- package/src/lib/ui/Button.tsx +26 -0
- package/src/lib/ui/DeviceDetails/DeviceDetails.tsx +56 -29
- package/src/lib/ui/DeviceDetails/DeviceModel.tsx +34 -0
- package/src/lib/ui/DeviceTable/DeviceTable.tsx +94 -0
- package/src/lib/ui/IconButton.tsx +1 -1
- package/src/lib/ui/Table/TableRow.tsx +8 -2
- package/src/lib/ui/TextButton.tsx +15 -0
- package/src/lib/ui/TextField/SearchTextField.tsx +1 -1
- package/src/lib/ui/{DeviceDetails → device}/BatteryStatus.tsx +12 -14
- package/src/lib/ui/device/DeviceImage.tsx +15 -0
- package/src/lib/ui/device/LockStatus.tsx +46 -0
- package/src/lib/ui/{DeviceDetails → device}/OnlineStatus.tsx +15 -11
- package/src/lib/ui/index.ts +3 -1
- package/src/lib/ui/layout/ContentHeader.tsx +11 -6
- package/src/styles/_access-code-details.scss +121 -0
- package/src/styles/_access-code-table.scss +34 -38
- package/src/styles/_buttons.scss +125 -8
- package/src/styles/_colors.scss +30 -0
- package/src/styles/_device-details.scss +28 -9
- package/src/styles/_device-table.scss +63 -0
- package/src/styles/_icons.scss +9 -0
- package/src/styles/_inputs.scss +3 -1
- package/src/styles/_layout.scss +5 -2
- package/src/styles/_main.scss +10 -16
- package/src/styles/_reset.scss +114 -0
- package/src/styles/_tables.scss +6 -0
- package/src/styles/_typography.scss +18 -2
- package/lib/hooks/use-access-codes.d.ts +0 -5
- package/lib/hooks/use-access-codes.js +0 -16
- package/lib/hooks/use-access-codes.js.map +0 -1
- package/lib/hooks/use-device.d.ts +0 -5
- package/lib/hooks/use-device.js +0 -17
- package/lib/hooks/use-device.js.map +0 -1
- package/lib/hooks/use-devices.d.ts +0 -1
- package/lib/hooks/use-devices.js +0 -2
- package/lib/hooks/use-devices.js.map +0 -1
- package/lib/hooks/use-seam-client.d.ts +0 -1
- package/lib/hooks/use-seam-client.js +0 -2
- package/lib/hooks/use-seam-client.js.map +0 -1
- package/lib/seam/devices/index.d.ts +0 -1
- package/lib/seam/devices/index.js +0 -2
- package/lib/seam/devices/index.js.map +0 -1
- package/lib/types/use-seam-query-result.js.map +0 -1
- package/lib/ui/AccessCodeTable/index.d.ts +0 -2
- package/lib/ui/AccessCodeTable/index.js +0 -3
- package/lib/ui/AccessCodeTable/index.js.map +0 -1
- package/lib/ui/DeviceDetails/BatteryStatus.d.ts +0 -4
- package/lib/ui/DeviceDetails/BatteryStatus.js.map +0 -1
- package/lib/ui/DeviceDetails/DeviceImage.js.map +0 -1
- package/lib/ui/DeviceDetails/ModelStatus.d.ts +0 -4
- package/lib/ui/DeviceDetails/ModelStatus.js +0 -13
- package/lib/ui/DeviceDetails/ModelStatus.js.map +0 -1
- package/lib/ui/DeviceDetails/OnlineStatus.d.ts +0 -4
- package/lib/ui/DeviceDetails/OnlineStatus.js.map +0 -1
- package/lib/ui/DeviceDetails/index.d.ts +0 -5
- package/lib/ui/DeviceDetails/index.js +0 -6
- package/lib/ui/DeviceDetails/index.js.map +0 -1
- package/lib/ui/DeviceManager/DeviceManager.d.ts +0 -6
- package/lib/ui/DeviceManager/DeviceManager.js +0 -24
- package/lib/ui/DeviceManager/DeviceManager.js.map +0 -1
- package/lib/ui/DeviceManager/index.d.ts +0 -1
- package/lib/ui/DeviceManager/index.js +0 -2
- package/lib/ui/DeviceManager/index.js.map +0 -1
- package/lib/ui/Table/index.d.ts +0 -5
- package/lib/ui/Table/index.js +0 -6
- package/lib/ui/Table/index.js.map +0 -1
- package/lib/ui/TextField/index.d.ts +0 -2
- package/lib/ui/TextField/index.js +0 -3
- package/lib/ui/TextField/index.js.map +0 -1
- package/src/lib/hooks/use-access-codes.ts +0 -21
- package/src/lib/hooks/use-device.ts +0 -26
- package/src/lib/hooks/use-devices.ts +0 -1
- package/src/lib/hooks/use-seam-client.ts +0 -1
- package/src/lib/seam/devices/index.ts +0 -1
- package/src/lib/ui/AccessCodeTable/index.ts +0 -2
- package/src/lib/ui/DeviceDetails/DeviceImage.tsx +0 -12
- package/src/lib/ui/DeviceDetails/ModelStatus.tsx +0 -25
- package/src/lib/ui/DeviceDetails/index.ts +0 -5
- package/src/lib/ui/DeviceManager/DeviceManager.tsx +0 -52
- package/src/lib/ui/DeviceManager/index.ts +0 -1
- package/src/lib/ui/Table/index.ts +0 -5
- package/src/lib/ui/TextField/index.ts +0 -2
- /package/lib/{types → seam}/use-seam-query-result.d.ts +0 -0
- /package/lib/{types → seam}/use-seam-query-result.js +0 -0
- /package/src/lib/{types → seam}/use-seam-query-result.ts +0 -0
package/index.min.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["src/styles/_main.scss","src/styles/_typography.scss","src/styles/_tables.scss","src/styles/_inputs.scss","src/styles/_buttons.scss","src/styles/_layout.scss","src/styles/_access-code-table.scss","src/styles/
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["src/styles/_main.scss","src/styles/_typography.scss","src/styles/_reset.scss","src/styles/_colors.scss","src/styles/_tables.scss","src/styles/_inputs.scss","src/styles/_buttons.scss","src/styles/_layout.scss","src/styles/_icons.scss","src/styles/_device-details.scss","src/styles/_device-table.scss","src/styles/_access-code-table.scss","src/styles/_access-code-details.scss"],"names":[],"mappings":"AAaA,iBCVE,2JCGA,wEAGE,sBAGF,ylCAmDE,SACA,UACA,SACA,eACA,oBACA,wBACA,kCACA,mCACA,sBAGF,oHAKE,cAGF,sBACE,cAGF,wCAEE,gBAGF,+CAEE,YAGF,4HAIE,WACA,aAGF,uBACE,yBACA,iBAGF,uBACE,gBACA,gBDtGF,wHAME,gBAKF,+BACE,METU,QFcZ,mCACE,MEPS,QFYX,sBACE,MEvBW,QCPb,oCACE,aACA,8BACA,mBACA,YACA,eAGF,mCACE,eACA,iBAEA,iDACE,eACA,iBAMJ,iCACE,aACA,YACA,YACA,6BAEA,uCACE,mBAGF,6CACE,gBACA,eACA,iBAMJ,kCACE,aACA,mBACA,YC1CF,kCACE,cACA,YACA,yBACA,kBC2GF,2BL/GA,2JKoHE,gBACA,eAjFF,0CACE,eACA,iBACA,kBACA,iBAGF,2CACE,eACA,iBACA,kBACA,iBAGF,0CACE,eACA,iBACA,kBACA,iBAKF,0CACE,WH7DM,QG8DN,WACA,yBAEA,gDACE,WH5DS,QG6DT,aH7DS,QGgEX,+GAEE,WHjEQ,QGkER,aHlEQ,QGsEZ,4CACE,MH9EM,QG+EN,yBACA,yBAEA,kDACE,WH9EM,QGiFR,mHAEE,yBACA,MHxFO,QG4FX,4CACE,MHrFU,QGsFV,yBAEA,kDACE,WHjFC,QGkFD,aHxFU,QG2FZ,mHAEE,MH7FU,QG8FV,aH7FQ,QG8FR,gBAcF,iFAEE,mBAxHJ,gCACE,kBACA,oCACA,eACA,gBACA,YACA,cAEA,sCACE,+BAMJ,gCACE,MHlBM,QGmBN,UACA,eACA,yBACA,SAEA,sCACE,0BAGF,2FAEE,mBACA,qBC9BJ,sCACE,YACA,aACA,mBACA,kBACA,uBACA,cAEA,sDACE,kBACA,QACA,+BACA,OACA,eAGF,kDACE,eACA,iBACA,MJXQ,QKPV,mCACE,KLMQ,QMPV,iDACE,aACA,sBACA,SACA,mBAEA,2DACE,yBACA,kBAEA,yEACE,4BAEA,2FACE,2BACA,aACA,mBACA,8BACA,eAEA,iGACE,WNIE,yGMCJ,6BAGF,0FACE,aACA,8BAEA,sGACE,aACA,mBAIJ,qFACE,eACA,iBACA,MNnCE,QMsCJ,qFACE,cACA,gBACA,eACA,iBAKN,+DACE,kBACA,mBACA,WN1CD,QM4CC,6EACE,aACA,mBACA,SAEA,yFACE,YACA,aACA,aACA,mBAEA,6FACE,eAKF,oGACE,MNtEA,QMuEA,gBACA,eACA,iBACA,kBAGF,0GACE,mBACA,gBACA,eACA,iBAGF,yGACE,aACA,sCACA,mBACA,eACA,iBACA,YACA,gBAEA,qHACE,MN7FF,QMgGA,2HACE,MNlGF,QMqGA,6GACE,UACA,iBAGF,2GACE,aACA,mBAOV,iEACE,OACA,gBACA,aACA,mBACA,uBAEA,qEACE,WACA,YACA,aACA,mBACA,uBAIJ,iEACE,OAGF,mEACE,kBACA,aACA,mBACA,uBClJJ,oDACE,eAEA,qEACE,WACA,YACA,YAEA,yEACE,WAIJ,oEACE,OACA,sBACA,uBACA,uBACA,QAEA,iFACE,aACA,8BACA,mBACA,WAEA,oGACE,gBACA,eACA,iBACA,MPvBE,QOwBF,eACA,mBACA,gBACA,uBAGF,uGACE,aACA,mBACA,MPjCE,QOkCF,eACA,iBAEA,2GACE,aACA,mBACA,kBAEA,+GACE,UClDZ,yDACE,eAEA,yEACE,OACA,aACA,mBACA,uBAEA,6EACE,WACA,YACA,aACA,mBACA,uBAIJ,yEACE,OACA,sBACA,uBACA,uBACA,QAEA,4FACE,eACA,iBACA,MRrBI,QQuBJ,8GACE,aACA,MRtBE,QQ2BR,2EACE,kBACA,aACA,mBACA,uBCzCJ,yDACE,WTcC,QSbD,mBACA,mBAEA,mEACE,kBAEA,+EACE,gBACA,eACA,iBACA,MTLI,QSMJ,kBAGF,0FACE,gBACA,eACA,iBACA,kBAGF,8EACE,gBACA,yBACA,kBACA,kBACA,gBACA,eACA,iBACA,kBAGF,kFACE,MT5BI,QS6BJ,eACA,iBAEA,8FACE,gBACA,MTnCG,QSwCT,kFACE,6BACA,yBACA,aACA,mBAEA,qGACE,WACA,YACA,kBAEA,yGACE,WACA,gBAIJ,6FACE,OACA,gBACA,eACA,iBACA,iBAKN,yDACE,eACA,iBACA,wCACA,eAEA,mEACE,aACA,aACA,qCAEA,iFACE,YAGF,iFACE,aACA,OAEA,6FACE,aACA,OACA,eACA,iBAEA,yGACE,MT3FA,QS+FA,qGACE,kBAGF,6GACE","file":"index.min.css"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
interface DeviceTableView {
|
|
2
|
+
name: 'device_table';
|
|
3
|
+
}
|
|
4
|
+
interface DeviceDetailView {
|
|
5
|
+
name: 'device_detail';
|
|
6
|
+
deviceId: string;
|
|
7
|
+
}
|
|
8
|
+
interface AccessCodeTableView {
|
|
9
|
+
name: 'access_code_table';
|
|
10
|
+
deviceId: string;
|
|
11
|
+
}
|
|
12
|
+
interface AccessCodeDetailView {
|
|
13
|
+
name: 'access_code_detail';
|
|
14
|
+
accessCodeId: string;
|
|
15
|
+
}
|
|
16
|
+
export type View = DeviceTableView | DeviceDetailView | AccessCodeTableView | AccessCodeDetailView;
|
|
17
|
+
export interface NavigationStackProps {
|
|
18
|
+
children: JSX.Element;
|
|
19
|
+
}
|
|
20
|
+
interface NavigationContextProps {
|
|
21
|
+
views: View[];
|
|
22
|
+
show: (view: View) => void;
|
|
23
|
+
goBack?: () => void;
|
|
24
|
+
}
|
|
25
|
+
export default function NavigationProvider({ children }: NavigationStackProps): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
export declare function useNavigation(): NavigationContextProps;
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React, { useState } from 'react';
|
|
3
|
+
const NavigationContext = React.createContext(undefined);
|
|
4
|
+
export default function NavigationProvider({ children }) {
|
|
5
|
+
const [views, setViews] = useState([]);
|
|
6
|
+
const pushView = (view) => {
|
|
7
|
+
setViews((current) => [view, ...current]);
|
|
8
|
+
};
|
|
9
|
+
const popView = () => {
|
|
10
|
+
setViews((current) => {
|
|
11
|
+
if (current.length === 0) {
|
|
12
|
+
return current;
|
|
13
|
+
}
|
|
14
|
+
const [_showing, ...others] = current;
|
|
15
|
+
return others;
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
const hasViews = views.length > 0;
|
|
19
|
+
return (_jsx(NavigationContext.Provider, { value: {
|
|
20
|
+
views,
|
|
21
|
+
show: pushView,
|
|
22
|
+
goBack: hasViews ? popView : undefined,
|
|
23
|
+
}, children: children }));
|
|
24
|
+
}
|
|
25
|
+
export function useNavigation() {
|
|
26
|
+
const context = React.useContext(NavigationContext);
|
|
27
|
+
if (context === undefined) {
|
|
28
|
+
return {
|
|
29
|
+
show: () => { },
|
|
30
|
+
goBack: undefined,
|
|
31
|
+
views: [],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
return context;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=NavigationProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavigationProvider.js","sourceRoot":"","sources":["../src/lib/NavigationProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAqCvC,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAE3C,SAAS,CAAC,CAAA;AAEZ,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EAAE,QAAQ,EAAwB;IAC3E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC,CAAA;IAE9C,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAE,EAAE;QAC9B,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC,CAAA;IAC3C,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE;YACnB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBACxB,OAAO,OAAO,CAAA;aACf;YAED,MAAM,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,GAAG,OAAO,CAAA;YACrC,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;IAEjC,OAAO,CACL,KAAC,iBAAiB,CAAC,QAAQ,IACzB,KAAK,EAAE;YACL,KAAK;YACL,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;SACvC,YAEA,QAAQ,GACkB,CAC9B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAA;IACnD,IAAI,OAAO,KAAK,SAAS,EAAE;QACzB,OAAO;YACL,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;YACd,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,EAAE;SACV,CAAA;KACF;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { AccessCodeTable, DeviceDetails, DeviceTable } from '../lib/index.js';
|
|
3
|
+
import { useNavigation } from '../lib/NavigationProvider.js';
|
|
4
|
+
import AccessCodeDetails from '../lib/ui/AccessCodeDetails/AccessCodeDetails.js';
|
|
5
|
+
export function NavigationView({ children: rootView }) {
|
|
6
|
+
const { views } = useNavigation();
|
|
7
|
+
const firstView = views[0];
|
|
8
|
+
if (firstView != null) {
|
|
9
|
+
return _jsx(Subview, { view: firstView });
|
|
10
|
+
}
|
|
11
|
+
return rootView;
|
|
12
|
+
}
|
|
13
|
+
function Subview({ view }) {
|
|
14
|
+
switch (view.name) {
|
|
15
|
+
case 'device_detail':
|
|
16
|
+
return _jsx(DeviceDetails, { deviceId: view.deviceId });
|
|
17
|
+
case 'access_code_detail':
|
|
18
|
+
return _jsx(AccessCodeDetails, { accessCodeId: view.accessCodeId });
|
|
19
|
+
case 'device_table':
|
|
20
|
+
return _jsx(DeviceTable, {});
|
|
21
|
+
case 'access_code_table':
|
|
22
|
+
return _jsx(AccessCodeTable, { deviceId: view.deviceId });
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=NavigationView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavigationView.js","sourceRoot":"","sources":["../src/lib/NavigationView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1E,OAAO,EAAE,aAAa,EAAa,MAAM,2BAA2B,CAAA;AACpE,OAAO,iBAAiB,MAAM,+CAA+C,CAAA;AAM7E,MAAM,UAAU,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAuB;IACxE,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,EAAE,CAAA;IAEjC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IAC1B,IAAI,SAAS,IAAI,IAAI,EAAE;QACrB,OAAO,KAAC,OAAO,IAAC,IAAI,EAAE,SAAS,GAAI,CAAA;KACpC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAS,OAAO,CAAC,EAAE,IAAI,EAAkB;IACvC,QAAQ,IAAI,CAAC,IAAI,EAAE;QACjB,KAAK,eAAe;YAClB,OAAO,KAAC,aAAa,IAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAI,CAAA;QACnD,KAAK,oBAAoB;YACvB,OAAO,KAAC,iBAAiB,IAAC,YAAY,EAAE,IAAI,CAAC,YAAY,GAAI,CAAA;QAC/D,KAAK,cAAc;YACjB,OAAO,KAAC,WAAW,KAAG,CAAA;QACxB,KAAK,mBAAmB;YACtB,OAAO,KAAC,eAAe,IAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAI,CAAA;KACtD;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
export const LockLockedIcon = (props) => (_jsxs("svg", { xmlns: 'http://www.w3.org/2000/svg', width: 25, height: 25, fill: 'none', ...props, children: [_jsx("mask", { id: 'lock-locked_svg__a', width: 25, height: 25, x: 0, y: 0, maskUnits: 'userSpaceOnUse', style: {
|
|
3
|
+
maskType: 'alpha',
|
|
4
|
+
}, children: _jsx("path", { fill: '#D9D9D9', d: 'M.461.839h24v24h-24z' }) }), _jsx("g", { mask: 'url(#lock-locked_svg__a)', children: _jsx("path", { fill: '#232B3A', fillRule: 'evenodd', d: 'M5.924 3.893a4.463 4.463 0 0 0-4.463 4.464v3.345a1 1 0 1 0 2 0V8.357a2.463 2.463 0 0 1 4.926 0v4.482H7.72a1.26 1.26 0 0 0-1.26 1.259v5.481c0 .696.565 1.26 1.26 1.26h9.481a1.26 1.26 0 0 0 1.26-1.26v-5.481a1.26 1.26 0 0 0-1.26-1.26h-6.814V8.357a4.463 4.463 0 0 0-4.463-4.464Z', clipRule: 'evenodd' }) })] }));
|
|
5
|
+
//# sourceMappingURL=LockLocked.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LockLocked.js","sourceRoot":"","sources":["../../src/lib/icons/LockLocked.tsx"],"names":[],"mappings":";AACA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAA8B,EAAe,EAAE,CAAC,CAC7E,eACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE,EACV,IAAI,EAAC,MAAM,KACP,KAAK,aAET,eACE,EAAE,EAAC,oBAAoB,EACvB,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE,EACV,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,EACJ,SAAS,EAAC,gBAAgB,EAC1B,KAAK,EAAE;gBACL,QAAQ,EAAE,OAAO;aAClB,YAED,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,sBAAsB,GAAG,GAC3C,EACP,YAAG,IAAI,EAAC,0BAA0B,YAChC,eACE,IAAI,EAAC,SAAS,EACd,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,mRAAmR,EACrR,QAAQ,EAAC,SAAS,GAClB,GACA,IACA,CACP,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
export const LockUnlockedIcon = (props) => (_jsxs("svg", { xmlns: 'http://www.w3.org/2000/svg', width: 25, height: 25, fill: 'none', ...props, children: [_jsx("mask", { id: 'lock-unlocked_svg__a', width: 25, height: 25, x: 0, y: 0, maskUnits: 'userSpaceOnUse', style: {
|
|
3
|
+
maskType: 'alpha',
|
|
4
|
+
}, children: _jsx("path", { fill: '#D9D9D9', d: 'M.461.839h24v24h-24z' }) }), _jsxs("g", { fill: '#232B3A', mask: 'url(#lock-unlocked_svg__a)', children: [_jsx("rect", { width: 12, height: 8.152, x: 6.461, y: 12.839, rx: 1.259 }), _jsx("path", { fillRule: 'evenodd', d: 'M7.94 10.359a4.52 4.52 0 0 1 9.04 0v5.692a1 1 0 1 1-2 0v-5.692a2.52 2.52 0 0 0-5.04 0v3.531a1 1 0 1 1-2 0V10.36Z', clipRule: 'evenodd' })] })] }));
|
|
5
|
+
//# sourceMappingURL=LockUnlocked.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LockUnlocked.js","sourceRoot":"","sources":["../../src/lib/icons/LockUnlocked.tsx"],"names":[],"mappings":";AACA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,KAA8B,EACjB,EAAE,CAAC,CAChB,eACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE,EACV,IAAI,EAAC,MAAM,KACP,KAAK,aAET,eACE,EAAE,EAAC,sBAAsB,EACzB,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE,EACV,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,EACJ,SAAS,EAAC,gBAAgB,EAC1B,KAAK,EAAE;gBACL,QAAQ,EAAE,OAAO;aAClB,YAED,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,sBAAsB,GAAG,GAC3C,EACP,aAAG,IAAI,EAAC,SAAS,EAAC,IAAI,EAAC,4BAA4B,aACjD,eAAM,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,GAAI,EAClE,eACE,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,kHAAkH,EACpH,QAAQ,EAAC,SAAS,GAClB,IACA,IACA,CACP,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AccessCode, AccessCodeGetRequest } from 'seamapi';
|
|
2
|
+
export type UseAccessCodeParams = AccessCodeGetRequest | string;
|
|
3
|
+
export type UseAccessCodeData = AccessCode;
|
|
4
|
+
export declare function useAccessCode(params: UseAccessCodeParams): import("@tanstack/react-query").UseQueryResult<AccessCode | null, unknown>;
|
|
5
|
+
export declare function useFakeAccessCode(_params: UseAccessCodeParams): {
|
|
6
|
+
isLoading: boolean;
|
|
7
|
+
data: AccessCode;
|
|
8
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { useQuery } from '@tanstack/react-query';
|
|
2
|
+
import { DateTime } from 'luxon';
|
|
3
|
+
import { v4 as uuid } from 'uuid';
|
|
4
|
+
import { useSeamClient } from '../../../lib/seam/use-seam-client.js';
|
|
5
|
+
export function useAccessCode(params) {
|
|
6
|
+
const { client } = useSeamClient();
|
|
7
|
+
const normalizedParams = typeof params === 'string' ? { access_code_id: params } : params;
|
|
8
|
+
return useQuery({
|
|
9
|
+
enabled: client != null,
|
|
10
|
+
queryKey: ['access_code', 'get', normalizedParams],
|
|
11
|
+
queryFn: async () => {
|
|
12
|
+
if (client == null)
|
|
13
|
+
return null;
|
|
14
|
+
return await client?.accessCodes.get(normalizedParams);
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export function useFakeAccessCode(_params) {
|
|
19
|
+
const accessCode = {
|
|
20
|
+
access_code_id: uuid(),
|
|
21
|
+
type: 'time_bound',
|
|
22
|
+
starts_at: DateTime.now().minus({ days: 2 }).toISO() ?? '',
|
|
23
|
+
ends_at: DateTime.now().plus({ days: 1 }).toISO() ?? '',
|
|
24
|
+
code: '1234',
|
|
25
|
+
created_at: DateTime.now().toISO() ?? '',
|
|
26
|
+
device_id: 'some_device_id',
|
|
27
|
+
status: 'set',
|
|
28
|
+
name: 'Guest - Kranz',
|
|
29
|
+
};
|
|
30
|
+
return { isLoading: false, data: accessCode };
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=use-access-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-access-code.js","sourceRoot":"","sources":["../../../src/lib/seam/access-codes/use-access-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAA;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAK3D,MAAM,UAAU,aAAa,CAAC,MAA2B;IACvD,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;IAElC,MAAM,gBAAgB,GACpB,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;IAElE,OAAO,QAAQ,CAAC;QACd,OAAO,EAAE,MAAM,IAAI,IAAI;QACvB,QAAQ,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,gBAAgB,CAAC;QAClD,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,MAAM,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAA;YAE/B,OAAO,MAAM,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;QACxD,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAA4B;IAI5D,MAAM,UAAU,GAAe;QAC7B,cAAc,EAAE,IAAI,EAAE;QACtB,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE;QAC1D,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE;QACvD,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE;QACxC,SAAS,EAAE,gBAAgB;QAC3B,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,eAAe;KACtB,CAAA;IAED,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;AAC/C,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AccessCode } from 'seamapi';
|
|
2
|
+
import type { UseSeamQueryResult } from '../../../lib/seam/use-seam-query-result.js';
|
|
3
|
+
export type UseAccessCodesParams = AccessCodesListRequest | string;
|
|
4
|
+
export type UseAccessCodesData = AccessCode[];
|
|
5
|
+
export declare function useAccessCodes(params: UseAccessCodesParams): UseSeamQueryResult<'accessCodes', UseAccessCodesData>;
|
|
6
|
+
interface AccessCodesListRequest {
|
|
7
|
+
device_id: string;
|
|
8
|
+
}
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { useQuery } from '@tanstack/react-query';
|
|
2
|
+
import { useSeamClient } from '../../../lib/seam/use-seam-client.js';
|
|
3
|
+
export function useAccessCodes(params) {
|
|
4
|
+
const normalizedParams = typeof params === 'string' ? { device_id: params } : params;
|
|
5
|
+
const { client } = useSeamClient();
|
|
6
|
+
const { data, ...rest } = useQuery({
|
|
7
|
+
enabled: client != null,
|
|
8
|
+
queryKey: ['access_codes', 'list', normalizedParams],
|
|
9
|
+
queryFn: async () => {
|
|
10
|
+
if (client == null)
|
|
11
|
+
return [];
|
|
12
|
+
const accessCodes = await client?.accessCodes.list(normalizedParams);
|
|
13
|
+
return accessCodes.sort((a, b) => new Date(a.created_at).getTime() - new Date(b.created_at).getTime());
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
return { ...rest, accessCodes: data };
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=use-access-codes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-access-codes.js","sourceRoot":"","sources":["../../../src/lib/seam/access-codes/use-access-codes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAGhD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAM3D,MAAM,UAAU,cAAc,CAC5B,MAA4B;IAE5B,MAAM,gBAAgB,GACpB,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;IAE7D,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAGhC;QACA,OAAO,EAAE,MAAM,IAAI,IAAI;QACvB,QAAQ,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,gBAAgB,CAAC;QACpD,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,MAAM,IAAI,IAAI;gBAAE,OAAO,EAAE,CAAA;YAC7B,MAAM,WAAW,GAAG,MAAM,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;YACpE,OAAO,WAAW,CAAC,IAAI,CACrB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CACtE,CAAA;QACH,CAAC;KACF,CAAC,CAAA;IAEF,OAAO,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;AACvC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/seam/devices/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,MAA2D,EACrC,EAAE,CAAC,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CommonDeviceProperties, Device, DeviceGetRequest, LockDevice } from 'seamapi';
|
|
2
|
+
import type { UseSeamQueryResult } from '../../../lib/seam/use-seam-query-result.js';
|
|
3
|
+
export type UseDeviceParams = DeviceGetRequest | string;
|
|
4
|
+
export type UseDeviceData = Device<CommonDeviceProperties> | null;
|
|
5
|
+
export declare function useDevice(params: DeviceGetRequest): UseSeamQueryResult<'device', UseDeviceData>;
|
|
6
|
+
export declare function useFakeDevice(_params: DeviceGetRequest): {
|
|
7
|
+
isLoading: boolean;
|
|
8
|
+
device: LockDevice;
|
|
9
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { useQuery } from '@tanstack/react-query';
|
|
2
|
+
import { useSeamClient } from '../../../lib/seam/use-seam-client.js';
|
|
3
|
+
export function useDevice(params) {
|
|
4
|
+
const normalizedParams = typeof params === 'string' ? { device_id: params } : params;
|
|
5
|
+
const { client } = useSeamClient();
|
|
6
|
+
const { data, ...rest } = useQuery({
|
|
7
|
+
enabled: client != null,
|
|
8
|
+
queryKey: ['devices', 'get', normalizedParams],
|
|
9
|
+
queryFn: async () => {
|
|
10
|
+
if (client == null)
|
|
11
|
+
return null;
|
|
12
|
+
return await client?.devices.get(normalizedParams);
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
return { ...rest, device: data };
|
|
16
|
+
}
|
|
17
|
+
export function useFakeDevice(_params) {
|
|
18
|
+
const device = {
|
|
19
|
+
device_id: 'f9a9ab36-9e14-4390-a88c-b4c78304c6aa',
|
|
20
|
+
device_type: 'august_lock',
|
|
21
|
+
capabilities_supported: ['access_code', 'lock'],
|
|
22
|
+
properties: {
|
|
23
|
+
locked: true,
|
|
24
|
+
online: true,
|
|
25
|
+
door_open: false,
|
|
26
|
+
manufacturer: 'august',
|
|
27
|
+
battery_level: 0.9999532347993827,
|
|
28
|
+
serial_number: '00000004-992d-45a0-bea1-9128fdcd8d12',
|
|
29
|
+
august_metadata: {
|
|
30
|
+
lock_id: 'lock-1',
|
|
31
|
+
house_id: 'house-1',
|
|
32
|
+
lock_name: 'FRONT DOOR',
|
|
33
|
+
has_keypad: true,
|
|
34
|
+
house_name: 'My House',
|
|
35
|
+
},
|
|
36
|
+
supported_code_lengths: [6],
|
|
37
|
+
name: 'FRONT DOOR',
|
|
38
|
+
battery: {
|
|
39
|
+
level: 0.9999532347993827,
|
|
40
|
+
status: 'full',
|
|
41
|
+
},
|
|
42
|
+
image_url: 'https://connect.getseam.com/assets/images/devices/august_wifi-smart-lock-3rd-gen_silver_front.png',
|
|
43
|
+
},
|
|
44
|
+
location: {
|
|
45
|
+
timezone: 'America/Los_Angeles',
|
|
46
|
+
location_name: 'My House',
|
|
47
|
+
},
|
|
48
|
+
connected_account_id: '6fc0f854-cb5a-461a-af93-e543ce1f730f',
|
|
49
|
+
workspace_id: 'a9598de8-e627-4d01-b119-61ab7b9e07bd',
|
|
50
|
+
created_at: '2023-05-08T22:37:24.206Z',
|
|
51
|
+
errors: [],
|
|
52
|
+
warnings: [],
|
|
53
|
+
};
|
|
54
|
+
return { isLoading: false, device };
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=use-device.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-device.js","sourceRoot":"","sources":["../../../src/lib/seam/devices/use-device.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAUhD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAM3D,MAAM,UAAU,SAAS,CACvB,MAAwB;IAExB,MAAM,gBAAgB,GACpB,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;IAE7D,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAGhC;QACA,OAAO,EAAE,MAAM,IAAI,IAAI;QACvB,QAAQ,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,gBAAgB,CAAC;QAC9C,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,MAAM,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAA;YAC/B,OAAO,MAAM,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;QACpD,CAAC;KACF,CAAC,CAAA;IAEF,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAyB;IACrD,MAAM,MAAM,GAAe;QACzB,SAAS,EAAE,sCAAsC;QACjD,WAAW,EAAE,aAAa;QAC1B,sBAAsB,EAAE,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/C,UAAU,EAAE;YACV,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,KAAK;YAChB,YAAY,EAAE,QAAQ;YACtB,aAAa,EAAE,kBAAkB;YACjC,aAAa,EAAE,sCAAsC;YACrD,eAAe,EAAE;gBACf,OAAO,EAAE,QAAQ;gBACjB,QAAQ,EAAE,SAAS;gBACnB,SAAS,EAAE,YAAY;gBACvB,UAAU,EAAE,IAAI;gBAChB,UAAU,EAAE,UAAU;aACvB;YACD,sBAAsB,EAAE,CAAC,CAAC,CAAC;YAC3B,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE;gBACP,KAAK,EAAE,kBAAkB;gBACzB,MAAM,EAAE,MAAM;aACf;YACD,SAAS,EACP,mGAAmG;SACtG;QACD,QAAQ,EAAE;YACR,QAAQ,EAAE,qBAAqB;YAC/B,aAAa,EAAE,UAAU;SAC1B;QACD,oBAAoB,EAAE,sCAAsC;QAC5D,YAAY,EAAE,sCAAsC;QACpD,UAAU,EAAE,0BAA0B;QACtC,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,EAAE;KACb,CAAA;IAED,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;AACrC,CAAC"}
|
|
@@ -1,10 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type {
|
|
1
|
+
import type { CommonDeviceProperties, Device, DevicesListRequest } from 'seamapi';
|
|
2
|
+
import type { UseSeamQueryResult } from '../../../lib/seam/use-seam-query-result.js';
|
|
3
3
|
export type UseDevicesParams = DevicesListRequest;
|
|
4
|
-
export type UseDevicesData =
|
|
5
|
-
|
|
6
|
-
type UseDevicesResult = Omit<Result, 'data'> & {
|
|
7
|
-
devices: Result['data'];
|
|
8
|
-
};
|
|
9
|
-
export declare function useDevices(params: DevicesListRequest): UseDevicesResult;
|
|
10
|
-
export {};
|
|
4
|
+
export type UseDevicesData = Array<Device<CommonDeviceProperties>>;
|
|
5
|
+
export declare function useDevices(params?: UseDevicesParams): UseSeamQueryResult<'devices', UseDevicesData>;
|
|
@@ -8,7 +8,8 @@ export function useDevices(params) {
|
|
|
8
8
|
queryFn: async () => {
|
|
9
9
|
if (client == null)
|
|
10
10
|
return [];
|
|
11
|
-
|
|
11
|
+
const devices = await client?.devices.list(params);
|
|
12
|
+
return devices.sort((a, b) => new Date(a.created_at).getTime() - new Date(b.created_at).getTime());
|
|
12
13
|
},
|
|
13
14
|
});
|
|
14
15
|
return { ...rest, devices: data };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-devices.js","sourceRoot":"","sources":["../../../src/lib/seam/devices/use-devices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"use-devices.js","sourceRoot":"","sources":["../../../src/lib/seam/devices/use-devices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAShD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAM3D,MAAM,UAAU,UAAU,CACxB,MAAyB;IAEzB,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAChC;QACE,OAAO,EAAE,MAAM,IAAI,IAAI;QACvB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;QACrC,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,MAAM,IAAI,IAAI;gBAAE,OAAO,EAAE,CAAA;YAC7B,MAAM,OAAO,GAAG,MAAM,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAClD,OAAO,OAAO,CAAC,IAAI,CACjB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CACtE,CAAA;QACH,CAAC;KACF,CACF,CAAA;IAED,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AACnC,CAAC"}
|
package/lib/seam/index.d.ts
CHANGED
package/lib/seam/index.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './access-codes/use-access-code.js';
|
|
2
|
+
export * from './access-codes/use-access-codes.js';
|
|
3
|
+
export * from './devices/use-device.js';
|
|
4
|
+
export * from './devices/use-devices.js';
|
|
2
5
|
export * from './use-seam-client.js';
|
|
3
6
|
//# sourceMappingURL=index.js.map
|
package/lib/seam/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/seam/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
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,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { useQuery } from '@tanstack/react-query';
|
|
2
|
+
import { useEffect } from 'react';
|
|
2
3
|
import { Seam } from 'seamapi';
|
|
3
4
|
import { v4 as uuidv4 } from 'uuid';
|
|
4
5
|
import { useSeamContext } from '../../lib/SeamProvider.js';
|
|
@@ -44,19 +45,21 @@ export function useSeamClient() {
|
|
|
44
45
|
});
|
|
45
46
|
return { client: data ?? null, isLoading, isError, error };
|
|
46
47
|
}
|
|
47
|
-
/**
|
|
48
|
-
* You'll almost always want to supply a user identifier key, but if you don't
|
|
49
|
-
* we'll automatically pick a fingerprint for this user. The user interface
|
|
50
|
-
* will show warnings when you use a fingerprint because this client session
|
|
51
|
-
* is bound to this machine, and is effectively ephemeral.
|
|
52
|
-
*/
|
|
53
48
|
function useUserIdentifierKeyOrFingerprint(userIdentifierKey) {
|
|
49
|
+
useEffect(() => {
|
|
50
|
+
if (userIdentifierKey != null)
|
|
51
|
+
return;
|
|
52
|
+
// eslint-disable-next-line no-console
|
|
53
|
+
console.warn(`Using an automatically generated fingerprint for the SeamProvider userIdentifierKey!
|
|
54
|
+
The user interface will show warnings when using a fingerprint.
|
|
55
|
+
This is not recommended because the client session is now bound to this machine and is effectively ephemeral.`);
|
|
56
|
+
}, [userIdentifierKey]);
|
|
54
57
|
if (userIdentifierKey != null) {
|
|
55
58
|
return userIdentifierKey;
|
|
56
59
|
}
|
|
57
|
-
const
|
|
60
|
+
const fingerprint = globalThis?.localStorage?.getItem('seam_user_fingerprint') ??
|
|
58
61
|
`fingerprint_${uuidv4()}`;
|
|
59
|
-
globalThis?.localStorage?.setItem('seam_user_fingerprint',
|
|
60
|
-
return
|
|
62
|
+
globalThis?.localStorage?.setItem('seam_user_fingerprint', fingerprint);
|
|
63
|
+
return fingerprint;
|
|
61
64
|
}
|
|
62
65
|
//# sourceMappingURL=use-seam-client.js.map
|
|
@@ -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,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,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,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,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
|
|
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,qBAAqB,CAAA;AAEpD,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,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,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,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-seam-query-result.js","sourceRoot":"","sources":["../../src/lib/seam/use-seam-query-result.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { DateTime } from 'luxon';
|
|
3
|
+
import { useFakeAccessCode } from '../../../lib/index.js';
|
|
4
|
+
import AccessCodeDevice from '../../../lib/ui/AccessCodeDetails/AccessCodeDevice.js';
|
|
5
|
+
import { ContentHeader } from '../../../lib/ui/layout/ContentHeader.js';
|
|
6
|
+
export default function AccessCodeDetails({ accessCodeId, }) {
|
|
7
|
+
const { isLoading, data: accessCode } = useFakeAccessCode({
|
|
8
|
+
access_code_id: accessCodeId,
|
|
9
|
+
});
|
|
10
|
+
if (isLoading || !accessCode) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
const name = accessCode.name ?? t.fallbackName;
|
|
14
|
+
return (_jsxs("div", { className: 'seam-access-code-details', children: [_jsx(ContentHeader, { title: 'Access code' }), _jsxs("div", { className: 'seam-summary', children: [_jsxs("div", { className: 'seam-top', children: [_jsx("span", { className: 'seam-label', children: t.accessCode }), _jsx("h5", { className: 'seam-access-code-name', children: name }), _jsx("div", { className: 'seam-code', children: accessCode.code }), _jsx("div", { className: 'seam-duration', children: _jsx(Duration, { accessCode: accessCode }) })] }), _jsx(AccessCodeDevice, { deviceId: accessCode.device_id })] }), _jsxs("div", { className: 'seam-details', children: [_jsxs("div", { className: 'seam-row', children: [_jsxs("div", { className: 'seam-heading', children: [t.id, ":"] }), _jsx("div", { className: 'seam-content', children: accessCode.access_code_id })] }), _jsxs("div", { className: 'seam-row', children: [_jsxs("div", { className: 'seam-heading', children: [t.created, ":"] }), _jsx("div", { className: 'seam-content', children: formatDate(accessCode.created_at) })] }), _jsxs("div", { className: 'seam-row seam-schedule', children: [_jsxs("div", { className: 'seam-heading', children: [t.timing, ":"] }), _jsx("div", { className: 'seam-content', children: _jsx(ScheduleInfo, { accessCode: accessCode }) })] })] })] }));
|
|
15
|
+
}
|
|
16
|
+
function ScheduleInfo({ accessCode }) {
|
|
17
|
+
if (accessCode.type === 'ongoing') {
|
|
18
|
+
return _jsx("span", { children: t.ongoing });
|
|
19
|
+
}
|
|
20
|
+
return (_jsxs("div", { className: 'seam-times', children: [_jsxs("div", { children: [_jsx("div", { className: 'seam-label', children: t.start }), _jsx("div", { className: 'seam-date', children: formatDate(accessCode.starts_at) }), _jsx("div", { className: 'seam-time', children: formatTime(accessCode.starts_at) })] }), _jsxs("div", { children: [_jsx("div", { className: 'seam-label', children: t.end }), _jsx("div", { className: 'seam-date', children: formatDate(accessCode.ends_at) }), _jsx("div", { className: 'seam-time', children: formatTime(accessCode.ends_at) })] })] }));
|
|
21
|
+
}
|
|
22
|
+
function Duration(props) {
|
|
23
|
+
const { accessCode } = props;
|
|
24
|
+
if (accessCode.type === 'ongoing') {
|
|
25
|
+
return (_jsxs("span", { children: [_jsx("span", { className: 'seam-label', children: "Active" }), " (ongoing)"] }));
|
|
26
|
+
}
|
|
27
|
+
const hasStarted = new Date(accessCode.starts_at).valueOf() < Date.now();
|
|
28
|
+
if (hasStarted) {
|
|
29
|
+
return (_jsxs("span", { children: [_jsx("span", { className: 'seam-label', children: "Active" }), " until", ' ', formatDurationDate(accessCode.ends_at), " at", ' ', formatTime(accessCode.ends_at)] }));
|
|
30
|
+
}
|
|
31
|
+
return (_jsxs("span", { children: ["Starts ", formatDurationDate(accessCode.starts_at), " as", ' ', formatTime(accessCode.starts_at)] }));
|
|
32
|
+
}
|
|
33
|
+
function formatDurationDate(date) {
|
|
34
|
+
return DateTime.fromISO(date).toLocaleString({
|
|
35
|
+
month: 'short',
|
|
36
|
+
day: 'numeric',
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function formatTime(date) {
|
|
40
|
+
return DateTime.fromISO(date).toLocaleString({
|
|
41
|
+
hour: 'numeric',
|
|
42
|
+
minute: '2-digit',
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function formatDate(date) {
|
|
46
|
+
return DateTime.fromISO(date).toLocaleString({
|
|
47
|
+
weekday: 'short',
|
|
48
|
+
month: 'long',
|
|
49
|
+
day: 'numeric',
|
|
50
|
+
year: 'numeric',
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
const t = {
|
|
54
|
+
accessCode: 'Access code',
|
|
55
|
+
fallbackName: 'Code',
|
|
56
|
+
id: 'ID',
|
|
57
|
+
created: 'Created',
|
|
58
|
+
timing: 'Timing',
|
|
59
|
+
ongoing: 'Ongoing',
|
|
60
|
+
start: 'Start',
|
|
61
|
+
end: 'End',
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=AccessCodeDetails.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccessCodeDetails.js","sourceRoot":"","sources":["../../../src/lib/ui/AccessCodeDetails/AccessCodeDetails.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useNavigation } from '../../../lib/NavigationProvider.js';
|
|
3
|
+
import { isLockDevice } from '../../../lib/seam/devices/types.js';
|
|
4
|
+
import { useFakeDevice } from '../../../lib/seam/devices/use-device.js';
|
|
5
|
+
import { Button } from '../../../lib/ui/Button.js';
|
|
6
|
+
import { DeviceImage } from '../../../lib/ui/device/DeviceImage.js';
|
|
7
|
+
import { getDeviceModel } from '../../../lib/ui/DeviceDetails/DeviceModel.js';
|
|
8
|
+
import { TextButton } from '../../../lib/ui/TextButton.js';
|
|
9
|
+
export default function AccessCodeDevice({ deviceId }) {
|
|
10
|
+
// TODO: Replace with `useDevice()` once ready
|
|
11
|
+
const { isLoading, device } = useFakeDevice({ device_id: deviceId });
|
|
12
|
+
const { show } = useNavigation();
|
|
13
|
+
// TODO: Do we want to return a skeleton loader here instead?
|
|
14
|
+
if (isLoading || !device || !isLockDevice(device)) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
const model = getDeviceModel(device);
|
|
18
|
+
return (_jsxs("div", { className: 'seam-access-code-device', children: [_jsx("div", { className: 'seam-device-image', children: _jsx(DeviceImage, { device: device }) }), _jsxs("div", { className: 'seam-body', children: [_jsx("div", { className: 'seam-model', children: model }), _jsx(TextButton, { onClick: () => {
|
|
19
|
+
show({ name: 'device_detail', deviceId: device.device_id });
|
|
20
|
+
}, children: t.deviceDetails })] }), _jsx(Button, { children: "Unlock" })] }));
|
|
21
|
+
}
|
|
22
|
+
const t = {
|
|
23
|
+
deviceDetails: 'Device details',
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=AccessCodeDevice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccessCodeDevice.js","sourceRoot":"","sources":["../../../src/lib/ui/AccessCodeDetails/AccessCodeDevice.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EAAE,QAAQ,EAAwB;IACzE,+CAA+C;IAC/C,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAA;IACpE,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,EAAE,CAAA;IAEhC,6DAA6D;IAC7D,IAAI,SAAS,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;QACjD,OAAO,IAAI,CAAA;KACZ;IAED,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA;IAEpC,OAAO,CACL,eAAK,SAAS,EAAC,yBAAyB,aACtC,cAAK,SAAS,EAAC,mBAAmB,YAChC,KAAC,WAAW,IAAC,MAAM,EAAE,MAAM,GAAI,GAC3B,EACN,eAAK,SAAS,EAAC,WAAW,aACxB,cAAK,SAAS,EAAC,YAAY,YAAE,KAAK,GAAO,EACzC,KAAC,UAAU,IACT,OAAO,EAAE,GAAG,EAAE;4BACZ,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAA;wBAC7D,CAAC,YAEA,CAAC,CAAC,aAAa,GACL,IACT,EACN,KAAC,MAAM,yBAAgB,IACnB,CACP,CAAA;AACH,CAAC;AAED,MAAM,CAAC,GAAG;IACR,aAAa,EAAE,gBAAgB;CAChC,CAAA"}
|
|
@@ -1,19 +1,29 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { TableBody, TableCell, TableHeader, TableRow, TableTitle, } from '../../../lib/ui/Table/index.js';
|
|
3
|
-
import { useAccessCodes } from '../../../lib/hooks/use-access-codes.js';
|
|
4
2
|
import { AccessCodeKeyIcon } from '../../../lib/icons/AccessCodeKey.js';
|
|
3
|
+
import { useNavigation } from '../../../lib/NavigationProvider.js';
|
|
4
|
+
import { useAccessCodes } from '../../../lib/seam/access-codes/use-access-codes.js';
|
|
5
5
|
import { CodeDetails } from '../../../lib/ui/AccessCodeTable/CodeDetails.js';
|
|
6
6
|
import { ContentHeader } from '../../../lib/ui/layout/ContentHeader.js';
|
|
7
|
+
import { TableBody } from '../../../lib/ui/Table/TableBody.js';
|
|
8
|
+
import { TableCell } from '../../../lib/ui/Table/TableCell.js';
|
|
9
|
+
import { TableHeader } from '../../../lib/ui/Table/TableHeader.js';
|
|
10
|
+
import { TableRow } from '../../../lib/ui/Table/TableRow.js';
|
|
11
|
+
import { TableTitle } from '../../../lib/ui/Table/TableTitle.js';
|
|
7
12
|
import { Caption } from '../../../lib/ui/typography/Caption.js';
|
|
8
13
|
import { Title } from '../../../lib/ui/typography/Title.js';
|
|
9
14
|
export function AccessCodeTable(props) {
|
|
10
15
|
const { accessCodes } = useAccessCodes({
|
|
11
16
|
device_id: props.deviceId,
|
|
12
17
|
});
|
|
13
|
-
const {
|
|
18
|
+
const { show } = useNavigation();
|
|
14
19
|
if (!accessCodes)
|
|
15
20
|
return _jsx(_Fragment, { children: null });
|
|
16
|
-
return (_jsxs("div", { className: 'seam-access-code-table', children: [_jsx(ContentHeader, {
|
|
21
|
+
return (_jsxs("div", { className: 'seam-access-code-table', children: [_jsx(ContentHeader, {}), _jsx(TableHeader, { children: _jsxs(TableTitle, { children: [t.accessCodes, " ", _jsxs(Caption, { children: ["(", accessCodes.length, ")"] })] }) }), _jsx(TableBody, { children: accessCodes.map((code) => (_jsxs(TableRow, { onClick: () => {
|
|
22
|
+
show({
|
|
23
|
+
name: 'access_code_detail',
|
|
24
|
+
accessCodeId: code.access_code_id,
|
|
25
|
+
});
|
|
26
|
+
}, children: [_jsx(TableCell, { className: 'seam-icon-cell', children: _jsx("div", { children: _jsx(AccessCodeKeyIcon, {}) }) }), _jsxs(TableCell, { className: 'seam-name-cell', children: [_jsx(Title, { children: code.name }), _jsx(CodeDetails, { accessCode: code })] }), _jsx(TableCell, { className: 'seam-action-cell' })] }, code.access_code_id))) })] }));
|
|
17
27
|
}
|
|
18
28
|
const t = {
|
|
19
29
|
accessCodes: 'Access Codes',
|