@ng-prism/core 22.5.0 → 22.7.0-beta.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 (437) hide show
  1. package/README.md +13 -9
  2. package/dist/app/canvas/canvas-bg.styles.d.ts +1 -1
  3. package/dist/app/canvas/canvas-bg.styles.d.ts.map +1 -1
  4. package/dist/app/canvas/canvas-bg.styles.js +1 -1
  5. package/dist/app/canvas/canvas-overlay-tokens.d.ts +12 -0
  6. package/dist/app/canvas/canvas-overlay-tokens.d.ts.map +1 -0
  7. package/dist/app/canvas/canvas-overlay-tokens.js +52 -0
  8. package/dist/app/canvas/prism-canvas-bg-pill.component.js +2 -2
  9. package/dist/app/canvas/prism-canvas-pin-row.component.js +2 -2
  10. package/dist/app/canvas/prism-canvas-rulers.component.d.ts +2 -0
  11. package/dist/app/canvas/prism-canvas-rulers.component.d.ts.map +1 -1
  12. package/dist/app/canvas/prism-canvas-rulers.component.js +17 -12
  13. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts +25 -3
  14. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts.map +1 -1
  15. package/dist/app/canvas/prism-canvas-toolbar.component.js +154 -89
  16. package/dist/app/canvas/prism-template-popover.component.d.ts.map +1 -1
  17. package/dist/app/canvas/prism-template-popover.component.js +16 -7
  18. package/dist/app/canvas/state-chips.d.ts +50 -0
  19. package/dist/app/canvas/state-chips.d.ts.map +1 -0
  20. package/dist/app/canvas/state-chips.js +40 -0
  21. package/dist/app/component-head/head-metrics.d.ts +35 -19
  22. package/dist/app/component-head/head-metrics.d.ts.map +1 -1
  23. package/dist/app/component-head/head-metrics.js +57 -27
  24. package/dist/app/component-head/pipe-facts.d.ts +9 -0
  25. package/dist/app/component-head/pipe-facts.d.ts.map +1 -0
  26. package/dist/app/component-head/pipe-facts.js +15 -0
  27. package/dist/app/component-head/prism-component-head.component.d.ts +20 -22
  28. package/dist/app/component-head/prism-component-head.component.d.ts.map +1 -1
  29. package/dist/app/component-head/prism-component-head.component.js +85 -96
  30. package/dist/app/component-head/prism-head-gauge.component.d.ts +8 -12
  31. package/dist/app/component-head/prism-head-gauge.component.d.ts.map +1 -1
  32. package/dist/app/component-head/prism-head-gauge.component.js +51 -67
  33. package/dist/app/component-head/prism-head-info.component.d.ts +14 -2
  34. package/dist/app/component-head/prism-head-info.component.d.ts.map +1 -1
  35. package/dist/app/component-head/prism-head-info.component.js +84 -20
  36. package/dist/app/component-head/prism-stat.component.d.ts +4 -5
  37. package/dist/app/component-head/prism-stat.component.d.ts.map +1 -1
  38. package/dist/app/component-head/prism-stat.component.js +16 -12
  39. package/dist/app/component-head/service-facts.d.ts +8 -0
  40. package/dist/app/component-head/service-facts.d.ts.map +1 -0
  41. package/dist/app/component-head/service-facts.js +11 -0
  42. package/dist/app/controls/boolean-control.component.js +2 -2
  43. package/dist/app/controls/json-control.component.js +2 -2
  44. package/dist/app/controls/union-control.component.js +4 -3
  45. package/dist/app/directives/resize-value.d.ts +1 -1
  46. package/dist/app/directives/resize-value.js +1 -1
  47. package/dist/app/discovery-manifest.d.ts +2 -2
  48. package/dist/app/discovery-manifest.d.ts.map +1 -1
  49. package/dist/app/discovery-manifest.js +15 -3
  50. package/dist/app/header/header-brand.d.ts +25 -0
  51. package/dist/app/header/header-brand.d.ts.map +1 -0
  52. package/dist/app/header/header-brand.js +10 -0
  53. package/dist/app/header/prism-header.component.d.ts +2 -2
  54. package/dist/app/header/prism-header.component.d.ts.map +1 -1
  55. package/dist/app/header/prism-header.component.js +73 -57
  56. package/dist/app/icons/icon-registry.d.ts.map +1 -1
  57. package/dist/app/icons/icon-registry.js +4 -1
  58. package/dist/app/index.d.ts +12 -0
  59. package/dist/app/index.d.ts.map +1 -1
  60. package/dist/app/index.js +12 -1
  61. package/dist/app/layout-menu/prism-layout-menu.component.d.ts +3 -0
  62. package/dist/app/layout-menu/prism-layout-menu.component.d.ts.map +1 -1
  63. package/dist/app/layout-menu/prism-layout-menu.component.js +72 -58
  64. package/dist/app/overview/open-in-playground.d.ts +19 -0
  65. package/dist/app/overview/open-in-playground.d.ts.map +1 -0
  66. package/dist/app/overview/open-in-playground.js +25 -0
  67. package/dist/app/overview/overview-matrix.d.ts +85 -0
  68. package/dist/app/overview/overview-matrix.d.ts.map +1 -0
  69. package/dist/app/overview/overview-matrix.js +98 -0
  70. package/dist/app/overview/overview-visibility.d.ts +10 -2
  71. package/dist/app/overview/overview-visibility.d.ts.map +1 -1
  72. package/dist/app/overview/overview-visibility.js +14 -3
  73. package/dist/app/overview/prism-overview-cell.component.d.ts +27 -2
  74. package/dist/app/overview/prism-overview-cell.component.d.ts.map +1 -1
  75. package/dist/app/overview/prism-overview-cell.component.js +145 -28
  76. package/dist/app/overview/prism-overview-matrix.component.d.ts +29 -0
  77. package/dist/app/overview/prism-overview-matrix.component.d.ts.map +1 -0
  78. package/dist/app/overview/prism-overview-matrix.component.js +155 -0
  79. package/dist/app/overview/prism-overview.component.d.ts +4 -0
  80. package/dist/app/overview/prism-overview.component.d.ts.map +1 -1
  81. package/dist/app/overview/prism-overview.component.js +37 -14
  82. package/dist/app/page-renderer/prism-page-renderer.component.js +2 -2
  83. package/dist/app/panels/a11y/a11y-core.plugin.d.ts.map +1 -1
  84. package/dist/app/panels/a11y/a11y-core.plugin.js +0 -1
  85. package/dist/app/panels/a11y/a11y-header-badge.component.d.ts +1 -4
  86. package/dist/app/panels/a11y/a11y-header-badge.component.d.ts.map +1 -1
  87. package/dist/app/panels/a11y/a11y-header-badge.component.js +8 -19
  88. package/dist/app/panels/a11y/a11y-keyboard-overlay.component.js +2 -2
  89. package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts +1 -0
  90. package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts.map +1 -1
  91. package/dist/app/panels/a11y/a11y-overlay-host.component.js +4 -3
  92. package/dist/app/panels/a11y/a11y-panel.component.d.ts +4 -1
  93. package/dist/app/panels/a11y/a11y-panel.component.d.ts.map +1 -1
  94. package/dist/app/panels/a11y/a11y-panel.component.js +32 -54
  95. package/dist/app/panels/a11y/a11y-score.component.d.ts +8 -3
  96. package/dist/app/panels/a11y/a11y-score.component.d.ts.map +1 -1
  97. package/dist/app/panels/a11y/a11y-score.component.js +19 -35
  98. package/dist/app/panels/a11y/a11y-sr-overlay.component.js +2 -2
  99. package/dist/app/panels/a11y/a11y-sr.component.js +2 -2
  100. package/dist/app/panels/a11y/a11y-summary.d.ts.map +1 -1
  101. package/dist/app/panels/a11y/a11y-summary.js +8 -1
  102. package/dist/app/panels/a11y/a11y-tree.component.js +2 -2
  103. package/dist/app/panels/a11y/a11y-violations.component.d.ts +23 -2
  104. package/dist/app/panels/a11y/a11y-violations.component.d.ts.map +1 -1
  105. package/dist/app/panels/a11y/a11y-violations.component.js +104 -89
  106. package/dist/app/panels/a11y/severity.d.ts +9 -0
  107. package/dist/app/panels/a11y/severity.d.ts.map +1 -0
  108. package/dist/app/panels/a11y/severity.js +12 -0
  109. package/dist/app/panels/controls/controls-plugin.d.ts.map +1 -1
  110. package/dist/app/panels/controls/controls-plugin.js +1 -2
  111. package/dist/app/panels/controls/non-editable-input-types.d.ts +9 -1
  112. package/dist/app/panels/controls/non-editable-input-types.d.ts.map +1 -1
  113. package/dist/app/panels/controls/non-editable-input-types.js +18 -0
  114. package/dist/app/panels/controls/prism-controls-panel.component.d.ts +2 -1
  115. package/dist/app/panels/controls/prism-controls-panel.component.d.ts.map +1 -1
  116. package/dist/app/panels/controls/prism-controls-panel.component.js +77 -59
  117. package/dist/app/panels/events/events-plugin.d.ts.map +1 -1
  118. package/dist/app/panels/events/events-plugin.js +1 -2
  119. package/dist/app/panels/events/prism-events-panel.component.d.ts +2 -0
  120. package/dist/app/panels/events/prism-events-panel.component.d.ts.map +1 -1
  121. package/dist/app/panels/events/prism-events-panel.component.js +20 -7
  122. package/dist/app/panels/events/prism-json-node.utils.d.ts +6 -0
  123. package/dist/app/panels/events/prism-json-node.utils.d.ts.map +1 -1
  124. package/dist/app/panels/events/prism-json-node.utils.js +8 -0
  125. package/dist/app/panels/panel-host/addon-panels.d.ts +11 -0
  126. package/dist/app/panels/panel-host/addon-panels.d.ts.map +1 -0
  127. package/dist/app/panels/panel-host/addon-panels.js +12 -0
  128. package/dist/app/panels/panel-host/panel-badge.d.ts +22 -0
  129. package/dist/app/panels/panel-host/panel-badge.d.ts.map +1 -1
  130. package/dist/app/panels/panel-host/panel-badge.js +56 -11
  131. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts +4 -1
  132. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts.map +1 -1
  133. package/dist/app/panels/panel-host/prism-panel-host.component.js +36 -70
  134. package/dist/app/pseudo/pseudo-state-marker.d.ts +32 -10
  135. package/dist/app/pseudo/pseudo-state-marker.d.ts.map +1 -1
  136. package/dist/app/pseudo/pseudo-state-marker.js +83 -67
  137. package/dist/app/pseudo/pseudo-targets.d.ts +11 -0
  138. package/dist/app/pseudo/pseudo-targets.d.ts.map +1 -0
  139. package/dist/app/pseudo/pseudo-targets.js +46 -0
  140. package/dist/app/pseudo/state-fit.d.ts +28 -0
  141. package/dist/app/pseudo/state-fit.d.ts.map +1 -0
  142. package/dist/app/pseudo/state-fit.js +97 -0
  143. package/dist/app/renderer/composition.d.ts +20 -0
  144. package/dist/app/renderer/composition.d.ts.map +1 -0
  145. package/dist/app/renderer/composition.js +26 -0
  146. package/dist/app/renderer/input-bindings.d.ts +28 -0
  147. package/dist/app/renderer/input-bindings.d.ts.map +1 -0
  148. package/dist/app/renderer/input-bindings.js +42 -0
  149. package/dist/app/renderer/known-inputs.d.ts +8 -1
  150. package/dist/app/renderer/known-inputs.d.ts.map +1 -1
  151. package/dist/app/renderer/known-inputs.js +13 -5
  152. package/dist/app/renderer/prism-renderer.component.d.ts +18 -4
  153. package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
  154. package/dist/app/renderer/prism-renderer.component.js +78 -44
  155. package/dist/app/renderer/projectable-content.d.ts +8 -1
  156. package/dist/app/renderer/projectable-content.d.ts.map +1 -1
  157. package/dist/app/renderer/projectable-content.js +40 -29
  158. package/dist/app/renderer/rendered-key.d.ts +20 -6
  159. package/dist/app/renderer/rendered-key.d.ts.map +1 -1
  160. package/dist/app/renderer/rendered-key.js +25 -8
  161. package/dist/app/renderer/snippet-generator.d.ts +14 -2
  162. package/dist/app/renderer/snippet-generator.d.ts.map +1 -1
  163. package/dist/app/renderer/snippet-generator.js +138 -81
  164. package/dist/app/services/navigation-item.d.ts +10 -0
  165. package/dist/app/services/navigation-item.d.ts.map +1 -0
  166. package/dist/app/services/navigation-item.js +20 -0
  167. package/dist/app/services/navigation-item.types.d.ts +8 -0
  168. package/dist/app/services/navigation-item.types.d.ts.map +1 -1
  169. package/dist/app/services/prism-layout.service.d.ts +12 -0
  170. package/dist/app/services/prism-layout.service.d.ts.map +1 -1
  171. package/dist/app/services/prism-layout.service.js +17 -7
  172. package/dist/app/services/prism-manifest.service.d.ts +4 -0
  173. package/dist/app/services/prism-manifest.service.d.ts.map +1 -1
  174. package/dist/app/services/prism-manifest.service.js +4 -0
  175. package/dist/app/services/prism-navigation.service.d.ts +12 -0
  176. package/dist/app/services/prism-navigation.service.d.ts.map +1 -1
  177. package/dist/app/services/prism-navigation.service.js +85 -19
  178. package/dist/app/services/prism-panel.service.d.ts +7 -3
  179. package/dist/app/services/prism-panel.service.d.ts.map +1 -1
  180. package/dist/app/services/prism-panel.service.js +13 -4
  181. package/dist/app/services/prism-pseudo-state.service.d.ts +59 -14
  182. package/dist/app/services/prism-pseudo-state.service.d.ts.map +1 -1
  183. package/dist/app/services/prism-pseudo-state.service.js +86 -29
  184. package/dist/app/services/prism-renderer.service.d.ts +23 -0
  185. package/dist/app/services/prism-renderer.service.d.ts.map +1 -1
  186. package/dist/app/services/prism-renderer.service.js +77 -8
  187. package/dist/app/services/prism-search.service.d.ts +4 -0
  188. package/dist/app/services/prism-search.service.d.ts.map +1 -1
  189. package/dist/app/services/prism-search.service.js +29 -6
  190. package/dist/app/services/prism-theme.service.d.ts +11 -3
  191. package/dist/app/services/prism-theme.service.d.ts.map +1 -1
  192. package/dist/app/services/prism-theme.service.js +27 -19
  193. package/dist/app/services/prism-url-state.service.d.ts.map +1 -1
  194. package/dist/app/services/prism-url-state.service.js +81 -12
  195. package/dist/app/shared/badge.types.d.ts +7 -0
  196. package/dist/app/shared/badge.types.d.ts.map +1 -0
  197. package/dist/app/shared/badge.types.js +9 -0
  198. package/dist/app/shared/brand-mark.d.ts +35 -0
  199. package/dist/app/shared/brand-mark.d.ts.map +1 -0
  200. package/dist/app/shared/brand-mark.js +52 -0
  201. package/dist/app/shared/metric-bar.d.ts +6 -0
  202. package/dist/app/shared/metric-bar.d.ts.map +1 -0
  203. package/dist/app/shared/metric-bar.js +7 -0
  204. package/dist/app/shared/prism-badge.component.d.ts +21 -0
  205. package/dist/app/shared/prism-badge.component.d.ts.map +1 -0
  206. package/dist/app/shared/prism-badge.component.js +68 -0
  207. package/dist/app/shared/prism-button.component.d.ts +12 -0
  208. package/dist/app/shared/prism-button.component.d.ts.map +1 -0
  209. package/dist/app/shared/prism-button.component.js +28 -0
  210. package/dist/app/shared/prism-icon-button.component.d.ts +17 -0
  211. package/dist/app/shared/prism-icon-button.component.d.ts.map +1 -0
  212. package/dist/app/shared/prism-icon-button.component.js +37 -0
  213. package/dist/app/shared/prism-list-row.component.d.ts +17 -0
  214. package/dist/app/shared/prism-list-row.component.d.ts.map +1 -0
  215. package/dist/app/shared/prism-list-row.component.js +57 -0
  216. package/dist/app/shared/prism-logo.component.d.ts +24 -0
  217. package/dist/app/shared/prism-logo.component.d.ts.map +1 -0
  218. package/dist/app/shared/prism-logo.component.js +77 -0
  219. package/dist/app/shared/prism-metric-badge.component.d.ts +9 -4
  220. package/dist/app/shared/prism-metric-badge.component.d.ts.map +1 -1
  221. package/dist/app/shared/prism-metric-badge.component.js +33 -12
  222. package/dist/app/shared/prism-metric-card.component.d.ts +30 -0
  223. package/dist/app/shared/prism-metric-card.component.d.ts.map +1 -0
  224. package/dist/app/shared/prism-metric-card.component.js +111 -0
  225. package/dist/app/shared/prism-panel-toolbar.component.d.ts +13 -0
  226. package/dist/app/shared/prism-panel-toolbar.component.d.ts.map +1 -0
  227. package/dist/app/shared/prism-panel-toolbar.component.js +28 -0
  228. package/dist/app/shared/prism-segmented.component.d.ts +25 -0
  229. package/dist/app/shared/prism-segmented.component.d.ts.map +1 -0
  230. package/dist/app/shared/prism-segmented.component.js +77 -0
  231. package/dist/app/shared/prism-tabs.component.d.ts +44 -0
  232. package/dist/app/shared/prism-tabs.component.d.ts.map +1 -0
  233. package/dist/app/shared/prism-tabs.component.js +134 -0
  234. package/dist/app/shared/roving-focus.d.ts +13 -0
  235. package/dist/app/shared/roving-focus.d.ts.map +1 -0
  236. package/dist/app/shared/roving-focus.js +34 -0
  237. package/dist/app/shell/prism-shell.component.d.ts +13 -0
  238. package/dist/app/shell/prism-shell.component.d.ts.map +1 -1
  239. package/dist/app/shell/prism-shell.component.js +57 -28
  240. package/dist/app/shell/should-select-first.d.ts +17 -0
  241. package/dist/app/shell/should-select-first.d.ts.map +1 -0
  242. package/dist/app/shell/should-select-first.js +13 -0
  243. package/dist/app/sidebar/navigation-decorations.d.ts +23 -1
  244. package/dist/app/sidebar/navigation-decorations.d.ts.map +1 -1
  245. package/dist/app/sidebar/navigation-decorations.js +33 -2
  246. package/dist/app/sidebar/prism-sidebar.component.d.ts +5 -15
  247. package/dist/app/sidebar/prism-sidebar.component.d.ts.map +1 -1
  248. package/dist/app/sidebar/prism-sidebar.component.js +89 -77
  249. package/dist/app/theme/deprecated-tokens.d.ts +15 -0
  250. package/dist/app/theme/deprecated-tokens.d.ts.map +1 -0
  251. package/dist/app/theme/deprecated-tokens.js +22 -0
  252. package/dist/app/theme/favicon.d.ts +3 -0
  253. package/dist/app/theme/favicon.d.ts.map +1 -0
  254. package/dist/app/theme/favicon.js +3 -0
  255. package/dist/app/theme/prism-default-theme.d.ts.map +1 -1
  256. package/dist/app/theme/prism-default-theme.js +122 -66
  257. package/dist/app/theme/resolve-theme-tokens.d.ts +29 -0
  258. package/dist/app/theme/resolve-theme-tokens.d.ts.map +1 -0
  259. package/dist/app/theme/resolve-theme-tokens.js +43 -0
  260. package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts +4 -7
  261. package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts.map +1 -1
  262. package/dist/app/variant-ribbon/prism-variant-ribbon.component.js +31 -69
  263. package/dist/app/view-tab-bar/next-view-id.d.ts +7 -1
  264. package/dist/app/view-tab-bar/next-view-id.d.ts.map +1 -1
  265. package/dist/app/view-tab-bar/next-view-id.js +9 -1
  266. package/dist/app/view-tab-bar/panel-inputs.d.ts +28 -0
  267. package/dist/app/view-tab-bar/panel-inputs.d.ts.map +1 -0
  268. package/dist/app/view-tab-bar/panel-inputs.js +41 -0
  269. package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts +2 -3
  270. package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts.map +1 -1
  271. package/dist/app/view-tab-bar/prism-view-panel-host.component.js +9 -9
  272. package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts +6 -0
  273. package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts.map +1 -1
  274. package/dist/app/view-tab-bar/prism-view-tab-bar.component.js +22 -29
  275. package/dist/builder/config-loader/deprecated-options.d.ts +9 -0
  276. package/dist/builder/config-loader/deprecated-options.d.ts.map +1 -0
  277. package/dist/builder/config-loader/deprecated-options.js +34 -0
  278. package/dist/builder/manifest/composition-wrapper.generator.d.ts +14 -0
  279. package/dist/builder/manifest/composition-wrapper.generator.d.ts.map +1 -0
  280. package/dist/builder/manifest/composition-wrapper.generator.js +66 -0
  281. package/dist/builder/manifest/host-parser.d.ts +2 -0
  282. package/dist/builder/manifest/host-parser.d.ts.map +1 -1
  283. package/dist/builder/manifest/host-parser.js +9 -4
  284. package/dist/builder/manifest/manifest-imports.d.ts +34 -0
  285. package/dist/builder/manifest/manifest-imports.d.ts.map +1 -0
  286. package/dist/builder/manifest/manifest-imports.js +91 -0
  287. package/dist/builder/manifest/runtime-manifest.generator.d.ts +13 -0
  288. package/dist/builder/manifest/runtime-manifest.generator.d.ts.map +1 -1
  289. package/dist/builder/manifest/runtime-manifest.generator.js +137 -65
  290. package/dist/builder/manifest/selector-element.d.ts +16 -0
  291. package/dist/builder/manifest/selector-element.d.ts.map +1 -0
  292. package/dist/builder/manifest/selector-element.js +46 -0
  293. package/dist/builder/manifest/template-literal.d.ts +3 -0
  294. package/dist/builder/manifest/template-literal.d.ts.map +1 -0
  295. package/dist/builder/manifest/template-literal.js +4 -0
  296. package/dist/builder/plugin-runner/plugin-runner.d.ts.map +1 -1
  297. package/dist/builder/plugin-runner/plugin-runner.js +29 -26
  298. package/dist/builder/scanner/api/angular-decorators.d.ts +84 -0
  299. package/dist/builder/scanner/api/angular-decorators.d.ts.map +1 -0
  300. package/dist/builder/scanner/api/angular-decorators.js +157 -0
  301. package/dist/builder/scanner/api/component-api.extractor.d.ts +13 -0
  302. package/dist/builder/scanner/api/component-api.extractor.d.ts.map +1 -0
  303. package/dist/builder/scanner/api/component-api.extractor.js +104 -0
  304. package/dist/builder/scanner/api/doc-tags.d.ts +13 -0
  305. package/dist/builder/scanner/api/doc-tags.d.ts.map +1 -0
  306. package/dist/builder/scanner/api/doc-tags.js +101 -0
  307. package/dist/builder/scanner/api/export-index.d.ts +18 -0
  308. package/dist/builder/scanner/api/export-index.d.ts.map +1 -0
  309. package/dist/builder/scanner/api/export-index.js +22 -0
  310. package/dist/builder/scanner/api/member.extractor.d.ts +90 -0
  311. package/dist/builder/scanner/api/member.extractor.d.ts.map +1 -0
  312. package/dist/builder/scanner/api/member.extractor.js +270 -0
  313. package/dist/builder/scanner/api/pipe-api.extractor.d.ts +12 -0
  314. package/dist/builder/scanner/api/pipe-api.extractor.d.ts.map +1 -0
  315. package/dist/builder/scanner/api/pipe-api.extractor.js +52 -0
  316. package/dist/builder/scanner/api/service-api.extractor.d.ts +14 -0
  317. package/dist/builder/scanner/api/service-api.extractor.d.ts.map +1 -0
  318. package/dist/builder/scanner/api/service-api.extractor.js +119 -0
  319. package/dist/builder/scanner/api/setup.reader.d.ts +26 -0
  320. package/dist/builder/scanner/api/setup.reader.d.ts.map +1 -0
  321. package/dist/builder/scanner/api/setup.reader.js +89 -0
  322. package/dist/builder/scanner/api/type-collector.d.ts +24 -0
  323. package/dist/builder/scanner/api/type-collector.d.ts.map +1 -0
  324. package/dist/builder/scanner/api/type-collector.js +211 -0
  325. package/dist/builder/scanner/ast-utils.d.ts +8 -0
  326. package/dist/builder/scanner/ast-utils.d.ts.map +1 -1
  327. package/dist/builder/scanner/ast-utils.js +37 -1
  328. package/dist/builder/scanner/class-hierarchy.d.ts +5 -3
  329. package/dist/builder/scanner/class-hierarchy.d.ts.map +1 -1
  330. package/dist/builder/scanner/class-hierarchy.js +12 -6
  331. package/dist/builder/scanner/component.scanner.d.ts +60 -6
  332. package/dist/builder/scanner/component.scanner.d.ts.map +1 -1
  333. package/dist/builder/scanner/component.scanner.js +229 -58
  334. package/dist/builder/scanner/composition/compose-template.d.ts +36 -0
  335. package/dist/builder/scanner/composition/compose-template.d.ts.map +1 -0
  336. package/dist/builder/scanner/composition/compose-template.js +187 -0
  337. package/dist/builder/scanner/composition/declarables.d.ts +54 -0
  338. package/dist/builder/scanner/composition/declarables.d.ts.map +1 -0
  339. package/dist/builder/scanner/composition/declarables.js +182 -0
  340. package/dist/builder/scanner/composition/match-declarables.d.ts +43 -0
  341. package/dist/builder/scanner/composition/match-declarables.d.ts.map +1 -0
  342. package/dist/builder/scanner/composition/match-declarables.js +131 -0
  343. package/dist/builder/scanner/composition/read-composition.d.ts +77 -0
  344. package/dist/builder/scanner/composition/read-composition.d.ts.map +1 -0
  345. package/dist/builder/scanner/composition/read-composition.js +302 -0
  346. package/dist/builder/scanner/composition/template-elements.d.ts +12 -0
  347. package/dist/builder/scanner/composition/template-elements.d.ts.map +1 -0
  348. package/dist/builder/scanner/composition/template-elements.js +41 -0
  349. package/dist/builder/scanner/entry-point-discovery.d.ts +5 -0
  350. package/dist/builder/scanner/entry-point-discovery.d.ts.map +1 -1
  351. package/dist/builder/scanner/entry-point-discovery.js +14 -0
  352. package/dist/builder/scanner/entry-point.scanner.d.ts +3 -1
  353. package/dist/builder/scanner/entry-point.scanner.d.ts.map +1 -1
  354. package/dist/builder/scanner/entry-point.scanner.js +7 -6
  355. package/dist/builder/scanner/index.d.ts +4 -0
  356. package/dist/builder/scanner/index.d.ts.map +1 -1
  357. package/dist/builder/scanner/index.js +2 -0
  358. package/dist/builder/scanner/input.extractor.d.ts +31 -2
  359. package/dist/builder/scanner/input.extractor.d.ts.map +1 -1
  360. package/dist/builder/scanner/input.extractor.js +73 -17
  361. package/dist/builder/scanner/pipe.scanner.d.ts +29 -0
  362. package/dist/builder/scanner/pipe.scanner.d.ts.map +1 -0
  363. package/dist/builder/scanner/pipe.scanner.js +65 -0
  364. package/dist/builder/scanner/pseudo-states.d.ts +1 -0
  365. package/dist/builder/scanner/pseudo-states.d.ts.map +1 -1
  366. package/dist/builder/scanner/pseudo-states.js +1 -1
  367. package/dist/builder/scanner/scanner.d.ts +27 -3
  368. package/dist/builder/scanner/scanner.d.ts.map +1 -1
  369. package/dist/builder/scanner/scanner.js +68 -24
  370. package/dist/builder/scanner/service/angular-decorators.d.ts +80 -0
  371. package/dist/builder/scanner/service/angular-decorators.d.ts.map +1 -0
  372. package/dist/builder/scanner/service/angular-decorators.js +154 -0
  373. package/dist/builder/scanner/service/doc-tags.d.ts +13 -0
  374. package/dist/builder/scanner/service/doc-tags.d.ts.map +1 -0
  375. package/dist/builder/scanner/service/doc-tags.js +97 -0
  376. package/dist/builder/scanner/service/export-index.d.ts +18 -0
  377. package/dist/builder/scanner/service/export-index.d.ts.map +1 -0
  378. package/dist/builder/scanner/service/export-index.js +22 -0
  379. package/dist/builder/scanner/service/member.extractor.d.ts +65 -0
  380. package/dist/builder/scanner/service/member.extractor.d.ts.map +1 -0
  381. package/dist/builder/scanner/service/member.extractor.js +216 -0
  382. package/dist/builder/scanner/service/pipe-api.extractor.d.ts +12 -0
  383. package/dist/builder/scanner/service/pipe-api.extractor.d.ts.map +1 -0
  384. package/dist/builder/scanner/service/pipe-api.extractor.js +72 -0
  385. package/dist/builder/scanner/service/service-api.extractor.d.ts +14 -0
  386. package/dist/builder/scanner/service/service-api.extractor.d.ts.map +1 -0
  387. package/dist/builder/scanner/service/service-api.extractor.js +119 -0
  388. package/dist/builder/scanner/service/setup.reader.d.ts +26 -0
  389. package/dist/builder/scanner/service/setup.reader.d.ts.map +1 -0
  390. package/dist/builder/scanner/service/setup.reader.js +89 -0
  391. package/dist/builder/scanner/service/type-collector.d.ts +23 -0
  392. package/dist/builder/scanner/service/type-collector.d.ts.map +1 -0
  393. package/dist/builder/scanner/service/type-collector.js +210 -0
  394. package/dist/builder/scanner/service.scanner.d.ts +26 -0
  395. package/dist/builder/scanner/service.scanner.d.ts.map +1 -0
  396. package/dist/builder/scanner/service.scanner.js +61 -0
  397. package/dist/builder/scanner/showcase-diagnostics.d.ts +60 -1
  398. package/dist/builder/scanner/showcase-diagnostics.d.ts.map +1 -1
  399. package/dist/builder/scanner/showcase-diagnostics.js +123 -10
  400. package/dist/builder/scanner/showcase-states.d.ts +17 -0
  401. package/dist/builder/scanner/showcase-states.d.ts.map +1 -0
  402. package/dist/builder/scanner/showcase-states.js +58 -0
  403. package/dist/builder/scanner/source-file-cache.d.ts +26 -0
  404. package/dist/builder/scanner/source-file-cache.d.ts.map +1 -0
  405. package/dist/builder/scanner/source-file-cache.js +60 -0
  406. package/dist/builder/shared/prism-pipeline.d.ts +6 -0
  407. package/dist/builder/shared/prism-pipeline.d.ts.map +1 -1
  408. package/dist/builder/shared/prism-pipeline.js +71 -18
  409. package/dist/decorator/index.d.ts +1 -1
  410. package/dist/decorator/index.d.ts.map +1 -1
  411. package/dist/decorator/showcase.types.d.ts +102 -9
  412. package/dist/decorator/showcase.types.d.ts.map +1 -1
  413. package/dist/plugin/index.d.ts +6 -1
  414. package/dist/plugin/index.d.ts.map +1 -1
  415. package/dist/plugin/index.js +4 -0
  416. package/dist/plugin/pipe.types.d.ts +36 -0
  417. package/dist/plugin/pipe.types.d.ts.map +1 -0
  418. package/dist/plugin/pipe.types.js +1 -0
  419. package/dist/plugin/plugin.types.d.ts +184 -8
  420. package/dist/plugin/plugin.types.d.ts.map +1 -1
  421. package/dist/plugin/service.types.d.ts +124 -0
  422. package/dist/plugin/service.types.d.ts.map +1 -0
  423. package/dist/plugin/service.types.js +1 -0
  424. package/dist/plugin/status.d.ts +27 -0
  425. package/dist/plugin/status.d.ts.map +1 -0
  426. package/dist/plugin/status.js +26 -0
  427. package/dist/shared/composition.d.ts +30 -0
  428. package/dist/shared/composition.d.ts.map +1 -0
  429. package/dist/shared/composition.js +29 -0
  430. package/dist/shared/pseudo-state.type.d.ts +2 -1
  431. package/dist/shared/pseudo-state.type.d.ts.map +1 -1
  432. package/dist/shared/void-elements.d.ts +3 -0
  433. package/dist/shared/void-elements.d.ts.map +1 -0
  434. package/dist/shared/void-elements.js +2 -0
  435. package/package.json +1 -1
  436. package/src/builder/build/schema.json +6 -6
  437. package/src/builder/serve/schema.json +6 -6
