@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
@@ -0,0 +1,17 @@
1
+ import * as i0 from "@angular/core";
2
+ /**
3
+ * A row in a panel list: badge, title and description, meta on the right.
4
+ *
5
+ * Selection is a tinted surface, never a coloured left edge. An interactive row
6
+ * is a button for assistive technology and activates on Enter and Space, which
7
+ * reach the host's click listeners.
8
+ */
9
+ export declare class PrismListRowComponent {
10
+ readonly selected: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
11
+ readonly interactive: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
12
+ private readonly host;
13
+ protected onKey(event: KeyboardEvent): void;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<PrismListRowComponent, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<PrismListRowComponent, "prism-list-row", never, { "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; }, {}, never, ["[rowBadge]", "[rowTitle]", "[rowDescription]", "[rowMeta]"], true, never>;
16
+ }
17
+ //# sourceMappingURL=prism-list-row.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prism-list-row.component.d.ts","sourceRoot":"","sources":["../../../src/app/shared/prism-list-row.component.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AACH,qBAea,qBAAqB;IAC9B,QAAQ,CAAC,QAAQ,qEAAiD;IAClE,QAAQ,CAAC,WAAW,qEAAiD;IAErE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA+C;IAEpE,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;yCANlC,qBAAqB;2CAArB,qBAAqB;CAYjC"}
@@ -0,0 +1,57 @@
1
+ import { booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, inject, input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ const _c0 = [[["", "rowBadge", ""]], [["", "rowTitle", ""]], [["", "rowDescription", ""]], [["", "rowMeta", ""]]];
4
+ const _c1 = ["[rowBadge]", "[rowTitle]", "[rowDescription]", "[rowMeta]"];
5
+ /**
6
+ * A row in a panel list: badge, title and description, meta on the right.
7
+ *
8
+ * Selection is a tinted surface, never a coloured left edge. An interactive row
9
+ * is a button for assistive technology and activates on Enter and Space, which
10
+ * reach the host's click listeners.
11
+ */
12
+ export class PrismListRowComponent {
13
+ selected = input(false, { ...(ngDevMode ? { debugName: "selected" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
14
+ interactive = input(false, { ...(ngDevMode ? { debugName: "interactive" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
15
+ host = inject(ElementRef);
16
+ onKey(event) {
17
+ if (!this.interactive() || event.target !== this.host.nativeElement)
18
+ return;
19
+ if (event.key !== 'Enter' && event.key !== ' ')
20
+ return;
21
+ event.preventDefault();
22
+ this.host.nativeElement.click();
23
+ }
24
+ static ɵfac = function PrismListRowComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismListRowComponent)(); };
25
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismListRowComponent, selectors: [["prism-list-row"]], hostVars: 7, hostBindings: function PrismListRowComponent_HostBindings(rf, ctx) { if (rf & 1) {
26
+ i0.ɵɵlistener("keydown", function PrismListRowComponent_keydown_HostBindingHandler($event) { return ctx.onKey($event); });
27
+ } if (rf & 2) {
28
+ i0.ɵɵattribute("role", ctx.interactive() ? "button" : null)("tabindex", ctx.interactive() ? 0 : null)("aria-pressed", ctx.interactive() ? ctx.selected() : null);
29
+ i0.ɵɵclassProp("prism-list-row--selected", ctx.selected())("prism-list-row--interactive", ctx.interactive());
30
+ } }, inputs: { selected: [1, "selected"], interactive: [1, "interactive"] }, ngContentSelectors: _c1, decls: 9, vars: 0, consts: [[1, "prism-list-row__badge"], [1, "prism-list-row__text"], [1, "prism-list-row__title"], [1, "prism-list-row__description"], [1, "prism-list-row__meta"]], template: function PrismListRowComponent_Template(rf, ctx) { if (rf & 1) {
31
+ i0.ɵɵprojectionDef(_c0);
32
+ i0.ɵɵdomElementStart(0, "span", 0);
33
+ i0.ɵɵprojection(1);
34
+ i0.ɵɵdomElementEnd();
35
+ i0.ɵɵdomElementStart(2, "span", 1)(3, "span", 2);
36
+ i0.ɵɵprojection(4, 1);
37
+ i0.ɵɵdomElementEnd();
38
+ i0.ɵɵdomElementStart(5, "span", 3);
39
+ i0.ɵɵprojection(6, 2);
40
+ i0.ɵɵdomElementEnd()();
41
+ i0.ɵɵdomElementStart(7, "span", 4);
42
+ i0.ɵɵprojection(8, 3);
43
+ i0.ɵɵdomElementEnd();
44
+ } }, styles: ["\n\n\n[_nghost-%COMP%] {\n display: flex;\n gap: 10px;\n align-items: center;\n min-height: 34px;\n padding: 6px 10px;\n border: 1px solid var(--%NS%prism-border);\n border-radius: 6px;\n}\n\n.prism-list-row--interactive[_nghost-%COMP%] {\n cursor: pointer;\n}\n\n.prism-list-row--%NS%interactive[_nghost-%COMP%]:hover {\n background: var(--%NS%prism-input-bg);\n}\n\n.prism-list-row--selected[_nghost-%COMP%] {\n background: var(--%NS%prism-primary-bg);\n border-color: transparent;\n}\n\n[_nghost-%COMP%]:focus-visible {\n outline: 2px solid var(--%NS%prism-primary);\n outline-offset: 1px;\n}\n\n.prism-list-row__badge[_ngcontent-%COMP%], \n.prism-list-row__meta[_ngcontent-%COMP%] {\n flex: none;\n}\n\n.prism-list-row__badge[_ngcontent-%COMP%]:empty, \n.prism-list-row__meta[_ngcontent-%COMP%]:empty, \n.prism-list-row__description[_ngcontent-%COMP%]:empty {\n display: none;\n}\n\n.prism-list-row__text[_ngcontent-%COMP%] {\n display: flex;\n flex: 1 1 0;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.prism-list-row__title[_ngcontent-%COMP%] {\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 12.5px;\n font-weight: 500;\n color: var(--%NS%prism-text);\n white-space: nowrap;\n}\n\n.prism-list-row__description[_ngcontent-%COMP%] {\n font-size: 11.5px;\n color: var(--%NS%prism-text-muted);\n}\n\n.prism-list-row__meta[_ngcontent-%COMP%] {\n font-family: var(--%NS%font-mono);\n font-size: 11px;\n font-variant-numeric: tabular-nums;\n color: var(--%NS%prism-text-muted);\n white-space: nowrap;\n}"] });
45
+ }
46
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismListRowComponent, [{
47
+ type: Component,
48
+ args: [{ selector: 'prism-list-row', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: {
49
+ '[class.prism-list-row--selected]': 'selected()',
50
+ '[class.prism-list-row--interactive]': 'interactive()',
51
+ '[attr.role]': "interactive() ? 'button' : null",
52
+ '[attr.tabindex]': 'interactive() ? 0 : null',
53
+ '[attr.aria-pressed]': 'interactive() ? selected() : null',
54
+ '(keydown)': 'onKey($event)'
55
+ }, template: "<span class=\"prism-list-row__badge\"><ng-content select=\"[rowBadge]\" /></span>\n<span class=\"prism-list-row__text\">\n <span class=\"prism-list-row__title\"><ng-content select=\"[rowTitle]\" /></span>\n <span class=\"prism-list-row__description\"><ng-content select=\"[rowDescription]\" /></span>\n</span>\n<span class=\"prism-list-row__meta\"><ng-content select=\"[rowMeta]\" /></span>\n", styles: ["/* Flex rather than a grid: every slot is optional and an empty one is\n hidden, so a row without a badge or meta closes up instead of shifting\n its title into the badge's column. */\n:host {\n display: flex;\n gap: 10px;\n align-items: center;\n min-height: 34px;\n padding: 6px 10px;\n border: 1px solid var(--prism-border);\n border-radius: 6px;\n}\n\n:host(.prism-list-row--interactive) {\n cursor: pointer;\n}\n\n:host(.prism-list-row--interactive:hover) {\n background: var(--prism-input-bg);\n}\n\n:host(.prism-list-row--selected) {\n background: var(--prism-primary-bg);\n border-color: transparent;\n}\n\n:host(:focus-visible) {\n outline: 2px solid var(--prism-primary);\n outline-offset: 1px;\n}\n\n.prism-list-row__badge,\n.prism-list-row__meta {\n flex: none;\n}\n\n.prism-list-row__badge:empty,\n.prism-list-row__meta:empty,\n.prism-list-row__description:empty {\n display: none;\n}\n\n.prism-list-row__text {\n display: flex;\n flex: 1 1 0;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.prism-list-row__title {\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 12.5px;\n font-weight: 500;\n color: var(--prism-text);\n white-space: nowrap;\n}\n\n.prism-list-row__description {\n font-size: 11.5px;\n color: var(--prism-text-muted);\n}\n\n.prism-list-row__meta {\n font-family: var(--font-mono);\n font-size: 11px;\n font-variant-numeric: tabular-nums;\n color: var(--prism-text-muted);\n white-space: nowrap;\n}\n"] }]
56
+ }], null, { selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], interactive: [{ type: i0.Input, args: [{ isSignal: true, alias: "interactive", required: false }] }] }); })();
57
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismListRowComponent, { className: "PrismListRowComponent", filePath: "app/shared/prism-list-row.component.ts", lineNumber: 25 }); })();
@@ -0,0 +1,24 @@
1
+ import { type BrandMarkFacet } from './brand-mark.js';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * The ng-prism symbol, drawn inline.
5
+ *
6
+ * Inline rather than an `<img>` so it needs no asset path in a consuming app,
7
+ * and with its gradient ids prefixed per instance: SVG ids are document-global,
8
+ * and the header and the sidebar footer show the mark at the same time.
9
+ */
10
+ export declare class PrismLogoComponent {
11
+ /** Rendered height in px; the width follows the mark's proportions. */
12
+ readonly size: import("@angular/core").InputSignal<number>;
13
+ /** Decorative by default; otherwise the mark is announced as "ng-prism". */
14
+ readonly decorative: import("@angular/core").InputSignal<boolean>;
15
+ protected readonly uid: string;
16
+ protected readonly viewBox = "4 31 2036 1561";
17
+ protected readonly gradients: readonly import("./brand-mark.js").BrandMarkGradient[];
18
+ protected readonly facets: readonly BrandMarkFacet[];
19
+ protected readonly width: import("@angular/core").Signal<number>;
20
+ protected fill(facet: BrandMarkFacet): string;
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<PrismLogoComponent, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<PrismLogoComponent, "prism-logo", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "decorative": { "alias": "decorative"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
23
+ }
24
+ //# sourceMappingURL=prism-logo.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prism-logo.component.d.ts","sourceRoot":"","sources":["../../../src/app/shared/prism-logo.component.ts"],"names":[],"mappings":"AACA,OAAO,EAA+D,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;;AAMnH;;;;;;GAMG;AACH,qBAOa,kBAAkB;IAC3B,uEAAuE;IACvE,QAAQ,CAAC,IAAI,8CAAa;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,+CAAe;IAElC,SAAS,CAAC,QAAQ,CAAC,GAAG,SAAiC;IACvD,SAAS,CAAC,QAAQ,CAAC,OAAO,oBAAsB;IAChD,SAAS,CAAC,QAAQ,CAAC,SAAS,yDAAwB;IACpD,SAAS,CAAC,QAAQ,CAAC,MAAM,4BAAqB;IAC9C,SAAS,CAAC,QAAQ,CAAC,KAAK,yCAAmD;IAE3E,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM;yCAZpC,kBAAkB;2CAAlB,kBAAkB;CAe9B"}
@@ -0,0 +1,77 @@
1
+ import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
2
+ import { BRAND_MARK_FACETS, BRAND_MARK_GRADIENTS, BRAND_MARK_VIEWBOX } from './brand-mark.js';
3
+ import * as i0 from "@angular/core";
4
+ const _forTrack0 = ($index, $item) => $item.id;
5
+ function PrismLogoComponent_For_3_For_2_Template(rf, ctx) { if (rf & 1) {
6
+ i0.ɵɵnamespaceSVG();
7
+ i0.ɵɵdomElement(0, "stop");
8
+ } if (rf & 2) {
9
+ const stop_r1 = ctx.$implicit;
10
+ i0.ɵɵattribute("offset", stop_r1[0])("stop-color", stop_r1[1]);
11
+ } }
12
+ function PrismLogoComponent_For_3_Template(rf, ctx) { if (rf & 1) {
13
+ i0.ɵɵnamespaceSVG();
14
+ i0.ɵɵdomElementStart(0, "linearGradient", 1);
15
+ i0.ɵɵrepeaterCreate(1, PrismLogoComponent_For_3_For_2_Template, 1, 2, ":svg:stop", null, i0.ɵɵrepeaterTrackByIndex);
16
+ i0.ɵɵdomElementEnd();
17
+ } if (rf & 2) {
18
+ const g_r2 = ctx.$implicit;
19
+ const ctx_r2 = i0.ɵɵnextContext();
20
+ i0.ɵɵattribute("id", ctx_r2.uid + g_r2.id)("x1", g_r2.x1)("y1", g_r2.y1)("x2", g_r2.x2)("y2", g_r2.y2);
21
+ i0.ɵɵadvance();
22
+ i0.ɵɵrepeater(g_r2.stops);
23
+ } }
24
+ function PrismLogoComponent_For_5_Template(rf, ctx) { if (rf & 1) {
25
+ i0.ɵɵnamespaceSVG();
26
+ i0.ɵɵdomElement(0, "path");
27
+ } if (rf & 2) {
28
+ const facet_r4 = ctx.$implicit;
29
+ const ctx_r2 = i0.ɵɵnextContext();
30
+ i0.ɵɵattribute("d", facet_r4.d)("fill", ctx_r2.fill(facet_r4));
31
+ } }
32
+ let nextInstance = 0;
33
+ const [, , VIEW_W, VIEW_H] = BRAND_MARK_VIEWBOX.split(' ').map(Number);
34
+ /**
35
+ * The ng-prism symbol, drawn inline.
36
+ *
37
+ * Inline rather than an `<img>` so it needs no asset path in a consuming app,
38
+ * and with its gradient ids prefixed per instance: SVG ids are document-global,
39
+ * and the header and the sidebar footer show the mark at the same time.
40
+ */
41
+ export class PrismLogoComponent {
42
+ /** Rendered height in px; the width follows the mark's proportions. */
43
+ size = input(24, /* @ts-ignore */
44
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
45
+ /** Decorative by default; otherwise the mark is announced as "ng-prism". */
46
+ decorative = input(true, /* @ts-ignore */
47
+ ...(ngDevMode ? [{ debugName: "decorative" }] : /* istanbul ignore next */ []));
48
+ uid = `ngp-logo-${nextInstance++}-`;
49
+ viewBox = BRAND_MARK_VIEWBOX;
50
+ gradients = BRAND_MARK_GRADIENTS;
51
+ facets = BRAND_MARK_FACETS;
52
+ width = computed(() => (this.size() * VIEW_W) / VIEW_H, /* @ts-ignore */
53
+ ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
54
+ fill(facet) {
55
+ return facet.gradient ? `url(#${this.uid}${facet.gradient})` : (facet.colour ?? 'currentColor');
56
+ }
57
+ static ɵfac = function PrismLogoComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismLogoComponent)(); };
58
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismLogoComponent, selectors: [["prism-logo"]], inputs: { size: [1, "size"], decorative: [1, "decorative"] }, decls: 6, vars: 6, consts: [["xmlns", "http://www.w3.org/2000/svg", "focusable", "false"], ["gradientUnits", "userSpaceOnUse"]], template: function PrismLogoComponent_Template(rf, ctx) { if (rf & 1) {
59
+ i0.ɵɵnamespaceSVG();
60
+ i0.ɵɵdomElementStart(0, "svg", 0)(1, "defs");
61
+ i0.ɵɵrepeaterCreate(2, PrismLogoComponent_For_3_Template, 3, 5, ":svg:linearGradient", 1, _forTrack0);
62
+ i0.ɵɵdomElementEnd();
63
+ i0.ɵɵrepeaterCreate(4, PrismLogoComponent_For_5_Template, 1, 2, ":svg:path", null, i0.ɵɵrepeaterTrackByIndex);
64
+ i0.ɵɵdomElementEnd();
65
+ } if (rf & 2) {
66
+ i0.ɵɵattribute("viewBox", ctx.viewBox)("width", ctx.width())("height", ctx.size())("aria-hidden", ctx.decorative() ? "true" : null)("role", ctx.decorative() ? null : "img")("aria-label", ctx.decorative() ? null : "ng-prism");
67
+ i0.ɵɵadvance(2);
68
+ i0.ɵɵrepeater(ctx.gradients);
69
+ i0.ɵɵadvance(2);
70
+ i0.ɵɵrepeater(ctx.facets);
71
+ } }, styles: ["[_nghost-%COMP%] {\n display: inline-flex;\n flex: none;\n line-height: 0;\n}"] });
72
+ }
73
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismLogoComponent, [{
74
+ type: Component,
75
+ args: [{ selector: 'prism-logo', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.viewBox]=\"viewBox\"\n [attr.width]=\"width()\"\n [attr.height]=\"size()\"\n [attr.aria-hidden]=\"decorative() ? 'true' : null\"\n [attr.role]=\"decorative() ? null : 'img'\"\n [attr.aria-label]=\"decorative() ? null : 'ng-prism'\"\n focusable=\"false\">\n <defs>\n @for (g of gradients; track g.id) {\n <linearGradient\n [attr.id]=\"uid + g.id\"\n [attr.x1]=\"g.x1\"\n [attr.y1]=\"g.y1\"\n [attr.x2]=\"g.x2\"\n [attr.y2]=\"g.y2\"\n gradientUnits=\"userSpaceOnUse\">\n @for (stop of g.stops; track $index) {\n <stop\n [attr.offset]=\"stop[0]\"\n [attr.stop-color]=\"stop[1]\" />\n }\n </linearGradient>\n }\n </defs>\n @for (facet of facets; track $index) {\n <path\n [attr.d]=\"facet.d\"\n [attr.fill]=\"fill(facet)\" />\n }\n</svg>\n", styles: [":host {\n display: inline-flex;\n flex: none;\n line-height: 0;\n}\n"] }]
76
+ }], null, { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], decorative: [{ type: i0.Input, args: [{ isSignal: true, alias: "decorative", required: false }] }] }); })();
77
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismLogoComponent, { className: "PrismLogoComponent", filePath: "app/shared/prism-logo.component.ts", lineNumber: 22 }); })();
@@ -6,9 +6,9 @@ import * as i0 from "@angular/core";
6
6
  * (a11y in core, coverage and visual regression in their plugins) keeps its own
