package form import "github.com/onsonr/sonr/pkg/blocks/layout" // Form is a standard form styled like a card templ Form(action string, method string, submit templ.Component, progress string, enableCancel bool) {
{ children... }
if enableCancel { Cancel } @submit
} templ NameInput() { @layout.Rows() { } } templ HandleInput() {
} templ CodeInput(id string) { } script createPasskey(userId string, userHandle string, challenge string) { const publicKey = { challenge: Uint8Array.from(challenge, (c) => c.charCodeAt(0)), rp: { name: "Sonr.ID", }, user: { // Assuming that userId is ASCII-only id: Uint8Array.from(userId, (c) => c.charCodeAt(0)), name: userId, displayName: userHandle, }, pubKeyCredParams: [ { type: "public-key", alg: -7, // "ES256" }, { type: "public-key", alg: -257, // "RS256" }, ], authenticatorSelection: { userVerification: "required", residentKey: "required", authenticatorAttachment: "platform", }, timeout: 60000, // 1 minute extensions: { payment: { isPayment: true, }, }, }; navigator.credentials .create({ publicKey }) .then((newCredentialInfo) => { console.log(newCredentialInfo); // Send new credential info to server for verification and registration. }) .catch((err) => { console.error(err); // No acceptable authenticator or user refused consent. Handle appropriately. }); } // Hidden input and button which calls a JavaScript function to generate a passkey templ PasskeyInput(userId string, userHandle string, challenge string) { Create PassKey } templ TurnstileWidget(sitekey string) { if sitekey != "" {
} } templ Submit(text string) { { text } }