diff --git a/tasks/new/2026-0824.06.gem.feat.ui-user-hub.adaptive-launchpad-sessions-passkeys-2217.md b/tasks/complete/2026-0824.06.gem.feat.ui-user-hub.adaptive-launchpad-sessions-passkeys-2217.md similarity index 100% rename from tasks/new/2026-0824.06.gem.feat.ui-user-hub.adaptive-launchpad-sessions-passkeys-2217.md rename to tasks/complete/2026-0824.06.gem.feat.ui-user-hub.adaptive-launchpad-sessions-passkeys-2217.md diff --git a/ui/components/AppLaunchpadPage.tsx b/ui/components/AppLaunchpadPage.tsx index 871e233..fd181d4 100644 --- a/ui/components/AppLaunchpadPage.tsx +++ b/ui/components/AppLaunchpadPage.tsx @@ -21,80 +21,114 @@ export const AppLaunchpadPage = ({ currentPath="/dashboard" isAdmin={isAdmin} > -
-

Application Launchpad

+
+

+ Application Launchpad +

+

+ Single sign-on authorized workloads and microservices. +

-
+
{apps.length === 0 ? ( -
- No authorized applications found. +
+
+ + + + + +
+

+ No Authorized Applications +

+

+ You do not have active role grants for any workloads. +

) : ( - apps.map((app) => ( -
+ apps.map((app) => { + const isAdminRole = app.role === "Admin" || + app.role === "Global Admin"; + const targetUrl = app.domain.startsWith("http") + ? app.domain + : `https://${app.domain}`; + + return (
-

{app.name}

- - {app.role} - -
-

- {app.description || "No description provided."} -

-
+
+
+
+
+ {app.name.charAt(0).toUpperCase()} +
+
+

+ {app.name} +

+ + {app.domain} + +
+
+ + + {app.role} + +
+ +

+ {app.description || + "Zero-trust secured internal application."} +

+
+ - Launch + Launch App + + + +
-
- )) + ); + }) )}
diff --git a/ui/components/PasskeysPage.tsx b/ui/components/PasskeysPage.tsx index 02a91cc..404a07f 100644 --- a/ui/components/PasskeysPage.tsx +++ b/ui/components/PasskeysPage.tsx @@ -13,81 +13,86 @@ export const PasskeysPage = ({ currentPath="/dashboard/passkeys" isAdmin={isAdmin} > -
-
-

+
+
+

Registered Passkeys -

- +

+

+ Manage FIDO2 WebAuthn credentials and biometric authenticators. +

-

- Manage your registered hardware tokens. We recommend having at least - two registered. + + + + + Enroll New Passkey + +

+ + {/* Add Passkey Drawer / Container */} + + + {/* Desktop Table View (≥ 768px) */} + + {/* Mobile Adaptive Cards View (< 768px) */} +
+ {passkeys.length === 0 + ? ( +
+

+ No passkeys registered. +

+
+ ) + : ( + passkeys.map((passkey) => ( +
+
+
+
+ + + + + +
+
+
+ Passkey Credential +
+
+ {passkey.credential_id + ? `${passkey.credential_id.substring(0, 14)}...` + : passkey.id} +
+
+
+ + + {passkey.aaguid ? "Hardware/OS" : "FIDO2"} + +
+ +
+
+ Counter: {passkey.counter} authentications +
+
+ + +
+ )) + )} +
+ + {/* Emergency Recovery Backup Section */} +
+
+
+
+ + + +
+
+

+ Zero-Trust Recovery Backup +

+

+ 2-of-3 Shamir's Secret Sharing Matrix & Cold 12-Word Voucher +

+
+
+ + Active Protection +
+ +

+ If you lose your hardware keys or mobile device, your 12-word recovery + voucher combined with your secret PIN allows you to re-enroll a fresh + passkey without admin assistance. +

+ +
+ +
+ + +
+ + +