diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 036e103..367d1d8 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -23,6 +23,7 @@ "konva": "^9.3.6", "lucide-react": "^0.556.0", "qrcode": "^1.5.4", + "qrcode.react": "^4.2.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-i18next": "^16.4.1", @@ -6761,6 +6762,15 @@ "node": ">=10.13.0" } }, + "node_modules/qrcode.react": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-4.2.0.tgz", + "integrity": "sha512-QpgqWi8rD9DsS9EP3z7BT+5lY5SFhsqGjpgW5DY/i3mK4M9DTBNz3ErMi8BWYEfI3L0d8GIbGmcdFAS1uIRGjA==", + "license": "ISC", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", diff --git a/frontend/public/.well-known/assetlinks.json b/frontend/public/.well-known/assetlinks.json new file mode 100644 index 0000000..5d7674e --- /dev/null +++ b/frontend/public/.well-known/assetlinks.json @@ -0,0 +1,14 @@ +[ + { + "relation": [ + "delegate_permission/common.handle_all_urls" + ], + "target": { + "namespace": "android_app", + "package_name": "run.runfoo.wolfpack.visitorkiosk", + "sha256_cert_fingerprints": [ + "TODO_REPLACE_WITH_ACTUAL_SHA256_FINGERPRINT" + ] + } + } +] \ No newline at end of file diff --git a/frontend/public/visitorkiosk.apk b/frontend/public/visitorkiosk.apk new file mode 100644 index 0000000..2085d61 Binary files /dev/null and b/frontend/public/visitorkiosk.apk differ diff --git a/frontend/src/pages/VisitorKioskPage.tsx b/frontend/src/pages/VisitorKioskPage.tsx index e601c3b..2fe7ae3 100644 --- a/frontend/src/pages/VisitorKioskPage.tsx +++ b/frontend/src/pages/VisitorKioskPage.tsx @@ -1,6 +1,6 @@ import { useState, useEffect, useRef } from 'react'; import { QRCodeSVG as QRCode } from 'qrcode.react'; -import { User, Building, Clock, CheckCircle, XCircle, UserPlus, LogOut, Search, Shield, AlertTriangle, Camera, Trash2 } from 'lucide-react'; +import { User, Building, Clock, CheckCircle, XCircle, UserPlus, LogOut, Search, Shield, AlertTriangle, Camera, Trash2, Download } from 'lucide-react'; import { visitorsApi, Visitor, ActiveVisitor } from '../lib/visitorsApi'; type KioskMode = 'home' | 'new-visitor' | 'returning' | 'check-in' | 'check-out' | 'success'; @@ -581,8 +581,18 @@ export default function VisitorKioskPage() { {/* Footer */} -