7
7
  * data logic while sharing one appearance.
8
8
  *
9
- * It shows an icon instead of a text label: the same glyph the source uses for
10
- * its navigation marks and panel tab, and narrow enough to fit three badges in
11
- * the 40px header. The icon is `aria-hidden`; the accessible name is built here
9
+ * It shows a short label ("Coverage 53%") when given one, and otherwise an icon:
10
+ * the same glyph the source uses for its navigation marks and panel tab. The
11
+ * icon is `aria-hidden`; the accessible name is built here
12
12
  * as "label: value" (e.g. "Library coverage: 23%") so a consumer cannot drop
13
13
  * the figure. `title` is the consumer's full text for the hover tooltip.
14
14
  */
@@ -18,9 +18,14 @@ export declare class PrismMetricBadgeComponent {
18
18
  readonly label: import("@angular/core").InputSignal<string>;
19
19
  readonly title: import("@angular/core").InputSignal<string>;
20
20
  readonly variant: import("@angular/core").InputSignal<"ok" | "warn" | "danger">;
21
+ /**
22
+ * A short visible label ("Coverage", "VRT"). When set, it replaces the icon,
23
+ * so the figure reads as "Coverage 53%" without a glyph to decode.
24
+ */
25
+ readonly shortLabel: import("@angular/core").InputSignal<string | null>;
21
26
  /** "label: value" is the accessible name, so the figure is never dropped. */
22
27
  readonly accessibleName: import("@angular/core").Signal<string>;
23
28
  static ɵfac: i0.ɵɵFactoryDeclaration<PrismMetricBadgeComponent, never>;
24
- static ɵcmp: i0.ɵɵComponentDeclaration<PrismMetricBadgeComponent, "prism-metric-badge", never, { "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
29
+ static ɵcmp: i0.ɵɵComponentDeclaration<PrismMetricBadgeComponent, "prism-metric-badge", never, { "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "shortLabel": { "alias": "shortLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
25
30
  }
26
31
  //# sourceMappingURL=prism-metric-badge.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prism-metric-badge.component.d.ts","sourceRoot":"","sources":["../../../src/app/shared/prism-metric-badge.component.ts"],"names":[],"mappings":";AAGA;;;;;;;;;;;;GAYG;AACH,qBAQa,yBAAyB;IAClC,QAAQ,CAAC,IAAI,8CAA4B;IACzC,QAAQ,CAAC,KAAK,8CAA4B;IAC1C,QAAQ,CAAC,KAAK,8CAA4B;IAC1C,QAAQ,CAAC,KAAK,8CAAqB;IACnC,QAAQ,CAAC,OAAO,gEAAyC;IAEzD,6EAA6E;IAC7E,QAAQ,CAAC,cAAc,yCAAsD;yCARpE,yBAAyB;2CAAzB,yBAAyB;CASrC"}
1
+ {"version":3,"file":"prism-metric-badge.component.d.ts","sourceRoot":"","sources":["../../../src/app/shared/prism-metric-badge.component.ts"],"names":[],"mappings":";AAGA;;;;;;;;;;;;GAYG;AACH,qBAQa,yBAAyB;IAClC,QAAQ,CAAC,IAAI,8CAA4B;IACzC,QAAQ,CAAC,KAAK,8CAA4B;IAC1C,QAAQ,CAAC,KAAK,8CAA4B;IAC1C,QAAQ,CAAC,KAAK,8CAAqB;IACnC,QAAQ,CAAC,OAAO,gEAAyC;IACzD;;;OAGG;IACH,QAAQ,CAAC,UAAU,qDAA8B;IAEjD,6EAA6E;IAC7E,QAAQ,CAAC,cAAc,yCAAsD;yCAbpE,yBAAyB;2CAAzB,yBAAyB;CAcrC"}
@@ -1,6 +1,21 @@
1
1
  import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
2
2
  import { PrismIconComponent } from '../icons/prism-icon.component.js';
3
3
  import * as i0 from "@angular/core";
4
+ function PrismMetricBadgeComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
5
+ i0.ɵɵelementStart(0, "span", 1);
6
+ i0.ɵɵtext(1);
7
+ i0.ɵɵelementEnd();
8
+ } if (rf & 2) {
9
+ const ctx_r0 = i0.ɵɵnextContext();
10
+ i0.ɵɵadvance();
11
+ i0.ɵɵtextInterpolate(ctx_r0.shortLabel());
12
+ } }
13
+ function PrismMetricBadgeComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
14
+ i0.ɵɵelement(0, "prism-icon", 2);
15
+ } if (rf & 2) {
16
+ const ctx_r0 = i0.ɵɵnextContext();
17
+ i0.ɵɵproperty("name", ctx_r0.icon())("size", 12);
18
+ } }
4
19
  /**
5
20
  * Library-wide metric badge for the header.
6
21
  *
@@ -8,9 +23,9 @@ import * as i0 from "@angular/core";
8
23
  * (a11y in core, coverage and visual regression in their plugins) keeps its own
9
24
  * data logic while sharing one appearance.
10
25
  *
11
- * It shows an icon instead of a text label: the same glyph the source uses for
12
- * its navigation marks and panel tab, and narrow enough to fit three badges in
13
- * the 40px header. The icon is `aria-hidden`; the accessible name is built here
26
+ * It shows a short label ("Coverage 53%") when given one, and otherwise an icon:
27
+ * the same glyph the source uses for its navigation marks and panel tab. The
28
+ * icon is `aria-hidden`; the accessible name is built here
14
29
  * as "label: value" (e.g. "Library coverage: 23%") so a consumer cannot drop
15
30
  * the figure. `title` is the consumer's full text for the hover tooltip.
16
31
  */