@@ -1,28 +1,44 @@
1
1
  import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
2
2
  import { PrismOverviewCellComponent } from './prism-overview-cell.component.js';
3
+ import { PrismOverviewMatrixComponent } from './prism-overview-matrix.component.js';
3
4
  import * as i0 from "@angular/core";
4
- function PrismOverviewComponent_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
5
- i0.ɵɵelement(0, "prism-overview-cell", 1);
5
+ function PrismOverviewComponent_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
6
+ i0.ɵɵelement(0, "prism-overview-matrix", 0);
6
7
  } if (rf & 2) {
7
- const $index_r1 = ctx.$index;
8
- const component_r2 = i0.ɵɵnextContext();
9
- i0.ɵɵproperty("component", component_r2)("index", $index_r1);
8
+ const component_r1 = i0.ɵɵnextContext();
9
+ i0.ɵɵproperty("component", component_r1);
10
10
  } }
11
- function PrismOverviewComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
12
- i0.ɵɵelementStart(0, "div", 0);
13
- i0.ɵɵrepeaterCreate(1, PrismOverviewComponent_Conditional_0_For_2_Template, 1, 2, "prism-overview-cell", 1, i0.ɵɵrepeaterTrackByIndex);
11
+ function PrismOverviewComponent_Conditional_0_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
12
+ i0.ɵɵelement(0, "prism-overview-cell", 2);
13
+ } if (rf & 2) {
14
+ const $index_r2 = ctx.$index;
15
+ const component_r1 = i0.ɵɵnextContext(2);
16
+ i0.ɵɵproperty("component", component_r1)("index", $index_r2);
17
+ } }
18
+ function PrismOverviewComponent_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
19
+ i0.ɵɵelementStart(0, "div", 1);
20
+ i0.ɵɵrepeaterCreate(1, PrismOverviewComponent_Conditional_0_Conditional_1_For_2_Template, 1, 2, "prism-overview-cell", 2, i0.ɵɵrepeaterTrackByIndex);
14
21
  i0.ɵɵelementEnd();
