@holmdigital/engine 2.0.1 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,41 @@
1
+ {
2
+ "title": "Accessibility of {<website>}",
3
+ "intro": "This website is run by {<organisation>}. We want as many people as possible to be able to use it, and this document describes how {<website>} complies with the accessibility regulations, any known accessibility issues, and how you can report problems so that we can fix them.",
4
+ "sections": [
5
+ {
6
+ "id": "how-accessible",
7
+ "title": "How accessible is the website?",
8
+ "content": "{There are no known accessibility issues with this website./We know some parts of this website aren’t fully accessible. See the section on non-accessible content below for more information./We know some parts of this website aren’t fully accessible. See the section on non-accessible content below for more information.}"
9
+ },
10
+ {
11
+ "id": "what-to-do",
12
+ "title": "What to do if you can’t access parts of this website?",
13
+ "content": "If you need content from this website that is not accessible for you, but is not within the scope of the accessibility regulations as described below, please contact us.\n\n[Our normal response time is {<response time>}.]\n\n[You can also contact us in the following ways:\n\n* email {<email address>}\n* call {<telephone number>}]"
14
+ },
15
+ {
16
+ "id": "reporting",
17
+ "title": "Reporting accessibility problems with this website",
18
+ "content": "We’re always looking to improve the accessibility of this website. If you find any problems that aren’t listed on this page or if we’re not meeting the requirements of the accessibility regulations, contact us and let us know about the problem."
19
+ },
20
+ {
21
+ "id": "enforcement",
22
+ "title": "Enforcement procedure",
23
+ "content": "The {<enforcement_body>} is responsible for enforcing the web accessibility regulations. If you experience accessibility issues on our website, you can submit a complaint to {<enforcement_body>}.\n\nYou can also submit a complaint to {<enforcement_body>} if you think that our assessment of what constitutes a disproportionate burden should be reviewed, if you think that our accessibility statement is inadequate, or it you think that your request for excluded content in an accessible format has not been handled correctly."
24
+ },
25
+ {
26
+ "id": "technical",
27
+ "title": "Technical information about this website’s accessibility",
28
+ "content": "{This website is fully compliant with the accessibility regulations./This website is partially compliant with the accessibility regulations, due to the non-compliances listed below./This website is not compliant with the accessibility regulations. The non-accessible sections are listed below.}"
29
+ },
30
+ {
31
+ "id": "non-accessible",
32
+ "title": "Non-accessible content",
33
+ "content": "The content described below is, in one way or another, not fully accessible.\n\n[\n### Non-compliance with the accessibility regulations\n\n{<issues>}\n]"
34
+ },
35
+ {
36
+ "id": "testing",
37
+ "title": "How we tested this website",
38
+ "content": "{We have performed a self-assessment (internal testing) of {<website>}./{<third party>} has tested {<website>}./We have estimated the accessibility without testing.}\n\nThe last assessment was made on {<assessment date>}.\n\n[Assessment method: {<method>}]\n\nThe website was published on {<publish date>}.\n\nThe statement was last updated on {<update date>}."
39
+ }
40
+ ]
41
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "title": "Declaración de accesibilidad para {<webbplats>}",
3
+ "intro": "{<organisation>} se ha comprometido a hacer accesible su sitio web de conformidad con la legislación nacional que transpone la Directiva (UE) 2016/2102 del Parlamento Europeo y del Consejo. Esta declaración de accesibilidad se aplica a {<webbplats>}.",
4
+ "sections": [
5
+ {
6
+ "id": "how-accessible",
7
+ "title": "Situación de cumplimiento",
8
+ "content": "{Este sitio web es plenamente conforme con el estándar de accesibilidad./Este sitio web es parcialmente conforme con el estándar de accesibilidad debido a las faltas de conformidad que se indican a continuación./Este sitio web no es conforme con el estándar de accesibilidad. Los contenidos no accesibles se indican a continuación.}"
9
+ },
10
+ {
11
+ "id": "what-to-do",
12
+ "title": "Contenido no accesible",
13
+ "content": "El contenido que se recoge a continuación no es accesible por los siguientes motivos:\n\n[\n### Falta de conformidad con el estándar\n{<deficiencias>}\n]\n\n[Nuestro tiempo de respuesta normal es de {<svarstid>}.]\n\n[También puede contactar con nosotros de las siguientes maneras:\n\n* enviar un correo electrónico a {<e-mailadresse>}\n* llamar al {<telefoonnummer>}]"
14
+ },
15
+ {
16
+ "id": "reporting",
17
+ "title": "Mecanismo de comunicación y datos de contacto",
18
+ "content": "Nos esforzamos por mejorar constantemente la accesibilidad de nuestro sitio web. Si encuentra algún problema de accesibilidad, puede ponerse en contacto con nosotros para informarnos."
19
+ },
20
+ {
21
+ "id": "enforcement",
22
+ "title": "Procedimiento de aplicación",
23
+ "content": "El {<enforcement_body>} es responsable de supervisar los requisitos de accesibilidad. Si no ha recibido una respuesta satisfactoria a su notificación, puede ponerse en contacto con {<enforcement_body>}.\n\nTambién puede presentar una reclamación ante {<enforcement_body>} si considera que nuestra evaluación de lo que constituye una carga desproporcionada debe ser revisada, si encuentra deficiencias en nuestra declaración de accesibilidad o si considera que no hemos gestionado correctamente su solicitud de accesibilidad."
24
+ },
25
+ {
26
+ "id": "technical",
27
+ "title": "Información técnica sobre la accesibilidad del sitio web",
28
+ "content": "{Este sitio web es plenamente conforme./Este sitio web es parcialmente conforme debido a las deficiencias descritas a continuación./Este sitio web no es conforme.}"
29
+ },
30
+ {
31
+ "id": "testing",
32
+ "title": "Preparación de la presente declaración de accesibilidad",
33
+ "content": "{Hemos realizado una autoevaluación (prueba interna) del sitio web {<webbplats>}./Un {<tercero externo>} ha realizado una auditoría independiente del sitio web {<webbplats>}./Hemos estimado la accesibilidad sin realizar pruebas.}\n\nLa última evaluación se realizó el {<fecha_evaluacion>}.\n\n[Método de evaluación: {<metodo>}]\n\nEl sitio web se publicó el {<fecha_publicacion>}.\n\nLa declaración se actualizó por última vez el {<fecha_actualizacion>}."
34
+ }
35
+ ]
36
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "title": "Saavutettavuusseloste: {<webbplats>}",
3
+ "intro": "{<organisation>} on tämän verkkosivuston ylläpitäjä. Haluamme, että mahdollisimman monet voivat käyttää sivustoa. Tässä asiakirjassa kuvataan, miten {<webbplats>} täyttää digitaalisten palvelujen tarjoamisesta annetun lain vaatimukset, mahdolliset tiedossa olevat saavutettavuusongelmat ja miten voit ilmoittaa meille puutteista, jotta voimme korjata ne.",
4
+ "sections": [
5
+ {
6
+ "id": "how-accessible",
7
+ "title": "Kuinka saavutettava verkkosivusto on?",
8
+ "content": "{Tämän verkkosivuston saavutettavuudessa ei ole tiedossa olevia puutteita./Olemme tietoisia siitä, että osat verkkosivustosta eivät ole täysin saavutettavia. Lisätietoja on jäljempänä osiossa saavutettavuusvaatimusten vastainen sisältö./Olemme tietoisia siitä, että osat verkkosivustosta eivät ole täysin saavutettavia. Lisätietoja on jäljempänä osiossa saavutettavuusvaatimusten vastainen sisältö.}"
9
+ },
10
+ {
11
+ "id": "what-to-do",
12
+ "title": "Mitä voit tehdä, jos et pysty käyttämään osia verkkosivustosta?",
13
+ "content": "Jos tarvitset sisältöä verkkosivustolta {<webbplats>}, joka ei ole sinulle saavutettavissa, mutta joka on jätetty lain soveltamisalan ulkopuolelle jäljempänä kuvatulla tavalla, voit ilmoittaa siitä meille.\n\n[Vastausaika on yleensä {<svarstid>}.]\n\n[Voit myös ottaa meihin yhteyttä seuraavilla tavoilla:\n\n* lähetä sähköpostia osoitteeseen {<e-mailosoite>}\n* soita numeroon {<puhelinnumero>}]"
14
+ },
15
+ {
16
+ "id": "reporting",
17
+ "title": "Anna palautetta saavutettavuuspuutteista",
18
+ "content": "Pyrimme jatkuvasti parantamaan verkkosivuston saavutettavuutta. Jos havaitset ongelmia, joita ei ole kuvattu tällä sivulla, tai jos katsot, ettemme täytä lain vaatimuksia, ilmoita siitä meille, jotta saamme tietää ongelmasta."
19
+ },
20
+ {
21
+ "id": "enforcement",
22
+ "title": "Täytäntöönpanomenettely",
23
+ "content": "{<enforcement_body>} vastaa digitaalisten palvelujen saavutettavuutta koskevan lain valvonnasta. Voit tehdä ilmoituksen {<enforcement_body>}lle, jos katsot, että digitaalisessa palvelussamme on saavutettavuuspuutteita.\n\nVoit myös tehdä ilmoituksen {<enforcement_body>}lle, jos katsot, että arviomme kohtuuttomasta rasitteesta on tarkistettava, jos katsot saavutettavuusselosteessamme olevan puutteita tai jos katsot, ettemme ole käsitelleet saavutettavuuspyyntöäsi oikein."
24
+ },
25
+ {
26
+ "id": "technical",
27
+ "title": "Teknistä tietoa verkkosivuston saavutettavuudesta",
28
+ "content": "{Tämä verkkosivusto on täysin digitaalisten palvelujen tarjoamisesta annetun lain mukainen./Tämä verkkosivusto on osittain digitaalisten palvelujen tarjoamisesta annetun lain mukainen jäljempänä mainittujen puutteiden vuoksi./Tämä verkkosivusto ei ole digitaalisten palvelujen tarjoamisesta annetun lain mukainen. Puutteelliset osat on kuvattu jäljempänä.}"
29
+ },
30
+ {
31
+ "id": "non-accessible",
32
+ "title": "Saavutettavuusvaatimusten vastainen sisältö",
33
+ "content": "Jäljempänä mainittu sisältö ei ole täysin saavutettavaa.\n\n[\n### Puutteet lain vaatimusten täyttämisessä\n{<puutteet>}\n]"
34
+ },
35
+ {
36
+ "id": "testing",
37
+ "title": "Kuinka olemme testanneet verkkosivuston",
38
+ "content": "{Olemme tehneet itsearvion (sisäinen testaus) verkkosivustolle {<webbplats>}./{<ulkoinen taho>} on tehnyt riippumattoman tarkastuksen verkkosivustolle {<webbplats>}./Olemme arvioineet saavutettavuuden ilman testausta.}\n\nViimeisin arviointi on tehty {<arviointipäivä>}.\n\n[Arviointimenetelmä: {<metodi>}]\n\nVerkkosivusto on julkaistu {<julkaisupäivä>}.\n\nSeloste on päivitetty viimeksi {<päivityspäivä>}."
39
+ }
40
+ ]
41
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "title": "Déclaration d'accessibilité pour {<webbplats>}",
3
+ "intro": "{<organisation>} s'engage à rendre son site internet accessible conformément à l'article 47 de la loi n° 2005-102 du 11 février 2005. Cette déclaration d'accessibilité s'applique à {<webbplats>}.",
4
+ "sections": [
5
+ {
6
+ "id": "how-accessible",
7
+ "title": "État de conformité",
8
+ "content": "{Ce site est totalement conforme avec le référentiel général d'amélioration de l'accessibilité (RGAA)./Ce site est partiellement conforme avec le référentiel général d'amélioration de l'accessibilité (RGAA) en raison des non-conformités énumérées ci-dessous./Ce site n'est pas conforme avec le référentiel général d'amélioration de l'accessibilité (RGAA). Les contenus non accessibles sont énumérés ci-dessous.}"
9
+ },
10
+ {
11
+ "id": "what-to-do",
12
+ "title": "Contenus non accessibles",
13
+ "content": "Les contenus listés ci-dessous ne sont pas accessibles pour les raisons suivantes :\n\n[\n### Non-conformité avec le RGAA\n{<défauts>}\n]\n\n[Notre délai de réponse habituel est de {<svarstid>}.]\n\n[Vous pouvez également nous contacter des manières suivantes :\n\n* envoyer un e-mail à {<e-mailadresse>}\n* appeler le {<telefoonnummer>}]"
14
+ },
15
+ {
16
+ "id": "reporting",
17
+ "title": "Retour d'information et contact",
18
+ "content": "Nous nous efforçons d'améliorer constamment l'accessibilité de notre site. Si vous constatez un défaut de conformité, vous pouvez nous contacter pour nous en informer."
19
+ },
20
+ {
21
+ "id": "enforcement",
22
+ "title": "Voies de recours",
23
+ "content": "Le {<enforcement_body>} est responsable du contrôle de la conformité aux exigences d'accessibilité. Si vous ne recevez pas de réponse satisfaisante à votre signalement, vous pouvez contacter {<enforcement_body>}.\n\nVous pouvez également déposer une plainte auprès de {<enforcement_body>} si vous estimez que notre évaluation de la charge disproportionnée doit être revue, si vous constatez des défauts dans notre déclaration d'accessibilité ou si vous estimez que nous n'avons pas traité correctement votre demande de mise en accessibilité."
24
+ },
25
+ {
26
+ "id": "technical",
27
+ "title": "Informations techniques sur l'accessibilité du site",
28
+ "content": "{Ce site est totalement conforme./Ce site est partiellement conforme en raison des défauts décrits ci-dessous./Ce site n'est pas conforme.}"
29
+ },
30
+ {
31
+ "id": "testing",
32
+ "title": "Établissement de cette déclaration d'accessibilité",
33
+ "content": "{Nous avons réalisé une auto-évaluation (test interne) du site {<webbplats>}./Un {<tiers externe>} a réalisé un audit indépendant du site {<webbplats>}./Nous avons estimé l'accessibilité sans audit.}\n\nLa dernière évaluation a été réalisée le {<date_evaluation>}.\n\n[Méthode d'évaluation : {<méthode>}]\n\nLe site a été publié le {<date_publication>}.\n\nLa déclaration a été mise à jour pour la dernière fois le {<date_mise_a_jour>}."
34
+ }
35
+ ]
36
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "title": "Toegankelijkheidsverklaring voor {<webbplats>}",
3
+ "intro": "{<organisation>} is verantwoordelijk voor deze website. Wij willen dat iedereen onze website kan gebruiken. In dit document wordt beschreven hoe {<webbplats>} voldoet aan de wet digitale toegankelijkheid overheid, welke toegankelijkheidsproblemen bekend zijn en hoe u eventuele gebreken aan ons kunt melden, zodat we deze kunnen verhelpen.",
4
+ "sections": [
5
+ {
6
+ "id": "how-accessible",
7
+ "title": "Hoe toegankelijk is de website?",
8
+ "content": "{Er zijn geen toegankelijkheidsproblemen bekend bij deze website./Wij zijn ervan op de hoogte dat delen van de website niet volledig toegankelijk zijn. Zie de sectie over inhoud die niet toegankelijk is hieronder voor meer informatie./Wij zijn ervan op de hoogte dat delen van de website niet volledig toegankelijk zijn. Zie de sectie over inhoud die niet toegankelijk is hieronder voor meer informatie.}"
9
+ },
10
+ {
11
+ "id": "what-to-do",
12
+ "title": "Wat kunt u doen als u delen van de website niet kunt gebruiken?",
13
+ "content": "Als u inhoud van {<webbplats>} nodig heeft die voor u niet toegankelijk is, maar die buiten het toepassingsgebied van de wet valt zoals hieronder beschreven, kunt u dit aan ons melden.\n\n[De reactietijd is normaal gesproken {<svarstid>}.]\n\n[U kunt ook op de volgende manieren contact met ons opnemen:\n\n* stuur een e-mail naar {<e-mailadres>}\n* bel naar {<telefoonnummer>}]"
14
+ },
15
+ {
16
+ "id": "reporting",
17
+ "title": "Meld toegankelijkheidsproblemen",
18
+ "content": "Wij streven er voortdurend naar de toegankelijkheid van onze website te verbeteren. Als u problemen tegenkomt die niet op deze pagina worden vermeld, of als u van mening bent dat wij niet aan de wettelijke eisen voldoen, laat het ons dan weten, zodat we op de hoogte zijn van het probleem."
19
+ },
20
+ {
21
+ "id": "enforcement",
22
+ "title": "Handhavingsprocedure",
23
+ "content": "{<enforcement_body>} is verantwoordelijk voor het toezicht op de naleving van de wet digitale toegankelijkheid overheid. U kunt een klacht indienen bij {<enforcement_body>} als u van mening bent dat onze digitale dienstverlening gebreken vertoont op het gebied van toegankelijkheid.\n\nU kunt ook een klacht indienen bij {<enforcement_body>} als u vindt dat ons oordeel over wat een onevenredige last is, moet worden herzien, als u vindt dat onze toegankelijkheidsverklaring gebreken vertoont of als u vindt dat wij uw verzoek om toegankelijkmaking niet correct hebben behandeld."
24
+ },
25
+ {
26
+ "id": "technical",
27
+ "title": "Technische informatie over de toegankelijkheid van de website",
28
+ "content": "{Deze website is volledig in overeenstemming met de wet digitale toegankelijkheid overheid./Deze website is gedeeltelijk in overeenstemming met de wet digitale toegankelijkheid overheid, vanwege de hieronder beschreven gebreken./Deze website is niet in overeenstemming met de wet digitale toegankelijkheid overheid. De niet-toegankelijke delen worden hieronder beschreven.}"
29
+ },
30
+ {
31
+ "id": "non-accessible",
32
+ "title": "Inhoud die niet toegankelijk is",
33
+ "content": "De hieronder beschreven inhoud is op de een of andere manier niet volledig toegankelijk.\n\n[\n### Niet-naleving van de wettelijke eisen\n{<gebreken>}\n]"
34
+ },
35
+ {
36
+ "id": "testing",
37
+ "title": "Hoe wij de website hebben getest",
38
+ "content": "{Wij hebben een zelfevaluatie (interne test) uitgevoerd van {<webbplats>}./{<externe partij>} heeft een onafhankelijke controle uitgevoerd van {<webbplats>}./Wij hebben de toegankelijkheid ingeschat zonder te testen.}\n\nDe laatste beoordeling is uitgevoerd op {<beoordelingsdatum>}.\n\n[Beoordelingsmethode: {<methode>}]\n\nDe website is gepubliceerd op {<publicatiedatum>}.\n\nDe verklaring is voor het laatst bijgewerkt op {<updatedatum>}."
39
+ }
40
+ ]
41
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "title": "Tilgjengelighet for {<nettsted>}",
3
+ "intro": "{<organisasjon>} står bak dette nettstedet. Vi ønsker at flest mulig skal kunne bruke det. Dette dokumentet beskriver hvordan {<nettsted>} oppfyller lov om universell utforming av IKT-løsninger, eventuelle kjente tilgjengelighetsproblemer og hvordan du kan rapportere mangler til oss slik at vi kan utbedre dem.",
4
+ "sections": [
5
+ {
6
+ "id": "how-accessible",
7
+ "title": "Hvor tilgjengelig er nettstedet?",
8
+ "content": "{Vi har ingen kjente mangler i tilgjengeligheten for dette nettstedet./Vi er klar over at deler av nettstedet ikke er fullt ut tilgjengelig. Se avsnittet om innhold som ikke er tilgjengelig nedenfor for mer informasjon./Vi er klar over at deler av nettstedet ikke er fullt ut tilgjengelig. Se avsnittet om innhold som ikke er tilgjengelig nedenfor for mer informasjon.}"
9
+ },
10
+ {
11
+ "id": "what-to-do",
12
+ "title": "Hva kan du gjøre hvis du ikke kan bruke deler av nettstedet?",
13
+ "content": "Hvis du trenger innhold fra {<nettsted>} som ikke er tilgjengelig for deg, men som er unntatt fra lovens anvendelsesområde som beskrevet nedenfor, kan du melde fra til oss.\n\n[Svartiden er normalt {<svartid>}.]\n\n[Du kan også kontakte oss på følgende måter:\n\n* send e-post til {<e-postadresse>}\n* ring {<telefonnummer>}]"
14
+ },
15
+ {
16
+ "id": "reporting",
17
+ "title": "Rapporter mangler ved nettstedets tilgjengelighet",
18
+ "content": "Vi jobber kontinuerlig med å forbedre nettstedets tilgjengelighet. Hvis du oppdager problemer som ikke er beskrevet på denne siden, eller hvis du mener at vi ikke oppfyller lovens krav, meld fra til oss slik at vi får vite om problemet."
19
+ },
20
+ {
21
+ "id": "enforcement",
22
+ "title": "Tilsyn",
23
+ "content": "{<enforcement_body>} har ansvaret for tilsyn med lov om universell utforming av IKT-løsninger. Du kan klage til {<enforcement_body>} hvis du mener at vår digitale tjeneste har mangler i tilgjengelighet.\n\nDu kan også klage til {<enforcement_body>} hvis du mener at vår vurdering av hva som er uforholdsmessig byrdefullt bør overproves, hvis du mener at vår tilgjengelighetserklæring har mangler eller hvis du mener at vi ikke har håndtert din forespørsel om tilgjengeliggjøring korrekt."
24
+ },
25
+ {
26
+ "id": "technical",
27
+ "title": "Teknisk informasjon om nettstedets tilgjengelighet",
28
+ "content": "{Dette nettstedet er helt i samsvar med lov om universell utforming av IKT-løsninger./Dette nettstedet er delvis i samsvar med lov om universell utforming av IKT-løsninger, på grunn av manglene beskrevet nedenfor./Dette nettstedet er ikke i samsvar med lov om universell utforming av IKT-løsninger. Utilgjengelige deler er beskrevet nedenfor.}"
29
+ },
30
+ {
31
+ "id": "non-accessible",
32
+ "title": "Innhold som ikke er tilgjengelig",
33
+ "content": "Innholdet som er beskrevet nedenfor er på en eller annen måte ikke fullt ut tilgjengelig.\n\n[\n### Manglende samsvar med lovkravene\n{<mangler>}\n]"
34
+ },
35
+ {
36
+ "id": "testing",
37
+ "title": "Hvordan vi har testet nettstedet",
38
+ "content": "{Vi har gjort en egenevaluering (intern testing) av {<nettsted>}./{<ekstern aktor>} har gjort en uavhengig revisjon av {<nettsted>}./Vi har anslått tilgjengeligheten uten testing.}\n\nSiste vurdering ble gjort den {<vurderingsdato>}.\n\n[Vurderingsmetode: {<metode>}]\n\nNettstedet ble publisert den {<publiseringsdato>}.\n\nErklæringen ble sist oppdatert den {<oppdateringsdato>}."
39
+ }
40
+ ]
41
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "title": "Tillgänglighet för {<webbplats>}",
3
+ "intro": "{<organisation>} står bakom den här webbplatsen. Vi vill att så många som möjligt ska kunna använda den. Det här dokumentet beskriver hur {<webbplats>} uppfyller lagen om tillgänglighet till digital offentlig service, eventuella kända tillgänglighetsproblem och hur du kan rapportera brister till oss så att vi kan åtgärda dem.",
4
+ "sections": [
5
+ {
6
+ "id": "how-accessible",
7
+ "title": "Hur tillgänglig är webbplatsen?",
8
+ "content": "{Vi har inga kända brister i tillgängligheten för den här webbplatsen./Vi är medvetna om att delar av webbplatsen inte är helt tillgängliga. Se avsnittet om innehåll som inte är tillgängligt nedan för mer information./Vi är medvetna om att delar av webbplatsen inte är helt tillgängliga. Se avsnittet om innehåll som inte är tillgängligt nedan för mer information.}"
9
+ },
10
+ {
11
+ "id": "what-to-do",
12
+ "title": "Vad kan du göra om du inte kan använda delar av webbplatsen?",
13
+ "content": "Om du behöver innehåll från {<webbplats>} som inte är tillgängligt för dig, men som är undantaget från lagens tillämpningsområde enligt beskrivning nedan, kan du meddela oss.\n\n[Svarstiden är normalt {<svarstid>}.]\n\n[Du kan också kontakta oss på följande sätt:\n\n* skicka e-post till {<e-postadress>}\n* ring {<telefonnummer>}]"
14
+ },
15
+ {
16
+ "id": "reporting",
17
+ "title": "Rapportera brister i webbplatsens tillgänglighet",
18
+ "content": "Vi strävar hela tiden efter att förbättra webbplatsens tillgänglighet. Om du upptäcker problem som inte är beskrivna på den här sidan, eller om du anser att vi inte uppfyller lagens krav, meddela oss så att vi får veta att problemet finns."
19
+ },
20
+ {
21
+ "id": "enforcement",
22
+ "title": "Tillsyn",
23
+ "content": "{<enforcement_body>} har ansvaret för tillsyn över lagen om tillgänglighet till digital offentlig service. Du kan anmäla till {<enforcement_body>} om du tycker att vår digitala service har brister i tillgänglighet.\n\nDu kan också anmäla till {<enforcement_body>} om du tycker att vår bedömning av vad som är oskäligt betungande ska granskas, om du tycker att vår tillgänglighetsredogörelse har brister eller om du tycker att vi inte har hanterat din begäran om tillgängliggörande korrekt."
24
+ },
25
+ {
26
+ "id": "technical",
27
+ "title": "Teknisk information om webbplatsens tillgänglighet",
28
+ "content": "{Den här webbplatsen är helt förenlig med lagen om tillgänglighet till digital offentlig service./Den här webbplatsen är delvis förenlig med lagen om tillgänglighet till digital offentlig service, på grund av de brister som beskrivs nedan./Den här webbplatsen är inte förenlig med lagen om tillgänglighet till digital offentlig service. Otillgängliga delar beskrivs nedan.}"
29
+ },
30
+ {
31
+ "id": "non-accessible",
32
+ "title": "Innehåll som inte är tillgängligt",
33
+ "content": "Det innehåll som beskrivs nedan är på ett eller annat sätt inte helt tillgängligt.\n\n[\n### Bristande förenlighet med lagkraven\n{<brister>}\n]"
34
+ },
35
+ {
36
+ "id": "testing",
37
+ "title": "Hur vi testat webbplatsen",
38
+ "content": "{Vi har gjort en självskattning (intern testning) av {<webbplats>}./{<extern aktör>} har gjort en oberoende granskning av {<webbplats>}./Vi har uppskattat tillgängligheten utan granskning.}\n\nSenaste bedömningen gjordes den {<bedömningsdatum>}.\n\n[Granskningsmetod: {<metod>}]\n\nWebbplatsen publicerades den {<publiceringsdatum>}.\n\nRedogörelsen uppdaterades senast den {<uppdateringsdatum>}."
39
+ }
40
+ ]
41
+ }
package/dist/index.js CHANGED
@@ -990,6 +990,7 @@ init_i18n();
990
990
  var import_react = __toESM(require("react"));
