From c39c92e6d3f0cb414e9b36b76583a6fef0abc11b Mon Sep 17 00:00:00 2001 From: anonymousratwastaken <108170934+anonymousratwastaken@users.noreply.github.com> Date: Sun, 1 Mar 2026 12:59:51 +0000 Subject: [PATCH] minor UX tweaks, rebrand etc --- .gitignore | 3 + bun.lock | 64 +++++- package.json | 6 + public/font/makesans.ttf | Bin 0 -> 48620 bytes src/app/access/[method]/[step]/page.tsx | 29 ++- src/app/auth/page.tsx | 284 ++++++++++++++++++++++++ src/app/globals.css | 104 +++++---- src/app/layout.tsx | 40 ++-- src/app/page.tsx | 20 +- 9 files changed, 469 insertions(+), 81 deletions(-) create mode 100644 public/font/makesans.ttf create mode 100644 src/app/auth/page.tsx diff --git a/.gitignore b/.gitignore index 5ef6a52..e2764f9 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,6 @@ yarn-error.log* # typescript *.tsbuildinfo next-env.d.ts + +# clerk configuration (can include secrets) +/.clerk/ diff --git a/bun.lock b/bun.lock index af44456..878f1fa 100644 --- a/bun.lock +++ b/bun.lock @@ -5,6 +5,12 @@ "name": "web", "dependencies": { "@base-ui/react": "^1.0.0", + "@clerk/clerk-react": "^5.60.0", + "@clerk/elements": "^0.23.53", + "@clerk/nextjs": "^6.37.3", + "@clerk/themes": "^2.4.51", + "@clerk/types": "4.77.0", + "@next/swc-darwin-arm64": "^16.1.6", "@vercel/analytics": "^1.6.1", "@vercel/speed-insights": "^1.3.1", "@xboxreplay/xboxlive-api": "^3.4.3", @@ -105,6 +111,20 @@ "@base-ui/utils": ["@base-ui/utils@0.2.3", "", { "dependencies": { "@babel/runtime": "^7.28.4", "@floating-ui/utils": "^0.2.10", "reselect": "^5.1.1", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "@types/react": "^17 || ^18 || ^19", "react": "^17 || ^18 || ^19", "react-dom": "^17 || ^18 || ^19" }, "optionalPeers": ["@types/react"] }, "sha512-/CguQ2PDaOzeVOkllQR8nocJ0FFIDqsWIcURsVmm53QGo8NhFNpePjNlyPIB41luxfOqnG7PU0xicMEw3ls7XQ=="], + "@clerk/backend": ["@clerk/backend@2.30.1", "", { "dependencies": { "@clerk/shared": "^3.44.0", "@clerk/types": "^4.101.14", "standardwebhooks": "^1.0.0", "tslib": "2.8.1" } }, "sha512-GoxnJzVH0ycNPAGCDMfo3lPBFbo5nehpLSVFjgGEnzIRGGahBtAB8PQT7KM2zo58pD8apjb/+suhcB/WCiEasQ=="], + + "@clerk/clerk-react": ["@clerk/clerk-react@5.60.0", "", { "dependencies": { "@clerk/shared": "^3.44.0", "tslib": "2.8.1" }, "peerDependencies": { "react": "^18.0.0 || ~19.0.3 || ~19.1.4 || ~19.2.3 || ~19.3.0-0", "react-dom": "^18.0.0 || ~19.0.3 || ~19.1.4 || ~19.2.3 || ~19.3.0-0" } }, "sha512-P88FncsJpq/3WZJhhlj+md8mYb35BIXpr462C/figwsBGHsinr8VuBQUMcMZZ/6M34C8ABfLTPa6PHVp6+3D5Q=="], + + "@clerk/elements": ["@clerk/elements@0.23.89", "", { "dependencies": { "@clerk/clerk-react": "^5.58.1", "@clerk/shared": "^3.39.0", "@clerk/types": "^4.101.6", "@radix-ui/primitive": "^1.1.3", "@radix-ui/react-form": "^0.1.8", "@radix-ui/react-slot": "^1.2.3", "@xstate/react": "^6.0.0", "client-only": "^0.0.1", "tslib": "2.8.1", "type-fest": "^4.41.0", "xstate": "^5.20.2" }, "peerDependencies": { "next": "^13.5.7 || ^14.2.25 || ^15.2.3 || ^16", "react": "^18.0.0 || ^19.0.0 || ^19.0.0-0", "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-0" }, "optionalPeers": ["next"] }, "sha512-fSW78J7dYsz6OG8pN+RJr3yOuFX5pAjA2TsGMbLhN/lJGanueLD4EhKSZy1z8JOCNngYdRLPBtj+aSFOHkEyaA=="], + + "@clerk/nextjs": ["@clerk/nextjs@6.37.3", "", { "dependencies": { "@clerk/backend": "^2.30.1", "@clerk/clerk-react": "^5.60.0", "@clerk/shared": "^3.44.0", "@clerk/types": "^4.101.14", "server-only": "0.0.1", "tslib": "2.8.1" }, "peerDependencies": { "next": "^13.5.7 || ^14.2.25 || ^15.2.3 || ^16", "react": "^18.0.0 || ~19.0.3 || ~19.1.4 || ~19.2.3 || ~19.3.0-0", "react-dom": "^18.0.0 || ~19.0.3 || ~19.1.4 || ~19.2.3 || ~19.3.0-0" } }, "sha512-kammmf4b5R2Izb/SN4UbEa/6rdyop9fPHwZkyyJoVfgMLFM26fwpXWaSqVJPe4YL2BmHKP+orIOolzTmEhhdQQ=="], + + "@clerk/shared": ["@clerk/shared@3.44.0", "", { "dependencies": { "csstype": "3.1.3", "dequal": "2.0.3", "glob-to-regexp": "0.4.1", "js-cookie": "3.0.5", "std-env": "^3.9.0", "swr": "2.3.4" }, "peerDependencies": { "react": "^18.0.0 || ~19.0.3 || ~19.1.4 || ~19.2.3 || ~19.3.0-0", "react-dom": "^18.0.0 || ~19.0.3 || ~19.1.4 || ~19.2.3 || ~19.3.0-0" }, "optionalPeers": ["react", "react-dom"] }, "sha512-kH+chNeZwqml3IDpWLgebWECfOZifyUQO4OISd/96w1EuCY1Bzw6cBq/ZbpsoO8jyG8/6bGr/MGXLhDzTrpPfA=="], + + "@clerk/themes": ["@clerk/themes@2.4.51", "", { "dependencies": { "@clerk/shared": "^3.44.0", "tslib": "2.8.1" } }, "sha512-g50S8xUzKe4XMnWRZLi05+BE/HwqUi5Zjz2YwTkhGKtArailK2S+2Yir+Z1STEnuqqlSGv3o4BuG4TQRn1VAFg=="], + + "@clerk/types": ["@clerk/types@4.77.0", "", { "dependencies": { "csstype": "3.1.3" } }, "sha512-9D+rvsU2rhPdQ1qwXRYwxIf5IjeomGsavNZUEalK+42vuOo6Wqg6GGiZkqwKxUybszfJ/IqQEuSIJLOnv8ox5A=="], + "@dotenvx/dotenvx": ["@dotenvx/dotenvx@1.51.2", "", { "dependencies": { "commander": "^11.1.0", "dotenv": "^17.2.1", "eciesjs": "^0.4.10", "execa": "^5.1.1", "fdir": "^6.2.0", "ignore": "^5.3.0", "object-treeify": "1.1.33", "picomatch": "^4.0.2", "which": "^4.0.0" }, "bin": { "dotenvx": "src/cli/dotenvx.js" } }, "sha512-+693mNflujDZxudSEqSNGpn92QgFhJlBn9q2mDQ9yGWyHuz3hZ8B5g3EXCwdAz4DMJAI+OFCIbfEFZS+YRdrEA=="], "@ecies/ciphers": ["@ecies/ciphers@0.2.5", "", { "peerDependencies": { "@noble/ciphers": "^1.0.0" } }, "sha512-GalEZH4JgOMHYYcYmVqnFirFsjZHeoGMDt9IxEnM9F7GRUUyUksJ7Ou53L83WHJq3RWKD3AcBpo0iQh0oMpf8A=="], @@ -235,7 +255,7 @@ "@next/eslint-plugin-next": ["@next/eslint-plugin-next@16.0.10", "", { "dependencies": { "fast-glob": "3.3.1" } }, "sha512-b2NlWN70bbPLmfyoLvvidPKWENBYYIe017ZGUpElvQjDytCWgxPJx7L9juxHt0xHvNVA08ZHJdOyhGzon/KJuw=="], - "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.0.10", "", { "os": "darwin", "cpu": "arm64" }, "sha512-4XgdKtdVsaflErz+B5XeG0T5PeXKDdruDf3CRpnhN+8UebNa5N2H58+3GDgpn/9GBurrQ1uWW768FfscwYkJRg=="], + "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.1.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-wTzYulosJr/6nFnqGW7FrG3jfUUlEf8UjGA0/pyypJl42ExdVgC6xJgcXQ+V8QFn6niSG2Pb8+MIG1mZr2vczw=="], "@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.0.10", "", { "os": "darwin", "cpu": "x64" }, "sha512-spbEObMvRKkQ3CkYVOME+ocPDFo5UqHb8EMTS78/0mQ+O1nqE8toHJVioZo4TvebATxgA8XMTHHrScPrn68OGw=="], @@ -397,6 +417,8 @@ "@sindresorhus/merge-streams": ["@sindresorhus/merge-streams@4.0.0", "", {}, "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ=="], + "@stablelib/base64": ["@stablelib/base64@1.0.1", "", {}, "sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ=="], + "@swc/helpers": ["@swc/helpers@0.5.15", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g=="], "@tailwindcss/node": ["@tailwindcss/node@4.1.18", "", { "dependencies": { "@jridgewell/remapping": "^2.3.4", "enhanced-resolve": "^5.18.3", "jiti": "^2.6.1", "lightningcss": "1.30.2", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.1.18" } }, "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ=="], @@ -517,6 +539,8 @@ "@xboxreplay/xboxlive-api": ["@xboxreplay/xboxlive-api@3.4.3", "", { "dependencies": { "@xboxreplay/errors": "^0.1.0", "axios": "^0.21.1" } }, "sha512-+iSmNCN4RHXZXBc48e0tJB+tvUs6XEwEWcXTcECrIttgDVN9fsFxroo+6ET+K38FobEM+5xUOfCVNqQoWQthxQ=="], + "@xstate/react": ["@xstate/react@6.0.0", "", { "dependencies": { "use-isomorphic-layout-effect": "^1.1.2", "use-sync-external-store": "^1.2.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "xstate": "^5.20.0" }, "optionalPeers": ["xstate"] }, "sha512-xXlLpFJxqLhhmecAXclBECgk+B4zYSrDTl8hTfPZBogkn82OHKbm9zJxox3Z/YXoOhAQhKFTRLMYGdlbhc6T9A=="], + "@yudiel/react-qr-scanner": ["@yudiel/react-qr-scanner@2.5.0", "", { "dependencies": { "barcode-detector": "3.0.8", "webrtc-adapter": "9.0.3" }, "peerDependencies": { "react": "^17 || ^18 || ^19", "react-dom": "^17 || ^18 || ^19" } }, "sha512-wVWvm0z5kGGc3tiMcxyr2aji3C6aU5K3Q7R08MOdyFDFkvMbFMF1Hz5P5WFYW+zuuqxDPBcRZPCvmVs6jBheTQ=="], "accepts": ["accepts@2.0.0", "", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="], @@ -681,6 +705,8 @@ "depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="], + "dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], + "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], "detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="], @@ -787,6 +813,8 @@ "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], + "fast-sha256": ["fast-sha256@1.3.0", "", {}, "sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ=="], + "fast-uri": ["fast-uri@3.1.0", "", {}, "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA=="], "fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="], @@ -857,6 +885,8 @@ "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], + "glob-to-regexp": ["glob-to-regexp@0.4.1", "", {}, "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="], + "globals": ["globals@16.4.0", "", {}, "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw=="], "globalthis": ["globalthis@1.0.4", "", { "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" } }, "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ=="], @@ -1001,6 +1031,8 @@ "jose": ["jose@6.1.3", "", {}, "sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ=="], + "js-cookie": ["js-cookie@3.0.5", "", {}, "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw=="], + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], @@ -1291,6 +1323,8 @@ "serve-static": ["serve-static@2.2.1", "", { "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "parseurl": "^1.3.3", "send": "^1.2.0" } }, "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw=="], + "server-only": ["server-only@0.0.1", "", {}, "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA=="], + "set-blocking": ["set-blocking@2.0.0", "", {}, "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="], "set-function-length": ["set-function-length@1.2.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2" } }, "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg=="], @@ -1329,8 +1363,12 @@ "stable-hash": ["stable-hash@0.0.5", "", {}, "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA=="], + "standardwebhooks": ["standardwebhooks@1.0.0", "", { "dependencies": { "@stablelib/base64": "^1.0.0", "fast-sha256": "^1.3.0" } }, "sha512-BbHGOQK9olHPMvQNHWul6MYlrRTAOKn03rOe4A8O3CLWhNf4YHBqq2HJKKC+sfqpxiBY52pNeesD6jIiLDz8jg=="], + "statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], + "std-env": ["std-env@3.10.0", "", {}, "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg=="], + "stdin-discarder": ["stdin-discarder@0.2.2", "", {}, "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ=="], "stop-iteration-iterator": ["stop-iteration-iterator@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "internal-slot": "^1.1.0" } }, "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ=="], @@ -1367,6 +1405,8 @@ "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], + "swr": ["swr@2.3.4", "", { "dependencies": { "dequal": "^2.0.3", "use-sync-external-store": "^1.4.0" }, "peerDependencies": { "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-bYd2lrhc+VarcpkgWclcUi92wYCpOgMws9Sd1hG1ntAu0NEy+14CbotuFjshBU2kt9rYj9TSmDcybpxpeTU1fg=="], + "tabbable": ["tabbable@6.3.0", "", {}, "sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ=="], "tagged-tag": ["tagged-tag@1.0.0", "", {}, "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng=="], @@ -1405,7 +1445,7 @@ "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], - "type-fest": ["type-fest@5.3.1", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-VCn+LMHbd4t6sF3wfU/+HKT63C9OoyrSIf4b+vtWHpt2U7/4InZG467YDNMFMR70DdHjAdpPWmw2lzRdg0Xqqg=="], + "type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="], "type-is": ["type-is@2.0.1", "", { "dependencies": { "content-type": "^1.0.5", "media-typer": "^1.1.0", "mime-types": "^3.0.0" } }, "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw=="], @@ -1441,6 +1481,8 @@ "use-callback-ref": ["use-callback-ref@1.3.3", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="], + "use-isomorphic-layout-effect": ["use-isomorphic-layout-effect@1.2.1", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA=="], + "use-sidecar": ["use-sidecar@1.1.3", "", { "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ=="], "use-sync-external-store": ["use-sync-external-store@1.6.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w=="], @@ -1473,6 +1515,8 @@ "wsl-utils": ["wsl-utils@0.3.0", "", { "dependencies": { "is-wsl": "^3.1.0", "powershell-utils": "^0.1.0" } }, "sha512-3sFIGLiaDP7rTO4xh3g+b3AzhYDIUGGywE/WsmqzJWDxus5aJXVnPTNC/6L+r2WzrwXqVOdD262OaO+cEyPMSQ=="], + "xstate": ["xstate@5.26.0", "", {}, "sha512-Fvi9VBoqHgsGYLU2NTag8xDTWtKqUC0+ue7EAhBNBb06wf620QEy05upBaEI1VLMzIn63zugLV8nHb69ZUWYAA=="], + "y18n": ["y18n@4.0.3", "", {}, "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="], "yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], @@ -1495,6 +1539,16 @@ "zxing-wasm": ["zxing-wasm@2.2.4", "", { "dependencies": { "@types/emscripten": "^1.41.5", "type-fest": "^5.2.0" } }, "sha512-1gq5zs4wuNTs5umWLypzNNeuJoluFvwmvjiiT3L9z/TMlVveeJRWy7h90xyUqCe+Qq0zL0w7o5zkdDMWDr9aZA=="], + "@clerk/backend/@clerk/types": ["@clerk/types@4.101.14", "", { "dependencies": { "@clerk/shared": "^3.44.0" } }, "sha512-jl7DywmeaZx1IntgEXcjDZq2uyk+X/1yAZOjxOboeGTS0rNTiQNhv7xK8tFVjexsUAFrYlwC1AxhFuJiMDQjow=="], + + "@clerk/elements/@clerk/types": ["@clerk/types@4.101.14", "", { "dependencies": { "@clerk/shared": "^3.44.0" } }, "sha512-jl7DywmeaZx1IntgEXcjDZq2uyk+X/1yAZOjxOboeGTS0rNTiQNhv7xK8tFVjexsUAFrYlwC1AxhFuJiMDQjow=="], + + "@clerk/nextjs/@clerk/types": ["@clerk/types@4.101.14", "", { "dependencies": { "@clerk/shared": "^3.44.0" } }, "sha512-jl7DywmeaZx1IntgEXcjDZq2uyk+X/1yAZOjxOboeGTS0rNTiQNhv7xK8tFVjexsUAFrYlwC1AxhFuJiMDQjow=="], + + "@clerk/shared/csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="], + + "@clerk/types/csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="], + "@dotenvx/dotenvx/commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="], "@dotenvx/dotenvx/execa": ["execa@5.1.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^4.0.1", "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="], @@ -1559,8 +1613,12 @@ "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "msw/type-fest": ["type-fest@5.3.1", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-VCn+LMHbd4t6sF3wfU/+HKT63C9OoyrSIf4b+vtWHpt2U7/4InZG467YDNMFMR70DdHjAdpPWmw2lzRdg0Xqqg=="], + "msw/yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], + "next/@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.0.10", "", { "os": "darwin", "cpu": "arm64" }, "sha512-4XgdKtdVsaflErz+B5XeG0T5PeXKDdruDf3CRpnhN+8UebNa5N2H58+3GDgpn/9GBurrQ1uWW768FfscwYkJRg=="], + "next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], "npm-run-path/path-key": ["path-key@4.0.0", "", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="], @@ -1585,6 +1643,8 @@ "yargs/find-up": ["find-up@4.1.0", "", { "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="], + "zxing-wasm/type-fest": ["type-fest@5.3.1", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-VCn+LMHbd4t6sF3wfU/+HKT63C9OoyrSIf4b+vtWHpt2U7/4InZG467YDNMFMR70DdHjAdpPWmw2lzRdg0Xqqg=="], + "@dotenvx/dotenvx/execa/get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="], "@dotenvx/dotenvx/execa/human-signals": ["human-signals@2.1.0", "", {}, "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="], diff --git a/package.json b/package.json index b27fbda..a48b890 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,12 @@ }, "dependencies": { "@base-ui/react": "^1.0.0", + "@clerk/clerk-react": "^5.60.0", + "@clerk/elements": "^0.23.53", + "@clerk/nextjs": "^6.37.3", + "@clerk/themes": "^2.4.51", + "@clerk/types": "4.77.0", + "@next/swc-darwin-arm64": "^16.1.6", "@vercel/analytics": "^1.6.1", "@vercel/speed-insights": "^1.3.1", "@xboxreplay/xboxlive-api": "^3.4.3", diff --git a/public/font/makesans.ttf b/public/font/makesans.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a9afb548fc081b1e42aeb33336af56cf4da93ddb GIT binary patch literal 48620 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 literal 0 HcmV?d00001 diff --git a/src/app/access/[method]/[step]/page.tsx b/src/app/access/[method]/[step]/page.tsx index 9a4749f..8d249da 100644 --- a/src/app/access/[method]/[step]/page.tsx +++ b/src/app/access/[method]/[step]/page.tsx @@ -1,7 +1,7 @@ "use client"; import { useState, useTransition, useEffect, use } from "react"; -import { Asterisk, CheckCircle2, Camera, CameraOff, PartyPopper, ExternalLink, ArrowLeft, Copy, Gift } from "lucide-react"; +import { Asterisk, CheckCircle2, Camera, CameraOff, PartyPopper, ExternalLink, ArrowLeft, Copy, Gift, MessageCircle } from "lucide-react"; import { Button } from "@/components/ui/button"; import { InputOTP, InputOTPGroup, InputOTPSlot } from "@/components/ui/input-otp"; import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group"; @@ -16,6 +16,12 @@ import Link from "next/link"; import { useRouter } from "next/navigation"; import { cfg } from "@/lib/cfg"; import { getAvatarProfile } from "@/lib/avatar"; +import { useUser } from "@clerk/nextjs"; +import localFont from "next/font/local"; + +const makeSans = localFont({ + src: "../../../../../public/font/makesans.ttf", +}) interface PageProps { params: Promise<{ @@ -29,6 +35,7 @@ export default function AccessPage({ params }: PageProps) { const resolvedParams = use(params); const method = resolvedParams.method; // 'code' or 'qr' const step = resolvedParams.step; // 'verify', 'details', 'success' + const { isSignedIn } = useUser(); // Access Code State const [length, setLength] = useState(6); @@ -465,8 +472,8 @@ export default function AccessPage({ params }: PageProps) { Back to home -