15
22
  } if (rf & 2) {
16
- const ctx_r2 = i0.ɵɵnextContext();
23
+ const ctx_r2 = i0.ɵɵnextContext(2);
17
24
  i0.ɵɵadvance();
18
25
  i0.ɵɵrepeater(ctx_r2.variants());
19
26
  } }
27
+ function PrismOverviewComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
28
+ i0.ɵɵconditionalCreate(0, PrismOverviewComponent_Conditional_0_Conditional_0_Template, 1, 1, "prism-overview-matrix", 0)(1, PrismOverviewComponent_Conditional_0_Conditional_1_Template, 3, 0, "div", 1);
29
+ } if (rf & 2) {
30
+ const ctx_r2 = i0.ɵɵnextContext();
31
+ i0.ɵɵconditional(ctx_r2.hasStates() ? 0 : 1);
32
+ } }
20
33
  /**
21
34
  * All variants of one component at once: a contact sheet rather than a
22
35
  * viewfinder.
23
36
  *
24
37
  * No controls of any kind: columns follow the window, and
25
38
  * everything else a cell shows is what the variant itself declared.
39
+ *
40
+ * A component that declares `states` gets the matrix instead, variants against
41
+ * states. Without states the sheet stays what it was.
26
42
  */
27
43
  export class PrismOverviewComponent {
28
44
  /** Input name fixed by `prism-view-panel-host`, which feeds every view panel. */
@@ -30,16 +46,23 @@ export class PrismOverviewComponent {
30
46
  ...(ngDevMode ? [{ debugName: "activeComponent" }] : /* istanbul ignore next */ []));
31
47
  variants = computed(() => this.activeComponent()?.meta.showcaseConfig.variants ?? [], /* @ts-ignore */
32
48
  ...(ngDevMode ? [{ debugName: "variants" }] : /* istanbul ignore next */ []));
49
+ hasStates = computed(() => (this.activeComponent()?.meta.showcaseConfig.states?.length ?? 0) > 0, /* @ts-ignore */
50
+ ...(ngDevMode ? [{ debugName: "hasStates" }] : /* istanbul ignore next */ []));
33
51
  static ɵfac = function PrismOverviewComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismOverviewComponent)(); };
34
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismOverviewComponent, selectors: [["prism-overview"]], inputs: { activeComponent: [1, "activeComponent"] }, decls: 1, vars: 1, consts: [["role", "list", 1, "prism-overview"], [3, "component", "index"]], template: function PrismOverviewComponent_Template(rf, ctx) { if (rf & 1) {
35
- i0.ɵɵconditionalCreate(0, PrismOverviewComponent_Conditional_0_Template, 3, 0, "div", 0);
52
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismOverviewComponent, selectors: [["prism-overview"]], hostVars: 1, hostBindings: function PrismOverviewComponent_HostBindings(rf, ctx) { if (rf & 2) {
53
+ i0.ɵɵattribute("data-matrix", ctx.hasStates() ? "" : null);
54
+ } }, inputs: { activeComponent: [1, "activeComponent"] }, decls: 1, vars: 1, consts: [[3, "component"], ["role", "list", 1, "prism-overview"], [3, "component", "index"]], template: function PrismOverviewComponent_Template(rf, ctx) { if (rf & 1) {
55
+ i0.ɵɵconditionalCreate(0, PrismOverviewComponent_Conditional_0_Template, 2, 1);
36
56
  } if (rf & 2) {
37
57
  let tmp_0_0;
38
58
  i0.ɵɵconditional((tmp_0_0 = ctx.activeComponent()) ? 0 : -1, tmp_0_0);
39
- } }, dependencies: [PrismOverviewCellComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n}\n\n.prism-overview[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));\n gap: var(--%NS%sp-4);\n align-content: start;\n padding: var(--%NS%sp-6);\n}"] });
59
+ } }, dependencies: [PrismOverviewCellComponent, PrismOverviewMatrixComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n}\n\n.prism-overview[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));\n gap: var(--%NS%sp-4);\n align-content: start;\n padding: var(--%NS%sp-6);\n}\n\n\n\n\n[data-matrix][_nghost-%COMP%] {\n display: flex;\n flex: 1 1 0;\n flex-direction: column;\n min-height: 0;\n}"] });
40
60
  }
