/** * Shared Company Footer Configuration * * This configuration is shared across all Valtech products: * - ui-docs * - showcase * - myvaltech (company website) * * When links or social profiles change, update here and publish a new version. */ import type { CompanyFooterMetadata } from '../components/organisms/company-footer/types'; import type { LegalLinkService } from '../services/legal-link/legal-link.service'; /** * Social media links for Valtech */ export declare const VALTECH_SOCIAL_LINKS: { icon: string; url: string; name: string; }[]; /** * Footer logo configuration * Uses CSS variable for automatic theme-aware logo switching */ export declare const VALTECH_FOOTER_LOGO: { logoCssVariable: string; logoAlt: string; logoRoute: string; }; /** * Company link definition */ export interface CompanyLink { /** i18n key for the link text */ key: string; /** URL path (relative) or absolute URL */ url: string; /** * Hint for `LegalLinkService` about which app owns this link in a multi-app factory: * - `'legal'` — canonical legal content (terms, privacy, …) — lives on main site * - `'site'` — marketing/info pages (about, blog, …) — lives on main site * - `'support'` — support/help — typically per-app (each product has own support) * * In satellite apps with `provideValtechLegal({ baseUrl })`, links with kind * `'legal'` or `'site'` get rewritten to the main site URL. */ kind?: 'legal' | 'site' | 'support'; /** Force opens in a new tab. Resolver may also set this when rewriting cross-origin. */ external?: boolean; } /** * Company links organized by section */ export declare const VALTECH_COMPANY_LINKS: { legal: CompanyLink[]; support: CompanyLink[]; }; /** * i18n keys for the footer (Layout namespace) * These should be registered in each app's i18n config */ export declare const VALTECH_FOOTER_I18N: { es: { footerLeftTitle: string; footerRightTitle: string; aboutUs: string; privacyPolicy: string; termsConditions: string; cookiesPolicy: string; legalNotice: string; contactSupport: string; faq: string; feedback: string; copyrightText: string; }; en: { footerLeftTitle: string; footerRightTitle: string; aboutUs: string; privacyPolicy: string; termsConditions: string; cookiesPolicy: string; legalNotice: string; contactSupport: string; faq: string; feedback: string; copyrightText: string; }; }; /** * Default language selector configuration for footer */ export declare const VALTECH_LANGUAGE_SELECTOR: { mode: "default"; showFlags: boolean; showLabel: boolean; fill: "outline"; size: "default"; }; /** * Optional URL resolver applied per link (e.g. `LegalLinkService.resolve.bind(svc)`). * Returns `{ url, external? }` to allow cross-origin rewrites. */ export type CompanyLinkResolver = (link: CompanyLink) => { url: string; external?: boolean; }; /** * Helper to build footer links from company links config. * * @param links - Array of company links * @param t - Translation function (key: string) => string * @param resolver - Optional resolver — typically `(link) => ({ url: legalLink.resolve(link.url), external: legalLink.isExternal(link.url) && (link.kind === 'legal' || link.kind === 'site') })` to point cross-app legal/site links to the main site. * @returns Array of link objects ready for FooterLinksMetadata */ export declare function buildFooterLinks(links: CompanyLink[], t: (key: string) => string, resolver?: CompanyLinkResolver): Array<{ url: string; text: string; color: string; token: string; download: boolean; hoverable: boolean; target?: string; }>; /** * Translation helper for the `Layout` namespace — `(key) => translatedString`. * Typically `i18n.t.bind(i18n)` scoped to the footer namespace. */ export type LayoutTranslator = (key: string) => string; /** * Builds a `CompanyLinkResolver` that rewrites cross-app `legal`/`site` links to * the main brand site via `LegalLinkService`, leaving `support` (and any other) * links untouched. * * Satellite apps (showcase, sigify, …) wire `provideValtechSite(env)` so that * `legal`/`site` links resolve to the canonical main-site URLs; `support` links * stay per-app. This is the generic half of an app's footer resolver — apps that * need extra per-link overrides (e.g. redirecting `/feedback` to an authed route) * compose this with their own logic. * * @param legal Injected `LegalLinkService` (no-op when running as the main site). * @param locale Getter for the active locale (e.g. `() => i18n.lang()`) — appended * as `?lang=` when the resolved URL is cross-origin. * * @example * const base = buildLegalLinkResolver(legal, () => i18n.lang()); * const resolver: CompanyLinkResolver = (link) => * link.url === '/feedback' ? { url: '/app/feedback', external: false } : base(link); */ export declare function buildLegalLinkResolver(legal: LegalLinkService, locale: () => string): CompanyLinkResolver; /** * Builds the shared `CompanyFooterMetadata` used across Valtech apps (login, * legal, public landing, …) so the footer stays consistent. Assembles the * standard left/right link sections, logo, social links and language selector * from the shared config. * * Call from a `computed()` that reads the active language for reactivity. * * @param t Translation helper for the `Layout` namespace. * @param linkResolver Optional resolver applied to every footer link — typically * `buildLegalLinkResolver(...)` (or an app wrapper) to point `legal`/`site` * links at the main site when running as a satellite app. */ export declare function buildCompanyFooterProps(t: LayoutTranslator, linkResolver?: CompanyLinkResolver): CompanyFooterMetadata;