function addShortcodes()

in _includes/config.ts [168:221]


function addShortcodes(eleventyConfig: any) {
	// short code
	eleventyConfig.addShortcode("cta", async function (msgOverride: any) {
		// @ts-ignore
		const callToAction = this.ctx.environments.callToAction;
		if (callToAction) {
			let { title, message, action, url, image } = callToAction;
			if (msgOverride) {
				message = msgOverride;
			}

			if (image) {
				image = `<figure class="media-left">
						<p class="image is-64x64">
							<img alt='call to action image' src='${image}'>
						</p>
					</figure>`;
			}

			let button = "";
			if (action && url) {
				const isUrlRelativeToBase = !url.includes("http");
				const formattedUrl = isUrlRelativeToBase
					? url.endsWith("/")
						? url
						: `${url}/`
					: url;
				button = `<p><a href="${formattedUrl}" class="mt-2 button is-info is-rounded" target="_blank">${action}</a></p>`;
			}

			return `
			<article class="message is-info">
				<div class="message-header">
					<p>${title}</p>
				</div>
				<div class="message-body">
					<div class="media">
						${image}
						<div class="media-content">
							<div class="content">
									${message}
									${button}
							</div>
						</div>
					</div>
				</div>
			</article>
			`;
		} else {
			// @ts-ignore
			console.error(`missing call to action in: ${this.page.inputPath}`);
		}
	});
}