import type { SVGProps } from 'react';

/**
 * Marchio EasyForma — tre righe di registro su un filo di margine:
 * la prima compilata, la seconda a metà, la terza che si chiude in una
 * spunta che atterra esattamente sulla riga di mezzo. Geometria identica a
 * `public/brand/mark.svg` (griglia 32, tratto 3.6, terminali tondi).
 *
 * Il colore arriva sempre da `currentColor`: imposta `text-*` sul contenitore
 * o passa una classe di colore. Senza `title` l'SVG è decorativo e viene
 * nascosto agli screen reader.
 */

export type BrandSvgProps = Omit<SVGProps<SVGSVGElement>, 'children'> & {
    /** Nome accessibile. Se assente il marchio è trattato come decorativo. */
    title?: string;
};

const MARK_PATHS = [
    'M6.2 5.6V26.4',
    'M6.2 5.6H23.4',
    'M6.2 16H16',
    'M6.2 26.4H16L25.8 16',
] as const;

function a11y(title?: string) {
    return title
        ? { role: 'img' as const, 'aria-label': title }
        : {
              role: 'presentation' as const,
              'aria-hidden': true as const,
              focusable: 'false' as const,
          };
}

export function EasyFormaMark({ className, title, ...props }: BrandSvgProps) {
    return (
        <svg
            className={className}
            viewBox="0 0 32 32"
            xmlns="http://www.w3.org/2000/svg"
            {...a11y(title)}
            {...props}
        >
            {title ? <title>{title}</title> : null}
            <g
                fill="none"
                stroke="currentColor"
                strokeWidth={3.6}
                strokeLinecap="round"
                strokeLinejoin="round"
            >
                {MARK_PATHS.map((d) => (
                    <path key={d} d={d} />
                ))}
            </g>
        </svg>
    );
}