41
61
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismOverviewComponent, [{
42
62
  type: Component,
43
- args: [{ selector: 'prism-overview', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismOverviewCellComponent], template: "@if (activeComponent(); as component) {\n <div\n class=\"prism-overview\"\n role=\"list\">\n @for (_ of variants(); track $index) {\n <prism-overview-cell\n [component]=\"component\"\n [index]=\"$index\" />\n }\n </div>\n}\n", styles: [":host {\n display: block;\n}\n\n.prism-overview {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));\n gap: var(--sp-4);\n align-content: start;\n padding: var(--sp-6);\n}\n"] }]
63
+ args: [{ selector: 'prism-overview', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismOverviewCellComponent, PrismOverviewMatrixComponent], host: {
64
+ // Hands the panel's height down to the matrix, which scrolls on its own.
65
+ '[attr.data-matrix]': "hasStates() ? '' : null"
66
+ }, template: "@if (activeComponent(); as component) {\n @if (hasStates()) {\n <prism-overview-matrix [component]=\"component\" />\n } @else {\n <div\n class=\"prism-overview\"\n role=\"list\">\n @for (_ of variants(); track $index) {\n <prism-overview-cell\n [component]=\"component\"\n [index]=\"$index\" />\n }\n </div>\n }\n}\n", styles: [":host {\n display: block;\n}\n\n.prism-overview {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));\n gap: var(--sp-4);\n align-content: start;\n padding: var(--sp-6);\n}\n\n/* The panel host is a column flex box that scrolls. The matrix scrolls inside\n itself instead, so both its scrollbars sit at the edge of the panel and its\n header row and variant column stay in view. */\n:host([data-matrix]) {\n display: flex;\n flex: 1 1 0;\n flex-direction: column;\n min-height: 0;\n}\n"] }]
44
67
  }], null, { activeComponent: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeComponent", required: false }] }] }); })();
45
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismOverviewComponent, { className: "PrismOverviewComponent", filePath: "app/overview/prism-overview.component.ts", lineNumber: 20 }); })();
68
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismOverviewComponent, { className: "PrismOverviewComponent", filePath: "app/overview/prism-overview.component.ts", lineNumber: 28 }); })();
@@ -54,10 +54,10 @@ export class PrismPageRendererComponent {
54
54
  } if (rf & 2) {
55
55
  let tmp_0_0;
56
56
  i0.ɵɵconditional((tmp_0_0 = ctx.page()) ? 0 : -1, tmp_0_0);
57
- } }, dependencies: [NgComponentOutlet, JsonPipe], styles: ["[_nghost-%COMP%] {\n display: block;\n flex: 1;\n overflow-y: auto;\n}\n\n.prism-page-renderer__title[_ngcontent-%COMP%] {\n padding: 16px 20px;\n margin: 0;\n font-family: var(--%NS%prism-font-sans);\n font-size: 18px;\n font-weight: 600;\n color: var(--%NS%prism-text);\n letter-spacing: -0.01em;\n background: var(--%NS%prism-bg-surface);\n border-bottom: 1px solid var(--%NS%prism-border);\n border-left: 3px solid;\n border-image: linear-gradient(180deg, var(--%NS%prism-primary-from), var(--%NS%prism-primary-to)) 1;\n}\n\n.prism-page-renderer__component[_ngcontent-%COMP%] {\n padding: var(--%NS%sp-5) var(--%NS%sp-6);\n font-family: var(--%NS%prism-font-sans);\n font-size: var(--%NS%fs-lg);\n line-height: 1.6;\n color: var(--%NS%prism-text-2);\n}\n\n\n\n\n\n\n\n.prism-page-renderer__component[_ngcontent-%COMP%] :is(h1[_ngcontent-%COMP%], h2[_ngcontent-%COMP%], h3[_ngcontent-%COMP%], h4[_ngcontent-%COMP%], h5[_ngcontent-%COMP%], h6[_ngcontent-%COMP%]) {\n margin: var(--%NS%sp-6) 0 var(--%NS%sp-3);\n font-family: var(--%NS%prism-font-sans);\n font-weight: 600;\n line-height: 1.25;\n color: var(--%NS%prism-text);\n letter-spacing: -0.01em;\n}\n\n.prism-page-renderer__component[_ngcontent-%COMP%] [_ngcontent-%COMP%]:is(h1, h2, h3, h4, h5, h6):first-child {\n margin-top: 0;\n}\n\n.prism-page-renderer__component[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n font-size: 24px;\n}\n\n.prism-page-renderer__component[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n font-size: 20px;\n}\n\n.prism-page-renderer__component[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 17px;\n}\n\n.prism-page-renderer__component[_ngcontent-%COMP%] :is(h4[_ngcontent-%COMP%], h5[_ngcontent-%COMP%], h6[_ngcontent-%COMP%]) {\n font-size: var(--%NS%fs-xl);\n}\n\n.prism-page-renderer__component[_ngcontent-%COMP%] :is(p[_ngcontent-%COMP%], ul[_ngcontent-%COMP%], ol[_ngcontent-%COMP%]) {\n margin: 0 0 var(--%NS%sp-4);\n}\n\n.prism-page-renderer__component[_ngcontent-%COMP%] :is(strong[_ngcontent-%COMP%], b[_ngcontent-%COMP%]) {\n color: var(--%NS%prism-text);\n}\n\n.prism-page-renderer__component[_ngcontent-%COMP%] a[_ngcontent-%COMP%] {\n color: var(--%NS%prism-primary);\n}\n\n.prism-page-renderer__component[_ngcontent-%COMP%] :is(code[_ngcontent-%COMP%], pre[_ngcontent-%COMP%]) {\n font-family: var(--%NS%prism-font-mono);\n font-size: var(--%NS%fs-md);\n color: var(--%NS%prism-text);\n}\n\n.prism-page-renderer__json[_ngcontent-%COMP%] {\n padding: 24px;\n margin: 0;\n font-family: monospace;\n font-size: 12px;\n color: var(--%NS%prism-text-muted);\n white-space: pre-wrap;\n}"] });
57
+ } }, dependencies: [NgComponentOutlet, JsonPipe], styles: ["[_nghost-%COMP%] {\n display: block;\n flex: 1;\n overflow-y: auto;\n}\n\n.prism-page-renderer__title[_ngcontent-%COMP%] {\n padding: 16px 20px;\n margin: 0;\n font-family: var(--%NS%prism-font-sans);\n font-size: 18px;\n font-weight: 600;\n color: var(--%NS%prism-text);\n letter-spacing: -0.01em;\n background: var(--%NS%prism-bg-surface);\n border-bottom: 1px solid var(--%NS%prism-border);\n}\n\n.prism-page-renderer__component[_ngcontent-%COMP%] {\n padding: var(--%NS%sp-5) var(--%NS%sp-6);\n font-family: var(--%NS%prism-font-sans);\n font-size: var(--%NS%fs-lg);\n line-height: 1.6;\n color: var(--%NS%prism-text-2);\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@layer prism-page-defaults {\n [_nghost-%COMP%] :where(.prism-page-renderer__component :is(h1, h2, h3, h4, h5, h6)) {\n margin: var(--%NS%sp-6) 0 var(--%NS%sp-3);\n font-family: var(--%NS%prism-font-sans);\n font-weight: 600;\n line-height: 1.25;\n color: var(--%NS%prism-text);\n letter-spacing: -0.01em;\n }\n\n [_nghost-%COMP%] :where(.prism-page-renderer__component :is(h1, h2, h3, h4, h5, h6):first-child) {\n margin-top: 0;\n }\n\n [_nghost-%COMP%] :where(.prism-page-renderer__component h1) {\n font-size: 24px;\n }\n\n [_nghost-%COMP%] :where(.prism-page-renderer__component h2) {\n font-size: 20px;\n }\n\n [_nghost-%COMP%] :where(.prism-page-renderer__component h3) {\n font-size: 17px;\n }\n\n [_nghost-%COMP%] :where(.prism-page-renderer__component :is(h4, h5, h6)) {\n font-size: var(--%NS%fs-xl);\n }\n\n [_nghost-%COMP%] :where(.prism-page-renderer__component :is(p, ul, ol)) {\n margin: 0 0 var(--%NS%sp-4);\n }\n\n [_nghost-%COMP%] :where(.prism-page-renderer__component :is(strong, b)) {\n color: var(--%NS%prism-text);\n }\n\n [_nghost-%COMP%] :where(.prism-page-renderer__component a) {\n font-weight: 500;\n color: var(--%NS%prism-link);\n text-decoration: underline;\n text-decoration-thickness: 1px;\n text-decoration-color: color-mix(in srgb, var(--%NS%prism-link) 45%, transparent);\n text-underline-offset: 3px;\n }\n\n [_nghost-%COMP%] :where(.prism-page-renderer__component a:hover) {\n text-decoration-color: var(--%NS%prism-link);\n }\n\n [_nghost-%COMP%] :where(.prism-page-renderer__component a:focus-visible) {\n outline: 2px solid var(--%NS%prism-link);\n outline-offset: 2px;\n border-radius: 2px;\n }\n\n [_nghost-%COMP%] :where(.prism-page-renderer__component :is(code, pre)) {\n font-family: var(--%NS%prism-font-mono);\n font-size: var(--%NS%fs-md);\n color: var(--%NS%prism-text);\n }\n}\n\n.prism-page-renderer__json[_ngcontent-%COMP%] {\n padding: 24px;\n margin: 0;\n font-family: monospace;\n font-size: 12px;\n color: var(--%NS%prism-text-muted);\n white-space: pre-wrap;\n}"] });
58
58
  }
