@bquery/bquery 1.6.0 → 1.8.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.
Files changed (402) hide show
  1. package/README.md +192 -18
  2. package/dist/a11y/announce.d.ts +43 -0
  3. package/dist/a11y/announce.d.ts.map +1 -0
  4. package/dist/a11y/audit.d.ts +42 -0
  5. package/dist/a11y/audit.d.ts.map +1 -0
  6. package/dist/a11y/index.d.ts +53 -0
  7. package/dist/a11y/index.d.ts.map +1 -0
  8. package/dist/a11y/media-preferences.d.ts +77 -0
  9. package/dist/a11y/media-preferences.d.ts.map +1 -0
  10. package/dist/a11y/roving-tab-index.d.ts +38 -0
  11. package/dist/a11y/roving-tab-index.d.ts.map +1 -0
  12. package/dist/a11y/skip-link.d.ts +37 -0
  13. package/dist/a11y/skip-link.d.ts.map +1 -0
  14. package/dist/a11y/trap-focus.d.ts +49 -0
  15. package/dist/a11y/trap-focus.d.ts.map +1 -0
  16. package/dist/a11y/types.d.ts +152 -0
  17. package/dist/a11y/types.d.ts.map +1 -0
  18. package/dist/a11y-DVBCy09c.js +421 -0
  19. package/dist/a11y-DVBCy09c.js.map +1 -0
  20. package/dist/a11y.es.mjs +14 -0
  21. package/dist/component/component.d.ts.map +1 -1
  22. package/dist/component/html.d.ts.map +1 -1
  23. package/dist/component/index.d.ts +2 -1
  24. package/dist/component/index.d.ts.map +1 -1
  25. package/dist/component/library.d.ts.map +1 -1
  26. package/dist/component/scope.d.ts +138 -0
  27. package/dist/component/scope.d.ts.map +1 -0
  28. package/dist/component/types.d.ts +53 -1
  29. package/dist/component/types.d.ts.map +1 -1
  30. package/dist/component-L3-JfOFz.js +684 -0
  31. package/dist/component-L3-JfOFz.js.map +1 -0
  32. package/dist/component.es.mjs +9 -6
  33. package/dist/{config-DRmZZno3.js → config-DhT9auRm.js} +4 -4
  34. package/dist/{config-DRmZZno3.js.map → config-DhT9auRm.js.map} +1 -1
  35. package/dist/constraints-D5RHQLmP.js +100 -0
  36. package/dist/constraints-D5RHQLmP.js.map +1 -0
  37. package/dist/core/collection.d.ts +134 -0
  38. package/dist/core/collection.d.ts.map +1 -1
  39. package/dist/core/element.d.ts +120 -0
  40. package/dist/core/element.d.ts.map +1 -1
  41. package/dist/core/env.d.ts +18 -0
  42. package/dist/core/env.d.ts.map +1 -0
  43. package/dist/core/index.d.ts +1 -0
  44. package/dist/core/index.d.ts.map +1 -1
  45. package/dist/core/shared.d.ts +14 -0
  46. package/dist/core/shared.d.ts.map +1 -1
  47. package/dist/core/utils/index.d.ts +52 -41
  48. package/dist/core/utils/index.d.ts.map +1 -1
  49. package/dist/core-DdtZHzsS.js +168 -0
  50. package/dist/core-DdtZHzsS.js.map +1 -0
  51. package/dist/{core-CCEabVHl.js → core-EMYSLzaT.js} +293 -194
  52. package/dist/core-EMYSLzaT.js.map +1 -0
  53. package/dist/core.es.mjs +48 -46
  54. package/dist/custom-directives-Dr4C5lVV.js +9 -0
  55. package/dist/custom-directives-Dr4C5lVV.js.map +1 -0
  56. package/dist/devtools/devtools.d.ts +212 -0
  57. package/dist/devtools/devtools.d.ts.map +1 -0
  58. package/dist/devtools/index.d.ts +20 -0
  59. package/dist/devtools/index.d.ts.map +1 -0
  60. package/dist/devtools/types.d.ts +69 -0
  61. package/dist/devtools/types.d.ts.map +1 -0
  62. package/dist/devtools-BhB2iDPT.js +122 -0
  63. package/dist/devtools-BhB2iDPT.js.map +1 -0
  64. package/dist/devtools.es.mjs +19 -0
  65. package/dist/dnd/draggable.d.ts +51 -0
  66. package/dist/dnd/draggable.d.ts.map +1 -0
  67. package/dist/dnd/droppable.d.ts +38 -0
  68. package/dist/dnd/droppable.d.ts.map +1 -0
  69. package/dist/dnd/index.d.ts +47 -0
  70. package/dist/dnd/index.d.ts.map +1 -0
  71. package/dist/dnd/sortable.d.ts +43 -0
  72. package/dist/dnd/sortable.d.ts.map +1 -0
  73. package/dist/dnd/types.d.ts +250 -0
  74. package/dist/dnd/types.d.ts.map +1 -0
  75. package/dist/dnd-NwZBYh4l.js +244 -0
  76. package/dist/dnd-NwZBYh4l.js.map +1 -0
  77. package/dist/dnd.es.mjs +6 -0
  78. package/dist/env-CTdvLaH2.js +19 -0
  79. package/dist/env-CTdvLaH2.js.map +1 -0
  80. package/dist/forms/create-form.d.ts +49 -0
  81. package/dist/forms/create-form.d.ts.map +1 -0
  82. package/dist/forms/index.d.ts +40 -0
  83. package/dist/forms/index.d.ts.map +1 -0
  84. package/dist/forms/types.d.ts +185 -0
  85. package/dist/forms/types.d.ts.map +1 -0
  86. package/dist/forms/use-field.d.ts +34 -0
  87. package/dist/forms/use-field.d.ts.map +1 -0
  88. package/dist/forms/validators.d.ts +204 -0
  89. package/dist/forms/validators.d.ts.map +1 -0
  90. package/dist/forms-UcRHsYxC.js +227 -0
  91. package/dist/forms-UcRHsYxC.js.map +1 -0
  92. package/dist/forms.es.mjs +16 -0
  93. package/dist/full.d.ts +30 -11
  94. package/dist/full.d.ts.map +1 -1
  95. package/dist/full.es.mjs +209 -93
  96. package/dist/full.iife.js +47 -31
  97. package/dist/full.iife.js.map +1 -1
  98. package/dist/full.umd.js +47 -31
  99. package/dist/full.umd.js.map +1 -1
  100. package/dist/function-Cybd57JV.js +33 -0
  101. package/dist/function-Cybd57JV.js.map +1 -0
  102. package/dist/i18n/formatting.d.ts +40 -0
  103. package/dist/i18n/formatting.d.ts.map +1 -0
  104. package/dist/i18n/i18n.d.ts +48 -0
  105. package/dist/i18n/i18n.d.ts.map +1 -0
  106. package/dist/i18n/index.d.ts +57 -0
  107. package/dist/i18n/index.d.ts.map +1 -0
  108. package/dist/i18n/translate.d.ts +83 -0
  109. package/dist/i18n/translate.d.ts.map +1 -0
  110. package/dist/i18n/types.d.ts +156 -0
  111. package/dist/i18n/types.d.ts.map +1 -0
  112. package/dist/i18n-kuF6Ekj6.js +89 -0
  113. package/dist/i18n-kuF6Ekj6.js.map +1 -0
  114. package/dist/i18n.es.mjs +6 -0
  115. package/dist/index.d.ts +11 -0
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.es.mjs +257 -143
  118. package/dist/media/battery.d.ts +35 -0
  119. package/dist/media/battery.d.ts.map +1 -0
  120. package/dist/media/breakpoints.d.ts +51 -0
  121. package/dist/media/breakpoints.d.ts.map +1 -0
  122. package/dist/media/clipboard.d.ts +30 -0
  123. package/dist/media/clipboard.d.ts.map +1 -0
  124. package/dist/media/device-sensors.d.ts +54 -0
  125. package/dist/media/device-sensors.d.ts.map +1 -0
  126. package/dist/media/geolocation.d.ts +38 -0
  127. package/dist/media/geolocation.d.ts.map +1 -0
  128. package/dist/media/index.d.ts +42 -0
  129. package/dist/media/index.d.ts.map +1 -0
  130. package/dist/media/media-query.d.ts +36 -0
  131. package/dist/media/media-query.d.ts.map +1 -0
  132. package/dist/media/network.d.ts +35 -0
  133. package/dist/media/network.d.ts.map +1 -0
  134. package/dist/media/types.d.ts +173 -0
  135. package/dist/media/types.d.ts.map +1 -0
  136. package/dist/media/viewport.d.ts +32 -0
  137. package/dist/media/viewport.d.ts.map +1 -0
  138. package/dist/media-i-fB5WxI.js +340 -0
  139. package/dist/media-i-fB5WxI.js.map +1 -0
  140. package/dist/media.es.mjs +12 -0
  141. package/dist/motion/index.d.ts +7 -3
  142. package/dist/motion/index.d.ts.map +1 -1
  143. package/dist/motion/morph.d.ts +27 -0
  144. package/dist/motion/morph.d.ts.map +1 -0
  145. package/dist/motion/parallax.d.ts +30 -0
  146. package/dist/motion/parallax.d.ts.map +1 -0
  147. package/dist/motion/reduced-motion.d.ts +36 -3
  148. package/dist/motion/reduced-motion.d.ts.map +1 -1
  149. package/dist/motion/types.d.ts +58 -0
  150. package/dist/motion/types.d.ts.map +1 -1
  151. package/dist/motion/typewriter.d.ts +31 -0
  152. package/dist/motion/typewriter.d.ts.map +1 -0
  153. package/dist/motion-BJsAuULb.js +530 -0
  154. package/dist/motion-BJsAuULb.js.map +1 -0
  155. package/dist/motion.es.mjs +27 -23
  156. package/dist/{view-C70lA3vf.js → mount-B4Y8bk8Z.js} +166 -160
  157. package/dist/mount-B4Y8bk8Z.js.map +1 -0
  158. package/dist/{object-qGpWr6-J.js → object-BCk-1c8T.js} +5 -4
  159. package/dist/{object-qGpWr6-J.js.map → object-BCk-1c8T.js.map} +1 -1
  160. package/dist/{platform-Dr9b6fsq.js → platform-Dw2gE3zI.js} +21 -22
  161. package/dist/{platform-Dr9b6fsq.js.map → platform-Dw2gE3zI.js.map} +1 -1
  162. package/dist/platform.es.mjs +2 -2
  163. package/dist/plugin/index.d.ts +22 -0
  164. package/dist/plugin/index.d.ts.map +1 -0
  165. package/dist/plugin/registry.d.ts +108 -0
  166. package/dist/plugin/registry.d.ts.map +1 -0
  167. package/dist/plugin/types.d.ts +110 -0
  168. package/dist/plugin/types.d.ts.map +1 -0
  169. package/dist/plugin-C2WuC8SF.js +66 -0
  170. package/dist/plugin-C2WuC8SF.js.map +1 -0
  171. package/dist/plugin.es.mjs +9 -0
  172. package/dist/reactive/async-data.d.ts +28 -3
  173. package/dist/reactive/async-data.d.ts.map +1 -1
  174. package/dist/reactive/computed.d.ts +10 -0
  175. package/dist/reactive/computed.d.ts.map +1 -1
  176. package/dist/reactive/effect.d.ts +3 -0
  177. package/dist/reactive/effect.d.ts.map +1 -1
  178. package/dist/reactive/http.d.ts +194 -0
  179. package/dist/reactive/http.d.ts.map +1 -0
  180. package/dist/reactive/index.d.ts +2 -2
  181. package/dist/reactive/index.d.ts.map +1 -1
  182. package/dist/reactive/pagination.d.ts +126 -0
  183. package/dist/reactive/pagination.d.ts.map +1 -0
  184. package/dist/reactive/polling.d.ts +55 -0
  185. package/dist/reactive/polling.d.ts.map +1 -0
  186. package/dist/reactive/readonly.d.ts +20 -1
  187. package/dist/reactive/readonly.d.ts.map +1 -1
  188. package/dist/reactive/rest.d.ts +293 -0
  189. package/dist/reactive/rest.d.ts.map +1 -0
  190. package/dist/reactive/scope.d.ts +140 -0
  191. package/dist/reactive/scope.d.ts.map +1 -0
  192. package/dist/reactive/signal.d.ts +16 -2
  193. package/dist/reactive/signal.d.ts.map +1 -1
  194. package/dist/reactive/to-value.d.ts +57 -0
  195. package/dist/reactive/to-value.d.ts.map +1 -0
  196. package/dist/reactive/websocket.d.ts +285 -0
  197. package/dist/reactive/websocket.d.ts.map +1 -0
  198. package/dist/reactive-DwkhUJfP.js +1148 -0
  199. package/dist/reactive-DwkhUJfP.js.map +1 -0
  200. package/dist/reactive.es.mjs +38 -20
  201. package/dist/registry-B08iilIh.js +26 -0
  202. package/dist/registry-B08iilIh.js.map +1 -0
  203. package/dist/router/bq-link.d.ts +112 -0
  204. package/dist/router/bq-link.d.ts.map +1 -0
  205. package/dist/router/constraints.d.ts +9 -0
  206. package/dist/router/constraints.d.ts.map +1 -0
  207. package/dist/router/index.d.ts +15 -7
  208. package/dist/router/index.d.ts.map +1 -1
  209. package/dist/router/match.d.ts +0 -1
  210. package/dist/router/match.d.ts.map +1 -1
  211. package/dist/router/path-pattern.d.ts +14 -0
  212. package/dist/router/path-pattern.d.ts.map +1 -0
  213. package/dist/router/query.d.ts.map +1 -1
  214. package/dist/router/router.d.ts +3 -1
  215. package/dist/router/router.d.ts.map +1 -1
  216. package/dist/router/state.d.ts +25 -2
  217. package/dist/router/state.d.ts.map +1 -1
  218. package/dist/router/types.d.ts +48 -4
  219. package/dist/router/types.d.ts.map +1 -1
  220. package/dist/router/use-route.d.ts +50 -0
  221. package/dist/router/use-route.d.ts.map +1 -0
  222. package/dist/router/utils.d.ts +3 -0
  223. package/dist/router/utils.d.ts.map +1 -1
  224. package/dist/router-CQikC9Ed.js +492 -0
  225. package/dist/router-CQikC9Ed.js.map +1 -0
  226. package/dist/router.es.mjs +14 -10
  227. package/dist/{sanitize-Bs2dkMby.js → sanitize-B1V4JswB.js} +2 -1
  228. package/dist/{sanitize-Bs2dkMby.js.map → sanitize-B1V4JswB.js.map} +1 -1
  229. package/dist/security/index.d.ts +2 -2
  230. package/dist/security/index.d.ts.map +1 -1
  231. package/dist/security.es.mjs +1 -1
  232. package/dist/ssr/hydrate.d.ts +65 -0
  233. package/dist/ssr/hydrate.d.ts.map +1 -0
  234. package/dist/ssr/index.d.ts +59 -0
  235. package/dist/ssr/index.d.ts.map +1 -0
  236. package/dist/ssr/render.d.ts +62 -0
  237. package/dist/ssr/render.d.ts.map +1 -0
  238. package/dist/ssr/serialize.d.ts +118 -0
  239. package/dist/ssr/serialize.d.ts.map +1 -0
  240. package/dist/ssr/types.d.ts +70 -0
  241. package/dist/ssr/types.d.ts.map +1 -0
  242. package/dist/ssr-_dAcGdzu.js +248 -0
  243. package/dist/ssr-_dAcGdzu.js.map +1 -0
  244. package/dist/ssr.es.mjs +9 -0
  245. package/dist/store/create-store.d.ts.map +1 -1
  246. package/dist/store/index.d.ts +1 -1
  247. package/dist/store/index.d.ts.map +1 -1
  248. package/dist/store/persisted.d.ts +38 -4
  249. package/dist/store/persisted.d.ts.map +1 -1
  250. package/dist/store/types.d.ts +138 -1
  251. package/dist/store/types.d.ts.map +1 -1
  252. package/dist/store/utils.d.ts +2 -2
  253. package/dist/store/utils.d.ts.map +1 -1
  254. package/dist/store-Cb3gPRve.js +338 -0
  255. package/dist/store-Cb3gPRve.js.map +1 -0
  256. package/dist/store.es.mjs +11 -10
  257. package/dist/storybook/index.d.ts.map +1 -1
  258. package/dist/storybook.es.mjs +1 -1
  259. package/dist/storybook.es.mjs.map +1 -1
  260. package/dist/testing/index.d.ts +23 -0
  261. package/dist/testing/index.d.ts.map +1 -0
  262. package/dist/testing/testing.d.ts +156 -0
  263. package/dist/testing/testing.d.ts.map +1 -0
  264. package/dist/testing/types.d.ts +134 -0
  265. package/dist/testing/types.d.ts.map +1 -0
  266. package/dist/testing-C5Sjfsna.js +224 -0
  267. package/dist/testing-C5Sjfsna.js.map +1 -0
  268. package/dist/testing.es.mjs +9 -0
  269. package/dist/type-guards-BMX2c0LP.js +44 -0
  270. package/dist/type-guards-BMX2c0LP.js.map +1 -0
  271. package/dist/untrack-D0fnO5k2.js +36 -0
  272. package/dist/untrack-D0fnO5k2.js.map +1 -0
  273. package/dist/view/custom-directives.d.ts +20 -0
  274. package/dist/view/custom-directives.d.ts.map +1 -0
  275. package/dist/view/evaluate.d.ts.map +1 -1
  276. package/dist/view/process.d.ts.map +1 -1
  277. package/dist/view.es.mjs +9 -9
  278. package/package.json +47 -11
  279. package/src/a11y/announce.ts +131 -0
  280. package/src/a11y/audit.ts +314 -0
  281. package/src/a11y/index.ts +68 -0
  282. package/src/a11y/media-preferences.ts +255 -0
  283. package/src/a11y/roving-tab-index.ts +164 -0
  284. package/src/a11y/skip-link.ts +255 -0
  285. package/src/a11y/trap-focus.ts +184 -0
  286. package/src/a11y/types.ts +183 -0
  287. package/src/component/component.ts +599 -524
  288. package/src/component/html.ts +153 -153
  289. package/src/component/index.ts +52 -50
  290. package/src/component/library.ts +540 -518
  291. package/src/component/scope.ts +212 -0
  292. package/src/component/types.ts +310 -256
  293. package/src/core/collection.ts +249 -1
  294. package/src/core/element.ts +252 -11
  295. package/src/core/env.ts +60 -0
  296. package/src/core/index.ts +1 -0
  297. package/src/core/shared.ts +64 -0
  298. package/src/core/utils/index.ts +66 -1
  299. package/src/devtools/devtools.ts +410 -0
  300. package/src/devtools/index.ts +48 -0
  301. package/src/devtools/types.ts +104 -0
  302. package/src/dnd/draggable.ts +296 -0
  303. package/src/dnd/droppable.ts +228 -0
  304. package/src/dnd/index.ts +62 -0
  305. package/src/dnd/sortable.ts +307 -0
  306. package/src/dnd/types.ts +293 -0
  307. package/src/forms/create-form.ts +320 -0
  308. package/src/forms/index.ts +70 -0
  309. package/src/forms/types.ts +203 -0
  310. package/src/forms/use-field.ts +231 -0
  311. package/src/forms/validators.ts +294 -0
  312. package/src/full.ts +554 -229
  313. package/src/i18n/formatting.ts +67 -0
  314. package/src/i18n/i18n.ts +200 -0
  315. package/src/i18n/index.ts +67 -0
  316. package/src/i18n/translate.ts +182 -0
  317. package/src/i18n/types.ts +171 -0
  318. package/src/index.ts +72 -0
  319. package/src/media/battery.ts +116 -0
  320. package/src/media/breakpoints.ts +129 -0
  321. package/src/media/clipboard.ts +80 -0
  322. package/src/media/device-sensors.ts +158 -0
  323. package/src/media/geolocation.ts +119 -0
  324. package/src/media/index.ts +76 -0
  325. package/src/media/media-query.ts +92 -0
  326. package/src/media/network.ts +115 -0
  327. package/src/media/types.ts +177 -0
  328. package/src/media/viewport.ts +84 -0
  329. package/src/motion/index.ts +11 -2
  330. package/src/motion/morph.ts +151 -0
  331. package/src/motion/parallax.ts +120 -0
  332. package/src/motion/reduced-motion.ts +52 -3
  333. package/src/motion/types.ts +63 -0
  334. package/src/motion/typewriter.ts +164 -0
  335. package/src/plugin/index.ts +37 -0
  336. package/src/plugin/registry.ts +284 -0
  337. package/src/plugin/types.ts +137 -0
  338. package/src/reactive/async-data.ts +250 -29
  339. package/src/reactive/computed.ts +53 -1
  340. package/src/reactive/effect.ts +29 -6
  341. package/src/reactive/http.ts +790 -0
  342. package/src/reactive/index.ts +60 -0
  343. package/src/reactive/pagination.ts +317 -0
  344. package/src/reactive/polling.ts +179 -0
  345. package/src/reactive/readonly.ts +52 -8
  346. package/src/reactive/rest.ts +859 -0
  347. package/src/reactive/scope.ts +276 -0
  348. package/src/reactive/signal.ts +61 -1
  349. package/src/reactive/to-value.ts +71 -0
  350. package/src/reactive/websocket.ts +849 -0
  351. package/src/router/bq-link.ts +279 -0
  352. package/src/router/constraints.ts +204 -0
  353. package/src/router/index.ts +15 -7
  354. package/src/router/match.ts +255 -49
  355. package/src/router/path-pattern.ts +52 -0
  356. package/src/router/query.ts +3 -0
  357. package/src/router/router.ts +258 -48
  358. package/src/router/state.ts +51 -3
  359. package/src/router/types.ts +50 -4
  360. package/src/router/use-route.ts +68 -0
  361. package/src/router/utils.ts +44 -3
  362. package/src/security/index.ts +12 -17
  363. package/src/security/sanitize.ts +70 -70
  364. package/src/security/trusted-html.ts +71 -71
  365. package/src/ssr/hydrate.ts +84 -0
  366. package/src/ssr/index.ts +70 -0
  367. package/src/ssr/render.ts +508 -0
  368. package/src/ssr/serialize.ts +296 -0
  369. package/src/ssr/types.ts +81 -0
  370. package/src/store/create-store.ts +146 -8
  371. package/src/store/define-store.ts +49 -49
  372. package/src/store/index.ts +5 -0
  373. package/src/store/mapping.ts +74 -74
  374. package/src/store/persisted.ts +245 -62
  375. package/src/store/types.ts +247 -92
  376. package/src/store/utils.ts +4 -10
  377. package/src/store/watch.ts +53 -53
  378. package/src/storybook/index.ts +480 -479
  379. package/src/testing/index.ts +42 -0
  380. package/src/testing/testing.ts +593 -0
  381. package/src/testing/types.ts +170 -0
  382. package/src/view/custom-directives.ts +28 -0
  383. package/src/view/evaluate.ts +2 -0
  384. package/src/view/process.ts +19 -3
  385. package/dist/component-BEQgt5hl.js +0 -600
  386. package/dist/component-BEQgt5hl.js.map +0 -1
  387. package/dist/core-BGQJVw0-.js +0 -35
  388. package/dist/core-BGQJVw0-.js.map +0 -1
  389. package/dist/core-CCEabVHl.js.map +0 -1
  390. package/dist/effect-AFRW_Plg.js +0 -84
  391. package/dist/effect-AFRW_Plg.js.map +0 -1
  392. package/dist/motion-D9TcHxOF.js +0 -415
  393. package/dist/motion-D9TcHxOF.js.map +0 -1
  394. package/dist/reactive-DSkct0dO.js +0 -254
  395. package/dist/reactive-DSkct0dO.js.map +0 -1
  396. package/dist/router-CbDhl8rS.js +0 -188
  397. package/dist/router-CbDhl8rS.js.map +0 -1
  398. package/dist/store-BwDvI45q.js +0 -263
  399. package/dist/store-BwDvI45q.js.map +0 -1
  400. package/dist/untrack-B0rVscTc.js +0 -7
  401. package/dist/untrack-B0rVscTc.js.map +0 -1
  402. package/dist/view-C70lA3vf.js.map +0 -1
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Type definitions for the bQuery accessibility (a11y) module.
3
+ *
4
+ * @module bquery/a11y
5
+ */
6
+ import type { ReadonlySignal } from '../reactive/index';
7
+ /**
8
+ * Options for configuring focus trapping behavior.
9
+ */
10
+ export interface TrapFocusOptions {
11
+ /**
12
+ * Element to receive initial focus when the trap activates.
13
+ * If not provided, the first focusable element is focused.
14
+ */
15
+ initialFocus?: HTMLElement | string;
16
+ /**
17
+ * Element to receive focus when the trap is released.
18
+ * If not provided, focus returns to the element that was focused
19
+ * before the trap was activated.
20
+ */
21
+ returnFocus?: HTMLElement | string;
22
+ /**
23
+ * Whether pressing Escape releases the focus trap.
24
+ * @default true
25
+ */
26
+ escapeDeactivates?: boolean;
27
+ /**
28
+ * Callback invoked when the trap is deactivated via Escape.
29
+ */
30
+ onEscape?: () => void;
31
+ }
32
+ /**
33
+ * Handle returned by `trapFocus()` for managing the focus trap lifecycle.
34
+ */
35
+ export interface FocusTrapHandle {
36
+ /** Release the focus trap, restoring focus to the previous element. */
37
+ release: () => void;
38
+ /** Whether the trap is currently active. */
39
+ active: boolean;
40
+ }
41
+ /**
42
+ * Priority level for screen reader announcements.
43
+ * - `'polite'` — announced when the user is idle (default)
44
+ * - `'assertive'` — announced immediately, interrupting current speech
45
+ */
46
+ export type AnnouncePriority = 'polite' | 'assertive';
47
+ /**
48
+ * Options for configuring roving tab index behavior.
49
+ */
50
+ export interface RovingTabIndexOptions {
51
+ /**
52
+ * Whether navigation wraps around from last to first (and vice versa).
53
+ * @default true
54
+ */
55
+ wrap?: boolean;
56
+ /**
57
+ * Orientation of the group — determines which arrow keys are used.
58
+ * - `'horizontal'` — Left/Right arrows
59
+ * - `'vertical'` — Up/Down arrows
60
+ * - `'both'` — All arrow keys
61
+ * @default 'vertical'
62
+ */
63
+ orientation?: 'horizontal' | 'vertical' | 'both';
64
+ /**
65
+ * Callback fired when the active item changes.
66
+ */
67
+ onActivate?: (element: Element, index: number) => void;
68
+ }
69
+ /**
70
+ * Handle returned by `rovingTabIndex()` for cleanup.
71
+ */
72
+ export interface RovingTabIndexHandle {
73
+ /** Remove event listeners and restore original tabindex values. */
74
+ destroy: () => void;
75
+ /** Programmatically focus a specific item by index. */
76
+ focusItem: (index: number) => void;
77
+ /** Get the currently active index. */
78
+ activeIndex: () => number;
79
+ }
80
+ /**
81
+ * Options for configuring auto-generated skip navigation.
82
+ */
83
+ export interface SkipLinkOptions {
84
+ /**
85
+ * Text content of the skip link.
86
+ * @default 'Skip to main content'
87
+ */
88
+ text?: string;
89
+ /**
90
+ * CSS class applied to the skip link element.
91
+ * @default 'bq-skip-link'
92
+ */
93
+ className?: string;
94
+ }
95
+ /**
96
+ * Handle returned by `skipLink()` for cleanup.
97
+ */
98
+ export interface SkipLinkHandle {
99
+ /** Remove the skip link from the DOM. */
100
+ destroy: () => void;
101
+ /**
102
+ * The created skip link element, or `null` when `skipLink()` is called in a
103
+ * non-DOM environment and returns a no-op handle.
104
+ */
105
+ element: HTMLAnchorElement | null;
106
+ }
107
+ /**
108
+ * Color scheme preference value.
109
+ */
110
+ export type ColorScheme = 'light' | 'dark';
111
+ /**
112
+ * Contrast preference value.
113
+ */
114
+ export type ContrastPreference = 'no-preference' | 'more' | 'less' | 'custom';
115
+ /**
116
+ * Readonly media preference signal with an explicit cleanup hook.
117
+ */
118
+ export interface MediaPreferenceSignal<T> extends ReadonlySignal<T> {
119
+ /** Releases underlying media-query listeners. Safe to call multiple times. */
120
+ destroy(): void;
121
+ }
122
+ /**
123
+ * Severity level for audit findings.
124
+ */
125
+ export type AuditSeverity = 'error' | 'warning' | 'info';
126
+ /**
127
+ * A single accessibility audit finding.
128
+ */
129
+ export interface AuditFinding {
130
+ /** Severity level of the finding. */
131
+ severity: AuditSeverity;
132
+ /** Human-readable description of the issue. */
133
+ message: string;
134
+ /** The DOM element with the issue. */
135
+ element: Element;
136
+ /** The audit rule that triggered this finding. */
137
+ rule: string;
138
+ }
139
+ /**
140
+ * Result of an accessibility audit.
141
+ */
142
+ export interface AuditResult {
143
+ /** All findings from the audit. */
144
+ findings: AuditFinding[];
145
+ /** Number of errors found. */
146
+ errors: number;
147
+ /** Number of warnings found. */
148
+ warnings: number;
149
+ /** Whether the audit passed (no errors). */
150
+ passed: boolean;
151
+ }
152
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/a11y/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,YAAY,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAEpC;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAEnC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,4CAA4C;IAC5C,MAAM,EAAE,OAAO,CAAC;CACjB;AAID;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,WAAW,CAAC;AAItD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,MAAM,CAAC;IAEjD;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACxD;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,mEAAmE;IACnE,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,uDAAuD;IACvD,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,sCAAsC;IACtC,WAAW,EAAE,MAAM,MAAM,CAAC;CAC3B;AAID;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;OAGG;IACH,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACnC;AAID;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IACjE,8EAA8E;IAC9E,OAAO,IAAI,IAAI,CAAC;CACjB;AAID;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,qCAAqC;IACrC,QAAQ,EAAE,aAAa,CAAC;IACxB,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mCAAmC;IACnC,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,MAAM,EAAE,OAAO,CAAC;CACjB"}
@@ -0,0 +1,421 @@
1
+ import { n as E } from "./core-DdtZHzsS.js";
2
+ import { m as I } from "./reactive-DwkhUJfP.js";
3
+ var w = /* @__PURE__ */ new Map(), A = /* @__PURE__ */ new Map(), q = 50, M = (e) => {
4
+ const t = w.get(e);
5
+ if (t && t.isConnected) return t;
6
+ const i = document.createElement("div");
7
+ return i.setAttribute("aria-live", e), i.setAttribute("aria-atomic", "true"), i.setAttribute("role", e === "assertive" ? "alert" : "status"), Object.assign(i.style, {
8
+ position: "absolute",
9
+ width: "1px",
10
+ height: "1px",
11
+ padding: "0",
12
+ margin: "-1px",
13
+ overflow: "hidden",
14
+ clip: "rect(0, 0, 0, 0)",
15
+ whiteSpace: "nowrap",
16
+ border: "0"
17
+ }), document.body.appendChild(i), w.set(e, i), i;
18
+ }, G = (e, t = "polite") => {
19
+ if (!e || typeof document > "u" || !document.body) return;
20
+ const i = M(t), o = A.get(t);
21
+ o !== void 0 && clearTimeout(o), i.textContent = "";
22
+ const n = setTimeout(() => {
23
+ A.delete(t), i.isConnected && (i.textContent = e);
24
+ }, q);
25
+ A.set(t, n);
26
+ }, W = () => {
27
+ for (const e of A.values()) clearTimeout(e);
28
+ A.clear();
29
+ for (const [, e] of w) e.remove();
30
+ w.clear();
31
+ }, p = (e, t, i, o) => ({
32
+ severity: e,
33
+ message: t,
34
+ element: i,
35
+ rule: o
36
+ }), D = (e) => {
37
+ const t = [], i = e.querySelectorAll("img");
38
+ for (const o of i) o.hasAttribute("alt") ? o.getAttribute("alt") === "" && !o.hasAttribute("role") && t.push(p("info", 'Image has empty alt text. Consider adding role="presentation" if decorative.', o, "img-decorative")) : t.push(p("error", 'Image is missing an alt attribute. Add alt="" for decorative images or a descriptive alt text.', o, "img-alt"));
39
+ return t;
40
+ }, F = (e) => {
41
+ const t = [], i = e.querySelectorAll("input, select, textarea");
42
+ for (const o of i) {
43
+ const n = o.getAttribute("type");
44
+ if (n === "hidden" || n === "submit" || n === "button" || n === "reset") continue;
45
+ const d = o.getAttribute("id"), l = d ? !!e.querySelector(`label[for="${d}"]`) : !1, c = o.hasAttribute("aria-label") || o.hasAttribute("aria-labelledby"), m = o.hasAttribute("title"), g = o.closest("label") !== null;
46
+ !l && !c && !m && !g && t.push(p("error", 'Form input is missing a label. Add a <label for="id">, aria-label, or aria-labelledby attribute.', o, "input-label"));
47
+ }
48
+ return t;
49
+ }, R = (e) => {
50
+ const t = [], i = e.querySelectorAll("button");
51
+ for (const n of i) {
52
+ const d = (n.textContent ?? "").trim().length > 0, l = n.hasAttribute("aria-label") || n.hasAttribute("aria-labelledby"), c = n.hasAttribute("title");
53
+ !d && !l && !c && t.push(p("error", "Button has no accessible name. Add text content, aria-label, or title.", n, "button-name"));
54
+ }
55
+ const o = e.querySelectorAll("a[href]");
56
+ for (const n of o) {
57
+ const d = (n.textContent ?? "").trim().length > 0, l = n.hasAttribute("aria-label") || n.hasAttribute("aria-labelledby"), c = n.hasAttribute("title"), m = n.querySelector("img[alt]") !== null;
58
+ !d && !l && !c && !m && t.push(p("error", "Link has no accessible name. Add text content, aria-label, or title.", n, "link-name"));
59
+ }
60
+ return t;
61
+ }, B = (e) => {
62
+ const t = [], i = e.querySelectorAll("h1, h2, h3, h4, h5, h6");
63
+ let o = 0;
64
+ for (const n of i) {
65
+ const d = parseInt(n.tagName.charAt(1), 10);
66
+ o > 0 && d > o + 1 && t.push(p("warning", `Heading level skipped: <${n.tagName.toLowerCase()}> follows <h${o}>. Don't skip heading levels.`, n, "heading-order")), (n.textContent ?? "").trim().length === 0 && t.push(p("warning", "Heading element is empty.", n, "heading-empty")), o = d;
67
+ }
68
+ return t;
69
+ }, N = (e) => {
70
+ const t = [], i = e.querySelectorAll("[aria-labelledby]");
71
+ for (const n of i) {
72
+ const d = (n.getAttribute("aria-labelledby") ?? "").split(/\s+/);
73
+ for (const l of d) l && !document.getElementById(l) && t.push(p("error", `aria-labelledby references "${l}" which does not exist in the document.`, n, "aria-labelledby-ref"));
74
+ }
75
+ const o = e.querySelectorAll("[aria-describedby]");
76
+ for (const n of o) {
77
+ const d = (n.getAttribute("aria-describedby") ?? "").split(/\s+/);
78
+ for (const l of d) l && !document.getElementById(l) && t.push(p("error", `aria-describedby references "${l}" which does not exist in the document.`, n, "aria-describedby-ref"));
79
+ }
80
+ return t;
81
+ }, $ = (e) => {
82
+ const t = [];
83
+ return (e === document.body || e === document.documentElement) && (e.querySelector("main") || e.querySelector('[role="main"]') || t.push(p("warning", 'Page is missing a <main> landmark. Add <main> or role="main" to the primary content area.', e, "landmark-main"))), t;
84
+ }, Y = (e) => {
85
+ if (typeof document > "u" || !document.body) return {
86
+ findings: [],
87
+ errors: 0,
88
+ warnings: 0,
89
+ passed: !0
90
+ };
91
+ const t = e ?? document.body, i = [
92
+ ...D(t),
93
+ ...F(t),
94
+ ...R(t),
95
+ ...B(t),
96
+ ...N(t),
97
+ ...$(t)
98
+ ], o = i.filter((n) => n.severity === "error").length;
99
+ return {
100
+ findings: i,
101
+ errors: o,
102
+ warnings: i.filter((n) => n.severity === "warning").length,
103
+ passed: o === 0
104
+ };
105
+ }, L = (e, t) => {
106
+ if (typeof e.addEventListener == "function")
107
+ return e.addEventListener("change", t), () => {
108
+ e.removeEventListener("change", t);
109
+ };
110
+ const i = e;
111
+ if (typeof i.addListener == "function")
112
+ return i.addListener(t), () => {
113
+ i.removeListener?.(t);
114
+ };
115
+ }, T = (e, t) => {
116
+ let i = t;
117
+ const o = e;
118
+ return Object.defineProperty(o, "destroy", {
119
+ configurable: !0,
120
+ enumerable: !1,
121
+ value: () => {
122
+ const n = i;
123
+ i = () => {
124
+ }, n();
125
+ }
126
+ }), o;
127
+ }, O = (e, t) => {
128
+ const i = E(t);
129
+ let o = () => {
130
+ i.dispose();
131
+ };
132
+ if (typeof window < "u" && typeof window.matchMedia == "function") try {
133
+ const n = window.matchMedia(e);
134
+ i.value = n.matches;
135
+ const l = L(n, (c) => {
136
+ i.value = c.matches;
137
+ });
138
+ l && (o = () => {
139
+ l(), i.dispose();
140
+ });
141
+ } catch {
142
+ }
143
+ return T(I(i), o);
144
+ }, P = () => O("(prefers-reduced-motion: reduce)", !1), Q = () => {
145
+ const e = E("light");
146
+ let t = () => {
147
+ e.dispose();
148
+ };
149
+ if (typeof window < "u" && typeof window.matchMedia == "function") try {
150
+ const i = window.matchMedia("(prefers-color-scheme: dark)");
151
+ e.value = i.matches ? "dark" : "light";
152
+ const n = L(i, (d) => {
153
+ e.value = d.matches ? "dark" : "light";
154
+ });
155
+ n && (t = () => {
156
+ n(), e.dispose();
157
+ });
158
+ } catch {
159
+ }
160
+ return T(I(e), t);
161
+ }, J = () => {
162
+ const e = E("no-preference");
163
+ let t = () => {
164
+ e.dispose();
165
+ };
166
+ if (typeof window < "u" && typeof window.matchMedia == "function") {
167
+ let i, o, n;
168
+ const d = () => {
169
+ !i || !o || !n || (i.matches ? e.value = "more" : o.matches ? e.value = "less" : n.matches ? e.value = "custom" : e.value = "no-preference");
170
+ };
171
+ try {
172
+ i = window.matchMedia("(prefers-contrast: more)"), o = window.matchMedia("(prefers-contrast: less)"), n = window.matchMedia("(prefers-contrast: custom)"), d();
173
+ const l = [
174
+ i,
175
+ o,
176
+ n
177
+ ].map((c) => L(c, () => {
178
+ d();
179
+ })).filter((c) => c !== void 0);
180
+ l.length > 0 && (t = () => {
181
+ for (const c of l) c();
182
+ e.dispose();
183
+ });
184
+ } catch {
185
+ }
186
+ }
187
+ return T(I(e), t);
188
+ }, V = (e, t, i = {}) => {
189
+ const { wrap: o = !0, orientation: n = "vertical", onActivate: d } = i;
190
+ let l = 0;
191
+ const c = /* @__PURE__ */ new Map(), m = () => Array.from(e.querySelectorAll(t)), g = (a) => {
192
+ for (const r of a) c.has(r) || c.set(r, r.getAttribute("tabindex"));
193
+ }, v = (a) => {
194
+ const r = m();
195
+ if (r.length === 0) return;
196
+ g(r);
197
+ const s = Math.max(0, Math.min(a, r.length - 1));
198
+ for (let b = 0; b < r.length; b++) r[b].setAttribute("tabindex", b === s ? "0" : "-1");
199
+ l = s, r[s].focus(), d?.(r[s], s);
200
+ }, u = (a) => {
201
+ if (a === "Home" || a === "End") return !0;
202
+ switch (n) {
203
+ case "horizontal":
204
+ return a === "ArrowLeft" || a === "ArrowRight";
205
+ case "vertical":
206
+ return a === "ArrowUp" || a === "ArrowDown";
207
+ case "both":
208
+ return a === "ArrowLeft" || a === "ArrowRight" || a === "ArrowUp" || a === "ArrowDown";
209
+ default:
210
+ return !1;
211
+ }
212
+ }, h = (a) => {
213
+ if (!u(a.key)) return;
214
+ const r = m();
215
+ if (r.length === 0) return;
216
+ a.preventDefault();
217
+ let s = l;
218
+ switch (a.key) {
219
+ case "ArrowDown":
220
+ case "ArrowRight":
221
+ s = l + 1, s >= r.length && (s = o ? 0 : r.length - 1);
222
+ break;
223
+ case "ArrowUp":
224
+ case "ArrowLeft":
225
+ s = l - 1, s < 0 && (s = o ? r.length - 1 : 0);
226
+ break;
227
+ case "Home":
228
+ s = 0;
229
+ break;
230
+ case "End":
231
+ s = r.length - 1;
232
+ break;
233
+ }
234
+ v(s);
235
+ }, f = m();
236
+ g(f);
237
+ for (let a = 0; a < f.length; a++) f[a].setAttribute("tabindex", a === 0 ? "0" : "-1");
238
+ return e.addEventListener("keydown", h), {
239
+ destroy: () => {
240
+ e.removeEventListener("keydown", h);
241
+ for (const [a, r] of c) r === null ? a.removeAttribute("tabindex") : a.setAttribute("tabindex", r);
242
+ c.clear();
243
+ },
244
+ focusItem: (a) => {
245
+ v(a);
246
+ },
247
+ activeIndex: () => l
248
+ };
249
+ }, x = `
250
+ position: absolute;
251
+ top: -9999px;
252
+ left: -9999px;
253
+ z-index: 999999;
254
+ padding: 0.5em 1em;
255
+ background: #000;
256
+ color: #fff;
257
+ font-size: 1rem;
258
+ text-decoration: none;
259
+ border-radius: 0 0 4px 0;
260
+ outline: 2px solid #4A90D9;
261
+ outline-offset: 2px;
262
+ `, U = `
263
+ top: 0;
264
+ left: 0;
265
+ `, k = 0, y = /* @__PURE__ */ new Map(), H = () => typeof document > "u" ? !1 : typeof document.createElement == "function" && typeof document.querySelector == "function" && typeof document.getElementById == "function" && document.body !== null && document.body !== void 0, _ = () => ({
266
+ destroy: () => {
267
+ },
268
+ element: null
269
+ }), X = (e, t = {}) => {
270
+ if (!H()) return _();
271
+ const { text: i = "Skip to main content", className: o = "bq-skip-link" } = t;
272
+ let n, d;
273
+ const l = (r) => {
274
+ try {
275
+ return document.querySelector(r);
276
+ } catch {
277
+ return null;
278
+ }
279
+ }, c = () => {
280
+ if (!n) return;
281
+ const r = y.get(n), s = (r?.count ?? 0) - 1;
282
+ s <= 0 ? (y.delete(n), r?.target.isConnected && r.target.id === n && r.target.removeAttribute("id")) : y.set(n, {
283
+ count: s,
284
+ target: r.target
285
+ }), n = void 0;
286
+ }, m = () => {
287
+ if (!d) return;
288
+ const { target: r, hadTabIndex: s, previousTabIndex: b } = d;
289
+ r.isConnected && (s ? r.setAttribute("tabindex", b ?? "") : r.removeAttribute("tabindex")), d = void 0;
290
+ }, g = (r) => {
291
+ if (d?.target !== r) {
292
+ if (m(), r.hasAttribute("tabindex")) {
293
+ d = {
294
+ target: r,
295
+ hadTabIndex: !0,
296
+ previousTabIndex: r.getAttribute("tabindex")
297
+ };
298
+ return;
299
+ }
300
+ r.tabIndex === -1 && (d = {
301
+ target: r,
302
+ hadTabIndex: !1,
303
+ previousTabIndex: null
304
+ }, r.setAttribute("tabindex", "-1"));
305
+ }
306
+ }, v = (r, s) => {
307
+ if (n === s) return;
308
+ c();
309
+ const b = y.get(s);
310
+ y.set(s, {
311
+ count: (b?.count ?? 0) + 1,
312
+ target: r
313
+ }), n = s;
314
+ }, u = () => {
315
+ if (e.startsWith("#")) {
316
+ const s = e.slice(1), b = s ? document.getElementById(s) : null;
317
+ return b || l(e);
318
+ }
319
+ const r = document.getElementById(e);
320
+ return r || l(e);
321
+ }, h = (r) => {
322
+ if (r.id)
323
+ return y.get(r.id)?.target === r && v(r, r.id), r.id;
324
+ let s;
325
+ do
326
+ k += 1, s = `bq-skip-target-${k}`;
327
+ while (document.getElementById(s) !== null);
328
+ return r.id = s, v(r, s), s;
329
+ }, f = document.createElement("a"), a = u();
330
+ return f.href = e.startsWith("#") ? e : a ? `#${h(a)}` : `#${e}`, f.textContent = i, f.className = o, f.setAttribute("style", x), f.addEventListener("focus", () => {
331
+ f.setAttribute("style", x + U);
332
+ }), f.addEventListener("blur", () => {
333
+ f.setAttribute("style", x);
334
+ }), f.addEventListener("click", (r) => {
335
+ r.preventDefault();
336
+ const s = u();
337
+ s && (f.href = `#${h(s)}`, g(s), s.focus());
338
+ }), document.body.firstChild ? document.body.insertBefore(f, document.body.firstChild) : document.body.appendChild(f), {
339
+ destroy: () => {
340
+ m(), c(), f.remove();
341
+ },
342
+ element: f
343
+ };
344
+ }, K = [
345
+ "a[href]",
346
+ "button:not([disabled])",
347
+ "input:not([disabled])",
348
+ "select:not([disabled])",
349
+ "textarea:not([disabled])",
350
+ '[tabindex]:not([tabindex="-1"])',
351
+ '[contenteditable="true"]',
352
+ "details > summary",
353
+ "audio[controls]",
354
+ "video[controls]"
355
+ ].join(", "), C = (e) => Array.from(e.querySelectorAll(K)).filter((t) => !t.hasAttribute("disabled") && t.tabIndex !== -1 && t.getClientRects().length > 0), S = (e, t) => e ? typeof e == "string" ? t.querySelector(e) : e : null, Z = (e, t = {}) => {
356
+ const { escapeDeactivates: i = !0, onEscape: o, initialFocus: n, returnFocus: d } = t;
357
+ if (typeof document > "u" || typeof document.addEventListener != "function" || typeof document.removeEventListener != "function") {
358
+ let u = !1;
359
+ return {
360
+ get active() {
361
+ return u;
362
+ },
363
+ release: () => {
364
+ u = !1;
365
+ }
366
+ };
367
+ }
368
+ const l = document.activeElement;
369
+ let c = !0;
370
+ const m = (u) => {
371
+ if (!c) return;
372
+ if (u.key === "Escape" && i) {
373
+ u.preventDefault(), v.release(), o?.();
374
+ return;
375
+ }
376
+ if (u.key !== "Tab") return;
377
+ const h = C(e);
378
+ if (h.length === 0) {
379
+ u.preventDefault();
380
+ return;
381
+ }
382
+ const f = h[0], a = h[h.length - 1];
383
+ u.shiftKey ? (document.activeElement === f || !e.contains(document.activeElement)) && (u.preventDefault(), a.focus()) : (document.activeElement === a || !e.contains(document.activeElement)) && (u.preventDefault(), f.focus());
384
+ };
385
+ document.addEventListener("keydown", m, !0);
386
+ const g = S(n, e);
387
+ if (g) g.focus();
388
+ else {
389
+ const u = C(e);
390
+ u.length > 0 && u[0].focus();
391
+ }
392
+ const v = {
393
+ get active() {
394
+ return c;
395
+ },
396
+ release: () => {
397
+ if (!c) return;
398
+ c = !1, document.removeEventListener("keydown", m, !0);
399
+ const u = S(d, document.body);
400
+ u ? u.focus() : l && l.focus && l.focus();
401
+ }
402
+ };
403
+ return v;
404
+ }, ee = (e) => {
405
+ e.release();
406
+ };
407
+ export {
408
+ V as a,
409
+ P as c,
410
+ W as d,
411
+ X as i,
412
+ Y as l,
413
+ ee as n,
414
+ Q as o,
415
+ Z as r,
416
+ J as s,
417
+ C as t,
418
+ G as u
419
+ };
420
+
421
+ //# sourceMappingURL=a11y-DVBCy09c.js.map