const h = require("hyperscript"); /** * Creates a header element with the given title and description. * * @param title {string} the title to display * @param description {string} the description to display * @returns {HTMLElement} a header element */ exports.header = function ({title, description}) { return h("header.header", h("section.container", h("h1", title), h("p", h("em", description)) ) ); } /** * Creates a footer element with the given data. * * @param [author] {string} the author * @param [authorURL] {string} the URL to link the author's name to * @param [license] {string} the type of license * @param [licenseURL] {string} the URL to the license file * @param [vcs] {string} the type of version control * @param [vcsURL] {string} the URL to the repository * @param [version] {string} the page version * @returns {HTMLElement} a footer element */ exports.footer = function ({author, authorURL, license, licenseURL, vcs, vcsURL, version}) { return h("footer.footer", h("section.container", footerLink("Made by ", author, authorURL, ". "), footerLink("Licensed under the ", license, licenseURL, ". "), footerLink("Source code available on ", vcs, vcsURL, ". "), h("div", version || "", {style: {"float": "right"}}) ) ); } /** * Constructs a link that is used in footers. * * @param prefix {string} the text to display before the text if the text is not undefined * @param text {string|undefined} the text to display, or `undefined` if the returned element should be empty * @param url {string|undefined} the URL to link the text to, or `undefined` if the text should not be a link * @param suffix {string} the text to display after the text if the text is not undefined * @returns {HTMLElement} a footer link element */ const footerLink = function (prefix, text, url, suffix) { if (text === undefined) return h("span"); return h("span", h("span", prefix), url !== undefined ? h("a", text, {href: url}) : h("span", text), h("span", suffix) ); }