const { TemplateHelper: th } = require('@squeep/html-template-helper');
const { sessionNavLinks } = require('./helpers');
+/**
+ * @typedef {object} Context
+ * @property {string[]=} otpBlurb content accompanying otp entry
+ * @property {string} otpState packed otp state
+ */
+
+/**
+ * @alias {object} HtmlOptions
+ */
+
+/**
+ * @typedef {import('../session-manager').AppTemplateCallback} AppTemplateCallback
+ */
+
+
/**
* Login form, continued.
*/
+/**
+ *
+ * @param {Context} ctx context
+ * @param {HtmlOptions} options htmlOptions
+ * @returns {string} section
+ */
function otpSection(ctx, options) {
const otpBlurb = (options.otpBlurb || []).map((x) => '\t'.repeat(6) + x).join('\n');
return `\t\t\t<section class="otp">
/**
* Render 2fs form.
- * @param {Object} ctx
- * @param {String[]=} ctx.errors
- * @param {String} ctx.otpState
- * @param {Object} options
- * @param {String[]=} options.authenticator.otpBlurb
- * @param {String[]=} options.authenticator.loginBlurb
- * @param {Object} options.manager
- * @param {String} options.manager.pageTitle
- * @param {String=} options.manager.logoUrl
- * @param {Object} options.dingus
- * @param {String} options.dingus.selfBaseUrl
- * @param {() => {}} appCb
- * @returns {String}
+ * @param {Context} ctx context
+ * @param {object} options options
+ * @param {string[]=} options.authenticator.otpBlurb content accompanying otp entry
+ * @param {object} options.manager manager options
+ * @param {string} options.manager.pageTitle page title
+ * @param {string=} options.manager.logoUrl logo url
+ * @param {string=} options.manager.logoAlt logo alt text
+ * @param {object} options.dingus dingus options
+ * @param {string} options.dingus.selfBaseUrl root url
+ * @param {AppTemplateCallback} appCb function to mogrify htmlOptions
+ * @returns {string} page
*/
module.exports = (ctx, options, appCb = () => {}) => {
const pagePathLevel = 1;