@ofidj/entry 3.16.0 → 3.18.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/dom.d.ts CHANGED
@@ -61,3 +61,16 @@ export declare function passkeyRegistration(options: any): Promise<{
61
61
  };
62
62
  clientExtensionResults: {};
63
63
  }>;
64
+ export declare function memberCard(options: {
65
+ consent: Record<string, unknown>;
66
+ history: Array<{
67
+ type: string;
68
+ granted: boolean;
69
+ changedAt: string;
70
+ }>;
71
+ agreementHref?: string;
72
+ owner?: boolean;
73
+ leaving?: boolean;
74
+ leaveScope?: string;
75
+ manageHref?: string;
76
+ }): string;
package/dom.js CHANGED
@@ -9,7 +9,7 @@
9
9
  // screen nests signin-trust inside its inner div and the interaction screen
10
10
  // makes it a sibling, so a single shell builder would have had to change one of
11
11
  // them. That is a decision, not a move.
12
- import { accountModel, agreementModel, credentialsModel, emailDividerLabel, passkeyDoorModel, providerEntryModel, returnNoticeModel, signInHint, verificationWaitModel, walletDoorModel, } from "./index.js";
12
+ import { accountModel, agreementModel, credentialsModel, emailDividerLabel, formatDate, optionalPurposes, passkeyDoorModel, providerEntryModel, returnNoticeModel, signInHint, verificationWaitModel, walletDoorModel, } from "./index.js";
13
13
  export const escape = (value) => String(value ?? "").replace(/[&<>"']/g, (char) => ({ "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" })[char]);
14
14
  const attribute = (name, value) => value === undefined || value === false || value === ""
15
15
  ? ""
@@ -203,6 +203,35 @@ export function bindAgreementScreen(form) {
203
203
  export { oidcInteractionMarkup, oidcInteractionStyles } from "./server.js";
204
204
  export function bindOidcInteraction(root) {
205
205
  bindPasswordReveal(root);
206
+ // The passkey door: the challenge came with the screen, the authenticator's
207
+ // answer leaves with the form, as on the provider's own page.
208
+ const door = root.querySelector('button[value="passkey"][data-passkey-options]');
209
+ if (door && !passkeySupported())
210
+ door.hidden = true;
211
+ door?.addEventListener("click", async (event) => {
212
+ event.preventDefault();
213
+ const form = door.form;
214
+ if (!form)
215
+ return;
216
+ try {
217
+ const answer = await passkeyAssertion(JSON.parse(door.dataset.passkeyOptions || "{}"));
218
+ const field = form.querySelector('input[name="passkey"]');
219
+ if (field)
220
+ field.value = JSON.stringify(answer);
221
+ const action = document.createElement("input");
222
+ action.type = "hidden";
223
+ action.name = "action";
224
+ action.value = "passkey";
225
+ form.append(action);
226
+ form
227
+ .querySelectorAll("[required]")
228
+ .forEach((element) => element.removeAttribute("required"));
229
+ form.submit();
230
+ }
231
+ catch {
232
+ // Cancelled or refused by the device: the email form is still there.
233
+ }
234
+ });
206
235
  const checkbox = root.querySelector('input[name="terms"]');
207
236
  const submit = root.querySelector('button[value="continue"]');
208
237
  if (!checkbox || !submit)
@@ -344,4 +373,37 @@ export async function passkeyRegistration(options) {
344
373
  clientExtensionResults: {},
345
374
  };
346
375
  }
347
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5Q0FBeUM7QUFDekMsRUFBRTtBQUNGLCtFQUErRTtBQUMvRSw4RUFBOEU7QUFDOUUsZ0ZBQWdGO0FBQ2hGLHVFQUF1RTtBQUN2RSxFQUFFO0FBQ0YsZ0ZBQWdGO0FBQ2hGLDRFQUE0RTtBQUM1RSxnRkFBZ0Y7QUFDaEYsd0NBQXdDO0FBRXhDLE9BQU8sRUFDTCxZQUFZLEVBQ1osY0FBYyxFQUNkLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsVUFBVSxFQUNWLHFCQUFxQixFQUNyQixlQUFlLEdBS2hCLE1BQU0sWUFBWSxDQUFDO0FBRXBCLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFLENBQ3ZDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUN6QixVQUFVLEVBQ1YsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNQLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUN2RSxJQUFJLENBQ0osQ0FDTCxDQUFDO0FBRUosTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFZLEVBQUUsS0FBaUMsRUFBRSxFQUFFLENBQ3BFLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLEtBQUssSUFBSSxLQUFLLEtBQUssRUFBRTtJQUNwRCxDQUFDLENBQUMsRUFBRTtJQUNKLENBQUMsQ0FBQyxJQUFJLElBQUksS0FBSyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztBQUVwQyxNQUFNLE1BQU0sR0FBRyxDQUFDLE9BQXFCLEVBQUUsVUFBVSxHQUFH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
376
+ // The member card every generated app draws on its account screen, the shell
377
+ // and the Studio Notes starter alike: the agreement with its ground (a link to
378
+ // the version accepted), each optional choice as a switch that says On or Off,
379
+ // then History, Export and the way out — the same reading as Fidj's GDPR card.
380
+ export function memberCard(options) {
381
+ const { consent, history } = options;
382
+ const version = String(consent.termsVersion || "");
383
+ const agreementRow = consent.terms
384
+ ? `<div class="member-row"><div><strong>Service agreement</strong>${options.agreementHref && version
385
+ ? `<a class="basis" href="${escape(options.agreementHref)}" target="_blank" rel="noopener noreferrer">Contract · agreement ${escape(version)} ↗</a>`
386
+ : '<span class="basis">Contract</span>'}</div><small class="nosw">Part of the service. To stop it, leave the app.</small></div>`
387
+ : '<div class="member-row"><div><strong>Service agreement</strong><small>Not accepted yet — accept it or leave the app.</small></div><button id="accept-terms" class="primary">Accept</button></div>';
388
+ const choices = optionalPurposes
389
+ .map((purpose) => `<label class="member-row" for="purpose-${purpose.key}"><div><strong>${escape(purpose.title)}</strong><small>${escape(purpose.description)}</small><span class="basis consent">Consent</span></div><span class="switch"><input type="checkbox" role="switch" id="purpose-${purpose.key}" data-purpose="${purpose.key}"${consent[purpose.key] ? " checked" : ""}><span class="switch-state" aria-hidden="true">${consent[purpose.key] ? "On" : "Off"}</span></span></label>`)
390
+ .join("");
391
+ const entries = history.length
392
+ ? history
393
+ .slice()
394
+ .reverse()
395
+ .map((entry) => `<p>${escape(formatDate(entry.changedAt, "datetime"))} · ${escape(entry.type)} ${entry.granted ? "given" : "withdrawn"}</p>`)
396
+ .join("")
397
+ : "<p>No changes yet.</p>";
398
+ const leave = options.owner
399
+ ? "<small>You own this app: hand it over or delete it on Fidj before leaving.</small>"
400
+ : options.leaving
401
+ ? `<div role="alertdialog" aria-labelledby="leave-title"><p id="leave-title">${escape(options.leaveScope || "Your membership and what this app holds for you will be erased. Your other apps remain available.")}</p><button id="confirm-leave" class="danger">Leave &amp; erase</button><button id="cancel-leave">Keep my membership</button></div>`
402
+ : '<button id="leave" class="danger">Leave &amp; erase</button>';
403
+ return `<h2>Your membership</h2><div class="member-rows">${agreementRow}${choices}</div>
404
+ <details class="member-history"><summary>History</summary>${entries}</details>
405
+ <div class="member-actions"><button id="export">Export</button>${leave}</div>${options.manageHref
406
+ ? `<p class="leaving"><a href="${escape(options.manageHref)}" target="_blank" rel="noopener noreferrer">Open Fidj to manage every app you use ↗</a></p>`
407
+ : ""}`;
408
+ }
409
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5Q0FBeUM7QUFDekMsRUFBRTtBQUNGLCtFQUErRTtBQUMvRSw4RUFBOEU7QUFDOUUsZ0ZBQWdGO0FBQ2hGLHVFQUF1RTtBQUN2RSxFQUFFO0FBQ0YsZ0ZBQWdGO0FBQ2hGLDRFQUE0RTtBQUM1RSxnRkFBZ0Y7QUFDaEYsd0NBQXdDO0FBRXhDLE9BQU8sRUFDTCxZQUFZLEVBQ1osY0FBYyxFQUNkLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixVQUFVLEVBQ1YscUJBQXFCLEVBQ3JCLGVBQWUsR0FLaEIsTUFBTSxZQUFZLENBQUM7QUFFcEIsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FDdkMsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQ3pCLFVBQVUsRUFDVixDQUFDLElBQUksRUFBRSxFQUFFLENBQ1AsQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQ3ZFLElBQUksQ0FDSixDQUNMLENBQUM7QUFFSixNQUFNLFNBQVMsR0FBRyxDQUFDLElBQVksRUFBRSxLQUFpQyxFQUFFLEVBQUUsQ0FDcEUsS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLEtBQUssS0FBSyxFQUFFO0lBQ3BELENBQUMsQ0FBQyxFQUFFO0lBQ0osQ0FBQyxDQUFDLElBQUksSUFBSSxLQUFLLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO0FBRXBDLE1BQU0sTUFBTSxHQUFHLENB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
package/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { agreementRequired, agreementFromRefusal, verificationPending, signInErrorMessage, acceptance, providerEntryModel, agreementModel, verificationWaitModel, accountModel, credentialsModel, passkeyDoorModel, emailDividerLabel, walletDoorModel, returnNoticeModel, pollVerification, type SigninShape, type EntryControl, type ProviderEntryModel, type AgreementModel, type VerificationState, type VerificationWaitModel, type AccountState, type AccountField, type AccountModel, type CredentialsModel, } from "./model.js";
1
+ export { agreementRequired, agreementFromRefusal, verificationPending, signInErrorMessage, acceptance, providerEntryModel, agreementModel, verificationWaitModel, accountModel, credentialsModel, passkeyDoorModel, emailDividerLabel, walletDoorModel, returnNoticeModel, pollVerification, formatDate, optionalPurposes, type SigninShape, type EntryControl, type ProviderEntryModel, type AgreementModel, type VerificationState, type VerificationWaitModel, type AccountState, type AccountField, type AccountModel, type CredentialsModel, } from "./model.js";
2
2
  export { signInHint, rememberSignIn, forgetSignIn } from "./remembered.js";
package/index.js CHANGED
@@ -11,6 +11,6 @@
11
11
  // Two subpaths carry what cannot be pure:
12
12
  // @ofidj/entry/dom the HTML renderer and the helpers that drive a document
13
13
  // @ofidj/entry/window the Fidj window and the answer it relays back
14
- export { agreementRequired, agreementFromRefusal, verificationPending, signInErrorMessage, acceptance, providerEntryModel, agreementModel, verificationWaitModel, accountModel, credentialsModel, passkeyDoorModel, emailDividerLabel, walletDoorModel, returnNoticeModel, pollVerification, } from "./model.js";
14
+ export { agreementRequired, agreementFromRefusal, verificationPending, signInErrorMessage, acceptance, providerEntryModel, agreementModel, verificationWaitModel, accountModel, credentialsModel, passkeyDoorModel, emailDividerLabel, walletDoorModel, returnNoticeModel, pollVerification, formatDate, optionalPurposes, } from "./model.js";
15
15
  export { signInHint, rememberSignIn, forgetSignIn } from "./remembered.js";
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUVBQW1FO0FBQ25FLEVBQUU7QUFDRixnRkFBZ0Y7QUFDaEYsNkVBQTZFO0FBQzdFLCtFQUErRTtBQUMvRSxnRkFBZ0Y7QUFDaEYsOEVBQThFO0FBQzlFLDZFQUE2RTtBQUM3RSxrRUFBa0U7QUFDbEUsRUFBRTtBQUNGLDBDQUEwQztBQUMxQyxpRkFBaUY7QUFDakYsdUVBQXVFO0FBQ3ZFLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLGdCQUFnQixHQVdqQixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQyJ9
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUVBQW1FO0FBQ25FLEVBQUU7QUFDRixnRkFBZ0Y7QUFDaEYsNkVBQTZFO0FBQzdFLCtFQUErRTtBQUMvRSxnRkFBZ0Y7QUFDaEYsOEVBQThFO0FBQzlFLDZFQUE2RTtBQUM3RSxrRUFBa0U7QUFDbEUsRUFBRTtBQUNGLDBDQUEwQztBQUMxQyxpRkFBaUY7QUFDakYsdUVBQXVFO0FBQ3ZFLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YsZ0JBQWdCLEdBV2pCLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDIn0=
package/model.d.ts CHANGED
@@ -135,3 +135,9 @@ export declare function pollVerification(options: {
135
135
  onVerified: () => void;
136
136
  intervalMs?: number;
137
137
  }): () => void;
138
+ export declare function formatDate(value: string | number | Date | null | undefined, mode?: "date" | "datetime"): string;
139
+ export declare const optionalPurposes: ReadonlyArray<{
140
+ key: "analytics" | "communications" | "optionalData";
141
+ title: string;
142
+ description: string;
143
+ }>;
package/model.js CHANGED
@@ -166,7 +166,11 @@ export function providerEntryModel(options) {
166
166
  // Fidj is the only door: it collects the agreement itself, a moment later,
167
167
  // on the screen that names the app — and records it with its version.
168
168
  disclosure: both
169
- ? { label: "Inline form", controls: "email-entry", expanded: false }
169
+ ? {
170
+ label: "Or with your email",
171
+ controls: "email-entry",
172
+ expanded: false,
173
+ }
170
174
  : null,
171
175
  };
172
176
  }
@@ -419,4 +423,53 @@ export function pollVerification(options) {
419
423
  timer = setTimeout(ask, interval);
420
424
  return stop;
421
425
  }
422
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0JBQXNCO0FBQ3RCLEVBQUU7QUFDRiwrRUFBK0U7QUFDL0UsMkVBQTJFO0FBQzNFLHNFQUFzRTtBQUN0RSxnRkFBZ0Y7QUFDaEYsc0VBQXNFO0FBQ3RFLEVBQUU7QUFDRixnRkFBZ0Y7QUFDaEYsK0VBQStFO0FBQy9FLGdGQUFnRjtBQUNoRiw4RUFBOEU7QUFDOUUsMkJBQTJCO0FBSTNCLDhFQUE4RTtBQUM5RSx1QkFBdUI7QUFDdkIsOEVBQThFO0FBRTlFLE1BQU0sa0JBQWtCLEdBQUcsb0JBQW9CLENBQUM7QUFFaEQscUVBQXFFO0FBQ3JFLEVBQUU7QUFDRixnRkFBZ0Y7QUFDaEYsNEVBQTRFO0FBQzVFLDBFQUEwRTtBQUMxRSw4RUFBOEU7QUFDOUUsOEVBQThFO0FBQzlFLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFjO0lBQzlDLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3RELE1BQU0sTUFBTSxHQUFHLEtBSWQsQ0FBQztJQUNGLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxHQUFHO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDckMsS0FBSyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNqRSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDO1lBQ2pFLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxnRkFBZ0Y7QUFDaEYsRUFBRTtBQUNGLDZFQUE2RTtBQUM3RSwyRUFBMkU7QUFDM0UsZ0ZBQWdG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
426
+ const MONTHS = [
427
+ "Jan",
428
+ "Feb",
429
+ "Mar",
430
+ "Apr",
431
+ "May",
432
+ "Jun",
433
+ "Jul",
434
+ "Aug",
435
+ "Sep",
436
+ "Oct",
437
+ "Nov",
438
+ "Dec",
439
+ ];
440
+ // One way to write a date, on Fidj and in every generated app. The month is
441
+ // spelled out so nobody has to guess whether 09/10 is September or October,
442
+ // and the time is shown only where it matters (a session, a refusal).
443
+ export function formatDate(value, mode = "date") {
444
+ if (value === null || value === undefined || value === "")
445
+ return "";
446
+ const date = value instanceof Date ? value : new Date(value);
447
+ if (Number.isNaN(date.getTime()))
448
+ return "";
449
+ const day = `${date.getDate()} ${MONTHS[date.getMonth()]} ${date.getFullYear()}`;
450
+ if (mode === "date")
451
+ return day;
452
+ const time = `${String(date.getHours()).padStart(2, "0")}:${String(date.getMinutes()).padStart(2, "0")}`;
453
+ return `${day}, ${time}`;
454
+ }
455
+ // The optional choices every app offers until apps declare their own purposes,
456
+ // named once for Fidj's console and every generated app. Each is a consent: off
457
+ // unless the person turns it on, and withdrawable at any time.
458
+ export const optionalPurposes = [
459
+ {
460
+ key: "analytics",
461
+ title: "Analytics",
462
+ description: "Help this app understand how its features are used.",
463
+ },
464
+ {
465
+ key: "communications",
466
+ title: "Communications",
467
+ description: "Receive optional news and updates from this app.",
468
+ },
469
+ {
470
+ key: "optionalData",
471
+ title: "Optional data",
472
+ description: "Allow additional data beyond the essential service.",
473
+ },
474
+ ];
475
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0JBQXNCO0FBQ3RCLEVBQUU7QUFDRiwrRUFBK0U7QUFDL0UsMkVBQTJFO0FBQzNFLHNFQUFzRTtBQUN0RSxnRkFBZ0Y7QUFDaEYsc0VBQXNFO0FBQ3RFLEVBQUU7QUFDRixnRkFBZ0Y7QUFDaEYsK0VBQStFO0FBQy9FLGdGQUFnRjtBQUNoRiw4RUFBOEU7QUFDOUUsMkJBQTJCO0FBSTNCLDhFQUE4RTtBQUM5RSx1QkFBdUI7QUFDdkIsOEVBQThFO0FBRTlFLE1BQU0sa0JBQWtCLEdBQUcsb0JBQW9CLENBQUM7QUFFaEQscUVBQXFFO0FBQ3JFLEVBQUU7QUFDRixnRkFBZ0Y7QUFDaEYsNEVBQTRFO0FBQzVFLDBFQUEwRTtBQUMxRSw4RUFBOEU7QUFDOUUsOEVBQThFO0FBQzlFLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFjO0lBQzlDLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3RELE1BQU0sTUFBTSxHQUFHLEtBSWQsQ0FBQztJQUNGLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxHQUFHO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDckMsS0FBSyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNqRSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDO1lBQ2pFLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxnRkFBZ0Y7QUFDaEYsRUFBRTtBQUNGLDZFQUE2RTtBQUM3RSwyRUFBMkU7QUFDM0UsZ0ZBQWdG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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ofidj/entry",
3
- "version": "3.16.0",
3
+ "version": "3.18.0",
4
4
  "description": "The Fidj entry: sign-in, account recovery, the service agreement and the design system, shared verbatim by Fidj, the generated apps and the console.",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
package/server.d.ts CHANGED
@@ -24,8 +24,9 @@ export type OidcInteractionPage = {
24
24
  options: unknown;
25
25
  };
26
26
  logoSrc?: string;
27
+ agreementAccepted?: boolean;
27
28
  };
28
29
  export declare const oidcInteractionScript = "(() => {\n const bindPasswordReveal = (root) => {\n root.querySelectorAll(\"button[aria-controls]\").forEach((button) => {\n const field = root.querySelector(\"#\" + button.getAttribute(\"aria-controls\"));\n if (!field) return;\n button.addEventListener(\"click\", () => {\n const hidden = field.type === \"password\";\n field.type = hidden ? \"text\" : \"password\";\n button.textContent = hidden ? \"Hide\" : \"Show\";\n });\n });\n };\n const bindAgreement = (root) => {\n const checkbox = root.querySelector('input[name=\"terms\"]');\n const submit = root.querySelector('button[value=\"continue\"]');\n if (!checkbox || !submit) return;\n const update = () => { submit.disabled = !checkbox.checked; };\n checkbox.addEventListener(\"change\", update);\n update();\n };\n // The passkey ceremony, on a page that may not fetch: the options came with\n // the page, the answer leaves with the form.\n const fromB64url = (value) => {\n const base64 = value.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const bytes = atob(base64 + \"===\".slice((base64.length + 3) % 4));\n return Uint8Array.from(bytes, (c) => c.charCodeAt(0)).buffer;\n };\n const toB64url = (buffer) =>\n btoa(String.fromCharCode(...new Uint8Array(buffer))).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n const bindPasskey = (root) => {\n const button = root.querySelector('button[value=\"passkey\"][data-passkey-options]');\n if (!button) return;\n if (!window.PublicKeyCredential || !navigator.credentials) {\n button.hidden = true;\n return;\n }\n button.addEventListener(\"click\", async (event) => {\n event.preventDefault();\n const form = button.form;\n const options = JSON.parse(button.dataset.passkeyOptions);\n const publicKey = {\n ...options,\n challenge: fromB64url(options.challenge),\n allowCredentials: (options.allowCredentials || []).map((c) => ({ ...c, id: fromB64url(c.id) })),\n };\n try {\n const credential = await navigator.credentials.get({ publicKey });\n const r = credential.response;\n form.querySelector('input[name=\"passkey\"]').value = JSON.stringify({\n id: credential.id,\n rawId: toB64url(credential.rawId),\n type: credential.type,\n response: {\n clientDataJSON: toB64url(r.clientDataJSON),\n authenticatorData: toB64url(r.authenticatorData),\n signature: toB64url(r.signature),\n userHandle: r.userHandle ? toB64url(r.userHandle) : undefined,\n },\n clientExtensionResults: {},\n });\n const action = document.createElement(\"input\");\n action.type = \"hidden\";\n action.name = \"action\";\n action.value = \"passkey\";\n form.append(action);\n form.querySelectorAll(\"[required]\").forEach((field) => field.removeAttribute(\"required\"));\n form.submit();\n } catch (e) {\n // Cancelled or refused by the device: the email form is still there.\n }\n });\n };\n bindPasswordReveal(document);\n bindPasskey(document);\n bindAgreement(document);\n})();";
29
- export declare const oidcInteractionStyles = ".oidc-page,.oidc-page *{box-sizing:border-box}.oidc-page{width:min(100%,720px);max-width:none;padding:0;font:16px system-ui;color:#153e37;text-align:left;min-height:calc(100vh - 48px);margin:0 auto;overflow:hidden;border:1px solid #b9ccc0;border-radius:20px;background:white}.oidc-page .oidc-brand{display:flex;align-items:center;gap:16px;padding:18px 28px;background:#173e36;color:white}.oidc-page .oidc-brand img{width:48px;height:48px}.oidc-page .oidc-brand p{margin:0;font-size:21px;font-weight:700;line-height:1.08}.oidc-page section{padding:32px 36px 40px}.oidc-page section>h1{margin:0 0 10px;font-size:30px;line-height:1.15}.oidc-page section>p{line-height:1.45}.oidc-page form{margin-top:24px}.oidc-page label{display:block;margin:20px 0 8px}.oidc-page input,.oidc-page button{width:100%;padding:14px;border:1px solid #b9ccc0;border-radius:10px;font:inherit}.oidc-page button{margin-top:14px;background:#173e36;color:white;cursor:pointer;font-weight:600}.oidc-page .secondary{background:white;color:#173e36}.oidc-page .cancel{border-color:transparent;background:transparent}.oidc-page .notice{margin:0 0 4px;padding:12px 14px;border:1px solid #ef4b42;background:#fdecea;color:#8a1c16;border-radius:8px}.oidc-page .return{margin:0;font-size:14px;color:#3f5c52}.oidc-page .field-head,.oidc-page .password-field{display:flex;align-items:flex-end;gap:12px}.oidc-page .field-head{justify-content:space-between}.oidc-page .field-head label{margin-bottom:0}.oidc-page .field-link{font-size:14px;color:#3f5c52}.oidc-page .password-field input{flex:1}.oidc-page .password-field button{width:auto;margin-top:0}.oidc-page .account-picker{display:grid;grid-template-columns:44px minmax(0,1fr) 24px;align-items:center;gap:12px;padding:12px 14px;border:1px solid #b9ccc0;border-radius:12px;background:#f3f6f1}.oidc-page .account-avatar{display:grid;width:44px;height:44px;place-items:center;border-radius:50%;background:#173e36;color:white;font-size:18px;font-weight:700}.oidc-page .account-copy{display:flex;min-width:0;flex-direction:column;gap:2px}.oidc-page .account-copy small{font-size:12px;color:#3f5c52}.oidc-page .account-email{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.oidc-page .account-check{font-size:20px;font-weight:700}.oidc-page .permission-title{margin:22px 0 8px;font-weight:600}.oidc-page .permission-list{margin:0;padding:12px 14px 12px 36px;border:1px solid #b9ccc0;border-radius:12px}.oidc-page .permission-list li{padding:3px 0}.oidc-page .account-switch{text-align:left}.oidc-page .agreement-choice{display:flex;align-items:flex-start;gap:10px;margin:20px 0 8px}.oidc-page .agreement-choice input{width:auto}.oidc-page .fineprint{margin:6px 0;font-size:14px;color:#3f5c52}.oidc-page .agreement-link{display:inline-block;margin:2px 0 8px;color:#173e36;font-weight:600}@media(max-width:700px){.oidc-page{min-height:100vh;border:0;border-radius:0}.oidc-page .oidc-brand{padding:16px 24px}.oidc-page .oidc-brand img{width:44px;height:44px}.oidc-page .oidc-brand p{font-size:19px}.oidc-page section{padding:26px 24px 34px}.oidc-page section>h1{font-size:26px}}.oidc-page .divider{display:flex;align-items:center;gap:12px;margin:22px 0 0;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#3f5c52}.oidc-page .divider::before,.oidc-page .divider::after{content:\"\";flex:1;height:1px;background:#b9ccc0}.oidc-page button:disabled{border-color:#d4d9d5;background:#d4d9d5;color:#778079;cursor:not-allowed}.oidc-page .agreement-choice a{color:#173e36;font-weight:600}.oidc-page.oidc-page :is(h1,p,label,small,strong,a,li,span,input,button){font-family:inherit;letter-spacing:normal;text-transform:none;text-wrap:wrap}.oidc-page.oidc-page{margin:0 auto;max-width:none;padding:0}.oidc-page.oidc-page :is(h1,p,label,li,strong){color:inherit}.oidc-page.oidc-page label{font-size:inherit;margin:20px 0 8px}.oidc-page.oidc-page .agreement-choice{margin:20px 0 8px}.oidc-page.oidc-page h1{font-weight:700;font-size:30px;line-height:1.15;margin:0 0 10px}.oidc-page.oidc-page .fineprint,.oidc-page.oidc-page .return,.oidc-page.oidc-page .field-link{color:#3f5c52}";
30
+ export declare const oidcInteractionStyles = ".oidc-page,.oidc-page *{box-sizing:border-box}.oidc-page{width:min(100%,560px);max-width:none;padding:0;font:15px/1.5 \"IBM Plex Sans\",system-ui,-apple-system,sans-serif;color:#14110f;text-align:left;min-height:calc(100vh - 48px);margin:0 auto;overflow:hidden;border:1px solid #e4ded7;border-radius:2px;background:#ffffff}.oidc-page .oidc-brand{display:flex;align-items:center;gap:14px;padding:16px 28px;background:#14110f;color:#fbfaf8}.oidc-page .oidc-brand img{width:36px;height:36px}.oidc-page .oidc-brand p{margin:0;font-family:\"Instrument Serif\",Georgia,\"Times New Roman\",serif;font-size:20px;font-weight:400;line-height:1.1}.oidc-page section{padding:30px 32px 36px}.oidc-page section>p{line-height:1.5;color:#4a4540}.oidc-page form{margin-top:20px}.oidc-page label{display:block;margin:18px 0 7px;font-family:\"IBM Plex Mono\",ui-monospace,SFMono-Regular,monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#6b655f}.oidc-page input,.oidc-page button{width:100%;padding:12px 14px;border:1px solid #dfd9d2;border-radius:2px;font:inherit;background:#ffffff;color:#14110f}.oidc-page input:focus{outline:none;border-color:#14110f}.oidc-page button{margin-top:12px;background:#14110f;border-color:#14110f;color:#fbfaf8;cursor:pointer;font-weight:600}.oidc-page .secondary{background:transparent;border-color:#dfd9d2;color:#14110f;font-weight:500}.oidc-page .cancel{border-color:transparent;background:transparent;color:#6b655f;font-weight:500}.oidc-page .notice{margin:0 0 4px;padding:12px 14px;border:1px solid #e8d9d6;border-left:3px solid #b8352c;background:#fdf7f6;color:#8c2a22;border-radius:2px}.oidc-page .return{margin:0;font-size:13px;color:#6b655f}.oidc-page .field-head,.oidc-page .password-field{display:flex;align-items:flex-end;gap:12px}.oidc-page .field-head{justify-content:space-between}.oidc-page .field-head label{margin-bottom:7px}.oidc-page .field-link{font-size:13px;color:#6b655f}.oidc-page .password-field input{flex:1}.oidc-page .password-field button{width:auto;margin-top:0;background:transparent;border-color:#dfd9d2;color:#14110f;font-weight:500}.oidc-page .account-picker{display:grid;grid-template-columns:40px minmax(0,1fr) 24px;align-items:center;gap:12px;padding:12px 14px;border:1px solid #e4ded7;border-radius:2px;background:#f5f1ec}.oidc-page .account-avatar{display:grid;width:40px;height:40px;place-items:center;border-radius:50%;background:#14110f;color:#fbfaf8;font-size:16px;font-weight:600}.oidc-page .account-copy{display:flex;min-width:0;flex-direction:column;gap:2px}.oidc-page .account-copy small{font-size:12px;color:#6b655f}.oidc-page .account-email{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.oidc-page .account-check{font-size:18px;font-weight:600}.oidc-page .permission-title{margin:22px 0 8px;font-family:\"IBM Plex Mono\",ui-monospace,SFMono-Regular,monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#6b655f}.oidc-page .permission-list{margin:0;padding:10px 14px 10px 32px;border:1px solid #e4ded7;border-radius:2px}.oidc-page .permission-list li{padding:3px 0}.oidc-page .account-switch{text-align:left}.oidc-page .agreement-choice{display:flex;align-items:flex-start;gap:10px;margin:20px 0 8px}.oidc-page .agreement-choice input{width:auto;accent-color:#14110f}.oidc-page .fineprint{margin:6px 0;font-size:13px;color:#6b655f}.oidc-page a{color:#14110f;text-decoration:underline;text-decoration-color:#dfd9d2;text-underline-offset:3px}@media(max-width:700px){.oidc-page{min-height:100vh;border:0}.oidc-page .oidc-brand{padding:14px 20px}.oidc-page section{padding:24px 20px 30px}.oidc-page section>h1{font-size:28px}}.oidc-page .divider{display:flex;align-items:center;gap:12px;margin:20px 0 0;font-family:\"IBM Plex Mono\",ui-monospace,SFMono-Regular,monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#6b655f}.oidc-page .divider::before,.oidc-page .divider::after{content:\"\";flex:1;height:1px;background:#e4ded7}.oidc-page button:disabled{opacity:.45;cursor:not-allowed}.oidc-page .agreement-choice a{font-weight:600}.oidc-page.oidc-page :is(h1,p,small,strong,a,li,span,input,button){letter-spacing:normal;text-transform:none;text-wrap:wrap}.oidc-page.oidc-page :is(p,small,strong,a,li,span,input,button){font-family:inherit}.oidc-page.oidc-page{margin:0 auto;max-width:none;padding:0}.oidc-page.oidc-page :is(h1,li,strong){color:inherit}.oidc-page.oidc-page label:not(.agreement-choice){font-family:\"IBM Plex Mono\",ui-monospace,SFMono-Regular,monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#6b655f;margin:18px 0 7px}.oidc-page.oidc-page .agreement-choice{margin:20px 0 8px;font-family:inherit;font-size:14px;letter-spacing:normal;text-transform:none;color:#14110f}.oidc-page.oidc-page h1{font-family:\"Instrument Serif\",Georgia,\"Times New Roman\",serif;font-weight:400;font-size:32px;line-height:1.1;margin:0 0 10px;color:#14110f}.oidc-page.oidc-page .fineprint,.oidc-page.oidc-page .return,.oidc-page.oidc-page .field-link{color:#6b655f}";
30
31
  export declare function oidcInteractionMarkup(page: OidcInteractionPage): string;
31
32
  export declare function oidcInteractionPage(page: OidcInteractionPage): string;
package/server.js CHANGED
@@ -80,8 +80,8 @@ export const oidcInteractionScript = `(() => {
80
80
  // document that has a stylesheet of its own. The typography reset names the
81
81
  // scope twice so it outranks a host's element rules, some of which already
82
82
  // carry a pseudo-class of their own.
83
- export const oidcInteractionStyles = `.oidc-page,.oidc-page *{box-sizing:border-box}.oidc-page{width:min(100%,720px);max-width:none;padding:0;font:16px system-ui;color:#153e37;text-align:left;min-height:calc(100vh - 48px);margin:0 auto;overflow:hidden;border:1px solid #b9ccc0;border-radius:20px;background:white}.oidc-page .oidc-brand{display:flex;align-items:center;gap:16px;padding:18px 28px;background:#173e36;color:white}.oidc-page .oidc-brand img{width:48px;height:48px}.oidc-page .oidc-brand p{margin:0;font-size:21px;font-weight:700;line-height:1.08}.oidc-page section{padding:32px 36px 40px}.oidc-page section>h1{margin:0 0 10px;font-size:30px;line-height:1.15}.oidc-page section>p{line-height:1.45}.oidc-page form{margin-top:24px}.oidc-page label{display:block;margin:20px 0 8px}.oidc-page input,.oidc-page button{width:100%;padding:14px;border:1px solid #b9ccc0;border-radius:10px;font:inherit}.oidc-page button{margin-top:14px;background:#173e36;color:white;cursor:pointer;font-weight:600}.oidc-page .secondary{background:white;color:#173e36}.oidc-page .cancel{border-color:transparent;background:transparent}.oidc-page .notice{margin:0 0 4px;padding:12px 14px;border:1px solid #ef4b42;background:#fdecea;color:#8a1c16;border-radius:8px}.oidc-page .return{margin:0;font-size:14px;color:#3f5c52}.oidc-page .field-head,.oidc-page .password-field{display:flex;align-items:flex-end;gap:12px}.oidc-page .field-head{justify-content:space-between}.oidc-page .field-head label{margin-bottom:0}.oidc-page .field-link{font-size:14px;color:#3f5c52}.oidc-page .password-field input{flex:1}.oidc-page .password-field button{width:auto;margin-top:0}.oidc-page .account-picker{display:grid;grid-template-columns:44px minmax(0,1fr) 24px;align-items:center;gap:12px;padding:12px 14px;border:1px solid #b9ccc0;border-radius:12px;background:#f3f6f1}.oidc-page .account-avatar{display:grid;width:44px;height:44px;place-items:center;border-radius:50%;background:#173e36;color:white;font-size:18px;font-weight:700}.oidc-page .account-copy{display:flex;min-width:0;flex-direction:column;gap:2px}.oidc-page .account-copy small{font-size:12px;color:#3f5c52}.oidc-page .account-email{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.oidc-page .account-check{font-size:20px;font-weight:700}.oidc-page .permission-title{margin:22px 0 8px;font-weight:600}.oidc-page .permission-list{margin:0;padding:12px 14px 12px 36px;border:1px solid #b9ccc0;border-radius:12px}.oidc-page .permission-list li{padding:3px 0}.oidc-page .account-switch{text-align:left}.oidc-page .agreement-choice{display:flex;align-items:flex-start;gap:10px;margin:20px 0 8px}.oidc-page .agreement-choice input{width:auto}.oidc-page .fineprint{margin:6px 0;font-size:14px;color:#3f5c52}.oidc-page .agreement-link{display:inline-block;margin:2px 0 8px;color:#173e36;font-weight:600}@media(max-width:700px){.oidc-page{min-height:100vh;border:0;border-radius:0}.oidc-page .oidc-brand{padding:16px 24px}.oidc-page .oidc-brand img{width:44px;height:44px}.oidc-page .oidc-brand p{font-size:19px}.oidc-page section{padding:26px 24px 34px}.oidc-page section>h1{font-size:26px}}.oidc-page .divider{display:flex;align-items:center;gap:12px;margin:22px 0 0;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#3f5c52}.oidc-page .divider::before,.oidc-page .divider::after{content:"";flex:1;height:1px;background:#b9ccc0}.oidc-page button:disabled{border-color:#d4d9d5;background:#d4d9d5;color:#778079;cursor:not-allowed}.oidc-page .agreement-choice a{color:#173e36;font-weight:600}.oidc-page.oidc-page :is(h1,p,label,small,strong,a,li,span,input,button){font-family:inherit;letter-spacing:normal;text-transform:none;text-wrap:wrap}.oidc-page.oidc-page{margin:0 auto;max-width:none;padding:0}.oidc-page.oidc-page :is(h1,p,label,li,strong){color:inherit}.oidc-page.oidc-page label{font-size:inherit;margin:20px 0 8px}.oidc-page.oidc-page .agreement-choice{margin:20px 0 8px}.oidc-page.oidc-page h1{font-weight:700;font-size:30px;line-height:1.15;margin:0 0 10px}.oidc-page.oidc-page .fineprint,.oidc-page.oidc-page .return,.oidc-page.oidc-page .field-link{color:#3f5c52}`;
84
- const documentStyles = `body{margin:0;padding:24px;background:#f3f6f1}@media(max-width:700px){body{padding:0}}`;
83
+ export const oidcInteractionStyles = `.oidc-page,.oidc-page *{box-sizing:border-box}.oidc-page{width:min(100%,560px);max-width:none;padding:0;font:15px/1.5 "IBM Plex Sans",system-ui,-apple-system,sans-serif;color:#14110f;text-align:left;min-height:calc(100vh - 48px);margin:0 auto;overflow:hidden;border:1px solid #e4ded7;border-radius:2px;background:#ffffff}.oidc-page .oidc-brand{display:flex;align-items:center;gap:14px;padding:16px 28px;background:#14110f;color:#fbfaf8}.oidc-page .oidc-brand img{width:36px;height:36px}.oidc-page .oidc-brand p{margin:0;font-family:"Instrument Serif",Georgia,"Times New Roman",serif;font-size:20px;font-weight:400;line-height:1.1}.oidc-page section{padding:30px 32px 36px}.oidc-page section>p{line-height:1.5;color:#4a4540}.oidc-page form{margin-top:20px}.oidc-page label{display:block;margin:18px 0 7px;font-family:"IBM Plex Mono",ui-monospace,SFMono-Regular,monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#6b655f}.oidc-page input,.oidc-page button{width:100%;padding:12px 14px;border:1px solid #dfd9d2;border-radius:2px;font:inherit;background:#ffffff;color:#14110f}.oidc-page input:focus{outline:none;border-color:#14110f}.oidc-page button{margin-top:12px;background:#14110f;border-color:#14110f;color:#fbfaf8;cursor:pointer;font-weight:600}.oidc-page .secondary{background:transparent;border-color:#dfd9d2;color:#14110f;font-weight:500}.oidc-page .cancel{border-color:transparent;background:transparent;color:#6b655f;font-weight:500}.oidc-page .notice{margin:0 0 4px;padding:12px 14px;border:1px solid #e8d9d6;border-left:3px solid #b8352c;background:#fdf7f6;color:#8c2a22;border-radius:2px}.oidc-page .return{margin:0;font-size:13px;color:#6b655f}.oidc-page .field-head,.oidc-page .password-field{display:flex;align-items:flex-end;gap:12px}.oidc-page .field-head{justify-content:space-between}.oidc-page .field-head label{margin-bottom:7px}.oidc-page .field-link{font-size:13px;color:#6b655f}.oidc-page .password-field input{flex:1}.oidc-page .password-field button{width:auto;margin-top:0;background:transparent;border-color:#dfd9d2;color:#14110f;font-weight:500}.oidc-page .account-picker{display:grid;grid-template-columns:40px minmax(0,1fr) 24px;align-items:center;gap:12px;padding:12px 14px;border:1px solid #e4ded7;border-radius:2px;background:#f5f1ec}.oidc-page .account-avatar{display:grid;width:40px;height:40px;place-items:center;border-radius:50%;background:#14110f;color:#fbfaf8;font-size:16px;font-weight:600}.oidc-page .account-copy{display:flex;min-width:0;flex-direction:column;gap:2px}.oidc-page .account-copy small{font-size:12px;color:#6b655f}.oidc-page .account-email{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.oidc-page .account-check{font-size:18px;font-weight:600}.oidc-page .permission-title{margin:22px 0 8px;font-family:"IBM Plex Mono",ui-monospace,SFMono-Regular,monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#6b655f}.oidc-page .permission-list{margin:0;padding:10px 14px 10px 32px;border:1px solid #e4ded7;border-radius:2px}.oidc-page .permission-list li{padding:3px 0}.oidc-page .account-switch{text-align:left}.oidc-page .agreement-choice{display:flex;align-items:flex-start;gap:10px;margin:20px 0 8px}.oidc-page .agreement-choice input{width:auto;accent-color:#14110f}.oidc-page .fineprint{margin:6px 0;font-size:13px;color:#6b655f}.oidc-page a{color:#14110f;text-decoration:underline;text-decoration-color:#dfd9d2;text-underline-offset:3px}@media(max-width:700px){.oidc-page{min-height:100vh;border:0}.oidc-page .oidc-brand{padding:14px 20px}.oidc-page section{padding:24px 20px 30px}.oidc-page section>h1{font-size:28px}}.oidc-page .divider{display:flex;align-items:center;gap:12px;margin:20px 0 0;font-family:"IBM Plex Mono",ui-monospace,SFMono-Regular,monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#6b655f}.oidc-page .divider::before,.oidc-page .divider::after{content:"";flex:1;height:1px;background:#e4ded7}.oidc-page button:disabled{opacity:.45;cursor:not-allowed}.oidc-page .agreement-choice a{font-weight:600}.oidc-page.oidc-page :is(h1,p,small,strong,a,li,span,input,button){letter-spacing:normal;text-transform:none;text-wrap:wrap}.oidc-page.oidc-page :is(p,small,strong,a,li,span,input,button){font-family:inherit}.oidc-page.oidc-page{margin:0 auto;max-width:none;padding:0}.oidc-page.oidc-page :is(h1,li,strong){color:inherit}.oidc-page.oidc-page label:not(.agreement-choice){font-family:"IBM Plex Mono",ui-monospace,SFMono-Regular,monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#6b655f;margin:18px 0 7px}.oidc-page.oidc-page .agreement-choice{margin:20px 0 8px;font-family:inherit;font-size:14px;letter-spacing:normal;text-transform:none;color:#14110f}.oidc-page.oidc-page h1{font-family:"Instrument Serif",Georgia,"Times New Roman",serif;font-weight:400;font-size:32px;line-height:1.1;margin:0 0 10px;color:#14110f}.oidc-page.oidc-page .fineprint,.oidc-page.oidc-page .return,.oidc-page.oidc-page .field-link{color:#6b655f}`;
84
+ const documentStyles = `body{margin:0;padding:24px;background:#fbfaf8}@media(max-width:700px){body{padding:0}}`;
85
85
  const passkeyDoor = (page) => page.passkey
86
86
  ? `<button class="passkey" name="action" value="${escape(passkeyDoorModel.value)}" data-passkey-options="${escape(JSON.stringify(page.passkey.options))}" formnovalidate>${escape(passkeyDoorModel.label)}</button><input type="hidden" name="passkeyTicket" value="${escape(page.passkey.ticket)}"><input type="hidden" name="passkey" value=""><p class="divider"><span>${escape(emailDividerLabel)}</span></p>`
87
87
  : "";
@@ -103,10 +103,17 @@ const consentFields = (page) => {
103
103
  const identity = page.recognisedEmail
104
104
  ? `<div class="account-picker"><span class="account-avatar" aria-hidden="true">${escape(initial)}</span><span class="account-copy"><small>Signed in with Fidj</small><strong class="account-email">${escape(page.recognisedEmail)}</strong></span><span class="account-check" aria-hidden="true">✓</span></div>`
105
105
  : "";
106
- const agreementChoice = page.agreement && page.agreementHref
107
- ? `<label class="agreement-choice"><input type="checkbox" name="terms" value="true" required> <span>I accept the <a class="agreement-document" href="${escape(page.agreementHref)}" target="_blank" rel="noopener noreferrer">service agreement · version ${escape(page.agreement.version)} ↗</a></span></label>`
108
- : `<label class="agreement-choice"><input type="checkbox" name="terms" value="true" required> ${escape(agreement.checkboxLabel)}</label>`;
109
- return `${identity}<p class="permission-title">${escape(page.appTitle)} will receive:</p><ul class="permission-list">${(page.scopes || []).map((scope) => `<li>${escape(scope)}</li>`).join("")}</ul>${agreementChoice}<button name="action" value="continue" disabled>Allow and continue</button><button class="secondary account-switch" name="action" value="switch" formnovalidate>Use another account</button><button class="cancel" name="action" value="cancel" formnovalidate>Cancel</button>`;
106
+ // Already on file at this version: stated, with its link, and nothing to
107
+ // tick — the screen then asks only which account.
108
+ const onFile = page.agreementAccepted && page.agreement
109
+ ? `<p class="fineprint">You accepted the ${page.agreementHref ? `<a class="agreement-document" href="${escape(page.agreementHref)}" target="_blank" rel="noopener noreferrer">service agreement · version ${escape(page.agreement.version)} ↗</a>` : `service agreement · version ${escape(page.agreement.version)}`}.</p>`
110
+ : "";
111
+ const agreementChoice = onFile
112
+ ? onFile
113
+ : page.agreement && page.agreementHref
114
+ ? `<label class="agreement-choice"><input type="checkbox" name="terms" value="true" required> <span>I accept the <a class="agreement-document" href="${escape(page.agreementHref)}" target="_blank" rel="noopener noreferrer">service agreement · version ${escape(page.agreement.version)} ↗</a></span></label>`
115
+ : `<label class="agreement-choice"><input type="checkbox" name="terms" value="true" required> ${escape(agreement.checkboxLabel)}</label>`;
116
+ return `${identity}<p class="permission-title">${escape(page.appTitle)} will receive:</p><ul class="permission-list">${(page.scopes || []).map((scope) => `<li>${escape(scope)}</li>`).join("")}</ul>${agreementChoice}<button name="action" value="continue"${onFile ? "" : " disabled"}>Allow and continue</button><button class="secondary account-switch" name="action" value="switch" formnovalidate>Use another account</button><button class="cancel" name="action" value="cancel" formnovalidate>Cancel</button>`;
110
117
  };
111
118
  function interactionCopy(page) {
112
119
  const waiting = page.mode === "waiting";
@@ -143,4 +150,4 @@ export function oidcInteractionPage(page) {
143
150
  : '<script src="/oidc/assets/entry.js" defer></script>';
144
151
  return `<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>${copy.title} · Fidj</title><style>${documentStyles}${oidcInteractionStyles}</style><main>${oidcInteractionMarkup(page)}</main>${script}</html>`;
145
152
  }
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsY0FBYyxFQUNkLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUNsQixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBNEJsQyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BMkUvQixDQUFDO0FBRVAsMkVBQTJFO0FBQzNFLDRFQUE0RTtBQUM1RSwyRUFBMkU7QUFDM0UscUNBQXFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLGlnSUFBaWdJLENBQUM7QUFDdmlJLE1BQU0sY0FBYyxHQUFHLHdGQUF3RixDQUFDO0FBRWhILE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBeUIsRUFBRSxFQUFFLENBQ2hELElBQUksQ0FBQyxPQUFPO0lBQ1YsQ0FBQyxDQUFDLGdEQUFnRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLDJCQUEyQixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLG9CQUFvQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLDZEQUE2RCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsMkVBQTJFLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhO0lBQ2xaLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFFVCxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQXlCLEVBQUUsRUFBRTtJQUNoRCxNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxFQUFF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
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsY0FBYyxFQUNkLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUNsQixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBK0JsQyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BMkUvQixDQUFDO0FBRVAsMkVBQTJFO0FBQzNFLDRFQUE0RTtBQUM1RSwyRUFBMkU7QUFDM0UscUNBQXFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLGs1SkFBazVKLENBQUM7QUFDeDdKLE1BQU0sY0FBYyxHQUFHLHdGQUF3RixDQUFDO0FBRWhILE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBeUIsRUFBRSxFQUFFLENBQ2hELElBQUksQ0FBQyxPQUFPO0lBQ1YsQ0FBQyxDQUFDLGdEQUFnRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLDJCQUEyQixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLG9CQUFvQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLDZEQUE2RCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsMkVBQTJFLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhO0lBQ2xaLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFFVCxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQXlCLEVBQUUsRUFBRTtJQUNoRCxNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxFQUFF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
package/style.css CHANGED
@@ -1301,3 +1301,129 @@ button.quiet {
1301
1301
  padding: 3px 7px;
1302
1302
  white-space: nowrap;
1303
1303
  }
1304
+
1305
+ /* The member card a generated app draws on its account screen: the same
1306
+ * reading as Fidj's GDPR card — the agreement with its ground, each optional
1307
+ * choice as a switch, then history, export and the way out. */
1308
+ .member-rows {
1309
+ border: 1px solid var(--fidj-line);
1310
+ border-radius: var(--fidj-radius);
1311
+ background: var(--fidj-surface);
1312
+ margin: 12px 0 16px;
1313
+ }
1314
+ .member-row,
1315
+ .member-rows .member-row {
1316
+ display: flex;
1317
+ align-items: center;
1318
+ justify-content: space-between;
1319
+ gap: 16px;
1320
+ padding: 14px 16px;
1321
+ margin: 0;
1322
+ border-bottom: 1px solid var(--fidj-line-soft);
1323
+ font-family: var(--fidj-font-sans);
1324
+ font-size: 14px;
1325
+ letter-spacing: 0;
1326
+ text-transform: none;
1327
+ color: var(--fidj-text);
1328
+ }
1329
+ .member-row:last-child {
1330
+ border-bottom: 0;
1331
+ }
1332
+ .member-row > div {
1333
+ display: flex;
1334
+ flex-direction: column;
1335
+ gap: 4px;
1336
+ min-width: 0;
1337
+ }
1338
+ .member-row small {
1339
+ color: var(--fidj-text-faint);
1340
+ font-size: 12.5px;
1341
+ }
1342
+ .member-row > button {
1343
+ flex: none;
1344
+ width: auto;
1345
+ margin: 0;
1346
+ }
1347
+ .member-row .nosw {
1348
+ max-width: 190px;
1349
+ text-align: right;
1350
+ }
1351
+ .basis {
1352
+ align-self: flex-start;
1353
+ font-family: var(--fidj-font-mono);
1354
+ font-size: 10px;
1355
+ letter-spacing: 0.06em;
1356
+ text-transform: uppercase;
1357
+ padding: 2px 7px;
1358
+ border: 1px solid var(--fidj-line);
1359
+ color: var(--fidj-text-faint);
1360
+ text-decoration: none;
1361
+ }
1362
+ .basis.consent {
1363
+ color: var(--fidj-ok);
1364
+ border-color: var(--fidj-ok);
1365
+ }
1366
+ .switch {
1367
+ display: flex;
1368
+ flex: none;
1369
+ align-items: center;
1370
+ gap: 9px;
1371
+ }
1372
+ .switch-state {
1373
+ min-width: 24px;
1374
+ font-size: 13px;
1375
+ font-weight: 500;
1376
+ }
1377
+ input[role="switch"] {
1378
+ appearance: none;
1379
+ position: relative;
1380
+ width: 40px;
1381
+ height: 22px;
1382
+ margin: 0;
1383
+ padding: 0;
1384
+ border: 0;
1385
+ border-radius: 11px;
1386
+ background: var(--fidj-line-strong);
1387
+ cursor: pointer;
1388
+ transition: background 0.15s;
1389
+ }
1390
+ input[role="switch"]::after {
1391
+ content: "";
1392
+ position: absolute;
1393
+ top: 3px;
1394
+ left: 3px;
1395
+ width: 16px;
1396
+ height: 16px;
1397
+ border-radius: 50%;
1398
+ background: var(--fidj-surface);
1399
+ transition: left 0.15s;
1400
+ }
1401
+ input[role="switch"]:checked {
1402
+ background: var(--fidj-ok);
1403
+ }
1404
+ input[role="switch"]:checked::after {
1405
+ left: 21px;
1406
+ }
1407
+ input[role="switch"]:focus-visible {
1408
+ outline: 2px solid var(--fidj-ink);
1409
+ outline-offset: 2px;
1410
+ }
1411
+ .member-history {
1412
+ margin: 0 0 16px;
1413
+ font-size: 13px;
1414
+ color: var(--fidj-text-muted);
1415
+ }
1416
+ .member-history summary {
1417
+ cursor: pointer;
1418
+ font-weight: 500;
1419
+ color: var(--fidj-text);
1420
+ }
1421
+ .member-history p {
1422
+ margin: 6px 0;
1423
+ }
1424
+ .member-actions {
1425
+ display: flex;
1426
+ flex-wrap: wrap;
1427
+ gap: 8px;
1428
+ align-items: center;
1429
+ }