@accesslint/core 0.6.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -366,7 +366,7 @@ function at(t) {
366
366
  }
367
367
  return a;
368
368
  }
369
- function O(t) {
369
+ function B(t) {
370
370
  if (t.id) return `#${CSS.escape(t.id)}`;
371
371
  const a = t.getRootNode(), e = a instanceof ShadowRoot ? null : a.documentElement, n = [];
372
372
  let i = t;
@@ -396,13 +396,13 @@ function p(t) {
396
396
  for (; n; ) {
397
397
  const o = n.getRootNode();
398
398
  if (o instanceof ShadowRoot)
399
- e.unshift({ selector: O(n), delimiter: " >>> " }), n = o.host;
399
+ e.unshift({ selector: B(n), delimiter: " >>> " }), n = o.host;
400
400
  else {
401
401
  const r = (s = o.defaultView) == null ? void 0 : s.frameElement;
402
402
  if (r)
403
- e.unshift({ selector: O(n), delimiter: " >>>iframe> " }), n = r;
403
+ e.unshift({ selector: B(n), delimiter: " >>>iframe> " }), n = r;
404
404
  else {
405
- e.unshift({ selector: O(n), delimiter: "" });
405
+ e.unshift({ selector: B(n), delimiter: "" });
406
406
  break;
407
407
  }
408
408
  }
@@ -410,7 +410,7 @@ function p(t) {
410
410
  const i = e.map((o, r) => (r === 0 ? "" : o.delimiter) + o.selector).join("");
411
411
  return K.set(t, i), i;
412
412
  }
413
- function Li(t) {
413
+ function Ii(t) {
414
414
  const a = [], e = [];
415
415
  let n = t;
416
416
  for (; n; ) {
@@ -763,7 +763,7 @@ let J = /* @__PURE__ */ new WeakMap(), Q = /* @__PURE__ */ new WeakMap(), Z = /*
763
763
  function ct() {
764
764
  J = /* @__PURE__ */ new WeakMap(), Q = /* @__PURE__ */ new WeakMap(), Z = /* @__PURE__ */ new WeakMap();
765
765
  }
766
- function A(t) {
766
+ function x(t) {
767
767
  let a = J.get(t);
768
768
  return a || (a = getComputedStyle(t), J.set(t, a), a);
769
769
  }
@@ -827,7 +827,7 @@ function Te(t) {
827
827
  }
828
828
  return 1;
829
829
  }
830
- function q(t, a, e) {
830
+ function L(t, a, e) {
831
831
  return [
832
832
  Math.round(t[0] * e + a[0] * (1 - e)),
833
833
  Math.round(t[1] * e + a[1] * (1 - e)),
@@ -843,7 +843,7 @@ function be(t) {
843
843
  function dt(t) {
844
844
  let a = t;
845
845
  for (; a; ) {
846
- const e = A(a), n = e.backgroundImage;
846
+ const e = x(a), n = e.backgroundImage;
847
847
  if (n && n !== "none" && n !== "initial") {
848
848
  const o = e.backgroundColor;
849
849
  return o && o !== "transparent" && o !== "rgba(0, 0, 0, 0)" && o !== "rgba(0 0 0 / 0)" ? C(o) : null;
@@ -900,12 +900,12 @@ function ht(t) {
900
900
  function bt(t) {
901
901
  let a = t, e = !1;
902
902
  for (; a; ) {
903
- const n = A(a).position;
903
+ const n = x(a).position;
904
904
  if ((n === "absolute" || n === "fixed") && (e = !0), a !== t && n !== "static") {
905
905
  for (const i of a.children)
906
906
  if (!(i === t || i.contains(t)) && pt.has(i.tagName)) {
907
907
  if (e) return !0;
908
- const s = A(i).position;
908
+ const s = x(i).position;
909
909
  if (s === "absolute" || s === "fixed") return !0;
910
910
  }
911
911
  if (e) break;
@@ -919,15 +919,15 @@ function gt(t) {
919
919
  return t.endsWith("pt") ? a * (4 / 3) : a;
920
920
  }
921
921
  function ge(t) {
922
- const a = A(t), e = gt(a.fontSize), n = parseInt(a.fontWeight) || (a.fontWeight === "bold" ? 700 : 400);
922
+ const a = x(t), e = gt(a.fontSize), n = parseInt(a.fontWeight) || (a.fontWeight === "bold" ? 700 : 400);
923
923
  return e >= 23.5 || e >= 18.5 && n >= 700;
924
924
  }
925
- const z = /* @__PURE__ */ new Map();
926
- function qi(t, a) {
927
- z.set(t, a), ee.delete(t);
925
+ const j = /* @__PURE__ */ new Map();
926
+ function Ei(t, a) {
927
+ j.set(t, a), ee.delete(t);
928
928
  }
929
929
  function ft(t, a) {
930
- const e = z.get(a);
930
+ const e = j.get(a);
931
931
  return e ? t.map((n) => {
932
932
  const i = e[n.id];
933
933
  return i ? {
@@ -951,7 +951,7 @@ function yt(t) {
951
951
  function wt(t, a) {
952
952
  let e = ee.get(t);
953
953
  if (e || (e = /* @__PURE__ */ new Map(), ee.set(t, e)), e.has(a)) return e.get(a);
954
- const n = z.get(t);
954
+ const n = j.get(t);
955
955
  if (!n) return;
956
956
  const i = n[a];
957
957
  if (!(i != null && i.messages))
@@ -978,12 +978,12 @@ function At(t, a, e) {
978
978
  return a;
979
979
  }
980
980
  function Me(t, a) {
981
- return z.has(a) ? t.map((e) => {
981
+ return j.has(a) ? t.map((e) => {
982
982
  const n = At(e.ruleId, e.message, a);
983
983
  return n === e.message ? e : { ...e, message: n };
984
984
  }) : t;
985
985
  }
986
- function B(t) {
986
+ function V(t) {
987
987
  var s, o;
988
988
  const a = [], e = t.closest("a");
989
989
  if (e) {
@@ -1036,7 +1036,7 @@ const xt = {
1036
1036
  html: u(e),
1037
1037
  impact: "critical",
1038
1038
  message: 'Image has whitespace-only alt text. Use alt="" for decorative images or provide descriptive text.',
1039
- context: B(e)
1039
+ context: V(e)
1040
1040
  });
1041
1041
  continue;
1042
1042
  }
@@ -1046,7 +1046,7 @@ const xt = {
1046
1046
  html: u(e),
1047
1047
  impact: "critical",
1048
1048
  message: "Image element missing alt attribute.",
1049
- context: B(e)
1049
+ context: V(e)
1050
1050
  });
1051
1051
  }
1052
1052
  for (const e of t.querySelectorAll('[role="img"]:not(img):not(svg)'))
@@ -1056,7 +1056,7 @@ const xt = {
1056
1056
  html: u(e),
1057
1057
  impact: "critical",
1058
1058
  message: 'Element with role="img" has no accessible name. Add aria-label or aria-labelledby.',
1059
- context: B(e)
1059
+ context: V(e)
1060
1060
  });
1061
1061
  return a;
1062
1062
  }
@@ -1155,7 +1155,7 @@ const St = {
1155
1155
  }
1156
1156
  return a;
1157
1157
  }
1158
- }, Lt = ["image", "picture", "photo", "graphic", "icon", "img"], qt = {
1158
+ }, qt = ["image", "picture", "photo", "graphic", "icon", "img"], Lt = {
1159
1159
  id: "accesslint-015",
1160
1160
  wcag: [],
1161
1161
  level: "A",
@@ -1168,7 +1168,7 @@ const St = {
1168
1168
  for (const e of t.querySelectorAll("img[alt]")) {
1169
1169
  const n = e.getAttribute("alt").toLowerCase();
1170
1170
  if (!n) continue;
1171
- const i = Lt.filter((s) => n.split(/\s+/).includes(s));
1171
+ const i = qt.filter((s) => n.split(/\s+/).includes(s));
1172
1172
  i.length > 0 && a.push({
1173
1173
  ruleId: "accesslint-015",
1174
1174
  selector: p(e),
@@ -1276,7 +1276,7 @@ const Tt = {
1276
1276
  return a;
1277
1277
  }
1278
1278
  };
1279
- function Ri(t) {
1279
+ function qi(t) {
1280
1280
  if (typeof t != "object" || t === null)
1281
1281
  return "Rule spec must be an object";
1282
1282
  const a = t;
@@ -1335,7 +1335,7 @@ function I(t, a, e) {
1335
1335
  }
1336
1336
  return n;
1337
1337
  }
1338
- function L(t) {
1338
+ function q(t) {
1339
1339
  const a = t.skipAriaHidden !== !1;
1340
1340
  return {
1341
1341
  id: t.id,
@@ -1513,7 +1513,7 @@ const Dt = {
1513
1513
  level: "A",
1514
1514
  guidance: "Server-side image maps (using ismap attribute) send click coordinates to the server, which is inaccessible to keyboard users and screen readers who can't precisely click specific regions. Replace with client-side image maps (<map> with <area> elements) that provide keyboard access and accessible names, or use linked images/buttons instead.",
1515
1515
  prompt: "Explain that the ismap attribute should be removed and the functionality replaced with a client-side <map> element with <area> children, or separate linked images/buttons."
1516
- }, Ft = L(Dt), Pt = [
1516
+ }, Ft = q(Dt), Pt = [
1517
1517
  '[role="checkbox"]',
1518
1518
  '[role="combobox"]',
1519
1519
  '[role="listbox"]',
@@ -1576,7 +1576,7 @@ function jt(t) {
1576
1576
  }
1577
1577
  return "";
1578
1578
  }
1579
- const Wt = {
1579
+ const Ut = {
1580
1580
  id: "accesslint-020",
1581
1581
  actRuleIds: ["e086e5"],
1582
1582
  wcag: ["4.1.2"],
@@ -1588,7 +1588,7 @@ const Wt = {
1588
1588
  var i;
1589
1589
  const a = [], n = t.querySelectorAll(`input:not([type="hidden"]):not([type="submit"]):not([type="button"]):not([type="reset"]):not([type="image"]), textarea, select, ${Pt}`);
1590
1590
  for (const s of n) {
1591
- if (b(s) || T(s) || (s instanceof HTMLInputElement || s instanceof HTMLTextAreaElement || s instanceof HTMLSelectElement || s instanceof HTMLButtonElement) && s.disabled || s.closest("fieldset[disabled]") || s.getAttribute("aria-disabled") === "true") continue;
1591
+ if (b(s) || T(s)) continue;
1592
1592
  const o = (i = s.getAttribute("role")) == null ? void 0 : i.trim().toLowerCase();
1593
1593
  if (o === "presentation" || o === "none") continue;
1594
1594
  if (!jt(s)) {
@@ -1611,7 +1611,7 @@ const Wt = {
1611
1611
  }
1612
1612
  return a;
1613
1613
  }
1614
- }, Ut = {
1614
+ }, Wt = {
1615
1615
  id: "accesslint-021",
1616
1616
  wcag: [],
1617
1617
  level: "A",
@@ -1902,7 +1902,7 @@ const Qt = {
1902
1902
  tags: ["best-practice"],
1903
1903
  guidance: "Positive tabindex values force elements to the front of the tab order regardless of DOM position, creating unpredictable navigation for keyboard users. Use tabindex='0' to add elements to the natural tab order, or tabindex='-1' to make elements programmatically focusable but not in tab order. Rely on DOM order for tab sequence.",
1904
1904
  prompt: "Change the positive tabindex value to tabindex='0' and rely on DOM order for tab sequence instead."
1905
- }, ta = L(ea), aa = /* @__PURE__ */ new Set([
1905
+ }, ta = q(ea), aa = /* @__PURE__ */ new Set([
1906
1906
  "div",
1907
1907
  "span",
1908
1908
  "p",
@@ -2063,13 +2063,13 @@ const da = {
2063
2063
  if (s === "body" || s === "html") continue;
2064
2064
  const o = i.getAttribute("role");
2065
2065
  if (o === "presentation" || o === "none") continue;
2066
- const r = A(i), l = r.overflowX, m = r.overflowY;
2066
+ const r = x(i), l = r.overflowX, m = r.overflowY;
2067
2067
  if (!(l === "scroll" || l === "auto" || m === "scroll" || m === "auto")) continue;
2068
2068
  if (i.scrollHeight > 0 || i.clientHeight > 0) {
2069
2069
  const f = i.scrollHeight - i.clientHeight, v = i.scrollWidth - i.clientWidth;
2070
2070
  if (f <= 0 && v <= 0 || f < 14 && v < 14 || i.clientWidth < 64 && i.clientHeight < 64) continue;
2071
- const w = ((e = i.textContent) == null ? void 0 : e.trim().length) ?? 0, x = i.querySelector("img, svg, video, canvas, picture") !== null;
2072
- if (w === 0 && !x) continue;
2071
+ const A = ((e = i.textContent) == null ? void 0 : e.trim().length) ?? 0, w = i.querySelector("img, svg, video, canvas, picture") !== null;
2072
+ if (A === 0 && !w) continue;
2073
2073
  } else {
2074
2074
  const f = r.height !== "" || r.maxHeight !== "", v = ((n = i.textContent) == null ? void 0 : n.trim().length) ?? 0;
2075
2075
  if (!f || v <= 50) continue;
@@ -2174,7 +2174,7 @@ const da = {
2174
2174
  }
2175
2175
  return a;
2176
2176
  }
2177
- }, j = 'article, aside, main, nav, section, [role="article"], [role="complementary"], [role="main"], [role="navigation"], [role="region"]', we = 'main, [role="main"], header, [role="banner"], footer, [role="contentinfo"], nav, [role="navigation"], aside, [role="complementary"], section[aria-label], section[aria-labelledby], [role="region"][aria-label], [role="region"][aria-labelledby], form[aria-label], form[aria-labelledby], [role="form"][aria-label], [role="form"][aria-labelledby], [role="search"]', ga = {
2177
+ }, U = 'article, aside, main, nav, section, [role="article"], [role="complementary"], [role="main"], [role="navigation"], [role="region"]', we = 'main, [role="main"], header, [role="banner"], footer, [role="contentinfo"], nav, [role="navigation"], aside, [role="complementary"], section[aria-label], section[aria-labelledby], [role="region"][aria-label], [role="region"][aria-labelledby], form[aria-label], form[aria-labelledby], [role="form"][aria-label], [role="form"][aria-labelledby], [role="search"]', ga = {
2178
2178
  id: "accesslint-036",
2179
2179
  wcag: [],
2180
2180
  level: "A",
@@ -2207,7 +2207,7 @@ const da = {
2207
2207
  guidance: "The banner landmark (typically <header>) identifies site-oriented content like logos and search. Only one top-level banner is allowed per page. If you need multiple headers, nest them inside sectioning elements (article, section, aside) where they become scoped headers rather than page-level banners.",
2208
2208
  prompt: "Explain whether to remove this duplicate banner or nest it inside a sectioning element.",
2209
2209
  run(t) {
2210
- const a = [], e = t.querySelectorAll('header, [role="banner"]'), n = Array.from(e).filter((i) => !i.closest(j));
2210
+ const a = [], e = t.querySelectorAll('header, [role="banner"]'), n = Array.from(e).filter((i) => !i.closest(U));
2211
2211
  return n.length > 1 && n.slice(1).forEach(
2212
2212
  (i) => a.push({
2213
2213
  ruleId: "accesslint-037",
@@ -2227,7 +2227,7 @@ const da = {
2227
2227
  guidance: "The contentinfo landmark (typically <footer>) contains information about the page like copyright and contact info. Only one top-level contentinfo is allowed per page. Nest additional footers inside sectioning elements to scope them.",
2228
2228
  prompt: "Explain whether to remove this duplicate footer or nest it inside a sectioning element.",
2229
2229
  run(t) {
2230
- const a = [], e = t.querySelectorAll('footer, [role="contentinfo"]'), n = Array.from(e).filter((i) => !i.closest(j));
2230
+ const a = [], e = t.querySelectorAll('footer, [role="contentinfo"]'), n = Array.from(e).filter((i) => !i.closest(U));
2231
2231
  return n.length > 1 && n.slice(1).forEach(
2232
2232
  (i) => a.push({
2233
2233
  ruleId: "accesslint-038",
@@ -2269,7 +2269,7 @@ const da = {
2269
2269
  run(t) {
2270
2270
  const a = [], e = t.querySelectorAll('[role="banner"]');
2271
2271
  for (const n of e)
2272
- n.closest(j) && a.push({
2272
+ n.closest(U) && a.push({
2273
2273
  ruleId: "accesslint-040",
2274
2274
  selector: p(n),
2275
2275
  html: u(n),
@@ -2289,7 +2289,7 @@ const da = {
2289
2289
  run(t) {
2290
2290
  const a = [], e = t.querySelectorAll('[role="contentinfo"]');
2291
2291
  for (const n of e)
2292
- n.closest(j) && a.push({
2292
+ n.closest(U) && a.push({
2293
2293
  ruleId: "accesslint-041",
2294
2294
  selector: p(n),
2295
2295
  html: u(n),
@@ -2414,7 +2414,7 @@ const da = {
2414
2414
  level: "A",
2415
2415
  guidance: "Screen readers announce list structure ('list with 5 items') based on proper markup. Placing non-<li> elements directly inside <ul> or <ol> breaks this structure. Wrap content in <li> elements, or if you need wrapper divs for styling, restructure your CSS to style the <li> elements directly.",
2416
2416
  prompt: "Explain how to restructure this element within the list properly."
2417
- }, La = L(Ea), qa = {
2417
+ }, qa = q(Ea), La = {
2418
2418
  id: "accesslint-048",
2419
2419
  wcag: ["1.3.1"],
2420
2420
  level: "A",
@@ -2444,7 +2444,7 @@ const da = {
2444
2444
  level: "A",
2445
2445
  guidance: "Definition lists have strict content requirements. Only <dt> (terms), <dd> (definitions), and <div> (for grouping dt/dd pairs) are valid children. Other elements break the list structure for screen readers. Move invalid elements outside the <dl>, or restructure using proper definition list markup.",
2446
2446
  prompt: "Explain whether to move this element outside the <dl> or convert it to dt/dd."
2447
- }, Ca = L(Ra), Ta = {
2447
+ }, Ca = q(Ra), Ta = {
2448
2448
  id: "accesslint-047",
2449
2449
  wcag: ["1.3.1"],
2450
2450
  level: "A",
@@ -2821,7 +2821,7 @@ function De(t, a, e, n) {
2821
2821
  }
2822
2822
  for (const r of s.childNodes)
2823
2823
  if (r.nodeType === 3 && ((o = r.textContent) != null && o.trim())) {
2824
- const l = parseFloat(A(s).fontSize);
2824
+ const l = parseFloat(x(s).fontSize);
2825
2825
  if (l > 0 && e / l < n) return !0;
2826
2826
  break;
2827
2827
  }
@@ -2831,7 +2831,7 @@ function De(t, a, e, n) {
2831
2831
  }
2832
2832
  return i(t);
2833
2833
  }
2834
- function Wa(t) {
2834
+ function Ua(t) {
2835
2835
  var a;
2836
2836
  for (const e of t.childNodes)
2837
2837
  if (e.nodeType === 3 && ((a = e.textContent) != null && a.trim()))
@@ -2853,7 +2853,7 @@ function Pe(t) {
2853
2853
  return !1;
2854
2854
  }
2855
2855
  function oe(t, a) {
2856
- if (Wa(t)) return !0;
2856
+ if (Ua(t)) return !0;
2857
2857
  for (const e of t.children) {
2858
2858
  const n = e.getAttribute("style") || "";
2859
2859
  if (!new RegExp(
@@ -2884,7 +2884,7 @@ function He(t, a, e, n) {
2884
2884
  }
2885
2885
  return i;
2886
2886
  }
2887
- const Ua = {
2887
+ const Wa = {
2888
2888
  id: "accesslint-050",
2889
2889
  actRuleIds: ["24afc2"],
2890
2890
  wcag: ["1.4.12"],
@@ -2898,7 +2898,7 @@ const Ua = {
2898
2898
  function Oa(t) {
2899
2899
  let a = t, e = !1;
2900
2900
  for (; a; ) {
2901
- const n = A(a);
2901
+ const n = x(a);
2902
2902
  parseFloat(n.width) > 500 && (e = !0), (n.whiteSpace === "nowrap" || n.whiteSpace === "pre") && (e = !0);
2903
2903
  const s = n.overflowX, o = n.overflowY;
2904
2904
  if ((s === "scroll" || s === "auto") && o !== "scroll" && o !== "auto")
@@ -2919,7 +2919,7 @@ const Ba = {
2919
2919
  for (const e of t.querySelectorAll("[style]")) {
2920
2920
  if (b(e) || !Fe(e) || Pe(e) || !oe(e, "line-height") || Oa(e)) continue;
2921
2921
  if (e instanceof HTMLElement && e.scrollHeight > 0) {
2922
- const s = parseFloat(A(e).lineHeight);
2922
+ const s = parseFloat(x(e).lineHeight);
2923
2923
  if (s > 0 && e.scrollHeight <= s * 1.5) continue;
2924
2924
  }
2925
2925
  const n = $e(e, "line-height");
@@ -2963,7 +2963,7 @@ function ze(t, a) {
2963
2963
  return NaN;
2964
2964
  }
2965
2965
  }
2966
- function H(t) {
2966
+ function z(t) {
2967
2967
  return isNaN(t) ? !1 : (t = (t % 360 + 360) % 360, t >= 85 && t <= 95 || t >= 265 && t <= 275);
2968
2968
  }
2969
2969
  function _a(t) {
@@ -2972,21 +2972,21 @@ function _a(t) {
2972
2972
  );
2973
2973
  if (a) {
2974
2974
  const i = ze(parseFloat(a[1]), a[2]);
2975
- if (H(i)) return !0;
2975
+ if (z(i)) return !0;
2976
2976
  }
2977
2977
  const e = t.match(
2978
2978
  /matrix\(\s*(-?[\d.e]+)\s*,\s*(-?[\d.e]+)\s*,\s*(-?[\d.e]+)\s*,\s*(-?[\d.e]+)/i
2979
2979
  );
2980
2980
  if (e) {
2981
2981
  const i = parseFloat(e[1]), s = parseFloat(e[2]), o = Math.atan2(s, i) * (180 / Math.PI);
2982
- if (H(o)) return !0;
2982
+ if (z(o)) return !0;
2983
2983
  }
2984
2984
  const n = t.match(
2985
2985
  /matrix3d\(\s*(-?[\d.e]+)\s*,\s*(-?[\d.e]+)\s*,\s*(-?[\d.e]+)\s*,\s*(-?[\d.e]+)\s*,\s*(-?[\d.e]+)\s*,\s*(-?[\d.e]+)/i
2986
2986
  );
2987
2987
  if (n) {
2988
2988
  const i = parseFloat(n[1]), s = parseFloat(n[2]), o = Math.atan2(s, i) * (180 / Math.PI);
2989
- if (H(o)) return !0;
2989
+ if (z(o)) return !0;
2990
2990
  }
2991
2991
  return !1;
2992
2992
  }
@@ -2994,7 +2994,7 @@ function Ga(t) {
2994
2994
  const a = t.match(/(-?[\d.]+)(deg|rad|turn|grad)/i);
2995
2995
  if (!a) return !1;
2996
2996
  const e = ze(parseFloat(a[1]), a[2]);
2997
- return H(e);
2997
+ return z(e);
2998
2998
  }
2999
2999
  const Ya = {
3000
3000
  id: "accesslint-053",
@@ -3042,7 +3042,7 @@ const Ya = {
3042
3042
  level: "A",
3043
3043
  guidance: "Blinking content can cause seizures in users with photosensitive epilepsy and is distracting for users with attention disorders. The <blink> element is deprecated and should never be used. If you need to draw attention to content, use less intrusive methods like color, borders, or icons.",
3044
3044
  prompt: "Suggest static alternatives to the blinking effect."
3045
- }, Ka = L(Xa), Ja = {
3045
+ }, Ka = q(Xa), Ja = {
3046
3046
  id: "accesslint-010",
3047
3047
  selector: "marquee",
3048
3048
  check: { type: "selector-exists" },
@@ -3053,7 +3053,7 @@ const Ya = {
3053
3053
  level: "A",
3054
3054
  guidance: "Scrolling or moving content is difficult for many users to read, especially those with cognitive or visual disabilities. The <marquee> element is deprecated. Replace scrolling text with static content. If content must scroll, provide pause/stop controls and ensure it stops after 5 seconds.",
3055
3055
  prompt: "Suggest static alternatives or accessible carousel patterns."
3056
- }, Qa = L(Ja), Za = {
3056
+ }, Qa = q(Ja), Za = {
3057
3057
  id: "accesslint-035",
3058
3058
  wcag: [],
3059
3059
  level: "A",
@@ -3678,7 +3678,25 @@ function vn(t) {
3678
3678
  }
3679
3679
  return !0;
3680
3680
  }
3681
- const yn = {
3681
+ function yn(t) {
3682
+ const a = t.ownerDocument.defaultView;
3683
+ if (!a) return !1;
3684
+ const e = a.getComputedStyle(t), n = e.position;
3685
+ if (n !== "absolute" && n !== "fixed") return !1;
3686
+ const i = parseFloat(e.top), s = parseFloat(e.left);
3687
+ if (!(!isNaN(i) && i < -500 || !isNaN(s) && s < -500)) return !1;
3688
+ const r = t.id;
3689
+ if (!r) return !1;
3690
+ const l = r.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), m = new RegExp(
3691
+ `getElementById\\s*\\(\\s*['"]${l}['"]\\s*\\)\\s*\\.\\s*addEventListener\\s*\\(\\s*['"]focus['"]`
3692
+ );
3693
+ for (const c of t.ownerDocument.querySelectorAll("script")) {
3694
+ const d = c.textContent || "";
3695
+ if (m.test(d) && /\.focus\s*\(/.test(d)) return !0;
3696
+ }
3697
+ return !1;
3698
+ }
3699
+ const wn = {
3682
3700
  id: "accesslint-062",
3683
3701
  selector: 'body[aria-hidden="true"]',
3684
3702
  check: { type: "selector-exists" },
@@ -3690,7 +3708,7 @@ const yn = {
3690
3708
  guidance: "Setting aria-hidden='true' on the body element hides all page content from assistive technologies, making the page completely inaccessible to screen reader users. Remove aria-hidden from the body element. If you need to hide content temporarily (e.g., behind a modal), use aria-hidden on specific sections instead.",
3691
3709
  prompt: "Instruct to remove aria-hidden='true' from the body element.",
3692
3710
  skipAriaHidden: !1
3693
- }, wn = L(yn), An = {
3711
+ }, An = q(wn), xn = {
3694
3712
  id: "accesslint-063",
3695
3713
  actRuleIds: ["6cfa84"],
3696
3714
  wcag: ["4.1.2"],
@@ -3709,7 +3727,7 @@ const yn = {
3709
3727
  const s = i.getAttribute("tabindex");
3710
3728
  if (s === "-1" || i.disabled || i instanceof HTMLInputElement && i.type === "hidden" || !vn(i)) continue;
3711
3729
  const o = i.getAttribute("onfocus") || "";
3712
- if (/\.focus\s*\(/.test(o)) continue;
3730
+ if (/\.focus\s*\(/.test(o) || yn(i)) continue;
3713
3731
  const r = i.tagName.toLowerCase();
3714
3732
  let l;
3715
3733
  s !== null ? l = `has tabindex="${s}"` : r === "a" && i.hasAttribute("href") ? l = "is a link with href" : r === "button" ? l = "is a <button>" : r === "input" ? l = `is an <input type="${i.type}">` : r === "select" ? l = "is a <select>" : r === "textarea" ? l = "is a <textarea>" : r === "iframe" ? l = "is an <iframe>" : l = `is a natively focusable <${r}>`;
@@ -3726,7 +3744,7 @@ const yn = {
3726
3744
  }
3727
3745
  return a;
3728
3746
  }
3729
- }, xn = {
3747
+ }, kn = {
3730
3748
  id: "accesslint-064",
3731
3749
  actRuleIds: ["m6b1q3"],
3732
3750
  wcag: ["4.1.2"],
@@ -3755,7 +3773,7 @@ const yn = {
3755
3773
  }
3756
3774
  return a;
3757
3775
  }
3758
- }, kn = {
3776
+ }, Sn = {
3759
3777
  id: "accesslint-065",
3760
3778
  wcag: ["4.1.2"],
3761
3779
  level: "A",
@@ -3776,7 +3794,7 @@ const yn = {
3776
3794
  }
3777
3795
  return a;
3778
3796
  }
3779
- }, Sn = {
3797
+ }, In = {
3780
3798
  id: "accesslint-066",
3781
3799
  wcag: ["4.1.2"],
3782
3800
  level: "A",
@@ -3797,7 +3815,7 @@ const yn = {
3797
3815
  }
3798
3816
  return a;
3799
3817
  }
3800
- }, In = {
3818
+ }, En = {
3801
3819
  id: "accesslint-067",
3802
3820
  wcag: ["4.1.2"],
3803
3821
  level: "A",
@@ -3818,7 +3836,7 @@ const yn = {
3818
3836
  }
3819
3837
  return a;
3820
3838
  }
3821
- }, En = {
3839
+ }, qn = {
3822
3840
  id: "accesslint-068",
3823
3841
  wcag: ["4.1.2"],
3824
3842
  level: "A",
@@ -3860,7 +3878,7 @@ const yn = {
3860
3878
  }
3861
3879
  return a;
3862
3880
  }
3863
- }, qn = {
3881
+ }, Rn = {
3864
3882
  id: "accesslint-070",
3865
3883
  wcag: ["4.1.2"],
3866
3884
  level: "A",
@@ -3881,7 +3899,7 @@ const yn = {
3881
3899
  }
3882
3900
  return a;
3883
3901
  }
3884
- }, Rn = {
3902
+ }, Cn = {
3885
3903
  id: "accesslint-071",
3886
3904
  wcag: ["4.1.2"],
3887
3905
  level: "A",
@@ -3902,7 +3920,7 @@ const yn = {
3902
3920
  }
3903
3921
  return a;
3904
3922
  }
3905
- }, Cn = {
3923
+ }, Tn = {
3906
3924
  id: "accesslint-072",
3907
3925
  actRuleIds: ["kb1m8s"],
3908
3926
  wcag: ["4.1.2"],
@@ -3913,14 +3931,14 @@ const yn = {
3913
3931
  run(t) {
3914
3932
  return ne(t).prohibitedAttr;
3915
3933
  }
3916
- }, Tn = [
3934
+ }, Mn = [
3917
3935
  "a[href]",
3918
3936
  "button:not([disabled])",
3919
3937
  'input:not([disabled]):not([type="hidden"])',
3920
3938
  "select:not([disabled])",
3921
3939
  "textarea:not([disabled])",
3922
3940
  '[tabindex]:not([tabindex="-1"])'
3923
- ].join(", "), Mn = [
3941
+ ].join(", "), Nn = [
3924
3942
  "aria-atomic",
3925
3943
  "aria-busy",
3926
3944
  "aria-controls",
@@ -3937,15 +3955,15 @@ const yn = {
3937
3955
  ];
3938
3956
  function Se(t) {
3939
3957
  const a = [];
3940
- t.matches(Tn) && a.push("element is focusable");
3941
- for (const e of Mn)
3958
+ t.matches(Mn) && a.push("element is focusable");
3959
+ for (const e of Nn)
3942
3960
  if (t.hasAttribute(e)) {
3943
3961
  a.push(`has ${e}`);
3944
3962
  break;
3945
3963
  }
3946
3964
  return (t.hasAttribute("aria-label") || t.hasAttribute("aria-labelledby")) && a.push("has accessible name"), a;
3947
3965
  }
3948
- const Nn = {
3966
+ const $n = {
3949
3967
  id: "accesslint-073",
3950
3968
  actRuleIds: ["46ca7f"],
3951
3969
  wcag: ["4.1.2"],
@@ -3979,7 +3997,7 @@ const Nn = {
3979
3997
  }
3980
3998
  return a;
3981
3999
  }
3982
- }, $n = /* @__PURE__ */ new Set([
4000
+ }, Dn = /* @__PURE__ */ new Set([
3983
4001
  "button",
3984
4002
  "checkbox",
3985
4003
  "img",
@@ -3997,7 +4015,7 @@ const Nn = {
3997
4015
  "spinbutton",
3998
4016
  "switch",
3999
4017
  "tab"
4000
- ]), Dn = [
4018
+ ]), Fn = [
4001
4019
  "a[href]",
4002
4020
  "button:not([disabled])",
4003
4021
  'input:not([disabled]):not([type="hidden"])',
@@ -4009,7 +4027,7 @@ const Nn = {
4009
4027
  "iframe",
4010
4028
  "embed",
4011
4029
  "object"
4012
- ].join(", "), Fn = {
4030
+ ].join(", "), Pn = {
4013
4031
  id: "accesslint-074",
4014
4032
  actRuleIds: ["307n5z"],
4015
4033
  wcag: ["4.1.2"],
@@ -4021,8 +4039,8 @@ const Nn = {
4021
4039
  for (const e of t.querySelectorAll("*")) {
4022
4040
  if (b(e)) continue;
4023
4041
  const n = F(e);
4024
- if (!(!n || !$n.has(n))) {
4025
- for (const i of e.querySelectorAll(Dn))
4042
+ if (!(!n || !Dn.has(n))) {
4043
+ for (const i of e.querySelectorAll(Fn))
4026
4044
  if (i !== e && !i.disabled) {
4027
4045
  a.push({
4028
4046
  ruleId: "accesslint-074",
@@ -4037,7 +4055,7 @@ const Nn = {
4037
4055
  }
4038
4056
  return a;
4039
4057
  }
4040
- }, Pn = {
4058
+ }, Hn = {
4041
4059
  id: "accesslint-076",
4042
4060
  actRuleIds: ["2t702h"],
4043
4061
  wcag: ["4.1.2"],
@@ -4060,7 +4078,7 @@ const Nn = {
4060
4078
  return a;
4061
4079
  }
4062
4080
  };
4063
- function Hn(t) {
4081
+ function zn(t) {
4064
4082
  var i, s;
4065
4083
  const a = [], e = t.getAttribute("href");
4066
4084
  e && a.push(`href: ${e}`);
@@ -4077,7 +4095,7 @@ function Hn(t) {
4077
4095
  return a.length > 0 ? a.join(`
4078
4096
  `) : void 0;
4079
4097
  }
4080
- const zn = {
4098
+ const jn = {
4081
4099
  id: "accesslint-077",
4082
4100
  actRuleIds: ["c487ae"],
4083
4101
  wcag: ["2.4.4", "4.1.2"],
@@ -4095,12 +4113,12 @@ const zn = {
4095
4113
  html: u(e),
4096
4114
  impact: "serious",
4097
4115
  message: "Link has no discernible text.",
4098
- context: Hn(e)
4116
+ context: zn(e)
4099
4117
  });
4100
4118
  }
4101
4119
  return a;
4102
4120
  }
4103
- }, jn = {
4121
+ }, Un = {
4104
4122
  id: "accesslint-078",
4105
4123
  wcag: ["2.4.1"],
4106
4124
  level: "A",
@@ -4134,96 +4152,41 @@ const zn = {
4134
4152
  "table-cell",
4135
4153
  "list-item",
4136
4154
  "flow-root"
4137
- ]), Un = /* @__PURE__ */ new Set([
4155
+ ]), On = /* @__PURE__ */ new Set([
4138
4156
  "inline",
4139
4157
  "inline-block",
4140
4158
  "inline-flex",
4141
4159
  "inline-grid"
4142
4160
  ]);
4143
- function On(t) {
4161
+ function Bn(t) {
4144
4162
  let a = t.parentElement;
4145
- for (; a; ) {
4146
- const e = A(a).display;
4147
- if (Wn.has(e))
4148
- return Bn(a) ? a : null;
4163
+ for (; a && !Wn.has(x(a).display); )
4149
4164
  a = a.parentElement;
4150
- }
4151
- return null;
4152
- }
4153
- function Bn(t) {
4154
- const a = t.ownerDocument.createTreeWalker(
4155
- t,
4156
- NodeFilter.SHOW_TEXT
4157
- );
4158
- let e = "", n;
4159
- for (; n = a.nextNode(); ) {
4160
- if (!n.data.trim()) continue;
4161
- let i = n.parentElement, s = !1;
4162
- for (; i && i !== t; ) {
4163
- if (i.tagName === "A") {
4164
- s = !0;
4165
- break;
4166
- }
4167
- i = i.parentElement;
4168
- }
4169
- s || (e += n.data);
4170
- }
4171
- return new RegExp("\\p{L}{2,}", "u").test(e);
4172
- }
4173
- function Vn(t, a) {
4174
- const e = t.ownerDocument.createTreeWalker(
4175
- t,
4176
- NodeFilter.SHOW_TEXT
4177
- );
4178
- let n;
4179
- for (; n = e.nextNode(); ) {
4180
- if (!n.data.trim()) continue;
4181
- let i = n.parentElement, s = !1, o = i;
4182
- for (; o && o !== t; ) {
4165
+ if (!a) return null;
4166
+ const e = a.ownerDocument.createTreeWalker(a, NodeFilter.SHOW_TEXT);
4167
+ let n = "", i = null, s;
4168
+ for (; s = e.nextNode(); ) {
4169
+ if (!s.data.trim()) continue;
4170
+ let o = s.parentElement, r = !1;
4171
+ for (; o && o !== a; ) {
4183
4172
  if (o.tagName === "A") {
4184
- s = !0;
4173
+ r = !0;
4185
4174
  break;
4186
4175
  }
4187
4176
  o = o.parentElement;
4188
4177
  }
4189
- if (!s && i)
4190
- return C(A(i).color);
4178
+ r || (n += s.data, !i && s.parentElement && (i = C(x(s.parentElement).color)));
4191
4179
  }
4192
- return null;
4180
+ return !i || !new RegExp("\\p{L}{2,}", "u").test(n) ? null : { block: a, textColor: i };
4193
4181
  }
4194
- function _n(t, a, e) {
4195
- const n = e.textDecorationLine || e.textDecoration || "", i = a.textDecorationLine || a.textDecoration || "";
4196
- if ((i.includes("underline") || i.includes("line-through")) && i !== n)
4197
- return !0;
4198
- const s = parseFloat(a.borderBottomWidth) || 0, o = a.borderBottomStyle || "";
4199
- if (s > 0 && o !== "none" && o !== "hidden")
4200
- return !0;
4201
- const r = parseFloat(a.outlineWidth) || 0, l = a.outlineStyle || "";
4202
- if (r > 0 && l !== "none")
4203
- return !0;
4204
- const m = a.backgroundImage || "";
4205
- if (m && m !== "none" && m !== "initial")
4206
- return !0;
4207
- const c = V(e.fontWeight), d = V(a.fontWeight);
4208
- if (Math.abs(d - c) >= 300 || a.fontStyle !== e.fontStyle)
4209
- return !0;
4210
- const h = parseFloat(a.fontSize) || 16, g = parseFloat(e.fontSize) || 16;
4211
- if (g > 0 && h / g >= 1.2)
4212
- return !0;
4213
- for (const f of t.querySelectorAll("*")) {
4214
- const v = A(f), w = v.textDecorationLine || v.textDecoration || "";
4215
- if ((w.includes("underline") || w.includes("line-through")) && w !== n || Math.abs(V(v.fontWeight) - c) >= 300)
4216
- return !0;
4217
- }
4218
- return !1;
4182
+ function Ie(t, a) {
4183
+ const e = t.textDecorationLine || t.textDecoration || "";
4184
+ return (e.includes("underline") || e.includes("line-through")) && e !== a;
4219
4185
  }
4220
- function V(t) {
4186
+ function H(t) {
4221
4187
  return t === "bold" ? 700 : t === "normal" ? 400 : parseInt(t) || 400;
4222
4188
  }
4223
- function Ie(t, a, e) {
4224
- return "#" + [t, a, e].map((n) => n.toString(16).padStart(2, "0")).join("");
4225
- }
4226
- const Gn = {
4189
+ const Vn = {
4227
4190
  id: "accesslint-079",
4228
4191
  wcag: ["1.4.1"],
4229
4192
  level: "A",
@@ -4234,29 +4197,40 @@ const Gn = {
4234
4197
  const a = [];
4235
4198
  for (const e of t.querySelectorAll("a[href]")) {
4236
4199
  if (b(e) || !k(e).trim() || e.closest('nav, header, footer, [role="navigation"], [role="banner"], [role="contentinfo"]')) continue;
4237
- const n = A(e), i = n.display || "inline";
4238
- if (!Un.has(i)) continue;
4239
- const s = On(e);
4240
- if (!s) continue;
4241
- const o = A(s);
4242
- if (_n(e, n, o)) continue;
4243
- const r = C(n.color), l = Vn(s);
4244
- if (!r || !l) continue;
4245
- const m = R(...r), c = R(...l), d = ie(m, c);
4246
- if (d < 1.1 || d >= 3) continue;
4247
- const h = Ie(...r), g = Ie(...l), f = `link color: ${h} rgb(${r.join(", ")}), surrounding text: ${g} rgb(${l.join(", ")}), ratio: ${d.toFixed(2)}:1`;
4200
+ const n = x(e);
4201
+ if (!On.has(n.display || "inline")) continue;
4202
+ const i = Bn(e);
4203
+ if (!i) continue;
4204
+ const s = x(i.block), o = s.textDecorationLine || s.textDecoration || "";
4205
+ if (Ie(n, o) || (parseFloat(n.borderBottomWidth) || 0) > 0 && n.borderBottomStyle !== "none" && n.borderBottomStyle !== "hidden" || Math.abs(H(n.fontWeight) - H(s.fontWeight)) >= 300 || n.fontStyle !== s.fontStyle) continue;
4206
+ const l = parseFloat(n.fontSize) || 16, m = parseFloat(s.fontSize) || 16;
4207
+ if (m > 0 && l / m >= 1.2) continue;
4208
+ let c = !1;
4209
+ for (const A of e.querySelectorAll("*")) {
4210
+ const w = x(A);
4211
+ if (Ie(w, o) || Math.abs(H(w.fontWeight) - H(s.fontWeight)) >= 300) {
4212
+ c = !0;
4213
+ break;
4214
+ }
4215
+ }
4216
+ if (c) continue;
4217
+ const d = C(n.color);
4218
+ if (!d) continue;
4219
+ const h = R(...d), g = R(...i.textColor), f = ie(h, g);
4220
+ if (f < 1.1 || f >= 3) continue;
4221
+ const v = (A) => "#" + A.map((w) => w.toString(16).padStart(2, "0")).join("");
4248
4222
  a.push({
4249
4223
  ruleId: "accesslint-079",
4250
4224
  selector: p(e),
4251
4225
  html: u(e),
4252
4226
  impact: "serious",
4253
4227
  message: "Link in text block is not visually distinguishable from surrounding text. Add a non-color visual indicator such as an underline or border.",
4254
- context: f
4228
+ context: `link color: ${v(d)} rgb(${d.join(", ")}), surrounding text: ${v(i.textColor)} rgb(${i.textColor.join(", ")}), ratio: ${f.toFixed(2)}:1`
4255
4229
  });
4256
4230
  }
4257
4231
  return a;
4258
4232
  }
4259
- }, Yn = {
4233
+ }, _n = {
4260
4234
  id: "accesslint-080",
4261
4235
  actRuleIds: ["b5c3f8"],
4262
4236
  wcag: ["3.1.1"],
@@ -4291,17 +4265,17 @@ const Gn = {
4291
4265
  }
4292
4266
  return [];
4293
4267
  }
4294
- }, Xn = new Set(
4268
+ }, Gn = new Set(
4295
4269
  "aa ab ae af ak am an ar as av ay az ba be bg bh bi bm bn bo br bs ca ce ch co cr cs cu cv cy da de dv dz ee el en eo es et eu fa ff fi fj fo fr fy ga gd gl gn gu gv ha he hi ho hr ht hu hy hz ia id ie ig ii ik io is it iu ja jv ka kg ki kj kk kl km kn ko kr ks ku kv kw ky la lb lg li ln lo lt lu lv mg mh mi mk ml mn mr ms mt my na nb nd ne ng nl nn no nr nv ny oc oj om or os pa pi pl ps pt qu rm rn ro ru rw sa sc sd se sg si sk sl sm sn so sq sr ss st su sv sw ta te tg th ti tk tl tn to tr ts tt tw ty ug uk ur uz ve vi vo wa wo xh yi yo za zh zu".split(" ")
4296
- ), Kn = new Set(
4270
+ ), Yn = new Set(
4297
4271
  "aar abk afr aka amh ara arg asm ava ave aym aze bak bam bel ben bih bis bod bos bre bul cat ces cha che chu chv cor cos cre cym dan deu div dzo ell eng epo est eus ewe fao fas fij fin fra fry ful gla gle glg glv grn guj hat hau hbs heb her hin hmo hrv hun hye ibo iii iku ile ina ind ipk isl ita jav jpn kal kan kas kat kau kaz khm kik kin kir kom kon kor kua kur lao lat lav lim lin lit ltz lub lug mah mal mar mkd mlg mlt mon mri msa mya nau nav nbl nde ndo nep nld nno nob nor nya oci oji ori orm oss pan pli pol por pus que roh ron run rus sag san sin slk slv sme smo sna snd som sot spa sqi srd srp ssw sun swa swe tah tam tat tel tgk tgl tha tir ton tsn tso tuk tur twi uig ukr urd uzb ven vie vol wln wol xho yid yor zha zho zul".split(" ")
4298
- ), Jn = /^[a-z]{2,8}(-[a-z0-9]{1,8})*$/i;
4272
+ ), Xn = /^[a-z]{2,8}(-[a-z0-9]{1,8})*$/i;
4299
4273
  function je(t) {
4300
- if (!Jn.test(t)) return !1;
4274
+ if (!Xn.test(t)) return !1;
4301
4275
  const a = t.split("-")[0].toLowerCase();
4302
- return a.length === 2 ? Xn.has(a) : a.length === 3 ? !Kn.has(a) : !1;
4276
+ return a.length === 2 ? Gn.has(a) : a.length === 3 ? !Yn.has(a) : !1;
4303
4277
  }
4304
- const Qn = {
4278
+ const Kn = {
4305
4279
  id: "accesslint-081",
4306
4280
  actRuleIds: ["bf051a"],
4307
4281
  wcag: ["3.1.1"],
@@ -4353,7 +4327,7 @@ function Ee(t) {
4353
4327
  }
4354
4328
  return !1;
4355
4329
  }
4356
- const Zn = {
4330
+ const Jn = {
4357
4331
  id: "accesslint-082",
4358
4332
  actRuleIds: ["de46e4"],
4359
4333
  wcag: ["3.1.2"],
@@ -4386,7 +4360,7 @@ const Zn = {
4386
4360
  }
4387
4361
  return a;
4388
4362
  }
4389
- }, ei = {
4363
+ }, Qn = {
4390
4364
  id: "accesslint-083",
4391
4365
  wcag: ["3.1.1"],
4392
4366
  level: "A",
@@ -4409,7 +4383,7 @@ const Zn = {
4409
4383
  }
4410
4384
  return [];
4411
4385
  }
4412
- }, ti = {
4386
+ }, Zn = {
4413
4387
  id: "accesslint-084",
4414
4388
  actRuleIds: ["a25f45"],
4415
4389
  wcag: ["1.3.1"],
@@ -4449,7 +4423,7 @@ const Zn = {
4449
4423
  }
4450
4424
  return a;
4451
4425
  }
4452
- }, ai = {
4426
+ }, ei = {
4453
4427
  id: "accesslint-085",
4454
4428
  actRuleIds: ["d0f69e"],
4455
4429
  wcag: ["1.3.1"],
@@ -4472,7 +4446,7 @@ const Zn = {
4472
4446
  }
4473
4447
  return a;
4474
4448
  }
4475
- }, ni = {
4449
+ }, ti = {
4476
4450
  id: "accesslint-086",
4477
4451
  wcag: ["1.3.1"],
4478
4452
  level: "A",
@@ -4502,14 +4476,14 @@ const Zn = {
4502
4476
  if (!h) continue;
4503
4477
  const g = h.querySelector("th") !== null, f = Array.from(h.children).indexOf(d);
4504
4478
  let v = !1;
4505
- const w = i.querySelector("thead");
4506
- if (w) {
4507
- const x = w.querySelector("tr");
4508
- x && ((e = x.querySelectorAll("th, td")[f]) == null ? void 0 : e.tagName.toLowerCase()) === "th" && (v = !0);
4479
+ const A = i.querySelector("thead");
4480
+ if (A) {
4481
+ const w = A.querySelector("tr");
4482
+ w && ((e = w.querySelectorAll("th, td")[f]) == null ? void 0 : e.tagName.toLowerCase()) === "th" && (v = !0);
4509
4483
  }
4510
4484
  if (!v) {
4511
- const x = i.querySelector("tbody > tr, tr");
4512
- x && ((n = x.querySelectorAll("th, td")[f]) == null ? void 0 : n.tagName.toLowerCase()) === "th" && (v = !0);
4485
+ const w = i.querySelector("tbody > tr, tr");
4486
+ w && ((n = w.querySelectorAll("th, td")[f]) == null ? void 0 : n.tagName.toLowerCase()) === "th" && (v = !0);
4513
4487
  }
4514
4488
  if (!g && !v && !m && !c) {
4515
4489
  a.push({
@@ -4525,7 +4499,7 @@ const Zn = {
4525
4499
  }
4526
4500
  return a;
4527
4501
  }
4528
- }, ii = {
4502
+ }, ai = {
4529
4503
  id: "accesslint-087",
4530
4504
  wcag: ["1.3.1"],
4531
4505
  level: "A",
@@ -4548,7 +4522,7 @@ const Zn = {
4548
4522
  }
4549
4523
  return a;
4550
4524
  }
4551
- }, si = {
4525
+ }, ni = {
4552
4526
  id: "accesslint-088",
4553
4527
  wcag: [],
4554
4528
  level: "A",
@@ -4571,7 +4545,7 @@ const Zn = {
4571
4545
  }
4572
4546
  return a;
4573
4547
  }
4574
- }, _ = ["aria-labelledby", "aria-describedby", "aria-controls", "aria-owns", "aria-flowto"], oi = {
4548
+ }, _ = ["aria-labelledby", "aria-describedby", "aria-controls", "aria-owns", "aria-flowto"], ii = {
4575
4549
  id: "accesslint-089",
4576
4550
  wcag: ["4.1.2"],
4577
4551
  level: "A",
@@ -4619,7 +4593,7 @@ Referenced by: ${m}` : ""}`
4619
4593
  }
4620
4594
  return a;
4621
4595
  }
4622
- }, ri = {
4596
+ }, si = {
4623
4597
  id: "accesslint-090",
4624
4598
  actRuleIds: ["eac66b"],
4625
4599
  wcag: ["1.2.2"],
@@ -4641,7 +4615,7 @@ Referenced by: ${m}` : ""}`
4641
4615
  }
4642
4616
  return a;
4643
4617
  }
4644
- }, li = {
4618
+ }, oi = {
4645
4619
  id: "accesslint-091",
4646
4620
  actRuleIds: ["e7aa44"],
4647
4621
  wcag: ["1.2.1"],
@@ -4664,7 +4638,7 @@ Referenced by: ${m}` : ""}`
4664
4638
  }
4665
4639
  return a;
4666
4640
  }
4667
- }, ci = /* @__PURE__ */ new Set([
4641
+ }, ri = /* @__PURE__ */ new Set([
4668
4642
  "SCRIPT",
4669
4643
  "STYLE",
4670
4644
  "NOSCRIPT",
@@ -4683,10 +4657,10 @@ Referenced by: ${m}` : ""}`
4683
4657
  function ae([t, a, e]) {
4684
4658
  return "#" + [t, a, e].map((n) => n.toString(16).padStart(2, "0")).join("");
4685
4659
  }
4686
- function di(t) {
4660
+ function li(t) {
4687
4661
  return t instanceof HTMLInputElement || t instanceof HTMLTextAreaElement || t instanceof HTMLSelectElement || t instanceof HTMLButtonElement ? t.disabled : !!(t.closest("fieldset[disabled]") || t.getAttribute("aria-disabled") === "true");
4688
4662
  }
4689
- function ui(t, a) {
4663
+ function ci(t, a) {
4690
4664
  if (t.tagName !== "LABEL") return !1;
4691
4665
  const e = t, n = e.htmlFor;
4692
4666
  if (n) {
@@ -4698,7 +4672,7 @@ function ui(t, a) {
4698
4672
  const s = e.id;
4699
4673
  return !!(s && a.querySelector(`[aria-labelledby~="${s}"][aria-disabled="true"]`));
4700
4674
  }
4701
- function mi(t) {
4675
+ function di(t) {
4702
4676
  const a = t.clip;
4703
4677
  if (a && a.startsWith("rect(")) {
4704
4678
  const n = a.match(/[\d.]+/g);
@@ -4712,25 +4686,25 @@ function mi(t) {
4712
4686
  }
4713
4687
  return !1;
4714
4688
  }
4715
- function pi(t) {
4689
+ function ui(t) {
4716
4690
  if (b(t)) return !0;
4717
4691
  let a = t;
4718
4692
  for (; a; ) {
4719
- const e = A(a);
4720
- if (e.display === "none" || e.visibility === "hidden" || mi(e)) return !0;
4693
+ const e = x(a);
4694
+ if (e.display === "none" || e.visibility === "hidden" || di(e)) return !0;
4721
4695
  a = a.parentElement;
4722
4696
  }
4723
4697
  return !1;
4724
4698
  }
4725
- function hi(t) {
4699
+ function mi(t) {
4726
4700
  let a = 1, e = t;
4727
4701
  for (; e; ) {
4728
- const n = A(e), i = parseFloat(n.opacity);
4702
+ const n = x(e), i = parseFloat(n.opacity);
4729
4703
  isNaN(i) || (a *= i), e = e.parentElement;
4730
4704
  }
4731
4705
  return a;
4732
4706
  }
4733
- const bi = {
4707
+ const pi = {
4734
4708
  grayscale: 0,
4735
4709
  blur: 0,
4736
4710
  "hue-rotate": 0,
@@ -4741,44 +4715,44 @@ const bi = {
4741
4715
  saturate: 1,
4742
4716
  opacity: 1
4743
4717
  };
4744
- function gi(t) {
4718
+ function hi(t) {
4745
4719
  const a = parseFloat(t);
4746
4720
  return isNaN(a) ? NaN : t.trim().endsWith("%") ? a / 100 : a;
4747
4721
  }
4748
- const Le = /([a-z-]+)\(([^)]*)\)/g;
4749
- function qe(t) {
4722
+ const qe = /([a-z-]+)\(([^)]*)\)/g;
4723
+ function Le(t) {
4750
4724
  let a, e = !1;
4751
- for (Le.lastIndex = 0; a = Le.exec(t); ) {
4725
+ for (qe.lastIndex = 0; a = qe.exec(t); ) {
4752
4726
  e = !0;
4753
- const n = bi[a[1]];
4754
- if (n === void 0 || gi(a[2]) !== n) return !1;
4727
+ const n = pi[a[1]];
4728
+ if (n === void 0 || hi(a[2]) !== n) return !1;
4755
4729
  }
4756
4730
  return e;
4757
4731
  }
4758
- function fi(t) {
4732
+ function bi(t) {
4759
4733
  let a = t;
4760
4734
  for (; a; ) {
4761
- const e = A(a), n = e.filter;
4762
- if (n && n !== "none" && n !== "initial" && !qe(n)) return !0;
4735
+ const e = x(a), n = e.filter;
4736
+ if (n && n !== "none" && n !== "initial" && !Le(n)) return !0;
4763
4737
  const i = e.mixBlendMode;
4764
4738
  if (i && i !== "normal" && i !== "initial") return !0;
4765
4739
  const s = e.backdropFilter;
4766
- if (s && s !== "none" && s !== "initial" && !qe(s)) return !0;
4740
+ if (s && s !== "none" && s !== "initial" && !Le(s)) return !0;
4767
4741
  a = a.parentElement;
4768
4742
  }
4769
4743
  return !1;
4770
4744
  }
4771
- function vi(t) {
4745
+ function gi(t) {
4772
4746
  return t.closest("select") !== null;
4773
4747
  }
4774
- function yi(t) {
4748
+ function fi(t) {
4775
4749
  const a = t.replace(/\s/g, "");
4776
4750
  return a ? !new RegExp("\\p{L}", "u").test(a) : !0;
4777
4751
  }
4778
- function wi(t) {
4752
+ function vi(t) {
4779
4753
  return t.closest('[aria-disabled="true"]') !== null;
4780
4754
  }
4781
- const Ai = {
4755
+ const yi = {
4782
4756
  id: "accesslint-092",
4783
4757
  actRuleIds: ["afw4f7"],
4784
4758
  wcag: ["1.4.3"],
@@ -4787,9 +4761,9 @@ const Ai = {
4787
4761
  guidance: "WCAG SC 1.4.3 requires a contrast ratio of at least 4.5:1 for normal text and 3:1 for large text (>=24px or >=18.66px bold). Increase the contrast by darkening the text or lightening the background, or vice versa.",
4788
4762
  prompt: "Suggest changing the text or background color to meet the minimum contrast ratio.",
4789
4763
  run(t) {
4790
- return We(t, "accesslint-092", "AA");
4764
+ return Ue(t, "accesslint-092", "AA");
4791
4765
  }
4792
- }, xi = {
4766
+ }, wi = {
4793
4767
  id: "accesslint-093",
4794
4768
  actRuleIds: ["09o5cg"],
4795
4769
  wcag: ["1.4.6"],
@@ -4797,13 +4771,13 @@ const Ai = {
4797
4771
  description: "Text elements must have enhanced color contrast against the background (WCAG AAA).",
4798
4772
  guidance: "WCAG SC 1.4.6 (AAA) requires a contrast ratio of at least 7:1 for normal text and 4.5:1 for large text (>=24px or >=18.66px bold).",
4799
4773
  run(t) {
4800
- return We(t, "accesslint-093", "AAA");
4774
+ return Ue(t, "accesslint-093", "AAA");
4801
4775
  }
4802
4776
  };
4803
- function ki(t) {
4777
+ function Ai(t) {
4804
4778
  let a = t;
4805
4779
  for (; a; ) {
4806
- const e = A(a), n = e.backgroundImage;
4780
+ const e = x(a), n = e.backgroundImage;
4807
4781
  if (n && n !== "none" && n !== "initial")
4808
4782
  return n.includes("gradient(") ? { bgImage: n, gradientEl: a } : null;
4809
4783
  const i = e.backgroundColor;
@@ -4819,22 +4793,22 @@ function ki(t) {
4819
4793
  }
4820
4794
  return null;
4821
4795
  }
4822
- function Si(t, a, e, n, i, s, o, r, l) {
4796
+ function xi(t, a, e, n, i, s, o, r, l) {
4823
4797
  const m = mt(r, l);
4824
4798
  if (m.length === 0) return null;
4825
4799
  let c = 0, d = m[0];
4826
4800
  for (const f of m) {
4827
4801
  let v = a;
4828
- e < 1 && (v = q(a, f, e)), n < 1 && (v = q(v, f, n));
4829
- const w = ie(
4802
+ e < 1 && (v = L(a, f, e)), n < 1 && (v = L(v, f, n));
4803
+ const A = ie(
4830
4804
  R(v[0], v[1], v[2]),
4831
4805
  R(f[0], f[1], f[2])
4832
4806
  );
4833
- w > c && (c = w, d = f);
4807
+ A > c && (c = A, d = f);
4834
4808
  }
4835
4809
  if (c >= i) return null;
4836
4810
  let h = a;
4837
- e < 1 && (h = q(a, d, e)), n < 1 && (h = q(h, d, n));
4811
+ e < 1 && (h = L(a, d, e)), n < 1 && (h = L(h, d, n));
4838
4812
  const g = Math.round(c * 100) / 100;
4839
4813
  return {
4840
4814
  ruleId: s,
@@ -4845,33 +4819,33 @@ function Si(t, a, e, n, i, s, o, r, l) {
4845
4819
  context: `foreground: ${ae(h)} rgb(${h.join(", ")}), background: gradient, ratio: ${g}:1, required: ${i}:1`
4846
4820
  };
4847
4821
  }
4848
- function We(t, a, e) {
4822
+ function Ue(t, a, e) {
4849
4823
  const n = [], i = t.body;
4850
4824
  if (!i) return [];
4851
4825
  const s = t.createTreeWalker(i, NodeFilter.SHOW_TEXT), o = /* @__PURE__ */ new Set();
4852
4826
  let r;
4853
4827
  for (; r = s.nextNode(); ) {
4854
- if (!r.textContent || !r.textContent.trim() || yi(r.textContent)) continue;
4828
+ if (!r.textContent || !r.textContent.trim() || fi(r.textContent)) continue;
4855
4829
  const l = r.parentElement;
4856
- if (!l || o.has(l) || (o.add(l), ci.has(l.tagName))) continue;
4830
+ if (!l || o.has(l) || (o.add(l), ri.has(l.tagName))) continue;
4857
4831
  const m = l.tagName;
4858
- if (m === "BODY" || m === "HTML" || vi(l) || di(l) || ui(l, t) || wi(l) || pi(l)) continue;
4859
- const c = A(l);
4832
+ if (m === "BODY" || m === "HTML" || gi(l) || li(l) || ci(l, t) || vi(l) || ui(l)) continue;
4833
+ const c = x(l);
4860
4834
  if (parseFloat(c.opacity) === 0) continue;
4861
- const d = hi(l);
4835
+ const d = mi(l);
4862
4836
  if (d < 0.1) continue;
4863
4837
  const h = c.textShadow;
4864
- if (h && h !== "none" && h !== "initial" || fi(l)) continue;
4838
+ if (h && h !== "none" && h !== "initial" || bi(l)) continue;
4865
4839
  const g = C(c.color);
4866
4840
  if (!g) continue;
4867
4841
  const f = Te(c.color);
4868
4842
  if (f === 0 || ht(l)) continue;
4869
4843
  const v = e === "AAA" ? ge(l) ? 4.5 : 7 : ge(l) ? 3 : 4.5;
4870
- let w = be(l);
4871
- if (!w) {
4872
- const S = ki(l);
4844
+ let A = be(l);
4845
+ if (!A) {
4846
+ const S = Ai(l);
4873
4847
  if (S) {
4874
- const U = S.gradientEl.parentElement ? be(S.gradientEl.parentElement) : null, P = Si(
4848
+ const O = S.gradientEl.parentElement ? be(S.gradientEl.parentElement) : null, P = xi(
4875
4849
  l,
4876
4850
  g,
4877
4851
  f,
@@ -4880,30 +4854,30 @@ function We(t, a, e) {
4880
4854
  a,
4881
4855
  e,
4882
4856
  S.bgImage,
4883
- U ?? [255, 255, 255]
4857
+ O ?? [255, 255, 255]
4884
4858
  );
4885
4859
  P && n.push(P);
4886
4860
  }
4887
4861
  continue;
4888
4862
  }
4889
- let x = g;
4890
- f < 1 && (x = q(g, w, f)), d < 1 && (x = q(x, w, d));
4891
- const W = R(x[0], x[1], x[2]), _e = R(w[0], w[1], w[2]), ce = ie(W, _e);
4863
+ let w = g;
4864
+ f < 1 && (w = L(g, A, f)), d < 1 && (w = L(w, A, d));
4865
+ const W = R(w[0], w[1], w[2]), _e = R(A[0], A[1], A[2]), ce = ie(W, _e);
4892
4866
  if (ce < v) {
4893
- const S = Math.round(ce * 100) / 100, U = ae(x), P = ae(w);
4867
+ const S = Math.round(ce * 100) / 100, O = ae(w), P = ae(A);
4894
4868
  n.push({
4895
4869
  ruleId: a,
4896
4870
  selector: p(l),
4897
4871
  html: u(l),
4898
4872
  impact: "serious",
4899
4873
  message: `Insufficient${e === "AAA" ? " enhanced" : ""} color contrast ratio of ${S}:1 (required ${v}:1).`,
4900
- context: `foreground: ${U} rgb(${x.join(", ")}), background: ${P} rgb(${w.join(", ")}), ratio: ${S}:1, required: ${v}:1`
4874
+ context: `foreground: ${O} rgb(${w.join(", ")}), background: ${P} rgb(${A.join(", ")}), ratio: ${S}:1, required: ${v}:1`
4901
4875
  });
4902
4876
  }
4903
4877
  }
4904
4878
  return n;
4905
4879
  }
4906
- const Ue = [
4880
+ const We = [
4907
4881
  // Document Structure
4908
4882
  Ma,
4909
4883
  Na,
@@ -4920,14 +4894,14 @@ const Ue = [
4920
4894
  St,
4921
4895
  It,
4922
4896
  Et,
4923
- qt,
4897
+ Lt,
4924
4898
  Rt,
4925
4899
  Tt,
4926
4900
  Mt,
4927
4901
  Ft,
4928
4902
  // Forms
4929
- Wt,
4930
4903
  Ut,
4904
+ Wt,
4931
4905
  Ot,
4932
4906
  Bt,
4933
4907
  Jt,
@@ -4954,11 +4928,11 @@ const Ue = [
4954
4928
  ka,
4955
4929
  Sa,
4956
4930
  Ia,
4957
- La,
4958
- Ta,
4959
4931
  qa,
4932
+ Ta,
4933
+ La,
4960
4934
  Ca,
4961
- Ua,
4935
+ Wa,
4962
4936
  Ba,
4963
4937
  Va,
4964
4938
  Ya,
@@ -4971,66 +4945,61 @@ const Ue = [
4971
4945
  pn,
4972
4946
  gn,
4973
4947
  fn,
4974
- wn,
4975
4948
  An,
4976
4949
  xn,
4977
4950
  kn,
4978
4951
  Sn,
4979
4952
  In,
4980
4953
  En,
4981
- Ln,
4982
4954
  qn,
4955
+ Ln,
4983
4956
  Rn,
4984
4957
  Cn,
4985
- Nn,
4986
- Fn,
4987
- rn,
4958
+ Tn,
4959
+ $n,
4988
4960
  Pn,
4961
+ rn,
4962
+ Hn,
4989
4963
  // Links
4990
- zn,
4991
4964
  jn,
4992
- Gn,
4965
+ Un,
4966
+ Vn,
4993
4967
  // Language
4994
- Yn,
4968
+ _n,
4969
+ Kn,
4970
+ Jn,
4995
4971
  Qn,
4972
+ // Tables
4996
4973
  Zn,
4997
4974
  ei,
4998
- // Tables
4999
4975
  ti,
5000
4976
  ai,
5001
4977
  ni,
4978
+ // Parsing
5002
4979
  ii,
4980
+ // Media
5003
4981
  si,
5004
- // Parsing
5005
4982
  oi,
5006
- // Media
5007
- ri,
5008
- li,
5009
4983
  // Color
5010
- Ai,
5011
- xi
5012
- ], Ii = /* @__PURE__ */ new Set([
4984
+ yi,
4985
+ wi
4986
+ ], ki = /* @__PURE__ */ new Set([
5013
4987
  // No ACT mapping; disabled due to known precision issues
5014
4988
  "accesslint-059",
5015
4989
  "accesslint-068",
5016
4990
  "accesslint-070",
5017
- "accesslint-049",
5018
- "accesslint-048",
5019
- "accesslint-079",
5020
- "accesslint-046",
5021
- "accesslint-047",
5022
4991
  "accesslint-086"
5023
4992
  ]);
5024
4993
  let re = [], Oe = /* @__PURE__ */ new Set(), Be = /* @__PURE__ */ new Set(), E, D;
5025
- function Ci(t) {
4994
+ function Li(t) {
5026
4995
  t.additionalRules && (re = t.additionalRules), t.disabledRules && (Oe = new Set(t.disabledRules)), t.enabledRules && (Be = new Set(t.enabledRules)), "locale" in t && (E = t.locale || void 0), D = void 0;
5027
4996
  }
5028
4997
  function le() {
5029
4998
  if (D) return D;
5030
- const a = Ue.filter((e) => Oe.has(e.id) ? !1 : Be.has(e.id) ? !0 : !Ii.has(e.id)).concat(re);
4999
+ const a = We.filter((e) => Oe.has(e.id) ? !1 : Be.has(e.id) ? !0 : !ki.has(e.id)).concat(re);
5031
5000
  return E ? (D = ft(a, E), D) : a;
5032
5001
  }
5033
- function Ti(t) {
5002
+ function Ri(t) {
5034
5003
  Ve();
5035
5004
  const a = le(), e = E, n = [];
5036
5005
  let i = 0;
@@ -5054,7 +5023,7 @@ function Ti(t) {
5054
5023
  function Ve() {
5055
5024
  Qe(), Ge(), Ye(), ct(), lt(), Ze();
5056
5025
  }
5057
- function Mi(t) {
5026
+ function Ci(t) {
5058
5027
  var n;
5059
5028
  Ve();
5060
5029
  const a = le(), e = [];
@@ -5070,14 +5039,14 @@ function Mi(t) {
5070
5039
  ruleCount: a.length
5071
5040
  };
5072
5041
  }
5073
- const Ei = new Map(Ue.map((t) => [t.id, t]));
5074
- function Ni(t) {
5042
+ const Si = new Map(We.map((t) => [t.id, t]));
5043
+ function Ti(t) {
5075
5044
  if (E)
5076
5045
  return le().find((n) => n.id === t);
5077
- const a = Ei.get(t);
5046
+ const a = Si.get(t);
5078
5047
  return a || re.find((e) => e.id === t);
5079
5048
  }
5080
- const $i = {
5049
+ const Mi = {
5081
5050
  "accesslint-001": { description: "Documents must have a <title> element to provide users with an overview of content.", guidance: "Screen reader users rely on page titles to identify and navigate between tabs/windows. Add a descriptive <title> element in <head> that summarizes the page purpose. Keep titles unique across the site, placing specific content before the site name (e.g., 'Contact Us - Acme Corp').", messages: { "Document <title> element is empty.": "Document <title> element is empty.", "Document is missing a <title> element.": "Document is missing a <title> element." } },
5082
5051
  "accesslint-002": { description: "Page must have a mechanism to bypass repeated blocks of content.", guidance: 'Keyboard users must be able to skip repetitive content like navigation. Provide a skip link at the top of the page that links to the main content (e.g., <a href="#main">Skip to main content</a>), or use a <main> landmark. Screen readers can jump directly to landmarks, so a properly marked-up <main> element satisfies this requirement.', messages: { "Page has no mechanism to bypass repeated content. Add a <main> landmark or skip link.": "Page has no mechanism to bypass repeated content. Add a <main> landmark or skip link." } },
5083
5052
  "accesslint-003": { description: "Page should contain a level-one heading.", guidance: "A level-one heading (<h1> or role='heading' with aria-level='1') helps users understand the page topic and provides a landmark for screen reader navigation. Each page should have exactly one h1 that describes the main content, typically matching or similar to the page title.", messages: { "Page does not contain a level-one heading.": "Page does not contain a level-one heading." } },
@@ -5171,7 +5140,7 @@ const $i = {
5171
5140
  "accesslint-053": { description: "Page orientation must not be restricted using CSS transforms.", guidance: "Users with motor disabilities may mount their device in a fixed orientation. Using CSS transforms with @media (orientation: portrait/landscape) to rotate content 90° effectively locks the page to one orientation. Remove the orientation-dependent transform and use responsive design instead.", messages: { "CSS locks page orientation via @media (orientation: {0}) with a 90° transform.": "CSS locks page orientation via @media (orientation: {0}) with a 90° transform." } },
5172
5141
  "accesslint-074": { description: "Elements with a role that makes children presentational must not contain focusable content.", guidance: "Roles like button, checkbox, img, tab, and others make their children presentational — hidden from assistive technologies. If those children are focusable, keyboard users can reach elements that screen reader users cannot perceive. Move focusable content outside the parent or remove the focusability.", messages: { 'Focusable element inside a "{0}" role whose children are presentational.': 'Focusable element inside a "{0}" role whose children are presentational.' } },
5173
5142
  "accesslint-032": { description: "Elements in sequential focus order must have a visible focus indicator.", guidance: "Keyboard users need to see which element has focus. Do not remove the default focus outline (outline: none) without providing an alternative visible indicator. Use :focus-visible or :focus styles to ensure focus is always perceivable.", messages: { "Focusable element has outline removed without a visible focus alternative.": "Focusable element has outline removed without a visible focus alternative." } }
5174
- }, Di = {
5143
+ }, Ni = {
5175
5144
  "accesslint-001": { description: "Los documentos deben tener un elemento <title> para proporcionar a los usuarios una vista general del contenido.", guidance: "Los usuarios de lectores de pantalla dependen de los títulos de página para identificar y navegar entre pestañas/ventanas. Agregue un elemento <title> descriptivo en <head> que resuma el propósito de la página. Mantenga los títulos únicos en todo el sitio, colocando el contenido específico antes del nombre del sitio (por ejemplo, 'Contáctenos - Acme Corp').", messages: { "Document <title> element is empty.": "El elemento <title> del documento está vacío.", "Document is missing a <title> element.": "Al documento le falta un elemento <title>." } },
5176
5145
  "accesslint-002": { description: "La página debe tener un mecanismo para omitir bloques de contenido repetidos.", guidance: 'Los usuarios de teclado deben poder omitir contenido repetitivo como la navegación. Proporcione un enlace de salto en la parte superior de la página que enlace al contenido principal (por ejemplo, <a href="#main">Saltar al contenido principal</a>), o use un landmark <main>. Los lectores de pantalla pueden saltar directamente a los landmarks, por lo que un elemento <main> correctamente marcado satisface este requisito.', messages: { "Page has no mechanism to bypass repeated content. Add a <main> landmark or skip link.": "La página no tiene un mecanismo para omitir contenido repetido. Agregue un landmark <main> o un enlace de salto." } },
5177
5146
  "accesslint-003": { description: "La página debe contener un encabezado de nivel uno.", guidance: "Un encabezado de nivel uno (<h1> o role='heading' con aria-level='1') ayuda a los usuarios a comprender el tema de la página y proporciona un punto de referencia para la navegación con lector de pantalla. Cada página debe tener exactamente un h1 que describa el contenido principal, típicamente coincidiendo o similar al título de la página.", messages: { "Page does not contain a level-one heading.": "La página no contiene un encabezado de nivel uno." } },
@@ -5272,26 +5241,26 @@ export {
5272
5241
  Qe as clearAriaHiddenCache,
5273
5242
  ct as clearColorCaches,
5274
5243
  Ge as clearComputedRoleCache,
5275
- L as compileDeclarativeRule,
5276
- Ci as configureRules,
5277
- Ti as createChunkedAudit,
5278
- Ii as defaultDisabledRuleIds,
5244
+ q as compileDeclarativeRule,
5245
+ Li as configureRules,
5246
+ Ri as createChunkedAudit,
5247
+ ki as defaultDisabledRuleIds,
5279
5248
  y as getAccessibleName,
5280
5249
  k as getAccessibleTextContent,
5281
5250
  le as getActiveRules,
5282
5251
  F as getComputedRole,
5283
5252
  u as getHtmlSnippet,
5284
5253
  Re as getImplicitRole,
5285
- Ni as getRuleById,
5254
+ Ti as getRuleById,
5286
5255
  p as getSelector,
5287
5256
  b as isAriaHidden,
5288
5257
  Je as isValidRole,
5289
- $i as localeEn,
5290
- Di as localeEs,
5291
- Li as querySelectorShadowAware,
5292
- qi as registerLocale,
5293
- Ue as rules,
5294
- Mi as runAudit,
5258
+ Mi as localeEn,
5259
+ Ni as localeEs,
5260
+ Ii as querySelectorShadowAware,
5261
+ Ei as registerLocale,
5262
+ We as rules,
5263
+ Ci as runAudit,
5295
5264
  Me as translateViolations,
5296
- Ri as validateDeclarativeRule
5265
+ qi as validateDeclarativeRule
5297
5266
  };