59
59
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismPageRendererComponent, [{
60
60
  type: Component,
61
- args: [{ selector: 'prism-page-renderer', standalone: true, imports: [JsonPipe, NgComponentOutlet], template: "@if (page(); as p) {\n <div class=\"prism-page-renderer\">\n <h2 class=\"prism-page-renderer__title\">{{ p.title }}</h2>\n @switch (p.type) {\n @case ('custom') {\n <pre class=\"prism-page-renderer__json\">{{ $any(p).data | json }}</pre>\n }\n @case ('component') {\n <div class=\"prism-page-renderer__component\">\n <ng-container *ngComponentOutlet=\"$any(p).component\" />\n </div>\n }\n }\n </div>\n}\n", styles: [":host {\n display: block;\n flex: 1;\n overflow-y: auto;\n}\n\n.prism-page-renderer__title {\n padding: 16px 20px;\n margin: 0;\n font-family: var(--prism-font-sans);\n font-size: 18px;\n font-weight: 600;\n color: var(--prism-text);\n letter-spacing: -0.01em;\n background: var(--prism-bg-surface);\n border-bottom: 1px solid var(--prism-border);\n border-left: 3px solid;\n border-image: linear-gradient(180deg, var(--prism-primary-from), var(--prism-primary-to)) 1;\n}\n\n.prism-page-renderer__component {\n padding: var(--sp-5) var(--sp-6);\n font-family: var(--prism-font-sans);\n font-size: var(--fs-lg);\n line-height: 1.6;\n color: var(--prism-text-2);\n}\n\n/* Projected page content arrives through ngComponentOutlet and carries no\n theme of its own. Without this scope a consuming app's plain <h2> renders\n in the browser default colour on the styleguide's dark shell (measured at\n rgb(26,26,46) on a dark ground), which is darker than the body text beneath\n it and inverts the hierarchy. These are element selectors because\n the content is authored by the consumer and carries no classes we know. */\n.prism-page-renderer__component :is(h1, h2, h3, h4, h5, h6) {\n margin: var(--sp-6) 0 var(--sp-3);\n font-family: var(--prism-font-sans);\n font-weight: 600;\n line-height: 1.25;\n color: var(--prism-text);\n letter-spacing: -0.01em;\n}\n\n.prism-page-renderer__component :is(h1, h2, h3, h4, h5, h6):first-child {\n margin-top: 0;\n}\n\n.prism-page-renderer__component h1 {\n font-size: 24px;\n}\n\n.prism-page-renderer__component h2 {\n font-size: 20px;\n}\n\n.prism-page-renderer__component h3 {\n font-size: 17px;\n}\n\n.prism-page-renderer__component :is(h4, h5, h6) {\n font-size: var(--fs-xl);\n}\n\n.prism-page-renderer__component :is(p, ul, ol) {\n margin: 0 0 var(--sp-4);\n}\n\n.prism-page-renderer__component :is(strong, b) {\n color: var(--prism-text);\n}\n\n.prism-page-renderer__component a {\n color: var(--prism-primary);\n}\n\n.prism-page-renderer__component :is(code, pre) {\n font-family: var(--prism-font-mono);\n font-size: var(--fs-md);\n color: var(--prism-text);\n}\n\n.prism-page-renderer__json {\n padding: 24px;\n margin: 0;\n font-family: monospace;\n font-size: 12px;\n color: var(--prism-text-muted);\n white-space: pre-wrap;\n}\n"] }]
61
+ args: [{ selector: 'prism-page-renderer', standalone: true, imports: [JsonPipe, NgComponentOutlet], template: "@if (page(); as p) {\n <div class=\"prism-page-renderer\">\n <h2 class=\"prism-page-renderer__title\">{{ p.title }}</h2>\n @switch (p.type) {\n @case ('custom') {\n <pre class=\"prism-page-renderer__json\">{{ $any(p).data | json }}</pre>\n }\n @case ('component') {\n <div class=\"prism-page-renderer__component\">\n <ng-container *ngComponentOutlet=\"$any(p).component\" />\n </div>\n }\n }\n </div>\n}\n", styles: [":host {\n display: block;\n flex: 1;\n overflow-y: auto;\n}\n\n.prism-page-renderer__title {\n padding: 16px 20px;\n margin: 0;\n font-family: var(--prism-font-sans);\n font-size: 18px;\n font-weight: 600;\n color: var(--prism-text);\n letter-spacing: -0.01em;\n background: var(--prism-bg-surface);\n border-bottom: 1px solid var(--prism-border);\n}\n\n.prism-page-renderer__component {\n padding: var(--sp-5) var(--sp-6);\n font-family: var(--prism-font-sans);\n font-size: var(--fs-lg);\n line-height: 1.6;\n color: var(--prism-text-2);\n}\n\n/* Projected page content arrives through ngComponentOutlet and carries no\n theme of its own. Without these rules a consuming app's plain <h2> renders\n in the browser default colour on the styleguide's dark shell, darker than\n the body text beneath it.\n\n Under Emulated encapsulation a plain descendant selector here never reaches\n the page's elements (they carry the page component's attribute, not this\n one's), so the rules go through ::ng-deep. They sit in a cascade layer, so\n every unlayered style wins whatever its specificity: the page's own, the\n consumer's global stylesheet (a reset, a Tailwind preflight) and the styles\n of the components a page renders. :where() keeps them light inside the\n layer, too. These elements are the page's documentation chrome, not the\n canvas: the playground canvas is untouched. */\n@layer prism-page-defaults {\n :host ::ng-deep :where(.prism-page-renderer__component :is(h1, h2, h3, h4, h5, h6)) {\n margin: var(--sp-6) 0 var(--sp-3);\n font-family: var(--prism-font-sans);\n font-weight: 600;\n line-height: 1.25;\n color: var(--prism-text);\n letter-spacing: -0.01em;\n }\n\n :host ::ng-deep :where(.prism-page-renderer__component :is(h1, h2, h3, h4, h5, h6):first-child) {\n margin-top: 0;\n }\n\n :host ::ng-deep :where(.prism-page-renderer__component h1) {\n font-size: 24px;\n }\n\n :host ::ng-deep :where(.prism-page-renderer__component h2) {\n font-size: 20px;\n }\n\n :host ::ng-deep :where(.prism-page-renderer__component h3) {\n font-size: 17px;\n }\n\n :host ::ng-deep :where(.prism-page-renderer__component :is(h4, h5, h6)) {\n font-size: var(--fs-xl);\n }\n\n :host ::ng-deep :where(.prism-page-renderer__component :is(p, ul, ol)) {\n margin: 0 0 var(--sp-4);\n }\n\n :host ::ng-deep :where(.prism-page-renderer__component :is(strong, b)) {\n color: var(--prism-text);\n }\n\n :host ::ng-deep :where(.prism-page-renderer__component a) {\n font-weight: 500;\n color: var(--prism-link);\n text-decoration: underline;\n text-decoration-thickness: 1px;\n text-decoration-color: color-mix(in srgb, var(--prism-link) 45%, transparent);\n text-underline-offset: 3px;\n }\n\n :host ::ng-deep :where(.prism-page-renderer__component a:hover) {\n text-decoration-color: var(--prism-link);\n }\n\n :host ::ng-deep :where(.prism-page-renderer__component a:focus-visible) {\n outline: 2px solid var(--prism-link);\n outline-offset: 2px;\n border-radius: 2px;\n }\n\n :host ::ng-deep :where(.prism-page-renderer__component :is(code, pre)) {\n font-family: var(--prism-font-mono);\n font-size: var(--fs-md);\n color: var(--prism-text);\n }\n}\n\n.prism-page-renderer__json {\n padding: 24px;\n margin: 0;\n font-family: monospace;\n font-size: 12px;\n color: var(--prism-text-muted);\n white-space: pre-wrap;\n}\n"] }]
62
62
  }], () => [], null); })();
63
63
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismPageRendererComponent, { className: "PrismPageRendererComponent", filePath: "app/page-renderer/prism-page-renderer.component.ts", lineNumber: 12 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"a11y-core.plugin.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-core.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE,eAAO,MAAM,eAAe,EAAE,eAQ7B,CAAC"}
1
+ {"version":3,"file":"a11y-core.plugin.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-core.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE,eAAO,MAAM,eAAe,EAAE,eAO7B,CAAC"}
@@ -2,7 +2,6 @@ export const A11Y_CORE_PANEL = {
2
2
  id: 'a11y',
3
3
  label: 'A11y',
4
4
  icon: 'accessibility',
5
- position: 'bottom',
6
5
  placement: 'addon',
7
6
  loadComponent: () => import('./a11y-panel.component.js').then((m) => m.A11yPanelComponent),
8
7
  loadOverlayComponent: () => import('./a11y-overlay-host.component.js').then((m) => m.A11yOverlayHostComponent)
@@ -1,16 +1,13 @@
1
1
  import * as i0 from "@angular/core";
2
- type Variant = 'ok' | 'warn' | 'danger';
3
2
  export declare class A11yHeaderBadgeComponent {
4
3
  private readonly manifest;
5
4
  private readonly config;
6
5
  protected readonly data: import("@angular/core").Signal<{
7
6
  score: number;
8
- variant: Variant;
7
+ variant: "ok" | "warn" | "danger";
9
8
  title: string;
10
9
  } | null>;
11
- private computeVariant;
12
10
  static ɵfac: i0.ɵɵFactoryDeclaration<A11yHeaderBadgeComponent, never>;
13
11
  static ɵcmp: i0.ɵɵComponentDeclaration<A11yHeaderBadgeComponent, "prism-a11y-header-badge", never, {}, {}, never, never, true, never>;
14
12
  }
15
- export {};
16
13
  //# sourceMappingURL=a11y-header-badge.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"a11y-header-badge.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-header-badge.component.ts"],"names":[],"mappings":";AAOA,KAAK,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;AAExC,qBAOa,wBAAwB;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2C;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAE9D,SAAS,CAAC,QAAQ,CAAC,IAAI;;;;cAqBpB;IAEH,OAAO,CAAC,cAAc;yCA3Bb,wBAAwB;2CAAxB,wBAAwB;CAmCpC"}
1
+ {"version":3,"file":"a11y-header-badge.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-header-badge.component.ts"],"names":[],"mappings":";AAQA,qBAOa,wBAAwB;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2C;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAE9D,SAAS,CAAC,QAAQ,CAAC,IAAI;;;;cAsBpB;yCA1BM,wBAAwB;2CAAxB,wBAAwB;CA2BpC"}
@@ -1,13 +1,14 @@
1
1
  import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';
2
2
  import { PrismMetricBadgeComponent } from '../../shared/prism-metric-badge.component.js';
3
3
  import { PRISM_CONFIG, PRISM_MANIFEST } from '../../tokens/prism-tokens.js';
4
+ import { deriveA11ySummary } from './a11y-summary.js';
4
5
  import { resolveA11yThresholds } from './a11y-thresholds.js';
5
6
  import * as i0 from "@angular/core";
6
7
  function A11yHeaderBadgeComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
7
8
  i0.ɵɵelement(0, "prism-metric-badge", 0);
8
9
  } if (rf & 2) {
9
10
  const d_r1 = ctx;
10
- i0.ɵɵproperty("value", d_r1.score + "%")("variant", d_r1.variant)("title", d_r1.title);
11
+ i0.ɵɵproperty("value", "" + d_r1.score)("variant", d_r1.variant)("title", d_r1.title);
11
12
  } }
12
13
  export class A11yHeaderBadgeComponent {
13
14
  manifest = inject(PRISM_MANIFEST);
@@ -21,32 +22,20 @@ export class A11yHeaderBadgeComponent {
21
22
  ...meta.thresholds,
22
23
  ...this.config.a11y?.thresholds
23
24
  });
24
- const variant = this.computeVariant(score, meta.total, thresholds);
25
+ // The same rule the tab, the sidebar and the gauge grade with.
26
+ const variant = deriveA11ySummary(meta.total, thresholds).variant;
25
27
  return {
26
28
  score,
27
29
  variant,
28
- title: `Library A11y: ${score}% (target ${thresholds.score}%)\n` +
30
+ title: `Library accessibility score ${score} · target ${thresholds.score}\n` +
29
31
  `${meta.total.auditedComponents} components · ${meta.total.auditedVariants} variants\n` +
30
32
  `Violations: ${meta.total.critical} critical · ${meta.total.serious} serious · ` +
31
33
  `${meta.total.moderate} moderate · ${meta.total.minor} minor`
32
34
  };
33
35
  }, /* @ts-ignore */
34
36
  ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
35
- computeVariant(score, total, thresholds) {
36
- if (total.critical > thresholds.critical)
37
- return 'danger';
38
- if (total.serious > thresholds.serious)
39
- return 'danger';
40
- if (score < thresholds.score * 0.75)
41
- return 'danger';
42
- if (score < thresholds.score)
43
- return 'warn';
44
- if (total.moderate > thresholds.moderate)
45
- return 'warn';
46
- return 'ok';
47
- }
48
37
  static ɵfac = function A11yHeaderBadgeComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || A11yHeaderBadgeComponent)(); };
49
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: A11yHeaderBadgeComponent, selectors: [["prism-a11y-header-badge"]], decls: 1, vars: 1, consts: [["icon", "accessibility", "label", "Library accessibility score", 3, "value", "variant", "title"]], template: function A11yHeaderBadgeComponent_Template(rf, ctx) { if (rf & 1) {
38
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: A11yHeaderBadgeComponent, selectors: [["prism-a11y-header-badge"]], decls: 1, vars: 1, consts: [["icon", "accessibility", "label", "Library accessibility score", "shortLabel", "A11y", 3, "value", "variant", "title"]], template: function A11yHeaderBadgeComponent_Template(rf, ctx) { if (rf & 1) {
50
39
  i0.ɵɵconditionalCreate(0, A11yHeaderBadgeComponent_Conditional_0_Template, 1, 3, "prism-metric-badge", 0);
51
40
  } if (rf & 2) {
52
41
  let tmp_0_0;
@@ -55,6 +44,6 @@ export class A11yHeaderBadgeComponent {
55
44
  }
56
45
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(A11yHeaderBadgeComponent, [{
57
46
  type: Component,
58
- args: [{ selector: 'prism-a11y-header-badge', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismMetricBadgeComponent], template: "@if (data(); as d) {\n <prism-metric-badge\n icon=\"accessibility\"\n label=\"Library accessibility score\"\n [value]=\"d.score + '%'\"\n [variant]=\"d.variant\"\n [title]=\"d.title\" />\n}\n" }]
47
+ args: [{ selector: 'prism-a11y-header-badge', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismMetricBadgeComponent], template: "@if (data(); as d) {\n <prism-metric-badge\n icon=\"accessibility\"\n label=\"Library accessibility score\"\n shortLabel=\"A11y\"\n [value]=\"'' + d.score\"\n [variant]=\"d.variant\"\n [title]=\"d.title\" />\n}\n" }]
59
48
  }], null, null); })();
