@ng-prism/core 22.6.0 → 22.7.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
@@ -1,16 +1,28 @@
1
1
  import { computed, effect, Injectable, signal } from '@angular/core';
2
- import { PRISM_BASE_TOKENS, PRISM_DARK_THEME, PRISM_LIGHT_THEME } from '../theme/prism-default-theme.js';
2
+ import { deprecatedTokenNotice } from '../theme/deprecated-tokens.js';
3
+ import { FAVICON_SVG_DATA_URI } from '../theme/favicon.js';
4
+ import { resolveThemeTokens } from '../theme/resolve-theme-tokens.js';
3
5
  import * as i0 from "@angular/core";
4
6
  const STORAGE_KEY = 'ng-prism-theme';
5
- const FAVICON_DATA_URI = `data:image/x-icon;base64,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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////wAA////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAADAAAAAAAMAAMAAAAAAAwAA4AAAAAAHAADgAAAAAAcAAPAAAAAADwAA8AAAAAAPAAD4AAAAAB8AAPwAAAAAPwAA/AAAAAA/AAD+AAAAAH8AAP4AAAAAfwAA/wAAAAD/AAD/AAAAAP8AAP+AAAAB/wAA/8AAAAP/AAD/wAAAA/8AAP/gAAAH/wAA/+AAAAf/AAD/8AAAD/8AAP/wAAAP/wAA//gAAB//AAD//AAAP/8AAP/8AAA//wAA//4AAH//AAD//gAAf/8AAP//AAD//wAA//8AAP//AAD//4AB//8AAP//wAP//wAA///AA///AAD//+AH//8AAP//4Af//wAA///wD///AAD///AP//8AAP//+B///wAA///8P///AAD///w///8AAP///n///wAA////////AAD///////8AACgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGYzzAWAAKoGgACqBoAAqgaAAKoGgACqBoAAqgaAAKoGgACqBqoA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`;
6
7
  export class PrismThemeService {
7
8
  theme = signal(this.readStoredTheme(), /* @ts-ignore */
8
9
  ...(ngDevMode ? [{ debugName: "theme" }] : /* istanbul ignore next */ []));
9
10
  isDark = computed(() => this.theme() === 'dark', /* @ts-ignore */
10
11
  ...(ngDevMode ? [{ debugName: "isDark" }] : /* istanbul ignore next */ []));
11
- configOverrides = {};
12
- darkOverrides = {};
13
- lightOverrides = {};
12
+ overrides = signal({}, /* @ts-ignore */
13
+ ...(ngDevMode ? [{ debugName: "overrides" }] : /* istanbul ignore next */ []));
14
+ /** Every token of the active mode, including the user's overrides. */
15
+ appTokens = computed(() => resolveThemeTokens(this.theme(), this.overrides()).tokens, /* @ts-ignore */
16
+ ...(ngDevMode ? [{ debugName: "appTokens" }] : /* istanbul ignore next */ []));
17
+ /**
18
+ * The dark set, for the header: since 22.7 it is a navy brand band in both
19
+ * themes. Bound as an inline style on the header host, so tokens composed
20
+ * from others (tints, status surfaces) are evaluated there again rather than
21
+ * inherited already resolved against the light theme.
22
+ */
23
+ headerTokens = computed(() => resolveThemeTokens('dark', this.overrides()).tokens, /* @ts-ignore */
24
+ ...(ngDevMode ? [{ debugName: "headerTokens" }] : /* istanbul ignore next */ []));
25
+ warnedDeprecations = new Set();
14
26
  constructor() {
15
27
  this.applyFavicon();
16
28
  effect(() => {
@@ -24,25 +36,21 @@ export class PrismThemeService {
24
36
  this.theme.update((t) => (t === 'dark' ? 'light' : 'dark'));
25
37
  }
26
38
  applyConfigOverrides(config) {
27
- this.configOverrides = config.theme ?? {};
28
- this.darkOverrides = config.darkTheme ?? {};
29
- this.lightOverrides = config.lightTheme ?? {};
39
+ this.overrides.set({ theme: config.theme, darkTheme: config.darkTheme, lightTheme: config.lightTheme });
30
40
  this.applyTokens();
31
41
  }
32
42
  applyTokens() {
33
- const isDark = this.isDark();
34
- const base = isDark ? PRISM_DARK_THEME : PRISM_LIGHT_THEME;
35
- const specific = isDark ? this.darkOverrides : this.lightOverrides;
36
- const merged = {
37
- ...PRISM_BASE_TOKENS,
38
- ...base,
39
- ...specific,
40
- ...this.configOverrides
41
- };
43
+ const { tokens, deprecatedOverrides } = resolveThemeTokens(this.theme(), this.overrides());
42
44
  const style = document.documentElement.style;
43
- for (const [key, value] of Object.entries(merged)) {
45
+ for (const [key, value] of Object.entries(tokens)) {
44
46
  style.setProperty(key, value);
45
47
  }
48
+ for (const token of deprecatedOverrides) {
49
+ if (this.warnedDeprecations.has(token))
50
+ continue;
51
+ this.warnedDeprecations.add(token);
52
+ console.warn(`[ng-prism] ${deprecatedTokenNotice(token)}`);
53
+ }
46
54
  }
47
55
  applyFavicon() {
48
56
  let link = document.querySelector('link[rel="icon"]');
@@ -52,7 +60,7 @@ export class PrismThemeService {
52
60
  document.head.appendChild(link);
53
61
  }
54
62
  link.type = 'image/svg+xml';
55
- link.href = FAVICON_DATA_URI;
63
+ link.href = FAVICON_SVG_DATA_URI;
56
64
  }
57
65
  readStoredTheme() {
58
66
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"prism-url-state.service.d.ts","sourceRoot":"","sources":["../../../src/app/services/prism-url-state.service.ts"],"names":[],"mappings":";AAiCA,qBACa,oBAAoB;IAC7B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAChE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkC;IACpE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAChE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAE7C,OAAO,CAAC,YAAY,CAAS;IAE7B,IAAI,IAAI,IAAI;IAsBZ,OAAO,CAAC,cAAc;IA2DtB,OAAO,CAAC,UAAU;yCA3FT,oBAAoB;;CAmIhC"}
1
+ {"version":3,"file":"prism-url-state.service.d.ts","sourceRoot":"","sources":["../../../src/app/services/prism-url-state.service.ts"],"names":[],"mappings":";AAoDA,qBACa,oBAAoB;IAC7B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAChE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkC;IACpE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgC;IAChE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAE7C,OAAO,CAAC,YAAY,CAAS;IAE7B,IAAI,IAAI,IAAI;IAsBZ,OAAO,CAAC,cAAc;IAyEtB,OAAO,CAAC,UAAU;yCAzGT,oBAAoB;;CAiJhC"}
@@ -6,6 +6,8 @@ import { PrismPanelService } from './prism-panel.service.js';
6
6
  import { PrismRendererService } from './prism-renderer.service.js';
7
7
  import * as i0 from "@angular/core";
8
8
  const PARAM_COMPONENT = 'component';
9
+ const PARAM_SERVICE = 'service';
10
+ const PARAM_PIPE = 'pipe';
9
11
  const PARAM_PAGE = 'page';
10
12
  const PARAM_VARIANT = 'variant';
11
13
  const PARAM_STATE = 'state';
@@ -27,6 +29,25 @@ function parseStateIndex(param, count) {
27
29
  const index = Number(param);
28
30
  return index < count ? index : null;
29
31
  }
32
+ /**
33
+ * What a URL addresses, `null` for nothing. The same precedence as the restore,
34
+ * prefixed per kind so a component, a service and a pipe of one name still differ.
35
+ */
36
+ function navKey(params) {
37
+ const component = params.get(PARAM_COMPONENT);
38
+ const service = params.get(PARAM_SERVICE);
39
+ const pipe = params.get(PARAM_PIPE);
40
+ const page = params.get(PARAM_PAGE);
41
+ if (component !== null)
42
+ return `${PARAM_COMPONENT}:${component}`;
43
+ if (service !== null)
44
+ return `${PARAM_SERVICE}:${service}`;
45
+ if (pipe !== null)
46
+ return `${PARAM_PIPE}:${pipe}`;
47
+ if (page !== null)
48
+ return `${PARAM_PAGE}:${page}`;
49
+ return null;
50
+ }
30
51
  export class PrismUrlStateService {
31
52
  manifestService = inject(PrismManifestService);
32
53
  navigationService = inject(PrismNavigationService);
@@ -54,6 +75,8 @@ export class PrismUrlStateService {
54
75
  restoreFromUrl() {
55
76
  const params = new URLSearchParams(window.location.search);
56
77
  const componentClassName = params.get(PARAM_COMPONENT);
78
+ const serviceClassName = params.get(PARAM_SERVICE);
79
+ const pipeClassName = params.get(PARAM_PIPE);
57
80
  const pageTitle = params.get(PARAM_PAGE);
58
81
  const variantParam = params.get(PARAM_VARIANT);
59
82
  const stateParam = params.get(PARAM_STATE);
@@ -84,6 +107,18 @@ export class PrismUrlStateService {
84
107
  stateIndex = parseStateIndex(stateParam, comp.meta.showcaseConfig.states?.length ?? 0);
85
108
  }
86
109
  }
110
+ else if (serviceClassName) {
111
+ const service = this.manifestService.services().find((s) => s.meta.className === serviceClassName);
112
+ if (service) {
113
+ this.navigationService.selectService(service);
114
+ }
115
+ }
116
+ else if (pipeClassName) {
117
+ const pipe = this.manifestService.pipes().find((p) => p.meta.className === pipeClassName);
118
+ if (pipe) {
119
+ this.navigationService.selectPipe(pipe);
120
+ }
121
+ }
87
122
  else if (pageTitle) {
88
123
  const page = this.manifestService.pages().find((p) => p.title === pageTitle);
89
124
  if (page) {
@@ -116,6 +151,12 @@ export class PrismUrlStateService {
116
151
  params.set(PARAM_STATE, String(stateIndex));
117
152
  }
118
153
  }
154
+ else if (item?.kind === 'service') {
155
+ params.set(PARAM_SERVICE, item.data.meta.className);
156
+ }
157
+ else if (item?.kind === 'pipe') {
158
+ params.set(PARAM_PIPE, item.data.meta.className);
159
+ }
119
160
  else if (item?.kind === 'page') {
120
161
  params.set(PARAM_PAGE, item.data.title);
121
162
  }
@@ -129,10 +170,7 @@ export class PrismUrlStateService {
129
170
  const newUrl = queryString ? `${window.location.pathname}?${queryString}` : window.location.pathname;
130
171
  if (newUrl === window.location.pathname + window.location.search)
131
172
  return;
132
- const currentParams = new URLSearchParams(window.location.search);
133
- const prevNavKey = currentParams.get(PARAM_COMPONENT) ?? currentParams.get(PARAM_PAGE);
134
- const newNavKey = params.get(PARAM_COMPONENT) ?? params.get(PARAM_PAGE);
135
- if (prevNavKey !== newNavKey) {
173
+ if (navKey(new URLSearchParams(window.location.search)) !== navKey(params)) {
136
174
  window.history.pushState(null, '', newUrl);
137
175
  }
138
176
  else {
@@ -0,0 +1,7 @@
1
+ import type { StatusTone } from '../../plugin/status.js';
2
+ /** Colour roles of `prism-badge`. */
3
+ export type BadgeTone = 'neutral' | 'primary' | 'success' | 'warn' | 'danger';
4
+ export type { StatusTone };
5
+ /** The badge tone that shows a status verdict. */
6
+ export declare function toneForStatus(status: StatusTone): BadgeTone;
7
+ //# sourceMappingURL=badge.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.types.d.ts","sourceRoot":"","sources":["../../../src/app/shared/badge.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,qCAAqC;AACrC,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE9E,YAAY,EAAE,UAAU,EAAE,CAAC;AAQ3B,kDAAkD;AAClD,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAE3D"}
@@ -0,0 +1,9 @@
1
+ const STATUS_BADGE_TONE = {
2
+ ok: 'success',
3
+ warn: 'warn',
4
+ danger: 'danger'
5
+ };
6
+ /** The badge tone that shows a status verdict. */
7
+ export function toneForStatus(status) {
8
+ return STATUS_BADGE_TONE[status];
9
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * The ng-prism symbol, the mark without the wordmark, as data.
3
+ *
4
+ * Kept as data rather than an SVG file because two consumers draw it with
5
+ * different gradient ids: the logo component renders one instance per place it
6
+ * appears (header and sidebar footer at the same time), and SVG gradient ids are
7
+ * document-global; the favicon serialises it once into a data URI. The geometry
8
+ * is copied verbatim from `docs/assets/brand/ng-prism-symbol.svg` (2048 × 1608
9
+ * canvas), which `brand-mark.spec.ts` checks, and must not be edited: the brand
10
+ * guide forbids reshaping the mark.
11
+ */
12
+ export interface BrandMarkGradient {
13
+ id: string;
14
+ /** End points on the mark's canvas (`gradientUnits="userSpaceOnUse"`). */
15
+ x1: number;
16
+ y1: number;
17
+ x2: number;
18
+ y2: number;
19
+ stops: ReadonlyArray<readonly [offset: string, colour: string]>;
20
+ }
21
+ export interface BrandMarkFacet {
22
+ d: string;
23
+ /** A gradient id from {@link BRAND_MARK_GRADIENTS}, or a solid colour. */
24
+ gradient?: string;
25
+ colour?: string;
26
+ }
27
+ export declare const BRAND_MARK_GRADIENTS: readonly BrandMarkGradient[];
28
+ export declare const BRAND_MARK_FACETS: readonly BrandMarkFacet[];
29
+ /** The mark's bounding box on the kit canvas, trimmed to the facets. */
30
+ export declare const BRAND_MARK_VIEWBOX = "4 31 2036 1561";
31
+ /** The same box padded to a square, for icons the browser would otherwise letterbox. */
32
+ export declare const BRAND_MARK_SQUARE_VIEWBOX = "4 -206.5 2036 2036";
33
+ /** The mark as a standalone SVG document, with every gradient id prefixed. */
34
+ export declare function brandMarkSvg(idPrefix: string, viewBox: string): string;
35
+ //# sourceMappingURL=brand-mark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand-mark.d.ts","sourceRoot":"","sources":["../../../src/app/shared/brand-mark.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,0EAA0E;IAC1E,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACnE;AAED,MAAM,WAAW,cAAc;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,oBAAoB,EAAE,SAAS,iBAAiB,EAa5D,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,EAyBtD,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AAEnD,wFAAwF;AACxF,eAAO,MAAM,yBAAyB,uBAAuB,CAAC;AAE9D,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAUtE"}
@@ -0,0 +1,52 @@
1
+ export const BRAND_MARK_GRADIENTS = [
2
+ {
3
+ id: 'face',
4
+ x1: -70.82,
5
+ y1: 873,
6
+ x2: 1100.42,
7
+ y2: 749.3,
8
+ stops: [
9
+ ['40.42%', '#009ffc'],
10
+ ['67.49%', '#00c6fb'],
11
+ ['82.34%', '#49f6f8']
12
+ ]
13
+ }
14
+ ];
15
+ export const BRAND_MARK_FACETS = [
16
+ {
17
+ colour: '#3106f6',
18
+ d: 'M1053.51 31.812c9.37 10.809 19.49 20.61 29.96 30.32 35.87 37.122 73.82 73.917 110.43 110.453l215.58 214.468 169.94 168.283c23.07 22.717 47.38 47.997 70.8 69.826 4.17 13.173 11.29 29.35 16.69 42.449a3701 3701 0 0 1 25.26 62.599 26975 26975 0 0 0 115.93 287.11l146.16 359.23 66.97 167.96c6.07 15.1 11.88 32.2 18.1 46.88l-7.24-5.64c-7.7-5.08-24.72-19.84-32.41-26.22l-60.41-50.27c-135.74-113.75-256.61-234.53-380.45-360.84-11.75-13.02-28.21-28.74-40.81-41.42l-79.66-79.49-151.14-151.378c-32.93-32.934-68.42-67.049-100.47-100.626a28039 28039 0 0 0-133.23-743.694'
19
+ },
20
+ {
21
+ colour: '#f700f9',
22
+ d: 'M1448.35 674.906c51.55-11.708 102.85-25.917 154.41-37.781 15.64-3.6 32.09-7.446 47.46-11.963 4.17 13.173 11.29 29.35 16.69 42.449a3701 3701 0 0 1 25.26 62.599 26975 26975 0 0 0 115.93 287.11l146.16 359.23 66.97 167.96c6.07 15.1 11.88 32.2 18.1 46.88l-7.24-5.64c-7.7-5.08-24.72-19.84-32.41-26.22l-60.41-50.27c-135.74-113.75-256.61-234.53-380.45-360.84 30.58-42.53 60.14-89.62 91.03-131.24-7.28-10.63-16.61-27.397-23.53-39.006l-46.65-78.695a18161 18161 0 0 1-131.32-224.573'
23
+ },
24
+ {
25
+ colour: '#c100fa',
26
+ d: 'M1649.85 1017.18q41.28 69.57 83.73 138.42c55.8 91.85 111.63 181.63 174.17 269.17 14.42 20.5 29.31 40.67 44.64 60.5 8.77 11.26 77.67 94.5 79.7 100.48-7.7-5.08-24.72-19.84-32.41-26.22l-60.41-50.27c-135.74-113.75-256.61-234.53-380.45-360.84 30.58-42.53 60.14-89.62 91.03-131.24'
27
+ },
28
+ {
29
+ colour: '#003eef',
30
+ d: 'M1053.51 31.812c9.37 10.809 19.49 20.61 29.96 30.32-.28 3.047-.1 5.061 1.59 7.675 9.7 14.996 20.76 29.977 31 44.562 15.36 22.225 30.21 44.8 44.54 67.708 42.63 68.046 86.18 145.279 126.4 215.155l81.63 139.638 49.34 85.769c9.07 15.787 19.51 35.08 29.25 50.197a21969 21969 0 0 0-260.48 102.67 28039 28039 0 0 0-133.23-743.694m-29.8 819.248.97-.413c12.65 13.985 28.6 29.213 42.02 43.082l99.79 103.909a14350 14350 0 0 1 279.56 310.012l84.53 96.72c21.16 24.19 42.87 48.42 62.92 73.53l-.49 1.05c-70.75 2.03-145.11.93-216.13.95l-356.6.24-357.765.38c-67.064.11-139.804 1.48-206.636-.25l-.594.17-.77-.55c14.229-20.57 45.62-54.64 62.926-74.58l113.796-130.37c104.279-117.57 201.671-227.47 311.138-340.567a4601 4601 0 0 1 81.335-83.313'
31
+ },
32
+ {
33
+ gradient: 'face',
34
+ d: 'M1023.71 851.06c.91 11.38.49 26.534.49 38.254l-.01 62.574v180.942c0 31.11-.9 68.03.34 98.8L615.124 1410.9l-108.499 47.09c-9.121 3.92-44.322 18.33-50.746 22.28l-.594.17-.77-.55c14.229-20.57 45.62-54.64 62.926-74.58l113.796-130.37c104.279-117.57 201.671-227.47 311.138-340.567a4601 4601 0 0 1 81.335-83.313M399.122 627.639c5.671 4.62 49.844 17.931 59.109 20.982l93.111 30.634 53.266 17.387c5.398 1.736 19.646 6.733 24.703 7.751 39.309 14.47 87.882 28.542 128.189 41.65 29.211 9.5 74.168 25.382 103.252 32.989-8.936 11.333-37.673 36.649-49.413 48.193a14201 14201 0 0 1-131.93 128.405 20351 20351 0 0 1-524.563 496.86l-91.483 84.66c-7.802 7.3-40.624 38.88-47.162 42.82-.98 1.56-9.543 9.26-11.222 10.78 7.876-18.63 15.647-40.79 23.25-60.01l57.855-144.6a40219 40219 0 0 1 214.547-523.048l71.549-171.414a2143 2143 0 0 0 16.549-39.962c2.47-6.084 7.243-18.875 10.393-24.077m311.872-311.39c5.424-6.894 16.027-16.241 22.627-22.653a2689 2689 0 0 0 37.456-37.23 11776 11776 0 0 1 143.325-142.395l51.588-50.559c10.371-10.047 23.121-21.418 32.698-31.861-7.62 53.57-20.233 114.027-30.241 167.77l-49.438 268.318-42.68 227.449c-4.477 22.83-8.414 45.795-12.696 68.664-.785 4.19-1.543 9.196-2.637 13.253l-.244 2.027c-29.084-7.607-74.041-23.489-103.252-32.989-40.307-13.108-88.88-27.18-128.189-41.65-5.057-1.018-19.305-6.015-24.703-7.751l-53.266-17.387-93.111-30.634c-9.265-3.051-53.438-16.362-59.109-20.982a24629 24629 0 0 1 247.986-248.387c21.129-21.121 43.28-41.718 63.886-63.003m0 0c5.424-6.894 16.027-16.241 22.627-22.653a2689 2689 0 0 0 37.456-37.23 11776 11776 0 0 1 143.325-142.395l51.588-50.559c10.371-10.047 23.121-21.418 32.698-31.861-7.62 53.57-20.233 114.027-30.241 167.77l-49.438 268.318-42.68 227.449c-4.477 22.83-8.414 45.795-12.696 68.664-.785 4.19-1.543 9.196-2.637 13.253-5.02-6.684-29.896-87.135-34.15-100.108a19789 19789 0 0 1-115.852-360.648'
35
+ },
36
+ {
37
+ colour: '#3a50fc',
38
+ d: 'm1023.71 851.06.97-.413c12.65 13.985 28.6 29.213 42.02 43.082l99.79 103.909a14350 14350 0 0 1 279.56 310.012l84.53 96.72c21.16 24.19 42.87 48.42 62.92 73.53-12.08.2-514.71-222.99-568.97-246.27-1.24-30.77-.34-67.69-.34-98.8V951.888l.01-62.574c0-11.72.42-26.874-.49-38.254M629.311 704.393c39.309 14.47 87.882 28.542 128.189 41.65 29.211 9.5 74.168 25.382 103.252 32.989-8.936 11.333-37.673 36.649-49.413 48.193a14201 14201 0 0 1-131.93 128.405 20351 20351 0 0 1-524.563 496.86l-91.483 84.66c-7.802 7.3-40.624 38.88-47.162 42.82 3.036-5.46 16.048-21.18 20.233-26.32a3448 3448 0 0 0 37.57-46.45 4793 4793 0 0 0 111.042-147.66 15900 15900 0 0 0 281.423-409.101l101.828-152.475c19.515-29.383 42.978-63.442 61.014-93.571'
39
+ }
40
+ ];
41
+ /** The mark's bounding box on the kit canvas, trimmed to the facets. */
42
+ export const BRAND_MARK_VIEWBOX = '4 31 2036 1561';
43
+ /** The same box padded to a square, for icons the browser would otherwise letterbox. */
44
+ export const BRAND_MARK_SQUARE_VIEWBOX = '4 -206.5 2036 2036';
45
+ /** The mark as a standalone SVG document, with every gradient id prefixed. */
46
+ export function brandMarkSvg(idPrefix, viewBox) {
47
+ const gradients = BRAND_MARK_GRADIENTS.map((g) => `<linearGradient id="${idPrefix}${g.id}" x1="${g.x1}" y1="${g.y1}" x2="${g.x2}" y2="${g.y2}" gradientUnits="userSpaceOnUse">` +
48
+ g.stops.map(([offset, colour]) => `<stop offset="${offset}" stop-color="${colour}"/>`).join('') +
49
+ '</linearGradient>').join('');
50
+ const facets = BRAND_MARK_FACETS.map((f) => `<path fill="${f.gradient ? `url(#${idPrefix}${f.gradient})` : f.colour}" d="${f.d}"/>`).join('');
51
+ return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="${viewBox}"><defs>${gradients}</defs>${facets}</svg>`;
52
+ }
@@ -0,0 +1,6 @@
1
+ /** Fill width and threshold tick of a metric card's bar, both clamped to the track. */
2
+ export declare function barGeometry(fraction: number, threshold?: number): {
3
+ width: string;
4
+ tick: string | null;
5
+ };
6
+ //# sourceMappingURL=metric-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metric-bar.d.ts","sourceRoot":"","sources":["../../../src/app/shared/metric-bar.ts"],"names":[],"mappings":"AAKA,uFAAuF;AACvF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAExG"}
@@ -0,0 +1,7 @@
1
+ const clamp = (n) => Math.min(1, Math.max(0, n));
2
+ /** `0.4736` → `'47.36%'`, without float noise. */
3
+ const percent = (fraction) => `${Math.round(clamp(fraction) * 10000) / 100}%`;
4
+ /** Fill width and threshold tick of a metric card's bar, both clamped to the track. */
5
+ export function barGeometry(fraction, threshold) {
6
+ return { width: percent(fraction), tick: threshold === undefined ? null : percent(threshold) };
7
+ }
@@ -0,0 +1,21 @@
1
+ import type { BadgeTone } from './badge.types.js';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * The one badge of the styleguide chrome.
5
+ *
6
+ * Words are set in the sans face and never in capitals; only `value` is mono,
7
+ * with tabular figures, so numbers line up. `soft` fills with the tone's `-bg`
8
+ * tint, `outline` draws its contour instead; both keep 4.5:1 for the text.
9
+ */
10
+ export declare class PrismBadgeComponent {
11
+ readonly tone: import("@angular/core").InputSignal<BadgeTone>;
12
+ readonly variant: import("@angular/core").InputSignal<"soft" | "outline">;
13
+ readonly size: import("@angular/core").InputSignal<"md" | "sm">;
14
+ /** A leading dot in the tone's colour. */
15
+ readonly dot: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
16
+ readonly label: import("@angular/core").InputSignal<string | null>;
17
+ readonly value: import("@angular/core").InputSignal<string | null>;
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<PrismBadgeComponent, never>;
19
+ static ɵcmp: i0.ɵɵComponentDeclaration<PrismBadgeComponent, "prism-badge", never, { "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "dot": { "alias": "dot"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
20
+ }
21
+ //# sourceMappingURL=prism-badge.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prism-badge.component.d.ts","sourceRoot":"","sources":["../../../src/app/shared/prism-badge.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;;AAElD;;;;;;GAMG;AACH,qBAUa,mBAAmB;IAC5B,QAAQ,CAAC,IAAI,iDAA+B;IAC5C,QAAQ,CAAC,OAAO,0DAAqC;IACrD,QAAQ,CAAC,IAAI,mDAA4B;IACzC,0CAA0C;IAC1C,QAAQ,CAAC,GAAG,qEAAiD;IAC7D,QAAQ,CAAC,KAAK,qDAA8B;IAC5C,QAAQ,CAAC,KAAK,qDAA8B;yCAPnC,mBAAmB;2CAAnB,mBAAmB;CAQ/B"}
@@ -0,0 +1,68 @@
1
+ import { booleanAttribute, ChangeDetectionStrategy, Component, input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ const _c0 = ["*"];
4
+ function PrismBadgeComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
5
+ i0.ɵɵdomElement(0, "span", 0);
6
+ } }
7
+ function PrismBadgeComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
8
+ i0.ɵɵdomElementStart(0, "span", 1);
9
+ i0.ɵɵtext(1);
10
+ i0.ɵɵdomElementEnd();
11
+ } if (rf & 2) {
12
+ const ctx_r0 = i0.ɵɵnextContext();
13
+ i0.ɵɵadvance();
14
+ i0.ɵɵtextInterpolate(ctx_r0.label());
15
+ } }
16
+ function PrismBadgeComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
17
+ i0.ɵɵdomElementStart(0, "span", 2);
18
+ i0.ɵɵtext(1);
19
+ i0.ɵɵdomElementEnd();
20
+ } if (rf & 2) {
21
+ const ctx_r0 = i0.ɵɵnextContext();
22
+ i0.ɵɵadvance();
23
+ i0.ɵɵtextInterpolate(ctx_r0.value());
24
+ } }
25
+ /**
26
+ * The one badge of the styleguide chrome.
27
+ *
28
+ * Words are set in the sans face and never in capitals; only `value` is mono,
29
+ * with tabular figures, so numbers line up. `soft` fills with the tone's `-bg`
30
+ * tint, `outline` draws its contour instead; both keep 4.5:1 for the text.
31
+ */
32
+ export class PrismBadgeComponent {
33
+ tone = input('neutral', /* @ts-ignore */
34
+ ...(ngDevMode ? [{ debugName: "tone" }] : /* istanbul ignore next */ []));
35
+ variant = input('soft', /* @ts-ignore */
36
+ ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
37
+ size = input('md', /* @ts-ignore */
38
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
39
+ /** A leading dot in the tone's colour. */
40
+ dot = input(false, { ...(ngDevMode ? { debugName: "dot" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
41
+ label = input(null, /* @ts-ignore */
42
+ ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
43
+ value = input(null, /* @ts-ignore */
44
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
45
+ static ɵfac = function PrismBadgeComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismBadgeComponent)(); };
46
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismBadgeComponent, selectors: [["prism-badge"]], hostVars: 2, hostBindings: function PrismBadgeComponent_HostBindings(rf, ctx) { if (rf & 2) {
47
+ i0.ɵɵclassMap("prism-badge prism-badge--" + ctx.tone() + " prism-badge--" + ctx.variant() + " prism-badge--" + ctx.size());
48
+ } }, inputs: { tone: [1, "tone"], variant: [1, "variant"], size: [1, "size"], dot: [1, "dot"], label: [1, "label"], value: [1, "value"] }, ngContentSelectors: _c0, decls: 4, vars: 3, consts: [["aria-hidden", "true", 1, "prism-badge__dot"], [1, "prism-badge__label"], [1, "prism-badge__value"]], template: function PrismBadgeComponent_Template(rf, ctx) { if (rf & 1) {
49
+ i0.ɵɵprojectionDef();
50
+ i0.ɵɵconditionalCreate(0, PrismBadgeComponent_Conditional_0_Template, 1, 0, "span", 0);
51
+ i0.ɵɵconditionalCreate(1, PrismBadgeComponent_Conditional_1_Template, 2, 1, "span", 1);
52
+ i0.ɵɵconditionalCreate(2, PrismBadgeComponent_Conditional_2_Template, 2, 1, "span", 2);
53
+ i0.ɵɵprojection(3);
54
+ } if (rf & 2) {
55
+ i0.ɵɵconditional(ctx.dot() ? 0 : -1);
56
+ i0.ɵɵadvance();
57
+ i0.ɵɵconditional(ctx.label() ? 1 : -1);
58
+ i0.ɵɵadvance();
59
+ i0.ɵɵconditional(ctx.value() ? 2 : -1);
60
+ } }, styles: ["[_nghost-%COMP%] {\n --%NS%prism-badge-fg: var(--%NS%prism-text-muted);\n --%NS%prism-badge-bg: var(--%NS%prism-input-bg);\n\n display: inline-flex;\n flex: none;\n gap: 5px;\n align-items: center;\n height: 20px;\n padding: 0 7px;\n font-family: var(--%NS%font-sans);\n font-size: 11px;\n font-weight: 500;\n line-height: 1;\n color: var(--%NS%prism-badge-fg);\n white-space: nowrap;\n background: var(--%NS%prism-badge-bg);\n border-radius: 4px;\n}\n\n.prism-badge--sm[_nghost-%COMP%] {\n gap: 4px;\n height: 16px;\n padding: 0 5px;\n font-size: 10px;\n}\n\n.prism-badge--primary[_nghost-%COMP%] {\n --%NS%prism-badge-fg: var(--%NS%prism-primary);\n --%NS%prism-badge-bg: var(--%NS%prism-primary-bg);\n}\n\n.prism-badge--success[_nghost-%COMP%] {\n --%NS%prism-badge-fg: var(--%NS%prism-success);\n --%NS%prism-badge-bg: var(--%NS%prism-success-bg);\n}\n\n.prism-badge--warn[_nghost-%COMP%] {\n --%NS%prism-badge-fg: var(--%NS%prism-warn);\n --%NS%prism-badge-bg: var(--%NS%prism-warn-bg);\n}\n\n.prism-badge--danger[_nghost-%COMP%] {\n --%NS%prism-badge-fg: var(--%NS%prism-danger);\n --%NS%prism-badge-bg: var(--%NS%prism-danger-bg);\n}\n\n.prism-badge--outline[_nghost-%COMP%] {\n background: transparent;\n box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--%NS%prism-badge-fg) 65%, transparent);\n}\n\n.prism-badge--neutral.prism-badge--outline[_nghost-%COMP%] {\n box-shadow: inset 0 0 0 1px var(--%NS%prism-border-strong);\n}\n\n.prism-badge__dot[_ngcontent-%COMP%] {\n box-sizing: border-box;\n flex: none;\n width: 6px;\n height: 6px;\n background: var(--%NS%prism-badge-dot-fill, currentcolor);\n border-radius: 50%;\n box-shadow: inset 0 0 0 1.5px currentcolor;\n}\n\n.prism-badge--sm[_nghost-%COMP%] .prism-badge__dot[_ngcontent-%COMP%] {\n width: 5px;\n height: 5px;\n}\n\n.prism-badge__value[_ngcontent-%COMP%] {\n font-family: var(--%NS%font-mono);\n font-weight: 600;\n font-variant-numeric: tabular-nums;\n}"] });
61
+ }
62
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismBadgeComponent, [{
63
+ type: Component,
64
+ args: [{ selector: 'prism-badge', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: {
65
+ '[class]': "'prism-badge prism-badge--' + tone() + ' prism-badge--' + variant() + ' prism-badge--' + size()"
66
+ }, template: "@if (dot()) {\n <span\n class=\"prism-badge__dot\"\n aria-hidden=\"true\"></span>\n}\n@if (label()) {\n <span class=\"prism-badge__label\">{{ label() }}</span>\n}\n@if (value()) {\n <span class=\"prism-badge__value\">{{ value() }}</span>\n}\n<ng-content />\n", styles: [":host {\n --prism-badge-fg: var(--prism-text-muted);\n --prism-badge-bg: var(--prism-input-bg);\n\n display: inline-flex;\n flex: none;\n gap: 5px;\n align-items: center;\n height: 20px;\n padding: 0 7px;\n font-family: var(--font-sans);\n font-size: 11px;\n font-weight: 500;\n line-height: 1;\n color: var(--prism-badge-fg);\n white-space: nowrap;\n background: var(--prism-badge-bg);\n border-radius: 4px;\n}\n\n:host(.prism-badge--sm) {\n gap: 4px;\n height: 16px;\n padding: 0 5px;\n font-size: 10px;\n}\n\n:host(.prism-badge--primary) {\n --prism-badge-fg: var(--prism-primary);\n --prism-badge-bg: var(--prism-primary-bg);\n}\n\n:host(.prism-badge--success) {\n --prism-badge-fg: var(--prism-success);\n --prism-badge-bg: var(--prism-success-bg);\n}\n\n:host(.prism-badge--warn) {\n --prism-badge-fg: var(--prism-warn);\n --prism-badge-bg: var(--prism-warn-bg);\n}\n\n:host(.prism-badge--danger) {\n --prism-badge-fg: var(--prism-danger);\n --prism-badge-bg: var(--prism-danger-bg);\n}\n\n:host(.prism-badge--outline) {\n background: transparent;\n box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--prism-badge-fg) 65%, transparent);\n}\n\n:host(.prism-badge--neutral.prism-badge--outline) {\n box-shadow: inset 0 0 0 1px var(--prism-border-strong);\n}\n\n.prism-badge__dot {\n box-sizing: border-box;\n flex: none;\n width: 6px;\n height: 6px;\n background: var(--prism-badge-dot-fill, currentcolor);\n border-radius: 50%;\n box-shadow: inset 0 0 0 1.5px currentcolor;\n}\n\n:host(.prism-badge--sm) .prism-badge__dot {\n width: 5px;\n height: 5px;\n}\n\n.prism-badge__value {\n font-family: var(--font-mono);\n font-weight: 600;\n font-variant-numeric: tabular-nums;\n}\n"] }]
67
+ }], null, { tone: [{ type: i0.Input, args: [{ isSignal: true, alias: "tone", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], dot: [{ type: i0.Input, args: [{ isSignal: true, alias: "dot", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }] }); })();
68
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismBadgeComponent, { className: "PrismBadgeComponent", filePath: "app/shared/prism-badge.component.ts", lineNumber: 21 }); })();
@@ -0,0 +1,12 @@
1
+ import * as i0 from "@angular/core";
2
+ /**
3
+ * Text buttons for toolbar actions. `primary` fills with the brand blue,
4
+ * `secondary` draws a contour, `ghost` neither. Secondary goes before primary.
5
+ */
6
+ export declare class PrismButtonComponent {
7
+ readonly variant: import("@angular/core").InputSignal<"primary" | "secondary" | "ghost">;
8
+ readonly size: import("@angular/core").InputSignal<"md" | "sm">;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<PrismButtonComponent, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<PrismButtonComponent, "button[prismButton]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
11
+ }
12
+ //# sourceMappingURL=prism-button.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prism-button.component.d.ts","sourceRoot":"","sources":["../../../src/app/shared/prism-button.component.ts"],"names":[],"mappings":";AAEA;;;GAGG;AACH,qBAWa,oBAAoB;IAC7B,QAAQ,CAAC,OAAO,yEAAyD;IACzE,QAAQ,CAAC,IAAI,mDAA4B;yCAFhC,oBAAoB;2CAApB,oBAAoB;CAGhC"}
@@ -0,0 +1,28 @@
1
+ import { ChangeDetectionStrategy, Component, input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ const _c0 = ["*"];
4
+ /**
5
+ * Text buttons for toolbar actions. `primary` fills with the brand blue,
6
+ * `secondary` draws a contour, `ghost` neither. Secondary goes before primary.
7
+ */
8
+ export class PrismButtonComponent {
9
+ variant = input('secondary', /* @ts-ignore */
10
+ ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
11
+ size = input('sm', /* @ts-ignore */
12
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
13
+ static ɵfac = function PrismButtonComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismButtonComponent)(); };
14
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismButtonComponent, selectors: [["button", "prismButton", ""]], hostAttrs: ["type", "button"], hostVars: 2, hostBindings: function PrismButtonComponent_HostBindings(rf, ctx) { if (rf & 2) {
15
+ i0.ɵɵclassMap("prism-button prism-button--" + ctx.variant() + " prism-button--" + ctx.size());
16
+ } }, inputs: { variant: [1, "variant"], size: [1, "size"] }, ngContentSelectors: _c0, decls: 1, vars: 0, template: function PrismButtonComponent_Template(rf, ctx) { if (rf & 1) {
17
+ i0.ɵɵprojectionDef();
18
+ i0.ɵɵprojection(0);
19
+ } }, styles: ["[_nghost-%COMP%] {\n display: inline-flex;\n flex: none;\n gap: 6px;\n align-items: center;\n height: 26px;\n padding: 0 11px;\n font-family: var(--%NS%font-sans);\n font-size: 12px;\n font-weight: 500;\n color: var(--%NS%prism-text-2);\n white-space: nowrap;\n cursor: pointer;\n background: transparent;\n border: 1px solid var(--%NS%prism-border-strong);\n border-radius: 5px;\n transition:\n color var(--%NS%dur-fast) var(--%NS%ease-default),\n background var(--%NS%dur-fast) var(--%NS%ease-default);\n}\n\n.prism-button--md[_nghost-%COMP%] {\n height: 30px;\n padding: 0 14px;\n font-size: 12.5px;\n}\n\n.prism-button--%NS%secondary[_nghost-%COMP%]:hover:not(:disabled) {\n color: var(--%NS%prism-text);\n background: var(--%NS%prism-input-bg);\n}\n\n.prism-button--primary[_nghost-%COMP%] {\n color: var(--%NS%prism-on-primary);\n background: var(--%NS%prism-primary-fill);\n border-color: var(--%NS%prism-primary-fill);\n}\n\n.prism-button--%NS%primary[_nghost-%COMP%]:hover:not(:disabled) {\n background: var(--%NS%prism-primary-fill-hover);\n border-color: var(--%NS%prism-primary-fill-hover);\n}\n\n.prism-button--ghost[_nghost-%COMP%] {\n border-color: transparent;\n}\n\n.prism-button--%NS%ghost[_nghost-%COMP%]:hover:not(:disabled) {\n color: var(--%NS%prism-text);\n background: var(--%NS%prism-input-bg);\n}\n\n[_nghost-%COMP%]:disabled {\n color: var(--%NS%prism-text-muted);\n cursor: default;\n background: transparent;\n border-color: var(--%NS%prism-border);\n}\n\n[_nghost-%COMP%]:focus-visible {\n outline: 2px solid var(--%NS%prism-primary);\n outline-offset: 2px;\n}"] });
20
+ }
21
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismButtonComponent, [{
22
+ type: Component,
23
+ args: [{ selector: 'button[prismButton]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: {
24
+ type: 'button',
25
+ '[class]': "'prism-button prism-button--' + variant() + ' prism-button--' + size()"
26
+ }, template: "<ng-content />\n", styles: [":host {\n display: inline-flex;\n flex: none;\n gap: 6px;\n align-items: center;\n height: 26px;\n padding: 0 11px;\n font-family: var(--font-sans);\n font-size: 12px;\n font-weight: 500;\n color: var(--prism-text-2);\n white-space: nowrap;\n cursor: pointer;\n background: transparent;\n border: 1px solid var(--prism-border-strong);\n border-radius: 5px;\n transition:\n color var(--dur-fast) var(--ease-default),\n background var(--dur-fast) var(--ease-default);\n}\n\n:host(.prism-button--md) {\n height: 30px;\n padding: 0 14px;\n font-size: 12.5px;\n}\n\n:host(.prism-button--secondary:hover:not(:disabled)) {\n color: var(--prism-text);\n background: var(--prism-input-bg);\n}\n\n:host(.prism-button--primary) {\n color: var(--prism-on-primary);\n background: var(--prism-primary-fill);\n border-color: var(--prism-primary-fill);\n}\n\n:host(.prism-button--primary:hover:not(:disabled)) {\n background: var(--prism-primary-fill-hover);\n border-color: var(--prism-primary-fill-hover);\n}\n\n:host(.prism-button--ghost) {\n border-color: transparent;\n}\n\n:host(.prism-button--ghost:hover:not(:disabled)) {\n color: var(--prism-text);\n background: var(--prism-input-bg);\n}\n\n:host(:disabled) {\n color: var(--prism-text-muted);\n cursor: default;\n background: transparent;\n border-color: var(--prism-border);\n}\n\n:host(:focus-visible) {\n outline: 2px solid var(--prism-primary);\n outline-offset: 2px;\n}\n"] }]
27
+ }], null, { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] }); })();
28
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismButtonComponent, { className: "PrismButtonComponent", filePath: "app/shared/prism-button.component.ts", lineNumber: 18 }); })();
@@ -0,0 +1,17 @@
1
+ import * as i0 from "@angular/core";
2
+ /**
3
+ * The ghost icon button of header, component head, toolbars and the tool rail.
4
+ *
5
+ * md 32 px (header), sm 28 px (component head), xs 26 px (toolbars, rail).
6
+ * `pressed` makes it a toggle (`aria-pressed`) with the active tint. Colours run
7
+ * through `--prism-icon-button-*`, so a surface such as the tool rail can bend
8
+ * them to its own tokens.
9
+ */
10
+ export declare class PrismIconButtonComponent {
11
+ readonly size: import("@angular/core").InputSignal<"md" | "sm" | "xs">;
12
+ /** `null` for a plain button, a boolean for a toggle. */
13
+ readonly pressed: import("@angular/core").InputSignal<boolean | null>;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<PrismIconButtonComponent, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<PrismIconButtonComponent, "button[prismIconButton]", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "pressed": { "alias": "pressed"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
16
+ }
17
+ //# sourceMappingURL=prism-icon-button.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prism-icon-button.component.d.ts","sourceRoot":"","sources":["../../../src/app/shared/prism-icon-button.component.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AACH,qBAaa,wBAAwB;IACjC,QAAQ,CAAC,IAAI,0DAAmC;IAChD,yDAAyD;IACzD,QAAQ,CAAC,OAAO,sDAA+B;yCAHtC,wBAAwB;2CAAxB,wBAAwB;CAIpC"}
@@ -0,0 +1,37 @@
1
+ import { ChangeDetectionStrategy, Component, input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ const _c0 = ["*"];
4
+ /**
5
+ * The ghost icon button of header, component head, toolbars and the tool rail.
6
+ *
7
+ * md 32 px (header), sm 28 px (component head), xs 26 px (toolbars, rail).
8
+ * `pressed` makes it a toggle (`aria-pressed`) with the active tint. Colours run
9
+ * through `--prism-icon-button-*`, so a surface such as the tool rail can bend
10
+ * them to its own tokens.
11
+ */
12
+ export class PrismIconButtonComponent {
13
+ size = input('md', /* @ts-ignore */
14
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
15
+ /** `null` for a plain button, a boolean for a toggle. */
16
+ pressed = input(null, /* @ts-ignore */
17
+ ...(ngDevMode ? [{ debugName: "pressed" }] : /* istanbul ignore next */ []));
18
+ static ɵfac = function PrismIconButtonComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismIconButtonComponent)(); };
19
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismIconButtonComponent, selectors: [["button", "prismIconButton", ""]], hostAttrs: ["type", "button"], hostVars: 5, hostBindings: function PrismIconButtonComponent_HostBindings(rf, ctx) { if (rf & 2) {
20
+ i0.ɵɵattribute("aria-pressed", ctx.pressed());
21
+ i0.ɵɵclassMap("prism-icon-button prism-icon-button--" + ctx.size());
22
+ i0.ɵɵclassProp("prism-icon-button--pressed", ctx.pressed() === true);
23
+ } }, inputs: { size: [1, "size"], pressed: [1, "pressed"] }, ngContentSelectors: _c0, decls: 1, vars: 0, template: function PrismIconButtonComponent_Template(rf, ctx) { if (rf & 1) {
24
+ i0.ɵɵprojectionDef();
25
+ i0.ɵɵprojection(0);
26
+ } }, styles: ["[_nghost-%COMP%] {\n display: inline-grid;\n flex: none;\n place-items: center;\n width: 32px;\n height: 32px;\n padding: 0;\n color: var(--%NS%prism-icon-button-fg, var(--%NS%prism-text-muted));\n cursor: pointer;\n background: transparent;\n border: 0;\n border-radius: 6px;\n transition:\n color var(--%NS%dur-fast) var(--%NS%ease-default),\n background var(--%NS%dur-fast) var(--%NS%ease-default);\n}\n\n.prism-icon-button--sm[_nghost-%COMP%] {\n width: 28px;\n height: 28px;\n border-radius: 5px;\n}\n\n.prism-icon-button--xs[_nghost-%COMP%] {\n width: 26px;\n height: 26px;\n border-radius: 4px;\n}\n\n[_nghost-%COMP%]:hover:not(:disabled) {\n color: var(--%NS%prism-icon-button-fg-hover, var(--%NS%prism-text));\n background: var(--%NS%prism-icon-button-bg-hover, var(--%NS%prism-input-bg));\n}\n\n.prism-icon-button--pressed[_nghost-%COMP%] {\n color: var(--%NS%prism-icon-button-active-fg, var(--%NS%prism-primary));\n background: var(--%NS%prism-icon-button-active-bg, var(--%NS%prism-primary-bg));\n}\n\n\n[_nghost-%COMP%]:disabled {\n color: var(--%NS%prism-border-strong);\n cursor: default;\n}\n\n[_nghost-%COMP%]:focus-visible {\n outline: 2px solid var(--%NS%prism-icon-button-focus, var(--%NS%prism-primary));\n outline-offset: 1px;\n}"] });
27
+ }
28
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismIconButtonComponent, [{
29
+ type: Component,
30
+ args: [{ selector: 'button[prismIconButton]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: {
31
+ type: 'button',
32
+ '[class]': "'prism-icon-button prism-icon-button--' + size()",
33
+ '[class.prism-icon-button--pressed]': 'pressed() === true',
34
+ '[attr.aria-pressed]': 'pressed()'
35
+ }, template: "<ng-content />\n", styles: [":host {\n display: inline-grid;\n flex: none;\n place-items: center;\n width: 32px;\n height: 32px;\n padding: 0;\n color: var(--prism-icon-button-fg, var(--prism-text-muted));\n cursor: pointer;\n background: transparent;\n border: 0;\n border-radius: 6px;\n transition:\n color var(--dur-fast) var(--ease-default),\n background var(--dur-fast) var(--ease-default);\n}\n\n:host(.prism-icon-button--sm) {\n width: 28px;\n height: 28px;\n border-radius: 5px;\n}\n\n:host(.prism-icon-button--xs) {\n width: 26px;\n height: 26px;\n border-radius: 4px;\n}\n\n:host(:hover:not(:disabled)) {\n color: var(--prism-icon-button-fg-hover, var(--prism-text));\n background: var(--prism-icon-button-bg-hover, var(--prism-input-bg));\n}\n\n:host(.prism-icon-button--pressed) {\n color: var(--prism-icon-button-active-fg, var(--prism-primary));\n background: var(--prism-icon-button-active-bg, var(--prism-primary-bg));\n}\n\n/* Disabled stays legible as a contour colour rather than fading text out. */\n:host(:disabled) {\n color: var(--prism-border-strong);\n cursor: default;\n}\n\n:host(:focus-visible) {\n outline: 2px solid var(--prism-icon-button-focus, var(--prism-primary));\n outline-offset: 1px;\n}\n"] }]
36
+ }], null, { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], pressed: [{ type: i0.Input, args: [{ isSignal: true, alias: "pressed", required: false }] }] }); })();
37
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismIconButtonComponent, { className: "PrismIconButtonComponent", filePath: "app/shared/prism-icon-button.component.ts", lineNumber: 24 }); })();