@ng-prism/core 22.6.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 (377) hide show
  1. package/README.md +11 -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 +3 -2
  14. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts.map +1 -1
  15. package/dist/app/canvas/prism-canvas-toolbar.component.js +89 -97
  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/component-head/head-metrics.d.ts +35 -19
  19. package/dist/app/component-head/head-metrics.d.ts.map +1 -1
  20. package/dist/app/component-head/head-metrics.js +57 -27
  21. package/dist/app/component-head/pipe-facts.d.ts +9 -0
  22. package/dist/app/component-head/pipe-facts.d.ts.map +1 -0
  23. package/dist/app/component-head/pipe-facts.js +15 -0
  24. package/dist/app/component-head/prism-component-head.component.d.ts +19 -22
  25. package/dist/app/component-head/prism-component-head.component.d.ts.map +1 -1
  26. package/dist/app/component-head/prism-component-head.component.js +80 -96
  27. package/dist/app/component-head/prism-head-gauge.component.d.ts +8 -12
  28. package/dist/app/component-head/prism-head-gauge.component.d.ts.map +1 -1
  29. package/dist/app/component-head/prism-head-gauge.component.js +51 -67
  30. package/dist/app/component-head/prism-head-info.component.d.ts +13 -2
  31. package/dist/app/component-head/prism-head-info.component.d.ts.map +1 -1
  32. package/dist/app/component-head/prism-head-info.component.js +57 -16
  33. package/dist/app/component-head/prism-stat.component.d.ts +4 -5
  34. package/dist/app/component-head/prism-stat.component.d.ts.map +1 -1
  35. package/dist/app/component-head/prism-stat.component.js +16 -12
  36. package/dist/app/component-head/service-facts.d.ts +8 -0
  37. package/dist/app/component-head/service-facts.d.ts.map +1 -0
  38. package/dist/app/component-head/service-facts.js +11 -0
  39. package/dist/app/controls/boolean-control.component.js +2 -2
  40. package/dist/app/controls/json-control.component.js +2 -2
  41. package/dist/app/controls/union-control.component.js +4 -3
  42. package/dist/app/header/header-brand.d.ts +25 -0
  43. package/dist/app/header/header-brand.d.ts.map +1 -0
  44. package/dist/app/header/header-brand.js +10 -0
  45. package/dist/app/header/prism-header.component.d.ts +2 -2
  46. package/dist/app/header/prism-header.component.d.ts.map +1 -1
  47. package/dist/app/header/prism-header.component.js +73 -57
  48. package/dist/app/icons/icon-registry.d.ts.map +1 -1
  49. package/dist/app/icons/icon-registry.js +4 -1
  50. package/dist/app/index.d.ts +12 -0
  51. package/dist/app/index.d.ts.map +1 -1
  52. package/dist/app/index.js +12 -1
  53. package/dist/app/layout-menu/prism-layout-menu.component.d.ts +3 -0
  54. package/dist/app/layout-menu/prism-layout-menu.component.d.ts.map +1 -1
  55. package/dist/app/layout-menu/prism-layout-menu.component.js +72 -58
  56. package/dist/app/overview/open-in-playground.d.ts +8 -0
  57. package/dist/app/overview/open-in-playground.d.ts.map +1 -1
  58. package/dist/app/overview/open-in-playground.js +13 -0
  59. package/dist/app/overview/overview-matrix.d.ts +10 -4
  60. package/dist/app/overview/overview-matrix.d.ts.map +1 -1
  61. package/dist/app/overview/overview-matrix.js +3 -3
  62. package/dist/app/overview/prism-overview-cell.component.d.ts +6 -2
  63. package/dist/app/overview/prism-overview-cell.component.d.ts.map +1 -1
  64. package/dist/app/overview/prism-overview-cell.component.js +35 -24
  65. package/dist/app/overview/prism-overview-matrix.component.js +46 -55
  66. package/dist/app/page-renderer/prism-page-renderer.component.js +2 -2
  67. package/dist/app/panels/a11y/a11y-header-badge.component.d.ts +1 -4
  68. package/dist/app/panels/a11y/a11y-header-badge.component.d.ts.map +1 -1
  69. package/dist/app/panels/a11y/a11y-header-badge.component.js +8 -19
  70. package/dist/app/panels/a11y/a11y-keyboard-overlay.component.js +2 -2
  71. package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts +1 -0
  72. package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts.map +1 -1
  73. package/dist/app/panels/a11y/a11y-overlay-host.component.js +4 -3
  74. package/dist/app/panels/a11y/a11y-panel.component.d.ts +4 -1
  75. package/dist/app/panels/a11y/a11y-panel.component.d.ts.map +1 -1
  76. package/dist/app/panels/a11y/a11y-panel.component.js +32 -54
  77. package/dist/app/panels/a11y/a11y-score.component.d.ts +8 -3
  78. package/dist/app/panels/a11y/a11y-score.component.d.ts.map +1 -1
  79. package/dist/app/panels/a11y/a11y-score.component.js +19 -35
  80. package/dist/app/panels/a11y/a11y-sr-overlay.component.js +2 -2
  81. package/dist/app/panels/a11y/a11y-sr.component.js +2 -2
  82. package/dist/app/panels/a11y/a11y-summary.d.ts.map +1 -1
  83. package/dist/app/panels/a11y/a11y-summary.js +8 -1
  84. package/dist/app/panels/a11y/a11y-tree.component.js +2 -2
  85. package/dist/app/panels/a11y/a11y-violations.component.d.ts +23 -2
  86. package/dist/app/panels/a11y/a11y-violations.component.d.ts.map +1 -1
  87. package/dist/app/panels/a11y/a11y-violations.component.js +104 -89
  88. package/dist/app/panels/a11y/severity.d.ts +9 -0
  89. package/dist/app/panels/a11y/severity.d.ts.map +1 -0
  90. package/dist/app/panels/a11y/severity.js +12 -0
  91. package/dist/app/panels/controls/non-editable-input-types.d.ts +9 -1
  92. package/dist/app/panels/controls/non-editable-input-types.d.ts.map +1 -1
  93. package/dist/app/panels/controls/non-editable-input-types.js +18 -0
  94. package/dist/app/panels/controls/prism-controls-panel.component.d.ts +2 -1
  95. package/dist/app/panels/controls/prism-controls-panel.component.d.ts.map +1 -1
  96. package/dist/app/panels/controls/prism-controls-panel.component.js +77 -59
  97. package/dist/app/panels/events/prism-events-panel.component.d.ts +2 -0
  98. package/dist/app/panels/events/prism-events-panel.component.d.ts.map +1 -1
  99. package/dist/app/panels/events/prism-events-panel.component.js +20 -7
  100. package/dist/app/panels/events/prism-json-node.utils.d.ts +6 -0
  101. package/dist/app/panels/events/prism-json-node.utils.d.ts.map +1 -1
  102. package/dist/app/panels/events/prism-json-node.utils.js +8 -0
  103. package/dist/app/panels/panel-host/addon-panels.d.ts +11 -0
  104. package/dist/app/panels/panel-host/addon-panels.d.ts.map +1 -0
  105. package/dist/app/panels/panel-host/addon-panels.js +12 -0
  106. package/dist/app/panels/panel-host/panel-badge.d.ts +22 -0
  107. package/dist/app/panels/panel-host/panel-badge.d.ts.map +1 -1
  108. package/dist/app/panels/panel-host/panel-badge.js +56 -11
  109. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts +4 -1
  110. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts.map +1 -1
  111. package/dist/app/panels/panel-host/prism-panel-host.component.js +36 -70
  112. package/dist/app/renderer/composition.d.ts +20 -0
  113. package/dist/app/renderer/composition.d.ts.map +1 -0
  114. package/dist/app/renderer/composition.js +26 -0
  115. package/dist/app/renderer/input-bindings.d.ts +13 -1
  116. package/dist/app/renderer/input-bindings.d.ts.map +1 -1
  117. package/dist/app/renderer/input-bindings.js +22 -1
  118. package/dist/app/renderer/prism-renderer.component.d.ts +8 -1
  119. package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
  120. package/dist/app/renderer/prism-renderer.component.js +40 -28
  121. package/dist/app/renderer/snippet-generator.d.ts +14 -2
  122. package/dist/app/renderer/snippet-generator.d.ts.map +1 -1
  123. package/dist/app/renderer/snippet-generator.js +137 -82
  124. package/dist/app/services/navigation-item.d.ts +10 -0
  125. package/dist/app/services/navigation-item.d.ts.map +1 -0
  126. package/dist/app/services/navigation-item.js +20 -0
  127. package/dist/app/services/navigation-item.types.d.ts +8 -0
  128. package/dist/app/services/navigation-item.types.d.ts.map +1 -1
  129. package/dist/app/services/prism-layout.service.d.ts +12 -0
  130. package/dist/app/services/prism-layout.service.d.ts.map +1 -1
  131. package/dist/app/services/prism-layout.service.js +17 -7
  132. package/dist/app/services/prism-manifest.service.d.ts +4 -0
  133. package/dist/app/services/prism-manifest.service.d.ts.map +1 -1
  134. package/dist/app/services/prism-manifest.service.js +4 -0
  135. package/dist/app/services/prism-navigation.service.d.ts +12 -0
  136. package/dist/app/services/prism-navigation.service.d.ts.map +1 -1
  137. package/dist/app/services/prism-navigation.service.js +85 -19
  138. package/dist/app/services/prism-panel.service.d.ts +7 -3
  139. package/dist/app/services/prism-panel.service.d.ts.map +1 -1
  140. package/dist/app/services/prism-panel.service.js +13 -4
  141. package/dist/app/services/prism-renderer.service.d.ts +6 -0
  142. package/dist/app/services/prism-renderer.service.d.ts.map +1 -1
  143. package/dist/app/services/prism-renderer.service.js +40 -6
  144. package/dist/app/services/prism-search.service.d.ts +4 -0
  145. package/dist/app/services/prism-search.service.d.ts.map +1 -1
  146. package/dist/app/services/prism-search.service.js +29 -6
  147. package/dist/app/services/prism-theme.service.d.ts +11 -3
  148. package/dist/app/services/prism-theme.service.d.ts.map +1 -1
  149. package/dist/app/services/prism-theme.service.js +27 -19
  150. package/dist/app/services/prism-url-state.service.d.ts.map +1 -1
  151. package/dist/app/services/prism-url-state.service.js +42 -4
  152. package/dist/app/shared/badge.types.d.ts +7 -0
  153. package/dist/app/shared/badge.types.d.ts.map +1 -0
  154. package/dist/app/shared/badge.types.js +9 -0
  155. package/dist/app/shared/brand-mark.d.ts +35 -0
  156. package/dist/app/shared/brand-mark.d.ts.map +1 -0
  157. package/dist/app/shared/brand-mark.js +52 -0
  158. package/dist/app/shared/metric-bar.d.ts +6 -0
  159. package/dist/app/shared/metric-bar.d.ts.map +1 -0
  160. package/dist/app/shared/metric-bar.js +7 -0
  161. package/dist/app/shared/prism-badge.component.d.ts +21 -0
  162. package/dist/app/shared/prism-badge.component.d.ts.map +1 -0
  163. package/dist/app/shared/prism-badge.component.js +68 -0
  164. package/dist/app/shared/prism-button.component.d.ts +12 -0
  165. package/dist/app/shared/prism-button.component.d.ts.map +1 -0
  166. package/dist/app/shared/prism-button.component.js +28 -0
  167. package/dist/app/shared/prism-icon-button.component.d.ts +17 -0
  168. package/dist/app/shared/prism-icon-button.component.d.ts.map +1 -0
  169. package/dist/app/shared/prism-icon-button.component.js +37 -0
  170. package/dist/app/shared/prism-list-row.component.d.ts +17 -0
  171. package/dist/app/shared/prism-list-row.component.d.ts.map +1 -0
  172. package/dist/app/shared/prism-list-row.component.js +57 -0
  173. package/dist/app/shared/prism-logo.component.d.ts +24 -0
  174. package/dist/app/shared/prism-logo.component.d.ts.map +1 -0
  175. package/dist/app/shared/prism-logo.component.js +77 -0
  176. package/dist/app/shared/prism-metric-badge.component.d.ts +9 -4
  177. package/dist/app/shared/prism-metric-badge.component.d.ts.map +1 -1
  178. package/dist/app/shared/prism-metric-badge.component.js +33 -12
  179. package/dist/app/shared/prism-metric-card.component.d.ts +30 -0
  180. package/dist/app/shared/prism-metric-card.component.d.ts.map +1 -0
  181. package/dist/app/shared/prism-metric-card.component.js +111 -0
  182. package/dist/app/shared/prism-panel-toolbar.component.d.ts +13 -0
  183. package/dist/app/shared/prism-panel-toolbar.component.d.ts.map +1 -0
  184. package/dist/app/shared/prism-panel-toolbar.component.js +28 -0
  185. package/dist/app/shared/prism-segmented.component.d.ts +25 -0
  186. package/dist/app/shared/prism-segmented.component.d.ts.map +1 -0
  187. package/dist/app/shared/prism-segmented.component.js +77 -0
  188. package/dist/app/shared/prism-tabs.component.d.ts +44 -0
  189. package/dist/app/shared/prism-tabs.component.d.ts.map +1 -0
  190. package/dist/app/shared/prism-tabs.component.js +134 -0
  191. package/dist/app/shared/roving-focus.d.ts +13 -0
  192. package/dist/app/shared/roving-focus.d.ts.map +1 -0
  193. package/dist/app/shared/roving-focus.js +34 -0
  194. package/dist/app/shell/prism-shell.component.d.ts +13 -0
  195. package/dist/app/shell/prism-shell.component.d.ts.map +1 -1
  196. package/dist/app/shell/prism-shell.component.js +57 -28
  197. package/dist/app/shell/should-select-first.d.ts +17 -0
  198. package/dist/app/shell/should-select-first.d.ts.map +1 -0
  199. package/dist/app/shell/should-select-first.js +13 -0
  200. package/dist/app/sidebar/navigation-decorations.d.ts +23 -1
  201. package/dist/app/sidebar/navigation-decorations.d.ts.map +1 -1
  202. package/dist/app/sidebar/navigation-decorations.js +33 -2
  203. package/dist/app/sidebar/prism-sidebar.component.d.ts +5 -15
  204. package/dist/app/sidebar/prism-sidebar.component.d.ts.map +1 -1
  205. package/dist/app/sidebar/prism-sidebar.component.js +89 -77
  206. package/dist/app/theme/deprecated-tokens.d.ts +15 -0
  207. package/dist/app/theme/deprecated-tokens.d.ts.map +1 -0
  208. package/dist/app/theme/deprecated-tokens.js +22 -0
  209. package/dist/app/theme/favicon.d.ts +3 -0
  210. package/dist/app/theme/favicon.d.ts.map +1 -0
  211. package/dist/app/theme/favicon.js +3 -0
  212. package/dist/app/theme/prism-default-theme.d.ts.map +1 -1
  213. package/dist/app/theme/prism-default-theme.js +116 -61
  214. package/dist/app/theme/resolve-theme-tokens.d.ts +29 -0
  215. package/dist/app/theme/resolve-theme-tokens.d.ts.map +1 -0
  216. package/dist/app/theme/resolve-theme-tokens.js +43 -0
  217. package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts +4 -7
  218. package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts.map +1 -1
  219. package/dist/app/variant-ribbon/prism-variant-ribbon.component.js +31 -69
  220. package/dist/app/view-tab-bar/next-view-id.d.ts +7 -1
  221. package/dist/app/view-tab-bar/next-view-id.d.ts.map +1 -1
  222. package/dist/app/view-tab-bar/next-view-id.js +9 -1
  223. package/dist/app/view-tab-bar/panel-inputs.d.ts +28 -0
  224. package/dist/app/view-tab-bar/panel-inputs.d.ts.map +1 -0
  225. package/dist/app/view-tab-bar/panel-inputs.js +41 -0
  226. package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts +2 -3
  227. package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts.map +1 -1
  228. package/dist/app/view-tab-bar/prism-view-panel-host.component.js +9 -9
  229. package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts +6 -0
  230. package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts.map +1 -1
  231. package/dist/app/view-tab-bar/prism-view-tab-bar.component.js +22 -29
  232. package/dist/builder/config-loader/deprecated-options.d.ts +4 -2
  233. package/dist/builder/config-loader/deprecated-options.d.ts.map +1 -1
  234. package/dist/builder/config-loader/deprecated-options.js +13 -2
  235. package/dist/builder/manifest/composition-wrapper.generator.d.ts +14 -0
  236. package/dist/builder/manifest/composition-wrapper.generator.d.ts.map +1 -0
  237. package/dist/builder/manifest/composition-wrapper.generator.js +66 -0
  238. package/dist/builder/manifest/host-parser.d.ts +2 -0
  239. package/dist/builder/manifest/host-parser.d.ts.map +1 -1
  240. package/dist/builder/manifest/host-parser.js +9 -4
  241. package/dist/builder/manifest/manifest-imports.d.ts +34 -0
  242. package/dist/builder/manifest/manifest-imports.d.ts.map +1 -0
  243. package/dist/builder/manifest/manifest-imports.js +91 -0
  244. package/dist/builder/manifest/runtime-manifest.generator.d.ts +13 -0
  245. package/dist/builder/manifest/runtime-manifest.generator.d.ts.map +1 -1
  246. package/dist/builder/manifest/runtime-manifest.generator.js +135 -64
  247. package/dist/builder/manifest/selector-element.d.ts +16 -0
  248. package/dist/builder/manifest/selector-element.d.ts.map +1 -0
  249. package/dist/builder/manifest/selector-element.js +46 -0
  250. package/dist/builder/manifest/template-literal.d.ts +3 -0
  251. package/dist/builder/manifest/template-literal.d.ts.map +1 -0
  252. package/dist/builder/manifest/template-literal.js +4 -0
  253. package/dist/builder/plugin-runner/plugin-runner.d.ts.map +1 -1
  254. package/dist/builder/plugin-runner/plugin-runner.js +29 -26
  255. package/dist/builder/scanner/api/angular-decorators.d.ts +84 -0
  256. package/dist/builder/scanner/api/angular-decorators.d.ts.map +1 -0
  257. package/dist/builder/scanner/api/angular-decorators.js +157 -0
  258. package/dist/builder/scanner/api/component-api.extractor.d.ts +13 -0
  259. package/dist/builder/scanner/api/component-api.extractor.d.ts.map +1 -0
  260. package/dist/builder/scanner/api/component-api.extractor.js +104 -0
  261. package/dist/builder/scanner/api/doc-tags.d.ts +13 -0
  262. package/dist/builder/scanner/api/doc-tags.d.ts.map +1 -0
  263. package/dist/builder/scanner/api/doc-tags.js +101 -0
  264. package/dist/builder/scanner/api/export-index.d.ts +18 -0
  265. package/dist/builder/scanner/api/export-index.d.ts.map +1 -0
  266. package/dist/builder/scanner/api/export-index.js +22 -0
  267. package/dist/builder/scanner/api/member.extractor.d.ts +90 -0
  268. package/dist/builder/scanner/api/member.extractor.d.ts.map +1 -0
  269. package/dist/builder/scanner/api/member.extractor.js +270 -0
  270. package/dist/builder/scanner/api/pipe-api.extractor.d.ts +12 -0
  271. package/dist/builder/scanner/api/pipe-api.extractor.d.ts.map +1 -0
  272. package/dist/builder/scanner/api/pipe-api.extractor.js +52 -0
  273. package/dist/builder/scanner/api/service-api.extractor.d.ts +14 -0
  274. package/dist/builder/scanner/api/service-api.extractor.d.ts.map +1 -0
  275. package/dist/builder/scanner/api/service-api.extractor.js +119 -0
  276. package/dist/builder/scanner/api/setup.reader.d.ts +26 -0
  277. package/dist/builder/scanner/api/setup.reader.d.ts.map +1 -0
  278. package/dist/builder/scanner/api/setup.reader.js +89 -0
  279. package/dist/builder/scanner/api/type-collector.d.ts +24 -0
  280. package/dist/builder/scanner/api/type-collector.d.ts.map +1 -0
  281. package/dist/builder/scanner/api/type-collector.js +211 -0
  282. package/dist/builder/scanner/ast-utils.d.ts +8 -0
  283. package/dist/builder/scanner/ast-utils.d.ts.map +1 -1
  284. package/dist/builder/scanner/ast-utils.js +37 -1
  285. package/dist/builder/scanner/class-hierarchy.d.ts +5 -3
  286. package/dist/builder/scanner/class-hierarchy.d.ts.map +1 -1
  287. package/dist/builder/scanner/class-hierarchy.js +12 -6
  288. package/dist/builder/scanner/component.scanner.d.ts +60 -6
  289. package/dist/builder/scanner/component.scanner.d.ts.map +1 -1
  290. package/dist/builder/scanner/component.scanner.js +209 -57
  291. package/dist/builder/scanner/composition/compose-template.d.ts +36 -0
  292. package/dist/builder/scanner/composition/compose-template.d.ts.map +1 -0
  293. package/dist/builder/scanner/composition/compose-template.js +187 -0
  294. package/dist/builder/scanner/composition/declarables.d.ts +54 -0
  295. package/dist/builder/scanner/composition/declarables.d.ts.map +1 -0
  296. package/dist/builder/scanner/composition/declarables.js +182 -0
  297. package/dist/builder/scanner/composition/match-declarables.d.ts +43 -0
  298. package/dist/builder/scanner/composition/match-declarables.d.ts.map +1 -0
  299. package/dist/builder/scanner/composition/match-declarables.js +131 -0
  300. package/dist/builder/scanner/composition/read-composition.d.ts +77 -0
  301. package/dist/builder/scanner/composition/read-composition.d.ts.map +1 -0
  302. package/dist/builder/scanner/composition/read-composition.js +302 -0
  303. package/dist/builder/scanner/composition/template-elements.d.ts +12 -0
  304. package/dist/builder/scanner/composition/template-elements.d.ts.map +1 -0
  305. package/dist/builder/scanner/composition/template-elements.js +41 -0
  306. package/dist/builder/scanner/index.d.ts +4 -0
  307. package/dist/builder/scanner/index.d.ts.map +1 -1
  308. package/dist/builder/scanner/index.js +2 -0
  309. package/dist/builder/scanner/input.extractor.d.ts +31 -2
  310. package/dist/builder/scanner/input.extractor.d.ts.map +1 -1
  311. package/dist/builder/scanner/input.extractor.js +52 -15
  312. package/dist/builder/scanner/pipe.scanner.d.ts +29 -0
  313. package/dist/builder/scanner/pipe.scanner.d.ts.map +1 -0
  314. package/dist/builder/scanner/pipe.scanner.js +65 -0
  315. package/dist/builder/scanner/scanner.d.ts +25 -1
  316. package/dist/builder/scanner/scanner.d.ts.map +1 -1
  317. package/dist/builder/scanner/scanner.js +60 -26
  318. package/dist/builder/scanner/service/angular-decorators.d.ts +80 -0
  319. package/dist/builder/scanner/service/angular-decorators.d.ts.map +1 -0
  320. package/dist/builder/scanner/service/angular-decorators.js +154 -0
  321. package/dist/builder/scanner/service/doc-tags.d.ts +13 -0
  322. package/dist/builder/scanner/service/doc-tags.d.ts.map +1 -0
  323. package/dist/builder/scanner/service/doc-tags.js +97 -0
  324. package/dist/builder/scanner/service/export-index.d.ts +18 -0
  325. package/dist/builder/scanner/service/export-index.d.ts.map +1 -0
  326. package/dist/builder/scanner/service/export-index.js +22 -0
  327. package/dist/builder/scanner/service/member.extractor.d.ts +65 -0
  328. package/dist/builder/scanner/service/member.extractor.d.ts.map +1 -0
  329. package/dist/builder/scanner/service/member.extractor.js +216 -0
  330. package/dist/builder/scanner/service/pipe-api.extractor.d.ts +12 -0
  331. package/dist/builder/scanner/service/pipe-api.extractor.d.ts.map +1 -0
  332. package/dist/builder/scanner/service/pipe-api.extractor.js +72 -0
  333. package/dist/builder/scanner/service/service-api.extractor.d.ts +14 -0
  334. package/dist/builder/scanner/service/service-api.extractor.d.ts.map +1 -0
  335. package/dist/builder/scanner/service/service-api.extractor.js +119 -0
  336. package/dist/builder/scanner/service/setup.reader.d.ts +26 -0
  337. package/dist/builder/scanner/service/setup.reader.d.ts.map +1 -0
  338. package/dist/builder/scanner/service/setup.reader.js +89 -0
  339. package/dist/builder/scanner/service/type-collector.d.ts +23 -0
  340. package/dist/builder/scanner/service/type-collector.d.ts.map +1 -0
  341. package/dist/builder/scanner/service/type-collector.js +210 -0
  342. package/dist/builder/scanner/service.scanner.d.ts +26 -0
  343. package/dist/builder/scanner/service.scanner.d.ts.map +1 -0
  344. package/dist/builder/scanner/service.scanner.js +61 -0
  345. package/dist/builder/scanner/showcase-diagnostics.d.ts +60 -1
  346. package/dist/builder/scanner/showcase-diagnostics.d.ts.map +1 -1
  347. package/dist/builder/scanner/showcase-diagnostics.js +114 -1
  348. package/dist/builder/shared/prism-pipeline.d.ts +6 -0
  349. package/dist/builder/shared/prism-pipeline.d.ts.map +1 -1
  350. package/dist/builder/shared/prism-pipeline.js +43 -5
  351. package/dist/decorator/index.d.ts +1 -1
  352. package/dist/decorator/index.d.ts.map +1 -1
  353. package/dist/decorator/showcase.types.d.ts +79 -9
  354. package/dist/decorator/showcase.types.d.ts.map +1 -1
  355. package/dist/plugin/index.d.ts +6 -1
  356. package/dist/plugin/index.d.ts.map +1 -1
  357. package/dist/plugin/index.js +4 -0
  358. package/dist/plugin/pipe.types.d.ts +36 -0
  359. package/dist/plugin/pipe.types.d.ts.map +1 -0
  360. package/dist/plugin/pipe.types.js +1 -0
  361. package/dist/plugin/plugin.types.d.ts +140 -3
  362. package/dist/plugin/plugin.types.d.ts.map +1 -1
  363. package/dist/plugin/service.types.d.ts +124 -0
  364. package/dist/plugin/service.types.d.ts.map +1 -0
  365. package/dist/plugin/service.types.js +1 -0
  366. package/dist/plugin/status.d.ts +27 -0
  367. package/dist/plugin/status.d.ts.map +1 -0
  368. package/dist/plugin/status.js +26 -0
  369. package/dist/shared/composition.d.ts +30 -0
  370. package/dist/shared/composition.d.ts.map +1 -0
  371. package/dist/shared/composition.js +29 -0
  372. package/dist/shared/pseudo-state.type.d.ts +2 -1
  373. package/dist/shared/pseudo-state.type.d.ts.map +1 -1
  374. package/dist/shared/void-elements.d.ts +3 -0
  375. package/dist/shared/void-elements.d.ts.map +1 -0
  376. package/dist/shared/void-elements.js +2 -0
  377. package/package.json +1 -1