60
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yHeaderBadgeComponent, { className: "A11yHeaderBadgeComponent", filePath: "app/panels/a11y/a11y-header-badge.component.ts", lineNumber: 17 }); })();
49
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yHeaderBadgeComponent, { className: "A11yHeaderBadgeComponent", filePath: "app/panels/a11y/a11y-header-badge.component.ts", lineNumber: 16 }); })();
@@ -78,10 +78,10 @@ export class A11yKeyboardOverlayComponent {
78
78
  i0.ɵɵconditionalCreate(0, A11yKeyboardOverlayComponent_Conditional_0_Template, 2, 0);
79
79
  } if (rf & 2) {
80
80
  i0.ɵɵconditional(ctx.panelState.activeTab() === "keyboard" ? 0 : -1);
81
- } }, styles: ["[_nghost-%COMP%] {\n position: absolute;\n inset: 0;\n z-index: 100;\n overflow: hidden;\n pointer-events: none;\n}\n\n.prism-a11y-kbd-ov__highlight[_ngcontent-%COMP%] {\n position: absolute;\n pointer-events: none;\n background: rgb(129 140 248 / 6%);\n border: 2px solid rgb(129 140 248 / 50%);\n border-radius: 4px;\n box-shadow: 0 0 0 4px rgb(129 140 248 / 8%);\n}\n\n.prism-a11y-kbd-ov__badge[_ngcontent-%COMP%] {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n font-family: var(--%NS%prism-font-sans, system-ui, sans-serif);\n font-size: 10px;\n font-weight: 700;\n color: white;\n pointer-events: auto;\n cursor: default;\n background: var(--%NS%prism-primary);\n border-radius: 50%;\n box-shadow:\n 0 0 0 2px white,\n 0 2px 6px rgb(0 0 0 / 30%);\n}"] });
81
+ } }, styles: ["[_nghost-%COMP%] {\n position: absolute;\n inset: 0;\n z-index: 100;\n overflow: hidden;\n pointer-events: none;\n}\n\n.prism-a11y-kbd-ov__highlight[_ngcontent-%COMP%] {\n position: absolute;\n pointer-events: none;\n background: color-mix(in srgb, var(--%NS%prism-primary-fill) 6%, transparent);\n border: 2px solid color-mix(in srgb, var(--%NS%prism-primary-fill) 70%, transparent);\n border-radius: 4px;\n box-shadow: 0 0 0 4px color-mix(in srgb, var(--%NS%prism-primary-fill) 10%, transparent);\n}\n\n.prism-a11y-kbd-ov__badge[_ngcontent-%COMP%] {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n font-family: var(--%NS%prism-font-sans, system-ui, sans-serif);\n font-size: 10px;\n font-weight: 700;\n color: var(--%NS%prism-on-primary);\n pointer-events: auto;\n cursor: default;\n background: var(--%NS%prism-primary-fill);\n border-radius: 50%;\n box-shadow:\n 0 0 0 2px var(--%NS%prism-on-primary),\n var(--%NS%prism-shadow-sm);\n}"] });
82
82
  }
83
83
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(A11yKeyboardOverlayComponent, [{
84
84
  type: Component,
85
- args: [{ selector: 'prism-a11y-kbd-overlay', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (panelState.activeTab() === 'keyboard') {\n @for (badge of badges(); track badge.index) {\n <div\n class=\"prism-a11y-kbd-ov__highlight\"\n [style.left.px]=\"badge.x\"\n [style.top.px]=\"badge.y\"\n [style.width.px]=\"badge.width\"\n [style.height.px]=\"badge.height\"\n [title]=\"badge.name || badge.role\"></div>\n <div\n class=\"prism-a11y-kbd-ov__badge\"\n [style.left.px]=\"badge.x - 10\"\n [style.top.px]=\"badge.y - 10\">\n {{ badge.index }}\n </div>\n }\n}\n", styles: [":host {\n position: absolute;\n inset: 0;\n z-index: 100;\n overflow: hidden;\n pointer-events: none;\n}\n\n.prism-a11y-kbd-ov__highlight {\n position: absolute;\n pointer-events: none;\n background: rgb(129 140 248 / 6%);\n border: 2px solid rgb(129 140 248 / 50%);\n border-radius: 4px;\n box-shadow: 0 0 0 4px rgb(129 140 248 / 8%);\n}\n\n.prism-a11y-kbd-ov__badge {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n font-family: var(--prism-font-sans, system-ui, sans-serif);\n font-size: 10px;\n font-weight: 700;\n color: white;\n pointer-events: auto;\n cursor: default;\n background: var(--prism-primary);\n border-radius: 50%;\n box-shadow:\n 0 0 0 2px white,\n 0 2px 6px rgb(0 0 0 / 30%);\n}\n"] }]
85
+ args: [{ selector: 'prism-a11y-kbd-overlay', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (panelState.activeTab() === 'keyboard') {\n @for (badge of badges(); track badge.index) {\n <div\n class=\"prism-a11y-kbd-ov__highlight\"\n [style.left.px]=\"badge.x\"\n [style.top.px]=\"badge.y\"\n [style.width.px]=\"badge.width\"\n [style.height.px]=\"badge.height\"\n [title]=\"badge.name || badge.role\"></div>\n <div\n class=\"prism-a11y-kbd-ov__badge\"\n [style.left.px]=\"badge.x - 10\"\n [style.top.px]=\"badge.y - 10\">\n {{ badge.index }}\n </div>\n }\n}\n", styles: [":host {\n position: absolute;\n inset: 0;\n z-index: 100;\n overflow: hidden;\n pointer-events: none;\n}\n\n.prism-a11y-kbd-ov__highlight {\n position: absolute;\n pointer-events: none;\n background: color-mix(in srgb, var(--prism-primary-fill) 6%, transparent);\n border: 2px solid color-mix(in srgb, var(--prism-primary-fill) 70%, transparent);\n border-radius: 4px;\n box-shadow: 0 0 0 4px color-mix(in srgb, var(--prism-primary-fill) 10%, transparent);\n}\n\n.prism-a11y-kbd-ov__badge {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n font-family: var(--prism-font-sans, system-ui, sans-serif);\n font-size: 10px;\n font-weight: 700;\n color: var(--prism-on-primary);\n pointer-events: auto;\n cursor: default;\n background: var(--prism-primary-fill);\n border-radius: 50%;\n box-shadow:\n 0 0 0 2px var(--prism-on-primary),\n var(--prism-shadow-sm);\n}\n"] }]
86
86
  }], () => [], null); })();
87
87
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yKeyboardOverlayComponent, { className: "A11yKeyboardOverlayComponent", filePath: "app/panels/a11y/a11y-keyboard-overlay.component.ts", lineNumber: 23 }); })();
@@ -12,6 +12,7 @@ export declare class A11yOverlayHostComponent {
12
12
  private readonly elementRef;
13
13
  private readonly layoutTick;
14
14
  protected readonly bounds: import("@angular/core").Signal<Bounds | null>;
15
+ /** The role of the showcased element, which in a composition is not the rendered root. */
15
16
  protected readonly roleLabel: import("@angular/core").Signal<string | null>;
16
17
  protected readonly tabLabel: import("@angular/core").Signal<string | null>;
17
18
  constructor();
@@ -1 +1 @@
1
- {"version":3,"file":"a11y-overlay-host.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-overlay-host.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;;AAGhF,UAAU,MAAM;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,qBAOa,wBAAwB;IACjC,QAAQ,CAAC,eAAe,4DAA0C;IAClE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA+B;IAC/D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmC;IAE9D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAExC,SAAS,CAAC,QAAQ,CAAC,MAAM,gDAiBtB;IAEH,SAAS,CAAC,QAAQ,CAAC,SAAS,gDAOzB;IAEH,SAAS,CAAC,QAAQ,CAAC,QAAQ,gDASxB;;yCA5CM,wBAAwB;2CAAxB,wBAAwB;CAkEpC"}
1
+ {"version":3,"file":"a11y-overlay-host.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-overlay-host.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;;AAGhF,UAAU,MAAM;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,qBAOa,wBAAwB;IACjC,QAAQ,CAAC,eAAe,4DAA0C;IAClE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA+B;IAC/D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmC;IAE9D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAExC,SAAS,CAAC,QAAQ,CAAC,MAAM,gDAiBtB;IAEH,0FAA0F;IAC1F,SAAS,CAAC,QAAQ,CAAC,SAAS,gDAOzB;IAEH,SAAS,CAAC,QAAQ,CAAC,QAAQ,gDASxB;;yCA7CM,wBAAwB;2CAAxB,wBAAwB;CAmEpC"}
@@ -61,8 +61,9 @@ export class A11yOverlayHostComponent {
61
61
  };
62
62
  }, /* @ts-ignore */
63
63
  ...(ngDevMode ? [{ debugName: "bounds" }] : /* istanbul ignore next */ []));
64
+ /** The role of the showcased element, which in a composition is not the rendered root. */
64
65
  roleLabel = computed(() => {
65
- const el = this.rendererService().renderedElement();
66
+ const el = this.rendererService().subjectElement();
66
67
  if (!el)
67
68
  return null;
68
69
  const role = el.getAttribute('role') ?? implicitRole(el);
@@ -104,11 +105,11 @@ export class A11yOverlayHostComponent {
104
105
  } if (rf & 2) {
105
106
  let tmp_0_0;
106
107
  i0.ɵɵconditional((tmp_0_0 = ctx.bounds()) ? 0 : -1, tmp_0_0);
107
- } }, styles: ["[_nghost-%COMP%] {\n display: contents;\n}\n\n.a11y-mark[_ngcontent-%COMP%] {\n position: absolute;\n z-index: 1;\n pointer-events: none;\n}\n\n.outline[_ngcontent-%COMP%] {\n background: rgb(59 130 246 / 8%);\n border: 2px solid rgb(59 130 246 / 95%);\n border-radius: 4px;\n}\n\n.tag[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 6px;\n font: 11px/1.4 var(--%NS%font-mono);\n color: var(--%NS%prism-text-light, #fff);\n white-space: nowrap;\n background: rgb(17 24 39 / 92%);\n border-radius: 4px;\n box-shadow: 0 1px 2px rgb(0 0 0 / 35%);\n}\n\n.kb[_ngcontent-%COMP%] .tag[_ngcontent-%COMP%] {\n background: rgb(5 150 105 / 95%);\n}"] });
108
+ } }, styles: ["[_nghost-%COMP%] {\n display: contents;\n}\n\n.a11y-mark[_ngcontent-%COMP%] {\n position: absolute;\n z-index: 1;\n pointer-events: none;\n}\n\n\n\n.outline[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--%NS%prism-primary-fill) 8%, transparent);\n border: 2px solid var(--%NS%prism-primary-fill);\n border-radius: 4px;\n}\n\n.tag[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 6px;\n font: 11px/1.4 var(--%NS%font-mono);\n color: var(--%NS%prism-canvas-overlay-fg);\n white-space: nowrap;\n background: var(--%NS%prism-canvas-overlay-bg);\n border: 1px solid var(--%NS%prism-canvas-overlay-border);\n border-radius: 4px;\n box-shadow: var(--%NS%prism-shadow-sm);\n}\n\n.kb[_ngcontent-%COMP%] .tag[_ngcontent-%COMP%] {\n color: var(--%NS%prism-canvas-overlay-primary);\n border-color: var(--%NS%prism-canvas-overlay-primary);\n}"] });
108
109
  }
