PageSourceSearch

https://app.webability.io/assets/StatementGenerator-D32__yi1.js

js webability.io collected 2026-10-02 09:58:46 UTC 65,074 bytes, 321 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/statementGeneratorTourSteps-B9fGUGnN.js","assets/vendor-CXh69xiq.js"])))=>i.map(i=>d[i]);
2import{r as h,j as e,A as Se,S as Ne,V as J,a0 as E,a1 as Ce,a2 as $e,a3 as ke,a4 as Ae,G as je,h as Ee}from"./vendor-CXh69xiq.js";import Te from"./purify.es-GvE32VqP.js";import{i as ne,$ as Ie,u as Re,aJ as Le,aK as Ue,aV as Fe,aW as Pe,aX as Be,aY as De,aM as Oe,aN as Me}from"./index-BVVRvbjs.js";import{c as We,d as ze}from"./index-CQf3wr__.js";import{t as x,A as Ge}from"./app-vendor-nlFuy7bi.js";(function(){try{var s=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{};s.SENTRY_RELEASE={id:"app-build-1790920293420"};var r=new s.Error().stack;r&&(s._sentryDebugIds=s._sentryDebugIds||{},s._sentryDebugIds[r]="72c535b2-a6a3-409e-9269-835c892c05f1",s._sentryDebugIdIdentifier="sentry-dbid-72c535b2-a6a3-409e-9269-835c892c05f1")}catch{}})();async function _e(s,r){const l=ne(),u={"Content-Type":"application/json",...l?{Authorization:`Bearer ${l}`}:{}};try{const a=await fetch("https://api.webability.io/get-site-widget-settings",{method:"POST",headers:u,body:JSON.stringify({site_url:s})});if(!a.ok)throw new Error("Could not read the current settings");const p=await a.json(),b=typeof(p==null?void 0:p.settings)=="string"?JSON.parse(p.settings):(p==null?void 0:p.settings)||{},w={...b&&typeof b=="object"?b:{},...r};return(await fetch("https://api.webability.io/update-site-widget-settings",{method:"POST",headers:u,body:JSON.stringify({site_url:s,settings:JSON.stringify(w)})})).ok}catch(a){return console.error("Failed to save the statement settings:",a),!1}}async function He(s){const r=ne();try{const l=await fetch("https://api.webability.io/get-site-widget-settings",{method:"POST",headers:{"Content-Type":"application/json",...r?{Authorization:`Bearer ${r}`}:{}},body:JSON.stringify({site_url:s})});if(!l.ok)return{};const u=await l.json(),a=typeof(u==null?void 0:u.settings)=="string"?JSON.parse(u.settings):(u==null?void 0:u.settings)||{};return{accessibilityStatementMode:a==null?void 0:a.accessibilityStatementMode,accessibilityStatementText:a==null?void 0:a.accessibilityStatementText,accessibilityStatementLinkUrl:a==null?void 0:a.accessibilityStatementLinkUrl}}catch{return{}}}const qe="https://www.webability.io/statement";function se(s){return s.trim().toLowerCase().replace(/^https?:\/\//,"").replace(/^www\./,"").replace(/\/+$/,"")}function Je(s,r){if(typeof s!="string")return"";const l=s.trim();if(!l)return"";const u=(r||"").replace(/^www\./,"");let a;return/^https?:\/\//i.test(l)?a=l:l.startsWith("/")?a=u?`https://${u}${l}`:"":a=`https://${l}`,a?se(a)===se(qe)?"":a:""}function Ve(s,r){return Je(s,r)!==""}function V(s){const r=(s||"").trim();return r?/^[a-z][a-z0-9+.-]*:\/\//i.test(r)?r:r.startsWith("//")?`https:${r}`:`https://${r}`:""}function oe(s,{rules:r="divider"}={}){const l=(s||"").replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,"$1 ($2)").replace(/^#{1,3} /gm,"").replace(/\*\*(.*?)\*\*/g,"$1").replace(/\*(.*?)\*/g,"$1").replace(/`([^`]+)`/g,"$1");return r==="drop"?l.replace(/^\s*---\s*$/gm,"").replace(/\n{3,}/g,`
3
4`).trim():l.replace(/---/g,"────────────────────────────────────")}function Ke(s,r){return!r.trim()||s.trim()?null:r}function Ye(s,r){return!!r&&r!==s}function Ze(s){const r=(s||"").trim();return r?r.replace(/^[a-z][a-z0-9+.-]*:\/\//i,"").replace(/^www\./i,"").replace(/[/?#].*$/,"").toLowerCase():""}function Qe(s){const r=(s||"").trim();if(!r)return!1;let l;try{l=new URL(V(r))}catch{return!1}if(l.protocol!=="http:"&&l.protocol!=="https:")return!1;const u=l.hostname;return u?u.includes(".")||!!l.port:!1}function Xe({site:s,generatedStatement:r}){const[l,u]=h.useState("internal"),[a,p]=h.useState(""),[b,w]=h.useState(""),[T,F]=h.useState(!0),[I,g]=h.useState(!1);h.useEffect(()=>{let f=!0;if(!s){F(!1);return}return He(s).then(N=>{f&&(p(N.accessibilityStatementText||""),w(N.accessibilityStatementLinkUrl||""),u(N.accessibilityStatementMode==="internal"||N.accessibilityStatementMode==="external"?N.accessibilityStatementMode:Ve(N.accessibilityStatementLinkUrl,s)?"external":"internal"),F(!1))}),()=>{f=!1}},[s]);const R=oe(r,{rules:"drop"});h.useEffect(()=>{if(T)return;const f=Ke(a,R);f!==null&&p(f)},[T,R,a]);const P=async()=>{g(!0);const f=await _e(s,{accessibilityStatementMode:l,accessibilityStatementText:a,accessibilityStatementLinkUrl:b});g(!1),x[f?"success":"error"](f?l==="internal"?`Visitors to ${s} will now read this in the widget`:`The widget on ${s} will now open your page`:"Could not save the statement settings")};return T?e.jsx("div",{className:"bg-white rounded-xl shadow-xs border border-border p-6 mb-4 text-sm text-[#6E7788]",children:"Loading statement settings…"}):e.jsxs("div",{className:"bg-white rounded-xl shadow-xs border border-border p-6 mb-4",children:[e.jsxs("div",{className:"mb-5",children:[e.jsx("h3",{className:"text-xl font-semibold text-[#1a1a1a] mb-2",children:"Where visitors read it"}),e.jsxs("p",{className:"text-sm text-[#666666] leading-relaxed",children:["This is what the Accessibility Statement link in your widget opens on"," ",s||"this 
4site","."]})]}),e.jsx("div",{role:"radiogroup","aria-label":"Where visitors read your accessibility statement",className:"flex flex-col gap-2 mb-5",children:[["internal","In the widget","Visitors read it without leaving the page."],["external","On my own page","The widget opens a page on your site instead."]].map(([f,N,z])=>e.jsxs("label",{className:`flex items-start gap-3 p-3 border rounded-lg cursor-pointer transition-colors duration-200 ${l===f?"border-primary bg-primary/4":"border-input hover:border-gray-400"}`,children:[e.jsx("input",{type:"radio",name:"statement-delivery-mode",value:f,checked:l===f,onChange:()=>u(f),className:"mt-0.5 accent-primary"}),e.jsxs("span",{children:[e.jsx("span",{className:"block text-sm font-medium text-gray-700",children:N}),e.jsx("span",{className:"block text-xs text-[#6E7788]",children:z})]})]},f))}),l==="internal"?e.jsxs(e.Fragment,{children:[e.jsx("label",{htmlFor:"statement-body",className:"block text-sm font-medium text-gray-700 mb-2",children:"Statement text"}),e.jsx("textarea",{id:"statement-body",rows:8,placeholder:"Leave blank to show the standard statement, or write the statement visitors read in the widget.",className:"w-full px-4 py-3 border border-input rounded-lg text-sm bg-white transition-colors duration-200 focus:ring-2 focus:ring-[#0052CC]/20 focus:border-primary placeholder:text-[#6E7788]",value:a,onChange:f=>p(f.target.value)}),e.jsxs("div",{className:"mt-2 flex items-start justify-between gap-4",children:[e.jsx("p",{className:"text-xs text-[#6E7788]",children:"Filled in from the statement above. Edit it freely — your changes are kept, and Save is what publishes them."}),Ye(a,R)&&e.jsx("button",{type:"button",onClick:()=>p(R),className:"shrink-0 text-xs font-medium text-primary hover:underline",children:"Replace with the statement above ↑"})]})]}):e.jsxs(e.Fragment,{children:[e.jsx("label",{htmlFor:"statement-url",className:"block text-sm font-medium text-gray-700 mb-2",children:"Your statement page"}),e.jsx("input",{id:"statement-url",type:"text",placeholder:"https://yourwebsite.com/accessibility",className:"w-full px-4 py-3 border border-input rounded-lg text-sm bg-white transition-colors duration-200 focus:ring-2 focus:ring-[#0052CC]/20 focus:border-primary placeholder:text-[#6E7788]",value:b,onChange:f=>w(f.target.value)}),e.jsxs("p",{className:"mt-2 text-xs text-[#6E7788]",children:["A relative path like /accessibility works too — it resolves against"," ",s||"your site","."]})]}),e.jsx("button",{type:"button",onClick:P,disabled:I||!s,className:"mt-5 px-6 py-2.5 bg-primary text-white rounded-lg text-sm font-medium shadow-xs hover:bg-[#003EB8] disabled:bg-gray-400 transition-colors duration-200",children:I?"Saving…":"Save"})]})}const et="/assets/no-report-found-DLTfvds8.png";function tt(s,r,l,u,a){const p=l||s,b=u||"https://webability.io",w={title:"Accessibility Statement for",general:"General",measures:"Measures to support accessibility",conformance:"Conformance status",technical:"Technical specifications",assessment:"Assessment approach",widget:`${p} Accessibility Enhancer`,profiles:"Accessibility profiles for people with disabilities",features:"Additional accessibility features",feedback:"Feedback",compatibility:"Compatibility with browsers and assistive technology",limitations:"Known limitations and alternatives",compliance:"Assessment of current compliance",approval:"Formal approval of this accessibility statement",generated:`This accessibility statement was generated using ${p}'s AI Statement Generator on`,commitment:"is committed to ensuring digital accessibility for people with disabilities. We are continually improving the user experience for everyone, and applying the relevant accessibility standards to create an inclusive digital environment.",belief:"we believe that digital accessibility is not just a legal requirement but a fundamental human right. We strive to ensure that our website",accessible:"is accessible to all users, regardless of their abilities or the assistive technologies they use.",orgMeasures:"Organizational Measures",techMeasures:"Technical Measures",takesComprehe
4nsive:"takes the following comprehensive measures to ensure accessibility of",orgMeasuresList:`- Include accessibility as part of our mission statement and core values
5- Include accessibility throughout our internal policies and procedures
6- Integrate accessibility into our procurement practices and vendor requirements
7- Appoint an accessibility officer and/or ombudsperson with dedicated responsibilities
8- Provide continual accessibility training for our staff, including developers, designers, and content creators
9- Assign clear accessibility goals and responsibilities across departments
10- Employ formal accessibility quality assurance methods and testing protocols`,techMeasuresList:`- Regular accessibility audits using automated and manual testing tools
11- Implementation of [WCAG 2.1 AA guidelines](https://www.w3.org/WAI/WCAG21/quickref/) across all digital properties
12- User testing with people with disabilities to validate real-world accessibility
13- Continuous monitoring and improvement of accessibility features`,techIntro:"relies on the following technologies to work with the particular combination of web browser and any assistive technologies or plugins installed on your computer:",techList:`- **HTML5:** Semantic markup for proper document structure
14- **WAI-ARIA:** Advanced accessibility attributes for complex interactions
15- **CSS3:** Responsive design and accessibility-friendly styling
16- **JavaScript:** Progressive enhancement for accessibility features`,techNote:"These technologies are relied upon for conformance with the accessibility standards used. Our website is built with progressive enhancement principles, ensuring core functionality remains available even if JavaScript is disabled.",assessmentIntro:"assessed the accessibility of",assessmentBy:"by the following approaches:",automatedTesting:"Automated Testing",automatedList:`- Regular automated accessibility scanning using [${p}'s accessibility testing platform](${b})
17- Integration with development workflow for continuous accessibility monitoring
18- Monthly comprehensive accessibility audits`,manualTesting:"Manual Testing",manualList:`- Expert accessibility reviews by certified accessibility professionals
19- Keyboard navigation testing across all interactive elements
20- Screen reader testing with NVDA, JAWS, VoiceOver, and TalkBack
21- Color contrast verification meeting WCAG AA standards`,userTesting:"User Testing",userList:`- Usability testing with people with disabilities
22- Feedback collection from users of assistive technologies
23- Regular accessibility user experience studies`,widgetIntro:`This website is equipped with [${p}'s accessibility enhancer](${b}) to provide additional assistive features that go beyond standard web accessibility requirements:`,profilesIntro:"Our accessibility enhancer includes specialized profiles designed for different types of disabilities:",profilesList:a?a.profilesList:`- **Seizure Safe Profile:** Eliminates flashes and reduces color that could trigger seizures
24- **Vision Impaired Profile:** Enhances the website's visuals for users with visual impairments
25- **ADHD Friendly Profile:** Reduces distractions and improves focus for users with ADHD
26- **Cognitive Disability Profile:** Provides additional reading and focusing assistance
27- **Keyboard Navigation Profile:** Optimizes the website for keyboard-only navigation
28- **Blind Users Profile:** Optimizes the website for screen-reader compatibility`,featuresIntro:"Additional accessibility features available through our enhancer:",featuresList:a?a.featuresList:`- **Text Adjustments:** Font size increases up to 200%, font family changes to readable fonts
29- **Color & Contrast:** High contrast mode, color adjustments for colorblind users
30- **Content Highlighting:** Link highlighting, button emphasis, and content structure emphasis
31- **Navigation Aids:** Reading guides, rulers, and content magnification
32- **Motor Impairments:** Focus indicators enhancement, click area enlargement
33- **Animation Controls:** Pause animations, reduce motion for vestibular disorders`,feedbackIntro:"We welcome your feedback on the accessibility of",feedbackNote:"Please let us know if you encounter accessibility barriers on our website:",contactInfo:"Accessibility Contact Information:",contactList:`- **Phone:** {phone}
34- **E-mail:** {email}
35- **Online Form:** {onlineForm}
36- **Visitor Address:** {visitorAddress}
37- **Postal Address:** {postalAddress}`,responseTime:"We try to respond to accessibility feedback within 2-3 business days and resolve reported issues within 5-10 business days, depending on complexity.",compatibilityIntro:"is designed to be compatible with the following assistive technologies:",compatibilityIntroText:"is designed to be compatible with the following assistive technologies:",screenReaders:"Screen Readers",screenReadersList:`- **NVDA** (Windows) - Fully supported with regular testing
38- **JAWS** (Windows) - Comprehensive compatibility and optimization
39- **VoiceOver** (macOS/iOS) - Native Apple screen reader support
40- **TalkBack** (Android) - Mobile accessibility optimization
41- **Dragon NaturallySpeaking** - Voice recognition software compatibility`,browsers:"Browsers",browsersList:`- Recent versions of major browsers including Chrome, Firefox, Safari, and Edge
42- Mobile browsers on iOS Safari and Android Chrome
43- Browser zoom up to 200% without horizontal scrolling
44- High contrast mode support across all browsers`,otherAssistive:"Other Assistive Technology",otherAssistiveList:`- Voice recognition software (Dragon, Windows Speech Recognition)
45- Switch navigation devices and software
46- Eye-tracking systems and head mouse devices
47- Alternative keyboards and input devices
48- Magnification software (ZoomText, MAGic)`,limitationsIntro:"Despite our best efforts to ensure accessibility of",limitationsText:"there may be some limitations. Below is a description of known limitations, and potential solutions. Please contact us if you observe an issue not listed below.",knownLimitations:"Known limitations for",limitation1:"**Third-party Content:** Some embedded content from third-party providers (social media widgets, videos, maps) may not be fully accessible. We work with vendors to ensure accessibility compliance.",limitation2:"**Legacy PDF Documents:** Some older PDF documents may not be fully accessible. We are systematically reviewing and updating these documents to meet accessibility standards.",limitation3:"**Live Content:** Real-time content such as live chat or dynamic updates may have accessibility limitations. We provide alternative methods to access this information.",whatWereDoing:"What we're doing:",whatWeDoList:`- Continuous accessibility improvements and updates
49- Regular third-party vendor accessibility reviews
50- Proactive identification and resolution of accessibility barriers
51- User feedback integration into our development process`,aboutStatement:"About This Statement",statementGenerated:"This statement was created on",aiGenerator:"AI-powered accessibility statement generator",lastReviewed:"The website was last reviewed for accessibility compliance on",complianceStatus:"Accessibility Standards Compliance:",approvedBy:"This Accessibility Statement is approved by:",accessibilityOfficer:"Accessibility Officer",statementDetails:"Statement Details:",complianceLevel:"Compliance Level:",nextReviewDate:"Next Review Date:",poweredBy:"Powered by",makingWebAccessible:"Making the web accessible for everyone.",wcagDescription:"The [Web Content Accessibility Guidelines (WCAG)](https://www.w3.org/WAI/WCAG21/Understanding/) defines requirements for designers and developers to improve accessibility for people with disabilities. It defines three levels of conformance: Level A, Level AA, and Level AAA.",fullyConformant:"is fully conformant with [WCAG 2.1 level AA](https://www.w3.org/WAI/WCAG21/quickref/?currentsidebar=%23col_overview&levels=aaa&technologies=smil%2Cpdf%2Cflash%2Csl). Fully conformant means that the content fully meets the accessibility standard without any exceptions.",complianceList:`This website also complies with:
52- [Section 508 of the Rehabilitation Act](https://www.section508.gov/)
53- [Americans with Disabilities Act (ADA)](https://www.ada.gov/resources/web-guidance/)
54- [EN 301 549 European Standard](https://www.etsi.org/deliver/etsi_en/301500_301599/301549/03.02.01_60/en_301549v030201p.pdf)`};return r==="add-testing"&&(w.automatedList=`- Regular automated accessibility scanning using [${p}'s accessibility testing platform](${b})
55- Integration with development workflow for continuous accessibility monitoring
56- Monthly comprehensive accessibility audits
57- **Enhanced Testing:** Use of industry-standard tools including axe-core, WAVE, Lighthouse, and Pa11y
58- **Continuous Integration:** Automated accessibility testing in CI/CD pipeline
59- **Performance Testing:** Regular testing of accessibility features under load`),r==="add-timeline"&&(w.responseTime="We try to respond to accessibility feedback within 2-3 business days and resolve reported issues within 5-10 business days, depending on complexity. **Enhanced Timeline:** Priority issues are addressed within 24 hours, and we provide regular status updates throughout the resolution process."),r==="add-training"&&(w.orgMeasuresList=`- Include accessibility as part of our mission statement and core values
60- Include accessibility throughout our internal policies and procedures
61- Integrate accessibility into our procurement practices and vendor requirements
62- Appoint an accessibility officer and/or ombudsperson with dedicated responsibilities
63- **Enhanced Training Program:** Comprehensive accessibility training for all staff including developers, designers, content creators, and customer service
64- **Certification Programs:** Staff receive IAAP (International Association of Accessibility Professionals) certification
65- **Regular Workshops:** Monthly accessibility workshops covering latest standards and assistive technologies
66- Assign clear accessibility goals and responsibilities across departments
67- Employ formal accessibility quality assurance methods and testing protocols`),r==="add-standards"&&(w.complianceList=`This website also complies with:
68- [Section 508 of the Rehabilitation Act](https://www.section508.gov/)
69- [Americans with Disabilities Act (ADA)](https://www.ada.gov/resources/web-guidance/)
70- [EN 301 549 European Standard](https://www.etsi.org/deliver/etsi_en/301500_301599/301549/03.02.01_60/en_301549v030201p.pdf)
71- **Additional Standards:** ISO/IEC 40500:2012, BITV 2.0 (Germany), RGAA 4.1 (France)
72- **Industry Compliance:** W3C WAI-ARIA 1.2, HTML5 accessibility specifications
73- **Mobile Standards:** W3C Mobile Accessibility Guidelines`),w}const it="https://widget.webability.io/features.json",Q="wa_features_manifest",at=1440*60*1e3,st=[{key:"big-cursor",label:"Big Cursor",category:"preset",wcagRefs:["2.5.5"],description:"Enlarges the mouse 
73cursor for easier tracking and clicking."},{key:"stop-animations",label:"Stop Animations",category:"preset",wcagRefs:["2.2.2","2.3.3"],description:"Pauses moving, blinking, or auto-updating content and page animations."},{key:"readable-guide",label:"Reading Guide",category:"preset",wcagRefs:["1.4.8"],description:"Adds a horizontal reading ruler that follows the cursor."},{key:"images-alt",label:"Images",category:"preset",wcagRefs:["1.1.1"],description:"Reveals every image's alt text and flags images with missing alt text."},{key:"darkMode",label:"Dark Mode",category:"preset",wcagRefs:["1.4.3","1.4.8"],description:"Switches the page to a dark background with light text.",osNativeAlternative:"OS/browser dark mode"},{key:"keyboard-navigation",label:"Keyboard Navigation",category:"preset",wcagRefs:["2.1.1"],description:"Enables enhanced keyboard-only navigation with visible focus outlines."},{key:"page-structure",label:"Page Structure",category:"preset",wcagRefs:["1.3.1","2.4.6"],description:"Shows an outline-solid of the page's headings and landmarks."},{key:"text-simplifier",label:"Text Simplifier",category:"preset",wcagRefs:["3.1.5"],description:"Rewrites selected page text in plain, simplified language."},{key:"adhd",label:"ADHD",category:"profile",wcagRefs:["2.2.2","1.4.8"],description:"Bundle: stops animations, adds a reading guide, and lowers saturation."},{key:"seizure-epileptic",label:"Seizure & Epileptic",category:"profile",wcagRefs:["2.3.1"],description:"Bundle: stops animations and lowers saturation."},{key:"cognitive-learning",label:"Cognitive & Learning",category:"profile",wcagRefs:["3.1.5","2.2.2"],description:"Bundle: stops animations, adds a reading guide and tooltips, sets light contrast."},{key:"visually-impaired",label:"Visually-Impaired",category:"profile",wcagRefs:["1.4.3","1.4.4"],description:"Bundle: stops animations, enlarges the cursor, adds legible fonts, tooltips, and high contrast."},{key:"dyslexia-font",label:"Dyslexia",category:"profile",wcagRefs:["3.1.5"],description:"Bundle: stops animations and switches to a dyslexia-friendly, readable font."},{key:"color-blind",label:"Color Blind",category:"profile",wcagRefs:["1.4.1"],description:"Bundle: increases color saturation to make content easier to distinguish."},{key:"blind",label:"Blind",category:"profile",wcagRefs:["4.1.2"],description:"Intended to enable a screen-reading mode for blind users."},{key:"motor-impaired",label:"Motor Impaired",category:"profile",wcagRefs:["2.5.5","2.1.1"],description:"Bundle: stops animations and enables enhanced keyboard navigation."},{key:"dark-contrast",label:"Dark Contrast",category:"filter",wcagRefs:["1.4.3"],description:"Inverts the page to a dark color scheme while keeping images and video true to color."},{key:"light-contrast",label:"Light Contrast",category:"filter",wcagRefs:["1.4.3"],description:"Sets a white page background for a higher-contrast reading surface."},{key:"high-contrast",label:"High Contrast",category:"filter",wcagRefs:["1.4.3","1.4.6"],description:"Increases the page's visual contrast."},{key:"high-saturation",label:"High Saturation",category:"filter",wcagRefs:["1.4.1"],description:"Increases color saturation to make content easier to distinguish."},{key:"low-saturation",label:"Low Saturation",category:"filter",wcagRefs:["2.3.1","1.4.1"],description:"Reduces color saturation to lessen visual intensity."},{key:"monochrome",label:"Monochrome",category:"filter",wcagRefs:["1.4.1"],description:"Removes color from the page, rendering it in grayscale."},{key:"highlight-links",label:"Highlight Links",category:"tool",wcagRefs:["2.4.4","1.4.1"],description:"Outlines every link on the page so they stand out from surrounding text."},{key:"highlight-title",label:"Highlight Titles",category:"tool",wcagRefs:["2.4.6"],description:"Outlines headings so page structure is easier to scan."},{key:"readable-font",label:"Readable Font",category:"tool",wcagRefs:["3.1.5"],description:"Switches body text to a more legible font face."},{key:"letter-spacing",label:"Letter Spacing",category:"tool",wcagRefs:["1.4.12"],description:"Increases the spacing between letters."},{key:"line-height",label:"Line Height",category:"tool",wcagRefs:["1.4.12"],description:"Increases the spacing between lines of text."},{key:"font-weight",label:"Font Weight",category:"tool",wcagRefs:["1.4.8"],description:"Increases text boldness for easier reading."},{key:"font-size",label:"Font Size",category:"tool",wcagRefs:["1.4.4"],description:"Increases page text size up to 200%."}],rt=new Set(["preset","profile","tool","filter"]);function re(s){return Array.isArray(s)&&s.length>0&&s.every(r=>r&&typeof r.key=="string"&&typeof r.label=="string"&&rt.has(r.category)&&Array.isArray(r.wcagRefs)&&typeof r.description=="str
73ing")}async function nt(){try{const s=localStorage.getItem(Q);if(s){const r=JSON.parse(s);if(Date.now()-r.timestamp<at&&re(r.manifest))return r.manifest}}catch{localStorage.removeItem(Q)}try{const s=await fetch(it,{signal:AbortSignal.timeout(5e3)});if(!s.ok)throw new Error(`features.json ${s.status}`);const r=await s.json();if(!re(r))throw new Error("features.json failed shape validation");try{localStorage.setItem(Q,JSON.stringify({manifest:r,timestamp:Date.now()}))}catch{}return r}catch(s){return console.warn("[StatementGenerator] features.json unavailable, using fallback manifest:",s),st}}function le(s){const r=s.wcagRefs.length?` (WCAG ${s.wcagRefs.join(", ")})`:"",l=s.osNativeAlternative?` Also available via your device's ${s.osNativeAlternative}.`:"";return`- **${s.label}:** ${s.description}${r}${l}`}function ot(s){return s.filter(r=>r.category==="profile").map(le).join(`
74`)}const lt=[{category:"preset",heading:"Toolbar tools"},{category:"tool",heading:"Content & display"},{category:"filter",heading:"Color & contrast"}];function ct(s){return lt.map(({category:r,heading:l})=>{const u=s.filter(a=>a.category===r);return u.length?`**${l}**
75${u.map(le).join(`
76`)}`:""}).filter(Boolean).join(`
77
78`)}const dt=Se`
79  mutation TranslateStatement(
80    $content: String!
81    $targetLanguage: String!
82    $languageCode: String!
83    $context: String
84  ) {
85    translateStatement(
86      content: $content
87      targetLanguage: $targetLanguage
88      languageCode: $languageCode
89      context: $context
90    ) {
91      success
92      translatedContent
93      error
94      languageCode
95    }
96  }
97`,ft=({lockedDomain:s})=>{const{t:r}=Ge(),l=Ie();Re({title:r("Common.title.statement_generator")});const u=Le(()=>Ee(()=>import("./statementGeneratorTourSteps-B9fGUGnN.js"),__vite__mapDeps([0,1])).then(t=>t.statementGeneratorTourSteps),[]),[a,p]=h.useState({companyName:"",websiteUrl:V(s||""),contactEmail:"",language:"en",industry:"",widgetBrandName:l,widgetBrandUrl:"https://webability.io",phoneNumber:"",visitorAddress:"",postalAddress:"",onlineFormUrl:""}),{site:b}=Ue();h.useEffect(()=>{if(s||!(b!=null&&b.url))return;const t=V(b.url);p(n=>n.websiteUrl===t?n:{...n,websiteUrl:t})},[b==null?void 0:b.url,s]);const[w,T]=h.useState(""),[F,I]=h.useState(!1),[g,R]=h.useState("markdown"),[P,f]=h.useState(""),[N,z]=h.useState(!1),[D,ce]=h.useState(!1),[de,X]=h.useState(!1),[$,K]=h.useState([]),[y,ee]=h.useState({}),[te]=Ne(dt),O=h.useRef(null),G=h.useRef(null),me=h.useCallback(async(t,n,m,o)=>{var c,d;try{const U=JSON.stringify(t).slice(0,50),A=`translation_v4_${m}_${o||"default"}_${U}`,L=localStorage.getItem(A);if(L)try{const C=JSON.parse(L),B=Date.now()-C.timestamp,ve=10080*60*1e3;if(B<ve&&C.translation)return C.translation}catch{localStorage.removeItem(A)}const v=`You are a professional translator specializing in accessibility and legal documents for the ${a.industry||"business"} industry.
98
99Translate the following accessibility statement content from English to ${n}.
100
101CRITICAL REQUIREMENTS:
1021. Use formal, professional legal language appropriate for ${n}
1032. Preserve these technical terms exactly: WCAG, ADA, Section 508, ARIA, NVDA, JAWS, VoiceOver, TalkBack
1043. Keep URLs, email addresses, and brand names unchanged
1054. Maintain the exact same JSON structure
1065. Use official accessibility terminology in ${n}
1076. Sound natural to native ${n} speakers
1087. Maintain legal/compliance tone appropriate for accessibility statements
1098. ABSOLUTELY FORBIDDEN: Never mix languages - translate ALL text to ${n}
1109. FORBIDDEN PHRASES: Never use "At [company]", "using", "and", "This statement", "Last updated" - translate everything
11110. REPLACE PATTERNS: "At dsad," → translate to proper ${n} equivalent like "dsad-এ" for Bengali
11211. CHECK FOR: Any English words like "At", "using", "and manual", "This statement" - must be translated
11312. Use consistent terminology throughout the document
11413. Format dates appropriately for the target culture
11514. CHECK EVERY SENTENCE: Ensure no English words remain except technical terms and URLs
116
117${o?`SPECIAL FOCUS: ${o.replace("add-","Emphasize ")}`:""}
118
119LANGUAGE-SPECIFIC GUIDELINES:
120- For Arabic: Use formal Arabic (فصحى), maintain right-to-left text flow, use appropriate date formatting
121- For Spanish: Use formal register, proper regional variations, maintain professional tone
122- For French: Use formal French (tutoiement), proper accents, maintain legal terminology
123- For German: Use formal Sie form, compound words appropriately, maintain technical precision
124- For Chinese: Use simplified/traditional as appropriate, formal register, proper measure words
125- For Japanese: Use formal keigo when appropriate, maintain respectful tone
126- For Korean: Use formal speech levels, maintain honorific system
127- For Portuguese: Use formal register, distinguish Brazil/Portugal variants if needed
128- For Russian: Use formal register, proper cases, maintain official terminology
129- For Italian: Use formal register, proper conjugations, maintain professional tone
130- For Dutch: Use formal register, proper compound words, maintain technical accuracy
131- For technical terms: Keep English terms like "WCAG 2.1 AA" but translate explanatory text
132- For company names: Keep original name but translate context around it
133- For dates: Use culturally appropriate date formats for each language/region
134- For currency/numbers: Use appropriate formatting conventions for target locale
135
136CONTENT TO TRANSLATE:
137${JSON.stringify(t,null,2)}
138
139Return ONLY a valid JSON object with the same structure, with all values professionally translated to ${n}:`,i=new Promise((C,B)=>setTimeout(()=>B(new Error("Translation request timed out. Please try again.")),45e3)),S=te({variables:{content:v,targetLanguage:n,languageCode:m,context:JSON.stringify({domain:"accessibility-legal",documentType:"compliance-statement",industry:a.industry,enhancement:o})}}),{data:j}=await Promise.race([S,i]);if(!((c=j==null?void 0:j.translateStatement)!=null&&c.success))throw new Error(((d=j==null?void 0:j.translateStatement)==null?void 0:d.error)||"Translation failed");const M=j.translateStatement.translatedContent;if(!M)throw new Error("No translation content received");let W;try{let C=M;
139typeof M=="string"&&(C=M.replace(/^```json\s*/m,"").replace(/\s*```$/m,"").trim()),W=JSON.parse(C)}catch{throw new Error("Translation service temporarily unavailable. Please try again.")}return localStorage.setItem(A,JSON.stringify({translation:W,timestamp:Date.now()})),W}catch(U){return console.error(`Translation failed for ${n}:`,U),x.error(`Translation to ${n} failed, using English`),t}},[te,a.industry]),_=(t,n,m,o)=>tt(l,t,n,m,o),Y=[{code:"en",name:"English",englishName:"English"},{code:"ar",name:"العربية",englishName:"Arabic"},{code:"bg",name:"Български",englishName:"Bulgarian"},{code:"bn",name:"বাংলা",englishName:"Bengali"},{code:"cs",name:"Čeština",englishName:"Czech"},{code:"de",name:"Deutsch",englishName:"German"},{code:"el",name:"Ελληνικά",englishName:"Greek"},{code:"es",name:"Español",englishName:"Spanish"},{code:"fi",name:"Suomi",englishName:"Finnish"},{code:"fr",name:"Français",englishName:"French"},{code:"he",name:"עברית",englishName:"Hebrew"},{code:"hi",name:"हिन्दी",englishName:"Hindi"},{code:"hr",name:"Hrvatski",englishName:"Croatian"},{code:"hu",name:"Magyar",englishName:"Hungarian"},{code:"id",name:"Bahasa Indonesia",englishName:"Indonesian"},{code:"it",name:"Italiano",englishName:"Italian"},{code:"ja",name:"日本語",englishName:"Japanese"},{code:"ko",name:"한국어",englishName:"Korean"},{code:"lt",name:"Lietuvių",englishName:"Lithuanian"},{code:"lv",name:"Latviešu",englishName:"Latvian"},{code:"ms",name:"Bahasa Melayu",englishName:"Malay"},{code:"nl",name:"Nederlands",englishName:"Dutch"},{code:"no",name:"Norsk",englishName:"Norwegian"},{code:"pl",name:"Polski",englishName:"Polish"},{code:"pt",name:"Português",englishName:"Portuguese"},{code:"pt-br",name:"Português (Brasil)",englishName:"Portuguese (Brazil)"},{code:"ro",name:"Română",englishName:"Romanian"},{code:"ru",name:"Русский",englishName:"Russian"},{code:"sk",name:"Slovenčina",englishName:"Slovak"},{code:"sl",name:"Slovenščina",englishName:"Slovenian"},{code:"sr",name:"Српски",englishName:"Serbian"},{code:"sv",name:"Svenska",englishName:"Swedish"},{code:"th",name:"ไทย",englishName:"Thai"},{code:"tr",name:"Türkçe",englishName:"Turkish"},{code:"uk",name:"Українська",englishName:"Ukrainian"},{code:"ur",name:"اردو",englishName:"Urdu"},{code:"vi",name:"Tiếng Việt",englishName:"Vietnamese"},{code:"zh",name:"中文 (简体)",englishName:"Chinese (Simplified)"},{code:"zh-tw",name:"中文 (繁體)",englishName:"Chinese (Traditional)"},{code:"da",name:"Dansk",englishName:"Danish"},{code:"et",name:"Eesti",englishName:"Estonian"},{code:"ca",name:"Català",englishName:"Catalan"}],ue=["E-commerce","Healthcare","Education","Financial Services","Technology","Government","Non-profit","Real Estate","Travel & Hospitality","Media & Entertainment","Professional Services","Other"],k=t=>n=>{const m=n.target.value;if(p(o=>({...o,[t]:m})),y[t]&&ee(o=>({...o,[t]:void 0})),t==="widgetBrandName"||t==="widgetBrandUrl"||t==="language")try{Object.keys(localStorage).filter(c=>c.startsWith("translation_")).forEach(c=>localStorage.removeItem(c))}catch{}},ie=Y.filter(t=>t.name.toLowerCase().includes(P.toLowerCase())||t.englishName.toLowerCase().includes(P.toLowerCase())||t.code.toLowerCase().includes(P.toLowerCase())),Z=Y.find(t=>t.code===a.language),pe=Z?`${Z.name} (${Z.englishName})`:"Select Language";h.useEffect(()=>()=>{O.current&&clearTimeout(O.current)},[]);const ge=()=>{const t={};return a.companyName.trim()||(t.companyName="Company Name is required"),a.websiteUrl.trim()||(t.websiteUrl="Website URL is required"),a.contactEmail.trim()||(t.contactEmail="Contact Email is required"),a.industry||(t.industry="Industry is required"),ee(t),Object.keys(t).length===0},he=h.useCallback(()=>{O.current&&clearTimeout(O.current),O.current=setTimeout(async()=>{if(!ge())return;const t=Date.now(),n=`${a.companyName}_${a.websiteUrl}_${a.contactEmail}_${a.language}_${a.industry}`;if(G.current&&G.current.formDataKey===n&&t-G.current.timestamp<5e3){x.info("Please wait, statement is still being generated...");return}const m=V(a.websiteUrl);if(a.websiteUrl&&!Qe(m)){x.error("Please enter a valid website address, like example.com");return}if(m!==a.websiteUrl&&p(o=>({...o,websiteUrl:m})),a.contactEmail&&!a.contactEmail.match(/^[^\s@]+@[^\s@]+\.[^\s@]+$/)){x.error("Please enter a valid email address");return}G.current={formDataKey:n,timestamp:t},I(!0);try{const o=await ae({...a,websiteUrl:m});T(o),x.success("Accessibility statement generated successfully!")}catch(o){const c=o instanceof Error?o.message:"Failed to generate statement. Please try again.";x.error(c),o instanceof Error&&console.error("Translation error:",{message:o.message,language:a.language,timestamp:new Date().toISOString()})}finally{I(!1)}},200)},[a,I,T]),fe=t=>({en:"en-US",es:"es-ES",fr:"fr-FR",de:"de-DE",it:"it-IT",pt:"pt-PT","pt-br":"pt-BR",nl:"nl-NL",pl:"pl-PL",ru:"ru-RU",zh:"zh-CN","zh-tw":"zh-TW",ja:"ja-JP",ko:"ko-KR",ar:"ar-SA",hi:"hi-IN",th:"th-TH",vi:"vi-VN",tr:"tr-TR",he:"he-IL",sv:"sv-SE",no:"nb-NO",da:"da-DK",fi:"fi-FI",cs:"cs-CZ",sk:"sk-SK",hu:"hu-HU",ro:"ro-RO",bg:"bg-BG",hr:"hr-HR",sr:"sr-RS",sl:"sl-SI",et:"et-EE",lv:"lv-LV",lt:"lt-LT",el:"el-GR",uk:"uk-UA",ms:"ms-MY",id:"id-ID",bn:"bn-BD",ur:"ur-PK",ca:"ca-ES"})[t]||"en-US",ae=async(t,n)=>{const m=Y.find(S=>S.code===t.language),o=m?m.name:"English",c=fe(t.language),d=new Date().toLocaleDateString(c,{year:"numeric",month:"long",day:"numeric"}),U=new Date().toLocaleDateString(c,{year:"numeric",month:"long",day:"numeric"}),A=await nt(),L={profilesList:ot(A),featuresList:ct(A)},i=await(async S=>{if(S==="en")return _(n,t.widgetBrandName,t.widgetBrandUrl,L);try{const j=_(n,t.widgetBrandName,t.widgetBrandUrl,L),W={ar:"Arabic",bg:"Bulgarian",bn:"Bengali",cs:"Czech",de:"German",el:"Greek",es:"Spanish",fi:"Finnish",fr:"French",he:"Hebrew",hi:"Hindi",hr:"Croatian",hu:"Hungarian",id:"Indonesian",it:"Italian",ja:"Japanese",ko:"Korean",lt:"Lithuanian",lv:"Latvian",ms:"Malay",nl:"Dutch",no:"Norwegian",pl:"Polish",pt:"Portuguese","pt-br":"Portuguese (Brazil)",ro:"Romanian",ru:"Russian",sk:"Slovak",sl:"Slovenian",sr:"Serbian",
139sv:"Swedish",th:"Thai",tr:"Turkish",uk:"Ukrainian",ur:"Urdu",vi:"Vietnamese",zh:"Chinese (Simplified)","zh-tw":"Chinese (Traditional)",da:"Danish",et:"Estonian",ca:"Catalan"}[S]||"English",C=await me(j,W,S);if(typeof C=="string")try{let B=C.replace(/^```json\s*/m,"").replace(/\s*```$/m,"").trim();return JSON.parse(B)}catch{return _(n,t.widgetBrandName,t.widgetBrandUrl,L)}return C}catch{return _(n,t.widgetBrandName,t.widgetBrandUrl,L)}})(t.language);return`## ${i.title} ${t.companyName}
140
141*Last updated: ${d}*
142
143## ${i.general}
144${t.companyName} ${i.commitment}
145
146At ${t.companyName}, ${i.belief} ${t.websiteUrl} ${i.accessible}
147
148## ${i.measures}
149${t.companyName} ${i.takesComprehensive} ${t.websiteUrl}:
150
151### ${i.orgMeasures}
152${i.orgMeasuresList}
153
154### ${i.techMeasures}
155${i.techMeasuresList}
156
157## ${i.conformance}
158${i.wcagDescription}
159
160**${t.websiteUrl} ${i.fullyConformant}**
161
162${i.complianceList}
163
164## ${i.technical}
165${t.websiteUrl} ${i.techIntro}
166
167${i.techList}
168
169${i.techNote}
170
171## ${i.assessment}
172${t.companyName} ${i.assessmentIntro} ${t.websiteUrl} ${i.assessmentBy}
173
174### ${i.automatedTesting}
175${i.automatedList}
176
177### ${i.manualTesting}
178${i.manualList}
179
180### ${i.userTesting}
181${i.userList}
182
183## ${i.widget}
184${i.widgetIntro}
185
186### ${i.profiles}
187${i.profilesIntro}
188
189${i.profilesList}
190
191### ${i.features}
192${i.featuresIntro}
193
194${i.featuresList}
195
196## ${i.feedback}
197${i.feedbackIntro} ${t.websiteUrl}. ${i.feedbackNote}
198
199**${i.contactInfo}**
200${(()=>{const S=[];return t.phoneNumber&&S.push(`- **Phone:** ${t.phoneNumber}`),S.push(`- **E-mail:** ${t.contactEmail}`),t.onlineFormUrl&&S.push(`- **Online Form:** [Link to accessibility feedback form](${t.onlineFormUrl})`),t.visitorAddress&&S.push(`- **Visitor Address:** ${t.visitorAddress}`),t.postalAddress&&S.push(`- **Postal Address:** ${t.postalAddress}`),S.join(`
201`)})()}
202
203**Response Time:** ${i.responseTime}
204
205## ${i.compatibility}
206${t.websiteUrl} ${i.compatibilityIntro}
207
208### ${i.screenReaders}
209${i.screenReadersList}
210
211### ${i.browsers}
212${i.browsersList}
213
214### ${i.otherAssistive}
215${i.otherAssistiveList}
216
217## ${i.limitations}
218${i.limitationsIntro} ${t.websiteUrl}, ${i.limitationsText}
219
220**${i.knownLimitations} ${t.websiteUrl}:**
221
2221. ${i.limitation1}
223
2242. ${i.limitation2}
225
2263. ${i.limitation3}
227
228**${i.whatWereDoing}**
229${i.whatWeDoList}
230
231## ${i.compliance}
232${t.widgetBrandName&&t.widgetBrandName!==l?`${i.statementGenerated} ${d} using professional accessibility assessment tools. ${i.lastReviewed} ${U}.`:`${i.statementGenerated} ${d} using [${t.widgetBrandName||l}'s ${i.aiGenerator}](https://app.webability.io/statement-generator) and manual accessibility assessment tools. ${i.lastReviewed} ${U}.`}
233
234**${i.complianceStatus}**
235- WCAG 2.1 AA: ✅ Fully Compliant
236- Section 508: ✅ Compliant
237- ADA Title III: ✅ Compliant
238- EN 301 549: ✅ Compliant
239
240## ${i.approval}
241${i.approvedBy}
242
243**${t.companyName}**  
244**${i.accessibilityOfficer}**  
245**Email:** ${t.contactEmail}  
246**Date:** ${d}
247
248---
249
250### ${i.aboutStatement}
251
252${t.widgetBrandName&&t.widgetBrandName!==l?`*${i.statementGenerated} ${d}. This statement reflects our current accessibility features and our ongoing commitment to digital inclusion.*`:`*${i.statementGenerated} [${t.widgetBrandName||l}'s Professional ${i.aiGenerator}](https://app.webability.io/statement-generator) ${d}. This statement reflects our current accessibility features and our ongoing commitment to digital inclusion.*`}
253
254**${i.statementDetails}**
255- **Language:** ${o} (${t.language.toUpperCase()})
256- **Industry:** ${t.industry||"General Business"}
257- **${i.complianceLevel}** WCAG 2.1 AA
258- **${i.nextReviewDate}** ${new Date(Date.now()+365*24*60*60*1e3).toLocaleDateString(c,{year:"numeric",month:"long",day:"numeric"})}
259
260${t.widgetBrandName&&t.widgetBrandName!==l?`**${i.poweredBy} [${t.widgetBrandName}](${t.widgetBrandUrl||t.websiteUrl}) - ${i.makingWebAccessible}**`:`**${i.poweredBy} [${t.widgetBrandName||l}](${t.widgetBrandUrl||"https://webability.io"}) - ${i.makingWebAccessible}**`}`},be=(t,n)=>{switch(n){case"html":const m=t.split(`
261`),o=[];let c=!1,d=[];for(let A=0;A<m.length;A++){const v=m[A].trim();if(v.startsWith("### "))c&&(o.push(`<ul style="margin: 1rem 0; padding-left: 1.5rem;">${d.join("")}</ul>`),d=[],c=!1),o.push(`<h3 style="color: #4b5563; font-size: 1.25rem; font-weight: 600; margin: 1rem 0;">${v.substring(4)}</h3>`);else if(v.startsWith("## "))c&&(o.push(`<ul style="margin: 1rem 0; padding-left: 1.5rem;">${d.join("")}</ul>`),d=[],c=!1),o.push(`<h2 style="color: #374151; font-size: 1.5rem; font-weight: 600; margin: 1.25rem 0;">${v.substring(3)}</h2>`);else if(v.startsWith("# "))c&&(o.push(`<ul style="margin: 1rem 0; padding-left: 1.5rem;">${d.join("")}</ul>`),d=[],c=!1),o.push(`<h1 style="color: #1f2937; font-size: 2rem; font-weight: bold; margin: 1.5rem 0;">${v.substring(2)}</h1>`);else if(v.startsWith("- ")){c||(c=!0);const i=v.substring(2).replace(/\*\*(.*?)\*\*/g,'<strong style="font-weight: 600;">$1</strong>').replace(/\[([^\]]+)\]\(([^)]+)\)/g,'<a href="$2" style="color: #0052CC; text-decoration: underline;">$1</a>');d.push(`<li style="margin: 0.5rem 0;">${i}</li>`)}else if(v==="---")c&&(o.push(`<ul style="margin: 1rem 0; padding-left: 1.5rem;">${d.join("")}</ul>`),d=[],c=!1),o.push('<hr style="border: none; border-top: 1px solid #e5e7eb; margin: 2rem 0;">');else if(v==="")c&&(o.push(`<ul style="margin: 1rem 0; padding-left: 1.5rem;">${d.join("")}</ul>`),d=[],c=!1);else{c&&(o.push(`<ul style="margin: 1rem 0; padding-left: 1.5rem;">${d.join("")}</ul>`),d=[],c=!1);let i=v.replace(/\*\*(.*?)\*\*/g,'<strong style="font-weight: 600;">$1</strong>').replace(/\[([^\]]+)\]\(([^)]+)\)/g,'<a href="$2" style="color: #0052CC; text-decoration: underline;">$1</a>').replace(/\*(.*?)\*/g,"<em>$1</em>");
261i.startsWith("<")?o.push(i):o.push(`<p style="margin: 1rem 0; line-height: 1.6; color: #374151;">${i}</p>`)}}return c&&o.push(`<ul style="margin: 1rem 0; padding-left: 1.5rem;">${d.join("")}</ul>`),`<!DOCTYPE html>
262<html lang="en">
263<head>
264    <meta charset="UTF-8">
265    <meta name="viewport" content="width=device-width, initial-scale=1.0">
266    <title>Accessibility Statement</title>
267    <style>
268        body {
269            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
270            line-height: 1.6;
271            color: #374151;
272            max-width: 800px;
273            margin: 0 auto;
274            padding: 2rem;
275            background-color: #ffffff;
276        }
277        h1 { color: #1f2937; font-size: 2rem; font-weight: bold; margin: 1.5rem 0; }
278        h2 { color: #374151; font-size: 1.5rem; font-weight: 600; margin: 1.25rem 0; }
279        h3 { color: #4b5563; font-size: 1.25rem; font-weight: 600; margin: 1rem 0; }
280        p { margin: 1rem 0; line-height: 1.6; }
281        ul { margin: 1rem 0; padding-left: 1.5rem; }
282        li { margin: 0.5rem 0; }
283        strong { font-weight: 600; }
284        hr { border: none; border-top: 1px solid #e5e7eb; margin: 2rem 0; }
285    </style>
286</head>
287<body>
288    ${o.join(`
289`)}
290</body>
291</html>`;case"text":return oe(t);default:return t}},H=()=>be(w,g),ye=async()=>{try{const t=H();if(!t||t.trim()===""){x.error("No content to copy. Please generate a statement first.");return}if(navigator.clipboard&&window.isSecureContext)await navigator.clipboard.writeText(t),x.success(`Statement copied as ${g.toUpperCase()}!`);else{const n=document.createElement("textarea");n.value=t,n.style.position="fixed",n.style.left="-999999px",n.style.top="-999999px",document.body.appendChild(n),n.focus(),n.select();try{if(document.execCommand("copy"))x.success(`Statement copied as ${g.toUpperCase()}!`);else throw new Error("Copy command failed")}finally{document.body.removeChild(n)}}}catch(t){console.error("Copy to clipboard error:",t),x.error("Failed to copy to clipboard. Please try selecting and copying manually.")}},we=()=>{const t=H(),n={markdown:"md",html:"html",text:"txt"},m={markdown:"text/markdown",html:"text/html",text:"text/plain"},o=new Blob([t],{type:m[g]}),c=URL.createObjectURL(o),d=document.createElement("a");d.href=c,d.download=`${a.companyName||"accessibility"}-statement.${n[g]}`,document.body.appendChild(d),d.click(),document.body.removeChild(d),URL.revokeObjectURL(c),x.success(`Statement downloaded as ${g.toUpperCase()}!`)},q=async t=>{if($.includes(t))K(m=>m.filter(o=>o!==t));else{const m=[...$,t];K(m),await xe(t)}},xe=async t=>{if(!w){x.error("Please generate a statement first");return}I(!0),x.info("Applying enhancement...");try{const n={...a};switch(t){case"add-testing":n.industry=a.industry+" (with detailed testing procedures)";break;case"add-timeline":n.industry=a.industry+" (with response timelines)";break;case"add-training":n.industry=a.industry+" (with staff training details)";break;case"add-standards":n.industry=a.industry+" (with additional standards)";break}const m=await ae(n,t);T(m);const o={"add-testing":"automated testing procedures","add-timeline":"response timelines","add-training":"staff training information","add-standards":"additional compliance standards"};x.success(`Enhancement applied: ${o[t]}!`)}catch(n){console.error("Enhancement error:",n),x.error("Failed to apply enhancement. Please try again."),K(m=>m.filter(o=>o!==t))}finally{I(!1)}};return e.jsxs("div",{className:"statement-generator-wrapper min-h-full",children:[e.jsx("style",{children:`
292        /* Custom scrollbar styling to match Figma design */
293        .custom-scrollbar::-webkit-scrollbar {
294          width: 6px;
295        }
296        
297        .custom-scrollbar::-webkit-scrollbar-track {
298          background: transparent;
299        }
300        
301        .custom-scrollbar::-webkit-scrollbar-thumb {
302          background: #7383ED;
303          border-radius: 3px;
304          border: none;
305          min-height: 20px;
306        }
307        
308        .custom-scrollbar::-webkit-scrollbar-thumb:hover {
309          background: #5a6bdb;
310        }
311        
312        .custom-scrollbar::-webkit-scrollbar-corner {
313          background: transparent;
314        }
315        
316        /* For Firefox */
317        .custom-scrollbar {
318          scrollbar-width: thin;
319          scrollbar-color: #7383ED transparent;
320        }
321      `}),e.jsxs("div",{className:"pl-6",children:[e.jsx("header",{className:"text-left mb-1",children:e.jsx("div",{className:"mb-1",children:e.jsx("h1",{className:"text-4xl font-bold text-gray-900 mb-1",children:"AI Accessibility Statement Generator"})})}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-8",children:[e.jsx("div",{className:" statement-preview-section w-full lg:col-span-2",children:e.jsx("div",{className:"pt-2 w-full",children:w?e.jsxs("div",{children:[e.jsx("div",{className:"mb-6",children:e.jsxs("div",{role:"tablist","aria-label":"Format selection",className:"flex flex-row max-md:flex-col bg-gray-50 border border-border rounded-lg p-1",children:[e.jsxs("button",{role:"tab","aria-selected":g==="markdown","aria-controls":"format-panel-markdown",id:"format-tab-markdown",onClick:()=>R("markdown"),className:`flex-1 px-4 py-3 rounded-md font-medium text-sm transition ${g==="markdown"?"bg-[#0052CC] text-white shadow-sm":"text-gray-600 hover:text-gray-800"}`,children:[e.jsx(Fe,{className:"inline mr-2",size:14}),"Markdown"]}),e.jsxs("button",{role:"tab","aria-selected":g==="html","aria-controls":"format-panel-html",id:"format-tab-html",onClick:()=>R("html"),className:`flex-1 px-4 py-3 rounded-md font-medium text-sm transition ${g==="html"?"bg-[#0052CC] text-white shadow-sm":"text-gray-600 hover:text-gray-800"}`,children:[e.jsx(Pe,{className:"inline mr-2",size:14}),"HTML"]}),e.jsxs("button",{role:"tab","aria-selected":g==="text","aria-controls":"format-panel-text",id:"format-tab-text",onClick:()=>R("text"),className:`flex-1 px-4 py-3 rounded-md font-medium text-sm transition ${g==="text"?"bg-[#0052CC] text-white shadow-sm":"text-gray-600 hover:text-gray-800"}`,children:[e.jsx(We,{className:"inline mr-2",size:14}),"Plain Text"]})]})}),e.jsx("div",{role:"tabpanel",id:`format-panel-${g}`,"aria-labelledby":`format-tab-${g}`,tabIndex:0,"aria-label":`Generated statement in ${g} format. Use arrow keys to scroll.`,className:"bg-[#edf2fd] p-6 pr-4 rounded-2xl max-h-[600px] overflow-y-auto mb-6 border border-border custom-scrollbar focus:outline-hidden focus:ring-2 focus:ring-blue-500 focus:ring-offset-2",style:{fontFamily:g==="html"?"inherit":"monospace",fontSize:g==="html"?"0.9rem":"0.875rem"},children:g==="html"?e.jsx("div",{className:"prose prose-sm max-w-none",dangerouslySetInnerHTML:{__html:Te.sanitize(H().replace(/^<!DOCTYPE html>[\s\S]*<body>/,"").replace(/<\/body>[\s\S]*<\/html>$/,""))},style:{fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',lineHeight:"1.6",color:"#374151"}}):e.jsx("pre",{className:"whitespace-pre-wrap text-gray-800",style:{margin:0},children:H()})}),e.jsxs("ul",{role:"list",className:"flex flex-col md:flex-row gap-4 mb-4 justify-end list-none p-0 m-0",children:[e.jsx("li",{children:e.jsxs(J,{variant:"outlined",onClick:ye,startIcon:e.jsx(Be,{}),sx:{py:1.5,borderRadius:"12px",textTransform:"none",fontSize:"1rem",fontWeight:"600",borderColor:"#0052CC",color:"#0052CC","&:focus-visible":{outline:"none !important",boxShadow:"0 0 0 3px #ffffff, 0 0 0 5px #111827, 0 4px 12px rgba(0, 82, 204, 0.25) !important"},"&:focus":{outline:"none !important",boxShadow:"0 0 0 3px #ffffff, 0 0 0 5px #111827, 0 4px 12px rgba(0, 82, 204, 0.25) !important"},"&:hover":{backgroundColor:"#f8faff",borderColor:"#003EB8"}},children:["Copy ",g.toUpperCase()]})}),e.jsx("li",{children:e.jsxs(J,{variant:"contained",onClick:we,startIcon:e.jsx(De,{}),sx:{py:1.5,borderRadius:"12px",textTransform:"none",fontSize:"1rem",fontWeight:"600",backgroundColor:"#0052CC","&:focus-visible":{outline:"none !important",boxShadow:"0 0 0 3px #ffffff, 0 0 0 5px #111827, 0 4px 12px rgba(0, 82, 204, 0.25) !important"},"&:focus":{outline:"none !important",boxShadow:"0 0 0 3px #ffffff, 0 0 0 5px #111827, 0 4px 12px rgba(0, 82, 204, 0.25) !important"},"&:hover":{backgroundColor:"#003EB8"}},children:["Download ",g.toUpperCase()]})})]})]}):e.jsxs("div",{className:"flex flex-col items-center justify-center min-h-[600px] bg-gradient-to-br from-blue-50 via-blue-50 to-indigo-50 rounded-2xl border border-border p-8",children:[e.jsx("div",{className:"relative mb-6",children:e.jsx("img",{src:et,alt:"",role:"presentation",className:"w-24 h-30 mx-auto drop-shadow-sm"})}),e.jsxs("div",{className:"text-center max-w-md",children:[e.jsx("h2",{className:"text-lg font-medium text-gray-700 mb-2 leading-relaxed",children:"Your statement will be shown here after generated"}),e.jsx("p",{className:"text-sm text-gray-700 leading-relaxed",children:'Fill in the form and click "Generate AI Statement" to create your accessibility statement'})]})]})})}),e.jsx("div",{className:"bg-white rounded-3xl shadow-lg border border-border h-fit company-form-section lg:max-w-lg max-h-[800px] overflow-y-auto custom-scrollbar focus:outline-hidden focu
321s:ring-2 focus:ring-blue-500 focus:ring-offset-2",tabIndex:0,role:"region","aria-label":"Company information form. Use arrow keys, Page Up, Page Down, Home, or End to scroll.",children:e.jsx("div",{className:"p-8",children:de?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center mb-6",children:[e.jsx("button",{onClick:()=>X(!1),"aria-label":"Back",className:"mr-4 p-2 hover:bg-gray-100 rounded-lg transition-colors",children:e.jsx("svg",{className:"w-5 h-5 text-gray-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"})})}),e.jsx("h2",{className:"text-2xl font-bold text-gray-900",children:"Enhance Statement"})]}),e.jsx("p",{className:"text-gray-600 mb-6",children:"Select one or more enhancement"}),e.jsxs("div",{className:"space-y-4 mb-8",children:[e.jsxs("button",{onClick:()=>q("add-testing"),className:`w-full p-4 text-left rounded-lg border-2 transition ${$.includes("add-testing")?"border-[#0052CC] bg-[#0052CC] text-white":"border-border bg-white text-gray-900 hover:border-input"}`,children:[e.jsx("div",{className:"font-medium mb-1",children:"Add testing details"}),e.jsx("div",{className:`text-sm ${$.includes("add-testing")?"text-white":"opacity-80"}`,children:"Include automated testing tools and procedures"})]}),e.jsxs("button",{onClick:()=>q("add-timeline"),className:`w-full p-4 text-left rounded-lg border-2 transition ${$.includes("add-timeline")?"border-[#0052CC] bg-[#0052CC] text-white":"border-border bg-white text-gray-900 hover:border-input"}`,children:[e.jsx("div",{className:"font-medium mb-1",children:"Add Response Time"}),e.jsx("div",{className:`text-sm ${$.includes("add-timeline")?"text-white":"opacity-80"}`,children:"Include specific response times for feedback"})]}),e.jsxs("button",{onClick:()=>q("add-training"),className:`w-full p-4 text-left rounded-lg border-2 transition ${$.includes("add-training")?"border-[#0052CC] bg-[#0052CC] text-white":"border-border bg-white text-gray-900 hover:border-input"}`,children:[e.jsx("div",{className:"font-medium mb-1",children:"Add Staff Training"}),e.jsx("div",{className:`text-sm ${$.includes("add-training")?"text-white":"opacity-80"}`,children:"Include information about accessibility training"})]}),e.jsxs("button",{onClick:()=>q("add-standards"),className:`w-full p-4 text-left rounded-lg border-2 transition ${$.includes("add-standards")?"border-[#0052CC] bg-[#0052CC] text-white":"border-border bg-white text-gray-900 hover:border-input"}`,children:[e.jsx("div",{className:"font-medium mb-1",children:"Add More Standards"}),e.jsx("div",{className:`text-sm ${$.includes("add-standards")?"text-white":"opacity-80"}`,children:"Include EN 301 549 and Section 508 compliance"})]})]})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"mb-8",children:[e.jsx("h2",{className:"text-2xl font-bold text-gray-900 mb-2",children:"Company Information"}),e.jsx("p",{className:"text-gray-600",children:"Fill in your details to generate a customized accessibility statement"}),e.jsx("p",{className:"text-sm text-gray-600 mt-2",role:"note","aria-label":"Required fields instruction",children:"Fields marked with an asterisk (*) are required."})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx(E,{fullWidth:!0,label:"Company Name",name:"companyName",value:a.companyName,onChange:k("companyName"),placeholder:"Enter your company name",variant:"outlined",required:!0,error:!!y.companyName,helperText:y.companyName,inputProps:{"aria-required":!0,"aria-label":"Company Name","aria-invalid":!!y.companyName,"aria-describedby":y.companyName?"company-name-error":void 0,autoComplete:"organization",onPaste:t=>{t.stopPropagation()}},FormHelperTextProps:{id:"company-name-error",role:"alert"},sx:{"& .MuiOutlinedInput-input::placeholder":{color:"#6B7280",o
321pacity:1}}}),e.jsx(E,{fullWidth:!0,label:"Website URL",name:"websiteUrl",value:a.websiteUrl,onChange:k("websiteUrl"),placeholder:"https://example.com",variant:"outlined",required:!0,error:!!y.websiteUrl,helperText:y.websiteUrl,inputProps:{"aria-required":!0,"aria-label":"Website URL","aria-invalid":!!y.websiteUrl,"aria-describedby":y.websiteUrl?"website-url-error":void 0,autoComplete:"url",onPaste:t=>{t.stopPropagation()}},FormHelperTextProps:{id:"website-url-error",role:"alert"},sx:{"& .MuiOutlinedInput-input::placeholder":{color:"#6B7280",opacity:1}}}),e.jsx(E,{fullWidth:!0,label:"Contact Email",name:"contactEmail",value:a.contactEmail,onChange:k("contactEmail"),placeholder:"[email protected]",variant:"outlined",required:!0,error:!!y.contactEmail,helperText:y.contactEmail,inputProps:{"aria-required":!0,"aria-label":"Contact Email","aria-invalid":!!y.contactEmail,"aria-describedby":y.contactEmail?"contact-email-error":void 0,autoComplete:"email",onPaste:t=>{t.stopPropagation()}},FormHelperTextProps:{id:"contact-email-error",role:"alert"},sx:{"& .MuiOutlinedInput-input::placeholder":{color:"#6B7280",o
321pacity:1}}}),e.jsxs(Ce,{fullWidth:!0,required:!0,error:!!y.industry,children:[e.jsx($e,{id:"industry-label",children:"Industry"}),e.jsx(ke,{value:a.industry,onChange:k("industry"),label:"Industry",labelId:"industry-label",name:"industry",inputProps:{"aria-required":"true","aria-label":"Industry, required","aria-invalid":!!y.industry,"aria-describedby":y.industry?"industry-error":void 0,"aria-labelledby":"industry-label"},children:ue.map(t=>e.jsx(Ae,{value:t,children:t},t))}),y.industry&&e.jsx("p",{id:"industry-error",role:"alert",className:"MuiFormHelperText-root MuiFormHelperText-contained Mui-error",style:{margin:"3px 14px 0",fontSize:"0.75rem",color:"#d32f2f"},children:y.industry})]}),e.jsxs("div",{className:"relative language-dropdown-section",children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:"Language"}),e.jsxs("div",{className:"relative",children:[e.jsxs("button",{type:"button",onClick:()=>z(!N),"aria-label":"Language selector","aria-expanded":N,"aria-haspopup":"listbox",className:"w-full px-3 py-3 text-left bg-white border border-input rounded-lg shadow-xs focus:outline-hidden focus:ring-2 focus:ring-primary focus:border-primary",children:[e.jsx("span",{className:"block truncate",children:pe}),e.jsx("span",{className:"absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none",children:e.jsx("svg",{className:"h-5 w-5",style:{color:"#767676"},viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z",clipRule:"evenodd"})})})]}),N&&e.jsxs("div",{className:"absolute z-10 mt-1 w-full bg-white shadow-lg border border-input rounded-lg",children:[e.jsx("div",{className:"p-3 border-b border-border",children:e.jsx("input",{type:"text",placeholder:"Search languages...",value:P,onChange:t=>f(t.target.value),"aria-label":"Search languages",className:"w-full px-3 py-2 border border-input rounded-lg focus:outline-hidden focus:ring-2 focus:ring-primary focus:border-primary text-sm placeholder:text-gray-600"})}),e.jsxs("div",{className:"max-h-60 overflow-auto custom-scrollbar focus:outline-hidden focus:ring-2 focus:ring-blue-500 focus:ring-offset-2",tabIndex:0,role:"region","aria-label":"Language options. Use arrow keys, Page Up, Page Down, Home, or End to scroll.",children:[ie.map(t=>e.jsx("button",{type:"button",onClick:()=>{p(n=>({...n,language:t.code})),z(!1),f("")},className:`w-full text-left px-3 py-2 hover:bg-gray-100 focus:outline-hidden focus:bg-gray-100 ${a.language===t.code?"bg-primary/10 text-primary font-medium":"text-gray-900"}`,children:e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsxs("span",{children:[t.name," (",t.englishName,")"]}),a.language===t.code&&e.jsx("svg",{className:"h-4 w-4 text-primary",fill:"currentColor",viewBox:"0 0 20 20",children:e.jsx("path",{fillRule:"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",clipRule:"evenodd"})})]})},t.code)),ie.length===0&&e.jsx("div",{className:"px-3 py-2 text-gray-500 text-sm",children:"No languages found"})]})]})]})]}),e.jsxs("div",{className:"my-6 border-t border-border pt-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsx("h3",{className:"text-lg font-semibold text-gray-900",children:"Optional Information"}),e.jsx("button",{type:"button",onClick:()=>ce(!D),className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors focus:outline-hidden focus:ring-2 focus:ring-primary focus:ring-offset-2 ${D?"bg-blue-600":""}`,style:{backgroundColor:D?"#2563eb":"#878993"},"aria-label":"Toggle optional fields",children:e.jsx("span",{className:`inline-block h-4 w-4 transform rounded-full bg-white shadow-xs transition-transform ${D?"translate-x-6":"translate-x-1"}`})})]}),D&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"mb-4",children:[e.jsxs("p",{className:"text-sm text-gray-600 mb-3",children:["Customize enhancer branding (leave empty to use",l,")"]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsx(E,{fullWidth:!0,label:"Enhancer Brand Name",value:a.widgetBrandName,onChange:k("widgetBrandName"),placeholder:l,variant:"outlined",size:"small",inputProps:{autoComplete:"organization"},sx:{"& .MuiOutlinedInput-input::placeholder":{color:"#6B7280",o
321pacity:1}}}),e.jsx(E,{fullWidth:!0,label:"Enhancer Brand URL",value:a.widgetBrandUrl,onChange:k("widgetBrandUrl"),placeholder:"https://webability.io",variant:"outlined",size:"small",inputProps:{autoComplete:"url"},sx:{"& .MuiOutlinedInput-input::placeholder":{color:"#6B7280",opacity:1}}})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm text-gray-600 mb-3",children:"Additional contact information (fields left empty will not appear in the statement)"}),e.jsxs("div",{className:"space-y-4",children:[e.jsx(E,{fullWidth:!0,label:"Phone Number",value:a.phoneNumber,onChange:k("phoneNumber"),placeholder:"+1 (555) 123-4567",variant:"outlined",size:"small",inputProps:{autoComplete:"tel"},sx:{"& .MuiOutlinedInput-input::placeholder":{color:"#6B7280",opacity:1}}}),e.jsx(E,{fullWidth:!0,label:"Online Form URL",value:a.onlineFormUrl,onChange:k("onlineFormUrl"),placeholder:"https://example.com/accessibility-feedback",variant:"outlined",size:"small",inputProps:{autoComplete:"url"},sx:{"& .MuiOutlinedInput-input::placeholder":{color:"#6B7280",o
321pacity:1}}}),e.jsx(E,{fullWidth:!0,label:"Visitor Address",value:a.visitorAddress,onChange:k("visitorAddress"),placeholder:"123 Main St, Suite 100, City, State 12345",variant:"outlined",size:"small",inputProps:{autoComplete:"street-address"},sx:{"& .MuiOutlinedInput-input::placeholder":{color:"#6B7280",opacity:1}}}),e.jsx(E,{fullWidth:!0,label:"Postal Address",value:a.postalAddress,onChange:k("postalAddress"),placeholder:"P.O. Box 123, City, State 12345",variant:"outlined",size:"small",inputProps:{autoComplete:"address-line2"},sx:{"& .MuiOutlinedInput-input::placeholder":{color:"#6B7280",opacity:1}}})]})]})]})]})]}),e.jsxs("div",{className:"generate-button-section",children:[e.jsx(J,{fullWidth:!0,variant:"contained",size:"large",onClick:he,disabled:F,startIcon:F?e.jsx(je,{size:20,color:"inherit"}):e.jsx(ze,{}),sx:{mt:4,py:2,borderRadius:"12px",textTransform:"none",fontSize:"1.1rem",fontWeight:"600",background:"#0052CC",color:"white",boxShadow:"0 4px 12px rgba(0, 82, 204, 0.25)",border:"none",position:"relative",overflow:"hidden","&:before":{content:'""',position:"absolute",top:0,left:0,right:0,height:"1px",background:"linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent)"},"&:focus-visible":{outline:"none !important",boxShadow:"0 0 0 3px #ffffff, 0 0 0 5px #111827, 0 4px 12px rgba(0, 82, 204, 0.25) !important"},"&:focus":{outline:"none !important",boxShadow:"0 0 0 3px #ffffff, 0 0 0 5px #111827, 0 4px 12px rgba(0, 82, 204, 0.25) !important"},"&:hover":{background:"#003EB8",boxShadow:"0 6px 16px rgba(0, 82, 204, 0.3)",transform:"translateY(-1px)"},"&:active":{transform:"translateY(0)",boxShadow:"0 2px 8px rgba(0, 82, 204, 0.2)"},"&:disabled":{background:"#9ca3af",transform:"none",boxShadow:"none"}},children:F?"Generating...":"Generate"}),w&&e.jsx(J,{fullWidth:!0,variant:"text",size:"medium",onClick:()=>X(!0),sx:{mt:2,py:1.5,textTransform:"none",fontSize:"0.9rem",fontWeight:"500",color:"#0052CC","&:hover":{backgroundColor:"#f8faff"}},children:"Enhance Statement"}),e.jsx("div",{className:"mt-6",children:e.jsx(Xe,{site:Ze(s||a.websiteUrl),generatedStatement:w})})]})]})})})]})]}),e.jsx(Oe,{steps:u,tourKey:Me.statementGenerator})]})};export{ft as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.