@@ -5,87 +5,78 @@ import * as i0 from "@angular/core";
5
5
  const _forTrack0 = ($index, $item) => $item.column.state;
6
6
  const _forTrack1 = ($index, $item) => $item.variant;
7
7
  const _forTrack2 = ($index, $item) => $item.state;
8
- function PrismOverviewMatrixComponent_For_5_Conditional_5_Template(rf, ctx) { if (rf & 1) {
8
+ function PrismOverviewMatrixComponent_For_5_Conditional_4_Template(rf, ctx) { if (rf & 1) {
9
9
  i0.ɵɵelementStart(0, "span", 6);
10
10
  i0.ɵɵtext(1);
11
11
  i0.ɵɵelementEnd();
12
12
  } if (rf & 2) {
13
+ const fit_r1 = ctx;
14
+ i0.ɵɵattribute("title", fit_r1.title);
13
15
  i0.ɵɵadvance();
14
- i0.ɵɵtextInterpolate(ctx);
16
+ i0.ɵɵtextInterpolate(fit_r1.text);
15
17
  } }
16
18
  function PrismOverviewMatrixComponent_For_5_Template(rf, ctx) { if (rf & 1) {
17
- i0.ɵɵelementStart(0, "div", 3)(1, "span", 4);
18
- i0.ɵɵtext(2);
19
- i0.ɵɵelementEnd();
20
- i0.ɵɵelementStart(3, "span", 5);
21
- i0.ɵɵtext(4);
19
+ i0.ɵɵelementStart(0, "div", 3)(1, "span", 4)(2, "span", 5);
20
+ i0.ɵɵtext(3);
22
21
  i0.ɵɵelementEnd();
23
- i0.ɵɵconditionalCreate(5, PrismOverviewMatrixComponent_For_5_Conditional_5_Template, 2, 1, "span", 6);
22
+ i0.ɵɵconditionalCreate(4, PrismOverviewMatrixComponent_For_5_Conditional_4_Template, 2, 2, "span", 6);
24
23
  i0.ɵɵelementEnd();
24
+ i0.ɵɵelementStart(5, "span", 7);
25
+ i0.ɵɵtext(6);
26
+ i0.ɵɵelementEnd()();
25
27
  } if (rf & 2) {
26
- let tmp_14_0;
27
- const header_r1 = ctx.$implicit;
28
- i0.ɵɵattribute("data-fits-nowhere", header_r1.fitsNowhere ? "" : null)("title", header_r1.fitsNowhere ? header_r1.column.title + " fits no variant; check its selectors" : null);
29
- i0.ɵɵadvance(2);
30
- i0.ɵɵtextInterpolate(header_r1.column.title);
31
- i0.ɵɵadvance(2);
32
- i0.ɵɵtextInterpolate(header_r1.column.signature);
28
+ let tmp_13_0;
29
+ const header_r2 = ctx.$implicit;
30
+ i0.ɵɵattribute("data-fits-nowhere", header_r2.fitsNowhere ? "" : null)("title", header_r2.fitsNowhere ? header_r2.column.title + " fits no variant; check its selectors" : null);
31
+ i0.ɵɵadvance(3);
32
+ i0.ɵɵtextInterpolate(header_r2.column.title);
33
33
  i0.ɵɵadvance();
34
- i0.ɵɵconditional((tmp_14_0 = header_r1.fit) ? 5 : -1, tmp_14_0);
34
+ i0.ɵɵconditional((tmp_13_0 = header_r2.fit) ? 4 : -1, tmp_13_0);
35
+ i0.ɵɵadvance(2);
36
+ i0.ɵɵtextInterpolate(header_r2.column.signature);
35
37
  } }
36
38
  function PrismOverviewMatrixComponent_For_7_Conditional_4_Template(rf, ctx) { if (rf & 1) {
37
- i0.ɵɵelementStart(0, "span", 9);
38
- i0.ɵɵtext(1);
39
- i0.ɵɵelementEnd();
40
- } if (rf & 2) {
41
- i0.ɵɵadvance();
42
- i0.ɵɵtextInterpolate(ctx);
43
- } }
44
- function PrismOverviewMatrixComponent_For_7_Conditional_5_Template(rf, ctx) { if (rf & 1) {
45
39
  i0.ɵɵelementStart(0, "div", 10)(1, "div", 11);
46
40
  i0.ɵɵelement(2, "prism-overview-cell", 12);
47
41
  i0.ɵɵelementEnd()();
48
42
  } if (rf & 2) {
49
- const row_r2 = i0.ɵɵnextContext().$implicit;
50
- const ctx_r2 = i0.ɵɵnextContext();
43
+ const row_r3 = i0.ɵɵnextContext().$implicit;
44
+ const ctx_r3 = i0.ɵɵnextContext();
51
45
  i0.ɵɵadvance(2);
52
- i0.ɵɵproperty("component", ctx_r2.component())("index", row_r2.variant);
46
+ i0.ɵɵproperty("component", ctx_r3.component())("index", row_r3.variant);
53
47
  } }
54
- function PrismOverviewMatrixComponent_For_7_Conditional_6_For_1_Template(rf, ctx) { if (rf & 1) {
55
- const _r4 = i0.ɵɵgetCurrentView();
48
+ function PrismOverviewMatrixComponent_For_7_Conditional_5_For_1_Template(rf, ctx) { if (rf & 1) {
49
+ const _r5 = i0.ɵɵgetCurrentView();
56
50
  i0.ɵɵelementStart(0, "div", 13)(1, "div", 11)(2, "prism-overview-cell", 14);
57
- i0.ɵɵlistener("fitChange", function PrismOverviewMatrixComponent_For_7_Conditional_6_For_1_Template_prism_overview_cell_fitChange_2_listener($event) { const column_r5 = i0.ɵɵrestoreView(_r4).$implicit; const row_r2 = i0.ɵɵnextContext(2).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onFit(row_r2.variant, column_r5.state, $event)); });
51
+ i0.ɵɵlistener("fitChange", function PrismOverviewMatrixComponent_For_7_Conditional_5_For_1_Template_prism_overview_cell_fitChange_2_listener($event) { const column_r6 = i0.ɵɵrestoreView(_r5).$implicit; const row_r3 = i0.ɵɵnextContext(2).$implicit; const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.onFit(row_r3.variant, column_r6.state, $event)); });
58
52
  i0.ɵɵelementEnd()()();
59
53
  } if (rf & 2) {
60
- const column_r5 = ctx.$implicit;
61
- const row_r2 = i0.ɵɵnextContext(2).$implicit;
62
- const ctx_r2 = i0.ɵɵnextContext();
54
+ const column_r6 = ctx.$implicit;
55
+ const row_r3 = i0.ɵɵnextContext(2).$implicit;
56
+ const ctx_r3 = i0.ɵɵnextContext();
63
57
  i0.ɵɵadvance(2);
64
- i0.ɵɵproperty("component", ctx_r2.component())("index", row_r2.variant)("state", column_r5.state);
58
+ i0.ɵɵproperty("component", ctx_r3.component())("index", row_r3.variant)("state", column_r6.state);
65
59
  } }
66
- function PrismOverviewMatrixComponent_For_7_Conditional_6_Template(rf, ctx) { if (rf & 1) {
67
- i0.ɵɵrepeaterCreate(0, PrismOverviewMatrixComponent_For_7_Conditional_6_For_1_Template, 3, 3, "div", 13, _forTrack2);
60
+ function PrismOverviewMatrixComponent_For_7_Conditional_5_Template(rf, ctx) { if (rf & 1) {
61
+ i0.ɵɵrepeaterCreate(0, PrismOverviewMatrixComponent_For_7_Conditional_5_For_1_Template, 3, 3, "div", 13, _forTrack2);
68
62
  } if (rf & 2) {
69
- const ctx_r2 = i0.ɵɵnextContext(2);
70
- i0.ɵɵrepeater(ctx_r2.matrix().columns);
63
+ const ctx_r3 = i0.ɵɵnextContext(2);
64
+ i0.ɵɵrepeater(ctx_r3.matrix().columns);
71
65
  } }
72
66
  function PrismOverviewMatrixComponent_For_7_Template(rf, ctx) { if (rf & 1) {
73
- i0.ɵɵelementStart(0, "div", 1)(1, "div", 7)(2, "span", 8);
67
+ i0.ɵɵelementStart(0, "div", 1)(1, "div", 8)(2, "span", 9);
74
68
  i0.ɵɵtext(3);
75
- i0.ɵɵelementEnd();
76
- i0.ɵɵconditionalCreate(4, PrismOverviewMatrixComponent_For_7_Conditional_4_Template, 2, 1, "span", 9);
77
- i0.ɵɵelementEnd();
78
- i0.ɵɵconditionalCreate(5, PrismOverviewMatrixComponent_For_7_Conditional_5_Template, 3, 2, "div", 10)(6, PrismOverviewMatrixComponent_For_7_Conditional_6_Template, 2, 0);
69
+ i0.ɵɵelementEnd()();
70
+ i0.ɵɵconditionalCreate(4, PrismOverviewMatrixComponent_For_7_Conditional_4_Template, 3, 2, "div", 10)(5, PrismOverviewMatrixComponent_For_7_Conditional_5_Template, 2, 0);
79
71
  i0.ɵɵelementEnd();
80
72
  } if (rf & 2) {
81
- let tmp_11_0;
82
- const row_r2 = ctx.$implicit;
83
- i0.ɵɵadvance(3);
84
- i0.ɵɵtextInterpolate(row_r2.title);
73
+ const row_r3 = ctx.$implicit;
85
74
  i0.ɵɵadvance();
86
- i0.ɵɵconditional((tmp_11_0 = row_r2.note) ? 4 : -1, tmp_11_0);
75
+ i0.ɵɵattribute("title", row_r3.note);
76
+ i0.ɵɵadvance(2);
77
+ i0.ɵɵtextInterpolate(row_r3.title);
87
78
  i0.ɵɵadvance();
88
- i0.ɵɵconditional(row_r2.optedOut ? 5 : 6);
79
+ i0.ɵɵconditional(row_r3.optedOut ? 4 : 5);
89
80
  } }
90
81
  /**
91
82
  * The states a component has been warned about, by index. Module-level and weak,
@@ -140,13 +131,13 @@ export class PrismOverviewMatrixComponent {
140
131
  }
141
132
  }
142
133
  static ɵfac = function PrismOverviewMatrixComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismOverviewMatrixComponent)(); };
143
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismOverviewMatrixComponent, selectors: [["prism-overview-matrix"]], inputs: { component: [1, "component"] }, decls: 8, vars: 3, consts: [["role", "table", 1, "matrix"], ["role", "row", 1, "matrix__row"], ["role", "columnheader", 1, "matrix__corner"], ["role", "columnheader", 1, "matrix__head"], [1, "matrix__title"], [1, "matrix__signature"], [1, "matrix__fit"], ["role", "rowheader", 1, "matrix__variant"], [1, "matrix__name"], [1, "matrix__note"], ["role", "cell", 1, "matrix__slot", "matrix__slot--span"], ["role", "list", 1, "matrix__list"], ["mode", "matrix", 3, "component", "index"], ["role", "cell", 1, "matrix__slot"], ["mode", "matrix", 3, "fitChange", "component", "index", "state"]], template: function PrismOverviewMatrixComponent_Template(rf, ctx) { if (rf & 1) {
134
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismOverviewMatrixComponent, selectors: [["prism-overview-matrix"]], inputs: { component: [1, "component"] }, decls: 8, vars: 3, consts: [["role", "table", 1, "matrix"], ["role", "row", 1, "matrix__row"], ["role", "columnheader", 1, "matrix__corner"], ["role", "columnheader", 1, "matrix__head"], [1, "matrix__head-line"], [1, "matrix__title"], [1, "matrix__fit"], [1, "matrix__signature"], ["role", "rowheader", 1, "matrix__variant"], [1, "matrix__name"], ["role", "cell", 1, "matrix__slot", "matrix__slot--span"], ["role", "list", 1, "matrix__list"], ["mode", "matrix", 3, "component", "index"], ["role", "cell", 1, "matrix__slot"], ["mode", "matrix", 3, "fitChange", "component", "index", "state"]], template: function PrismOverviewMatrixComponent_Template(rf, ctx) { if (rf & 1) {
144
135
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2);
145
- i0.ɵɵtext(3, " Variant ");
136
+ i0.ɵɵtext(3, " Variant \\ State ");
146
137
  i0.ɵɵelementEnd();
147
- i0.ɵɵrepeaterCreate(4, PrismOverviewMatrixComponent_For_5_Template, 6, 5, "div", 3, _forTrack0);
138
+ i0.ɵɵrepeaterCreate(4, PrismOverviewMatrixComponent_For_5_Template, 7, 5, "div", 3, _forTrack0);
148
139
  i0.ɵɵelementEnd();
149
- i0.ɵɵrepeaterCreate(6, PrismOverviewMatrixComponent_For_7_Template, 7, 3, "div", 1, _forTrack1);
140
+ i0.ɵɵrepeaterCreate(6, PrismOverviewMatrixComponent_For_7_Template, 6, 3, "div", 1, _forTrack1);
150
141
  i0.ɵɵelementEnd();
151
142
  } if (rf & 2) {
152
143
  i0.ɵɵstyleProp("--%NS%matrix-columns", ctx.matrix().columns.length);
@@ -155,10 +146,10 @@ export class PrismOverviewMatrixComponent {
155
146
  i0.ɵɵrepeater(ctx.headers());
156
147
  i0.ɵɵadvance(2);
157
148
  i0.ɵɵrepeater(ctx.matrix().rows);
158
- } }, dependencies: [PrismOverviewCellComponent], styles: ["\n\n\n[_nghost-%COMP%] {\n display: flex;\n flex: 1 1 0;\n flex-direction: column;\n min-height: 0;\n}\n\n.matrix[_ngcontent-%COMP%] {\n --%NS%matrix-edge: var(--%NS%prism-border);\n\n display: grid;\n flex: 1 1 0;\n grid-template-columns: minmax(120px, max-content) repeat(var(--%NS%matrix-columns, 1), minmax(160px, 1fr));\n align-content: start;\n min-height: 0;\n overflow: auto;\n}\n\n\n\n.matrix__row[_ngcontent-%COMP%] {\n display: contents;\n}\n\n.matrix__corner[_ngcontent-%COMP%], \n.matrix__head[_ngcontent-%COMP%], \n.matrix__variant[_ngcontent-%COMP%] {\n position: sticky;\n display: flex;\n flex-direction: column;\n gap: var(--%NS%sp-1);\n min-width: 0;\n padding: var(--%NS%sp-3) var(--%NS%sp-4);\n background: var(--%NS%prism-bg-elevated);\n}\n\n.matrix__corner[_ngcontent-%COMP%], \n.matrix__head[_ngcontent-%COMP%] {\n top: 0;\n z-index: 2;\n justify-content: flex-end;\n border-bottom: 1px solid var(--%NS%matrix-edge);\n}\n\n.matrix__corner[_ngcontent-%COMP%], \n.matrix__variant[_ngcontent-%COMP%] {\n left: 0;\n z-index: 1;\n border-right: 1px solid var(--%NS%matrix-edge);\n}\n\n\n.matrix__corner[_ngcontent-%COMP%] {\n z-index: 3;\n font-family: var(--%NS%prism-font-mono);\n font-size: var(--%NS%fs-xs);\n color: var(--%NS%prism-text-muted);\n}\n\n.matrix__variant[_ngcontent-%COMP%] {\n justify-content: center;\n}\n\n.matrix__title[_ngcontent-%COMP%], \n.matrix__name[_ngcontent-%COMP%] {\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--%NS%fs-sm);\n font-weight: 600;\n color: var(--%NS%prism-text);\n white-space: nowrap;\n}\n\n.matrix__signature[_ngcontent-%COMP%], \n.matrix__fit[_ngcontent-%COMP%], \n.matrix__note[_ngcontent-%COMP%] {\n overflow: hidden;\n text-overflow: ellipsis;\n font-family: var(--%NS%prism-font-mono);\n font-size: var(--%NS%fs-xs);\n color: var(--%NS%prism-text-muted);\n white-space: nowrap;\n}\n\n\n.matrix__head[data-fits-nowhere][_ngcontent-%COMP%] {\n box-shadow: inset 0 -2px 0 var(--%NS%prism-mark-attention);\n}\n\n.matrix__head[data-fits-nowhere][_ngcontent-%COMP%] .matrix__fit[_ngcontent-%COMP%] {\n color: var(--%NS%prism-mark-attention);\n}\n\n.matrix__slot[_ngcontent-%COMP%] {\n display: flex;\n min-width: 0;\n padding: var(--%NS%sp-3);\n}\n\n\n\n.matrix__slot--span[_ngcontent-%COMP%] {\n grid-column: 2 / -1;\n}\n\n.matrix__list[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n min-width: 0;\n}\n\n.matrix__list[_ngcontent-%COMP%] > prism-overview-cell[_ngcontent-%COMP%] {\n flex: 1;\n}"] });
149
+ } }, dependencies: [PrismOverviewCellComponent], styles: ["\n\n\n[_nghost-%COMP%] {\n display: flex;\n flex: 1 1 0;\n flex-direction: column;\n min-height: 0;\n}\n\n.matrix[_ngcontent-%COMP%] {\n --%NS%matrix-edge: var(--%NS%prism-border);\n\n display: grid;\n flex: 1 1 0;\n grid-template-columns: minmax(120px, max-content) repeat(var(--%NS%matrix-columns, 1), minmax(160px, 1fr));\n align-content: start;\n min-height: 0;\n overflow: auto;\n}\n\n\n\n.matrix__row[_ngcontent-%COMP%] {\n display: contents;\n}\n\n.matrix__corner[_ngcontent-%COMP%], \n.matrix__head[_ngcontent-%COMP%], \n.matrix__variant[_ngcontent-%COMP%] {\n position: sticky;\n display: flex;\n flex-direction: column;\n gap: var(--%NS%sp-1);\n min-width: 0;\n padding: var(--%NS%sp-3) var(--%NS%sp-4);\n background: var(--%NS%prism-bg-elevated);\n}\n\n\n\n.matrix__corner[_ngcontent-%COMP%], \n.matrix__head[_ngcontent-%COMP%] {\n top: 0;\n z-index: 2;\n justify-content: flex-start;\n border-bottom: 1px solid var(--%NS%matrix-edge);\n}\n\n.matrix__corner[_ngcontent-%COMP%], \n.matrix__variant[_ngcontent-%COMP%] {\n left: 0;\n z-index: 1;\n border-right: 1px solid var(--%NS%matrix-edge);\n}\n\n\n.matrix__corner[_ngcontent-%COMP%] {\n z-index: 3;\n font-family: var(--%NS%prism-font-mono);\n font-size: var(--%NS%fs-xs);\n color: var(--%NS%prism-text-muted);\n}\n\n.matrix__variant[_ngcontent-%COMP%] {\n justify-content: center;\n}\n\n.matrix__head-line[_ngcontent-%COMP%] {\n display: flex;\n gap: var(--%NS%sp-3);\n align-items: baseline;\n justify-content: space-between;\n min-width: 0;\n}\n\n.matrix__title[_ngcontent-%COMP%], \n.matrix__name[_ngcontent-%COMP%] {\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--%NS%fs-sm);\n font-weight: 600;\n color: var(--%NS%prism-text);\n white-space: nowrap;\n}\n\n.matrix__signature[_ngcontent-%COMP%], \n.matrix__fit[_ngcontent-%COMP%] {\n overflow: hidden;\n text-overflow: ellipsis;\n font-family: var(--%NS%prism-font-mono);\n font-size: var(--%NS%fs-xs);\n color: var(--%NS%prism-text-muted);\n white-space: nowrap;\n}\n\n.matrix__fit[_ngcontent-%COMP%] {\n flex: none;\n font-variant-numeric: tabular-nums;\n cursor: help;\n}\n\n\n.matrix__head[data-fits-nowhere][_ngcontent-%COMP%] {\n box-shadow: inset 0 -2px 0 var(--%NS%prism-warn);\n}\n\n.matrix__head[data-fits-nowhere][_ngcontent-%COMP%] .matrix__fit[_ngcontent-%COMP%] {\n color: var(--%NS%prism-warn);\n}\n\n\n.matrix__slot[_ngcontent-%COMP%] {\n display: flex;\n min-width: 0;\n padding: var(--%NS%sp-2);\n}\n\n\n\n.matrix__slot--span[_ngcontent-%COMP%] {\n grid-column: 2 / -1;\n}\n\n.matrix__list[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n min-width: 0;\n}\n\n.matrix__list[_ngcontent-%COMP%] > prism-overview-cell[_ngcontent-%COMP%] {\n flex: 1;\n}"] });
159
150
  }
160
151
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismOverviewMatrixComponent, [{
161
152
  type: Component,
162
- args: [{ selector: 'prism-overview-matrix', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismOverviewCellComponent], template: "<div\n class=\"matrix\"\n role=\"table\"\n [attr.aria-label]=\"component().meta.showcaseConfig.title + ' variants by state'\"\n [style.--matrix-columns]=\"matrix().columns.length\">\n <div\n class=\"matrix__row\"\n role=\"row\">\n <div\n class=\"matrix__corner\"\n role=\"columnheader\">\n Variant\n </div>\n @for (header of headers(); track header.column.state) {\n <div\n class=\"matrix__head\"\n role=\"columnheader\"\n [attr.data-fits-nowhere]=\"header.fitsNowhere ? '' : null\"\n [attr.title]=\"header.fitsNowhere ? header.column.title + ' fits no variant; check its selectors' : null\">\n <span class=\"matrix__title\">{{ header.column.title }}</span>\n <span class=\"matrix__signature\">{{ header.column.signature }}</span>\n @if (header.fit; as fit) {\n <span class=\"matrix__fit\">{{ fit }}</span>\n }\n </div>\n }\n </div>\n @for (row of matrix().rows; track row.variant) {\n <div\n class=\"matrix__row\"\n role=\"row\">\n <div\n class=\"matrix__variant\"\n role=\"rowheader\">\n <span class=\"matrix__name\">{{ row.title }}</span>\n @if (row.note; as note) {\n <span class=\"matrix__note\">{{ note }}</span>\n }\n </div>\n @if (row.optedOut) {\n <div\n class=\"matrix__slot matrix__slot--span\"\n role=\"cell\">\n <div\n class=\"matrix__list\"\n role=\"list\">\n <prism-overview-cell\n [component]=\"component()\"\n [index]=\"row.variant\"\n mode=\"matrix\" />\n </div>\n </div>\n } @else {\n @for (column of matrix().columns; track column.state) {\n <div\n class=\"matrix__slot\"\n role=\"cell\">\n <div\n class=\"matrix__list\"\n role=\"list\">\n <prism-overview-cell\n [component]=\"component()\"\n [index]=\"row.variant\"\n [state]=\"column.state\"\n mode=\"matrix\"\n (fitChange)=\"onFit(row.variant, column.state, $event)\" />\n </div>\n </div>\n }\n }\n </div>\n }\n</div>\n", styles: ["/* The host hands its height to the matrix, which scrolls on its own: the\n header row and the variant column stay in view only if the scrolling\n happens inside the grid that holds them. */\n:host {\n display: flex;\n flex: 1 1 0;\n flex-direction: column;\n min-height: 0;\n}\n\n.matrix {\n --matrix-edge: var(--prism-border);\n\n display: grid;\n flex: 1 1 0;\n grid-template-columns: minmax(120px, max-content) repeat(var(--matrix-columns, 1), minmax(160px, 1fr));\n align-content: start;\n min-height: 0;\n overflow: auto;\n}\n\n/* The rows only carry the roles. Their cells are the grid's, so the columns\n line up from the header down. */\n.matrix__row {\n display: contents;\n}\n\n.matrix__corner,\n.matrix__head,\n.matrix__variant {\n position: sticky;\n display: flex;\n flex-direction: column;\n gap: var(--sp-1);\n min-width: 0;\n padding: var(--sp-3) var(--sp-4);\n background: var(--prism-bg-elevated);\n}\n\n.matrix__corner,\n.matrix__head {\n top: 0;\n z-index: 2;\n justify-content: flex-end;\n border-bottom: 1px solid var(--matrix-edge);\n}\n\n.matrix__corner,\n.matrix__variant {\n left: 0;\n z-index: 1;\n border-right: 1px solid var(--matrix-edge);\n}\n\n/* Above the header row and the variant column both, where they cross. */\n.matrix__corner {\n z-index: 3;\n font-family: var(--prism-font-mono);\n font-size: var(--fs-xs);\n color: var(--prism-text-muted);\n}\n\n.matrix__variant {\n justify-content: center;\n}\n\n.matrix__title,\n.matrix__name {\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--fs-sm);\n font-weight: 600;\n color: var(--prism-text);\n white-space: nowrap;\n}\n\n.matrix__signature,\n.matrix__fit,\n.matrix__note {\n overflow: hidden;\n text-overflow: ellipsis;\n font-family: var(--prism-font-mono);\n font-size: var(--fs-xs);\n color: var(--prism-text-muted);\n white-space: nowrap;\n}\n\n/* A state that fits no variant at all: most likely a selector with a typo. */\n.matrix__head[data-fits-nowhere] {\n box-shadow: inset 0 -2px 0 var(--prism-mark-attention);\n}\n\n.matrix__head[data-fits-nowhere] .matrix__fit {\n color: var(--prism-mark-attention);\n}\n\n.matrix__slot {\n display: flex;\n min-width: 0;\n padding: var(--sp-3);\n}\n\n/* A variant that opted out has a single cell, over Default and every state:\n it is not combined with any of them. */\n.matrix__slot--span {\n grid-column: 2 / -1;\n}\n\n.matrix__list {\n display: flex;\n flex: 1;\n min-width: 0;\n}\n\n.matrix__list > prism-overview-cell {\n flex: 1;\n}\n"] }]
153
+ args: [{ selector: 'prism-overview-matrix', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismOverviewCellComponent], template: "<div\n class=\"matrix\"\n role=\"table\"\n [attr.aria-label]=\"component().meta.showcaseConfig.title + ' variants by state'\"\n [style.--matrix-columns]=\"matrix().columns.length\">\n <div\n class=\"matrix__row\"\n role=\"row\">\n <div\n class=\"matrix__corner\"\n role=\"columnheader\">\n Variant \\ State\n </div>\n @for (header of headers(); track header.column.state) {\n <div\n class=\"matrix__head\"\n role=\"columnheader\"\n [attr.data-fits-nowhere]=\"header.fitsNowhere ? '' : null\"\n [attr.title]=\"header.fitsNowhere ? header.column.title + ' fits no variant; check its selectors' : null\">\n <span class=\"matrix__head-line\">\n <span class=\"matrix__title\">{{ header.column.title }}</span>\n @if (header.fit; as fit) {\n <span\n class=\"matrix__fit\"\n [attr.title]=\"fit.title\"\n >{{ fit.text }}</span\n >\n }\n </span>\n <span class=\"matrix__signature\">{{ header.column.signature }}</span>\n </div>\n }\n </div>\n @for (row of matrix().rows; track row.variant) {\n <div\n class=\"matrix__row\"\n role=\"row\">\n <div\n class=\"matrix__variant\"\n role=\"rowheader\"\n [attr.title]=\"row.note\">\n <span class=\"matrix__name\">{{ row.title }}</span>\n </div>\n @if (row.optedOut) {\n <div\n class=\"matrix__slot matrix__slot--span\"\n role=\"cell\">\n <div\n class=\"matrix__list\"\n role=\"list\">\n <prism-overview-cell\n [component]=\"component()\"\n [index]=\"row.variant\"\n mode=\"matrix\" />\n </div>\n </div>\n } @else {\n @for (column of matrix().columns; track column.state) {\n <div\n class=\"matrix__slot\"\n role=\"cell\">\n <div\n class=\"matrix__list\"\n role=\"list\">\n <prism-overview-cell\n [component]=\"component()\"\n [index]=\"row.variant\"\n [state]=\"column.state\"\n mode=\"matrix\"\n (fitChange)=\"onFit(row.variant, column.state, $event)\" />\n </div>\n </div>\n }\n }\n </div>\n }\n</div>\n", styles: ["/* The host hands its height to the matrix, which scrolls on its own: the\n header row and the variant column stay in view only if the scrolling\n happens inside the grid that holds them. */\n:host {\n display: flex;\n flex: 1 1 0;\n flex-direction: column;\n min-height: 0;\n}\n\n.matrix {\n --matrix-edge: var(--prism-border);\n\n display: grid;\n flex: 1 1 0;\n grid-template-columns: minmax(120px, max-content) repeat(var(--matrix-columns, 1), minmax(160px, 1fr));\n align-content: start;\n min-height: 0;\n overflow: auto;\n}\n\n/* The rows only carry the roles. Their cells are the grid's, so the columns\n line up from the header down. */\n.matrix__row {\n display: contents;\n}\n\n.matrix__corner,\n.matrix__head,\n.matrix__variant {\n position: sticky;\n display: flex;\n flex-direction: column;\n gap: var(--sp-1);\n min-width: 0;\n padding: var(--sp-3) var(--sp-4);\n background: var(--prism-bg-elevated);\n}\n\n/* Top-aligned: a title and its signature read from the same line in every\n column, however long a neighbour's signature runs. */\n.matrix__corner,\n.matrix__head {\n top: 0;\n z-index: 2;\n justify-content: flex-start;\n border-bottom: 1px solid var(--matrix-edge);\n}\n\n.matrix__corner,\n.matrix__variant {\n left: 0;\n z-index: 1;\n border-right: 1px solid var(--matrix-edge);\n}\n\n/* Above the header row and the variant column both, where they cross. */\n.matrix__corner {\n z-index: 3;\n font-family: var(--prism-font-mono);\n font-size: var(--fs-xs);\n color: var(--prism-text-muted);\n}\n\n.matrix__variant {\n justify-content: center;\n}\n\n.matrix__head-line {\n display: flex;\n gap: var(--sp-3);\n align-items: baseline;\n justify-content: space-between;\n min-width: 0;\n}\n\n.matrix__title,\n.matrix__name {\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--fs-sm);\n font-weight: 600;\n color: var(--prism-text);\n white-space: nowrap;\n}\n\n.matrix__signature,\n.matrix__fit {\n overflow: hidden;\n text-overflow: ellipsis;\n font-family: var(--prism-font-mono);\n font-size: var(--fs-xs);\n color: var(--prism-text-muted);\n white-space: nowrap;\n}\n\n.matrix__fit {\n flex: none;\n font-variant-numeric: tabular-nums;\n cursor: help;\n}\n\n/* A state that fits no variant at all: most likely a selector with a typo. */\n.matrix__head[data-fits-nowhere] {\n box-shadow: inset 0 -2px 0 var(--prism-warn);\n}\n\n.matrix__head[data-fits-nowhere] .matrix__fit {\n color: var(--prism-warn);\n}\n\n/* 4px each side: 8px between neighbouring cells. */\n.matrix__slot {\n display: flex;\n min-width: 0;\n padding: var(--sp-2);\n}\n\n/* A variant that opted out has a single cell, over Default and every state:\n it is not combined with any of them. */\n.matrix__slot--span {\n grid-column: 2 / -1;\n}\n\n.matrix__list {\n display: flex;\n flex: 1;\n min-width: 0;\n}\n\n.matrix__list > prism-overview-cell {\n flex: 1;\n}\n"] }]
163
154
  }], () => [], { component: [{ type: i0.Input, args: [{ isSignal: true, alias: "component", required: true }] }] }); })();
164
155
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismOverviewMatrixComponent, { className: "PrismOverviewMatrixComponent", filePath: "app/overview/prism-overview-matrix.component.ts", lineNumber: 34 }); })();
@@ -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,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 }); })();