/** Tracciati del wordmark "EasyForma" (Archivo 700, convertito in curve). */
const WORDMARK_PATH =
    'M37.6 24.75V7.25H51.57V10.36H41.42V14.27H50.4V17.35H41.42V21.61H51.73V24.75ZM57.87 25.05Q57.21 25.05 56.46 24.9Q55.7 24.75 55.04 24.35Q54.38 23.96 53.96 23.2Q53.54 22.45 53.54 21.28Q53.54 19.88 54.15 18.96Q54.76 18.04 55.9 17.52Q57.03 16.99 58.61 16.79Q60.19 16.59 62.11 16.59V15.59Q62.11 15.01 61.91 14.57Q61.72 14.14 61.25 13.88Q60.78 13.63 59.94 13.63Q59.1 13.63 58.57 13.83Q58.05 14.04 57.83 14.36Q57.62 14.67 57.62 15.06V15.36H54.17Q54.15 15.24 54.15 15.12Q54.15 15.01 54.15 14.83Q54.15 13.65 54.86 12.8Q55.58 11.95 56.88 11.49Q58.18 11.03 59.91 11.03Q61.77 11.03 63.04 11.51Q64.3 12 64.97 12.94Q65.65 13.88 65.65 15.31V21.41Q65.65 21.87 65.92 22.08Q66.19 22.3 66.52 22.3H67.36V24.62Q67.1 24.75 66.57 24.89Q66.03 25.03 65.27 25.03Q64.53 25.03 63.95 24.81Q63.38 24.59 63 24.2Q62.62 23.8 62.46 23.24H62.28Q61.85 23.78 61.23 24.19Q60.6 24.59 59.77 24.82Q58.94 25.05 57.87 25.05ZM59.07 22.38Q59.78 22.38 60.35 22.16Q60.91 21.94 61.29 21.57Q61.67 21.2 61.89 20.67Q62.11 20.13 62.11 19.52V18.78Q60.68 18.78 59.56 18.97Q58.43 19.16 57.78 19.62Q57.13 20.08 57.13 20.9Q57.13 21.36 57.36 21.69Q57.59 22.02 58.03 22.2Q58.46 22.38 59.07 22.38ZM74.17 25.05Q72.76 25.05 71.64 24.75Q70.52 24.44 69.73 23.89Q68.94 23.34 68.52 22.58Q68.1 21.81 68.1 20.85Q68.1 20.74 68.1 20.64Q68.1 20.54 68.12 20.49H71.54Q71.54 20.54 71.54 20.59Q71.54 20.64 71.54 20.69Q71.57 21.33 71.95 21.72Q72.33 22.12 72.96 22.3Q73.58 22.48 74.27 22.48Q74.88 22.48 75.45 22.36Q76.03 22.25 76.42 21.94Q76.82 21.64 76.82 21.15Q76.82 20.54 76.32 20.21Q75.82 19.88 75.02 19.67Q74.22 19.47 73.27 19.21Q72.41 19.01 71.54 18.74Q70.67 18.47 69.97 18.04Q69.27 17.61 68.84 16.91Q68.4 16.2 68.4 15.13Q68.4 14.09 68.86 13.31Q69.32 12.53 70.13 12.02Q70.93 11.51 72.01 11.27Q73.1 11.03 74.35 11.03Q75.52 11.03 76.54 11.27Q77.56 11.51 78.32 11.98Q79.09 12.46 79.52 13.16Q79.96 13.86 79.96 14.73Q79.96 14.9 79.96 15.06Q79.96 15.21 79.93 15.26H76.54V15.06Q76.54 14.6 76.26 14.28Q75.98 13.96 75.45 13.78Q74.93 13.6 74.19 13.6Q73.68 13.6 73.26 13.68Q72.84 13.76 72.53 13.91Q72.23 14.06 72.06 14.28Q71.9 14.5 71.9 14.8Q71.9 15.24 72.27 15.5Q72.64 15.77 73.25 15.95Q73.86 16.13 74.6 16.33Q75.52 16.59 76.53 16.83Q77.53 17.07 78.4 17.48Q79.27 17.89 79.8 18.64Q80.34 19.39 80.34 20.67Q80.34 21.89 79.87 22.73Q79.39 23.57 78.55 24.08Q77.71 24.59 76.59 24.82Q75.47 25.05 74.17 25.05ZM84.47 29.54Q83.53 29.54 82.9 29.4Q82.28 29.26 82.1 29.21V26.81H83.65Q84.29 26.81 84.8 26.52Q85.31 26.23 85.69 25.75Q86.08 25.28 86.25 24.75L81 11.33H84.75L87.04 17.53Q87.2 17.96 87.39 18.61Q87.58 19.26 87.78 19.97Q87.99 20.67 88.12 21.2H88.24Q88.34 20.85 88.47 20.36Q88.6 19.88 88.74 19.37Q88.88 18.86 89.02 18.38Q89.16 17.91 89.26 17.56L91.18 11.33H94.75L90.18 24.11Q89.8 25.23 89.3 26.21Q88.8 27.19 88.14 27.95Q87.48 28.7 86.57 29.12Q85.67 29.54 84.47 29.54ZM96.4 24.75V7.25H109.31V10.36H100.2V14.7H108.34V17.79H100.2V24.75ZM117.75 25.05Q115.55 25.05 114.02 24.3Q112.49 23.55 111.7 21.98Q110.91 20.41 110.91 18.04Q110.91 15.62 111.7 14.07Q112.49 12.53 114.02 11.78Q115.55 11.03 117.75 11.03Q119.99 11.03 121.51 11.78Q123.03 12.53 123.82 14.07Q124.61 15.62 124.61 18.04Q124.61 20.41 123.82 21.98Q123.03 23.55 121.51 24.3Q119.99 25.05 117.75 25.05ZM117.75 22.3Q118.92 22.3 119.62 21.87Q120.32 21.43 120.65 20.54Q120.98 19.65 120.98 18.35V17.73Q120.98 16.43 120.65 15.54Q120.32 14.65 119.62 14.2Q118.92 13.76 117.75 13.76Q116.6 13.76 115.9 14.2Q115.2 14.65 114.87 15.54Q114.53 16.43 114.53 17.73V18.35Q114.53 19.65 114.87 20.54Q115.2 21.43 115.9 21.87Q116.6 22.3 117.75 22.3ZM126.82 24.75V11.33H129.76L130.04 13.42H130.22Q130.47 12.76 130.88 12.21Q131.29 11.67 131.9 11.33Q132.51 11 133.33 11Q133.76 11 134.12 11.09Q134.47 11.18 134.65 11.26V14.47H133.56Q132.77 14.47 132.17 14.69Q131.57 14.9 131.16 15.36Q130.75 15.82 130.56 16.48Q130.37 17.15 130.37 18.04V24.75ZM136.13 24.75V11.33H139.06L139.34 13.17H139.52Q139.96 12.51 140.56 12.02Q141.16 11.54 141.91 11.28Q142.66 11.03 143.53 11.03Q144.8 11.03 145.73 11.54Q146.66 12.05 147.17 13.17H147.35Q147.79 12.51 148.4 12.02Q149.01 11.54 149.8 11.28Q150.59 11.03 151.48 11.03Q152.76 11.03 153.69 11.49Q154.62 11.95 155.15 12.98Q155.69 14.01 155.69 15.64V24.75H152.15V16.28Q152.15 15.64 152.01 15.2Q151.87 14.75 151.61 14.48Q151.36 14.22 150.97 14.09Q150.59 13.96 150.16 13.96Q149.44 13.96 148.88 14.34Q148.32 14.73 148 15.39Q147.68 16.05 147.68 16.92V24.75H144.14V16.28Q144.14 15.64 144 15.2Q143.86 14.75 143.6 14.48Q143.35 14.22 142.98 14.09Q142.61 13.96 142.15 13.96Q141.46 13.96 140.89 14.34Q140.31 14.73 140 15.39Q139.68 16.05 139.68 16.92V24.75ZM162.01 25.05Q161.35 25.05 160.6 24.9Q159.85 24.75 159.18 24.35Q158.52 23.96 158.1 23.2Q157.68 22.45 157.68 21.28Q157.68 19.88 158.29 18.96Q158.9 18.04 160.04 17.52Q161.17 16.99 162.75 16.79Q164.33 16.59 166.25 16.59V15.59Q166.25 15.01 166.06 14.57Q165.86 14.14 165.39 13.88Q164.92 13.63 164.08 13.63Q163.24 13.63 162.72 13.83Q162.19 14.04 161.98 14.36Q161.76 14.67 161.76 15.06V15.36H158.32Q158.29 15.24 158.29 15.12Q158.29 15.01 158.29 14.83Q158.29 13.65 159.01 12.8Q159.72 11.95 161.02 11.49Q162.32 11.03 164.05 11.03Q165.92 11.03 167.18 11.51Q168.44 12 169.12 12.94Q169.79 13.88 169.79 15.31V21.41Q169.79 21.87 170.06 22.08Q170.33 22.3 170.66 22.3H171.5V24.62Q171.25 24.75 170.71 24.89Q170.17 25.03 169.41 25.03Q168.67 25.03 168.1 24.81Q167.52 24.59 167.14 24.2Q166.76 23.8 166.6 23.24H166.43Q165.99 23.78 165.37 24.19Q164.74 24.59 163.91 24.82Q163.09 25.05 162.01 25.05ZM163.21 22.38Q163.93 22.38 164.49 22.16Q165.05 21.94 165.43 21.57Q165.81 21.2 166.03 20.67Q166.25 20.13 166.25 19.52V18.78Q164.82 18.78 163.7 18.97Q162.58 19.16 161.93 19.62Q161.28 20.08 161.28 20.9Q161.28 21.36 161.5 21.69Q161.73 22.02 162.17 22.2Q162.6 22.38 163.21 22.38Z';

/**
 * Lockup orizzontale: marchio + wordmark, entrambi in `currentColor`.
 * Geometria identica a `public/brand/logo.svg` (viewBox 0 0 175.9 32).
 * Per la versione a due colori del sito pubblico usa i file SVG statici.
 */
export function EasyFormaLogo({
    className,
    title = 'EasyForma',
    ...props
}: BrandSvgProps) {
    return (
        <svg
            className={className}
            viewBox="0 0 175.9 32"
            xmlns="http://www.w3.org/2000/svg"
            {...a11y(title)}
            {...props}
        >
            {title ? <title>{title}</title> : null}
            <g
                fill="none"
                stroke="currentColor"
                strokeWidth={3.6}
                strokeLinecap="round"
                strokeLinejoin="round"
            >
                {MARK_PATHS.map((d) => (
                    <path key={d} d={d} />
                ))}
            </g>
            <path d={WORDMARK_PATH} fill="currentColor" />
        </svg>
    );
}

export default EasyFormaLogo;