- {method === 'code' ? 'Access Code Verification' : 'QR Code Verification'} +

+ {method === 'code' ? 'access code verification' : 'qr code verification'}

{method === 'code' @@ -587,7 +594,7 @@ export default function AccessPage({ params }: PageProps) { Back to verification -

Server Details

+

server details

Tell us which Minecraft edition you play and your username(s).

@@ -682,7 +689,7 @@ export default function AccessPage({ params }: PageProps) { {/* Header */}
-

You're whitelisted!

+

you're whitelisted!

Welcome to FRG Network! You can now join the server. As soon as you join, come back and click "Claim my reward" to get a gift on behalf of the team here. @@ -753,6 +760,16 @@ export default function AccessPage({ params }: PageProps) { + {/* Optional OAuth Section */} + {!isSignedIn && ( + + )} + @@ -778,7 +795,7 @@ export default function AccessPage({ params }: PageProps) { Back to success -

Claim Your Reward

+

claim your reward

Help us improve your server experience! Complete this survey to receive 2 diamonds as a thank you.

diff --git a/src/app/auth/page.tsx b/src/app/auth/page.tsx new file mode 100644 index 0000000..36fe521 --- /dev/null +++ b/src/app/auth/page.tsx @@ -0,0 +1,284 @@ +"use client"; + +import { useState } from "react"; +import { Button } from "@/components/ui/button"; +import { Card, CardContent } from "@/components/ui/card"; +import Link from "next/link"; +import localFont from "next/font/local"; +import { useUser, useClerk } from "@clerk/nextjs"; +import * as Clerk from "@clerk/elements/common"; +import * as SignIn from "@clerk/elements/sign-in"; +import * as SignUp from "@clerk/elements/sign-up"; + +const makeSans = localFont({ + src: "../../../public/font/makesans.ttf", +}) + +export default function AuthPage() { + const { isSignedIn, user } = useUser(); + const { signOut } = useClerk(); + const [showSignIn, setShowSignIn] = useState(false); + const [showSignUp, setShowSignUp] = useState(false); + const inputClassName = + "bg-input/20 dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-7 rounded-md border px-2 py-0.5 text-sm transition-colors file:h-6 file:text-xs/relaxed file:font-medium focus-visible:ring-[2px] aria-invalid:ring-[2px] md:text-xs/relaxed file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50"; + + if (showSignIn) { + return ( +
+
+
+
+ + ← Back + +

+ sign in +

+
+ + + + + + + Email + + + + + + +
+ Don't have an account?{" "} + +
+
+ + + + +

+ Enter the code sent to +

+ + Verification code + + + + + + +
+ + + + Password + + + + + + + + + + +
+ + + +

+ We'll email you a code to reset your password. +

+ + + + + + +
+ + + + + Reset code + + + + + New password + + + + + Confirm password + + + + + + + +
+
+
+
+
+
+ ); + } + + if (showSignUp) { + return ( +
+
+
+
+ + ← Back + +

+ create account +

+
+ + + + + + + Email + + + + + Password + + + + + + + +
+ Already have an account?{" "} + +
+
+ + + + +

+ Enter the code sent to your email. +

+ + Verification code + + + + + + +
+
+ + + +

+ Finish setting up your account. +

+ + Username + + + + + First name + + + + + Last name + + + + + + +
+
+
+
+
+
+
+ ); + } + + return ( +
+
+ Account for +

+ FRG Network +

+

Create your FRG account to access all features

+ + {isSignedIn ? ( +
+ + +

welcome back

+

+ Welcome back, {user?.firstName || user?.emailAddresses[0]?.emailAddress}! +

+
+ +
+
+
+
+ ) : ( +
+ + +

get started

+
+ + +
+
+
+ + Looking for server access? +
+ )} +
+
+ ); +} diff --git a/src/app/globals.css b/src/app/globals.css index 4e1a648..1399b2b 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -56,78 +56,86 @@ :root { --background: oklch(1 0 0); - --foreground: oklch(0.145 0 0); + --foreground: oklch(0.141 0.005 285.823); --card: oklch(1 0 0); - --card-foreground: oklch(0.145 0 0); + --card-foreground: oklch(0.141 0.005 285.823); --popover: oklch(1 0 0); - --popover-foreground: oklch(0.145 0 0); - --primary: oklch(0.65 0.18 132); - --primary-foreground: oklch(0.99 0.03 121); + --popover-foreground: oklch(0.141 0.005 285.823); + --primary: oklch(0.646 0.222 41.116); + --primary-foreground: oklch(0.98 0.016 73.684); --secondary: oklch(0.967 0.001 286.375); --secondary-foreground: oklch(0.21 0.006 285.885); - --muted: oklch(0.97 0 0); - --muted-foreground: oklch(0.556 0 0); - --accent: oklch(0.65 0.18 132); - --accent-foreground: oklch(0.99 0.03 121); - --destructive: oklch(0.58 0.22 27); - --border: oklch(0.922 0 0); - --input: oklch(0.922 0 0); - --ring: oklch(0.708 0 0); - --chart-1: oklch(0.90 0.18 127); - --chart-2: oklch(0.85 0.21 129); - --chart-3: oklch(0.77 0.20 131); - --chart-4: oklch(0.65 0.18 132); - --chart-5: oklch(0.53 0.14 132); - --radius: 0; + --muted: oklch(0.967 0.001 286.375); + --muted-foreground: oklch(0.552 0.016 285.938); + --accent: oklch(0.967 0.001 286.375); + --accent-foreground: oklch(0.21 0.006 285.885); + --destructive: oklch(0.577 0.245 27.325); + --border: oklch(0.92 0.004 286.32); + --input: oklch(0.92 0.004 286.32); + --ring: oklch(0.705 0.015 286.067); + --chart-1: oklch(0.837 0.128 66.29); + --chart-2: oklch(0.705 0.213 47.604); + --chart-3: oklch(0.646 0.222 41.116); + --chart-4: oklch(0.553 0.195 38.402); + --chart-5: oklch(0.47 0.157 37.304); + --radius: 0.625rem; --sidebar: oklch(0.985 0 0); - --sidebar-foreground: oklch(0.145 0 0); - --sidebar-primary: oklch(0.65 0.18 132); - --sidebar-primary-foreground: oklch(0.99 0.03 121); - --sidebar-accent: oklch(0.65 0.18 132); - --sidebar-accent-foreground: oklch(0.99 0.03 121); - --sidebar-border: oklch(0.922 0 0); - --sidebar-ring: oklch(0.708 0 0); + --sidebar-foreground: oklch(0.141 0.005 285.823); + --sidebar-primary: oklch(0.646 0.222 41.116); + --sidebar-primary-foreground: oklch(0.98 0.016 73.684); + --sidebar-accent: oklch(0.967 0.001 286.375); + --sidebar-accent-foreground: oklch(0.21 0.006 285.885); + --sidebar-border: oklch(0.92 0.004 286.32); + --sidebar-ring: oklch(0.705 0.015 286.067); } .dark { - --background: oklch(0.145 0 0); + --background: oklch(0.141 0.005 285.823); --foreground: oklch(0.985 0 0); - --card: oklch(0.205 0 0); + --card: oklch(0.21 0.006 285.885); --card-foreground: oklch(0.985 0 0); - --popover: oklch(0.205 0 0); + --popover: oklch(0.21 0.006 285.885); --popover-foreground: oklch(0.985 0 0); - --primary: oklch(0.77 0.20 131); - --primary-foreground: oklch(0.27 0.07 132); + --primary: oklch(0.7968 0.2119 135.19); + --primary-foreground: oklch(0.1566 0.0354 125.31); --secondary: oklch(0.274 0.006 286.033); --secondary-foreground: oklch(0.985 0 0); - --muted: oklch(0.269 0 0); - --muted-foreground: oklch(0.708 0 0); - --accent: oklch(0.77 0.20 131); - --accent-foreground: oklch(0.27 0.07 132); + --muted: oklch(0.274 0.006 286.033); + --muted-foreground: oklch(0.705 0.015 286.067); + --accent: oklch(0.274 0.006 286.033); + --accent-foreground: oklch(0.985 0 0); --destructive: oklch(0.704 0.191 22.216); --border: oklch(1 0 0 / 10%); --input: oklch(1 0 0 / 15%); - --ring: oklch(0.556 0 0); - --chart-1: oklch(0.90 0.18 127); - --chart-2: oklch(0.85 0.21 129); - --chart-3: oklch(0.77 0.20 131); - --chart-4: oklch(0.65 0.18 132); - --chart-5: oklch(0.53 0.14 132); - --sidebar: oklch(0.205 0 0); + --ring: oklch(0.552 0.016 285.938); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.21 0.006 285.885); --sidebar-foreground: oklch(0.985 0 0); - --sidebar-primary: oklch(0.85 0.21 129); - --sidebar-primary-foreground: oklch(0.27 0.07 132); - --sidebar-accent: oklch(0.77 0.20 131); - --sidebar-accent-foreground: oklch(0.27 0.07 132); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.274 0.006 286.033); + --sidebar-accent-foreground: oklch(0.985 0 0); --sidebar-border: oklch(1 0 0 / 10%); - --sidebar-ring: oklch(0.556 0 0); + --sidebar-ring: oklch(0.552 0.016 285.938); +} + +@supports (corner-shape: squircle) { + * { + corner-shape: superellipse(2); + --radius:1.5rem; + } } @layer base { * { @apply border-border outline-ring/50; } + body { @apply bg-background text-foreground; } -} \ No newline at end of file +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 41a6770..ed93570 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -3,8 +3,10 @@ import "./globals.css"; import { Toaster } from "@/components/ui/sonner" import { ThemeProvider } from "@/components/theme-provider"; import { Google_Sans_Code, Mona_Sans } from "next/font/google"; +import localFont from 'next/font/local' import { CookieConsent } from "@/components/cookie-notice"; import { ConditionalAnalytics } from "@/components/conditional-analytics"; +import { ClerkProvider } from "@clerk/nextjs"; export const metadata: Metadata = { title: "FRG Network", description: "Authenticate to access Minecraft.", @@ -14,7 +16,9 @@ export const googleSansCode = Google_Sans_Code({ variable: "--font-google-code", subsets: ["latin"], }); - +export const makeSans = localFont({ + src: "../../public/font/makesans.ttf", +}) export const mona = Mona_Sans({ weight: "variable", subsets: ["latin"], @@ -26,22 +30,24 @@ export default function RootLayout({ children: React.ReactNode; }>) { return ( - - - + + - {children} - - - - - - + + {children} + + + + + + + ); } diff --git a/src/app/page.tsx b/src/app/page.tsx index 4bb785a..0ae7dc6 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -4,10 +4,11 @@ import { Asterisk, QrCode } from "lucide-react"; import { DotGothic16 } from "next/font/google"; import { cfg } from "@/lib/cfg"; import Link from "next/link"; +import localFont from "next/font/local"; -const dots = DotGothic16({ - weight: "400", -}); +export const makeSans = localFont({ + src: "../../public/font/makesans.ttf", +}) export default function Page() { return ( @@ -16,24 +17,27 @@ export default function Page() { className="font-mona min-w-screen gap-2 min-h-screen flex flex-col items-center p-2 justify-center" > Authentication for -

+

FRG Network

A private Minecraft server for me and my friends.

+
{cfg.accessCode.enabled && ( - )} {cfg.qr.enabled && ( - )} +
+
);