@@ -25,27 +40,33 @@ export class PrismMetricBadgeComponent {
25
40
  ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
26
41
  variant = input('ok', /* @ts-ignore */
27
42
  ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
43
+ /**
44
+ * A short visible label ("Coverage", "VRT"). When set, it replaces the icon,
45
+ * so the figure reads as "Coverage 53%" without a glyph to decode.
46
+ */
47
+ shortLabel = input(null, /* @ts-ignore */
48
+ ...(ngDevMode ? [{ debugName: "shortLabel" }] : /* istanbul ignore next */ []));
28
49
  /** "label: value" is the accessible name, so the figure is never dropped. */
29
50
  accessibleName = computed(() => `${this.label()}: ${this.value()}`, /* @ts-ignore */
30
51
  ...(ngDevMode ? [{ debugName: "accessibleName" }] : /* istanbul ignore next */ []));
31
52
  static ɵfac = function PrismMetricBadgeComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismMetricBadgeComponent)(); };
32
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismMetricBadgeComponent, selectors: [["prism-metric-badge"]], inputs: { icon: [1, "icon"], value: [1, "value"], label: [1, "label"], title: [1, "title"], variant: [1, "variant"] }, decls: 4, vars: 11, consts: [["role", "img", 1, "metric-badge"], ["aria-hidden", "true", 3, "name", "size"], [1, "metric-badge__value"]], template: function PrismMetricBadgeComponent_Template(rf, ctx) { if (rf & 1) {
53
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismMetricBadgeComponent, selectors: [["prism-metric-badge"]], inputs: { icon: [1, "icon"], value: [1, "value"], label: [1, "label"], title: [1, "title"], variant: [1, "variant"], shortLabel: [1, "shortLabel"] }, decls: 5, vars: 10, consts: [["role", "img", 1, "metric-badge"], ["aria-hidden", "true", 1, "metric-badge__label"], ["aria-hidden", "true", 3, "name", "size"], [1, "metric-badge__value"]], template: function PrismMetricBadgeComponent_Template(rf, ctx) { if (rf & 1) {
33
54
  i0.ɵɵelementStart(0, "span", 0);
34
- i0.ɵɵelement(1, "prism-icon", 1);
35
- i0.ɵɵelementStart(2, "span", 2);
36
- i0.ɵɵtext(3);
55
+ i0.ɵɵconditionalCreate(1, PrismMetricBadgeComponent_Conditional_1_Template, 2, 1, "span", 1)(2, PrismMetricBadgeComponent_Conditional_2_Template, 1, 2, "prism-icon", 2);
56
+ i0.ɵɵelementStart(3, "span", 3);
57
+ i0.ɵɵtext(4);
37
58
  i0.ɵɵelementEnd()();
38
59
  } if (rf & 2) {
39
60
  i0.ɵɵclassProp("metric-badge--ok", ctx.variant() === "ok")("metric-badge--warn", ctx.variant() === "warn")("metric-badge--danger", ctx.variant() === "danger");
40
61
  i0.ɵɵattribute("title", ctx.title() || ctx.label())("aria-label", ctx.accessibleName());
41
62
  i0.ɵɵadvance();
42
- i0.ɵɵproperty("name", ctx.icon())("size", 12);
43
- i0.ɵɵadvance(2);
63
+ i0.ɵɵconditional(ctx.shortLabel() ? 1 : 2);
64
+ i0.ɵɵadvance(3);
44
65
  i0.ɵɵtextInterpolate(ctx.value());
45
- } }, dependencies: [PrismIconComponent], styles: ["[_nghost-%COMP%] {\n display: inline-flex;\n align-items: center;\n}\n\n.metric-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n gap: var(--%NS%sp-2);\n align-items: center;\n height: 20px;\n padding: 0 var(--%NS%sp-3) 0 var(--%NS%sp-2);\n font-family: var(--%NS%font-mono);\n font-size: var(--%NS%fs-xs);\n font-variant-numeric: tabular-nums;\n color: var(--%NS%prism-text-muted);\n white-space: nowrap;\n background: var(--%NS%prism-input-bg);\n border: 1px solid var(--%NS%prism-border);\n border-radius: var(--%NS%radius-sm);\n}\n\n.metric-badge__value[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--%NS%prism-text);\n}\n\n.metric-badge--ok[_ngcontent-%COMP%] {\n color: var(--%NS%prism-mark-nominal);\n background: color-mix(in srgb, var(--%NS%prism-mark-nominal) 10%, transparent);\n border-color: color-mix(in srgb, var(--%NS%prism-mark-nominal) 35%, transparent);\n}\n\n.metric-badge--ok[_ngcontent-%COMP%] .metric-badge__value[_ngcontent-%COMP%] {\n color: var(--%NS%prism-mark-nominal);\n}\n\n.metric-badge--warn[_ngcontent-%COMP%] {\n color: var(--%NS%prism-mark-attention);\n background: color-mix(in srgb, var(--%NS%prism-mark-attention) 10%, transparent);\n border-color: color-mix(in srgb, var(--%NS%prism-mark-attention) 35%, transparent);\n}\n\n.metric-badge--warn[_ngcontent-%COMP%] .metric-badge__value[_ngcontent-%COMP%] {\n color: var(--%NS%prism-mark-attention);\n}\n\n.metric-badge--danger[_ngcontent-%COMP%] {\n color: var(--%NS%prism-mark-critical);\n background: color-mix(in srgb, var(--%NS%prism-mark-critical) 10%, transparent);\n border-color: color-mix(in srgb, var(--%NS%prism-mark-critical) 40%, transparent);\n}\n\n.metric-badge--danger[_ngcontent-%COMP%] .metric-badge__value[_ngcontent-%COMP%] {\n color: var(--%NS%prism-mark-critical);\n}"] });
66
+ } }, dependencies: [PrismIconComponent], styles: ["[_nghost-%COMP%] {\n display: inline-flex;\n align-items: center;\n}\n\n.metric-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n gap: 6px;\n align-items: center;\n height: 22px;\n padding: 0 8px;\n font-family: var(--%NS%font-sans);\n font-size: 11.5px;\n font-weight: 500;\n color: var(--%NS%prism-text-muted);\n white-space: nowrap;\n background: var(--%NS%prism-input-bg);\n border-radius: 4px;\n}\n\n.metric-badge__value[_ngcontent-%COMP%] {\n font-family: var(--%NS%font-mono);\n font-weight: 600;\n font-variant-numeric: tabular-nums;\n}\n\n.metric-badge--ok[_ngcontent-%COMP%] {\n color: var(--%NS%prism-success);\n background: var(--%NS%prism-success-bg);\n}\n\n.metric-badge--warn[_ngcontent-%COMP%] {\n color: var(--%NS%prism-warn);\n background: var(--%NS%prism-warn-bg);\n}\n\n.metric-badge--danger[_ngcontent-%COMP%] {\n color: var(--%NS%prism-danger);\n background: var(--%NS%prism-danger-bg);\n}"] });
46
67
  }
