@yuktishaalaa/yuktai 2.0.8 → 2.0.10

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,270 @@
1
+ "use strict";var YuktAI=(()=>{var E=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var j=Object.prototype.hasOwnProperty;var K=(t,i)=>{for(var n in i)E(t,n,{get:i[n],enumerable:!0})},O=(t,i,n,s)=>{if(i&&typeof i=="object"||typeof i=="function")for(let a of I(i))!j.call(t,a)&&a!==n&&E(t,a,{get:()=>i[a],enumerable:!(s=P(i,a))||s.enumerable});return t};var G=t=>O(E({},"__esModule",{value:!0}),t);var re={};K(re,{wcagPlugin:()=>ae});var w=null,C=null,A=null,$=null,T=null,b=null,m=null,h=null,S=null,g=null,k={deuteranopia:"yuktai-cb-d",protanopia:"yuktai-cb-p",tritanopia:"yuktai-cb-t"},H=new Set(["h1","h2","h3","h4","h5","h6"]),q=new Set(["input","select","textarea"]),W=new Set(["button","a","input","select","textarea","details","summary"]),V=new Set(["video","audio"]),Y=new Set(["ul","ol","dl"]);var L={nav:"navigation",header:"banner",footer:"contentinfo",main:"main",aside:"complementary"};function M(t,i="polite"){if(typeof window>"u"||!g?.speechEnabled||!window.speechSynthesis)return;window.speechSynthesis.cancel();let n=new SpeechSynthesisUtterance(t);n.rate=1,n.pitch=1,n.volume=1;let s=window.speechSynthesis.getVoices();s.length>0&&(n.voice=s[0]),window.speechSynthesis.speak(n)}function R(t,i="info"){if(typeof document>"u")return;let s={success:{bg:"#0f9d58",border:"#0a7a44",icon:"\u2713"},error:{bg:"#d93025",border:"#b52a1c",icon:"\u2715"},warning:{bg:"#f29900",border:"#c67c00",icon:"\u26A0"},info:{bg:"#1a73e8",border:"#1557b0",icon:"\u2139"}}[i];b||(b=document.createElement("div"),b.setAttribute("role","alert"),b.setAttribute("aria-live","assertive"),b.setAttribute("aria-atomic","true"),b.style.cssText=`
2
+ position:fixed;top:80px;right:16px;z-index:999999;
3
+ max-width:320px;width:calc(100% - 32px);
4
+ border-radius:8px;padding:12px 16px;
5
+ display:flex;align-items:center;gap:10px;
6
+ font-family:system-ui,sans-serif;font-size:14px;
7
+ box-shadow:0 4px 12px rgba(0,0,0,0.3);
8
+ transition:transform 0.3s,opacity 0.3s;
9
+ transform:translateX(120%);opacity:0;
10
+ `,document.body.appendChild(b)),b.style.background=s.bg,b.style.border=`1px solid ${s.border}`,b.style.color="#fff",b.innerHTML=`
11
+ <span style="font-size:18px;font-weight:700">${s.icon}</span>
12
+ <span style="flex:1;line-height:1.4">${t}</span>
13
+ <button onclick="this.parentElement.style.transform='translateX(120%)';this.parentElement.style.opacity='0'"
14
+ style="background:none;border:none;color:#fff;cursor:pointer;font-size:18px;padding:0;line-height:1"
15
+ aria-label="Close notification">\xD7</button>
16
+ `,requestAnimationFrame(()=>{b&&(b.style.transform="translateX(0)",b.style.opacity="1")}),setTimeout(()=>{b&&(b.style.transform="translateX(120%)",b.style.opacity="0")},5e3)}function c(t,i="info",n=!0){w&&(w.textContent=t),R(t,i),n&&M(t,i==="error"?"assertive":"polite")}function U(){if(typeof document>"u"||$)return;let t=[{label:"Skip to main content",selector:"main,[role='main'],#main,#main-content"},{label:"Skip to navigation",selector:"nav,[role='navigation'],#nav,#navigation"},{label:"Skip to search",selector:"[role='search'],#search,input[type='search']"}],i=document.createElement("div");i.setAttribute("data-yuktai-skip-bar","true"),i.setAttribute("role","navigation"),i.setAttribute("aria-label","Skip links"),i.style.cssText=`
17
+ position:fixed;top:0;left:0;right:0;z-index:999999;
18
+ display:flex;gap:4px;padding:4px;
19
+ background:#111;
20
+ transform:translateY(-100%);
21
+ transition:transform 0.2s ease;
22
+ font-family:system-ui,sans-serif;
23
+ `;let n=!1;if(t.forEach(({label:a,selector:l})=>{let e=document.querySelector(l);if(!e)return;n=!0,e.getAttribute("tabindex")||e.setAttribute("tabindex","-1");let r=document.createElement("a");r.href="#",r.textContent=a,r.style.cssText=`
24
+ color:#fff;background:#1a73e8;
25
+ padding:8px 14px;border-radius:4px;
26
+ font-size:13px;font-weight:600;
27
+ text-decoration:none;white-space:nowrap;
28
+ border:2px solid transparent;
29
+ transition:background 0.15s,border-color 0.15s;
30
+ `,r.addEventListener("focus",()=>{i.style.transform="translateY(0)"}),r.addEventListener("blur",()=>{setTimeout(()=>{i.matches(":focus-within")||(i.style.transform="translateY(-100%)")},2e3)}),r.addEventListener("keydown",p=>{(p.key==="Enter"||p.key===" ")&&(p.preventDefault(),e.focus(),e.scrollIntoView({behavior:"smooth",block:"start"}),c(`Jumped to ${a.replace("Skip to ","")}`,"info"),i.style.transform="translateY(-100%)")}),r.addEventListener("click",p=>{p.preventDefault(),e.focus(),e.scrollIntoView({behavior:"smooth",block:"start"}),c(`Jumped to ${a.replace("Skip to ","")}`,"info"),i.style.transform="translateY(-100%)"}),r.addEventListener("mouseover",()=>{r.style.background="#1557b0",r.style.borderColor="#fff"}),r.addEventListener("mouseout",()=>{r.style.background="#1a73e8",r.style.borderColor="transparent"}),i.appendChild(r)}),!n)return;window.innerWidth<768&&(i.style.transform="translateY(0)",i.style.position="sticky"),document.body.insertBefore(i,document.body.firstChild),$=i}function J(){if(typeof document>"u"||document.querySelector("[data-yuktai-focus-style]"))return;let t=document.createElement("style");t.setAttribute("data-yuktai-focus-style","true"),t.textContent=`
31
+ /* WCAG 2.4.11 \u2014 minimum 2px solid focus indicator */
32
+ [data-yuktai-a11y] *:focus-visible {
33
+ outline: 3px solid #1a73e8 !important;
34
+ outline-offset: 3px !important;
35
+ border-radius: 2px !important;
36
+ box-shadow: 0 0 0 6px rgba(26,115,232,0.15) !important;
37
+ }
38
+
39
+ /* High contrast focus */
40
+ [data-yuktai-high-contrast] *:focus-visible {
41
+ outline: 3px solid #ffff00 !important;
42
+ outline-offset: 3px !important;
43
+ box-shadow: 0 0 0 6px rgba(255,255,0,0.2) !important;
44
+ }
45
+
46
+ /* Keyboard hint mode */
47
+ [data-yuktai-keyboard] *:focus {
48
+ outline: 3px solid #ff6b35 !important;
49
+ outline-offset: 3px !important;
50
+ }
51
+
52
+ /* Remove default outline \u2014 replaced by above */
53
+ [data-yuktai-a11y] *:focus:not(:focus-visible) {
54
+ outline: none !important;
55
+ }
56
+
57
+ /* Large targets \u2014 WCAG 2.5.8 */
58
+ [data-yuktai-large-targets] button,
59
+ [data-yuktai-large-targets] a,
60
+ [data-yuktai-large-targets] input,
61
+ [data-yuktai-large-targets] select,
62
+ [data-yuktai-large-targets] [role="button"] {
63
+ min-height: 44px !important;
64
+ min-width: 44px !important;
65
+ }
66
+
67
+ /* Reduce motion \u2014 WCAG 2.3.3 */
68
+ [data-yuktai-reduce-motion] *,
69
+ [data-yuktai-reduce-motion] *::before,
70
+ [data-yuktai-reduce-motion] *::after {
71
+ animation-duration: 0.001ms !important;
72
+ transition-duration: 0.001ms !important;
73
+ }
74
+
75
+ /* High contrast mode */
76
+ [data-yuktai-high-contrast] {
77
+ filter: contrast(1.4) brightness(1.05) !important;
78
+ }
79
+
80
+ /* Dark mode */
81
+ [data-yuktai-dark] {
82
+ filter: invert(1) hue-rotate(180deg) !important;
83
+ }
84
+ [data-yuktai-dark] img,
85
+ [data-yuktai-dark] video,
86
+ [data-yuktai-dark] canvas {
87
+ filter: invert(1) hue-rotate(180deg) !important;
88
+ }
89
+
90
+ /* Skip link bar responsive */
91
+ @media (max-width: 768px) {
92
+ [data-yuktai-skip-bar] {
93
+ flex-wrap: wrap;
94
+ }
95
+ [data-yuktai-skip-bar] a {
96
+ font-size: 12px !important;
97
+ padding: 6px 10px !important;
98
+ }
99
+ }
100
+
101
+ /* Preference panel responsive */
102
+ @media (max-width: 480px) {
103
+ [data-yuktai-panel] {
104
+ width: 100% !important;
105
+ right: 0 !important;
106
+ bottom: 0 !important;
107
+ border-radius: 16px 16px 0 0 !important;
108
+ }
109
+ }
110
+
111
+ /* Link underline enforcement */
112
+ [data-yuktai-a11y] a:not([role]):not([class]) {
113
+ text-decoration: underline !important;
114
+ }
115
+ `,document.head.appendChild(t),document.documentElement.setAttribute("data-yuktai-a11y","true")}function X(){typeof document>"u"||document.querySelector("[data-yuktai-kb-init]")||(document.documentElement.setAttribute("data-yuktai-kb-init","true"),document.addEventListener("keydown",t=>{let i=document.activeElement;if(!i)return;let n=i.getAttribute("role")||"";if(t.key==="Escape"){let s=i.closest("[role='dialog'],[role='alertdialog']");if(s){s.style.display="none";let l=s.getAttribute("data-yuktai-trigger");l&&document.querySelector(`[data-yuktai-id='${l}']`)?.focus(),c("Dialog closed","info");return}let a=i.closest("[role='menu'],[role='menubar']");a&&(a.style.display="none",c("Menu closed","info"))}if(n==="menuitem"||i.closest("[role='menu'],[role='menubar']")){let s=i.closest("[role='menu'],[role='menubar']");if(!s)return;let a=Array.from(s.querySelectorAll("[role='menuitem']:not([disabled])")),l=a.indexOf(i);t.key==="ArrowDown"||t.key==="ArrowRight"?(t.preventDefault(),a[(l+1)%a.length]?.focus()):t.key==="ArrowUp"||t.key==="ArrowLeft"?(t.preventDefault(),a[(l-1+a.length)%a.length]?.focus()):t.key==="Home"?(t.preventDefault(),a[0]?.focus()):t.key==="End"&&(t.preventDefault(),a[a.length-1]?.focus())}if(n==="tab"||i.closest("[role='tablist']")){let s=i.closest("[role='tablist']");if(!s)return;let a=Array.from(s.querySelectorAll("[role='tab']:not([disabled])")),l=a.indexOf(i);if(t.key==="ArrowRight"||t.key==="ArrowDown"){t.preventDefault();let e=a[(l+1)%a.length];e?.focus(),e?.click()}else if(t.key==="ArrowLeft"||t.key==="ArrowUp"){t.preventDefault();let e=a[(l-1+a.length)%a.length];e?.focus(),e?.click()}}if(n==="option"||i.closest("[role='listbox']")){let s=i.closest("[role='listbox']");if(!s)return;let a=Array.from(s.querySelectorAll("[role='option']:not([aria-disabled='true'])")),l=a.indexOf(i);t.key==="ArrowDown"?(t.preventDefault(),a[(l+1)%a.length]?.focus()):t.key==="ArrowUp"?(t.preventDefault(),a[(l-1+a.length)%a.length]?.focus()):(t.key==="Enter"||t.key===" ")&&(t.preventDefault(),i.setAttribute("aria-selected","true"),a.forEach(e=>{e!==i&&e.setAttribute("aria-selected","false")}),c(`Selected: ${i.textContent?.trim()}`,"success"))}t.altKey&&t.key==="a"&&(t.preventDefault(),N()),t.key==="Tab"&&g?.speechEnabled&&setTimeout(()=>{let s=document.activeElement;if(!s)return;let a=s.getAttribute("aria-label")||s.getAttribute("title")||s.textContent?.trim()||s.tagName.toLowerCase(),l=s.getAttribute("role")||s.tagName.toLowerCase();M(`${a}, ${l}`)},100)}))}function y(t){let i=t.querySelectorAll('button:not([disabled]),a[href],input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"]),[role="button"]');if(i.length===0)return;let n=i[0],s=i[i.length-1];n.focus(),t.addEventListener("keydown",a=>{a.key==="Tab"&&(a.shiftKey?document.activeElement===n&&(a.preventDefault(),s.focus()):document.activeElement===s&&(a.preventDefault(),n.focus()))})}function N(){if(typeof document>"u")return;if(m){m.remove(),m=null;return}let t=document.createElement("div");t.setAttribute("role","dialog"),t.setAttribute("aria-label","Keyboard shortcuts"),t.setAttribute("aria-modal","true"),t.style.cssText=`
116
+ position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);
117
+ z-index:999999;background:#1a1a2e;color:#fff;
118
+ border-radius:12px;padding:24px;width:320px;max-width:calc(100vw - 32px);
119
+ box-shadow:0 20px 60px rgba(0,0,0,0.5);
120
+ font-family:system-ui,sans-serif;
121
+ `;let i=[["Alt + A","Open/close this menu"],["Tab","Next focusable element"],["Shift+Tab","Previous focusable element"],["Enter","Activate button or link"],["Space","Check checkbox / scroll"],["Arrow keys","Navigate lists and menus"],["Escape","Close dialog or menu"],["Home","First item in list"],["End","Last item in list"]];t.innerHTML=`
122
+ <div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:16px">
123
+ <h2 style="margin:0;font-size:16px;font-weight:700;color:#74c0fc">
124
+ \u2328 Keyboard shortcuts
125
+ </h2>
126
+ <button data-yuktai-close style="background:none;border:none;color:#aaa;cursor:pointer;font-size:20px;padding:0;line-height:1" aria-label="Close shortcuts">\xD7</button>
127
+ </div>
128
+ ${i.map(([s,a])=>`
129
+ <div style="display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid #2a2a4a">
130
+ <kbd style="background:#2a2a4a;color:#74c0fc;padding:3px 8px;border-radius:4px;font-size:12px;font-family:monospace;border:1px solid #3a3a6a">${s}</kbd>
131
+ <span style="font-size:12px;color:#ccc;text-align:right;flex:1;margin-left:12px">${a}</span>
132
+ </div>
133
+ `).join("")}
134
+ <p style="margin:12px 0 0;font-size:11px;color:#888;text-align:center">
135
+ Powered by @yuktai/a11y \xB7 Press Escape to close
136
+ </p>
137
+ `,t.querySelector("[data-yuktai-close]")?.addEventListener("click",()=>{t.remove(),m=null}),t.addEventListener("keydown",s=>{s.key==="Escape"&&(t.remove(),m=null)}),document.body.appendChild(t),m=t,y(t),c("Keyboard shortcuts opened. Press Escape to close.","info")}function Z(t){if(typeof document>"u"||!g?.showAuditBadge||typeof window<"u"&&!window.location.hostname.includes("localhost")&&!window.location.hostname.includes("127.0.0.1"))return;T&&T.remove();let i=t.score,n=i>=90?"#0f9d58":i>=70?"#f29900":"#d93025",s=i>=90?"\u267F":i>=70?"\u26A0":"\u2715",a=document.createElement("button");a.setAttribute("aria-label",`Accessibility score: ${i} out of 100. Click for details.`),a.setAttribute("data-yuktai-badge","true"),a.style.cssText=`
138
+ position:fixed;bottom:16px;left:16px;z-index:999998;
139
+ background:${n};color:#fff;
140
+ border:none;border-radius:20px;cursor:pointer;
141
+ padding:6px 12px;font-size:12px;font-weight:700;
142
+ font-family:system-ui,sans-serif;
143
+ box-shadow:0 2px 8px rgba(0,0,0,0.3);
144
+ display:flex;align-items:center;gap:6px;
145
+ transition:transform 0.15s;
146
+ `,a.innerHTML=`${s} ${i}/100 <span style="font-weight:400;opacity:0.85">${t.details.length} issues</span>`,a.addEventListener("mouseenter",()=>{a.style.transform="scale(1.05)"}),a.addEventListener("mouseleave",()=>{a.style.transform="scale(1)"}),a.addEventListener("click",()=>{Q(t)}),document.body.appendChild(a),T=a}function Q(t){let i=document.querySelector("[data-yuktai-audit-details]");if(i){i.remove();return}let n=document.createElement("div");n.setAttribute("data-yuktai-audit-details","true"),n.setAttribute("role","dialog"),n.setAttribute("aria-label","Accessibility audit details"),n.style.cssText=`
147
+ position:fixed;bottom:56px;left:16px;z-index:999999;
148
+ background:#1a1a2e;color:#fff;border-radius:12px;
149
+ padding:16px;width:340px;max-width:calc(100vw - 32px);
150
+ max-height:60vh;overflow-y:auto;
151
+ box-shadow:0 8px 32px rgba(0,0,0,0.5);
152
+ font-family:system-ui,sans-serif;font-size:12px;
153
+ `;let s={critical:"#d93025",serious:"#f29900",moderate:"#1a73e8",minor:"#0f9d58"};n.innerHTML=`
154
+ <div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:12px">
155
+ <strong style="font-size:14px;color:#74c0fc">Audit Report</strong>
156
+ <span style="color:#aaa">${t.fixed} fixed \xB7 ${t.renderTime}ms</span>
157
+ </div>
158
+ ${t.details.slice(0,20).map(a=>`
159
+ <div style="padding:6px 0;border-bottom:1px solid #2a2a4a">
160
+ <div style="display:flex;gap:6px;align-items:center">
161
+ <span style="background:${s[a.severity]};color:#fff;padding:1px 6px;border-radius:4px;font-size:10px;font-weight:700;text-transform:uppercase">${a.severity}</span>
162
+ <code style="color:#74c0fc">&lt;${a.tag}&gt;</code>
163
+ </div>
164
+ <div style="color:#ccc;margin-top:3px">${a.fix}</div>
165
+ </div>
166
+ `).join("")}
167
+ ${t.details.length>20?`<div style="color:#888;padding:8px 0;text-align:center">+${t.details.length-20} more issues</div>`:""}
168
+ `,n.addEventListener("keydown",a=>{a.key==="Escape"&&n.remove()}),document.body.appendChild(n),y(n)}function _(t){typeof document>"u"||(S&&clearTimeout(S),S=setTimeout(()=>{if(h)return;let i=document.createElement("div");i.setAttribute("role","alertdialog"),i.setAttribute("aria-label","Session timeout warning"),i.setAttribute("aria-modal","true"),i.setAttribute("data-yuktai-timeout","true"),i.style.cssText=`
169
+ position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);
170
+ z-index:999999;background:#fff;color:#111;
171
+ border-radius:12px;padding:24px;width:320px;max-width:calc(100vw - 32px);
172
+ box-shadow:0 20px 60px rgba(0,0,0,0.4);
173
+ font-family:system-ui,sans-serif;border:2px solid #d93025;
174
+ `,i.innerHTML=`
175
+ <h2 style="margin:0 0 8px;font-size:18px;color:#d93025">\u23F1 Session timeout</h2>
176
+ <p style="margin:0 0 16px;font-size:14px;line-height:1.5;color:#444">
177
+ Your session will expire soon. Do you need more time?
178
+ </p>
179
+ <div style="display:flex;gap:8px">
180
+ <button data-yuktai-extend style="flex:1;padding:10px;background:#1a73e8;color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600">
181
+ Yes, more time
182
+ </button>
183
+ <button data-yuktai-dismiss style="flex:1;padding:10px;background:#f1f3f4;color:#111;border:none;border-radius:8px;cursor:pointer;font-size:14px">
184
+ No, sign out
185
+ </button>
186
+ </div>
187
+ `;let n=i.querySelector("[data-yuktai-extend]"),s=i.querySelector("[data-yuktai-dismiss]");n?.addEventListener("click",()=>{i.remove(),h=null,c("Session extended. You have more time.","success"),g?.timeoutWarning&&_(g.timeoutWarning)}),s?.addEventListener("click",()=>{i.remove(),h=null}),document.body.appendChild(i),h=i,y(i),c("Warning: Your session will expire soon. Do you need more time?","warning")},t*1e3))}function F(t){if(typeof document>"u"||A)return;try{let a=localStorage.getItem("yuktai-a11y-prefs");if(a){let l=JSON.parse(a);Object.assign(t,l),x(t)}}catch{}let i=document.createElement("button");i.setAttribute("aria-label","Accessibility preferences"),i.setAttribute("aria-haspopup","dialog"),i.setAttribute("data-yuktai-pref-toggle","true"),i.style.cssText=`
188
+ position:fixed;bottom:16px;right:16px;z-index:999998;
189
+ width:48px;height:48px;border-radius:50%;
190
+ background:#1a73e8;color:#fff;border:none;
191
+ cursor:pointer;font-size:22px;
192
+ box-shadow:0 2px 12px rgba(0,0,0,0.3);
193
+ display:flex;align-items:center;justify-content:center;
194
+ transition:transform 0.15s,background 0.15s;
195
+ `,i.innerHTML="\u267F",i.addEventListener("mouseenter",()=>{i.style.transform="scale(1.1)",i.style.background="#1557b0"}),i.addEventListener("mouseleave",()=>{i.style.transform="scale(1)",i.style.background="#1a73e8"});let n=document.createElement("div");n.setAttribute("role","dialog"),n.setAttribute("aria-label","Accessibility preferences"),n.setAttribute("aria-modal","true"),n.setAttribute("data-yuktai-panel","true"),n.style.cssText=`
196
+ position:fixed;bottom:76px;right:16px;z-index:999999;
197
+ width:300px;max-width:calc(100vw - 32px);
198
+ background:#fff;border-radius:16px;
199
+ box-shadow:0 8px 32px rgba(0,0,0,0.2);
200
+ border:1px solid #e0e0e0;
201
+ font-family:system-ui,sans-serif;
202
+ overflow:hidden;display:none;
203
+ `;let s=[{icon:"\u{1F441}",title:"Vision",options:[{key:"highContrast",label:"High contrast",type:"toggle"},{key:"darkMode",label:"Dark mode",type:"toggle"},{key:"largeTargets",label:"Large text & targets",type:"toggle"}]},{icon:"\u{1F3A8}",title:"Colour blindness",options:[{key:"colorBlind_none",label:"None",type:"radio",group:"cb"},{key:"colorBlind_deuteranopia",label:"Deuteranopia",type:"radio",group:"cb"},{key:"colorBlind_protanopia",label:"Protanopia",type:"radio",group:"cb"},{key:"colorBlind_tritanopia",label:"Tritanopia",type:"radio",group:"cb"},{key:"colorBlind_achromatopsia",label:"Greyscale",type:"radio",group:"cb"}]},{icon:"\u2328",title:"Motor",options:[{key:"reduceMotion",label:"Reduce motion",type:"toggle"},{key:"largeTargets",label:"Large click targets",type:"toggle"}]},{icon:"\u{1F50A}",title:"Audio",options:[{key:"speechEnabled",label:"Speak on focus",type:"toggle"}]}];n.innerHTML=`
204
+ <div style="padding:16px 16px 8px;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;align-items:center">
205
+ <strong style="font-size:15px;color:#111">\u267F Accessibility</strong>
206
+ <button data-yuktai-panel-close style="background:none;border:none;cursor:pointer;font-size:20px;color:#666;padding:0;line-height:1" aria-label="Close preferences">\xD7</button>
207
+ </div>
208
+ <div style="padding:8px 0;max-height:60vh;overflow-y:auto">
209
+ ${s.map(a=>`
210
+ <div style="padding:8px 16px">
211
+ <div style="font-size:11px;font-weight:700;color:#888;letter-spacing:0.5px;text-transform:uppercase;margin-bottom:8px">
212
+ ${a.icon} ${a.title}
213
+ </div>
214
+ ${a.options.map(l=>`
215
+ <label style="display:flex;align-items:center;justify-content:space-between;padding:6px 0;cursor:pointer;gap:8px">
216
+ <span style="font-size:13px;color:#333">${l.label}</span>
217
+ ${l.type==="toggle"?`
218
+ <div data-yuktai-toggle="${l.key}" style="
219
+ width:40px;height:22px;border-radius:11px;
220
+ background:${v(t,l.key)?"#1a73e8":"#ccc"};
221
+ position:relative;cursor:pointer;transition:background 0.2s;flex-shrink:0;
222
+ ">
223
+ <div style="
224
+ position:absolute;top:2px;left:${v(t,l.key)?"20px":"2px"};
225
+ width:18px;height:18px;border-radius:50%;background:#fff;
226
+ transition:left 0.2s;box-shadow:0 1px 3px rgba(0,0,0,0.2);
227
+ "></div>
228
+ </div>
229
+ `:`
230
+ <input type="radio" name="yuktai-${l.group}" value="${l.key}"
231
+ ${ee(t,l.key)?"checked":""}
232
+ style="width:16px;height:16px;cursor:pointer;accent-color:#1a73e8"
233
+ />
234
+ `}
235
+ </label>
236
+ `).join("")}
237
+ </div>
238
+ `).join("")}
239
+ <div style="padding:8px 16px 4px">
240
+ <div style="font-size:11px;font-weight:700;color:#888;letter-spacing:0.5px;text-transform:uppercase;margin-bottom:8px">
241
+ \u2328 Keyboard
242
+ </div>
243
+ <button data-yuktai-show-keys style="
244
+ width:100%;padding:8px;background:#f8f9fa;border:1px solid #e0e0e0;
245
+ border-radius:8px;cursor:pointer;font-size:13px;color:#333;
246
+ display:flex;align-items:center;justify-content:center;gap:6px;
247
+ ">
248
+ Show keyboard shortcuts <kbd style="background:#e0e0e0;padding:1px 6px;border-radius:4px;font-size:11px">Alt+A</kbd>
249
+ </button>
250
+ </div>
251
+ </div>
252
+ <div style="padding:8px 16px 12px;border-top:1px solid #f0f0f0">
253
+ <button data-yuktai-reset style="
254
+ width:100%;padding:8px;background:#fff;border:1px solid #d93025;
255
+ border-radius:8px;cursor:pointer;font-size:12px;color:#d93025;font-weight:600;
256
+ ">Reset all preferences</button>
257
+ </div>
258
+ `,n.querySelectorAll("[data-yuktai-toggle]").forEach(a=>{a.addEventListener("click",()=>{let l=a.getAttribute("data-yuktai-toggle");t[l]=!v(t,l),B(t),x(t),z(t),c(`${l.replace(/([A-Z])/g," $1")} ${v(t,l)?"enabled":"disabled"}`,"info")})}),n.querySelectorAll("input[type='radio']").forEach(a=>{a.addEventListener("change",()=>{let l=a.value.replace("colorBlind_","");t.colorBlindMode=l,B(t),x(t),c(`Colour blind mode: ${l}`,"info")})}),n.querySelector("[data-yuktai-show-keys]")?.addEventListener("click",()=>{N()}),n.querySelector("[data-yuktai-reset]")?.addEventListener("click",()=>{localStorage.removeItem("yuktai-a11y-prefs"),t.highContrast=!1,t.darkMode=!1,t.reduceMotion=!1,t.largeTargets=!1,t.speechEnabled=!1,t.colorBlindMode="none",x(t),z(t),c("Preferences reset to default","info")}),n.querySelector("[data-yuktai-panel-close]")?.addEventListener("click",()=>{n.style.display="none",i.focus(),c("Preferences closed","info")}),n.addEventListener("keydown",a=>{a.key==="Escape"&&(n.style.display="none",i.focus())}),i.addEventListener("click",()=>{let a=n.style.display!=="none";n.style.display=a?"none":"block",i.setAttribute("aria-expanded",String(!a)),a||(y(n),c("Accessibility preferences opened","info"))}),document.body.appendChild(i),document.body.appendChild(n),A=n}function z(t){A&&(A.remove(),A=null),F(t)}function v(t,i){return!!t[i]}function ee(t,i){let n=i.replace("colorBlind_","");return t.colorBlindMode===n}function B(t){try{let i={highContrast:t.highContrast,darkMode:t.darkMode,reduceMotion:t.reduceMotion,largeTargets:t.largeTargets,speechEnabled:t.speechEnabled,colorBlindMode:t.colorBlindMode};localStorage.setItem("yuktai-a11y-prefs",JSON.stringify(i))}catch{}}function x(t){if(typeof document>"u")return;let i=document.documentElement;i.toggleAttribute("data-yuktai-high-contrast",!!t.highContrast),i.toggleAttribute("data-yuktai-dark",!!t.darkMode),i.toggleAttribute("data-yuktai-reduce-motion",!!t.reduceMotion),i.toggleAttribute("data-yuktai-large-targets",!!t.largeTargets),i.toggleAttribute("data-yuktai-keyboard",!!t.keyboardHints);let n=document.body;if(t.colorBlindMode&&t.colorBlindMode!=="none"){let s=t.colorBlindMode==="achromatopsia"?"grayscale(100%)":`url(#${k[t.colorBlindMode]})`;n.style.filter=s}else n.style.filter=""}function te(){if(typeof document>"u"||w)return;let t=document.createElement("div");t.setAttribute("aria-live","polite"),t.setAttribute("aria-atomic","true"),t.setAttribute("aria-relevant","text"),t.style.cssText="position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);",document.body.appendChild(t),w=t}function ie(){if(typeof document>"u"||C)return;let t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttribute("aria-hidden","true"),t.style.cssText="position:absolute;width:0;height:0;overflow:hidden;",t.innerHTML=`
259
+ <defs>
260
+ <filter id="${k.deuteranopia}">
261
+ <feColorMatrix type="matrix" values="0.625 0.375 0 0 0 0.7 0.3 0 0 0 0 0.3 0.7 0 0 0 0 0 1 0"/>
262
+ </filter>
263
+ <filter id="${k.protanopia}">
264
+ <feColorMatrix type="matrix" values="0.567 0.433 0 0 0 0.558 0.442 0 0 0 0 0.242 0.758 0 0 0 0 0 1 0"/>
265
+ </filter>
266
+ <filter id="${k.tritanopia}">
267
+ <feColorMatrix type="matrix" values="0.95 0.05 0 0 0 0 0.433 0.567 0 0 0 0 0.475 0.525 0 0 0 0 0 1 0"/>
268
+ </filter>
269
+ </defs>
270
+ `,document.body.appendChild(t),C=t}function D(t){let i={critical:20,serious:10,moderate:5,minor:2},n=t.details.reduce((s,a)=>s+(i[a.severity]||0),0);return Math.max(0,Math.min(100,100-n))}var ae={name:"yuktai-a11y",version:"2.0.0",observer:null,async execute(t){if(!t.enabled)return this.stopObserver(),"yuktai-a11y: disabled.";g=t,te(),ie(),J(),X(),t.showSkipLinks!==!1&&U(),t.showPreferencePanel!==!1&&F(t),x(t);let i=this.applyFixes(t);i.score=D(i),t.showAuditBadge&&Z(i),t.timeoutWarning&&_(t.timeoutWarning),t.autoFix&&this.startObserver(t);let n=`${i.fixed} accessibility fixes applied. Score: ${i.score}/100.`;return c(n,i.score>=90?"success":"info",!1),`yuktai-a11y v2: ${n} Scanned ${i.scanned} elements in ${i.renderTime}ms.`},applyFixes(t){let i={fixed:0,scanned:0,renderTime:0,score:100,details:[]};if(typeof document>"u")return i;let n=performance.now(),s=document.querySelectorAll("*");i.scanned=s.length;let a=(l,e,r,p)=>{i.details.push({tag:l,fix:e,severity:r,element:p.outerHTML.slice(0,100)}),i.fixed++};return s.forEach(l=>{let e=l,r=e.tagName.toLowerCase();if(r==="html"&&!e.getAttribute("lang")&&(e.setAttribute("lang","en"),a(r,'lang="en" added to <html>',"critical",e)),r==="head"&&!document.title&&(document.title=document.querySelector("h1")?.innerText?.trim()||"Page",a(r,`document.title set to "${document.title}"`,"serious",e)),r==="meta"){let o=e.getAttribute("name"),d=e.getAttribute("content")||"";o==="viewport"&&d.includes("user-scalable=no")&&(e.setAttribute("content",d.replace("user-scalable=no","user-scalable=yes")),a(r,"user-scalable=yes restored","serious",e)),o==="viewport"&&/maximum-scale=1(?:[^0-9]|$)/.test(d)&&(e.setAttribute("content",d.replace(/maximum-scale=1(?=[^0-9]|$)/,"maximum-scale=5")),a(r,"maximum-scale=5 restored","serious",e))}if(r==="main"&&!e.getAttribute("tabindex")&&(e.setAttribute("tabindex","-1"),e.getAttribute("id")||e.setAttribute("id","main-content")),r==="body"&&document.querySelectorAll("video[autoplay]:not([muted])").forEach(o=>{o.muted=!0,a("video","autoplay video muted (deaf users)","serious",e)}),t.largeTargets&&(r==="button"||r==="a"||r==="input")){let o=e.getBoundingClientRect();o.width>0&&o.width<24&&(e.style.minWidth="44px",e.style.minHeight="44px",a(r,"min 44px touch target enforced","minor",e))}if(H.has(r)&&(!e.innerText?.trim()&&!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")&&(e.setAttribute("aria-label",`${r.toUpperCase()} section`),a(r,"aria-label added (empty heading)","moderate",e)),e.hasAttribute("onclick")&&!e.getAttribute("tabindex")&&(e.setAttribute("tabindex","0"),e.onkeydown||(e.onkeydown=o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),e.click())}),a(r,"tabindex=0 + keydown (clickable heading)","minor",e))),r==="img"&&(e.hasAttribute("alt")||(e.setAttribute("alt",""),e.setAttribute("aria-hidden","true"),a(r,'alt="" aria-hidden="true"',"serious",e)),e.getAttribute("role")==="presentation"&&e.getAttribute("alt")!==""&&(e.setAttribute("alt",""),a(r,'alt="" (role=presentation)',"minor",e))),r==="area"&&!e.getAttribute("alt")){let o=e.getAttribute("title")||e.getAttribute("href")||"map area";e.setAttribute("alt",o),a(r,`alt="${o}" on <area>`,"serious",e)}if(r==="svg"){if(!e.getAttribute("aria-hidden")&&!e.getAttribute("aria-label")&&!l.querySelector("title"))if(!e.getAttribute("role")||e.getAttribute("role")==="img"){let o=document.createElementNS("http://www.w3.org/2000/svg","title");o.textContent="graphic",e.prepend(o),e.setAttribute("role","img"),a(r,'role="img" + <title> injected',"moderate",e)}else e.setAttribute("aria-hidden","true"),a(r,'aria-hidden="true" (decorative svg)',"minor",e);e.getAttribute("focusable")||e.setAttribute("focusable","false")}if(r==="canvas"&&(e.getAttribute("role")||(e.setAttribute("role","img"),a(r,'role="img"',"serious",e)),e.getAttribute("aria-label")||(e.setAttribute("aria-label",e.getAttribute("title")||"canvas graphic"),a(r,"aria-label added to canvas","serious",e))),(r==="object"||r==="embed")&&!e.getAttribute("aria-label")&&!e.getAttribute("title")&&(e.setAttribute("aria-label",`embedded ${r} content`),a(r,`aria-label added to <${r}>`,"moderate",e)),r==="video"&&!l.querySelector("track")&&!e.getAttribute("aria-label")&&(e.setAttribute("aria-label",e.getAttribute("title")||"video player"),a(r,"aria-label added (no captions track)","serious",e)),r==="audio"&&!l.querySelector("track")&&!e.getAttribute("aria-label")&&(e.setAttribute("aria-label",e.getAttribute("title")||"audio player"),a(r,"aria-label added to audio","serious",e)),r==="iframe"&&!e.getAttribute("title")&&!e.getAttribute("aria-label")&&(e.setAttribute("title","embedded content"),e.setAttribute("aria-label","embedded content"),a(r,'title + aria-label="embedded content"',"serious",e)),r==="figure"&&!l.querySelector("figcaption")&&!e.getAttribute("aria-label")){let d=l.querySelector("img")?.getAttribute("alt");d&&(e.setAttribute("aria-label",d),a(r,"aria-label from inner img alt","minor",e))}if(r==="button"){if(!e.innerText?.trim()&&!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")){let o=e.getAttribute("title")||e.getAttribute("data-label")||"button";e.setAttribute("aria-label",o),a(r,`aria-label="${o}" (empty button)`,"critical",e)}e.hasAttribute("disabled")&&!e.getAttribute("aria-disabled")&&(e.setAttribute("aria-disabled","true"),i.fixed++),e.getAttribute("data-yuktai-announced")||(e.setAttribute("data-yuktai-announced","true"),e.addEventListener("click",()=>{let o=e.getAttribute("aria-label")||e.textContent?.trim()||"button";setTimeout(()=>{c(`${o} activated`,"success",!1)},100)}))}if(r==="a"){let o=e;if(!e.innerText?.trim()&&!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")){let d=e.getAttribute("title")||"link";e.setAttribute("aria-label",d),a(r,`aria-label="${d}" (empty link)`,"critical",e)}if(o.target==="_blank"){o.rel?.includes("noopener")||(o.rel="noopener noreferrer",i.fixed++);let d=o.getAttribute("aria-label")||o.innerText?.trim()||"link";d.includes("opens in new window")||(o.setAttribute("aria-label",`${d} (opens in new window)`),a(r,"aria-label: new-window warning","moderate",e))}!o.href&&!o.getAttribute("role")&&!o.getAttribute("tabindex")&&(o.setAttribute("role","button"),o.setAttribute("tabindex","0"),a(r,'role="button" tabindex=0 (href-less link)',"serious",e))}if((e.hasAttribute("onclick")||typeof window<"u"&&window.getComputedStyle(e).cursor==="pointer")&&!W.has(r)&&(e.getAttribute("role")||(e.setAttribute("role","button"),a(r,'role="button" (clickable non-interactive)',"serious",e)),e.tabIndex<0&&(e.tabIndex=0,i.fixed++),e.onkeydown||(e.onkeydown=o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),e.click())})),q.has(r)){let o=e;if(!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")){let d=e.getAttribute("placeholder")||e.getAttribute("name")||e.getAttribute("title")||r;e.setAttribute("aria-label",d),a(r,`aria-label="${d}"`,"serious",e)}if(e.hasAttribute("required")&&!e.getAttribute("aria-required")&&(e.setAttribute("aria-required","true"),i.fixed++),e.hasAttribute("disabled")&&!e.getAttribute("aria-disabled")&&(e.setAttribute("aria-disabled","true"),i.fixed++),e.hasAttribute("readonly")&&!e.getAttribute("aria-readonly")&&(e.setAttribute("aria-readonly","true"),i.fixed++),e.getAttribute("data-yuktai-validation")||(e.setAttribute("data-yuktai-validation","true"),e.addEventListener("invalid",()=>{let d=e.getAttribute("aria-label")||e.getAttribute("placeholder")||"Field",f=e.validationMessage||"is invalid";c(`Error: ${d} ${f}`,"error")}),e.addEventListener("change",()=>{if(e.validity?.valid){let d=e.getAttribute("aria-label")||e.getAttribute("placeholder")||"Field";c(`${d} looks good`,"success",!1)}})),r==="input"&&!o.autocomplete){let d=o.name||"";o.type==="email"||d.includes("email")?(o.autocomplete="email",i.fixed++):o.type==="tel"||d.includes("tel")?(o.autocomplete="tel",i.fixed++):o.type==="password"?(o.autocomplete="current-password",i.fixed++):d.includes("firstname")||d.includes("fname")?(o.autocomplete="given-name",i.fixed++):d.includes("lastname")||d.includes("lname")?(o.autocomplete="family-name",i.fixed++):d==="name"||d.includes("fullname")?(o.autocomplete="name",i.fixed++):d.includes("zip")||d.includes("postal")?(o.autocomplete="postal-code",i.fixed++):d.includes("city")?(o.autocomplete="address-level2",i.fixed++):d.includes("country")&&(o.autocomplete="country",i.fixed++)}r==="input"&&o.type==="image"&&!e.getAttribute("alt")&&(e.setAttribute("alt",e.getAttribute("value")||"submit"),a(r,"alt added to input[type=image]","serious",e)),r==="input"&&o.type==="range"&&(e.getAttribute("aria-valuemin")||e.setAttribute("aria-valuemin",o.min||"0"),e.getAttribute("aria-valuemax")||e.setAttribute("aria-valuemax",o.max||"100"),e.getAttribute("aria-valuenow")||e.setAttribute("aria-valuenow",o.value||"50"),i.fixed++)}if(r==="fieldset"&&!l.querySelector("legend")&&!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")&&(e.setAttribute("aria-label","form group"),a(r,'aria-label="form group" (no legend)',"moderate",e)),r==="table"&&(!l.querySelector("th")&&!e.getAttribute("role")&&(e.setAttribute("role","grid"),a(r,'role="grid" (no <th>)',"serious",e)),!l.querySelector("caption")&&!e.getAttribute("aria-label")&&(e.setAttribute("aria-label","data table"),a(r,'aria-label="data table"',"moderate",e))),r==="th"&&!e.getAttribute("scope")){let o=e.closest("thead")!==null;e.setAttribute("scope",o?"col":"row"),a(r,`scope="${o?"col":"row"}"`,"moderate",e)}if(Y.has(r)&&(e.getAttribute("role")==="presentation"&&(l.querySelectorAll("li").forEach(o=>{o.getAttribute("role")||o.setAttribute("role","presentation")}),i.fixed++),(r==="ul"||r==="ol")&&!e.getAttribute("aria-label"))){let o=e.closest("nav");o&&(e.setAttribute("aria-label",o.getAttribute("aria-label")||"navigation list"),a(r,"aria-label from parent nav","minor",e))}if(L[r]&&!e.getAttribute("role")&&(e.setAttribute("role",L[r]),a(r,`role="${L[r]}"`,"minor",e)),["nav","section","article","aside"].includes(r)){let o=l.parentElement?.querySelectorAll(r);if(o&&o.length>1&&!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")){let f=l.querySelector("h1,h2,h3,h4,h5,h6")?.textContent?.trim();f&&(e.setAttribute("aria-label",f),a(r,"aria-label from inner heading","moderate",e))}}if(r==="details"&&!l.querySelector("summary")){let o=document.createElement("summary");o.textContent=e.getAttribute("aria-label")||"More details",e.prepend(o),a(r,"<summary> injected","moderate",e)}if(r==="summary"&&!e.innerText?.trim()&&!e.getAttribute("aria-label")&&(e.setAttribute("aria-label","Toggle details"),a(r,'aria-label="Toggle details"',"moderate",e)),r==="dialog"){let o=e.getAttribute("role");if(o&&o!=="dialog"&&o!=="alertdialog"&&(e.setAttribute("role","dialog"),a(r,'role corrected to "dialog"',"serious",e)),!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")){let f=l.querySelector("h1,h2,h3,h4,h5,h6")?.textContent?.trim()||"dialog";e.setAttribute("aria-label",f),a(r,"aria-label added to dialog","serious",e)}e.getAttribute("data-yuktai-trap")||(e.setAttribute("data-yuktai-trap","true"),new MutationObserver(()=>{e.style.display!=="none"&&e.style.visibility!=="hidden"&&y(e)}).observe(e,{attributes:!0,attributeFilter:["style","open"]}))}if(r==="abbr"&&!e.getAttribute("title")&&(e.setAttribute("title",e.innerText?.trim()||"abbreviation"),a(r,"title added to <abbr>","minor",e)),r==="time"&&!e.getAttribute("datetime")&&e.innerText?.trim()&&(e.setAttribute("datetime",e.innerText.trim()),a(r,`datetime="${e.innerText.trim()}" added`,"minor",e)),r==="meter"&&!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")&&(e.setAttribute("aria-label",e.getAttribute("title")||"meter"),a(r,"aria-label added to <meter>","moderate",e)),r==="progress"){!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")&&(e.setAttribute("aria-label",e.getAttribute("title")||"progress"),a(r,"aria-label added to <progress>","moderate",e));let o=e;e.getAttribute("aria-valuenow")||e.setAttribute("aria-valuenow",String(o.value)),e.getAttribute("aria-valuemax")||e.setAttribute("aria-valuemax",String(o.max||1)),i.fixed++}let u=e.getAttribute("role")||"";if(u==="tab"&&!e.getAttribute("aria-selected")&&(e.setAttribute("aria-selected","false"),i.fixed++),u==="tabpanel"&&(!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")&&(e.setAttribute("aria-label","tab panel"),a(r,'aria-label="tab panel"',"moderate",e)),e.getAttribute("tabindex")||(e.setAttribute("tabindex","0"),i.fixed++)),["alert","status","log","marquee"].includes(u)){if(!e.getAttribute("aria-live")){let o=u==="alert"?"assertive":"polite";e.setAttribute("aria-live",o),a(r,`aria-live="${o}" on role=${u}`,"moderate",e)}e.getAttribute("aria-atomic")||(e.setAttribute("aria-atomic","true"),i.fixed++)}u==="tooltip"&&!e.getAttribute("aria-live")&&(e.setAttribute("aria-live","polite"),i.fixed++),(u==="menu"||u==="menubar")&&!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")&&(e.setAttribute("aria-label","menu"),a(r,'aria-label="menu"',"moderate",e)),u==="listbox"&&!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")&&(e.setAttribute("aria-label","listbox"),a(r,'aria-label="listbox"',"moderate",e)),u==="option"&&!e.getAttribute("aria-selected")&&(e.setAttribute("aria-selected","false"),i.fixed++),u==="slider"&&(e.getAttribute("aria-valuemin")||e.setAttribute("aria-valuemin","0"),e.getAttribute("aria-valuemax")||e.setAttribute("aria-valuemax","100"),e.getAttribute("aria-valuenow")||e.setAttribute("aria-valuenow","50"),i.fixed++),(u==="checkbox"||u==="radio")&&!e.getAttribute("aria-checked")&&(e.setAttribute("aria-checked","false"),a(r,`aria-checked="false" on role=${u}`,"serious",e)),u==="combobox"&&(e.getAttribute("aria-expanded")||(e.setAttribute("aria-expanded","false"),a(r,'aria-expanded="false" on combobox',"serious",e)),e.getAttribute("aria-haspopup")||(e.setAttribute("aria-haspopup","listbox"),i.fixed++)),(u==="grid"||u==="treegrid")&&!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")&&(e.setAttribute("aria-label","data grid"),a(r,'aria-label="data grid"',"moderate",e)),u==="tree"&&!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")&&(e.setAttribute("aria-label","tree"),a(r,'aria-label="tree"',"moderate",e)),u==="spinbutton"&&(e.getAttribute("aria-valuenow")||e.setAttribute("aria-valuenow","0"),e.getAttribute("aria-valuemin")||e.setAttribute("aria-valuemin","0"),e.getAttribute("aria-valuemax")||e.setAttribute("aria-valuemax","100"),i.fixed++)}),i.renderTime=parseFloat((performance.now()-n).toFixed(2)),i},scan(){let t={fixed:0,scanned:0,renderTime:0,score:100,details:[]};if(typeof document>"u")return t;let i=performance.now(),n=document.querySelectorAll("*");t.scanned=n.length;let s=(a,l,e,r)=>t.details.push({tag:a,fix:l,severity:e,element:r.outerHTML.slice(0,100)});return n.forEach(a=>{let l=a,e=l.tagName.toLowerCase();(e==="a"||e==="button")&&!l.innerText?.trim()&&!l.getAttribute("aria-label")&&s(e,"needs aria-label (empty)","critical",l),e==="img"&&!l.hasAttribute("alt")&&s(e,"needs alt text","serious",l),q.has(e)&&!l.getAttribute("aria-label")&&!l.getAttribute("aria-labelledby")&&s(e,"needs aria-label","serious",l),e==="iframe"&&!l.getAttribute("title")&&!l.getAttribute("aria-label")&&s(e,"iframe needs title","serious",l),V.has(e)&&!a.querySelector("track")&&!l.getAttribute("aria-label")&&s(e,"media needs captions/aria-label","serious",l),H.has(e)&&!l.innerText?.trim()&&!l.getAttribute("aria-label")&&s(e,"empty heading","moderate",l)}),t.fixed=t.details.length,t.score=D(t),t.renderTime=parseFloat((performance.now()-i).toFixed(2)),t},startObserver(t){this.observer||typeof document>"u"||(this.observer=new MutationObserver(()=>this.applyFixes(t)),this.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!1}))},stopObserver(){this.observer?.disconnect(),this.observer=null},announce:c,speak:M,showVisualAlert:R,trapFocus:y};return G(re);})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yuktishaalaa/yuktai",
3
- "version": "2.0.8",
3
+ "version": "2.0.10",
4
4
  "description": "Privacy-first, offline-first universal accessibility engine with WCAG auto-fix, OCR, voice, and Indic language AI support.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -1,36 +0,0 @@
1
- "use strict";var YuktAI=(()=>{var Te=Object.create;var N=Object.defineProperty;var ke=Object.getOwnPropertyDescriptor;var _e=Object.getOwnPropertyNames;var Ce=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var Me=(t,i)=>()=>(t&&(i=t(t=0)),i);var H=(t,i)=>()=>(i||t((i={exports:{}}).exports,i),i.exports),Ie=(t,i)=>{for(var o in i)N(t,o,{get:i[o],enumerable:!0})},te=(t,i,o,s)=>{if(i&&typeof i=="object"||typeof i=="function")for(let n of _e(i))!Re.call(t,n)&&n!==o&&N(t,n,{get:()=>i[n],enumerable:!(s=ke(i,n))||s.enumerable});return t};var T=(t,i,o)=>(o=t!=null?Te(Ce(t)):{},te(i||!t||!t.__esModule?N(o,"default",{value:t,enumerable:!0}):o,t)),Pe=t=>te(N({},"__esModule",{value:!0}),t);var h,g=Me(()=>{h={env:{NODE_ENV:"production"}}});var ge=H(d=>{"use strict";g();var U=Symbol.for("react.transitional.element"),Oe=Symbol.for("react.portal"),je=Symbol.for("react.fragment"),ze=Symbol.for("react.strict_mode"),We=Symbol.for("react.profiler"),qe=Symbol.for("react.consumer"),Fe=Symbol.for("react.context"),Ye=Symbol.for("react.forward_ref"),De=Symbol.for("react.suspense"),Be=Symbol.for("react.memo"),ue=Symbol.for("react.lazy"),Ge=Symbol.for("react.activity"),ae=Symbol.iterator;function Ue(t){return t===null||typeof t!="object"?null:(t=ae&&t[ae]||t["@@iterator"],typeof t=="function"?t:null)}var de={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},fe=Object.assign,ce={};function C(t,i,o){this.props=t,this.context=i,this.refs=ce,this.updater=o||de}C.prototype.isReactComponent={};C.prototype.setState=function(t,i){if(typeof t!="object"&&typeof t!="function"&&t!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,t,i,"setState")};C.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,"forceUpdate")};function be(){}be.prototype=C.prototype;function K(t,i,o){this.props=t,this.context=i,this.refs=ce,this.updater=o||de}var V=K.prototype=new be;V.constructor=K;fe(V,C.prototype);V.isPureReactComponent=!0;var oe=Array.isArray;function G(){}var m={H:null,A:null,T:null,S:null},pe=Object.prototype.hasOwnProperty;function Z(t,i,o){var s=o.ref;return{$$typeof:U,type:t,key:i,ref:s!==void 0?s:null,props:o}}function Ke(t,i){return Z(t.type,i,t.props)}function Q(t){return typeof t=="object"&&t!==null&&t.$$typeof===U}function Ve(t){var i={"=":"=0",":":"=2"};return"$"+t.replace(/[=:]/g,function(o){return i[o]})}var le=/\/+/g;function B(t,i){return typeof t=="object"&&t!==null&&t.key!=null?Ve(""+t.key):i.toString(36)}function Ze(t){switch(t.status){case"fulfilled":return t.value;case"rejected":throw t.reason;default:switch(typeof t.status=="string"?t.then(G,G):(t.status="pending",t.then(function(i){t.status==="pending"&&(t.status="fulfilled",t.value=i)},function(i){t.status==="pending"&&(t.status="rejected",t.reason=i)})),t.status){case"fulfilled":return t.value;case"rejected":throw t.reason}}throw t}function _(t,i,o,s,n){var l=typeof t;(l==="undefined"||l==="boolean")&&(t=null);var e=!1;if(t===null)e=!0;else switch(l){case"bigint":case"string":case"number":e=!0;break;case"object":switch(t.$$typeof){case U:case Oe:e=!0;break;case ue:return e=t._init,_(e(t._payload),i,o,s,n)}}if(e)return n=n(t),e=s===""?"."+B(t,0):s,oe(n)?(o="",e!=null&&(o=e.replace(le,"$&/")+"/"),_(n,i,o,"",function(b){return b})):n!=null&&(Q(n)&&(n=Ke(n,o+(n.key==null||t&&t.key===n.key?"":(""+n.key).replace(le,"$&/")+"/")+e)),i.push(n)),1;e=0;var r=s===""?".":s+":";if(oe(t))for(var y=0;y<t.length;y++)s=t[y],l=r+B(s,y),e+=_(s,i,o,l,n);else if(y=Ue(t),typeof y=="function")for(t=y.call(t),y=0;!(s=t.next()).done;)s=s.value,l=r+B(s,y++),e+=_(s,i,o,l,n);else if(l==="object"){if(typeof t.then=="function")return _(Ze(t),i,o,s,n);throw i=String(t),Error("Objects are not valid as a React child (found: "+(i==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":i)+"). If you meant to render a collection of children, use an array instead.")}return e}function z(t,i,o){if(t==null)return t;var s=[],n=0;return _(t,s,"","",function(l){return i.call(o,l,n++)}),s}function Qe(t){if(t._status===-1){var i=t._result;i=i(),i.then(function(o){(t._status===0||t._status===-1)&&(t._status=1,t._result=o)},function(o){(t._status===0||t._status===-1)&&(t._status=2,t._result=o)}),t._status===-1&&(t._status=0,t._result=i)}if(t._status===1)return t._result.default;throw t._result}var se=typeof reportError=="function"?reportError:function(t){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var i=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof t=="object"&&t!==null&&typeof t.message=="string"?String(t.message):String(t),error:t});if(!window.dispatchEvent(i))return}else if(typeof h=="object"&&typeof h.emit=="function"){h.emit("uncaughtException",t);return}console.error(t)},Xe={map:z,forEach:function(t,i,o){z(t,function(){i.apply(this,arguments)},o)},count:function(t){var i=0;return z(t,function(){i++}),i},toArray:function(t){return z(t,function(i){return i})||[]},only:function(t){if(!Q(t))throw Error("React.Children.only expected to receive a single React element child.");return t}};d.Activity=Ge;d.Children=Xe;d.Component=C;d.Fragment=je;d.Profiler=We;d.PureComponent=K;d.StrictMode=ze;d.Suspense=De;d.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=m;d.__COMPILER_RUNTIME={__proto__:null,c:function(t){return m.H.useMemoCache(t)}};d.cache=function(t){return function(){return t.apply(null,arguments)}};d.cacheSignal=function(){return null};d.cloneElement=function(t,i,o){if(t==null)throw Error("The argument must be a React element, but you passed "+t+".");var s=fe({},t.props),n=t.key;if(i!=null)for(l in i.key!==void 0&&(n=""+i.key),i)!pe.call(i,l)||l==="key"||l==="__self"||l==="__source"||l==="ref"&&i.ref===void 0||(s[l]=i[l]);var l=arguments.length-2;if(l===1)s.children=o;else if(1<l){for(var e=Array(l),r=0;r<l;r++)e[r]=arguments[r+2];s.children=e}return Z(t.type,n,s)};d.createContext=function(t){return t={$$typeof:Fe,_currentValue:t,_currentValue2:t,_threadCount:0,Provider:null,Consumer:null},t.Provider=t,t.Consumer={$$typeof:qe,_context:t},t};d.createElement=function(t,i,o){var s,n={},l=null;if(i!=null)for(s in i.key!==void 0&&(l=""+i.key),i)pe.call(i,s)&&s!=="key"&&s!=="__self"&&s!=="__source"&&(n[s]=i[s]);var e=arguments.length-2;if(e===1)n.children=o;else if(1<e){for(var r=Array(e),y=0;y<e;y++)r[y]=arguments[y+2];n.children=r}if(t&&t.defaultProps)for(s in e=t.defaultProps,e)n[s]===void 0&&(n[s]=e[s]);return Z(t,l,n)};d.createRef=function(){return{current:null}};d.forwardRef=function(t){return{$$typeof:Ye,render:t}};d.isValidElement=Q;d.lazy=function(t){return{$$typeof:ue,_payload:{_status:-1,_result:t},_init:Qe}};d.memo=function(t,i){return{$$typeof:Be,type:t,compare:i===void 0?null:i}};d.startTransition=function(t){var i=m.T,o={};m.T=o;try{var s=t(),n=m.S;n!==null&&n(o,s),typeof s=="object"&&s!==null&&typeof s.then=="function"&&s.then(G,se)}catch(l){se(l)}finally{i!==null&&o.types!==null&&(i.types=o.types),m.T=i}};d.unstable_useCacheRefresh=function(){return m.H.useCacheRefresh()};d.use=function(t){return m.H.use(t)};d.useActionState=function(t,i,o){return m.H.useActionState(t,i,o)};d.useCallback=function(t,i){return m.H.useCallback(t,i)};d.useContext=function(t){return m.H.useContext(t)};d.useDebugValue=function(){};d.useDeferredValue=function(t,i){return m.H.useDeferredValue(t,i)};d.useEffect=function(t,i){return m.H.useEffect(t,i)};d.useEffectEvent=function(t){return m.H.useEffectEvent(t)};d.useId=function(){return m.H.useId()};d.useImperativeHandle=function(t,i,o){return m.H.useImperativeHandle(t,i,o)};d.useInsertionEffect=function(t,i){return m.H.useInsertionEffect(t,i)};d.useLayoutEffect=function(t,i){return m.H.useLayoutEffect(t,i)};d.useMemo=function(t,i){return m.H.useMemo(t,i)};d.useOptimistic=function(t,i){return m.H.useOptimistic(t,i)};d.useReducer=function(t,i,o){return m.H.useReducer(t,i,o)};d.useRef=function(t){return m.H.useRef(t)};d.useState=function(t){return m.H.useState(t)};d.useSyncExternalStore=function(t,i,o){return m.H.useSyncExternalStore(t,i,o)};d.useTransition=function(){return m.H.useTransition()};d.version="19.2.5"});var X=H((ct,me)=>{"use strict";g();me.exports=ge()});var Ae=H(W=>{"use strict";g();var Je=Symbol.for("react.transitional.element"),et=Symbol.for("react.fragment");function ye(t,i,o){var s=null;if(o!==void 0&&(s=""+o),i.key!==void 0&&(s=""+i.key),"key"in i){o={};for(var n in i)n!=="key"&&(o[n]=i[n])}else o=i;return i=o.ref,{$$typeof:Je,type:t,key:s,ref:i!==void 0?i:null,props:o}}W.Fragment=et;W.jsx=ye;W.jsxs=ye});var P=H((mt,xe)=>{"use strict";g();xe.exports=Ae()});var nt={};Ie(nt,{Runtime:()=>w,YuktAI:()=>rt,YuktAIWrapper:()=>Y,aiPlugin:()=>$,default:()=>Y,voicePlugin:()=>L,wcag:()=>A,wcagPlugin:()=>A});g();g();var k=null,O=null,j={deuteranopia:"yuktai-cb-d",protanopia:"yuktai-cb-p",tritanopia:"yuktai-cb-t"},ie=new Set(["h1","h2","h3","h4","h5","h6"]),re=new Set(["input","select","textarea"]),ne=new Set(["button","a","input","select","textarea","details","summary"]),Le=new Set(["video","audio"]),Ne=new Set(["ul","ol","dl"]);var He=new Set(["span","strong","em","b","i","u","s","small","mark","del","ins","sub","sup","abbr","cite","code","kbd","samp","var","time","q"]),D={nav:"navigation",header:"banner",footer:"contentinfo",main:"main",aside:"complementary"},A={name:"yuktai-a11y",version:"1.0.0",observer:null,async execute(t){if(!t.enabled)return this.stopObserver(),"yuktai-a11y: disabled.";let i=this.applyFixes(t);return t.autoFix&&this.startObserver(t),`yuktai-a11y: ${i.fixed} fixes applied across ${i.scanned} nodes in ${i.renderTime}ms.`},scan(){let t={fixed:0,scanned:0,renderTime:0,details:[]};if(typeof document>"u")return t;let i=performance.now(),o=document.querySelectorAll("*");t.scanned=o.length;let s=(n,l,e,r)=>t.details.push({tag:n,fix:l,severity:e,element:r.outerHTML.slice(0,100)});return o.forEach(n=>{let l=n,e=l.tagName.toLowerCase();(e==="a"||e==="button")&&!l.innerText?.trim()&&!l.getAttribute("aria-label")&&s(e,"needs aria-label (empty)","critical",l),e==="img"&&!l.hasAttribute("alt")&&s(e,"needs alt text","serious",l),re.has(e)&&!l.getAttribute("aria-label")&&!l.getAttribute("aria-labelledby")&&s(e,"needs aria-label","serious",l),e==="iframe"&&!l.getAttribute("title")&&!l.getAttribute("aria-label")&&s(e,"iframe needs title","serious",l),Le.has(e)&&!n.querySelector("track")&&!l.getAttribute("aria-label")&&s(e,"media needs captions/aria-label","serious",l),ie.has(e)&&!l.innerText?.trim()&&!l.getAttribute("aria-label")&&s(e,"empty heading","moderate",l)}),t.fixed=t.details.length,t.renderTime=parseFloat((performance.now()-i).toFixed(2)),t},applyFixes(t){let i={fixed:0,scanned:0,renderTime:0,details:[]};if(typeof document>"u")return i;let o=performance.now(),s=document.querySelectorAll("*");i.scanned=s.length;let n=(l,e,r,y)=>{i.details.push({tag:l,fix:e,severity:r,element:y.outerHTML.slice(0,100)}),i.fixed++};if(s.forEach(l=>{let e=l,r=e.tagName.toLowerCase();if(r==="html"&&!e.getAttribute("lang")&&(e.setAttribute("lang","en"),n(r,'lang="en" added to <html>',"critical",e)),r==="head"&&!document.title&&(document.title=document.querySelector("h1")?.innerText?.trim()||"Page",n(r,`document.title set to "${document.title}"`,"serious",e)),r==="meta"){let a=e.getAttribute("name"),u=e.getAttribute("content")||"";a==="viewport"&&u.includes("user-scalable=no")&&(e.setAttribute("content",u.replace("user-scalable=no","user-scalable=yes")),n(r,"user-scalable=yes restored","serious",e)),a==="viewport"&&/maximum-scale=1(?:[^0-9]|$)/.test(u)&&(e.setAttribute("content",u.replace(/maximum-scale=1(?=[^0-9]|$)/,"maximum-scale=5")),n(r,"maximum-scale=5 restored","serious",e))}if(r==="body"&&!document.querySelector("[data-yuktai-skip]")){let a=document.createElement("a");a.setAttribute("href","#main-content"),a.setAttribute("data-yuktai-skip","true"),a.setAttribute("aria-label","Skip to main content"),a.textContent="Skip to main content",a.style.cssText="position:fixed;top:-40px;left:0;background:#0d9488;color:#fff;padding:8px 16px;z-index:99999;font-family:system-ui;font-size:14px;border-radius:0 0 4px 0;text-decoration:none;transition:top 0.2s;",a.addEventListener("focus",()=>{a.style.top="0"}),a.addEventListener("blur",()=>{a.style.top="-40px"}),e.insertBefore(a,e.firstChild),n(r,"skip-to-content link injected","minor",e);let u=document.querySelector("main,[role='main']");u&&!u.getAttribute("tabindex")&&u.setAttribute("tabindex","-1")}if(ie.has(r)&&(!e.innerText?.trim()&&!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")&&(e.setAttribute("aria-label",`${r.toUpperCase()} section`),n(r,`aria-label="${r.toUpperCase()} section" (empty heading)`,"moderate",e)),e.hasAttribute("onclick")&&!e.getAttribute("tabindex")&&(e.setAttribute("tabindex","0"),e.onkeydown||(e.onkeydown=a=>{(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),e.click())}),n(r,"tabindex=0 + keydown (clickable heading)","minor",e))),r==="p"&&e.getAttribute("dir")==="rtl"&&!e.getAttribute("lang")&&!document.documentElement.getAttribute("lang")&&(e.setAttribute("lang","ar"),n(r,'lang="ar" (rtl paragraph)',"moderate",e)),r==="img"&&(e.hasAttribute("alt")||(e.setAttribute("alt",""),e.setAttribute("aria-hidden","true"),n(r,'alt="" aria-hidden="true"',"serious",e)),e.getAttribute("role")==="presentation"&&e.getAttribute("alt")!==""&&(e.setAttribute("alt",""),n(r,'alt="" (role=presentation)',"minor",e))),r==="area"&&!e.getAttribute("alt")){let a=e.getAttribute("title")||e.getAttribute("href")||"map area";e.setAttribute("alt",a),n(r,`alt="${a}" on <area>`,"serious",e)}if(r==="svg"){if(!e.getAttribute("aria-hidden")&&!e.getAttribute("aria-label")&&!l.querySelector("title"))if(!e.getAttribute("role")||e.getAttribute("role")==="img"){let a=document.createElementNS("http://www.w3.org/2000/svg","title");a.textContent="graphic",e.prepend(a),e.setAttribute("role","img"),n(r,'role="img" + <title> injected',"moderate",e)}else e.setAttribute("aria-hidden","true"),n(r,'aria-hidden="true" (decorative svg)',"minor",e);e.getAttribute("focusable")||e.setAttribute("focusable","false")}if(r==="canvas"&&(e.getAttribute("role")||(e.setAttribute("role","img"),n(r,'role="img"',"serious",e)),e.getAttribute("aria-label")||(e.setAttribute("aria-label",e.getAttribute("title")||"canvas graphic"),n(r,"aria-label added to canvas","serious",e))),(r==="object"||r==="embed")&&!e.getAttribute("aria-label")&&!e.getAttribute("title")&&(e.setAttribute("aria-label",`embedded ${r} content`),n(r,`aria-label added to <${r}>`,"moderate",e)),r==="video"&&!l.querySelector("track")&&!e.getAttribute("aria-label")&&(e.setAttribute("aria-label",e.getAttribute("title")||"video player"),n(r,"aria-label added (no captions track)","serious",e)),r==="audio"&&!l.querySelector("track")&&!e.getAttribute("aria-label")&&(e.setAttribute("aria-label",e.getAttribute("title")||"audio player"),n(r,"aria-label added to audio","serious",e)),r==="iframe"&&!e.getAttribute("title")&&!e.getAttribute("aria-label")&&(e.setAttribute("title","embedded content"),e.setAttribute("aria-label","embedded content"),n(r,'title + aria-label="embedded content"',"serious",e)),r==="figure"&&!l.querySelector("figcaption")&&!e.getAttribute("aria-label")){let u=l.querySelector("img")?.getAttribute("alt");u&&(e.setAttribute("aria-label",u),n(r,"aria-label from inner img alt","minor",e))}if(r==="button"){if(!e.innerText?.trim()&&!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")){let a=e.getAttribute("title")||e.getAttribute("data-label")||"button";e.setAttribute("aria-label",a),n(r,`aria-label="${a}" (empty button)`,"critical",e)}e.hasAttribute("disabled")&&!e.getAttribute("aria-disabled")&&(e.setAttribute("aria-disabled","true"),i.fixed++)}if(r==="a"){let a=e;if(!e.innerText?.trim()&&!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")){let u=e.getAttribute("title")||"link";e.setAttribute("aria-label",u),n(r,`aria-label="${u}" (empty link)`,"critical",e)}if(a.target==="_blank"){a.rel?.includes("noopener")||(a.rel="noopener noreferrer",i.fixed++);let u=a.getAttribute("aria-label")||a.innerText?.trim()||"link";u.includes("opens in new window")||(a.setAttribute("aria-label",`${u} (opens in new window)`),n(r,"aria-label: new-window warning","moderate",e))}!a.href&&!a.getAttribute("role")&&!a.getAttribute("tabindex")&&(a.setAttribute("role","button"),a.setAttribute("tabindex","0"),n(r,'role="button" tabindex=0 (href-less link)',"serious",e))}if((e.hasAttribute("onclick")||typeof window<"u"&&window.getComputedStyle(e).cursor==="pointer")&&!ne.has(r)&&(e.getAttribute("role")||(e.setAttribute("role","button"),n(r,'role="button" (clickable non-interactive)',"serious",e)),e.tabIndex<0&&(e.tabIndex=0,i.fixed++),e.onkeydown||(e.onkeydown=a=>{(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),e.click())})),re.has(r)){let a=e;if(!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")){let u=e.getAttribute("placeholder")||e.getAttribute("name")||e.getAttribute("title")||r;e.setAttribute("aria-label",u),n(r,`aria-label="${u}"`,"serious",e)}if(e.hasAttribute("required")&&!e.getAttribute("aria-required")&&(e.setAttribute("aria-required","true"),i.fixed++),e.hasAttribute("disabled")&&!e.getAttribute("aria-disabled")&&(e.setAttribute("aria-disabled","true"),i.fixed++),e.hasAttribute("readonly")&&!e.getAttribute("aria-readonly")&&(e.setAttribute("aria-readonly","true"),i.fixed++),r==="input"&&!a.autocomplete){let u=a.name||"";a.type==="email"||u.includes("email")?(a.autocomplete="email",i.fixed++):a.type==="tel"||u.includes("tel")?(a.autocomplete="tel",i.fixed++):a.type==="password"?(a.autocomplete="current-password",i.fixed++):u.includes("firstname")||u.includes("fname")?(a.autocomplete="given-name",i.fixed++):u.includes("lastname")||u.includes("lname")?(a.autocomplete="family-name",i.fixed++):u==="name"||u.includes("fullname")?(a.autocomplete="name",i.fixed++):u.includes("zip")||u.includes("postal")?(a.autocomplete="postal-code",i.fixed++):u.includes("city")?(a.autocomplete="address-level2",i.fixed++):u.includes("country")&&(a.autocomplete="country",i.fixed++)}r==="input"&&a.type==="image"&&!e.getAttribute("alt")&&(e.setAttribute("alt",e.getAttribute("value")||"submit"),n(r,"alt added to input[type=image]","serious",e)),r==="input"&&a.type==="range"&&(e.getAttribute("aria-valuemin")||e.setAttribute("aria-valuemin",a.min||"0"),e.getAttribute("aria-valuemax")||e.setAttribute("aria-valuemax",a.max||"100"),e.getAttribute("aria-valuenow")||e.setAttribute("aria-valuenow",a.value||"50"),i.fixed++)}if(r==="fieldset"&&!l.querySelector("legend")&&!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")&&(e.setAttribute("aria-label","form group"),n(r,'aria-label="form group" (no legend)',"moderate",e)),r==="label"){let a=e.getAttribute("for"),u=l.querySelector("input,select,textarea");!a&&!u&&!e.getAttribute("aria-label")&&n(r,"label not associated with any control","moderate",e)}if(r==="table"&&(!l.querySelector("th")&&!e.getAttribute("role")&&(e.setAttribute("role","grid"),n(r,'role="grid" (no <th>)',"serious",e)),!l.querySelector("caption")&&!e.getAttribute("aria-label")&&!e.getAttribute("summary")&&(e.setAttribute("aria-label","data table"),n(r,'aria-label="data table" (no caption)',"moderate",e))),r==="th"&&!e.getAttribute("scope")){let a=e.closest("thead")!==null;e.setAttribute("scope",a?"col":"row"),n(r,`scope="${a?"col":"row"}"`,"moderate",e)}if(Ne.has(r)&&(e.getAttribute("role")==="presentation"&&(l.querySelectorAll("li").forEach(a=>{a.getAttribute("role")||a.setAttribute("role","presentation")}),i.fixed++),(r==="ul"||r==="ol")&&!e.getAttribute("aria-label"))){let a=e.closest("nav");a&&(e.setAttribute("aria-label",a.getAttribute("aria-label")||"navigation list"),n(r,"aria-label from parent nav","minor",e))}if(r==="dt"&&!e.getAttribute("aria-label")){let a=e.nextElementSibling;(!a||a.tagName.toLowerCase()!=="dd")&&(e.setAttribute("aria-label",e.innerText?.trim()||"term"),n(r,"aria-label on <dt> (no following <dd>)","minor",e))}if(D[r]&&!e.getAttribute("role")&&(e.setAttribute("role",D[r]),n(r,`role="${D[r]}"`,"minor",e)),["nav","section","article","aside"].includes(r)){let a=l.parentElement?.querySelectorAll(r);if(a&&a.length>1&&!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")){let S=l.querySelector("h1,h2,h3,h4,h5,h6")?.textContent?.trim();S&&(e.setAttribute("aria-label",S),n(r,"aria-label from inner heading","moderate",e))}}if(r==="details"&&!l.querySelector("summary")){let a=document.createElement("summary");a.textContent=e.getAttribute("aria-label")||"More details",e.prepend(a),n(r,"<summary> injected","moderate",e)}if(r==="summary"&&!e.innerText?.trim()&&!e.getAttribute("aria-label")&&(e.setAttribute("aria-label","Toggle details"),n(r,'aria-label="Toggle details" (empty summary)',"moderate",e)),r==="dialog"){let a=e.getAttribute("role");if(a&&a!=="dialog"&&(e.setAttribute("role","dialog"),n(r,'role corrected to "dialog"',"serious",e)),!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")){let S=l.querySelector("h1,h2,h3,h4,h5,h6")?.textContent?.trim()||"dialog";e.setAttribute("aria-label",S),n(r,"aria-label added to dialog","serious",e)}}if(r==="abbr"&&!e.getAttribute("title")&&(e.setAttribute("title",e.innerText?.trim()||"abbreviation"),n(r,"title added to <abbr>","minor",e)),r==="time"&&!e.getAttribute("datetime")&&e.innerText?.trim()&&(e.setAttribute("datetime",e.innerText.trim()),n(r,`datetime="${e.innerText.trim()}" added`,"minor",e)),r==="mark"&&!e.getAttribute("aria-label")&&(e.setAttribute("aria-label",`highlighted: ${e.innerText?.trim()?.slice(0,60)}`),n(r,"aria-label added to <mark>","minor",e)),r==="meter"&&!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")&&(e.setAttribute("aria-label",e.getAttribute("title")||"meter"),n(r,"aria-label added to <meter>","moderate",e)),r==="progress"){!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")&&(e.setAttribute("aria-label",e.getAttribute("title")||"progress"),n(r,"aria-label added to <progress>","moderate",e));let a=e;e.getAttribute("aria-valuenow")||e.setAttribute("aria-valuenow",String(a.value)),e.getAttribute("aria-valuemax")||e.setAttribute("aria-valuemax",String(a.max||1)),i.fixed++}let b=e.getAttribute("role")||"";if(b==="tab"&&!e.getAttribute("aria-selected")&&(e.setAttribute("aria-selected","false"),i.fixed++),b==="tabpanel"&&(!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")&&(e.setAttribute("aria-label","tab panel"),n(r,'aria-label="tab panel"',"moderate",e)),e.getAttribute("tabindex")||(e.setAttribute("tabindex","0"),i.fixed++)),["alert","status","log","marquee"].includes(b)){if(!e.getAttribute("aria-live")){let a=b==="alert"?"assertive":"polite";e.setAttribute("aria-live",a),n(r,`aria-live="${a}" on role=${b}`,"moderate",e)}e.getAttribute("aria-atomic")||(e.setAttribute("aria-atomic","true"),i.fixed++)}b==="tooltip"&&!e.getAttribute("aria-live")&&(e.setAttribute("aria-live","polite"),i.fixed++),(b==="menu"||b==="menubar")&&!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")&&(e.setAttribute("aria-label","menu"),n(r,'aria-label="menu"',"moderate",e)),b==="menuitem"&&e.tabIndex<0&&(e.tabIndex=-1,i.fixed++),b==="listbox"&&!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")&&(e.setAttribute("aria-label","listbox"),n(r,'aria-label="listbox"',"moderate",e)),b==="option"&&!e.getAttribute("aria-selected")&&(e.setAttribute("aria-selected","false"),i.fixed++),b==="slider"&&(e.getAttribute("aria-valuemin")||e.setAttribute("aria-valuemin","0"),e.getAttribute("aria-valuemax")||e.setAttribute("aria-valuemax","100"),e.getAttribute("aria-valuenow")||e.setAttribute("aria-valuenow","50"),i.fixed++),(b==="checkbox"||b==="radio")&&!e.getAttribute("aria-checked")&&(e.setAttribute("aria-checked","false"),n(r,`aria-checked="false" on role=${b}`,"serious",e)),b==="combobox"&&(e.getAttribute("aria-expanded")||(e.setAttribute("aria-expanded","false"),n(r,'aria-expanded="false" on combobox',"serious",e)),e.getAttribute("aria-haspopup")||(e.setAttribute("aria-haspopup","listbox"),i.fixed++)),(b==="grid"||b==="treegrid")&&!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")&&(e.setAttribute("aria-label","data grid"),n(r,'aria-label="data grid"',"moderate",e)),b==="tree"&&!e.getAttribute("aria-label")&&!e.getAttribute("aria-labelledby")&&(e.setAttribute("aria-label","tree"),n(r,'aria-label="tree"',"moderate",e)),b==="treeitem"&&l.querySelector('[role="group"]')&&!e.getAttribute("aria-expanded")&&(e.setAttribute("aria-expanded","false"),i.fixed++),b==="spinbutton"&&(e.getAttribute("aria-valuenow")||e.setAttribute("aria-valuenow","0"),e.getAttribute("aria-valuemin")||e.setAttribute("aria-valuemin","0"),e.getAttribute("aria-valuemax")||e.setAttribute("aria-valuemax","100"),i.fixed++);let p=!["html","head","meta","script","style","link","noscript"].includes(r);if(t.highContrast&&p&&!He.has(r)&&(e.style.filter="contrast(1.15) brightness(1.05)"),t.reduceMotion&&p&&(e.style.transition="none",e.style.animation="none"),t.fontSizeMultiplier&&t.fontSizeMultiplier!==1&&p){let a=parseFloat(window.getComputedStyle(e).fontSize);!isNaN(a)&&a>0&&(e.style.fontSize=`${a*t.fontSizeMultiplier}px`)}if(t.colorBlindMode&&t.colorBlindMode!=="none"&&r==="body"){let a=t.colorBlindMode==="achromatopsia"?"grayscale(100%)":`url(#${j[t.colorBlindMode]})`;e.style.filter=a}t.keyboardHints&&(ne.has(r)||e.tabIndex>=0)&&(e.style.outline="2px solid #007acc",e.style.outlineOffset="2px")}),t.colorBlindMode&&t.colorBlindMode!=="none"&&!O){let l=document.createElementNS("http://www.w3.org/2000/svg","svg");l.setAttribute("aria-hidden","true"),l.style.cssText="position:absolute;width:0;height:0;overflow:hidden;",l.innerHTML=`
2
- <defs>
3
- <filter id="${j.deuteranopia}">
4
- <feColorMatrix type="matrix" values="0.625 0.375 0 0 0 0.7 0.3 0 0 0 0 0.3 0.7 0 0 0 0 0 1 0"/>
5
- </filter>
6
- <filter id="${j.protanopia}">
7
- <feColorMatrix type="matrix" values="0.567 0.433 0 0 0 0.558 0.442 0 0 0 0 0.242 0.758 0 0 0 0 0 1 0"/>
8
- </filter>
9
- <filter id="${j.tritanopia}">
10
- <feColorMatrix type="matrix" values="0.95 0.05 0 0 0 0 0.433 0.567 0 0 0 0.475 0.525 0 0 0 0 0 1 0"/>
11
- </filter>
12
- </defs>`,document.body.appendChild(l),O=l}return this.ensureLiveRegion(),i.renderTime=parseFloat((performance.now()-o).toFixed(2)),i},removeColorBlindSvg(){O?.remove(),O=null},startObserver(t){this.observer||typeof document>"u"||(this.observer=new MutationObserver(()=>this.applyFixes(t)),this.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!1}))},stopObserver(){this.observer?.disconnect(),this.observer=null},ensureLiveRegion(){if(typeof document>"u"||k)return;let t=document.createElement("div");t.setAttribute("aria-live","polite"),t.setAttribute("aria-atomic","true"),t.style.cssText="position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;",document.body.appendChild(t),k=t},removeLiveRegion(){k?.remove(),k=null},announce(t){k&&(k.textContent=t)}};g();g();var x=T(X(),1);g();var q=T(X(),1),f=T(P(),1),J={highContrast:!1,reduceMotion:!1,autoFix:!0,dyslexiaFont:!1,fontScale:100},R=[80,90,100,110,120,130,140,150],he=[{id:"highContrast",label:"High contrast",description:"contrast(1.15) brightness on all nodes",icon:"\u25D1"},{id:"reduceMotion",label:"Reduce motion",description:"Disables all transitions & animations",icon:"\u23F8"},{id:"autoFix",label:"Auto-fix ARIA",description:"MutationObserver on new DOM nodes",icon:"\u267F"},{id:"dyslexiaFont",label:"Dyslexia-friendly font",description:"Wider letter & word spacing",icon:"Aa"}];function tt({checked:t,onChange:i,label:o}){return(0,f.jsxs)("label",{"aria-label":o,style:{position:"relative",display:"inline-flex",width:40,height:24,cursor:"pointer",flexShrink:0},children:[(0,f.jsx)("input",{type:"checkbox",checked:t,onChange:s=>i(s.target.checked),style:{opacity:0,width:0,height:0,position:"absolute"}}),(0,f.jsx)("span",{style:{position:"absolute",inset:0,borderRadius:99,background:t?"#0d9488":"#cbd5e1",transition:"background 0.2s"}}),(0,f.jsx)("span",{style:{position:"absolute",top:3,left:t?19:3,width:18,height:18,background:"#fff",borderRadius:"50%",transition:"left 0.2s",boxShadow:"0 1px 3px rgba(0,0,0,0.2)",pointerEvents:"none"}})]})}var ee=(0,q.forwardRef)(({position:t,settings:i,report:o,isActive:s,set:n,onApply:l,onReset:e,onClose:r},y)=>(0,f.jsxs)("div",{ref:y,role:"dialog","aria-modal":"true","aria-label":"yuktai-a11y accessibility options",style:{position:"fixed",bottom:24,...t==="left"?{left:88}:{right:88},width:312,background:"#fff",border:"1px solid #e2e8f0",borderRadius:16,boxShadow:"0 8px 32px rgba(0,0,0,0.12)",zIndex:9998,overflow:"hidden",fontFamily:"system-ui,-apple-system,sans-serif"},children:[(0,f.jsxs)("div",{style:{padding:"14px 18px 12px",borderBottom:"1px solid #f1f5f9",display:"flex",alignItems:"flex-start",justifyContent:"space-between"},children:[(0,f.jsxs)("div",{children:[(0,f.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:7,marginBottom:5},children:[(0,f.jsx)("span",{style:{fontSize:10,fontWeight:700,padding:"2px 7px",borderRadius:99,background:"#f0fdfa",color:"#0d9488",letterSpacing:"0.05em",fontFamily:"monospace"},children:"@yuktishaalaa/yuktai v1.0.0"}),s&&(0,f.jsx)("span",{style:{fontSize:10,fontWeight:700,padding:"2px 7px",borderRadius:99,background:"#f0fdfa",color:"#0f766e",border:"1px solid #99f6e4"},children:"\u25CF ACTIVE"})]}),(0,f.jsx)("p",{style:{margin:"0 0 2px",fontSize:15,fontWeight:600,color:"#0f172a"},children:"Accessibility"}),(0,f.jsx)("p",{style:{margin:0,fontSize:12,color:"#64748b"},children:"Zero-config WCAG fixes \xB7 Open Source"})]}),(0,f.jsx)("button",{onClick:r,"aria-label":"Close panel",style:{background:"none",border:"none",cursor:"pointer",padding:4,color:"#94a3b8",fontSize:18,lineHeight:1,borderRadius:6},children:"\xD7"})]}),(0,f.jsx)("div",{style:{padding:"6px 0"},children:he.map((p,a)=>(0,f.jsxs)(q.default.Fragment,{children:[(0,f.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"10px 18px",gap:12},children:[(0,f.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,flex:1},children:[(0,f.jsx)("span",{"aria-hidden":"true",style:{width:30,height:30,borderRadius:8,background:"#f0fdfa",color:"#0d9488",display:"flex",alignItems:"center",justifyContent:"center",fontSize:13,flexShrink:0,fontWeight:700},children:p.icon}),(0,f.jsxs)("div",{children:[(0,f.jsx)("p",{style:{margin:0,fontSize:13,fontWeight:500,color:"#0f172a"},children:p.label}),(0,f.jsx)("p",{style:{margin:0,fontSize:11,color:"#94a3b8"},children:p.description})]})]}),(0,f.jsx)(tt,{checked:i[p.id],onChange:u=>n(p.id,u),label:`Toggle ${p.label}`})]}),a<he.length-1&&(0,f.jsx)("div",{style:{height:1,background:"#f8fafc",margin:"0 18px"}})]},p.id))}),(0,f.jsxs)("div",{style:{padding:"10px 18px 14px",borderTop:"1px solid #f1f5f9"},children:[(0,f.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:10},children:[(0,f.jsx)("p",{style:{margin:0,fontSize:13,fontWeight:500,color:"#0f172a"},children:"Text size"}),(0,f.jsxs)("span",{style:{fontSize:12,fontWeight:600,color:"#0d9488",background:"#f0fdfa",padding:"2px 8px",borderRadius:99},children:[i.fontScale,"%"]})]}),(0,f.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,f.jsx)("button",{onClick:()=>{let p=R.indexOf(i.fontScale);p>0&&n("fontScale",R[p-1])},disabled:i.fontScale<=80,"aria-label":"Decrease text size",style:{width:30,height:30,borderRadius:8,border:"1px solid #e2e8f0",background:"#fff",cursor:i.fontScale<=80?"not-allowed":"pointer",fontSize:16,color:i.fontScale<=80?"#cbd5e1":"#0f172a",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:"\u2212"}),(0,f.jsx)("div",{style:{flex:1,display:"flex",gap:3},children:R.map(p=>(0,f.jsx)("button",{onClick:()=>n("fontScale",p),"aria-label":`Set text size to ${p}%`,style:{flex:1,height:6,borderRadius:99,border:"none",cursor:"pointer",padding:0,background:p<=i.fontScale?"#0d9488":"#e2e8f0",transition:"background 0.15s"}},p))}),(0,f.jsx)("button",{onClick:()=>{let p=R.indexOf(i.fontScale);p<R.length-1&&n("fontScale",R[p+1])},disabled:i.fontScale>=150,"aria-label":"Increase text size",style:{width:30,height:30,borderRadius:8,border:"1px solid #e2e8f0",background:"#fff",cursor:i.fontScale>=150?"not-allowed":"pointer",fontSize:16,color:i.fontScale>=150?"#cbd5e1":"#0f172a",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:"+"})]})]}),o&&(0,f.jsx)("div",{role:"status",style:{margin:"0 14px",padding:"8px 12px",background:"#f0fdfa",border:"1px solid #99f6e4",borderRadius:8,fontSize:12,color:"#0f766e",fontWeight:500,fontFamily:"monospace"},children:o.fixed>0?`\u2713 ${o.fixed} fixes applied \xB7 ${o.scanned} nodes \xB7 ${o.renderTime}ms`:`\u2713 0 fixes needed \xB7 ${o.scanned} nodes clean \xB7 ${o.renderTime}ms`}),(0,f.jsxs)("div",{style:{display:"flex",gap:8,padding:"12px 14px 14px"},children:[(0,f.jsx)("button",{onClick:e,style:{flex:1,padding:"8px 0",fontSize:13,fontWeight:500,borderRadius:9,border:"1px solid #e2e8f0",background:"#fff",color:"#64748b",cursor:"pointer"},children:"Reset"}),(0,f.jsx)("button",{onClick:l,style:{flex:2,padding:"8px 0",fontSize:13,fontWeight:600,borderRadius:9,border:"none",background:"#0d9488",color:"#fff",cursor:"pointer"},children:"Apply settings"})]})]}));ee.displayName="WidgetPanel";var v=T(P(),1),F=null,M=null;function Y({children:t,position:i="left"}){let[o,s]=(0,x.useState)(!1),[n,l]=(0,x.useState)(!1),[e,r]=(0,x.useState)(J),[y,b]=(0,x.useState)(null),[p,a]=(0,x.useState)(!1),u=(0,x.useRef)(null),S=(0,x.useRef)(null);(0,x.useEffect)(()=>s(!0),[]),(0,x.useEffect)(()=>{if(F)return;let c=document.createElement("style");return c.innerHTML="*:focus-visible{outline:3px solid #0d9488!important;outline-offset:2px!important;box-shadow:0 0 0 5px rgba(13,148,136,.25)!important;}",document.head.appendChild(c),F=c,()=>{F?.remove(),F=null}},[]),(0,x.useEffect)(()=>()=>{A.stopObserver(),A.removeLiveRegion(),A.removeColorBlindSvg()},[]),(0,x.useEffect)(()=>{if(!n)return;let c=E=>{u.current&&!u.current.contains(E.target)&&S.current&&!S.current.contains(E.target)&&l(!1)};return document.addEventListener("mousedown",c),()=>document.removeEventListener("mousedown",c)},[n]),(0,x.useEffect)(()=>{let c=E=>{E.key==="Escape"&&n&&(l(!1),S.current?.focus())};return document.addEventListener("keydown",c),()=>document.removeEventListener("keydown",c)},[n]);let Se=(c,E)=>r(I=>({...I,[c]:E})),Ee=(0,x.useCallback)(async()=>{let c={enabled:!0,highContrast:e.highContrast,reduceMotion:e.reduceMotion,autoFix:e.autoFix},E=await A.execute(c);if(console.log("[yuktai-a11y]",E),b(A.applyFixes(c)),document.documentElement.style.fontSize=`${e.fontScale}%`,e.dyslexiaFont){if(!M){let I=document.createElement("style");I.textContent="body,body *{font-family:'Georgia',serif!important;letter-spacing:.06em!important;word-spacing:.12em!important;line-height:1.9!important;}",document.head.appendChild(I),M=I}}else M?.remove(),M=null;a(!0),l(!1),A.announce("yuktai-a11y active.")},[e]),we=(0,x.useCallback)(async()=>{await A.execute({enabled:!1}),document.documentElement.style.fontSize="",M?.remove(),M=null,document.querySelectorAll("*").forEach(c=>{c.style.filter="",c.style.transition="",c.style.animation=""}),r(J),b(null),a(!1),A.announce("yuktai-a11y disabled.")},[]);return o?(0,v.jsxs)(v.Fragment,{children:[t,(0,v.jsxs)("button",{ref:S,onClick:()=>l(c=>!c),"aria-label":"Open yuktai-a11y accessibility options","aria-expanded":n,"aria-haspopup":"dialog",style:{position:"fixed",bottom:24,...i==="left"?{left:24}:{right:24},width:52,height:52,borderRadius:"50%",background:p?"#0f766e":"#0d9488",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",boxShadow:"0 4px 14px rgba(0,0,0,0.18)",zIndex:9999,transition:"background 0.2s, transform 0.15s",outline:"none"},onMouseEnter:c=>c.currentTarget.style.transform="scale(1.08)",onMouseLeave:c=>c.currentTarget.style.transform="scale(1)",onFocus:c=>c.currentTarget.style.boxShadow="0 0 0 4px rgba(13,148,136,0.45)",onBlur:c=>c.currentTarget.style.boxShadow="0 4px 14px rgba(0,0,0,0.18)",children:[(0,v.jsx)("svg",{viewBox:"0 0 24 24",style:{width:26,height:26,fill:"#fff"},"aria-hidden":"true",children:(0,v.jsx)("path",{d:"M12 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm9 4.5l-5-.5-2-.2V5l-4 .5-4-.5v.8L4 6.5 3 7l1 3 4-.5v2.3L6 17h2l2-4.5L12 14l2 2.5L16 17h2l-2-4.2V9.5l4 .5 1-3z"})}),p&&(0,v.jsx)("span",{"aria-hidden":"true",style:{position:"absolute",top:4,right:4,width:10,height:10,borderRadius:"50%",background:"#5eead4",border:"2px solid #fff"}})]}),n&&(0,v.jsx)(ee,{ref:u,position:i,settings:e,report:y,isActive:p,set:Se,onApply:Ee,onReset:we,onClose:()=>l(!1)})]}):(0,v.jsx)(v.Fragment,{children:t})}g();var $={name:"ai.text",async execute(t){return`\u{1F916} YuktAI says: ${t}`}};g();var L={name:"voice.text",async execute(t){return!t||t.trim()===""?"\u{1F3A4} No speech detected":`\u{1F3A4} You said: ${t}`}};g();var w=class{plugins=new Map;register(i,o){if(!o||typeof o.execute!="function")throw new Error(`Invalid plugin: ${i}`);this.plugins.set(i,o)}use(i){return this.plugins.get(i)}async run(i,o){try{let s=this.use(i);if(!s)throw new Error(`Plugin not found: ${i}`);return await s.execute(o)}catch(s){throw console.error(`[YuktAI Runtime Error in ${i}]:`,s),s}}getPlugins(){return Array.from(this.plugins.keys())}};function it(){if(typeof globalThis>"u")return new w;if(!globalThis.__yuktai_runtime__){let t=new w;t.register(A.name,A),t.register($.name,$),t.register(L.name,L),globalThis.__yuktai_runtime__=t}return globalThis.__yuktai_runtime__}var ve=typeof window<"u"?it():new w,rt={wcagPlugin:A,list(){return ve.getPlugins()},use(t){return ve.use(t)},fix(t){return A.applyFixes({enabled:!0,autoFix:!0,...t})},scan(){return A.scan()}};return Pe(nt);})();
13
- /*! Bundled license information:
14
-
15
- react/cjs/react.production.js:
16
- (**
17
- * @license React
18
- * react.production.js
19
- *
20
- * Copyright (c) Meta Platforms, Inc. and affiliates.
21
- *
22
- * This source code is licensed under the MIT license found in the
23
- * LICENSE file in the root directory of this source tree.
24
- *)
25
-
26
- react/cjs/react-jsx-runtime.production.js:
27
- (**
28
- * @license React
29
- * react-jsx-runtime.production.js
30
- *
31
- * Copyright (c) Meta Platforms, Inc. and affiliates.
32
- *
33
- * This source code is licensed under the MIT license found in the
34
- * LICENSE file in the root directory of this source tree.
35
- *)
36
- */