991
991
  var import_server = require("react-dom/server");
992
992
  var import_components = require("@holmdigital/components");
993
+ var import_standards = require("@holmdigital/standards");
993
994
  var import_promises = __toESM(require("fs/promises"));
994
995
  var import_path = __toESM(require("path"));
995
996
 
@@ -1005,6 +1006,43 @@ function generateBadgeUrl(score) {
1005
1006
 
1006
1007
  // src/reporting/statement-generator.ts
1007
1008
  async function generateStatementContent(result, lang = "en", format = "html", metadata) {
1009
+ let template;
1010
+ const possibleTemplatePaths = [
1011
+ import_path.default.join(__dirname, "templates", `${lang}.json`),
1012
+ import_path.default.join(__dirname, "../src/reporting/templates", `${lang}.json`),
1013
+ import_path.default.join(process.cwd(), "packages/engine/src/reporting/templates", `${lang}.json`)
1014
+ ];
1015
+ let loaded = false;
1016
+ for (const p of possibleTemplatePaths) {
1017
+ try {
1018
+ const data = await import_promises.default.readFile(p, "utf-8");
1019
+ template = JSON.parse(data);
1020
+ loaded = true;
1021
+ break;
1022
+ } catch (e) {
1023
+ continue;
1024
+ }
1025
+ }
1026
+ if (!loaded) {
1027
+ const fallbackPaths = [
1028
+ import_path.default.join(__dirname, "templates", "en.json"),
1029
+ import_path.default.join(__dirname, "../src/reporting/templates", "en.json"),
1030
+ import_path.default.join(process.cwd(), "packages/engine/src/reporting/templates", "en.json")
1031
+ ];
1032
+ for (const p of fallbackPaths) {
1033
+ try {
1034
+ const data = await import_promises.default.readFile(p, "utf-8");
1035
+ template = JSON.parse(data);
1036
+ loaded = true;
1037
+ break;
1038
+ } catch (e) {
1039
+ continue;
1040
+ }
1041
+ }
1042
+ }
1043
+ if (!loaded) {
1044
+ throw new Error(`Accessibility statement templates missing. Looked in: ${possibleTemplatePaths.join(", ")}`);
1045
+ }
1008
1046
  let complianceLevel = "full";
1009
1047
  if (result.stats.critical > 0 || result.legalSummary && result.legalSummary.eaaDeadlineViolations > 0) {
1010
1048
  complianceLevel = "non-compliant";
@@ -1089,41 +1127,116 @@ async function generateStatementContent(result, lang = "en", format = "html", me
1089
1127
  } else {
1090
1128
  const dateStr = props.lastReviewDate.toISOString().split("T")[0];
1091
1129
  const statusMap = {
1092
- "full": "Full",
1093
- "partial": "Partial",
1094
- "non-compliant": "Non-Compliant"
1130
+ "full": lang === "sv" ? "Fullt ut f\xF6renlig" : lang === "no" || lang === "nb" ? "Helt i samsvar" : lang === "da" ? "Fuldt ud i overensstemmelse" : "Fully compliant",
1131
+ "partial": lang === "sv" ? "Delvis f\xF6renlig" : lang === "no" || lang === "nb" ? "Delvis i samsvar" : lang === "da" ? "Delvist i overensstemmelse" : "Partially compliant",
1132
+ "non-compliant": lang === "sv" ? "Inte f\xF6renlig" : lang === "no" || lang === "nb" ? "Ikke i samsvar" : lang === "da" ? "Ikke i overensstemmelse" : "Non-compliant"
1095
1133
  };
1096
- content = `# Accessibility Statement for ${props.organizationName}
1097
-
1098
- This accessibility statement applies to [${props.websiteUrl}](${props.websiteUrl}).
1099
-
1100
- ## Compliance Status
1101
-
1102
- **Status:** ${statusMap[complianceLevel] || complianceLevel}
1103
-
1104
- This website is ${complianceLevel} compliant with ${sector === "public" ? "EN 301 549 (WAD)" : "EAA"}.
1105
-
1106
- ## Non-accessible Content
1107
-
1108
- The following content is non-accessible for the following reasons:
1109
-
1110
- ${nonComplianceItems.length > 0 ? nonComplianceItems.map((item) => `- ${item}`).join("\n") : "_No known issues._"}
1111
-
1112
- ## Preparation of this statement
1113
-
1114
- This statement was prepared on ${dateStr}.
1115
- Method used: **Automated Scan** via @holmdigital/engine.
1116
-
1117
- ## Feedback and contact information
1134
+ const substitutions = {
1135
+ statusString: statusMap[complianceLevel],
1136
+ "{<webbplats>}": props.organizationName,
1137
+ "{<website>}": props.organizationName,
1138
+ "{<nettsted>}": props.organizationName,
1139
+ "{<organisation>}": props.organizationName,
1140
+ "{<organisasjon>}": props.organizationName,
1141
+ "{<e-postadress>}": props.contactEmail || "",
1142
+ "{<e-mailosoite>}": props.contactEmail || "",
1143
+ "{<e-mailadresse>}": props.contactEmail || "",
1144
+ "{<e-mail address>}": props.contactEmail || "",
1145
+ "{<email address>}": props.contactEmail || "",
1146
+ "{<telefonnummer>}": props.phoneNumber || "",
1147
+ "{<puhelinnumero>}": props.phoneNumber || "",
1148
+ "{<telefoonnummer>}": props.phoneNumber || "",
1149
+ "{<telephone number>}": props.phoneNumber || "",
1150
+ "{<svarstid>}": props.responseTime || "",
1151
+ "{<svartid>}": props.responseTime || "",
1152
+ "{<response time>}": props.responseTime || "",
1153
+ "{<bed\xF6mningsdatum>}": dateStr,
1154
+ "{<vurderingsdato>}": dateStr,
1155
+ "{<arviointip\xE4iv\xE4>}": dateStr,
1156
+ "{<beoordelingsdatum>}": dateStr,
1157
+ "{<bewertungsdatum>}": dateStr,
1158
+ "{<date_evaluation>}": dateStr,
1159
+ "{<fecha_evaluacion>}": dateStr,
1160
+ "{<assessment date>}": dateStr,
1161
+ "{<uppdateringsdatum>}": dateStr,
1162
+ "{<oppdateringsdato>}": dateStr,
1163
+ "{<p\xE4ivitysp\xE4iv\xE4>}": dateStr,
1164
+ "{<updatedatum>}": dateStr,
1165
+ "{<aktualisierungsdatum>}": dateStr,
1166
+ "{<date_mise_a_jour>}": dateStr,
1167
+ "{<fecha_actualizacion>}": dateStr,
1168
+ "{<update date>}": dateStr,
1169
+ "{<publiceringsdatum>}": props.publishDate?.toISOString().split("T")[0] || "2024-01-01",
1170
+ "{<publiseringsdato>}": props.publishDate?.toISOString().split("T")[0] || "2024-01-01",
1171
+ "{<julkaisup\xE4iv\xE4>}": props.publishDate?.toISOString().split("T")[0] || "2024-01-01",
1172
+ "{<publicatiedatum>}": props.publishDate?.toISOString().split("T")[0] || "2024-01-01",
1173
+ "{<ver\xF6ffentlichungsdatum>}": props.publishDate?.toISOString().split("T")[0] || "2024-01-01",
1174
+ "{<date_publication>}": props.publishDate?.toISOString().split("T")[0] || "2024-01-01",
1175
+ "{<fecha_publicacion>}": props.publishDate?.toISOString().split("T")[0] || "2024-01-01",
1176
+ "{<publish date>}": props.publishDate?.toISOString().split("T")[0] || "2024-01-01",
1177
+ "{<metod>}": props.evaluationMethod || "Automated Scan",
1178
+ "{<metodi>}": props.evaluationMethod || "Automated Scan",
1179
+ "{<methode>}": props.evaluationMethod || "Automated Scan",
1180
+ "{<m\xE9todo>}": props.evaluationMethod || "Automated Scan",
1181
+ "{<method>}": props.evaluationMethod || "Automated Scan",
1182
+ "{<extern akt\xF6r>}": props.generatorTool?.name || "HolmDigital Engine",
1183
+ "{<ekstern aktor>}": props.generatorTool?.name || "HolmDigital Engine",
1184
+ "{<ulkoinen taho>}": props.generatorTool?.name || "HolmDigital Engine",
1185
+ "{<externe partij>}": props.generatorTool?.name || "HolmDigital Engine",
1186
+ "{<externer Dritter>}": props.generatorTool?.name || "HolmDigital Engine",
1187
+ "{<tiers externe>}": props.generatorTool?.name || "HolmDigital Engine",
1188
+ "{<tercero externo>}": props.generatorTool?.name || "HolmDigital Engine",
1189
+ "{<third party>}": props.generatorTool?.name || "HolmDigital Engine",
1190
+ "{<enforcement_body>}": import_standards.ENFORCEMENT_BODIES[country] || import_standards.ENFORCEMENT_BODIES.EU,
1191
+ "{<brister>}": nonComplianceItems.length > 0 ? nonComplianceItems.map((item) => `* ${item}`).join("\n") : lang === "sv" ? "Inga k\xE4nda brister." : "No known issues.",
1192
+ "{<puutteet>}": nonComplianceItems.length > 0 ? nonComplianceItems.map((item) => `* ${item}`).join("\n") : lang === "fi" ? "Ei tiedossa olevia puutteita." : "No known issues.",
1193
+ "{<gebreken>}": nonComplianceItems.length > 0 ? nonComplianceItems.map((item) => `* ${item}`).join("\n") : lang === "nl" ? "Geen bekende gebreken." : "No known issues.",
1194
+ "{<m\xE4ngel>}": nonComplianceItems.length > 0 ? nonComplianceItems.map((item) => `* ${item}`).join("\n") : lang === "de" ? "Keine bekannten M\xE4ngel." : "No known issues.",
1195
+ "{<d\xE9fauts>}": nonComplianceItems.length > 0 ? nonComplianceItems.map((item) => `* ${item}`).join("\n") : lang === "fr" ? "Aucun d\xE9faut connu." : "No known issues.",
1196
+ "{<deficiencias>}": nonComplianceItems.length > 0 ? nonComplianceItems.map((item) => `* ${item}`).join("\n") : lang === "es" ? "No hay deficiencias conocidas." : "No known issues.",
1197
+ "{<mangler>}": nonComplianceItems.length > 0 ? nonComplianceItems.map((item) => `* ${item}`).join("\n") : lang === "no" || lang === "da" ? "Ingen kendte mangler." : "No known issues.",
1198
+ "{<issues>}": nonComplianceItems.length > 0 ? nonComplianceItems.map((item) => `* ${item}`).join("\n") : "No known issues."
1199
+ };
1200
+ const processText = (text) => {
1201
+ let processed = text;
1202
+ processed = processed.replace(/\[([\s\S]*?)\]/g, (_match, content2) => {
1203
+ if (content2.includes("{<svarstid>}") || content2.includes("{<svartid>}") || content2.includes("{<response time>}")) {
1204
+ return props.responseTime ? content2 : "";
1205
+ }
1206
+ if (content2.includes("{<telefonnummer>}") || content2.includes("{<telephone number>}")) {
1207
+ return props.phoneNumber ? content2 : "";
1208
+ }
1209
+ if (content2.includes("{<brister>}") || content2.includes("{<mangler>}") || content2.includes("{<issues>}")) {
1210
+ return complianceLevel !== "full" ? content2 : "";
1211
+ }
1212
+ return content2;
1213
+ });
1214
+ processed = processed.replace(/\{([^{}]*?)\}/g, (_match, content2) => {
1215
+ const parts = content2.split("/");
1216
+ if (parts.length >= 2) {
1217
+ let idx = 0;
1218
+ if (complianceLevel === "partial") idx = 1;
1219
+ if (complianceLevel === "non-compliant") idx = parts.length > 2 ? 2 : 1;
1220
+ return parts[idx].trim();
1221
+ }
1222
+ const key = `{${content2}}`;
1223
+ return substitutions[key] !== void 0 ? substitutions[key] : _match;
1224
+ });
1225
+ return processed;
1226
+ };
1227
+ const title = processText(template.title);
1228
+ const intro = processText(template.intro);
1229
+ const sections = template.sections.map((s) => `## ${s.title}
1118
1230
 
1119
- If you need information on this website in a different format like accessible PDF, large print, easy-to-read, audio recording or braille:
1231
+ ${processText(s.content)}`).join("\n\n");
1232
+ content = `# ${title}
1120
1233
 
1121
- - email: [${props.contactEmail}](mailto:${props.contactEmail})
1234
+ ${intro}
1122
1235
 
1123
- ## Enforcement procedure
1236
+ ${sections}
1124
1237
 
1125
- The enforcement body for ${country} is responsible for enforcing these regulations.
1126
- `;
1238
+ ---
1239
+ Generated using [${props.generatorTool?.name || "HolmDigital Engine"}](${props.generatorTool?.url || "https://holmdigital.se"})`;
1127
1240
  }
1128
1241
  return content;
1129
1242
  }
package/dist/index.mjs CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  VirtualDOMBuilder,
5
5
  generateStatement,
6
6
  generateStatementContent
7
- } from "./chunk-IM7FTWQF.mjs";
7
+ } from "./chunk-JEA4LJ7Q.mjs";
8
8
  import {
9
9
  getCurrentLang,
10
10
  setLanguage,
@@ -0,0 +1,76 @@
1
+ // src/reporting/junit-generator.ts
2
+ function generateJUnitXML(result) {
3
+ const { url, reports, stats, metadata } = result;
4
+ const duration = metadata.scanDuration;
5
+ const timestamp = result.timestamp;
6
+ const totalTests = stats.passed + stats.total;
7
+ const failures = stats.total;
8
+ const xmlLines = [
9
+ `<?xml version="1.0" encoding="UTF-8"?>`,
10
+ `<testsuites name="HolmDigital Accessibility Scan" time="${duration / 1e3}" tests="${totalTests}" failures="${failures}">`,
11
+ ` <testsuite name="${url}" tests="${totalTests}" failures="${failures}" errors="0" time="${duration / 1e3}" timestamp="${timestamp}">`,
12
+ ` <properties>`,
13
+ ` <property name="engineVersion" value="${metadata.engineVersion}"/>`,
14
+ ` <property name="axeCoreVersion" value="${metadata.axeCoreVersion}"/>`,
15
+ ` <property name="standardsVersion" value="${metadata.standardsVersion}"/>`,
16
+ ` <property name="pageTitle" value="${escapeXML(metadata.pageTitle || "N/A")}"/>`,
17
+ ` <property name="pageLanguage" value="${escapeXML(metadata.pageLanguage || "N/A")}"/>`,
18
+ ` <property name="score" value="${result.score}"/>`,
19
+ ` <property name="complianceStatus" value="${result.complianceStatus}"/>`,
20
+ ` </properties>`
21
+ ];
22
+ for (let i = 0; i < stats.passed; i++) {
23
+ xmlLines.push(` <testcase name="Passed Accessibility Rule ${i + 1}" classname="Accessibility.Success" time="0" />`);
24
+ }
25
+ reports.forEach((report) => {
26
+ const severity = report.holmdigitalInsight.diggRisk;
27
+ const message = escapeXML(report.holmdigitalInsight.reasoning);
28
+ const criteria = `WCAG ${report.wcagCriteria} | EN 301 549 ${report.en301549Criteria}`;
29
+ const help = `Ref: ${report.dosLagenReference}. Remediation: ${report.remediation.component || "Manual"}`;
30
+ xmlLines.push(` <testcase name="[${severity.toUpperCase()}] ${report.ruleId}" classname="${report.wcagCriteria}" time="0">`);
31
+ xmlLines.push(` <failure message="${message}" type="${severity}">${escapeXML(criteria)}
32
+ ${escapeXML(help)}</failure>`);
33
+ if (report.failingNodes && report.failingNodes.length > 0) {
34
+ let nodeInfo = "Failing Nodes:\n";
35
+ report.failingNodes.forEach((node, idx) => {
36
+ nodeInfo += `
37
+ [Node ${idx + 1}]
38
+ `;
39
+ nodeInfo += `Target: ${node.target}
40
+ `;
41
+ nodeInfo += `HTML: ${node.html}
42
+ `;
43
+ nodeInfo += `Fix: ${node.failureSummary}
44
+ `;
45
+ });
46
+ xmlLines.push(` <system-out>${escapeXML(nodeInfo)}</system-out>`);
47
+ }
48
+ xmlLines.push(` </testcase>`);
49
+ });
50
+ xmlLines.push(` </testsuite>`);
51
+ xmlLines.push(`</testsuites>`);
52
+ return xmlLines.join("\n");
53
+ }
54
+ function escapeXML(unsafe) {
55
+ if (unsafe === void 0 || unsafe === null) return "";
56
+ const str = String(unsafe);
57
+ return str.replace(/[<>&'"]/g, (c) => {
58
+ switch (c) {
59
+ case "<":
60
+ return "&lt;";
61
+ case ">":
62
+ return "&gt;";
63
+ case "&":
64
+ return "&amp;";
65
+ case "'":
66
+ return "&apos;";
67
+ case '"':
68
+ return "&quot;";
69
+ default:
70
+ return c;
71
+ }
72
+ });
73
+ }
74
+ export {
75
+ generateJUnitXML
76
+ };