47
68
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismMetricBadgeComponent, [{
48
69
  type: Component,
49
- args: [{ selector: 'prism-metric-badge', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismIconComponent], template: "<span\n class=\"metric-badge\"\n role=\"img\"\n [class.metric-badge--ok]=\"variant() === 'ok'\"\n [class.metric-badge--warn]=\"variant() === 'warn'\"\n [class.metric-badge--danger]=\"variant() === 'danger'\"\n [attr.title]=\"title() || label()\"\n [attr.aria-label]=\"accessibleName()\">\n <prism-icon\n [name]=\"icon()\"\n [size]=\"12\"\n aria-hidden=\"true\" />\n <span class=\"metric-badge__value\">{{ value() }}</span>\n</span>\n", styles: [":host {\n display: inline-flex;\n align-items: center;\n}\n\n.metric-badge {\n display: inline-flex;\n gap: var(--sp-2);\n align-items: center;\n height: 20px;\n padding: 0 var(--sp-3) 0 var(--sp-2);\n font-family: var(--font-mono);\n font-size: var(--fs-xs);\n font-variant-numeric: tabular-nums;\n color: var(--prism-text-muted);\n white-space: nowrap;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: var(--radius-sm);\n}\n\n.metric-badge__value {\n font-weight: 600;\n color: var(--prism-text);\n}\n\n.metric-badge--ok {\n color: var(--prism-mark-nominal);\n background: color-mix(in srgb, var(--prism-mark-nominal) 10%, transparent);\n border-color: color-mix(in srgb, var(--prism-mark-nominal) 35%, transparent);\n}\n\n.metric-badge--ok .metric-badge__value {\n color: var(--prism-mark-nominal);\n}\n\n.metric-badge--warn {\n color: var(--prism-mark-attention);\n background: color-mix(in srgb, var(--prism-mark-attention) 10%, transparent);\n border-color: color-mix(in srgb, var(--prism-mark-attention) 35%, transparent);\n}\n\n.metric-badge--warn .metric-badge__value {\n color: var(--prism-mark-attention);\n}\n\n.metric-badge--danger {\n color: var(--prism-mark-critical);\n background: color-mix(in srgb, var(--prism-mark-critical) 10%, transparent);\n border-color: color-mix(in srgb, var(--prism-mark-critical) 40%, transparent);\n}\n\n.metric-badge--danger .metric-badge__value {\n color: var(--prism-mark-critical);\n}\n"] }]
50
- }], null, { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] }); })();
70
+ args: [{ selector: 'prism-metric-badge', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismIconComponent], template: "<span\n class=\"metric-badge\"\n role=\"img\"\n [class.metric-badge--ok]=\"variant() === 'ok'\"\n [class.metric-badge--warn]=\"variant() === 'warn'\"\n [class.metric-badge--danger]=\"variant() === 'danger'\"\n [attr.title]=\"title() || label()\"\n [attr.aria-label]=\"accessibleName()\">\n @if (shortLabel()) {\n <span\n class=\"metric-badge__label\"\n aria-hidden=\"true\"\n >{{ shortLabel() }}</span\n >\n } @else {\n <prism-icon\n [name]=\"icon()\"\n [size]=\"12\"\n aria-hidden=\"true\" />\n }\n <span class=\"metric-badge__value\">{{ value() }}</span>\n</span>\n", styles: [":host {\n display: inline-flex;\n align-items: center;\n}\n\n.metric-badge {\n display: inline-flex;\n gap: 6px;\n align-items: center;\n height: 22px;\n padding: 0 8px;\n font-family: var(--font-sans);\n font-size: 11.5px;\n font-weight: 500;\n color: var(--prism-text-muted);\n white-space: nowrap;\n background: var(--prism-input-bg);\n border-radius: 4px;\n}\n\n.metric-badge__value {\n font-family: var(--font-mono);\n font-weight: 600;\n font-variant-numeric: tabular-nums;\n}\n\n.metric-badge--ok {\n color: var(--prism-success);\n background: var(--prism-success-bg);\n}\n\n.metric-badge--warn {\n color: var(--prism-warn);\n background: var(--prism-warn-bg);\n}\n\n.metric-badge--danger {\n color: var(--prism-danger);\n background: var(--prism-danger-bg);\n}\n"] }]
71
+ }], null, { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], shortLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "shortLabel", required: false }] }] }); })();
51
72
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismMetricBadgeComponent, { className: "PrismMetricBadgeComponent", filePath: "app/shared/prism-metric-badge.component.ts", lineNumber: 25 }); })();
@@ -0,0 +1,30 @@
1
+ import type { BadgeTone } from './badge.types.js';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * A measured value in a panel: label, status badge, the figure and its unit,
5
+ * optionally a bar with a threshold tick, or a visual of the caller's own in
6
+ * `[metricVisual]` (a ring, a sparkline).
7
+ *
8
+ * No visible subtitle. Details such as bytes, the threshold or the source go in
9
+ * `title`, the card's tooltip. A rated value fills its bar in the status tone;
10
+ * a plain quantity (no `tone`) in the primary colour.
11
+ */
12
+ export declare class PrismMetricCardComponent {
13
+ readonly label: import("@angular/core").InputSignal<string>;
14
+ readonly value: import("@angular/core").InputSignal<string>;
15
+ readonly unit: import("@angular/core").InputSignal<string | null>;
16
+ readonly tone: import("@angular/core").InputSignal<BadgeTone | null>;
17
+ readonly statusLabel: import("@angular/core").InputSignal<string | null>;
18
+ /** Bar fill, 0–1. No bar without it. */
19
+ readonly fraction: import("@angular/core").InputSignal<number | null>;
20
+ /** Threshold tick, 0–1. */
21
+ readonly threshold: import("@angular/core").InputSignal<number | null>;
22
+ readonly title: import("@angular/core").InputSignal<string | null>;
23
+ protected readonly bar: import("@angular/core").Signal<{
24
+ width: string;
25
+ tick: string | null;
26
+ } | null>;
27
+ static ɵfac: i0.ɵɵFactoryDeclaration<PrismMetricCardComponent, never>;
28
+ static ɵcmp: i0.ɵɵComponentDeclaration<PrismMetricCardComponent, "prism-metric-card", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "unit": { "alias": "unit"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "statusLabel": { "alias": "statusLabel"; "required": false; "isSignal": true; }; "fraction": { "alias": "fraction"; "required": false; "isSignal": true; }; "threshold": { "alias": "threshold"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; }, {}, never, ["[metricVisual]"], true, never>;
29
+ }
30
+ //# sourceMappingURL=prism-metric-card.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prism-metric-card.component.d.ts","sourceRoot":"","sources":["../../../src/app/shared/prism-metric-card.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;;AAIlD;;;;;;;;GAQG;AACH,qBAYa,wBAAwB;IACjC,QAAQ,CAAC,KAAK,8CAA4B;IAC1C,QAAQ,CAAC,KAAK,8CAA4B;IAC1C,QAAQ,CAAC,IAAI,qDAA8B;IAC3C,QAAQ,CAAC,IAAI,wDAAiC;IAC9C,QAAQ,CAAC,WAAW,qDAA8B;IAClD,wCAAwC;IACxC,QAAQ,CAAC,QAAQ,qDAA8B;IAC/C,2BAA2B;IAC3B,QAAQ,CAAC,SAAS,qDAA8B;IAChD,QAAQ,CAAC,KAAK,qDAA8B;IAE5C,SAAS,CAAC,QAAQ,CAAC,GAAG;;;cAInB;yCAhBM,wBAAwB;2CAAxB,wBAAwB;CAiBpC"}
@@ -0,0 +1,111 @@
1
+ import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
2
+ import { barGeometry } from './metric-bar.js';
3
+ import { PrismBadgeComponent } from './prism-badge.component.js';
4
+ import * as i0 from "@angular/core";
5
+ const _c0 = [[["", "metricVisual", ""]]];
6
+ const _c1 = ["[metricVisual]"];
7
+ function PrismMetricCardComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
8
+ i0.ɵɵelement(0, "prism-badge", 2);
9
+ } if (rf & 2) {
10
+ const ctx_r0 = i0.ɵɵnextContext();
11
+ i0.ɵɵproperty("tone", ctx_r0.tone())("label", ctx_r0.statusLabel());
12
+ } }
13
+ function PrismMetricCardComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
14
+ i0.ɵɵelementStart(0, "small");
15
+ i0.ɵɵtext(1);
16
+ i0.ɵɵelementEnd();
17
+ } if (rf & 2) {
18
+ const ctx_r0 = i0.ɵɵnextContext();
19
+ i0.ɵɵadvance();
20
+ i0.ɵɵtextInterpolate(ctx_r0.unit());
21
+ } }
22
+ function PrismMetricCardComponent_Conditional_9_Conditional_2_Template(rf, ctx) { if (rf & 1) {
23
+ i0.ɵɵelement(0, "b");
24
+ } if (rf & 2) {
25
+ const b_r2 = i0.ɵɵnextContext();
26
+ i0.ɵɵstyleProp("left", b_r2.tick);
27
+ } }
28
+ function PrismMetricCardComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
29
+ i0.ɵɵelementStart(0, "div", 5);
30
+ i0.ɵɵelement(1, "i");
31
+ i0.ɵɵconditionalCreate(2, PrismMetricCardComponent_Conditional_9_Conditional_2_Template, 1, 2, "b", 6);
32
+ i0.ɵɵelementEnd();
33
+ } if (rf & 2) {
34
+ const b_r2 = ctx;
35
+ i0.ɵɵadvance();
36
+ i0.ɵɵstyleProp("width", b_r2.width);
37
+ i0.ɵɵadvance();
38
+ i0.ɵɵconditional(b_r2.tick ? 2 : -1);
39
+ } }
40
+ /**
41
+ * A measured value in a panel: label, status badge, the figure and its unit,
42
+ * optionally a bar with a threshold tick, or a visual of the caller's own in
43
+ * `[metricVisual]` (a ring, a sparkline).
44
+ *
45
+ * No visible subtitle. Details such as bytes, the threshold or the source go in
46
+ * `title`, the card's tooltip. A rated value fills its bar in the status tone;
47
+ * a plain quantity (no `tone`) in the primary colour.
48
+ */
49
+ export class PrismMetricCardComponent {
50
+ label = input.required(/* @ts-ignore */
51
+ ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
52
+ value = input.required(/* @ts-ignore */
53
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
54
+ unit = input(null, /* @ts-ignore */
55
+ ...(ngDevMode ? [{ debugName: "unit" }] : /* istanbul ignore next */ []));
56
+ tone = input(null, /* @ts-ignore */
57
+ ...(ngDevMode ? [{ debugName: "tone" }] : /* istanbul ignore next */ []));
58
+ statusLabel = input(null, /* @ts-ignore */
59
+ ...(ngDevMode ? [{ debugName: "statusLabel" }] : /* istanbul ignore next */ []));
60
+ /** Bar fill, 0–1. No bar without it. */
61
+ fraction = input(null, /* @ts-ignore */
62
+ ...(ngDevMode ? [{ debugName: "fraction" }] : /* istanbul ignore next */ []));
63
+ /** Threshold tick, 0–1. */
64
+ threshold = input(null, /* @ts-ignore */
65
+ ...(ngDevMode ? [{ debugName: "threshold" }] : /* istanbul ignore next */ []));
66
+ title = input(null, /* @ts-ignore */
67
+ ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
68
+ bar = computed(() => {
69
+ const fraction = this.fraction();
70
+ return fraction === null ? null : barGeometry(fraction, this.threshold() ?? undefined);
71
+ }, /* @ts-ignore */
72
+ ...(ngDevMode ? [{ debugName: "bar" }] : /* istanbul ignore next */ []));
73
+ static ɵfac = function PrismMetricCardComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismMetricCardComponent)(); };
74
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismMetricCardComponent, selectors: [["prism-metric-card"]], hostVars: 2, hostBindings: function PrismMetricCardComponent_HostBindings(rf, ctx) { if (rf & 2) {
75
+ i0.ɵɵattribute("title", ctx.title())("data-tone", ctx.tone());
76
+ } }, inputs: { label: [1, "label"], value: [1, "value"], unit: [1, "unit"], tone: [1, "tone"], statusLabel: [1, "statusLabel"], fraction: [1, "fraction"], threshold: [1, "threshold"], title: [1, "title"] }, ngContentSelectors: _c1, decls: 10, vars: 5, consts: [[1, "prism-metric-card__head"], [1, "prism-metric-card__label"], ["size", "sm", 3, "tone", "label"], [1, "prism-metric-card__body"], [1, "prism-metric-card__value"], ["aria-hidden", "true", 1, "prism-metric-card__bar"], [3, "left"]], template: function PrismMetricCardComponent_Template(rf, ctx) { if (rf & 1) {
77
+ i0.ɵɵprojectionDef(_c0);
78
+ i0.ɵɵelementStart(0, "div", 0)(1, "span", 1);
79
+ i0.ɵɵtext(2);
80
+ i0.ɵɵelementEnd();
81
+ i0.ɵɵconditionalCreate(3, PrismMetricCardComponent_Conditional_3_Template, 1, 2, "prism-badge", 2);
82
+ i0.ɵɵelementEnd();
83
+ i0.ɵɵelementStart(4, "div", 3);
84
+ i0.ɵɵprojection(5);
85
+ i0.ɵɵelementStart(6, "span", 4);
86
+ i0.ɵɵtext(7);
87
+ i0.ɵɵconditionalCreate(8, PrismMetricCardComponent_Conditional_8_Template, 2, 1, "small");
88
+ i0.ɵɵelementEnd()();
89
+ i0.ɵɵconditionalCreate(9, PrismMetricCardComponent_Conditional_9_Template, 3, 3, "div", 5);
90
+ } if (rf & 2) {
91
+ let tmp_4_0;
92
+ i0.ɵɵadvance(2);
93
+ i0.ɵɵtextInterpolate(ctx.label());
94
+ i0.ɵɵadvance();
95
+ i0.ɵɵconditional(ctx.statusLabel() && ctx.tone() ? 3 : -1);
96
+ i0.ɵɵadvance(4);
97
+ i0.ɵɵtextInterpolate1("", ctx.value(), " ");
98
+ i0.ɵɵadvance();
99
+ i0.ɵɵconditional(ctx.unit() ? 8 : -1);
100
+ i0.ɵɵadvance();
101
+ i0.ɵɵconditional((tmp_4_0 = ctx.bar()) ? 9 : -1, tmp_4_0);
102
+ } }, dependencies: [PrismBadgeComponent], styles: ["[_nghost-%COMP%] {\n --%NS%prism-metric-tone: var(--%NS%prism-primary);\n\n display: flex;\n flex-direction: column;\n gap: 6px;\n min-width: 0;\n padding: 10px 12px;\n background: var(--%NS%prism-bg-surface);\n border: 1px solid var(--%NS%prism-border);\n border-radius: 6px;\n}\n\n[data-tone='success'][_nghost-%COMP%] {\n --%NS%prism-metric-tone: var(--%NS%prism-success);\n}\n\n[data-tone='warn'][_nghost-%COMP%] {\n --%NS%prism-metric-tone: var(--%NS%prism-warn);\n}\n\n[data-tone='danger'][_nghost-%COMP%] {\n --%NS%prism-metric-tone: var(--%NS%prism-danger);\n}\n\n.prism-metric-card__head[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n justify-content: space-between;\n min-height: 16px;\n}\n\n.prism-metric-card__label[_ngcontent-%COMP%] {\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 11px;\n font-weight: 600;\n color: var(--%NS%prism-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.06em;\n white-space: nowrap;\n}\n\n.prism-metric-card__body[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n}\n\n.prism-metric-card__value[_ngcontent-%COMP%] {\n font-family: var(--%NS%font-mono);\n font-size: 22px;\n font-weight: 600;\n font-variant-numeric: tabular-nums;\n line-height: 1.1;\n color: var(--%NS%prism-text);\n}\n\n.prism-metric-card__value[_ngcontent-%COMP%] small[_ngcontent-%COMP%] {\n margin-left: 2px;\n font-size: 12px;\n font-weight: 500;\n color: var(--%NS%prism-text-muted);\n}\n\n.prism-metric-card__bar[_ngcontent-%COMP%] {\n position: relative;\n height: 4px;\n margin-top: 2px;\n background: var(--%NS%prism-input-bg);\n border-radius: 2px;\n}\n\n.prism-metric-card__bar[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n position: absolute;\n inset: 0 auto 0 0;\n background: var(--%NS%prism-metric-tone);\n border-radius: 2px;\n}\n\n.prism-metric-card__bar[_ngcontent-%COMP%] b[_ngcontent-%COMP%] {\n position: absolute;\n top: -3px;\n width: 1.5px;\n height: 10px;\n margin-left: -0.75px;\n background: var(--%NS%prism-text-2);\n}"] });
103
+ }
104
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismMetricCardComponent, [{
105
+ type: Component,
106
+ args: [{ selector: 'prism-metric-card', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismBadgeComponent], host: {
107
+ '[attr.title]': 'title()',
108
+ '[attr.data-tone]': 'tone()'
109
+ }, template: "<div class=\"prism-metric-card__head\">\n <span class=\"prism-metric-card__label\">{{ label() }}</span>\n @if (statusLabel() && tone()) {\n <prism-badge\n size=\"sm\"\n [tone]=\"tone()!\"\n [label]=\"statusLabel()\" />\n }\n</div>\n<div class=\"prism-metric-card__body\">\n <ng-content select=\"[metricVisual]\" />\n <span class=\"prism-metric-card__value\"\n >{{ value() }}\n @if (unit()) {\n <small>{{ unit() }}</small>\n }\n </span>\n</div>\n@if (bar(); as b) {\n <div\n class=\"prism-metric-card__bar\"\n aria-hidden=\"true\">\n <i [style.width]=\"b.width\"></i>\n @if (b.tick) {\n <b [style.left]=\"b.tick\"></b>\n }\n </div>\n}\n", styles: [":host {\n --prism-metric-tone: var(--prism-primary);\n\n display: flex;\n flex-direction: column;\n gap: 6px;\n min-width: 0;\n padding: 10px 12px;\n background: var(--prism-bg-surface);\n border: 1px solid var(--prism-border);\n border-radius: 6px;\n}\n\n:host([data-tone='success']) {\n --prism-metric-tone: var(--prism-success);\n}\n\n:host([data-tone='warn']) {\n --prism-metric-tone: var(--prism-warn);\n}\n\n:host([data-tone='danger']) {\n --prism-metric-tone: var(--prism-danger);\n}\n\n.prism-metric-card__head {\n display: flex;\n gap: 8px;\n align-items: center;\n justify-content: space-between;\n min-height: 16px;\n}\n\n.prism-metric-card__label {\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 11px;\n font-weight: 600;\n color: var(--prism-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.06em;\n white-space: nowrap;\n}\n\n.prism-metric-card__body {\n display: flex;\n gap: 12px;\n align-items: center;\n}\n\n.prism-metric-card__value {\n font-family: var(--font-mono);\n font-size: 22px;\n font-weight: 600;\n font-variant-numeric: tabular-nums;\n line-height: 1.1;\n color: var(--prism-text);\n}\n\n.prism-metric-card__value small {\n margin-left: 2px;\n font-size: 12px;\n font-weight: 500;\n color: var(--prism-text-muted);\n}\n\n.prism-metric-card__bar {\n position: relative;\n height: 4px;\n margin-top: 2px;\n background: var(--prism-input-bg);\n border-radius: 2px;\n}\n\n.prism-metric-card__bar i {\n position: absolute;\n inset: 0 auto 0 0;\n background: var(--prism-metric-tone);\n border-radius: 2px;\n}\n\n.prism-metric-card__bar b {\n position: absolute;\n top: -3px;\n width: 1.5px;\n height: 10px;\n margin-left: -0.75px;\n background: var(--prism-text-2);\n}\n"] }]
110
+ }], null, { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], unit: [{ type: i0.Input, args: [{ isSignal: true, alias: "unit", required: false }] }], tone: [{ type: i0.Input, args: [{ isSignal: true, alias: "tone", required: false }] }], statusLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "statusLabel", required: false }] }], fraction: [{ type: i0.Input, args: [{ isSignal: true, alias: "fraction", required: false }] }], threshold: [{ type: i0.Input, args: [{ isSignal: true, alias: "threshold", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }] }); })();
111
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismMetricCardComponent, { className: "PrismMetricCardComponent", filePath: "app/shared/prism-metric-card.component.ts", lineNumber: 27 }); })();
@@ -0,0 +1,13 @@
1
+ import * as i0 from "@angular/core";
2
+ /**
3
+ * The toolbar row of an addon panel: sub-tabs on the left (`[toolbarStart]`),
4
+ * actions on the right (`[toolbarEnd]`, secondary before primary).
5
+ *
6
+ * No meta text: counts, timestamps, thresholds and sizes belong in tooltips. A
7
+ * panel renders this only when it has sub-tabs or actions.
8
+ */
9
+ export declare class PrismPanelToolbarComponent {
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<PrismPanelToolbarComponent, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<PrismPanelToolbarComponent, "prism-panel-toolbar", never, {}, {}, never, ["[toolbarStart]", "[toolbarEnd]"], true, never>;
12
+ }
13
+ //# sourceMappingURL=prism-panel-toolbar.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prism-panel-toolbar.component.d.ts","sourceRoot":"","sources":["../../../src/app/shared/prism-panel-toolbar.component.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AACH,qBAOa,0BAA0B;yCAA1B,0BAA0B;2CAA1B,0BAA0B;CAAG"}
@@ -0,0 +1,28 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ const _c0 = [[["", "toolbarStart", ""]], [["", "toolbarEnd", ""]]];
4
+ const _c1 = ["[toolbarStart]", "[toolbarEnd]"];
5
+ /**
6
+ * The toolbar row of an addon panel: sub-tabs on the left (`[toolbarStart]`),
7
+ * actions on the right (`[toolbarEnd]`, secondary before primary).
8
+ *
9
+ * No meta text: counts, timestamps, thresholds and sizes belong in tooltips. A
10
+ * panel renders this only when it has sub-tabs or actions.
11
+ */
12
+ export class PrismPanelToolbarComponent {
13
+ static ɵfac = function PrismPanelToolbarComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismPanelToolbarComponent)(); };
14
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismPanelToolbarComponent, selectors: [["prism-panel-toolbar"]], ngContentSelectors: _c1, decls: 4, vars: 0, consts: [[1, "prism-panel-toolbar__start"], [1, "prism-panel-toolbar__end"]], template: function PrismPanelToolbarComponent_Template(rf, ctx) { if (rf & 1) {
15
+ i0.ɵɵprojectionDef(_c0);
16
+ i0.ɵɵdomElementStart(0, "div", 0);
17
+ i0.ɵɵprojection(1);
18
+ i0.ɵɵdomElementEnd();
19
+ i0.ɵɵdomElementStart(2, "div", 1);
20
+ i0.ɵɵprojection(3, 1);
21
+ i0.ɵɵdomElementEnd();
22
+ } }, styles: ["[_nghost-%COMP%] {\n position: sticky;\n top: 0;\n z-index: 2;\n display: flex;\n flex-shrink: 0;\n gap: 12px;\n align-items: stretch;\n justify-content: space-between;\n height: 36px;\n padding: 0 18px;\n background: var(--%NS%prism-bg-surface);\n border-bottom: 1px solid var(--%NS%prism-border);\n}\n\n.prism-panel-toolbar__start[_ngcontent-%COMP%] {\n display: flex;\n align-items: stretch;\n min-width: 0;\n margin-left: -10px;\n}\n\n.prism-panel-toolbar__end[_ngcontent-%COMP%] {\n display: flex;\n flex: none;\n gap: 8px;\n align-items: center;\n}"] });
23
+ }
24
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismPanelToolbarComponent, [{
25
+ type: Component,
26
+ args: [{ selector: 'prism-panel-toolbar', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"prism-panel-toolbar__start\"><ng-content select=\"[toolbarStart]\" /></div>\n<div class=\"prism-panel-toolbar__end\"><ng-content select=\"[toolbarEnd]\" /></div>\n", styles: [":host {\n position: sticky;\n top: 0;\n z-index: 2;\n display: flex;\n flex-shrink: 0;\n gap: 12px;\n align-items: stretch;\n justify-content: space-between;\n height: 36px;\n padding: 0 18px;\n background: var(--prism-bg-surface);\n border-bottom: 1px solid var(--prism-border);\n}\n\n.prism-panel-toolbar__start {\n display: flex;\n align-items: stretch;\n min-width: 0;\n margin-left: -10px;\n}\n\n.prism-panel-toolbar__end {\n display: flex;\n flex: none;\n gap: 8px;\n align-items: center;\n}\n"] }]
27
+ }], null, null); })();
28
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismPanelToolbarComponent, { className: "PrismPanelToolbarComponent", filePath: "app/shared/prism-panel-toolbar.component.ts", lineNumber: 17 }); })();
@@ -0,0 +1,25 @@
1
+ import * as i0 from "@angular/core";
2
+ export interface PrismSegmentOption<T extends string = string> {
3
+ value: T;
4
+ label: string;
5
+ title?: string;
6
+ }
7
+ /**
8
+ * A choice between a few values: the view switch (Playground / Overview / API),
9
+ * zoom levels, fit modes. A radio group with a roving tabindex; the active
10
+ * segment sits raised on the track with a line in the brand ink under it.
11
+ */
12
+ export declare class PrismSegmentedComponent<T extends string = string> {
13
+ readonly options: import("@angular/core").InputSignal<readonly PrismSegmentOption<T>[]>;
14
+ readonly value: import("@angular/core").ModelSignal<T | null>;
15
+ readonly ariaLabel: import("@angular/core").InputSignal<string | null>;
16
+ readonly size: import("@angular/core").InputSignal<"md" | "sm">;
17
+ private readonly segments;
18
+ protected choose(option: PrismSegmentOption<T>): void;
19
+ protected onKey(event: KeyboardEvent): void;
20
+ /** The segment in the tab order: the chosen one, or the first when the value matches none. */
21
+ protected isFocusable(index: number): boolean;
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<PrismSegmentedComponent<any>, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<PrismSegmentedComponent<any>, "prism-segmented", never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
24
+ }
25
+ //# sourceMappingURL=prism-segmented.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prism-segmented.component.d.ts","sourceRoot":"","sources":["../../../src/app/shared/prism-segmented.component.ts"],"names":[],"mappings":";AAGA,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACzD,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,qBAQa,uBAAuB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAC1D,QAAQ,CAAC,OAAO,wEAAsD;IACtE,QAAQ,CAAC,KAAK,gDAAyB;IACvC,QAAQ,CAAC,SAAS,qDAA8B;IAChD,QAAQ,CAAC,IAAI,mDAA4B;IAEzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0D;IAEnF,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI;IAIrD,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAc3C,8FAA8F;IAC9F,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;yCA3BpC,uBAAuB;2CAAvB,uBAAuB;CAoCnC"}