Specification
- Built once in Brand and used by every site: the group bar, the endorsement, the group footer block with the unit directory, the AKRIBIS One module, the language switch, the legal line, the contact form, the 404 page and consent. Prototyped on this site first: this page shows them inside other brands, and this site runs them.
- The endorsement is the line "Una unidad de" ("A unit of", "Uma unidade da"; the Spanish decided in ADR-0005, the others proposed) followed by the AKRIBIS One lockup from the published file, all of it linking to akribis.one: at bar size with the solid ring, as a block with the spectrum, white on a dark ground. Never "Parte de", never "AKRIBIS · One" set in type, never a redrawn ring.
- The group bar sits above the header of every unit site, on AKRIBIS One's teal ink, identical on all: the endorsement at the start, the language switch at the end. The parent and AKRIBIS One do not carry it.
- The unit directory is the register in the grid order (ADR-0010): three categories, three units each, every mark in its colour from the published file, its verb and the link to its site. One component serves every site's footer and the directories of akribis.group and akribis.one; the site only chooses whether to show the verbs.
- The AKRIBIS One module on a unit's home: the ring with the spectrum, the slogan and the second line from the register in the page's language, and the link to akribis.one.
- The contact form: name, organisation, email, phone, about (a unit or the group), message and the consent line linking the privacy policy; every field labelled, with autocomplete and inputmode; a honeypot instead of a third-party captcha. It posts to the site's own /contact, which validates, relays to the CRM with the site's lead source and sends to the thank-you page in the same language. One implementation replaces today's seven copies, which post straight to Salesforce without consent.
- A component takes its colour from the brand file it sits in: wrapped in data-brand="<brand>" with all.css, its roles resolve to that brand; nothing is recoloured by hand.
- Every pattern renders a data-pattern marker; the anatomy (3.2) says where each is due and the checker (3.4) verifies it.
- Where they live and how they arrive (ADR-0031): in the @akribis/site package, built on every build with the brand's data inside. Its components are these patterns; its integration (akribis({ brand, kind, site })) sets the site up; its Shell.astro layout is the page; its Worker serves the site and receives the form; its checker runs after every build. This site uses the same components from the same package.
- The server side of /contact is the package's Worker, one per site: it drops what filled the honeypot, validates the required fields, relays to the CRM with the address and lead source the Worker's variables hold (CONTACT_RELAY, SF_OID, LEAD_SOURCE) and sends to the thank-you page in the same language. Without a relay it answers 503; it never loses a message silently. The HTML carries no CRM id and no third-party script.
- The patterns' texts (the skip link, the language switch, the form, the 404, the titles and descriptions of the shared pages) are Brand's data in brand/strings.yaml, published as /strings.json and inside the package; a site shows them and translates none.
To re-reason
- Consent: no site needs it today (nothing tracks); it is built when a script demands it.
- Templates for own content (product, service, case, article) and the WhatsApp button three sites float.
- Whether the ring turns in the sites' orbits (topic 2.2).
Evidence to audit
- src/components/patterns/ · brand/units.yaml (endorsement) · brand/anatomy.yaml
- Audit (2026-10-05): endorsement wording «Una unidad de AKRIBIS · One» (akribis_info, akiot_es, solfarma_com), «Parte de AKRIBIS · One» (akleia_info); Portuguese «Uma unidade da» (akiot) and «de» (solfarma); akribis_info hard-codes the Spanish in every language
- Audit: the contact form posts to webto.salesforce.com from the browser on akribis_info (4 copies) and akiot_es, with a reCAPTCHA script; akleia_info and solfarma_com relay through worker.js; akribis_one uses mailto; no consent checkbox anywhere; one retURL ignores the language
- Audit: 5 language switchers, 95 hand-copied brand SVGs in three folders, the same file up to 5 times with 2 different hashes
- AKRIBIS-Group/design@main · packages/ui/ (an earlier component package, never consumed)
Delivers
- The components in packages/site/src/components/, with live examples inside other brands
- the data-pattern markers
- the endorsement wording in the register and the strings in strings.json.