109
110
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(A11yOverlayHostComponent, [{
110
111
  type: Component,
111
- args: [{ selector: 'prism-a11y-overlay-host', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (bounds(); as b) {\n <div\n class=\"a11y-mark outline\"\n [style.top.px]=\"b.top\"\n [style.left.px]=\"b.left\"\n [style.width.px]=\"b.width\"\n [style.height.px]=\"b.height\"></div>\n @if (roleLabel()) {\n <div\n class=\"a11y-mark\"\n [style.top.px]=\"b.top - 22\"\n [style.left.px]=\"b.left - 2\">\n <span class=\"tag\">{{ roleLabel() }}</span>\n </div>\n }\n @if (tabLabel()) {\n <div\n class=\"a11y-mark kb\"\n [style.top.px]=\"b.top + b.height + 4\"\n [style.left.px]=\"b.left + b.width + 2\"\n style=\"transform: translateX(-100%)\">\n <span class=\"tag\">{{ tabLabel() }}</span>\n </div>\n }\n}\n", styles: [":host {\n display: contents;\n}\n\n.a11y-mark {\n position: absolute;\n z-index: 1;\n pointer-events: none;\n}\n\n.outline {\n background: rgb(59 130 246 / 8%);\n border: 2px solid rgb(59 130 246 / 95%);\n border-radius: 4px;\n}\n\n.tag {\n display: inline-block;\n padding: 2px 6px;\n font: 11px/1.4 var(--font-mono);\n color: var(--prism-text-light, #fff);\n white-space: nowrap;\n background: rgb(17 24 39 / 92%);\n border-radius: 4px;\n box-shadow: 0 1px 2px rgb(0 0 0 / 35%);\n}\n\n.kb .tag {\n background: rgb(5 150 105 / 95%);\n}\n"] }]
112
+ args: [{ selector: 'prism-a11y-overlay-host', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (bounds(); as b) {\n <div\n class=\"a11y-mark outline\"\n [style.top.px]=\"b.top\"\n [style.left.px]=\"b.left\"\n [style.width.px]=\"b.width\"\n [style.height.px]=\"b.height\"></div>\n @if (roleLabel()) {\n <div\n class=\"a11y-mark\"\n [style.top.px]=\"b.top - 22\"\n [style.left.px]=\"b.left - 2\">\n <span class=\"tag\">{{ roleLabel() }}</span>\n </div>\n }\n @if (tabLabel()) {\n <div\n class=\"a11y-mark kb\"\n [style.top.px]=\"b.top + b.height + 4\"\n [style.left.px]=\"b.left + b.width + 2\"\n style=\"transform: translateX(-100%)\">\n <span class=\"tag\">{{ tabLabel() }}</span>\n </div>\n }\n}\n", styles: [":host {\n display: contents;\n}\n\n.a11y-mark {\n position: absolute;\n z-index: 1;\n pointer-events: none;\n}\n\n/* Overlays sit on the user's component, so they paint with the canvas overlay\n tokens and the fill blue, not with the theme surfaces. */\n.outline {\n background: color-mix(in srgb, var(--prism-primary-fill) 8%, transparent);\n border: 2px solid var(--prism-primary-fill);\n border-radius: 4px;\n}\n\n.tag {\n display: inline-block;\n padding: 2px 6px;\n font: 11px/1.4 var(--font-mono);\n color: var(--prism-canvas-overlay-fg);\n white-space: nowrap;\n background: var(--prism-canvas-overlay-bg);\n border: 1px solid var(--prism-canvas-overlay-border);\n border-radius: 4px;\n box-shadow: var(--prism-shadow-sm);\n}\n\n.kb .tag {\n color: var(--prism-canvas-overlay-primary);\n border-color: var(--prism-canvas-overlay-primary);\n}\n"] }]
112
113
  }], () => [], { rendererService: [{ type: i0.Input, args: [{ isSignal: true, alias: "rendererService", required: true }] }] }); })();
113
114
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yOverlayHostComponent, { className: "A11yOverlayHostComponent", filePath: "app/panels/a11y/a11y-overlay-host.component.ts", lineNumber: 19 }); })();
114
115
  function implicitRole(el) {
@@ -1,4 +1,5 @@
1
1
  import type { RuntimeComponent } from '../../../plugin/plugin.types.js';
2
+ import { type PrismTabItem } from '../../shared/prism-tabs.component.js';
2
3
  import { A11yPanelStateService } from './a11y-panel-state.service.js';
3
4
  import * as i0 from "@angular/core";
4
5
  export declare class A11yPanelComponent {
@@ -6,7 +7,9 @@ export declare class A11yPanelComponent {
6
7
  protected readonly state: A11yPanelStateService;
7
8
  readonly activeComponent: import("@angular/core").InputSignal<RuntimeComponent | null>;
8
9
  protected readonly disabled: import("@angular/core").Signal<boolean>;
9
- protected readonly violationCount: import("@angular/core").Signal<number | null>;
10
+ /** The sub-tabs; Violations carries the same open-findings badge as the panel's own tab. */
11
+ protected readonly tabs: import("@angular/core").Signal<PrismTabItem[]>;
12
+ protected selectTab(id: string | null): void;
10
13
  static ɵfac: i0.ɵɵFactoryDeclaration<A11yPanelComponent, never>;
11
14
  static ɵcmp: i0.ɵɵComponentDeclaration<A11yPanelComponent, "prism-a11y-panel", never, { "activeComponent": { "alias": "activeComponent"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
12
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"a11y-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-panel.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAGxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;;AAMtE,qBAQa,kBAAkB;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IACzD,SAAS,CAAC,QAAQ,CAAC,KAAK,wBAAiC;IAEzD,QAAQ,CAAC,eAAe,+DAAwC;IAEhE,SAAS,CAAC,QAAQ,CAAC,QAAQ,0CAKxB;IAEH,SAAS,CAAC,QAAQ,CAAC,cAAc,gDAI9B;yCAjBM,kBAAkB;2CAAlB,kBAAkB;CAkB9B"}
1
+ {"version":3,"file":"a11y-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-panel.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAExE,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,sCAAsC,CAAC;AAI7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;;AAMtE,qBAQa,kBAAkB;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IACzD,SAAS,CAAC,QAAQ,CAAC,KAAK,wBAAiC;IAEzD,QAAQ,CAAC,eAAe,+DAAwC;IAEhE,SAAS,CAAC,QAAQ,CAAC,QAAQ,0CAKxB;IAEH,4FAA4F;IAC5F,SAAS,CAAC,QAAQ,CAAC,IAAI,iDAKpB;IAEH,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;yCArBnC,kBAAkB;2CAAlB,kBAAkB;CAwB9B"}
@@ -1,4 +1,7 @@
1
1
  import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';
2
+ import { PrismPanelToolbarComponent } from '../../shared/prism-panel-toolbar.component.js';
3
+ import { PrismTabsComponent } from '../../shared/prism-tabs.component.js';
4
+ import { a11yViolationBadge, normalizePanelBadge } from '../panel-host/panel-badge.js';
2
5
  import { A11yAuditService } from './a11y-audit.service.js';
3
6
  import { A11yKeyboardComponent } from './a11y-keyboard.component.js';
4
7
  import { A11yPanelStateService } from './a11y-panel-state.service.js';
@@ -7,34 +10,24 @@ import { A11yTreeComponent } from './a11y-tree.component.js';
7
10
  import { A11yViolationsComponent } from './a11y-violations.component.js';
8
11
  import * as i0 from "@angular/core";
9
12
  function A11yPanelComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
10
- i0.ɵɵelementStart(0, "span", 6);
11
- i0.ɵɵtext(1);
12
- i0.ɵɵelementEnd();
13
- } if (rf & 2) {
14
- const ctx_r0 = i0.ɵɵnextContext();
15
- i0.ɵɵclassProp("st-badge--ok", ctx_r0.violationCount() === 0)("st-badge--warn", ctx_r0.violationCount() > 0);
16
- i0.ɵɵadvance();
17
- i0.ɵɵtextInterpolate1(" ", ctx_r0.violationCount(), " ");
18
- } }
19
- function A11yPanelComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
20
- i0.ɵɵelementStart(0, "div", 5);
13
+ i0.ɵɵelementStart(0, "div", 3);
21
14
  i0.ɵɵtext(1, " Accessibility audit disabled for this component. ");
22
15
  i0.ɵɵelementEnd();
23
16
  } }
24
- function A11yPanelComponent_Conditional_13_Case_0_Template(rf, ctx) { if (rf & 1) {
17
+ function A11yPanelComponent_Conditional_5_Case_0_Template(rf, ctx) { if (rf & 1) {
25
18
  i0.ɵɵelement(0, "prism-a11y-violations");
26
19
  } }
27
- function A11yPanelComponent_Conditional_13_Case_1_Template(rf, ctx) { if (rf & 1) {
20
+ function A11yPanelComponent_Conditional_5_Case_1_Template(rf, ctx) { if (rf & 1) {
28
21
  i0.ɵɵelement(0, "prism-a11y-keyboard");
29
22
  } }
30
- function A11yPanelComponent_Conditional_13_Case_2_Template(rf, ctx) { if (rf & 1) {
23
+ function A11yPanelComponent_Conditional_5_Case_2_Template(rf, ctx) { if (rf & 1) {
31
24
  i0.ɵɵelement(0, "prism-a11y-tree");
32
25
  } }
33
- function A11yPanelComponent_Conditional_13_Case_3_Template(rf, ctx) { if (rf & 1) {
26
+ function A11yPanelComponent_Conditional_5_Case_3_Template(rf, ctx) { if (rf & 1) {
34
27
  i0.ɵɵelement(0, "prism-a11y-sr");
35
28
  } }
36
- function A11yPanelComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
37
- i0.ɵɵconditionalCreate(0, A11yPanelComponent_Conditional_13_Case_0_Template, 1, 0, "prism-a11y-violations")(1, A11yPanelComponent_Conditional_13_Case_1_Template, 1, 0, "prism-a11y-keyboard")(2, A11yPanelComponent_Conditional_13_Case_2_Template, 1, 0, "prism-a11y-tree")(3, A11yPanelComponent_Conditional_13_Case_3_Template, 1, 0, "prism-a11y-sr");
29
+ function A11yPanelComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
30
+ i0.ɵɵconditionalCreate(0, A11yPanelComponent_Conditional_5_Case_0_Template, 1, 0, "prism-a11y-violations")(1, A11yPanelComponent_Conditional_5_Case_1_Template, 1, 0, "prism-a11y-keyboard")(2, A11yPanelComponent_Conditional_5_Case_2_Template, 1, 0, "prism-a11y-tree")(3, A11yPanelComponent_Conditional_5_Case_3_Template, 1, 0, "prism-a11y-sr");
38
31
  } if (rf & 2) {
39
32
  let tmp_1_0;
40
33
  const ctx_r0 = i0.ɵɵnextContext();
@@ -51,50 +44,35 @@ export class A11yPanelComponent {
51
44
  return config?.disable === true;
52
45
  }, /* @ts-ignore */
53
46
  ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
54
- violationCount = computed(() => {
55
- const r = this.auditService.results();
56
- return r ? r.violations.length : null;
57
- }, /* @ts-ignore */
58
- ...(ngDevMode ? [{ debugName: "violationCount" }] : /* istanbul ignore next */ []));
47
+ /** The sub-tabs; Violations carries the same open-findings badge as the panel's own tab. */
48
+ tabs = computed(() => [
49
+ { id: 'violations', label: 'Violations', badge: normalizePanelBadge(a11yViolationBadge(this.auditService.scoreResult())) },
50
+ { id: 'keyboard', label: 'Keyboard' },
51
+ { id: 'tree', label: 'ARIA Tree' },
52
+ { id: 'sr', label: 'Screen Reader' }
53
+ ], /* @ts-ignore */
54
+ ...(ngDevMode ? [{ debugName: "tabs" }] : /* istanbul ignore next */ []));
55
+ selectTab(id) {
56
+ if (id === 'violations' || id === 'keyboard' || id === 'tree' || id === 'sr')
57
+ this.state.activeTab.set(id);
58
+ }
59
59
  static ɵfac = function A11yPanelComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || A11yPanelComponent)(); };
60
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: A11yPanelComponent, selectors: [["prism-a11y-panel"]], inputs: { activeComponent: [1, "activeComponent"] }, decls: 14, vars: 10, consts: [[1, "a11y-panel"], [1, "subtabs"], [1, "st-tab", 3, "click"], [1, "st-badge", 3, "st-badge--ok", "st-badge--warn"], [1, "a11y-content"], [1, "a11y-disabled"], [1, "st-badge"]], template: function A11yPanelComponent_Template(rf, ctx) { if (rf & 1) {
61
- i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "button", 2);
62
- i0.ɵɵlistener("click", function A11yPanelComponent_Template_button_click_2_listener() { return ctx.state.activeTab.set("violations"); });
63
- i0.ɵɵtext(3, " Violations ");
64
- i0.ɵɵconditionalCreate(4, A11yPanelComponent_Conditional_4_Template, 2, 5, "span", 3);
65
- i0.ɵɵelementEnd();
66
- i0.ɵɵelementStart(5, "button", 2);
67
- i0.ɵɵlistener("click", function A11yPanelComponent_Template_button_click_5_listener() { return ctx.state.activeTab.set("keyboard"); });
68
- i0.ɵɵtext(6, " Keyboard ");
69
- i0.ɵɵelementEnd();
70
- i0.ɵɵelementStart(7, "button", 2);
71
- i0.ɵɵlistener("click", function A11yPanelComponent_Template_button_click_7_listener() { return ctx.state.activeTab.set("tree"); });
72
- i0.ɵɵtext(8, " ARIA Tree ");
73
- i0.ɵɵelementEnd();
74
- i0.ɵɵelementStart(9, "button", 2);
75
- i0.ɵɵlistener("click", function A11yPanelComponent_Template_button_click_9_listener() { return ctx.state.activeTab.set("sr"); });
76
- i0.ɵɵtext(10, " Screen Reader ");
60
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: A11yPanelComponent, selectors: [["prism-a11y-panel"]], inputs: { activeComponent: [1, "activeComponent"] }, decls: 6, vars: 3, consts: [[1, "a11y-panel"], ["toolbarStart", "", "size", "sm", "ariaLabel", "Accessibility views", 3, "activeChange", "items", "active"], [1, "a11y-content"], [1, "a11y-disabled"]], template: function A11yPanelComponent_Template(rf, ctx) { if (rf & 1) {
61
+ i0.ɵɵelementStart(0, "div", 0)(1, "prism-panel-toolbar")(2, "prism-tabs", 1);
62
+ i0.ɵɵlistener("activeChange", function A11yPanelComponent_Template_prism_tabs_activeChange_2_listener($event) { return ctx.selectTab($event); });
77
63
  i0.ɵɵelementEnd()();
78
- i0.ɵɵelementStart(11, "div", 4);
79
- i0.ɵɵconditionalCreate(12, A11yPanelComponent_Conditional_12_Template, 2, 0, "div", 5)(13, A11yPanelComponent_Conditional_13_Template, 4, 1);
64
+ i0.ɵɵelementStart(3, "div", 2);
65
+ i0.ɵɵconditionalCreate(4, A11yPanelComponent_Conditional_4_Template, 2, 0, "div", 3)(5, A11yPanelComponent_Conditional_5_Template, 4, 1);
80
66
  i0.ɵɵelementEnd()();
81
67
  } if (rf & 2) {
82
68
  i0.ɵɵadvance(2);
83
- i0.ɵɵclassProp("st-tab--active", ctx.state.activeTab() === "violations");
84
- i0.ɵɵadvance(2);
85
- i0.ɵɵconditional(ctx.violationCount() !== null ? 4 : -1);
86
- i0.ɵɵadvance();
87
- i0.ɵɵclassProp("st-tab--active", ctx.state.activeTab() === "keyboard");
88
- i0.ɵɵadvance(2);
89
- i0.ɵɵclassProp("st-tab--active", ctx.state.activeTab() === "tree");
69
+ i0.ɵɵproperty("items", ctx.tabs())("active", ctx.state.activeTab());
90
70
  i0.ɵɵadvance(2);
91
- i0.ɵɵclassProp("st-tab--active", ctx.state.activeTab() === "sr");
92
- i0.ɵɵadvance(3);
93
- i0.ɵɵconditional(ctx.disabled() ? 12 : 13);
94
- } }, dependencies: [A11yViolationsComponent, A11yKeyboardComponent, A11yTreeComponent, A11ySrComponent], styles: ["[_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.a11y-panel[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.subtabs[_ngcontent-%COMP%] {\n position: sticky;\n top: 0;\n z-index: 2;\n display: flex;\n gap: 2px;\n padding: 10px 20px 0;\n background: var(--%NS%prism-bg-elevated);\n border-bottom: 1px solid var(--%NS%prism-border);\n}\n\n.st-tab[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n gap: 6px;\n align-items: center;\n padding: 7px 12px;\n font-family: var(--%NS%font-sans);\n font-size: 12px;\n font-weight: 500;\n color: var(--%NS%prism-text-muted);\n cursor: pointer;\n background: none;\n border: none;\n border-radius: var(--%NS%radius-sm) var(--%NS%radius-sm) 0 0;\n transition: color var(--%NS%dur-fast);\n}\n\n.st-tab[_ngcontent-%COMP%]:hover {\n color: var(--%NS%prism-text-2);\n}\n\n.st-tab--active[_ngcontent-%COMP%] {\n color: var(--%NS%prism-text);\n}\n\n.st-tab--%NS%active[_ngcontent-%COMP%]::after {\n position: absolute;\n right: 8px;\n bottom: -1px;\n left: 8px;\n height: 2px;\n content: '';\n background: var(--%NS%prism-primary);\n border-radius: 1px;\n}\n\n.st-badge[_ngcontent-%COMP%] {\n display: grid;\n place-items: center;\n min-width: 16px;\n height: 16px;\n padding: 0 5px;\n font-family: var(--%NS%font-mono);\n font-size: 10px;\n font-weight: 700;\n color: var(--%NS%prism-primary);\n background: color-mix(in srgb, var(--%NS%prism-primary) 18%, transparent);\n border-radius: 8px;\n}\n\n.st-badge--ok[_ngcontent-%COMP%] {\n color: var(--%NS%prism-success);\n background: color-mix(in srgb, var(--%NS%prism-success) 18%, transparent);\n}\n\n.st-badge--warn[_ngcontent-%COMP%] {\n color: var(--%NS%prism-warn);\n background: color-mix(in srgb, var(--%NS%prism-warn) 18%, transparent);\n}\n\n.a11y-content[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n overflow: auto;\n}\n\n.a11y-disabled[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n font-size: 13px;\n color: var(--%NS%prism-text-muted);\n}"] });
71
+ i0.ɵɵconditional(ctx.disabled() ? 4 : 5);
72
+ } }, dependencies: [A11yViolationsComponent, A11yKeyboardComponent, A11yTreeComponent, A11ySrComponent, PrismPanelToolbarComponent, PrismTabsComponent], styles: ["[_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.a11y-panel[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.a11y-content[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n container-type: inline-size;\n overflow: auto;\n}\n\n.a11y-disabled[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n font-size: 13px;\n color: var(--%NS%prism-text-muted);\n}"] });
95
73
  }
