import { COMPANY_ADDRESS, COMPANY_EMAIL, COMPANY_LEGAL_TYPE, COMPANY_NAME, COMPANY_NUMBER, COMPANY_NUMBER_LABEL, COMPANY_OWNER, COMPANY_TAGLINE, COMPANY_VAT_SINCE, EMAIL_LABEL, LOCATION_LABEL, SINCE_PREFIX, VAT_LABEL, } from "#configuration/strings/company.strings"; import { AUTHOR_MAIL } from "#assets/link.assets"; import { BADGE_LOGO } from "#assets/image.assets"; import { ICON_BASE_CLASS } from "#configuration/icons/element.icons"; import type { IconLink } from "#types/link.types"; import { SOCIAL_LINKS } from "#configuration/icons/company.icons"; import { createElement } from "#core/factories/element.factory"; const socialLink = function socialLink(link: IconLink): HTMLElement { return createElement("a", { attributes: { href: link.href, rel: "noopener noreferrer", target: "_blank", title: link.title }, children: [createElement("i", { className: `${ICON_BASE_CLASS} ${link.icon}` })], className: "company-social-link", }); }; const detail = function detail(label: string, value: Element | string): HTMLElement { return createElement("span", { children: [createElement("strong", { text: label }), " ", value] }); }; const details = function details(): HTMLElement { const mail = createElement("a", { attributes: { href: AUTHOR_MAIL }, text: COMPANY_EMAIL }); return createElement("div", { children: [ detail(`${COMPANY_LEGAL_TYPE}:`, COMPANY_OWNER), detail(LOCATION_LABEL, COMPANY_ADDRESS), detail(COMPANY_NUMBER_LABEL, COMPANY_NUMBER), detail(EMAIL_LABEL, mail), detail(VAT_LABEL, SINCE_PREFIX + COMPANY_VAT_SINCE), ], className: "company-details", }); }; export const createCompanyFooter = function createCompanyFooter(): HTMLElement { const logo = createElement("img", { attributes: { alt: COMPANY_NAME, src: BADGE_LOGO }, className: "company-logo", }); const identity = createElement("div", { children: [ createElement("span", { className: "company-name", text: COMPANY_NAME }), createElement("span", { className: "company-tagline", text: COMPANY_TAGLINE }), ], className: "company-info", }); const links = createElement("div", { children: SOCIAL_LINKS.map(socialLink), className: "company-links" }); return createElement("div", { children: [logo, identity, links, details()], className: "company-footer" }); };