@pwfabric/runtime 0.0.0-stage → 1.0.0-rc.0

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 (603) hide show
  1. package/LICENSE +90 -0
  2. package/README.md +13 -2
  3. package/dist/__tests__/dom-test-setup.d.ts +21 -0
  4. package/dist/__tests__/dom-test-setup.d.ts.map +1 -0
  5. package/dist/__tests__/dom-test-setup.js +36 -0
  6. package/dist/__tests__/dom-test-setup.js.map +1 -0
  7. package/dist/a11y/announcer.d.ts +66 -0
  8. package/dist/a11y/announcer.d.ts.map +1 -0
  9. package/dist/a11y/announcer.js +140 -0
  10. package/dist/a11y/announcer.js.map +1 -0
  11. package/dist/a11y/contrast.d.ts +55 -0
  12. package/dist/a11y/contrast.d.ts.map +1 -0
  13. package/dist/a11y/contrast.js +93 -0
  14. package/dist/a11y/contrast.js.map +1 -0
  15. package/dist/a11y/focus.d.ts +124 -0
  16. package/dist/a11y/focus.d.ts.map +1 -0
  17. package/dist/a11y/focus.js +282 -0
  18. package/dist/a11y/focus.js.map +1 -0
  19. package/dist/a11y/index.d.ts +22 -0
  20. package/dist/a11y/index.d.ts.map +1 -0
  21. package/dist/a11y/index.js +18 -0
  22. package/dist/a11y/index.js.map +1 -0
  23. package/dist/a11y/keyboard.d.ts +145 -0
  24. package/dist/a11y/keyboard.d.ts.map +1 -0
  25. package/dist/a11y/keyboard.js +317 -0
  26. package/dist/a11y/keyboard.js.map +1 -0
  27. package/dist/adapters/default-image.d.ts +26 -0
  28. package/dist/adapters/default-image.d.ts.map +1 -0
  29. package/dist/adapters/default-image.js +37 -0
  30. package/dist/adapters/default-image.js.map +1 -0
  31. package/dist/adapters/index.d.ts +28 -0
  32. package/dist/adapters/index.d.ts.map +1 -0
  33. package/dist/adapters/index.js +28 -0
  34. package/dist/adapters/index.js.map +1 -0
  35. package/dist/adapters/next-image.d.ts +39 -0
  36. package/dist/adapters/next-image.d.ts.map +1 -0
  37. package/dist/adapters/next-image.js +124 -0
  38. package/dist/adapters/next-image.js.map +1 -0
  39. package/dist/adapters/types.d.ts +62 -0
  40. package/dist/adapters/types.d.ts.map +1 -0
  41. package/dist/adapters/types.js +11 -0
  42. package/dist/adapters/types.js.map +1 -0
  43. package/dist/analytics/index.d.ts +15 -0
  44. package/dist/analytics/index.d.ts.map +1 -0
  45. package/dist/analytics/index.js +15 -0
  46. package/dist/analytics/index.js.map +1 -0
  47. package/dist/analytics/tracker.d.ts +66 -0
  48. package/dist/analytics/tracker.d.ts.map +1 -0
  49. package/dist/analytics/tracker.js +251 -0
  50. package/dist/analytics/tracker.js.map +1 -0
  51. package/dist/analytics/types.d.ts +131 -0
  52. package/dist/analytics/types.d.ts.map +1 -0
  53. package/dist/analytics/types.js +11 -0
  54. package/dist/analytics/types.js.map +1 -0
  55. package/dist/auth/index.d.ts +16 -0
  56. package/dist/auth/index.d.ts.map +1 -0
  57. package/dist/auth/index.js +14 -0
  58. package/dist/auth/index.js.map +1 -0
  59. package/dist/auth/provider.d.ts +133 -0
  60. package/dist/auth/provider.d.ts.map +1 -0
  61. package/dist/auth/provider.js +473 -0
  62. package/dist/auth/provider.js.map +1 -0
  63. package/dist/auth/types.d.ts +118 -0
  64. package/dist/auth/types.d.ts.map +1 -0
  65. package/dist/auth/types.js +9 -0
  66. package/dist/auth/types.js.map +1 -0
  67. package/dist/binding/collection.d.ts +191 -0
  68. package/dist/binding/collection.d.ts.map +1 -0
  69. package/dist/binding/collection.js +358 -0
  70. package/dist/binding/collection.js.map +1 -0
  71. package/dist/binding/datasource.d.ts +320 -0
  72. package/dist/binding/datasource.d.ts.map +1 -0
  73. package/dist/binding/datasource.js +556 -0
  74. package/dist/binding/datasource.js.map +1 -0
  75. package/dist/binding/engine.d.ts +66 -0
  76. package/dist/binding/engine.d.ts.map +1 -0
  77. package/dist/binding/engine.js +268 -0
  78. package/dist/binding/engine.js.map +1 -0
  79. package/dist/binding/expression.d.ts +151 -0
  80. package/dist/binding/expression.d.ts.map +1 -0
  81. package/dist/binding/expression.js +787 -0
  82. package/dist/binding/expression.js.map +1 -0
  83. package/dist/binding/index.d.ts +20 -0
  84. package/dist/binding/index.d.ts.map +1 -0
  85. package/dist/binding/index.js +14 -0
  86. package/dist/binding/index.js.map +1 -0
  87. package/dist/binding/two-way.d.ts +150 -0
  88. package/dist/binding/two-way.d.ts.map +1 -0
  89. package/dist/binding/two-way.js +462 -0
  90. package/dist/binding/two-way.js.map +1 -0
  91. package/dist/binding/types.d.ts +120 -0
  92. package/dist/binding/types.d.ts.map +1 -0
  93. package/dist/binding/types.js +9 -0
  94. package/dist/binding/types.js.map +1 -0
  95. package/dist/blocks/__test-fixtures__/block-fixtures.d.ts +40 -0
  96. package/dist/blocks/__test-fixtures__/block-fixtures.d.ts.map +1 -0
  97. package/dist/blocks/__test-fixtures__/block-fixtures.js +506 -0
  98. package/dist/blocks/__test-fixtures__/block-fixtures.js.map +1 -0
  99. package/dist/blocks/component-types.d.ts +82 -0
  100. package/dist/blocks/component-types.d.ts.map +1 -0
  101. package/dist/blocks/component-types.js +11 -0
  102. package/dist/blocks/component-types.js.map +1 -0
  103. package/dist/blocks/composition-rules.d.ts +169 -0
  104. package/dist/blocks/composition-rules.d.ts.map +1 -0
  105. package/dist/blocks/composition-rules.js +391 -0
  106. package/dist/blocks/composition-rules.js.map +1 -0
  107. package/dist/blocks/hooks.d.ts +32 -0
  108. package/dist/blocks/hooks.d.ts.map +1 -0
  109. package/dist/blocks/hooks.js +42 -0
  110. package/dist/blocks/hooks.js.map +1 -0
  111. package/dist/blocks/index.d.ts +16 -0
  112. package/dist/blocks/index.d.ts.map +1 -0
  113. package/dist/blocks/index.js +24 -0
  114. package/dist/blocks/index.js.map +1 -0
  115. package/dist/blocks/registry.d.ts +85 -0
  116. package/dist/blocks/registry.d.ts.map +1 -0
  117. package/dist/blocks/registry.js +136 -0
  118. package/dist/blocks/registry.js.map +1 -0
  119. package/dist/blocks/rule-engine.d.ts +132 -0
  120. package/dist/blocks/rule-engine.d.ts.map +1 -0
  121. package/dist/blocks/rule-engine.js +321 -0
  122. package/dist/blocks/rule-engine.js.map +1 -0
  123. package/dist/blocks/surface-event-context.d.ts +14 -0
  124. package/dist/blocks/surface-event-context.d.ts.map +1 -0
  125. package/dist/blocks/surface-event-context.js +14 -0
  126. package/dist/blocks/surface-event-context.js.map +1 -0
  127. package/dist/blocks/surface-id-context.d.ts +14 -0
  128. package/dist/blocks/surface-id-context.d.ts.map +1 -0
  129. package/dist/blocks/surface-id-context.js +15 -0
  130. package/dist/blocks/surface-id-context.js.map +1 -0
  131. package/dist/bus.d.ts +42 -0
  132. package/dist/bus.d.ts.map +1 -0
  133. package/dist/bus.js +158 -0
  134. package/dist/bus.js.map +1 -0
  135. package/dist/cache/index.d.ts +10 -0
  136. package/dist/cache/index.d.ts.map +1 -0
  137. package/dist/cache/index.js +10 -0
  138. package/dist/cache/index.js.map +1 -0
  139. package/dist/cache/memory.d.ts +33 -0
  140. package/dist/cache/memory.d.ts.map +1 -0
  141. package/dist/cache/memory.js +138 -0
  142. package/dist/cache/memory.js.map +1 -0
  143. package/dist/cache/types.d.ts +63 -0
  144. package/dist/cache/types.d.ts.map +1 -0
  145. package/dist/cache/types.js +9 -0
  146. package/dist/cache/types.js.map +1 -0
  147. package/dist/capability/index.d.ts +73 -0
  148. package/dist/capability/index.d.ts.map +1 -0
  149. package/dist/capability/index.js +87 -0
  150. package/dist/capability/index.js.map +1 -0
  151. package/dist/capability/kernel-capabilities.d.ts +32 -0
  152. package/dist/capability/kernel-capabilities.d.ts.map +1 -0
  153. package/dist/capability/kernel-capabilities.js +36 -0
  154. package/dist/capability/kernel-capabilities.js.map +1 -0
  155. package/dist/capability/platform-capabilities.d.ts +72 -0
  156. package/dist/capability/platform-capabilities.d.ts.map +1 -0
  157. package/dist/capability/platform-capabilities.js +267 -0
  158. package/dist/capability/platform-capabilities.js.map +1 -0
  159. package/dist/capability/type-mapping.d.ts +71 -0
  160. package/dist/capability/type-mapping.d.ts.map +1 -0
  161. package/dist/capability/type-mapping.js +107 -0
  162. package/dist/capability/type-mapping.js.map +1 -0
  163. package/dist/capability/validation.d.ts +47 -0
  164. package/dist/capability/validation.d.ts.map +1 -0
  165. package/dist/capability/validation.js +54 -0
  166. package/dist/capability/validation.js.map +1 -0
  167. package/dist/connectors/declared-connector.d.ts +49 -0
  168. package/dist/connectors/declared-connector.d.ts.map +1 -0
  169. package/dist/connectors/declared-connector.js +333 -0
  170. package/dist/connectors/declared-connector.js.map +1 -0
  171. package/dist/connectors/engine-registry.d.ts +51 -0
  172. package/dist/connectors/engine-registry.d.ts.map +1 -0
  173. package/dist/connectors/engine-registry.js +135 -0
  174. package/dist/connectors/engine-registry.js.map +1 -0
  175. package/dist/connectors/index.d.ts +15 -0
  176. package/dist/connectors/index.d.ts.map +1 -0
  177. package/dist/connectors/index.js +14 -0
  178. package/dist/connectors/index.js.map +1 -0
  179. package/dist/connectors/module-loader.d.ts +71 -0
  180. package/dist/connectors/module-loader.d.ts.map +1 -0
  181. package/dist/connectors/module-loader.js +143 -0
  182. package/dist/connectors/module-loader.js.map +1 -0
  183. package/dist/connectors/types.d.ts +175 -0
  184. package/dist/connectors/types.d.ts.map +1 -0
  185. package/dist/connectors/types.js +23 -0
  186. package/dist/connectors/types.js.map +1 -0
  187. package/dist/context.d.ts +28 -0
  188. package/dist/context.d.ts.map +1 -0
  189. package/dist/context.js +38 -0
  190. package/dist/context.js.map +1 -0
  191. package/dist/data/DataCapabilityProvider.d.ts +40 -0
  192. package/dist/data/DataCapabilityProvider.d.ts.map +1 -0
  193. package/dist/data/DataCapabilityProvider.js +58 -0
  194. package/dist/data/DataCapabilityProvider.js.map +1 -0
  195. package/dist/data/index.d.ts +18 -0
  196. package/dist/data/index.d.ts.map +1 -0
  197. package/dist/data/index.js +18 -0
  198. package/dist/data/index.js.map +1 -0
  199. package/dist/data/manager.d.ts +41 -0
  200. package/dist/data/manager.d.ts.map +1 -0
  201. package/dist/data/manager.js +442 -0
  202. package/dist/data/manager.js.map +1 -0
  203. package/dist/data/types.d.ts +219 -0
  204. package/dist/data/types.d.ts.map +1 -0
  205. package/dist/data/types.js +2 -0
  206. package/dist/data/types.js.map +1 -0
  207. package/dist/entity/aggregate.d.ts +9 -0
  208. package/dist/entity/aggregate.d.ts.map +1 -0
  209. package/dist/entity/aggregate.js +24 -0
  210. package/dist/entity/aggregate.js.map +1 -0
  211. package/dist/entity/apply-query.d.ts +59 -0
  212. package/dist/entity/apply-query.d.ts.map +1 -0
  213. package/dist/entity/apply-query.js +264 -0
  214. package/dist/entity/apply-query.js.map +1 -0
  215. package/dist/entity/behavior.d.ts +95 -0
  216. package/dist/entity/behavior.d.ts.map +1 -0
  217. package/dist/entity/behavior.js +78 -0
  218. package/dist/entity/behavior.js.map +1 -0
  219. package/dist/entity/connector.d.ts +142 -0
  220. package/dist/entity/connector.d.ts.map +1 -0
  221. package/dist/entity/connector.js +89 -0
  222. package/dist/entity/connector.js.map +1 -0
  223. package/dist/entity/connectors/index.d.ts +13 -0
  224. package/dist/entity/connectors/index.d.ts.map +1 -0
  225. package/dist/entity/connectors/index.js +11 -0
  226. package/dist/entity/connectors/index.js.map +1 -0
  227. package/dist/entity/connectors/static.d.ts +52 -0
  228. package/dist/entity/connectors/static.d.ts.map +1 -0
  229. package/dist/entity/connectors/static.js +245 -0
  230. package/dist/entity/connectors/static.js.map +1 -0
  231. package/dist/entity/entity-datasource.d.ts +51 -0
  232. package/dist/entity/entity-datasource.d.ts.map +1 -0
  233. package/dist/entity/entity-datasource.js +33 -0
  234. package/dist/entity/entity-datasource.js.map +1 -0
  235. package/dist/entity/facade.d.ts +71 -0
  236. package/dist/entity/facade.d.ts.map +1 -0
  237. package/dist/entity/facade.js +70 -0
  238. package/dist/entity/facade.js.map +1 -0
  239. package/dist/entity/http-connector.d.ts +124 -0
  240. package/dist/entity/http-connector.d.ts.map +1 -0
  241. package/dist/entity/http-connector.js +295 -0
  242. package/dist/entity/http-connector.js.map +1 -0
  243. package/dist/entity/index.d.ts +39 -0
  244. package/dist/entity/index.d.ts.map +1 -0
  245. package/dist/entity/index.js +31 -0
  246. package/dist/entity/index.js.map +1 -0
  247. package/dist/entity/postgres-connector.d.ts +65 -0
  248. package/dist/entity/postgres-connector.d.ts.map +1 -0
  249. package/dist/entity/postgres-connector.js +239 -0
  250. package/dist/entity/postgres-connector.js.map +1 -0
  251. package/dist/entity/registry.d.ts +60 -0
  252. package/dist/entity/registry.d.ts.map +1 -0
  253. package/dist/entity/registry.js +90 -0
  254. package/dist/entity/registry.js.map +1 -0
  255. package/dist/entity/store.d.ts +67 -0
  256. package/dist/entity/store.d.ts.map +1 -0
  257. package/dist/entity/store.js +349 -0
  258. package/dist/entity/store.js.map +1 -0
  259. package/dist/entity/types.d.ts +181 -0
  260. package/dist/entity/types.d.ts.map +1 -0
  261. package/dist/entity/types.js +10 -0
  262. package/dist/entity/types.js.map +1 -0
  263. package/dist/execution-context.d.ts +89 -0
  264. package/dist/execution-context.d.ts.map +1 -0
  265. package/dist/execution-context.js +146 -0
  266. package/dist/execution-context.js.map +1 -0
  267. package/dist/executor.d.ts +28 -0
  268. package/dist/executor.d.ts.map +1 -0
  269. package/dist/executor.js +33 -0
  270. package/dist/executor.js.map +1 -0
  271. package/dist/forms/form-entity-bridge.d.ts +95 -0
  272. package/dist/forms/form-entity-bridge.d.ts.map +1 -0
  273. package/dist/forms/form-entity-bridge.js +96 -0
  274. package/dist/forms/form-entity-bridge.js.map +1 -0
  275. package/dist/forms/form-write-target.d.ts +35 -0
  276. package/dist/forms/form-write-target.d.ts.map +1 -0
  277. package/dist/forms/form-write-target.js +81 -0
  278. package/dist/forms/form-write-target.js.map +1 -0
  279. package/dist/forms/index.d.ts +23 -0
  280. package/dist/forms/index.d.ts.map +1 -0
  281. package/dist/forms/index.js +25 -0
  282. package/dist/forms/index.js.map +1 -0
  283. package/dist/forms/named-control-values.d.ts +28 -0
  284. package/dist/forms/named-control-values.d.ts.map +1 -0
  285. package/dist/forms/named-control-values.js +42 -0
  286. package/dist/forms/named-control-values.js.map +1 -0
  287. package/dist/forms/processor.d.ts +56 -0
  288. package/dist/forms/processor.d.ts.map +1 -0
  289. package/dist/forms/processor.js +154 -0
  290. package/dist/forms/processor.js.map +1 -0
  291. package/dist/forms/types.d.ts +175 -0
  292. package/dist/forms/types.d.ts.map +1 -0
  293. package/dist/forms/types.js +33 -0
  294. package/dist/forms/types.js.map +1 -0
  295. package/dist/forms/validator.d.ts +62 -0
  296. package/dist/forms/validator.d.ts.map +1 -0
  297. package/dist/forms/validator.js +218 -0
  298. package/dist/forms/validator.js.map +1 -0
  299. package/dist/graph/index.d.ts +11 -0
  300. package/dist/graph/index.d.ts.map +1 -0
  301. package/dist/graph/index.js +9 -0
  302. package/dist/graph/index.js.map +1 -0
  303. package/dist/graph/resolver.d.ts +67 -0
  304. package/dist/graph/resolver.d.ts.map +1 -0
  305. package/dist/graph/resolver.js +243 -0
  306. package/dist/graph/resolver.js.map +1 -0
  307. package/dist/graph/types.d.ts +126 -0
  308. package/dist/graph/types.d.ts.map +1 -0
  309. package/dist/graph/types.js +9 -0
  310. package/dist/graph/types.js.map +1 -0
  311. package/dist/hooks/useInstalledAtoms.d.ts +97 -0
  312. package/dist/hooks/useInstalledAtoms.d.ts.map +1 -0
  313. package/dist/hooks/useInstalledAtoms.js +92 -0
  314. package/dist/hooks/useInstalledAtoms.js.map +1 -0
  315. package/dist/i18n/index.d.ts +16 -0
  316. package/dist/i18n/index.d.ts.map +1 -0
  317. package/dist/i18n/index.js +14 -0
  318. package/dist/i18n/index.js.map +1 -0
  319. package/dist/i18n/translator.d.ts +77 -0
  320. package/dist/i18n/translator.d.ts.map +1 -0
  321. package/dist/i18n/translator.js +357 -0
  322. package/dist/i18n/translator.js.map +1 -0
  323. package/dist/i18n/types.d.ts +94 -0
  324. package/dist/i18n/types.d.ts.map +1 -0
  325. package/dist/i18n/types.js +9 -0
  326. package/dist/i18n/types.js.map +1 -0
  327. package/dist/index.d.ts +65 -0
  328. package/dist/index.d.ts.map +1 -0
  329. package/dist/index.js +95 -0
  330. package/dist/index.js.map +1 -0
  331. package/dist/kernel.d.ts +48 -0
  332. package/dist/kernel.d.ts.map +1 -0
  333. package/dist/kernel.js +258 -0
  334. package/dist/kernel.js.map +1 -0
  335. package/dist/perf/budget.d.ts +93 -0
  336. package/dist/perf/budget.d.ts.map +1 -0
  337. package/dist/perf/budget.js +122 -0
  338. package/dist/perf/budget.js.map +1 -0
  339. package/dist/perf/index.d.ts +17 -0
  340. package/dist/perf/index.d.ts.map +1 -0
  341. package/dist/perf/index.js +13 -0
  342. package/dist/perf/index.js.map +1 -0
  343. package/dist/perf/render-timer.d.ts +91 -0
  344. package/dist/perf/render-timer.d.ts.map +1 -0
  345. package/dist/perf/render-timer.js +136 -0
  346. package/dist/perf/render-timer.js.map +1 -0
  347. package/dist/perf/reporter.d.ts +127 -0
  348. package/dist/perf/reporter.d.ts.map +1 -0
  349. package/dist/perf/reporter.js +241 -0
  350. package/dist/perf/reporter.js.map +1 -0
  351. package/dist/perf/web-vitals.d.ts +112 -0
  352. package/dist/perf/web-vitals.d.ts.map +1 -0
  353. package/dist/perf/web-vitals.js +268 -0
  354. package/dist/perf/web-vitals.js.map +1 -0
  355. package/dist/registry.d.ts +64 -0
  356. package/dist/registry.d.ts.map +1 -0
  357. package/dist/registry.js +126 -0
  358. package/dist/registry.js.map +1 -0
  359. package/dist/render/BehaviorSurfaceProvider.d.ts +66 -0
  360. package/dist/render/BehaviorSurfaceProvider.d.ts.map +1 -0
  361. package/dist/render/BehaviorSurfaceProvider.js +185 -0
  362. package/dist/render/BehaviorSurfaceProvider.js.map +1 -0
  363. package/dist/render/BlockErrorBoundary.d.ts +27 -0
  364. package/dist/render/BlockErrorBoundary.d.ts.map +1 -0
  365. package/dist/render/BlockErrorBoundary.js +41 -0
  366. package/dist/render/BlockErrorBoundary.js.map +1 -0
  367. package/dist/render/DataBoundSurfaceRenderer.d.ts +79 -0
  368. package/dist/render/DataBoundSurfaceRenderer.d.ts.map +1 -0
  369. package/dist/render/DataBoundSurfaceRenderer.js +998 -0
  370. package/dist/render/DataBoundSurfaceRenderer.js.map +1 -0
  371. package/dist/render/DynamicBlockWrapper.d.ts +24 -0
  372. package/dist/render/DynamicBlockWrapper.d.ts.map +1 -0
  373. package/dist/render/DynamicBlockWrapper.js +117 -0
  374. package/dist/render/DynamicBlockWrapper.js.map +1 -0
  375. package/dist/render/appearance-resolver.d.ts +51 -0
  376. package/dist/render/appearance-resolver.d.ts.map +1 -0
  377. package/dist/render/appearance-resolver.js +78 -0
  378. package/dist/render/appearance-resolver.js.map +1 -0
  379. package/dist/render/capability-gate.d.ts +70 -0
  380. package/dist/render/capability-gate.d.ts.map +1 -0
  381. package/dist/render/capability-gate.js +94 -0
  382. package/dist/render/capability-gate.js.map +1 -0
  383. package/dist/render/conditional-states-css.d.ts +42 -0
  384. package/dist/render/conditional-states-css.d.ts.map +1 -0
  385. package/dist/render/conditional-states-css.js +82 -0
  386. package/dist/render/conditional-states-css.js.map +1 -0
  387. package/dist/render/connections-context.d.ts +32 -0
  388. package/dist/render/connections-context.d.ts.map +1 -0
  389. package/dist/render/connections-context.js +34 -0
  390. package/dist/render/connections-context.js.map +1 -0
  391. package/dist/render/dark-theme-css.d.ts +37 -0
  392. package/dist/render/dark-theme-css.d.ts.map +1 -0
  393. package/dist/render/dark-theme-css.js +67 -0
  394. package/dist/render/dark-theme-css.js.map +1 -0
  395. package/dist/render/data-binding-types.d.ts +192 -0
  396. package/dist/render/data-binding-types.d.ts.map +1 -0
  397. package/dist/render/data-binding-types.js +11 -0
  398. package/dist/render/data-binding-types.js.map +1 -0
  399. package/dist/render/data-cache.d.ts +31 -0
  400. package/dist/render/data-cache.d.ts.map +1 -0
  401. package/dist/render/data-cache.js +37 -0
  402. package/dist/render/data-cache.js.map +1 -0
  403. package/dist/render/derive-dark-theme.d.ts +18 -0
  404. package/dist/render/derive-dark-theme.d.ts.map +1 -0
  405. package/dist/render/derive-dark-theme.js +18 -0
  406. package/dist/render/derive-dark-theme.js.map +1 -0
  407. package/dist/render/dynamic-artifact-context.d.ts +78 -0
  408. package/dist/render/dynamic-artifact-context.d.ts.map +1 -0
  409. package/dist/render/dynamic-artifact-context.js +89 -0
  410. package/dist/render/dynamic-artifact-context.js.map +1 -0
  411. package/dist/render/dynamic-block-loader.d.ts +81 -0
  412. package/dist/render/dynamic-block-loader.d.ts.map +1 -0
  413. package/dist/render/dynamic-block-loader.js +197 -0
  414. package/dist/render/dynamic-block-loader.js.map +1 -0
  415. package/dist/render/endpoint.d.ts +19 -0
  416. package/dist/render/endpoint.d.ts.map +1 -0
  417. package/dist/render/endpoint.js +109 -0
  418. package/dist/render/endpoint.js.map +1 -0
  419. package/dist/render/entity-facade-context.d.ts +35 -0
  420. package/dist/render/entity-facade-context.d.ts.map +1 -0
  421. package/dist/render/entity-facade-context.js +37 -0
  422. package/dist/render/entity-facade-context.js.map +1 -0
  423. package/dist/render/group-states-css.d.ts +42 -0
  424. package/dist/render/group-states-css.d.ts.map +1 -0
  425. package/dist/render/group-states-css.js +73 -0
  426. package/dist/render/group-states-css.js.map +1 -0
  427. package/dist/render/hooks/useSurfaceEvents.d.ts +9 -0
  428. package/dist/render/hooks/useSurfaceEvents.d.ts.map +1 -0
  429. package/dist/render/hooks/useSurfaceEvents.js +9 -0
  430. package/dist/render/hooks/useSurfaceEvents.js.map +1 -0
  431. package/dist/render/hooks/useSurfaceId.d.ts +9 -0
  432. package/dist/render/hooks/useSurfaceId.d.ts.map +1 -0
  433. package/dist/render/hooks/useSurfaceId.js +9 -0
  434. package/dist/render/hooks/useSurfaceId.js.map +1 -0
  435. package/dist/render/index.d.ts +49 -0
  436. package/dist/render/index.d.ts.map +1 -0
  437. package/dist/render/index.js +61 -0
  438. package/dist/render/index.js.map +1 -0
  439. package/dist/render/interaction-rule-engine.d.ts +13 -0
  440. package/dist/render/interaction-rule-engine.d.ts.map +1 -0
  441. package/dist/render/interaction-rule-engine.js +47 -0
  442. package/dist/render/interaction-rule-engine.js.map +1 -0
  443. package/dist/render/keyframes-css.d.ts +32 -0
  444. package/dist/render/keyframes-css.d.ts.map +1 -0
  445. package/dist/render/keyframes-css.js +44 -0
  446. package/dist/render/keyframes-css.js.map +1 -0
  447. package/dist/render/query-state.d.ts +4 -0
  448. package/dist/render/query-state.d.ts.map +1 -0
  449. package/dist/render/query-state.js +70 -0
  450. package/dist/render/query-state.js.map +1 -0
  451. package/dist/render/renderer.d.ts +45 -0
  452. package/dist/render/renderer.d.ts.map +1 -0
  453. package/dist/render/renderer.js +937 -0
  454. package/dist/render/renderer.js.map +1 -0
  455. package/dist/render/resolve-expressions.d.ts +38 -0
  456. package/dist/render/resolve-expressions.d.ts.map +1 -0
  457. package/dist/render/resolve-expressions.js +309 -0
  458. package/dist/render/resolve-expressions.js.map +1 -0
  459. package/dist/render/responsive-style-css.d.ts +43 -0
  460. package/dist/render/responsive-style-css.d.ts.map +1 -0
  461. package/dist/render/responsive-style-css.js +123 -0
  462. package/dist/render/responsive-style-css.js.map +1 -0
  463. package/dist/render/responsive.d.ts +50 -0
  464. package/dist/render/responsive.d.ts.map +1 -0
  465. package/dist/render/responsive.js +99 -0
  466. package/dist/render/responsive.js.map +1 -0
  467. package/dist/render/scoped-css.d.ts +72 -0
  468. package/dist/render/scoped-css.d.ts.map +1 -0
  469. package/dist/render/scoped-css.js +102 -0
  470. package/dist/render/scoped-css.js.map +1 -0
  471. package/dist/render/shell-selection.d.ts +70 -0
  472. package/dist/render/shell-selection.d.ts.map +1 -0
  473. package/dist/render/shell-selection.js +117 -0
  474. package/dist/render/shell-selection.js.map +1 -0
  475. package/dist/render/states-css.d.ts +33 -0
  476. package/dist/render/states-css.d.ts.map +1 -0
  477. package/dist/render/states-css.js +63 -0
  478. package/dist/render/states-css.js.map +1 -0
  479. package/dist/render/surface-data-context.d.ts +19 -0
  480. package/dist/render/surface-data-context.d.ts.map +1 -0
  481. package/dist/render/surface-data-context.js +21 -0
  482. package/dist/render/surface-data-context.js.map +1 -0
  483. package/dist/render/surface-event-bus.d.ts +20 -0
  484. package/dist/render/surface-event-bus.d.ts.map +1 -0
  485. package/dist/render/surface-event-bus.js +68 -0
  486. package/dist/render/surface-event-bus.js.map +1 -0
  487. package/dist/render/surface-event-context.d.ts +12 -0
  488. package/dist/render/surface-event-context.d.ts.map +1 -0
  489. package/dist/render/surface-event-context.js +12 -0
  490. package/dist/render/surface-event-context.js.map +1 -0
  491. package/dist/render/surface-id-context.d.ts +9 -0
  492. package/dist/render/surface-id-context.d.ts.map +1 -0
  493. package/dist/render/surface-id-context.js +9 -0
  494. package/dist/render/surface-id-context.js.map +1 -0
  495. package/dist/render/theme-utils.d.ts +15 -0
  496. package/dist/render/theme-utils.d.ts.map +1 -0
  497. package/dist/render/theme-utils.js +15 -0
  498. package/dist/render/theme-utils.js.map +1 -0
  499. package/dist/render/types.d.ts +283 -0
  500. package/dist/render/types.d.ts.map +1 -0
  501. package/dist/render/types.js +9 -0
  502. package/dist/render/types.js.map +1 -0
  503. package/dist/render/visibility-css.d.ts +43 -0
  504. package/dist/render/visibility-css.d.ts.map +1 -0
  505. package/dist/render/visibility-css.js +119 -0
  506. package/dist/render/visibility-css.js.map +1 -0
  507. package/dist/render/width-scope.d.ts +35 -0
  508. package/dist/render/width-scope.d.ts.map +1 -0
  509. package/dist/render/width-scope.js +44 -0
  510. package/dist/render/width-scope.js.map +1 -0
  511. package/dist/render/write-only-sources.d.ts +34 -0
  512. package/dist/render/write-only-sources.d.ts.map +1 -0
  513. package/dist/render/write-only-sources.js +99 -0
  514. package/dist/render/write-only-sources.js.map +1 -0
  515. package/dist/routing/index.d.ts +15 -0
  516. package/dist/routing/index.d.ts.map +1 -0
  517. package/dist/routing/index.js +15 -0
  518. package/dist/routing/index.js.map +1 -0
  519. package/dist/routing/router.d.ts +43 -0
  520. package/dist/routing/router.d.ts.map +1 -0
  521. package/dist/routing/router.js +218 -0
  522. package/dist/routing/router.js.map +1 -0
  523. package/dist/routing/types.d.ts +125 -0
  524. package/dist/routing/types.d.ts.map +1 -0
  525. package/dist/routing/types.js +9 -0
  526. package/dist/routing/types.js.map +1 -0
  527. package/dist/seo/generator.d.ts +40 -0
  528. package/dist/seo/generator.d.ts.map +1 -0
  529. package/dist/seo/generator.js +236 -0
  530. package/dist/seo/generator.js.map +1 -0
  531. package/dist/seo/index.d.ts +15 -0
  532. package/dist/seo/index.d.ts.map +1 -0
  533. package/dist/seo/index.js +15 -0
  534. package/dist/seo/index.js.map +1 -0
  535. package/dist/seo/types.d.ts +182 -0
  536. package/dist/seo/types.d.ts.map +1 -0
  537. package/dist/seo/types.js +9 -0
  538. package/dist/seo/types.js.map +1 -0
  539. package/dist/state/index.d.ts +16 -0
  540. package/dist/state/index.d.ts.map +1 -0
  541. package/dist/state/index.js +16 -0
  542. package/dist/state/index.js.map +1 -0
  543. package/dist/state/manager.d.ts +34 -0
  544. package/dist/state/manager.d.ts.map +1 -0
  545. package/dist/state/manager.js +81 -0
  546. package/dist/state/manager.js.map +1 -0
  547. package/dist/state/store.d.ts +41 -0
  548. package/dist/state/store.d.ts.map +1 -0
  549. package/dist/state/store.js +145 -0
  550. package/dist/state/store.js.map +1 -0
  551. package/dist/state/types.d.ts +108 -0
  552. package/dist/state/types.d.ts.map +1 -0
  553. package/dist/state/types.js +9 -0
  554. package/dist/state/types.js.map +1 -0
  555. package/dist/surface/expression.d.ts +66 -0
  556. package/dist/surface/expression.d.ts.map +1 -0
  557. package/dist/surface/expression.js +179 -0
  558. package/dist/surface/expression.js.map +1 -0
  559. package/dist/surface/index.d.ts +33 -0
  560. package/dist/surface/index.d.ts.map +1 -0
  561. package/dist/surface/index.js +25 -0
  562. package/dist/surface/index.js.map +1 -0
  563. package/dist/surface/interpreter.d.ts +97 -0
  564. package/dist/surface/interpreter.d.ts.map +1 -0
  565. package/dist/surface/interpreter.js +231 -0
  566. package/dist/surface/interpreter.js.map +1 -0
  567. package/dist/surface/layout.d.ts +55 -0
  568. package/dist/surface/layout.d.ts.map +1 -0
  569. package/dist/surface/layout.js +288 -0
  570. package/dist/surface/layout.js.map +1 -0
  571. package/dist/surface/output.d.ts +91 -0
  572. package/dist/surface/output.d.ts.map +1 -0
  573. package/dist/surface/output.js +104 -0
  574. package/dist/surface/output.js.map +1 -0
  575. package/dist/surface/primitives.d.ts +181 -0
  576. package/dist/surface/primitives.d.ts.map +1 -0
  577. package/dist/surface/primitives.js +339 -0
  578. package/dist/surface/primitives.js.map +1 -0
  579. package/dist/surface/renderer.d.ts +97 -0
  580. package/dist/surface/renderer.d.ts.map +1 -0
  581. package/dist/surface/renderer.js +190 -0
  582. package/dist/surface/renderer.js.map +1 -0
  583. package/dist/surface/schemas.d.ts +182 -0
  584. package/dist/surface/schemas.d.ts.map +1 -0
  585. package/dist/surface/schemas.js +142 -0
  586. package/dist/surface/schemas.js.map +1 -0
  587. package/dist/surface/transforms.d.ts +145 -0
  588. package/dist/surface/transforms.d.ts.map +1 -0
  589. package/dist/surface/transforms.js +120 -0
  590. package/dist/surface/transforms.js.map +1 -0
  591. package/dist/surface/types.d.ts +161 -0
  592. package/dist/surface/types.d.ts.map +1 -0
  593. package/dist/surface/types.js +51 -0
  594. package/dist/surface/types.js.map +1 -0
  595. package/dist/surface/validation.d.ts +124 -0
  596. package/dist/surface/validation.d.ts.map +1 -0
  597. package/dist/surface/validation.js +147 -0
  598. package/dist/surface/validation.js.map +1 -0
  599. package/dist/validator.d.ts +56 -0
  600. package/dist/validator.d.ts.map +1 -0
  601. package/dist/validator.js +100 -0
  602. package/dist/validator.js.map +1 -0
  603. package/package.json +105 -3
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Focus Management Utilities
3
+ *
4
+ * Provides focus trapping, focus restoration, and skip-link helpers
5
+ * for accessible modal dialogs, drawers, and navigation patterns.
6
+ * All DOM operations are SSR-safe.
7
+ *
8
+ * @module @pwfabric/runtime/a11y/focus
9
+ */
10
+ /** Configuration for a focus trap */
11
+ export interface FocusTrapConfig {
12
+ /** The container element to trap focus within */
13
+ container: HTMLElement | null;
14
+ /** Initial element to focus, or a CSS selector to find it */
15
+ initialFocus?: HTMLElement | string;
16
+ /** Whether to return focus to the previously focused element on deactivate (default true) */
17
+ returnFocus?: boolean;
18
+ /** Whether pressing Escape deactivates the trap (default true) */
19
+ escapeDeactivates?: boolean;
20
+ }
21
+ /**
22
+ * Manages focus trapping within a container element.
23
+ *
24
+ * When activated, Tab and Shift+Tab keypresses are intercepted to
25
+ * keep focus cycling within the container's focusable elements.
26
+ * Optionally deactivates on Escape key press.
27
+ *
28
+ * Used for modal dialogs, slide-over panels, and other overlay patterns
29
+ * that require focus to remain within the component for accessibility.
30
+ */
31
+ export declare class FocusTrapManager {
32
+ private active;
33
+ private config;
34
+ private previousFocus;
35
+ private readonly boundHandleKeyDown;
36
+ constructor();
37
+ /**
38
+ * Activate the focus trap with the given configuration.
39
+ *
40
+ * Saves the currently focused element, attaches a keydown listener,
41
+ * and moves focus to the initial focus target (if specified) or the
42
+ * first focusable element in the container.
43
+ *
44
+ * @param config - Focus trap configuration
45
+ */
46
+ activate(config: FocusTrapConfig): void;
47
+ /**
48
+ * Deactivate the focus trap and optionally return focus to the
49
+ * previously focused element.
50
+ */
51
+ deactivate(): void;
52
+ /**
53
+ * Check whether the focus trap is currently active.
54
+ *
55
+ * @returns `true` if the trap is active
56
+ */
57
+ isActive(): boolean;
58
+ /**
59
+ * Dispose of the focus trap, deactivating it and cleaning up resources.
60
+ */
61
+ dispose(): void;
62
+ /**
63
+ * Resolve the initial focus target from the config.
64
+ * Handles both HTMLElement references and CSS selector strings.
65
+ */
66
+ private resolveInitialFocus;
67
+ /**
68
+ * Get all focusable elements within the trap container, sorted in DOM order.
69
+ *
70
+ * @returns Array of focusable HTMLElements
71
+ */
72
+ private getFocusableElements;
73
+ /**
74
+ * Handle keydown events to trap Tab focus and optionally deactivate on Escape.
75
+ */
76
+ private handleKeyDown;
77
+ }
78
+ /**
79
+ * Manages a stack of focus positions for nested focus contexts.
80
+ *
81
+ * Useful when opening nested dialogs or panels where each level
82
+ * needs to save and restore the previous focus target.
83
+ */
84
+ export declare class FocusRestorer {
85
+ private stack;
86
+ constructor();
87
+ /**
88
+ * Save the currently focused element onto the stack.
89
+ */
90
+ save(): void;
91
+ /**
92
+ * Pop the most recently saved element from the stack and restore focus to it.
93
+ */
94
+ restore(): void;
95
+ }
96
+ /**
97
+ * Create a skip-to-content link configuration.
98
+ *
99
+ * Returns the href, label, and click handler for a skip link that
100
+ * jumps focus to the element with the specified ID. The target element
101
+ * is given a `tabindex` of `-1` if it does not already have one so
102
+ * it can receive programmatic focus.
103
+ *
104
+ * @param targetId - The ID of the element to skip to
105
+ * @returns Skip link configuration object
106
+ */
107
+ export declare function createSkipLink(targetId: string): {
108
+ href: string;
109
+ label: string;
110
+ handleClick: (e: Event) => void;
111
+ };
112
+ /**
113
+ * Create a new FocusTrapManager instance.
114
+ *
115
+ * @returns A new FocusTrapManager
116
+ */
117
+ export declare function createFocusTrap(): FocusTrapManager;
118
+ /**
119
+ * Create a new FocusRestorer instance.
120
+ *
121
+ * @returns A new FocusRestorer
122
+ */
123
+ export declare function createFocusRestorer(): FocusRestorer;
124
+ //# sourceMappingURL=focus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus.d.ts","sourceRoot":"","sources":["../../src/a11y/focus.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,qCAAqC;AACrC,MAAM,WAAW,eAAe;IAC9B,iDAAiD;IACjD,SAAS,EAAE,WAAW,GAAG,IAAI,CAAA;IAC7B,6DAA6D;IAC7D,YAAY,CAAC,EAAE,WAAW,GAAG,MAAM,CAAA;IACnC,6FAA6F;IAC7F,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AA4BD;;;;;;;;;GASG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAgC;;IASnE;;;;;;;;OAQG;IACH,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IA8BvC;;;OAGG;IACH,UAAU,IAAI,IAAI;IAelB;;;;OAIG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,OAAO,IAAI,IAAI;IAQf;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,OAAO,CAAC,aAAa;CA0CtB;AAMD;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAW;;IAMxB;;OAEG;IACH,IAAI,IAAI,IAAI;IASZ;;OAEG;IACH,OAAO,IAAI,IAAI;CAQhB;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG;IAChD,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;CAChC,CAmBA;AAMD;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,gBAAgB,CAElD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,CAEnD"}
@@ -0,0 +1,282 @@
1
+ /**
2
+ * Focus Management Utilities
3
+ *
4
+ * Provides focus trapping, focus restoration, and skip-link helpers
5
+ * for accessible modal dialogs, drawers, and navigation patterns.
6
+ * All DOM operations are SSR-safe.
7
+ *
8
+ * @module @pwfabric/runtime/a11y/focus
9
+ */
10
+ // ============================================================
11
+ // CONSTANTS
12
+ // ============================================================
13
+ /**
14
+ * Selector for elements that can receive focus.
15
+ * Covers interactive HTML elements and elements with explicit tabindex.
16
+ */
17
+ const FOCUSABLE_SELECTOR = [
18
+ 'a[href]',
19
+ 'area[href]',
20
+ 'button:not([disabled])',
21
+ 'input:not([disabled])',
22
+ 'select:not([disabled])',
23
+ 'textarea:not([disabled])',
24
+ '[tabindex]:not([tabindex="-1"])',
25
+ '[contenteditable]',
26
+ 'details > summary',
27
+ 'audio[controls]',
28
+ 'video[controls]',
29
+ ].join(', ');
30
+ // ============================================================
31
+ // FOCUS TRAP MANAGER
32
+ // ============================================================
33
+ /**
34
+ * Manages focus trapping within a container element.
35
+ *
36
+ * When activated, Tab and Shift+Tab keypresses are intercepted to
37
+ * keep focus cycling within the container's focusable elements.
38
+ * Optionally deactivates on Escape key press.
39
+ *
40
+ * Used for modal dialogs, slide-over panels, and other overlay patterns
41
+ * that require focus to remain within the component for accessibility.
42
+ */
43
+ export class FocusTrapManager {
44
+ active;
45
+ config;
46
+ previousFocus;
47
+ boundHandleKeyDown;
48
+ constructor() {
49
+ this.active = false;
50
+ this.config = null;
51
+ this.previousFocus = null;
52
+ this.boundHandleKeyDown = this.handleKeyDown.bind(this);
53
+ }
54
+ /**
55
+ * Activate the focus trap with the given configuration.
56
+ *
57
+ * Saves the currently focused element, attaches a keydown listener,
58
+ * and moves focus to the initial focus target (if specified) or the
59
+ * first focusable element in the container.
60
+ *
61
+ * @param config - Focus trap configuration
62
+ */
63
+ activate(config) {
64
+ if (typeof document === 'undefined')
65
+ return;
66
+ if (!config.container)
67
+ return;
68
+ if (this.active) {
69
+ this.deactivate();
70
+ }
71
+ this.config = {
72
+ ...config,
73
+ returnFocus: config.returnFocus ?? true,
74
+ escapeDeactivates: config.escapeDeactivates ?? true,
75
+ };
76
+ this.previousFocus = document.activeElement;
77
+ this.active = true;
78
+ document.addEventListener('keydown', this.boundHandleKeyDown);
79
+ // Determine and apply initial focus
80
+ const initialTarget = this.resolveInitialFocus();
81
+ if (initialTarget) {
82
+ initialTarget.focus();
83
+ }
84
+ else {
85
+ // Fall back to the first focusable element
86
+ const focusable = this.getFocusableElements();
87
+ if (focusable.length > 0) {
88
+ focusable[0]?.focus();
89
+ }
90
+ }
91
+ }
92
+ /**
93
+ * Deactivate the focus trap and optionally return focus to the
94
+ * previously focused element.
95
+ */
96
+ deactivate() {
97
+ if (typeof document === 'undefined')
98
+ return;
99
+ if (!this.active)
100
+ return;
101
+ this.active = false;
102
+ document.removeEventListener('keydown', this.boundHandleKeyDown);
103
+ if (this.config?.returnFocus && this.previousFocus instanceof HTMLElement) {
104
+ this.previousFocus.focus();
105
+ }
106
+ this.config = null;
107
+ this.previousFocus = null;
108
+ }
109
+ /**
110
+ * Check whether the focus trap is currently active.
111
+ *
112
+ * @returns `true` if the trap is active
113
+ */
114
+ isActive() {
115
+ return this.active;
116
+ }
117
+ /**
118
+ * Dispose of the focus trap, deactivating it and cleaning up resources.
119
+ */
120
+ dispose() {
121
+ this.deactivate();
122
+ }
123
+ // ============================================================
124
+ // PRIVATE METHODS
125
+ // ============================================================
126
+ /**
127
+ * Resolve the initial focus target from the config.
128
+ * Handles both HTMLElement references and CSS selector strings.
129
+ */
130
+ resolveInitialFocus() {
131
+ if (!this.config?.initialFocus || !this.config.container)
132
+ return null;
133
+ if (typeof this.config.initialFocus === 'string') {
134
+ return this.config.container.querySelector(this.config.initialFocus);
135
+ }
136
+ return this.config.initialFocus;
137
+ }
138
+ /**
139
+ * Get all focusable elements within the trap container, sorted in DOM order.
140
+ *
141
+ * @returns Array of focusable HTMLElements
142
+ */
143
+ getFocusableElements() {
144
+ if (!this.config?.container)
145
+ return [];
146
+ const elements = this.config.container.querySelectorAll(FOCUSABLE_SELECTOR);
147
+ return Array.from(elements).filter((el) => {
148
+ // Filter out elements that are not visible
149
+ return el.offsetParent !== null || el.offsetWidth > 0 || el.offsetHeight > 0;
150
+ });
151
+ }
152
+ /**
153
+ * Handle keydown events to trap Tab focus and optionally deactivate on Escape.
154
+ */
155
+ handleKeyDown(event) {
156
+ if (!this.active || !this.config)
157
+ return;
158
+ // Handle Escape
159
+ if (event.key === 'Escape' && this.config.escapeDeactivates) {
160
+ event.preventDefault();
161
+ this.deactivate();
162
+ return;
163
+ }
164
+ // Handle Tab / Shift+Tab
165
+ if (event.key !== 'Tab')
166
+ return;
167
+ const focusable = this.getFocusableElements();
168
+ if (focusable.length === 0) {
169
+ event.preventDefault();
170
+ return;
171
+ }
172
+ const firstElement = focusable[0];
173
+ const lastElement = focusable[focusable.length - 1];
174
+ if (event.shiftKey) {
175
+ // Shift+Tab: wrap from first to last
176
+ if (document.activeElement === firstElement ||
177
+ !this.config.container?.contains(document.activeElement)) {
178
+ event.preventDefault();
179
+ lastElement?.focus();
180
+ }
181
+ }
182
+ else {
183
+ // Tab: wrap from last to first
184
+ if (document.activeElement === lastElement ||
185
+ !this.config.container?.contains(document.activeElement)) {
186
+ event.preventDefault();
187
+ firstElement?.focus();
188
+ }
189
+ }
190
+ }
191
+ }
192
+ // ============================================================
193
+ // FOCUS RESTORER
194
+ // ============================================================
195
+ /**
196
+ * Manages a stack of focus positions for nested focus contexts.
197
+ *
198
+ * Useful when opening nested dialogs or panels where each level
199
+ * needs to save and restore the previous focus target.
200
+ */
201
+ export class FocusRestorer {
202
+ stack;
203
+ constructor() {
204
+ this.stack = [];
205
+ }
206
+ /**
207
+ * Save the currently focused element onto the stack.
208
+ */
209
+ save() {
210
+ if (typeof document === 'undefined')
211
+ return;
212
+ const activeElement = document.activeElement;
213
+ if (activeElement) {
214
+ this.stack.push(activeElement);
215
+ }
216
+ }
217
+ /**
218
+ * Pop the most recently saved element from the stack and restore focus to it.
219
+ */
220
+ restore() {
221
+ if (typeof document === 'undefined')
222
+ return;
223
+ const element = this.stack.pop();
224
+ if (element instanceof HTMLElement) {
225
+ element.focus();
226
+ }
227
+ }
228
+ }
229
+ // ============================================================
230
+ // SKIP LINK HELPER
231
+ // ============================================================
232
+ /**
233
+ * Create a skip-to-content link configuration.
234
+ *
235
+ * Returns the href, label, and click handler for a skip link that
236
+ * jumps focus to the element with the specified ID. The target element
237
+ * is given a `tabindex` of `-1` if it does not already have one so
238
+ * it can receive programmatic focus.
239
+ *
240
+ * @param targetId - The ID of the element to skip to
241
+ * @returns Skip link configuration object
242
+ */
243
+ export function createSkipLink(targetId) {
244
+ return {
245
+ href: `#${targetId}`,
246
+ label: 'Skip to content',
247
+ handleClick: (e) => {
248
+ if (typeof document === 'undefined')
249
+ return;
250
+ e.preventDefault();
251
+ const target = document.getElementById(targetId);
252
+ if (target) {
253
+ // Ensure the element can receive focus
254
+ if (!target.hasAttribute('tabindex')) {
255
+ target.setAttribute('tabindex', '-1');
256
+ }
257
+ target.focus();
258
+ target.scrollIntoView({ behavior: 'smooth' });
259
+ }
260
+ },
261
+ };
262
+ }
263
+ // ============================================================
264
+ // FACTORY FUNCTIONS
265
+ // ============================================================
266
+ /**
267
+ * Create a new FocusTrapManager instance.
268
+ *
269
+ * @returns A new FocusTrapManager
270
+ */
271
+ export function createFocusTrap() {
272
+ return new FocusTrapManager();
273
+ }
274
+ /**
275
+ * Create a new FocusRestorer instance.
276
+ *
277
+ * @returns A new FocusRestorer
278
+ */
279
+ export function createFocusRestorer() {
280
+ return new FocusRestorer();
281
+ }
282
+ //# sourceMappingURL=focus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus.js","sourceRoot":"","sources":["../../src/a11y/focus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Accessibility (a11y) Module
3
+ *
4
+ * Provides runtime accessibility utilities for the PWFabric platform:
5
+ * - Screen reader announcements via ARIA live regions
6
+ * - Focus trapping, restoration, and skip links
7
+ * - Keyboard navigation for composite widgets
8
+ * - WCAG 2.0 color contrast checking
9
+ *
10
+ * All DOM operations are SSR-safe (no-op when `document` is unavailable).
11
+ *
12
+ * @module @pwfabric/runtime/a11y
13
+ */
14
+ export type { AnnouncementLevel, LiveRegionConfig } from './announcer.js';
15
+ export { LiveRegionAnnouncer, createAnnouncer } from './announcer.js';
16
+ export type { FocusTrapConfig } from './focus.js';
17
+ export { FocusTrapManager, FocusRestorer, createSkipLink, createFocusTrap, createFocusRestorer, } from './focus.js';
18
+ export type { ArrowDirection, KeyboardNavConfig } from './keyboard.js';
19
+ export { KeyboardNavigationManager, RovingTabIndex, createKeyboardNav, createRovingTabIndex, } from './keyboard.js';
20
+ export type { ContrastResult } from './contrast.js';
21
+ export { hexToRgb, relativeLuminance, contrastRatio, checkContrast, meetsWCAG } from './contrast.js';
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/a11y/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACzE,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGrE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,eAAe,EACf,mBAAmB,GACpB,MAAM,YAAY,CAAA;AAGnB,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtE,OAAO,EACL,yBAAyB,EACzB,cAAc,EACd,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,eAAe,CAAA;AAGtB,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Accessibility (a11y) Module
3
+ *
4
+ * Provides runtime accessibility utilities for the PWFabric platform:
5
+ * - Screen reader announcements via ARIA live regions
6
+ * - Focus trapping, restoration, and skip links
7
+ * - Keyboard navigation for composite widgets
8
+ * - WCAG 2.0 color contrast checking
9
+ *
10
+ * All DOM operations are SSR-safe (no-op when `document` is unavailable).
11
+ *
12
+ * @module @pwfabric/runtime/a11y
13
+ */
14
+ export { LiveRegionAnnouncer, createAnnouncer } from './announcer.js';
15
+ export { FocusTrapManager, FocusRestorer, createSkipLink, createFocusTrap, createFocusRestorer, } from './focus.js';
16
+ export { KeyboardNavigationManager, RovingTabIndex, createKeyboardNav, createRovingTabIndex, } from './keyboard.js';
17
+ export { hexToRgb, relativeLuminance, contrastRatio, checkContrast, meetsWCAG } from './contrast.js';
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/a11y/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAIrE,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,eAAe,EACf,mBAAmB,GACpB,MAAM,YAAY,CAAA;AAInB,OAAO,EACL,yBAAyB,EACzB,cAAc,EACd,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,eAAe,CAAA;AAItB,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Keyboard Navigation Manager
3
+ *
4
+ * Provides arrow-key navigation for composite widgets (tabs, menus,
5
+ * listboxes) and roving tabindex management. All DOM operations are
6
+ * SSR-safe.
7
+ *
8
+ * @module @pwfabric/runtime/a11y/keyboard
9
+ */
10
+ /** Direction(s) in which arrow key navigation operates */
11
+ export type ArrowDirection = 'horizontal' | 'vertical' | 'both';
12
+ /** Configuration for keyboard navigation */
13
+ export interface KeyboardNavConfig {
14
+ /** Container element holding navigable items */
15
+ container: HTMLElement | null;
16
+ /** Direction of arrow key navigation */
17
+ direction: ArrowDirection;
18
+ /** Whether navigation wraps around at boundaries (default true) */
19
+ loop?: boolean;
20
+ /** CSS selector for navigable items (default '[role="option"], [role="tab"], button, a') */
21
+ selector?: string;
22
+ }
23
+ /**
24
+ * Manages keyboard navigation within a composite widget.
25
+ *
26
+ * Listens for arrow key events on a container and moves focus
27
+ * between child items matching a configurable selector. Supports
28
+ * horizontal, vertical, or both directional navigation with
29
+ * optional looping at boundaries.
30
+ */
31
+ export declare class KeyboardNavigationManager {
32
+ private config;
33
+ private currentIndex;
34
+ private readonly boundHandleKeyDown;
35
+ constructor();
36
+ /**
37
+ * Activate keyboard navigation on the given container.
38
+ *
39
+ * @param config - Keyboard navigation configuration
40
+ */
41
+ activate(config: KeyboardNavConfig): void;
42
+ /**
43
+ * Deactivate keyboard navigation and remove event listeners.
44
+ */
45
+ deactivate(): void;
46
+ /**
47
+ * Move focus to the next item in the navigation order.
48
+ */
49
+ focusNext(): void;
50
+ /**
51
+ * Move focus to the previous item in the navigation order.
52
+ */
53
+ focusPrevious(): void;
54
+ /**
55
+ * Move focus to the first item.
56
+ */
57
+ focusFirst(): void;
58
+ /**
59
+ * Move focus to the last item.
60
+ */
61
+ focusLast(): void;
62
+ /**
63
+ * Get the current focused item index.
64
+ *
65
+ * @returns The zero-based index of the currently focused item
66
+ */
67
+ getCurrentIndex(): number;
68
+ /**
69
+ * Dispose of the keyboard navigation manager, removing all listeners.
70
+ */
71
+ dispose(): void;
72
+ /**
73
+ * Handle keydown events for arrow key navigation and Home/End support.
74
+ */
75
+ private handleKeyDown;
76
+ /**
77
+ * Query navigable items from the container, filtered to visible elements.
78
+ *
79
+ * @returns Array of focusable HTMLElements within the container
80
+ */
81
+ private getItems;
82
+ }
83
+ /**
84
+ * Manages roving tabindex for composite widgets.
85
+ *
86
+ * In the roving tabindex pattern, only one item within a group
87
+ * has `tabindex="0"` (making it tabbable), while all other items
88
+ * have `tabindex="-1"`. This allows the group to participate in
89
+ * the page tab order as a single stop, with arrow keys used to
90
+ * navigate between items within the group.
91
+ *
92
+ * @see https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_roving_tabindex
93
+ */
94
+ export declare class RovingTabIndex {
95
+ private container;
96
+ private selector;
97
+ /**
98
+ * @param selector - CSS selector for items managed by roving tabindex
99
+ */
100
+ constructor(selector?: string);
101
+ /**
102
+ * Attach roving tabindex management to a container.
103
+ *
104
+ * Sets `tabindex="-1"` on all matching items except the first,
105
+ * which gets `tabindex="0"`.
106
+ *
107
+ * @param container - The container element
108
+ */
109
+ attach(container: HTMLElement): void;
110
+ /**
111
+ * Detach roving tabindex management, restoring all items to `tabindex="0"`.
112
+ */
113
+ detach(): void;
114
+ /**
115
+ * Set a specific element as the active (tabbable) item.
116
+ *
117
+ * The target receives `tabindex="0"` and all sibling items
118
+ * receive `tabindex="-1"`.
119
+ *
120
+ * @param element - The element to make active
121
+ */
122
+ setActive(element: HTMLElement): void;
123
+ /**
124
+ * Dispose of the roving tabindex manager.
125
+ */
126
+ dispose(): void;
127
+ /**
128
+ * Query managed items from the container.
129
+ */
130
+ private getItems;
131
+ }
132
+ /**
133
+ * Create a new KeyboardNavigationManager instance.
134
+ *
135
+ * @returns A new KeyboardNavigationManager
136
+ */
137
+ export declare function createKeyboardNav(): KeyboardNavigationManager;
138
+ /**
139
+ * Create a new RovingTabIndex instance.
140
+ *
141
+ * @param selector - CSS selector for managed items
142
+ * @returns A new RovingTabIndex
143
+ */
144
+ export declare function createRovingTabIndex(selector?: string): RovingTabIndex;
145
+ //# sourceMappingURL=keyboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../../src/a11y/keyboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,0DAA0D;AAC1D,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,UAAU,GAAG,MAAM,CAAA;AAE/D,4CAA4C;AAC5C,MAAM,WAAW,iBAAiB;IAChC,gDAAgD;IAChD,SAAS,EAAE,WAAW,GAAG,IAAI,CAAA;IAC7B,wCAAwC;IACxC,SAAS,EAAE,cAAc,CAAA;IACzB,mEAAmE;IACnE,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAYD;;;;;;;GAOG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAgC;;IAQnE;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAiBzC;;OAEG;IACH,UAAU,IAAI,IAAI;IAQlB;;OAEG;IACH,SAAS,IAAI,IAAI;IAmBjB;;OAEG;IACH,aAAa,IAAI,IAAI;IAmBrB;;OAEG;IACH,UAAU,IAAI,IAAI;IAQlB;;OAEG;IACH,SAAS,IAAI,IAAI;IAQjB;;;;OAIG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,OAAO,IAAI,IAAI;IAQf;;OAEG;IACH,OAAO,CAAC,aAAa;IAmDrB;;;;OAIG;IACH,OAAO,CAAC,QAAQ;CAajB;AAMD;;;;;;;;;;GAUG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,QAAQ,CAAQ;IAExB;;OAEG;gBACS,QAAQ,CAAC,EAAE,MAAM;IAK7B;;;;;;;OAOG;IACH,MAAM,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAWpC;;OAEG;IACH,MAAM,IAAI,IAAI;IAWd;;;;;;;OAOG;IACH,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IASrC;;OAEG;IACH,OAAO,IAAI,IAAI;IAQf;;OAEG;IACH,OAAO,CAAC,QAAQ;CAIjB;AAMD;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,yBAAyB,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc,CAEtE"}