96
74
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(A11yPanelComponent, [{
97
75
  type: Component,
98
- args: [{ selector: 'prism-a11y-panel', standalone: true, imports: [A11yViolationsComponent, A11yKeyboardComponent, A11yTreeComponent, A11ySrComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"a11y-panel\">\n <div class=\"subtabs\">\n <button\n class=\"st-tab\"\n [class.st-tab--active]=\"state.activeTab() === 'violations'\"\n (click)=\"state.activeTab.set('violations')\">\n Violations\n @if (violationCount() !== null) {\n <span\n class=\"st-badge\"\n [class.st-badge--ok]=\"violationCount() === 0\"\n [class.st-badge--warn]=\"violationCount()! > 0\">\n {{ violationCount() }}\n </span>\n }\n </button>\n <button\n class=\"st-tab\"\n [class.st-tab--active]=\"state.activeTab() === 'keyboard'\"\n (click)=\"state.activeTab.set('keyboard')\">\n Keyboard\n </button>\n <button\n class=\"st-tab\"\n [class.st-tab--active]=\"state.activeTab() === 'tree'\"\n (click)=\"state.activeTab.set('tree')\">\n ARIA Tree\n </button>\n <button\n class=\"st-tab\"\n [class.st-tab--active]=\"state.activeTab() === 'sr'\"\n (click)=\"state.activeTab.set('sr')\">\n Screen Reader\n </button>\n </div>\n\n <div class=\"a11y-content\">\n @if (disabled()) {\n <div class=\"a11y-disabled\"> Accessibility audit disabled for this component. </div>\n } @else {\n @switch (state.activeTab()) {\n @case ('violations') {\n <prism-a11y-violations />\n }\n @case ('keyboard') {\n <prism-a11y-keyboard />\n }\n @case ('tree') {\n <prism-a11y-tree />\n }\n @case ('sr') {\n <prism-a11y-sr />\n }\n }\n }\n </div>\n</div>\n", styles: [":host {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.a11y-panel {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.subtabs {\n position: sticky;\n top: 0;\n z-index: 2;\n display: flex;\n gap: 2px;\n padding: 10px 20px 0;\n background: var(--prism-bg-elevated);\n border-bottom: 1px solid var(--prism-border);\n}\n\n.st-tab {\n position: relative;\n display: flex;\n gap: 6px;\n align-items: center;\n padding: 7px 12px;\n font-family: var(--font-sans);\n font-size: 12px;\n font-weight: 500;\n color: var(--prism-text-muted);\n cursor: pointer;\n background: none;\n border: none;\n border-radius: var(--radius-sm) var(--radius-sm) 0 0;\n transition: color var(--dur-fast);\n}\n\n.st-tab:hover {\n color: var(--prism-text-2);\n}\n\n.st-tab--active {\n color: var(--prism-text);\n}\n\n.st-tab--active::after {\n position: absolute;\n right: 8px;\n bottom: -1px;\n left: 8px;\n height: 2px;\n content: '';\n background: var(--prism-primary);\n border-radius: 1px;\n}\n\n.st-badge {\n display: grid;\n place-items: center;\n min-width: 16px;\n height: 16px;\n padding: 0 5px;\n font-family: var(--font-mono);\n font-size: 10px;\n font-weight: 700;\n color: var(--prism-primary);\n background: color-mix(in srgb, var(--prism-primary) 18%, transparent);\n border-radius: 8px;\n}\n\n.st-badge--ok {\n color: var(--prism-success);\n background: color-mix(in srgb, var(--prism-success) 18%, transparent);\n}\n\n.st-badge--warn {\n color: var(--prism-warn);\n background: color-mix(in srgb, var(--prism-warn) 18%, transparent);\n}\n\n.a11y-content {\n flex: 1;\n min-height: 0;\n overflow: auto;\n}\n\n.a11y-disabled {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n font-size: 13px;\n color: var(--prism-text-muted);\n}\n"] }]
76
+ args: [{ selector: 'prism-a11y-panel', standalone: true, imports: [A11yViolationsComponent, A11yKeyboardComponent, A11yTreeComponent, A11ySrComponent, PrismPanelToolbarComponent, PrismTabsComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"a11y-panel\">\n <prism-panel-toolbar>\n <prism-tabs\n toolbarStart\n size=\"sm\"\n ariaLabel=\"Accessibility views\"\n [items]=\"tabs()\"\n [active]=\"state.activeTab()\"\n (activeChange)=\"selectTab($event)\" />\n </prism-panel-toolbar>\n\n <div class=\"a11y-content\">\n @if (disabled()) {\n <div class=\"a11y-disabled\"> Accessibility audit disabled for this component. </div>\n } @else {\n @switch (state.activeTab()) {\n @case ('violations') {\n <prism-a11y-violations />\n }\n @case ('keyboard') {\n <prism-a11y-keyboard />\n }\n @case ('tree') {\n <prism-a11y-tree />\n }\n @case ('sr') {\n <prism-a11y-sr />\n }\n }\n }\n </div>\n</div>\n", styles: [":host {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.a11y-panel {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.a11y-content {\n flex: 1;\n min-height: 0;\n container-type: inline-size;\n overflow: auto;\n}\n\n.a11y-disabled {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100px;\n font-size: 13px;\n color: var(--prism-text-muted);\n}\n"] }]
99
77
  }], null, { activeComponent: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeComponent", required: false }] }] }); })();
100
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yPanelComponent, { className: "A11yPanelComponent", filePath: "app/panels/a11y/a11y-panel.component.ts", lineNumber: 19 }); })();
78
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(A11yPanelComponent, { className: "A11yPanelComponent", filePath: "app/panels/a11y/a11y-panel.component.ts", lineNumber: 22 }); })();
@@ -1,12 +1,17 @@
1
+ import type { StatusTone } from '../../../plugin/status.js';
1
2
  import * as i0 from "@angular/core";
3
+ /**
4
+ * The a11y score as a ring, drawn in the status tone of the grade rather than
5
+ * the brand gradient: a rated value takes its verdict's colour everywhere. The
6
+ * figure itself is set by the metric card around it.
7
+ */
2
8
  export declare class A11yScoreComponent {
3
9
  readonly score: import("@angular/core").InputSignal<number>;
4
- readonly compact: import("@angular/core").InputSignal<boolean>;
5
- protected readonly gradientId: string;
10
+ readonly tone: import("@angular/core").InputSignal<StatusTone>;
6
11
  protected readonly R = 54;
7
12
  protected readonly CIRC: number;
8
13
  protected readonly dashOffset: import("@angular/core").Signal<number>;
9
14
  static ɵfac: i0.ɵɵFactoryDeclaration<A11yScoreComponent, never>;
10
- static ɵcmp: i0.ɵɵComponentDeclaration<A11yScoreComponent, "prism-a11y-score", never, { "score": { "alias": "score"; "required": true; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<A11yScoreComponent, "prism-a11y-score", never, { "score": { "alias": "score"; "required": true; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
11
16
  }
12
17
  //# sourceMappingURL=a11y-score.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"a11y-score.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-score.component.ts"],"names":[],"mappings":";AAMA,qBAOa,kBAAkB;IAC3B,QAAQ,CAAC,KAAK,8CAA4B;IAC1C,QAAQ,CAAC,OAAO,+CAAgB;IAEhC,SAAS,CAAC,QAAQ,CAAC,UAAU,SAA0B;IACvD,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAK;IACzB,SAAS,CAAC,QAAQ,CAAC,IAAI,SAAiB;IAExC,SAAS,CAAC,QAAQ,CAAC,UAAU,yCAAwE;yCAR5F,kBAAkB;2CAAlB,kBAAkB;CAS9B"}
1
+ {"version":3,"file":"a11y-score.component.d.ts","sourceRoot":"","sources":["../../../../src/app/panels/a11y/a11y-score.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;;AAK5D;;;;GAIG;AACH,qBAQa,kBAAkB;IAC3B,QAAQ,CAAC,KAAK,8CAA4B;IAC1C,QAAQ,CAAC,IAAI,kDAA2B;IAExC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAK;IACzB,SAAS,CAAC,QAAQ,CAAC,IAAI,SAAiB;IAExC,SAAS,CAAC,QAAQ,CAAC,UAAU,yCAAoG;yCAPxH,kBAAkB;2CAAlB,kBAAkB;CAQ9B"}