const STYLESHEET = ` * { box-sizing: border-box; } body, html { margin: 0; padding: 0; width: 100%; min-height: 100%; } body { padding: 2vh; font-size: 2.2vh; } html { background-size: auto 100%; background-size: cover; background-position: center center; background-repeat: no-repeat; box-shadow: inset 0 0 0 2000px rgb(0 0 0 / 60%); } body { display: flex; font-family: 'Open Sans', Arial, sans-serif; color: white; } h1 { font-size: 4.5vh; font-weight: 700; } h2 { font-size: 2.2vh; font-weight: normal; font-style: italic; opacity: 0.8; } h3 { font-size: 2.2vh; } h1, h2, h3, p { margin: 0; text-shadow: 0 0 1vh rgba(0, 0, 0, 0.15); } p { font-size: 1.75vh; } ul { font-size: 1.75vh; margin: 0; margin-top: 1vh; padding-left: 3vh; } a { color: white } a.install-link { text-decoration: none } button { border: 0; outline: 0; color: white; background: #8A5AAB; padding: 1.2vh 3.5vh; margin: auto; text-align: center; font-family: 'Open Sans', Arial, sans-serif; font-size: 2.2vh; font-weight: 600; cursor: pointer; display: block; box-shadow: 0 0.5vh 1vh rgba(0, 0, 0, 0.2); transition: box-shadow 0.1s ease-in-out; } button:hover { box-shadow: none; } button:active { box-shadow: 0 0 0 0.5vh white inset; } #addon { width: 40vh; margin: auto; } .logo { height: 14vh; width: 14vh; margin: auto; margin-bottom: 3vh; } .logo img { width: 100%; } .name, .version { display: inline-block; vertical-align: top; } .name { line-height: 5vh; margin: 0; } .version { position: relative; line-height: 5vh; opacity: 0.8; margin-bottom: 2vh; } .contact { position: absolute; left: 0; bottom: 4vh; width: 100%; text-align: center; } .contact a { font-size: 1.4vh; font-style: italic; } .separator { margin-bottom: 4vh; } .form-element { margin-bottom: 2vh; } .label-to-top { margin-bottom: 2vh; } .label-to-right { margin-left: 1vh !important; } .full-width { width: 100%; } ` function landingTemplate(manifest) { const background = manifest.background || 'https://dl.strem.io/addon-background.jpg' const logo = manifest.logo || 'https://dl.strem.io/addon-logo.png' const contactHTML = manifest.contactEmail ? `

Contact ${manifest.name} creator:

${manifest.contactEmail}
` : '' const stylizedTypes = manifest.types .map(t => t[0].toUpperCase() + t.slice(1) + (t !== 'series' ? 's' : '')) let formHTML = '' let script = '' if ((manifest.config || []).length) { let options = '' manifest.config.forEach(elem => { const key = elem.key if (['text', 'number', 'password'].includes(elem.type)) { const isRequired = elem.required ? ' required' : '' const defaultHTML = elem.default ? ` value="${elem.default}"` : '' const inputType = elem.type options += `
${elem.title}
` } else if (elem.type === 'checkbox') { const isChecked = elem.default === 'checked' ? ' checked' : '' options += `
` } else if (elem.type === 'select') { const defaultValue = elem.default || (elem.options || [])[0] options += `
${elem.title}
` } }) if (options.length) { formHTML = `
${options}
` script += ` installLink.onclick = () => { return mainForm.reportValidity() } const updateLink = () => { const config = Object.fromEntries(new FormData(mainForm)) installLink.href = 'stremio://' + window.location.host + '/' + encodeURIComponent(JSON.stringify(config)) + '/manifest.json' } mainForm.onchange = updateLink ` } } return ` ${manifest.name} - Stremio Addon

${manifest.name}

v${manifest.version || '0.0.0'}

${manifest.description || ''}

This addon has more :

${formHTML} ${contactHTML}
` } module.exports = landingTemplate