@ng-prism/core 22.2.0 → 22.3.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 (292) hide show
  1. package/README.md +22 -24
  2. package/builders.json +11 -11
  3. package/dist/app/canvas/canvas-bg.styles.d.ts +1 -1
  4. package/dist/app/canvas/canvas-bg.styles.d.ts.map +1 -1
  5. package/dist/app/canvas/canvas-bg.styles.js +17 -0
  6. package/dist/app/canvas/prism-canvas-bg-pill.component.d.ts.map +1 -1
  7. package/dist/app/canvas/prism-canvas-bg-pill.component.js +3 -18
  8. package/dist/app/canvas/prism-canvas-rulers.component.d.ts +1 -0
  9. package/dist/app/canvas/prism-canvas-rulers.component.d.ts.map +1 -1
  10. package/dist/app/canvas/prism-canvas-rulers.component.js +9 -14
  11. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts +23 -6
  12. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts.map +1 -1
  13. package/dist/app/canvas/prism-canvas-toolbar.component.js +110 -140
  14. package/dist/app/canvas/prism-template-popover.component.d.ts.map +1 -1
  15. package/dist/app/canvas/prism-template-popover.component.js +8 -49
  16. package/dist/app/canvas/viewport-snap.d.ts +12 -0
  17. package/dist/app/canvas/viewport-snap.d.ts.map +1 -0
  18. package/dist/app/canvas/viewport-snap.js +23 -0
  19. package/dist/app/component-head/head-metrics.d.ts.map +1 -1
  20. package/dist/app/component-head/head-metrics.js +2 -2
  21. package/dist/app/component-head/prism-component-head.component.d.ts +1 -1
  22. package/dist/app/component-head/prism-component-head.component.d.ts.map +1 -1
  23. package/dist/app/component-head/prism-component-head.component.js +17 -50
  24. package/dist/app/component-head/prism-head-gauge.component.d.ts.map +1 -1
  25. package/dist/app/component-head/prism-head-gauge.component.js +4 -36
  26. package/dist/app/component-head/prism-head-info.component.d.ts.map +1 -1
  27. package/dist/app/component-head/prism-head-info.component.js +3 -36
  28. package/dist/app/component-head/prism-stat.component.d.ts.map +1 -1
  29. package/dist/app/component-head/prism-stat.component.js +3 -14
  30. package/dist/app/controls/boolean-control.component.d.ts.map +1 -1
  31. package/dist/app/controls/boolean-control.component.js +4 -12
  32. package/dist/app/controls/json-control.component.d.ts.map +1 -1
  33. package/dist/app/controls/json-control.component.js +4 -24
  34. package/dist/app/controls/number-control.component.d.ts.map +1 -1
  35. package/dist/app/controls/number-control.component.js +4 -11
  36. package/dist/app/controls/string-control.component.d.ts.map +1 -1
  37. package/dist/app/controls/string-control.component.js +4 -11
  38. package/dist/app/controls/union-control.component.d.ts.map +1 -1
  39. package/dist/app/controls/union-control.component.js +4 -16
  40. package/dist/app/directives/prism-resizer.directive.d.ts +24 -1
  41. package/dist/app/directives/prism-resizer.directive.d.ts.map +1 -1
  42. package/dist/app/directives/prism-resizer.directive.js +44 -7
  43. package/dist/app/directives/resize-value.d.ts +22 -0
  44. package/dist/app/directives/resize-value.d.ts.map +1 -0
  45. package/dist/app/directives/resize-value.js +23 -0
  46. package/dist/app/discovery-manifest.d.ts.map +1 -1
  47. package/dist/app/discovery-manifest.js +5 -7
  48. package/dist/app/header/prism-header-widget-host.component.d.ts.map +1 -1
  49. package/dist/app/header/prism-header-widget-host.component.js +4 -8
  50. package/dist/app/header/prism-header.component.d.ts.map +1 -1
  51. package/dist/app/header/prism-header.component.js +8 -77
  52. package/dist/app/hmr.d.ts.map +1 -1
  53. package/dist/app/icons/icon-registry.d.ts.map +1 -1
  54. package/dist/app/icons/icon-registry.js +2 -1
  55. package/dist/app/icons/prism-icon.component.d.ts.map +1 -1
  56. package/dist/app/icons/prism-icon.component.js +5 -5
  57. package/dist/app/index.d.ts +3 -3
  58. package/dist/app/index.d.ts.map +1 -1
  59. package/dist/app/index.js +3 -3
  60. package/dist/app/layout-menu/prism-layout-menu.component.d.ts.map +1 -1
  61. package/dist/app/layout-menu/prism-layout-menu.component.js +3 -77
  62. package/dist/app/overview/overview-panel.js +1 -1
  63. package/dist/app/overview/overview-visibility.d.ts.map +1 -1
  64. package/dist/app/overview/prism-overview-cell.component.d.ts.map +1 -1
  65. package/dist/app/overview/prism-overview-cell.component.js +10 -17
  66. package/dist/app/overview/prism-overview.component.d.ts.map +1 -1
  67. package/dist/app/overview/prism-overview.component.js +4 -12
  68. package/dist/app/page-renderer/prism-page-renderer.component.d.ts.map +1 -1
  69. package/dist/app/page-renderer/prism-page-renderer.component.js +4 -17
  70. package/dist/app/panels/a11y/a11y-audit.service.d.ts.map +1 -1
  71. package/dist/app/panels/a11y/a11y-audit.service.js +14 -2
  72. package/dist/app/panels/a11y/a11y-core.plugin.d.ts.map +1 -1
  73. package/dist/app/panels/a11y/a11y-core.plugin.js +1 -1
  74. package/dist/app/panels/a11y/a11y-dom-utils.d.ts.map +1 -1
  75. package/dist/app/panels/a11y/a11y-dom-utils.js +9 -6
  76. package/dist/app/panels/a11y/a11y-header-badge.component.d.ts.map +1 -1
  77. package/dist/app/panels/a11y/a11y-header-badge.component.js +6 -22
  78. package/dist/app/panels/a11y/a11y-keyboard-overlay.component.d.ts.map +1 -1
  79. package/dist/app/panels/a11y/a11y-keyboard-overlay.component.js +6 -25
  80. package/dist/app/panels/a11y/a11y-keyboard.component.d.ts.map +1 -1
  81. package/dist/app/panels/a11y/a11y-keyboard.component.js +5 -36
  82. package/dist/app/panels/a11y/a11y-keyboard.service.d.ts.map +1 -1
  83. package/dist/app/panels/a11y/a11y-keyboard.service.js +2 -2
  84. package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts.map +1 -1
  85. package/dist/app/panels/a11y/a11y-overlay-host.component.js +5 -32
  86. package/dist/app/panels/a11y/a11y-panel-state.service.d.ts.map +1 -1
  87. package/dist/app/panels/a11y/a11y-panel.component.d.ts +1 -1
  88. package/dist/app/panels/a11y/a11y-panel.component.d.ts.map +1 -1
  89. package/dist/app/panels/a11y/a11y-panel.component.js +7 -69
  90. package/dist/app/panels/a11y/a11y-perspective.service.d.ts.map +1 -1
  91. package/dist/app/panels/a11y/a11y-score.component.d.ts.map +1 -1
  92. package/dist/app/panels/a11y/a11y-score.component.js +4 -31
  93. package/dist/app/panels/a11y/a11y-sr-overlay.component.d.ts.map +1 -1
  94. package/dist/app/panels/a11y/a11y-sr-overlay.component.js +8 -28
  95. package/dist/app/panels/a11y/a11y-sr.component.d.ts.map +1 -1
  96. package/dist/app/panels/a11y/a11y-sr.component.js +5 -28
  97. package/dist/app/panels/a11y/a11y-sr.service.d.ts.map +1 -1
  98. package/dist/app/panels/a11y/a11y-sr.service.js +4 -7
  99. package/dist/app/panels/a11y/a11y-summary.d.ts.map +1 -1
  100. package/dist/app/panels/a11y/a11y-summary.js +2 -5
  101. package/dist/app/panels/a11y/a11y-thresholds.d.ts.map +1 -1
  102. package/dist/app/panels/a11y/a11y-thresholds.js +1 -1
  103. package/dist/app/panels/a11y/a11y-tree.component.d.ts.map +1 -1
  104. package/dist/app/panels/a11y/a11y-tree.component.js +9 -46
  105. package/dist/app/panels/a11y/a11y-tree.service.d.ts.map +1 -1
  106. package/dist/app/panels/a11y/a11y-tree.service.js +3 -5
  107. package/dist/app/panels/a11y/a11y-violations.component.d.ts.map +1 -1
  108. package/dist/app/panels/a11y/a11y-violations.component.js +7 -58
  109. package/dist/app/panels/a11y/a11y.types.d.ts.map +1 -1
  110. package/dist/app/panels/builtin-header-widgets.js +2 -2
  111. package/dist/app/panels/builtin-navigation-decorations.d.ts.map +1 -1
  112. package/dist/app/panels/builtin-navigation-decorations.js +2 -2
  113. package/dist/app/panels/builtin-panels.d.ts.map +1 -1
  114. package/dist/app/panels/builtin-panels.js +2 -7
  115. package/dist/app/panels/controls/controls-plugin.js +3 -3
  116. package/dist/app/panels/controls/non-editable-input-types.d.ts.map +1 -1
  117. package/dist/app/panels/controls/non-editable-input-types.js +1 -5
  118. package/dist/app/panels/controls/prism-controls-panel.component.d.ts.map +1 -1
  119. package/dist/app/panels/controls/prism-controls-panel.component.js +5 -95
  120. package/dist/app/panels/events/events-plugin.js +3 -3
  121. package/dist/app/panels/events/prism-events-panel.component.d.ts.map +1 -1
  122. package/dist/app/panels/events/prism-events-panel.component.js +5 -23
  123. package/dist/app/panels/events/prism-json-node.component.d.ts.map +1 -1
  124. package/dist/app/panels/events/prism-json-node.component.js +4 -86
  125. package/dist/app/panels/events/prism-json-node.utils.d.ts.map +1 -1
  126. package/dist/app/panels/panel-host/panel-badge.d.ts.map +1 -1
  127. package/dist/app/panels/panel-host/panel-badge.js +2 -4
  128. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts +1 -1
  129. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts.map +1 -1
  130. package/dist/app/panels/panel-host/prism-panel-host.component.js +12 -67
  131. package/dist/app/provide-prism.d.ts +1 -1
  132. package/dist/app/provide-prism.d.ts.map +1 -1
  133. package/dist/app/provide-prism.js +7 -11
  134. package/dist/app/renderer/known-inputs.d.ts.map +1 -1
  135. package/dist/app/renderer/overlay-resolver.d.ts.map +1 -1
  136. package/dist/app/renderer/overlay-resolver.js +1 -1
  137. package/dist/app/renderer/prism-renderer.component.d.ts +27 -2
  138. package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
  139. package/dist/app/renderer/prism-renderer.component.js +94 -76
  140. package/dist/app/renderer/projectable-content.d.ts.map +1 -1
  141. package/dist/app/renderer/projectable-content.js +1 -3
  142. package/dist/app/renderer/snippet-generator.d.ts +1 -1
  143. package/dist/app/renderer/snippet-generator.d.ts.map +1 -1
  144. package/dist/app/renderer/snippet-generator.js +7 -22
  145. package/dist/app/services/navigation-item.types.d.ts +1 -1
  146. package/dist/app/services/navigation-item.types.d.ts.map +1 -1
  147. package/dist/app/services/prism-canvas.service.d.ts +22 -0
  148. package/dist/app/services/prism-canvas.service.d.ts.map +1 -1
  149. package/dist/app/services/prism-canvas.service.js +49 -2
  150. package/dist/app/services/prism-capture.service.d.ts.map +1 -1
  151. package/dist/app/services/prism-capture.service.js +2 -6
  152. package/dist/app/services/prism-event-log.service.d.ts.map +1 -1
  153. package/dist/app/services/prism-event-log.service.js +1 -4
  154. package/dist/app/services/prism-layout.service.d.ts.map +1 -1
  155. package/dist/app/services/prism-layout.service.js +5 -4
  156. package/dist/app/services/prism-manifest.service.d.ts +1 -1
  157. package/dist/app/services/prism-manifest.service.d.ts.map +1 -1
  158. package/dist/app/services/prism-manifest.service.js +1 -1
  159. package/dist/app/services/prism-navigation.service.d.ts +1 -1
  160. package/dist/app/services/prism-navigation.service.d.ts.map +1 -1
  161. package/dist/app/services/prism-navigation.service.js +5 -13
  162. package/dist/app/services/prism-panel.service.d.ts.map +1 -1
  163. package/dist/app/services/prism-panel.service.js +2 -5
  164. package/dist/app/services/prism-persistence.service.d.ts.map +1 -1
  165. package/dist/app/services/prism-persistence.service.js +8 -10
  166. package/dist/app/services/prism-plugin.service.d.ts.map +1 -1
  167. package/dist/app/services/prism-renderer.service.d.ts.map +1 -1
  168. package/dist/app/services/prism-renderer.service.js +5 -9
  169. package/dist/app/services/prism-search.service.d.ts.map +1 -1
  170. package/dist/app/services/prism-search.service.js +1 -2
  171. package/dist/app/services/prism-theme.service.d.ts.map +1 -1
  172. package/dist/app/services/prism-theme.service.js +6 -4
  173. package/dist/app/services/prism-url-state.service.d.ts.map +1 -1
  174. package/dist/app/services/prism-url-state.service.js +3 -9
  175. package/dist/app/services/prism-variant-bg.service.d.ts.map +1 -1
  176. package/dist/app/services/prism-variant-bg.service.js +3 -5
  177. package/dist/app/shared/prism-metric-badge.component.d.ts.map +1 -1
  178. package/dist/app/shared/prism-metric-badge.component.js +4 -17
  179. package/dist/app/shell/prism-shell.component.d.ts.map +1 -1
  180. package/dist/app/shell/prism-shell.component.js +20 -122
  181. package/dist/app/sidebar/navigation-decorations.d.ts.map +1 -1
  182. package/dist/app/sidebar/navigation-decorations.js +1 -1
  183. package/dist/app/sidebar/prism-sidebar.component.d.ts +1 -1
  184. package/dist/app/sidebar/prism-sidebar.component.d.ts.map +1 -1
  185. package/dist/app/sidebar/prism-sidebar.component.js +19 -154
  186. package/dist/app/theme/prism-default-theme.d.ts.map +1 -1
  187. package/dist/app/theme/prism-default-theme.js +5 -5
  188. package/dist/app/tokens/prism-tokens.d.ts.map +1 -1
  189. package/dist/app/tokens/prism-tokens.js +1 -1
  190. package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts.map +1 -1
  191. package/dist/app/variant-ribbon/prism-variant-ribbon.component.js +4 -49
  192. package/dist/app/variant-ribbon/spectrum.d.ts.map +1 -1
  193. package/dist/app/view-tab-bar/next-view-id.d.ts.map +1 -1
  194. package/dist/app/view-tab-bar/next-view-id.js +1 -3
  195. package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts.map +1 -1
  196. package/dist/app/view-tab-bar/prism-view-panel-host.component.js +5 -17
  197. package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts.map +1 -1
  198. package/dist/app/view-tab-bar/prism-view-tab-bar.component.js +4 -27
  199. package/dist/builder/a11y/a11y-report-reader.d.ts +1 -1
  200. package/dist/builder/a11y/a11y-report-reader.d.ts.map +1 -1
  201. package/dist/builder/a11y/a11y-report-reader.js +7 -7
  202. package/dist/builder/build/index.d.ts.map +1 -1
  203. package/dist/builder/build/index.js +5 -9
  204. package/dist/builder/build/schema.d.ts.map +1 -1
  205. package/dist/builder/config-loader/config-loader.d.ts.map +1 -1
  206. package/dist/builder/config-loader/config-loader.js +4 -5
  207. package/dist/builder/manifest/host-parser.d.ts.map +1 -1
  208. package/dist/builder/manifest/host-parser.js +1 -1
  209. package/dist/builder/manifest/runtime-manifest.generator.d.ts +1 -1
  210. package/dist/builder/manifest/runtime-manifest.generator.d.ts.map +1 -1
  211. package/dist/builder/manifest/runtime-manifest.generator.js +9 -34
  212. package/dist/builder/plugin-runner/plugin-runner.d.ts.map +1 -1
  213. package/dist/builder/plugin-runner/plugin-runner.js +1 -3
  214. package/dist/builder/scanner/ast-utils.d.ts.map +1 -1
  215. package/dist/builder/scanner/ast-utils.js +2 -8
  216. package/dist/builder/scanner/component.scanner.d.ts.map +1 -1
  217. package/dist/builder/scanner/component.scanner.js +15 -22
  218. package/dist/builder/scanner/entry-point-discovery.d.ts.map +1 -1
  219. package/dist/builder/scanner/entry-point-discovery.js +3 -5
  220. package/dist/builder/scanner/entry-point.scanner.d.ts.map +1 -1
  221. package/dist/builder/scanner/entry-point.scanner.js +1 -3
  222. package/dist/builder/scanner/index.d.ts +1 -1
  223. package/dist/builder/scanner/index.d.ts.map +1 -1
  224. package/dist/builder/scanner/input.extractor.d.ts.map +1 -1
  225. package/dist/builder/scanner/input.extractor.js +11 -28
  226. package/dist/builder/scanner/manifest.generator.d.ts.map +1 -1
  227. package/dist/builder/scanner/manifest.generator.js +2 -4
  228. package/dist/builder/scanner/scanner.d.ts.map +1 -1
  229. package/dist/builder/scanner/scanner.js +4 -4
  230. package/dist/builder/serve/index.d.ts.map +1 -1
  231. package/dist/builder/serve/index.js +8 -10
  232. package/dist/builder/serve/schema.d.ts.map +1 -1
  233. package/dist/builder/shared/index.d.ts +1 -1
  234. package/dist/builder/shared/index.d.ts.map +1 -1
  235. package/dist/builder/shared/index.js +1 -1
  236. package/dist/builder/shared/prism-pipeline.d.ts.map +1 -1
  237. package/dist/builder/shared/prism-pipeline.js +18 -25
  238. package/dist/builder/shared/resolve-cache-dir.d.ts.map +1 -1
  239. package/dist/builder/shared/resolve-cache-dir.js +1 -1
  240. package/dist/builder/watcher/index.d.ts +1 -1
  241. package/dist/builder/watcher/index.d.ts.map +1 -1
  242. package/dist/builder/watcher/prism-watcher.d.ts.map +1 -1
  243. package/dist/builder/watcher/prism-watcher.js +12 -10
  244. package/dist/config/index.d.ts +2 -2
  245. package/dist/config/index.d.ts.map +1 -1
  246. package/dist/config/index.js +1 -1
  247. package/dist/decorator/index.d.ts +1 -1
  248. package/dist/decorator/index.d.ts.map +1 -1
  249. package/dist/decorator/showcase.decorator.d.ts.map +1 -1
  250. package/dist/decorator/showcase.types.d.ts.map +1 -1
  251. package/dist/plugin/index.d.ts +4 -4
  252. package/dist/plugin/index.d.ts.map +1 -1
  253. package/dist/plugin/index.js +2 -2
  254. package/dist/plugin/page-helpers.d.ts +1 -1
  255. package/dist/plugin/page-helpers.d.ts.map +1 -1
  256. package/dist/plugin/page-helpers.js +2 -2
  257. package/dist/plugin/page.types.d.ts.map +1 -1
  258. package/dist/plugin/plugin.types.d.ts +1 -1
  259. package/dist/plugin/plugin.types.d.ts.map +1 -1
  260. package/dist/schematics/migrations/v21-13-manifest-cache/index.d.ts.map +1 -1
  261. package/dist/schematics/migrations/v21-13-manifest-cache/index.js +4 -10
  262. package/dist/schematics/migrations/v22-0-cache-dir-rename/index.d.ts.map +1 -1
  263. package/dist/schematics/migrations/v22-0-cache-dir-rename/index.js +4 -8
  264. package/dist/schematics/ng-add/index.d.ts.map +1 -1
  265. package/dist/schematics/ng-add/index.js +122 -56
  266. package/dist/schematics/ng-add/schema.d.ts.map +1 -1
  267. package/dist/schematics/utils/config-ast.d.ts.map +1 -1
  268. package/dist/schematics/utils/config-ast.js +8 -15
  269. package/dist/schematics/utils/tsconfig-paths.d.ts.map +1 -1
  270. package/dist/schematics/utils/tsconfig-paths.js +1 -1
  271. package/dist/shared/canvas-bg.type.d.ts.map +1 -1
  272. package/dist/shared/canvas-bg.type.js +1 -8
  273. package/dist/shared/canvas-layout.type.d.ts.map +1 -1
  274. package/dist/shared/canvas-layout.type.js +1 -4
  275. package/dist/shared/variant-bg.d.ts.map +1 -1
  276. package/dist/shared/viewport.type.d.ts +47 -0
  277. package/dist/shared/viewport.type.d.ts.map +1 -0
  278. package/dist/shared/viewport.type.js +48 -0
  279. package/dist/transformer/cli.js +0 -0
  280. package/dist/transformer/index.d.ts +2 -2
  281. package/dist/transformer/index.d.ts.map +1 -1
  282. package/dist/transformer/index.js +2 -2
  283. package/dist/transformer/showcase-strip.transformer.d.ts.map +1 -1
  284. package/dist/transformer/showcase-strip.transformer.js +6 -15
  285. package/dist/transformer/strip-directory.d.ts.map +1 -1
  286. package/dist/transformer/strip-directory.js +2 -4
  287. package/package.json +4 -1
  288. package/schematics/collection.json +7 -7
  289. package/schematics/migrations.json +12 -12
  290. package/schematics/ng-add/schema.json +22 -22
  291. package/src/builder/build/schema.json +36 -36
  292. package/src/builder/serve/schema.json +37 -37
@@ -1,8 +1,8 @@
1
- import { Component, inject, computed, ChangeDetectionStrategy, } from '@angular/core';
2
- import { PrismNavigationService } from '../services/prism-navigation.service.js';
1
+ import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';
3
2
  import { A11yAuditService } from '../panels/a11y/a11y-audit.service.js';
4
- import { PrismHeadInfoComponent } from './prism-head-info.component.js';
3
+ import { PrismNavigationService } from '../services/prism-navigation.service.js';
5
4
  import { PrismHeadGaugeComponent } from './prism-head-gauge.component.js';
5
+ import { PrismHeadInfoComponent } from './prism-head-info.component.js';
6
6
  import * as i0 from "@angular/core";
7
7
  const _c0 = [[["", "headEnd", ""]]];
8
8
  const _c1 = ["[headEnd]"];
@@ -51,20 +51,20 @@ function PrismComponentHeadComponent_Conditional_0_Template(rf, ctx) { if (rf &
51
51
  const STATUS_BADGES = {
52
52
  stable: {
53
53
  label: 'Stable',
54
- tooltip: 'Migrated and production-ready',
54
+ tooltip: 'Migrated and production-ready'
55
55
  },
56
56
  beta: {
57
57
  label: 'Beta',
58
- tooltip: 'Beta — API may change',
58
+ tooltip: 'Beta — API may change'
59
59
  },
60
60
  wip: {
61
61
  label: 'Work in progress',
62
- tooltip: 'Migration in progress',
62
+ tooltip: 'Migration in progress'
63
63
  },
64
64
  deprecated: {
65
65
  label: 'Deprecated',
66
- tooltip: 'Deprecated / Legacy — do not use in new code',
67
- },
66
+ tooltip: 'Deprecated / Legacy — do not use in new code'
67
+ }
68
68
  };
69
69
  export class PrismComponentHeadComponent {
70
70
  navigationService = inject(PrismNavigationService);
@@ -128,9 +128,7 @@ export class PrismComponentHeadComponent {
128
128
  if (!vrt?.found || !vrt.summary)
129
129
  return null;
130
130
  const { value, variant } = vrt.summary;
131
- return variant === 'ok' || variant === 'warn' || variant === 'danger'
132
- ? { value, variant }
133
- : null;
131
+ return variant === 'ok' || variant === 'warn' || variant === 'danger' ? { value, variant } : null;
134
132
  }, /* @ts-ignore */
135
133
  ...(ngDevMode ? [{ debugName: "vrtStat" }] : /* istanbul ignore next */ []));
136
134
  /**
@@ -149,29 +147,27 @@ export class PrismComponentHeadComponent {
149
147
  id: 'coverage',
150
148
  label: 'Coverage',
151
149
  value: coverage === null ? '—' : `${coverage}%`,
152
- variant: coverage === null ? 'none' : coverage >= 90 ? 'ok' : 'warn',
150
+ variant: coverage === null ? 'none' : coverage >= 90 ? 'ok' : 'warn'
153
151
  },
154
152
  {
155
153
  id: 'a11y',
156
154
  label: 'A11y score',
157
155
  value: a11y === null ? '—' : String(a11y),
158
- variant: a11y === null ? 'none' : a11y >= 90 ? 'ok' : 'warn',
156
+ variant: a11y === null ? 'none' : a11y >= 90 ? 'ok' : 'warn'
159
157
  },
160
158
  {
161
159
  id: 'vrt',
162
160
  label: 'VRT diff',
163
161
  value: vrt === null ? '—' : vrt.value,
164
- variant: vrt === null ? 'none' : vrt.variant,
165
- },
162
+ variant: vrt === null ? 'none' : vrt.variant
163
+ }
166
164
  ];
167
165
  }, /* @ts-ignore */
168
166
  ...(ngDevMode ? [{ debugName: "metrics" }] : /* istanbul ignore next */ []));
169
167
  componentMeta = computed(() => {
170
168
  const c = this.comp();
171
169
  const meta = c?.meta.showcaseConfig.meta;
172
- return meta && typeof meta === 'object'
173
- ? meta
174
- : null;
170
+ return meta && typeof meta === 'object' ? meta : null;
175
171
  }, /* @ts-ignore */
176
172
  ...(ngDevMode ? [{ debugName: "componentMeta" }] : /* istanbul ignore next */ []));
177
173
  static ɵfac = function PrismComponentHeadComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismComponentHeadComponent)(); };
@@ -181,39 +177,10 @@ export class PrismComponentHeadComponent {
181
177
  } if (rf & 2) {
182
178
  let tmp_0_0;
183
179
  i0.ɵɵconditional((tmp_0_0 = ctx.comp()) ? 0 : -1, tmp_0_0);
184
- } }, dependencies: [PrismHeadInfoComponent, PrismHeadGaugeComponent], styles: ["[_nghost-%COMP%] { display: block; flex-shrink: 0; }\n\n .comp-head[_ngcontent-%COMP%] {\n height: var(--%NS%band-head);\n display: flex;\n align-items: center;\n gap: var(--%NS%sp-3);\n padding: 0 var(--%NS%sp-5);\n background: var(--%NS%prism-bg);\n border-bottom: 1px solid var(--%NS%prism-border);\n }\n\n \n\n\n\n\n\n\n .comp-crumb[_ngcontent-%COMP%] {\n flex: 0 8 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--%NS%fs-xs);\n color: var(--%NS%prism-text-ghost);\n letter-spacing: 0.06em;\n text-transform: uppercase;\n white-space: nowrap;\n }\n .comp-crumb[_ngcontent-%COMP%]::after { content: ' /'; }\n\n .comp-title[_ngcontent-%COMP%] {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n margin: 0;\n font-size: var(--%NS%fs-xl);\n font-weight: 600;\n letter-spacing: -0.015em;\n color: var(--%NS%prism-text);\n white-space: nowrap;\n }\n\n .comp-spacer[_ngcontent-%COMP%] { flex: 1; }\n\n .comp-status[_ngcontent-%COMP%], \n prism-head-info[_ngcontent-%COMP%], \n prism-head-gauge[_ngcontent-%COMP%], \n .comp-head-end[_ngcontent-%COMP%] { flex: none; }\n\n \n\n\n .comp-head-end[_ngcontent-%COMP%] { display: inline-flex; align-items: center; }\n .comp-head-end[_ngcontent-%COMP%]:empty { display: none; }\n\n \n\n\n\n .comp-status[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: var(--%NS%sp-2);\n height: 18px;\n padding: 0 var(--%NS%sp-3) 0 var(--%NS%sp-2);\n border-radius: var(--%NS%radius-xs);\n border: 1px solid currentColor;\n font-size: var(--%NS%fs-xs);\n font-weight: 600;\n letter-spacing: 0.03em;\n white-space: nowrap;\n color: var(--%NS%prism-text-muted);\n }\n .comp-status-mark[_ngcontent-%COMP%] {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: currentColor;\n }\n .comp-status--stable[_ngcontent-%COMP%] {\n color: var(--%NS%prism-mark-nominal);\n background: color-mix(in srgb, var(--%NS%prism-mark-nominal) 10%, transparent);\n }\n .comp-status--beta[_ngcontent-%COMP%], \n .comp-status--wip[_ngcontent-%COMP%] {\n color: var(--%NS%prism-mark-attention);\n background: color-mix(in srgb, var(--%NS%prism-mark-attention) 10%, transparent);\n }\n .comp-status--wip[_ngcontent-%COMP%] .comp-status-mark[_ngcontent-%COMP%] {\n background: transparent;\n border: 1.5px solid currentColor;\n box-sizing: border-box;\n width: 7px;\n height: 7px;\n }\n .comp-status--deprecated[_ngcontent-%COMP%] {\n color: var(--%NS%prism-mark-critical);\n background: color-mix(in srgb, var(--%NS%prism-mark-critical) 12%, transparent);\n border-color: color-mix(in srgb, var(--%NS%prism-mark-critical) 55%, transparent);\n }"] });
180
+ } }, dependencies: [PrismHeadInfoComponent, PrismHeadGaugeComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n flex-shrink: 0;\n}\n\n.comp-head[_ngcontent-%COMP%] {\n display: flex;\n gap: var(--%NS%sp-3);\n align-items: center;\n height: var(--%NS%band-head);\n padding: 0 var(--%NS%sp-5);\n background: var(--%NS%prism-bg);\n border-bottom: 1px solid var(--%NS%prism-border);\n}\n\n\n\n\n\n\n\n\n.comp-crumb[_ngcontent-%COMP%] {\n flex: 0 8 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--%NS%fs-xs);\n color: var(--%NS%prism-text-ghost);\n text-transform: uppercase;\n letter-spacing: 0.06em;\n white-space: nowrap;\n}\n\n.comp-crumb[_ngcontent-%COMP%]::after {\n content: ' /';\n}\n\n.comp-title[_ngcontent-%COMP%] {\n flex: 0 1 auto;\n min-width: 0;\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--%NS%fs-xl);\n font-weight: 600;\n color: var(--%NS%prism-text);\n letter-spacing: -0.015em;\n white-space: nowrap;\n}\n\n.comp-spacer[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.comp-status[_ngcontent-%COMP%], \nprism-head-info[_ngcontent-%COMP%], \nprism-head-gauge[_ngcontent-%COMP%], \n.comp-head-end[_ngcontent-%COMP%] {\n flex: none;\n}\n\n\n\n\n.comp-head-end[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n}\n\n.comp-head-end[_ngcontent-%COMP%]:empty {\n display: none;\n}\n\n\n\n\n\n.comp-status[_ngcontent-%COMP%] {\n display: inline-flex;\n gap: var(--%NS%sp-2);\n align-items: center;\n height: 18px;\n padding: 0 var(--%NS%sp-3) 0 var(--%NS%sp-2);\n font-size: var(--%NS%fs-xs);\n font-weight: 600;\n color: var(--%NS%prism-text-muted);\n letter-spacing: 0.03em;\n white-space: nowrap;\n border: 1px solid currentcolor;\n border-radius: var(--%NS%radius-xs);\n}\n\n.comp-status-mark[_ngcontent-%COMP%] {\n width: 6px;\n height: 6px;\n background: currentcolor;\n border-radius: 50%;\n}\n\n.comp-status--stable[_ngcontent-%COMP%] {\n color: var(--%NS%prism-mark-nominal);\n background: color-mix(in srgb, var(--%NS%prism-mark-nominal) 10%, transparent);\n}\n\n.comp-status--beta[_ngcontent-%COMP%], \n.comp-status--wip[_ngcontent-%COMP%] {\n color: var(--%NS%prism-mark-attention);\n background: color-mix(in srgb, var(--%NS%prism-mark-attention) 10%, transparent);\n}\n\n.comp-status--wip[_ngcontent-%COMP%] .comp-status-mark[_ngcontent-%COMP%] {\n box-sizing: border-box;\n width: 7px;\n height: 7px;\n background: transparent;\n border: 1.5px solid currentcolor;\n}\n\n.comp-status--deprecated[_ngcontent-%COMP%] {\n color: var(--%NS%prism-mark-critical);\n background: color-mix(in srgb, var(--%NS%prism-mark-critical) 12%, transparent);\n border-color: color-mix(in srgb, var(--%NS%prism-mark-critical) 55%, transparent);\n}"] });
185
181
  }
186
182
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismComponentHeadComponent, [{
187
183
  type: Component,
188
- args: [{ selector: 'prism-component-head', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismHeadInfoComponent, PrismHeadGaugeComponent], template: `
189
- @if (comp(); as c) {
190
- <section class="comp-head">
191
- <span class="comp-crumb">{{ category() }}</span>
192
- <h1 class="comp-title">{{ c.meta.showcaseConfig.title }}</h1>
193
-
194
- <prism-head-info
195
- [selector]="c.meta.componentMeta.selector"
196
- [description]="c.meta.showcaseConfig.description"
197
- [tags]="c.meta.showcaseConfig.tags ?? []"
198
- [variantCount]="variantCount()"
199
- />
200
-
201
- @if (statusBadge(); as badge) {
202
- <span
203
- class="comp-status comp-status--{{ status() }}"
204
- [attr.title]="badge.tooltip"
205
- >
206
- <span class="comp-status-mark" aria-hidden="true"></span>
207
- {{ badge.label }}
208
- </span>
209
- }
210
-
211
- <span class="comp-spacer"></span>
212
-
213
- <prism-head-gauge [metrics]="metrics()" />
214
- <span class="comp-head-end"><ng-content select="[headEnd]" /></span>
215
- </section>
216
- }
217
- `, styles: ["\n :host { display: block; flex-shrink: 0; }\n\n .comp-head {\n height: var(--band-head);\n display: flex;\n align-items: center;\n gap: var(--sp-3);\n padding: 0 var(--sp-5);\n background: var(--prism-bg);\n border-bottom: 1px solid var(--prism-border);\n }\n\n /* The text yields, the controls never do. A long category and a long title\n would otherwise push the gauge out of a fixed-height row whose ancestors\n clip \u2014 making the measurement unreachable in exactly the case where you\n most want to read it, and costing the gauge the fixed position it was\n designed around. The trade is deliberate: a title truncated with an\n ellipsis, so the chip stays put at the right edge. The crumb gives way\n first, being the least important text in the row. */\n .comp-crumb {\n flex: 0 8 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--fs-xs);\n color: var(--prism-text-ghost);\n letter-spacing: 0.06em;\n text-transform: uppercase;\n white-space: nowrap;\n }\n .comp-crumb::after { content: ' /'; }\n\n .comp-title {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n margin: 0;\n font-size: var(--fs-xl);\n font-weight: 600;\n letter-spacing: -0.015em;\n color: var(--prism-text);\n white-space: nowrap;\n }\n\n .comp-spacer { flex: 1; }\n\n .comp-status,\n prism-head-info,\n prism-head-gauge,\n .comp-head-end { flex: none; }\n\n /* Wraps the slot rather than styling the projected element, which this\n stylesheet cannot reach. :empty keeps the row's trailing gap from\n appearing when nothing is projected \u2014 comment anchors do not count. */\n .comp-head-end { display: inline-flex; align-items: center; }\n .comp-head-end:empty { display: none; }\n\n /* Always an outline, never a filled surface \u2014 deprecated separates itself\n by hue, not by weight. A filled alarm-coloured chip in a permanently\n visible band is exactly the \"red as background texture\" problem this\n redesign exists to fix. */\n .comp-status {\n display: inline-flex;\n align-items: center;\n gap: var(--sp-2);\n height: 18px;\n padding: 0 var(--sp-3) 0 var(--sp-2);\n border-radius: var(--radius-xs);\n border: 1px solid currentColor;\n font-size: var(--fs-xs);\n font-weight: 600;\n letter-spacing: 0.03em;\n white-space: nowrap;\n color: var(--prism-text-muted);\n }\n .comp-status-mark {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: currentColor;\n }\n .comp-status--stable {\n color: var(--prism-mark-nominal);\n background: color-mix(in srgb, var(--prism-mark-nominal) 10%, transparent);\n }\n .comp-status--beta,\n .comp-status--wip {\n color: var(--prism-mark-attention);\n background: color-mix(in srgb, var(--prism-mark-attention) 10%, transparent);\n }\n .comp-status--wip .comp-status-mark {\n background: transparent;\n border: 1.5px solid currentColor;\n box-sizing: border-box;\n width: 7px;\n height: 7px;\n }\n .comp-status--deprecated {\n color: var(--prism-mark-critical);\n background: color-mix(in srgb, var(--prism-mark-critical) 12%, transparent);\n border-color: color-mix(in srgb, var(--prism-mark-critical) 55%, transparent);\n }\n "] }]
184
+ args: [{ selector: 'prism-component-head', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismHeadInfoComponent, PrismHeadGaugeComponent], template: "@if (comp(); as c) {\n <section class=\"comp-head\">\n <span class=\"comp-crumb\">{{ category() }}</span>\n <h1 class=\"comp-title\">{{ c.meta.showcaseConfig.title }}</h1>\n\n <prism-head-info\n [selector]=\"c.meta.componentMeta.selector\"\n [description]=\"c.meta.showcaseConfig.description\"\n [tags]=\"c.meta.showcaseConfig.tags ?? []\"\n [variantCount]=\"variantCount()\" />\n\n @if (statusBadge(); as badge) {\n <span\n class=\"comp-status comp-status--{{ status() }}\"\n [attr.title]=\"badge.tooltip\">\n <span\n class=\"comp-status-mark\"\n aria-hidden=\"true\"></span>\n {{ badge.label }}\n </span>\n }\n\n <span class=\"comp-spacer\"></span>\n\n <prism-head-gauge [metrics]=\"metrics()\" />\n <span class=\"comp-head-end\"><ng-content select=\"[headEnd]\" /></span>\n </section>\n}\n", styles: [":host {\n display: block;\n flex-shrink: 0;\n}\n\n.comp-head {\n display: flex;\n gap: var(--sp-3);\n align-items: center;\n height: var(--band-head);\n padding: 0 var(--sp-5);\n background: var(--prism-bg);\n border-bottom: 1px solid var(--prism-border);\n}\n\n/* The text yields, the controls never do. A long category and a long title\n would otherwise push the gauge out of a fixed-height row whose ancestors\n clip \u2014 making the measurement unreachable in exactly the case where you\n most want to read it, and costing the gauge the fixed position it was\n designed around. The trade is deliberate: a title truncated with an\n ellipsis, so the chip stays put at the right edge. The crumb gives way\n first, being the least important text in the row. */\n.comp-crumb {\n flex: 0 8 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--fs-xs);\n color: var(--prism-text-ghost);\n text-transform: uppercase;\n letter-spacing: 0.06em;\n white-space: nowrap;\n}\n\n.comp-crumb::after {\n content: ' /';\n}\n\n.comp-title {\n flex: 0 1 auto;\n min-width: 0;\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--fs-xl);\n font-weight: 600;\n color: var(--prism-text);\n letter-spacing: -0.015em;\n white-space: nowrap;\n}\n\n.comp-spacer {\n flex: 1;\n}\n\n.comp-status,\nprism-head-info,\nprism-head-gauge,\n.comp-head-end {\n flex: none;\n}\n\n/* Wraps the slot rather than styling the projected element, which this\n stylesheet cannot reach. :empty keeps the row's trailing gap from\n appearing when nothing is projected \u2014 comment anchors do not count. */\n.comp-head-end {\n display: inline-flex;\n align-items: center;\n}\n\n.comp-head-end:empty {\n display: none;\n}\n\n/* Always an outline, never a filled surface \u2014 deprecated separates itself\n by hue, not by weight. A filled alarm-coloured chip in a permanently\n visible band is exactly the \"red as background texture\" problem this\n redesign exists to fix. */\n.comp-status {\n display: inline-flex;\n gap: var(--sp-2);\n align-items: center;\n height: 18px;\n padding: 0 var(--sp-3) 0 var(--sp-2);\n font-size: var(--fs-xs);\n font-weight: 600;\n color: var(--prism-text-muted);\n letter-spacing: 0.03em;\n white-space: nowrap;\n border: 1px solid currentcolor;\n border-radius: var(--radius-xs);\n}\n\n.comp-status-mark {\n width: 6px;\n height: 6px;\n background: currentcolor;\n border-radius: 50%;\n}\n\n.comp-status--stable {\n color: var(--prism-mark-nominal);\n background: color-mix(in srgb, var(--prism-mark-nominal) 10%, transparent);\n}\n\n.comp-status--beta,\n.comp-status--wip {\n color: var(--prism-mark-attention);\n background: color-mix(in srgb, var(--prism-mark-attention) 10%, transparent);\n}\n\n.comp-status--wip .comp-status-mark {\n box-sizing: border-box;\n width: 7px;\n height: 7px;\n background: transparent;\n border: 1.5px solid currentcolor;\n}\n\n.comp-status--deprecated {\n color: var(--prism-mark-critical);\n background: color-mix(in srgb, var(--prism-mark-critical) 12%, transparent);\n border-color: color-mix(in srgb, var(--prism-mark-critical) 55%, transparent);\n}\n"] }]
218
185
  }], null, null); })();
219
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismComponentHeadComponent, { className: "PrismComponentHeadComponent", filePath: "app/component-head/prism-component-head.component.ts", lineNumber: 179 }); })();
186
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismComponentHeadComponent, { className: "PrismComponentHeadComponent", filePath: "app/component-head/prism-component-head.component.ts", lineNumber: 41 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"prism-head-gauge.component.d.ts","sourceRoot":"","sources":["../../../src/app/component-head/prism-head-gauge.component.ts"],"names":[],"mappings":"AAMA,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;;AAGtE;;;;;;;;;;;;GAYG;AACH,qBAmHa,uBAAuB;IAClC,QAAQ,CAAC,OAAO,6DAA2C;IAC3D,SAAS,CAAC,QAAQ,CAAC,OAAO,2EAAoD;IAC9E,SAAS,CAAC,QAAQ,CAAC,SAAS,yCAOzB;yCAVQ,uBAAuB;2CAAvB,uBAAuB;CAWnC"}
1
+ {"version":3,"file":"prism-head-gauge.component.d.ts","sourceRoot":"","sources":["../../../src/app/component-head/prism-head-gauge.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAoB,MAAM,mBAAmB,CAAC;;AAGtE;;;;;;;;;;;;GAYG;AACH,qBAQa,uBAAuB;IAChC,QAAQ,CAAC,OAAO,6DAA2C;IAC3D,SAAS,CAAC,QAAQ,CAAC,OAAO,2EAAoD;IAC9E,SAAS,CAAC,QAAQ,CAAC,SAAS,yCAMzB;yCATM,uBAAuB;2CAAvB,uBAAuB;CAUnC"}
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, Component, computed, input, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
2
2
  import { summarizeMetrics } from './head-metrics.js';
3
3
  import { PrismStatComponent } from './prism-stat.component.js';
4
4
  import * as i0 from "@angular/core";
@@ -82,42 +82,10 @@ export class PrismHeadGaugeComponent {
82
82
  i0.ɵɵconditional((tmp_5_0 = ctx.summary().worst) ? 2 : 3, tmp_5_0);
83
83
  i0.ɵɵadvance(3);
84
84
  i0.ɵɵrepeater(ctx.metrics());
85
- } }, dependencies: [PrismStatComponent], styles: ["[_nghost-%COMP%] { display: inline-flex; }\n\n .gauge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: var(--%NS%sp-2);\n height: 20px;\n padding: 0 var(--%NS%sp-3);\n border: 1px solid var(--%NS%prism-border);\n border-radius: var(--%NS%radius-xs);\n background: transparent;\n color: var(--%NS%prism-text-muted);\n font-family: var(--%NS%font-mono);\n font-size: var(--%NS%fs-xs);\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n cursor: pointer;\n anchor-name: --prism-head-gauge;\n }\n .gauge[_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--%NS%prism-primary);\n outline-offset: 1px;\n }\n .gauge__dot[_ngcontent-%COMP%] {\n width: 5px;\n height: 5px;\n border-radius: 50%;\n background: currentColor;\n opacity: 0.5;\n }\n .gauge__more[_ngcontent-%COMP%] { opacity: 0.6; }\n\n \n\n\n .gauge--ok[_ngcontent-%COMP%] {\n color: var(--%NS%prism-mark-nominal);\n border-color: color-mix(in srgb, var(--%NS%prism-mark-nominal) 40%, transparent);\n }\n .gauge--warn[_ngcontent-%COMP%] {\n color: var(--%NS%prism-mark-attention);\n border-color: color-mix(in srgb, var(--%NS%prism-mark-attention) 40%, transparent);\n }\n .gauge--danger[_ngcontent-%COMP%] {\n color: var(--%NS%prism-mark-critical);\n border-color: color-mix(in srgb, var(--%NS%prism-mark-critical) 45%, transparent);\n }\n .gauge--ok[_ngcontent-%COMP%] .gauge__dot[_ngcontent-%COMP%], \n .gauge--warn[_ngcontent-%COMP%] .gauge__dot[_ngcontent-%COMP%], \n .gauge--danger[_ngcontent-%COMP%] .gauge__dot[_ngcontent-%COMP%] { opacity: 1; }\n\n .gauge-card[_ngcontent-%COMP%] {\n margin: 0;\n padding: var(--%NS%sp-2);\n min-width: 200px;\n border: 1px solid var(--%NS%prism-border-strong);\n border-radius: var(--%NS%radius-md);\n background: var(--%NS%prism-bg-elevated);\n box-shadow: 0 8px 28px -10px rgba(0, 0, 0, 0.45);\n gap: 1px;\n position-anchor: --prism-head-gauge;\n position-area: block-end span-inline-start;\n position-try-fallbacks: flip-block, flip-inline;\n inset: auto;\n }\n\n \n\n\n\n .gauge-card[_ngcontent-%COMP%]:popover-open {\n display: flex;\n flex-direction: column;\n }"] });
85
+ } }, dependencies: [PrismStatComponent], styles: ["[_nghost-%COMP%] {\n display: inline-flex;\n}\n\n.gauge[_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);\n anchor-name: --prism-head-gauge;\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 cursor: pointer;\n background: transparent;\n border: 1px solid var(--%NS%prism-border);\n border-radius: var(--%NS%radius-xs);\n}\n\n.gauge[_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--%NS%prism-primary);\n outline-offset: 1px;\n}\n\n.gauge__dot[_ngcontent-%COMP%] {\n width: 5px;\n height: 5px;\n background: currentcolor;\n border-radius: 50%;\n opacity: 0.5;\n}\n\n.gauge__more[_ngcontent-%COMP%] {\n opacity: 0.6;\n}\n\n\n\n\n.gauge--ok[_ngcontent-%COMP%] {\n color: var(--%NS%prism-mark-nominal);\n border-color: color-mix(in srgb, var(--%NS%prism-mark-nominal) 40%, transparent);\n}\n\n.gauge--warn[_ngcontent-%COMP%] {\n color: var(--%NS%prism-mark-attention);\n border-color: color-mix(in srgb, var(--%NS%prism-mark-attention) 40%, transparent);\n}\n\n.gauge--danger[_ngcontent-%COMP%] {\n color: var(--%NS%prism-mark-critical);\n border-color: color-mix(in srgb, var(--%NS%prism-mark-critical) 45%, transparent);\n}\n\n.gauge--ok[_ngcontent-%COMP%] .gauge__dot[_ngcontent-%COMP%], \n.gauge--warn[_ngcontent-%COMP%] .gauge__dot[_ngcontent-%COMP%], \n.gauge--danger[_ngcontent-%COMP%] .gauge__dot[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.gauge-card[_ngcontent-%COMP%] {\n inset: auto;\n gap: 1px;\n min-width: 200px;\n padding: var(--%NS%sp-2);\n margin: 0;\n position-area: block-end span-inline-start;\n position-anchor: --prism-head-gauge;\n position-try-fallbacks: flip-block, flip-inline;\n background: var(--%NS%prism-bg-elevated);\n border: 1px solid var(--%NS%prism-border-strong);\n border-radius: var(--%NS%radius-md);\n box-shadow: 0 8px 28px -10px rgb(0 0 0 / 45%);\n}\n\n\n\n\n\n.gauge-card[_ngcontent-%COMP%]:popover-open {\n display: flex;\n flex-direction: column;\n}"] });
86
86
  }
87
87
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismHeadGaugeComponent, [{
88
88
  type: Component,
89
- args: [{ selector: 'prism-head-gauge', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismStatComponent], template: `
90
- <button
91
- class="gauge"
92
- type="button"
93
- [class.gauge--ok]="summary().variant === 'ok'"
94
- [class.gauge--warn]="summary().variant === 'warn'"
95
- [class.gauge--danger]="summary().variant === 'danger'"
96
- popovertarget="prism-head-gauge"
97
- [attr.aria-label]="ariaLabel()"
98
- [attr.title]="ariaLabel()"
99
- >
100
- <span class="gauge__dot" aria-hidden="true"></span>
101
- @if (summary().worst; as worst) {
102
- <span class="gauge__text">{{ worst.label }} {{ worst.value }}</span>
103
- @if (summary().others > 0) {
104
- <span class="gauge__more">+{{ summary().others }}</span>
105
- } } @else {
106
- <span class="gauge__text">{{ summary().measured }}</span>
107
- }
108
- </button>
109
-
110
- <div
111
- popover
112
- id="prism-head-gauge"
113
- class="gauge-card"
114
- role="dialog"
115
- aria-label="Component metrics"
116
- >
117
- @for (m of metrics(); track m.id) {
118
- <prism-stat [label]="m.label" [value]="m.value" [variant]="m.variant" />
119
- }
120
- </div>
121
- `, styles: ["\n :host { display: inline-flex; }\n\n .gauge {\n display: inline-flex;\n align-items: center;\n gap: var(--sp-2);\n height: 20px;\n padding: 0 var(--sp-3);\n border: 1px solid var(--prism-border);\n border-radius: var(--radius-xs);\n background: transparent;\n color: var(--prism-text-muted);\n font-family: var(--font-mono);\n font-size: var(--fs-xs);\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n cursor: pointer;\n anchor-name: --prism-head-gauge;\n }\n .gauge:focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 1px;\n }\n .gauge__dot {\n width: 5px;\n height: 5px;\n border-radius: 50%;\n background: currentColor;\n opacity: 0.5;\n }\n .gauge__more { opacity: 0.6; }\n\n /* The quiet state is green now, not grey: the gauge says \"these values\n were measured and all of them are fine\", which is a result, not an\n absence. A metric with no data at all stays grey in the readout rows. */\n .gauge--ok {\n color: var(--prism-mark-nominal);\n border-color: color-mix(in srgb, var(--prism-mark-nominal) 40%, transparent);\n }\n .gauge--warn {\n color: var(--prism-mark-attention);\n border-color: color-mix(in srgb, var(--prism-mark-attention) 40%, transparent);\n }\n .gauge--danger {\n color: var(--prism-mark-critical);\n border-color: color-mix(in srgb, var(--prism-mark-critical) 45%, transparent);\n }\n .gauge--ok .gauge__dot,\n .gauge--warn .gauge__dot,\n .gauge--danger .gauge__dot { opacity: 1; }\n\n .gauge-card {\n margin: 0;\n padding: var(--sp-2);\n min-width: 200px;\n border: 1px solid var(--prism-border-strong);\n border-radius: var(--radius-md);\n background: var(--prism-bg-elevated);\n box-shadow: 0 8px 28px -10px rgba(0, 0, 0, 0.45);\n gap: 1px;\n position-anchor: --prism-head-gauge;\n position-area: block-end span-inline-start;\n position-try-fallbacks: flip-block, flip-inline;\n inset: auto;\n }\n\n /* display belongs on :popover-open and nowhere else \u2014 see the note in\n prism-template-popover.component.ts. An author display on the base\n rule outranks the UA's [popover]:not(:popover-open) { display: none }\n and pins the readout open. */\n .gauge-card:popover-open {\n display: flex;\n flex-direction: column;\n }\n "] }]
89
+ args: [{ selector: 'prism-head-gauge', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismStatComponent], template: "<button\n class=\"gauge\"\n type=\"button\"\n [class.gauge--ok]=\"summary().variant === 'ok'\"\n [class.gauge--warn]=\"summary().variant === 'warn'\"\n [class.gauge--danger]=\"summary().variant === 'danger'\"\n popovertarget=\"prism-head-gauge\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.title]=\"ariaLabel()\">\n <span\n class=\"gauge__dot\"\n aria-hidden=\"true\"></span>\n @if (summary().worst; as worst) {\n <span class=\"gauge__text\">{{ worst.label }} {{ worst.value }}</span>\n @if (summary().others > 0) {\n <span class=\"gauge__more\">+{{ summary().others }}</span>\n }\n } @else {\n <span class=\"gauge__text\">{{ summary().measured }}</span>\n }\n</button>\n\n<div\n popover\n id=\"prism-head-gauge\"\n class=\"gauge-card\"\n role=\"dialog\"\n aria-label=\"Component metrics\">\n @for (m of metrics(); track m.id) {\n <prism-stat\n [label]=\"m.label\"\n [value]=\"m.value\"\n [variant]=\"m.variant\" />\n }\n</div>\n", styles: [":host {\n display: inline-flex;\n}\n\n.gauge {\n display: inline-flex;\n gap: var(--sp-2);\n align-items: center;\n height: 20px;\n padding: 0 var(--sp-3);\n anchor-name: --prism-head-gauge;\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 cursor: pointer;\n background: transparent;\n border: 1px solid var(--prism-border);\n border-radius: var(--radius-xs);\n}\n\n.gauge:focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 1px;\n}\n\n.gauge__dot {\n width: 5px;\n height: 5px;\n background: currentcolor;\n border-radius: 50%;\n opacity: 0.5;\n}\n\n.gauge__more {\n opacity: 0.6;\n}\n\n/* The quiet state is green now, not grey: the gauge says \"these values\n were measured and all of them are fine\", which is a result, not an\n absence. A metric with no data at all stays grey in the readout rows. */\n.gauge--ok {\n color: var(--prism-mark-nominal);\n border-color: color-mix(in srgb, var(--prism-mark-nominal) 40%, transparent);\n}\n\n.gauge--warn {\n color: var(--prism-mark-attention);\n border-color: color-mix(in srgb, var(--prism-mark-attention) 40%, transparent);\n}\n\n.gauge--danger {\n color: var(--prism-mark-critical);\n border-color: color-mix(in srgb, var(--prism-mark-critical) 45%, transparent);\n}\n\n.gauge--ok .gauge__dot,\n.gauge--warn .gauge__dot,\n.gauge--danger .gauge__dot {\n opacity: 1;\n}\n\n.gauge-card {\n inset: auto;\n gap: 1px;\n min-width: 200px;\n padding: var(--sp-2);\n margin: 0;\n position-area: block-end span-inline-start;\n position-anchor: --prism-head-gauge;\n position-try-fallbacks: flip-block, flip-inline;\n background: var(--prism-bg-elevated);\n border: 1px solid var(--prism-border-strong);\n border-radius: var(--radius-md);\n box-shadow: 0 8px 28px -10px rgb(0 0 0 / 45%);\n}\n\n/* display belongs on :popover-open and nowhere else \u2014 see the note in\n prism-template-popover.component.ts. An author display on the base\n rule outranks the UA's [popover]:not(:popover-open) { display: none }\n and pins the readout open. */\n.gauge-card:popover-open {\n display: flex;\n flex-direction: column;\n}\n"] }]
122
90
  }], null, { metrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "metrics", required: true }] }] }); })();
123
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismHeadGaugeComponent, { className: "PrismHeadGaugeComponent", filePath: "app/component-head/prism-head-gauge.component.ts", lineNumber: 138 }); })();
91
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismHeadGaugeComponent, { className: "PrismHeadGaugeComponent", filePath: "app/component-head/prism-head-gauge.component.ts", lineNumber: 26 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"prism-head-info.component.d.ts","sourceRoot":"","sources":["../../../src/app/component-head/prism-head-info.component.ts"],"names":[],"mappings":";AAGA;;;;;;;;;;;;GAYG;AACH,qBAgHa,sBAAsB;IACjC,QAAQ,CAAC,QAAQ,8CAA4B;IAC7C,QAAQ,CAAC,WAAW,0DAAwC;IAC5D,QAAQ,CAAC,IAAI,yDAAgC;IAC7C,QAAQ,CAAC,YAAY,8CAAoB;yCAJ9B,sBAAsB;2CAAtB,sBAAsB;CAKlC"}
1
+ {"version":3,"file":"prism-head-info.component.d.ts","sourceRoot":"","sources":["../../../src/app/component-head/prism-head-info.component.ts"],"names":[],"mappings":";AAGA;;;;;;;;;;;;GAYG;AACH,qBAQa,sBAAsB;IAC/B,QAAQ,CAAC,QAAQ,8CAA4B;IAC7C,QAAQ,CAAC,WAAW,0DAAwC;IAC5D,QAAQ,CAAC,IAAI,yDAAgC;IAC7C,QAAQ,CAAC,YAAY,8CAAoB;yCAJhC,sBAAsB;2CAAtB,sBAAsB;CAKlC"}
@@ -82,43 +82,10 @@ export class PrismHeadInfoComponent {
82
82
  i0.ɵɵconditional(ctx.variantCount() > 0 ? 6 : -1);
83
83
  i0.ɵɵadvance();
84
84
  i0.ɵɵconditional(ctx.tags().length ? 7 : -1);
85
- } }, dependencies: [PrismIconComponent], styles: ["[_nghost-%COMP%] { display: inline-flex; }\n\n .info-btn[_ngcontent-%COMP%] {\n display: grid;\n place-items: center;\n width: 20px;\n height: 20px;\n padding: 0;\n border: 0;\n border-radius: var(--%NS%radius-xs);\n background: transparent;\n color: var(--%NS%prism-text-ghost);\n cursor: pointer;\n anchor-name: --prism-head-info;\n }\n .info-btn[_ngcontent-%COMP%]:hover { color: var(--%NS%prism-text-2); }\n .info-btn[_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--%NS%prism-primary);\n outline-offset: 1px;\n }\n\n .info-card[_ngcontent-%COMP%] {\n margin: 0;\n padding: var(--%NS%sp-4);\n width: 320px;\n max-width: calc(100vw - var(--%NS%sp-6));\n border: 1px solid var(--%NS%prism-border-strong);\n border-radius: var(--%NS%radius-md);\n background: var(--%NS%prism-bg-elevated);\n color: var(--%NS%prism-text-2);\n box-shadow: 0 8px 28px -10px rgba(0, 0, 0, 0.45);\n position-anchor: --prism-head-info;\n position-area: block-end span-inline-end;\n position-try-fallbacks: flip-block, flip-inline;\n inset: auto;\n }\n\n .info-card__selector[_ngcontent-%COMP%] {\n display: block;\n font-family: var(--%NS%font-mono);\n font-size: var(--%NS%fs-md);\n color: var(--%NS%prism-primary);\n user-select: all;\n }\n .info-card__desc[_ngcontent-%COMP%] {\n margin: var(--%NS%sp-3) 0 0;\n font-size: var(--%NS%fs-lg);\n line-height: 1.55;\n }\n \n\n\n .info-card__meta[_ngcontent-%COMP%] {\n margin: var(--%NS%sp-3) 0 0;\n font-size: var(--%NS%fs-md);\n color: var(--%NS%prism-text-muted);\n }\n .info-card__tags[_ngcontent-%COMP%] {\n margin-top: var(--%NS%sp-4);\n display: flex;\n flex-wrap: wrap;\n gap: var(--%NS%sp-2);\n }\n .info-card__tag[_ngcontent-%COMP%] {\n padding: 1px var(--%NS%sp-3);\n font-size: var(--%NS%fs-xs);\n border-radius: var(--%NS%radius-xs);\n border: 1px solid var(--%NS%prism-border);\n color: var(--%NS%prism-text-muted);\n }"] });
85
+ } }, dependencies: [PrismIconComponent], styles: ["[_nghost-%COMP%] {\n display: inline-flex;\n}\n\n.info-btn[_ngcontent-%COMP%] {\n display: grid;\n place-items: center;\n width: 20px;\n height: 20px;\n padding: 0;\n anchor-name: --prism-head-info;\n color: var(--%NS%prism-text-ghost);\n cursor: pointer;\n background: transparent;\n border: 0;\n border-radius: var(--%NS%radius-xs);\n}\n\n.info-btn[_ngcontent-%COMP%]:hover {\n color: var(--%NS%prism-text-2);\n}\n\n.info-btn[_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--%NS%prism-primary);\n outline-offset: 1px;\n}\n\n.info-card[_ngcontent-%COMP%] {\n inset: auto;\n width: 320px;\n max-width: calc(100vw - var(--%NS%sp-6));\n padding: var(--%NS%sp-4);\n margin: 0;\n position-area: block-end span-inline-end;\n position-anchor: --prism-head-info;\n position-try-fallbacks: flip-block, flip-inline;\n color: var(--%NS%prism-text-2);\n background: var(--%NS%prism-bg-elevated);\n border: 1px solid var(--%NS%prism-border-strong);\n border-radius: var(--%NS%radius-md);\n box-shadow: 0 8px 28px -10px rgb(0 0 0 / 45%);\n}\n\n.info-card__selector[_ngcontent-%COMP%] {\n display: block;\n font-family: var(--%NS%font-mono);\n font-size: var(--%NS%fs-md);\n color: var(--%NS%prism-primary);\n user-select: all;\n}\n\n.info-card__desc[_ngcontent-%COMP%] {\n margin: var(--%NS%sp-3) 0 0;\n font-size: var(--%NS%fs-lg);\n line-height: 1.55;\n}\n\n\n\n\n.info-card__meta[_ngcontent-%COMP%] {\n margin: var(--%NS%sp-3) 0 0;\n font-size: var(--%NS%fs-md);\n color: var(--%NS%prism-text-muted);\n}\n\n.info-card__tags[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: var(--%NS%sp-2);\n margin-top: var(--%NS%sp-4);\n}\n\n.info-card__tag[_ngcontent-%COMP%] {\n padding: 1px var(--%NS%sp-3);\n font-size: var(--%NS%fs-xs);\n color: var(--%NS%prism-text-muted);\n border: 1px solid var(--%NS%prism-border);\n border-radius: var(--%NS%radius-xs);\n}"] });
86
86
  }
87
87
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismHeadInfoComponent, [{
88
88
  type: Component,
89
- args: [{ selector: 'prism-head-info', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismIconComponent], template: `
90
- <button
91
- class="info-btn"
92
- type="button"
93
- popovertarget="prism-head-info"
94
- title="Component details"
95
- aria-label="Component details"
96
- >
97
- <prism-icon name="info" [size]="13" />
98
- </button>
99
-
100
- <div
101
- popover
102
- id="prism-head-info"
103
- class="info-card"
104
- role="dialog"
105
- aria-label="Component details"
106
- >
107
- <code class="info-card__selector">&lt;{{ selector() }}&gt;</code>
108
- @if (description()) {
109
- <p class="info-card__desc">{{ description() }}</p>
110
- } @if (variantCount() > 0) {
111
- <p class="info-card__meta">
112
- {{ variantCount() }} {{ variantCount() === 1 ? 'variant' : 'variants' }}
113
- </p>
114
- } @if (tags().length) {
115
- <div class="info-card__tags">
116
- @for (tag of tags(); track tag) {
117
- <span class="info-card__tag">{{ tag }}</span>
118
- }
119
- </div>
120
- }
121
- </div>
122
- `, styles: ["\n :host { display: inline-flex; }\n\n .info-btn {\n display: grid;\n place-items: center;\n width: 20px;\n height: 20px;\n padding: 0;\n border: 0;\n border-radius: var(--radius-xs);\n background: transparent;\n color: var(--prism-text-ghost);\n cursor: pointer;\n anchor-name: --prism-head-info;\n }\n .info-btn:hover { color: var(--prism-text-2); }\n .info-btn:focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 1px;\n }\n\n .info-card {\n margin: 0;\n padding: var(--sp-4);\n width: 320px;\n max-width: calc(100vw - var(--sp-6));\n border: 1px solid var(--prism-border-strong);\n border-radius: var(--radius-md);\n background: var(--prism-bg-elevated);\n color: var(--prism-text-2);\n box-shadow: 0 8px 28px -10px rgba(0, 0, 0, 0.45);\n position-anchor: --prism-head-info;\n position-area: block-end span-inline-end;\n position-try-fallbacks: flip-block, flip-inline;\n inset: auto;\n }\n\n .info-card__selector {\n display: block;\n font-family: var(--font-mono);\n font-size: var(--fs-md);\n color: var(--prism-primary);\n user-select: all;\n }\n .info-card__desc {\n margin: var(--sp-3) 0 0;\n font-size: var(--fs-lg);\n line-height: 1.55;\n }\n /* A plain fact about the component, not a measurement \u2014 it sits here with\n the selector and the tags rather than in the gauge, whose numbers all\n answer \"did this pass its threshold\". A count cannot. */\n .info-card__meta {\n margin: var(--sp-3) 0 0;\n font-size: var(--fs-md);\n color: var(--prism-text-muted);\n }\n .info-card__tags {\n margin-top: var(--sp-4);\n display: flex;\n flex-wrap: wrap;\n gap: var(--sp-2);\n }\n .info-card__tag {\n padding: 1px var(--sp-3);\n font-size: var(--fs-xs);\n border-radius: var(--radius-xs);\n border: 1px solid var(--prism-border);\n color: var(--prism-text-muted);\n }\n "] }]
89
+ args: [{ selector: 'prism-head-info', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismIconComponent], template: "<button\n class=\"info-btn\"\n type=\"button\"\n popovertarget=\"prism-head-info\"\n title=\"Component details\"\n aria-label=\"Component details\">\n <prism-icon\n name=\"info\"\n [size]=\"13\" />\n</button>\n\n<div\n popover\n id=\"prism-head-info\"\n class=\"info-card\"\n role=\"dialog\"\n aria-label=\"Component details\">\n <code class=\"info-card__selector\">&lt;{{ selector() }}&gt;</code>\n @if (description()) {\n <p class=\"info-card__desc\">{{ description() }}</p>\n }\n @if (variantCount() > 0) {\n <p class=\"info-card__meta\"> {{ variantCount() }} {{ variantCount() === 1 ? 'variant' : 'variants' }} </p>\n }\n @if (tags().length) {\n <div class=\"info-card__tags\">\n @for (tag of tags(); track tag) {\n <span class=\"info-card__tag\">{{ tag }}</span>\n }\n </div>\n }\n</div>\n", styles: [":host {\n display: inline-flex;\n}\n\n.info-btn {\n display: grid;\n place-items: center;\n width: 20px;\n height: 20px;\n padding: 0;\n anchor-name: --prism-head-info;\n color: var(--prism-text-ghost);\n cursor: pointer;\n background: transparent;\n border: 0;\n border-radius: var(--radius-xs);\n}\n\n.info-btn:hover {\n color: var(--prism-text-2);\n}\n\n.info-btn:focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 1px;\n}\n\n.info-card {\n inset: auto;\n width: 320px;\n max-width: calc(100vw - var(--sp-6));\n padding: var(--sp-4);\n margin: 0;\n position-area: block-end span-inline-end;\n position-anchor: --prism-head-info;\n position-try-fallbacks: flip-block, flip-inline;\n color: var(--prism-text-2);\n background: var(--prism-bg-elevated);\n border: 1px solid var(--prism-border-strong);\n border-radius: var(--radius-md);\n box-shadow: 0 8px 28px -10px rgb(0 0 0 / 45%);\n}\n\n.info-card__selector {\n display: block;\n font-family: var(--font-mono);\n font-size: var(--fs-md);\n color: var(--prism-primary);\n user-select: all;\n}\n\n.info-card__desc {\n margin: var(--sp-3) 0 0;\n font-size: var(--fs-lg);\n line-height: 1.55;\n}\n\n/* A plain fact about the component, not a measurement \u2014 it sits here with\n the selector and the tags rather than in the gauge, whose numbers all\n answer \"did this pass its threshold\". A count cannot. */\n.info-card__meta {\n margin: var(--sp-3) 0 0;\n font-size: var(--fs-md);\n color: var(--prism-text-muted);\n}\n\n.info-card__tags {\n display: flex;\n flex-wrap: wrap;\n gap: var(--sp-2);\n margin-top: var(--sp-4);\n}\n\n.info-card__tag {\n padding: 1px var(--sp-3);\n font-size: var(--fs-xs);\n color: var(--prism-text-muted);\n border: 1px solid var(--prism-border);\n border-radius: var(--radius-xs);\n}\n"] }]
123
90
  }], null, { selector: [{ type: i0.Input, args: [{ isSignal: true, alias: "selector", required: true }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], tags: [{ type: i0.Input, args: [{ isSignal: true, alias: "tags", required: false }] }], variantCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "variantCount", required: false }] }] }); })();
124
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismHeadInfoComponent, { className: "PrismHeadInfoComponent", filePath: "app/component-head/prism-head-info.component.ts", lineNumber: 129 }); })();
91
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismHeadInfoComponent, { className: "PrismHeadInfoComponent", filePath: "app/component-head/prism-head-info.component.ts", lineNumber: 25 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"prism-stat.component.d.ts","sourceRoot":"","sources":["../../../src/app/component-head/prism-stat.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;;AAEvD;;;;;GAKG;AACH,qBAoDa,kBAAkB;IAC7B,QAAQ,CAAC,KAAK,8CAA4B;IAC1C,QAAQ,CAAC,KAAK,uDAAqC;IACnD,QAAQ,CAAC,OAAO,qDAA8B;yCAHnC,kBAAkB;2CAAlB,kBAAkB;CAI9B"}
1
+ {"version":3,"file":"prism-stat.component.d.ts","sourceRoot":"","sources":["../../../src/app/component-head/prism-stat.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;;AAEvD;;;;;GAKG;AACH,qBAOa,kBAAkB;IAC3B,QAAQ,CAAC,KAAK,8CAA4B;IAC1C,QAAQ,CAAC,KAAK,uDAAqC;IACnD,QAAQ,CAAC,OAAO,qDAA8B;yCAHrC,kBAAkB;2CAAlB,kBAAkB;CAI9B"}
@@ -29,21 +29,10 @@ export class PrismStatComponent {
29
29
  i0.ɵɵtextInterpolate(ctx.label());
30
30
  i0.ɵɵadvance(2);
31
31
  i0.ɵɵtextInterpolate(ctx.value());
32
- } }, styles: [".stat[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--%NS%sp-3);\n padding: var(--%NS%sp-2) var(--%NS%sp-3);\n border-radius: var(--%NS%radius-xs);\n font-size: var(--%NS%fs-md);\n color: var(--%NS%prism-text-2);\n }\n .stat__dot[_ngcontent-%COMP%] {\n width: 5px;\n height: 5px;\n border-radius: 50%;\n background: transparent;\n flex: none;\n }\n .stat__lbl[_ngcontent-%COMP%] { white-space: nowrap; }\n .stat__val[_ngcontent-%COMP%] {\n margin-left: auto;\n font-family: var(--%NS%font-mono);\n font-variant-numeric: tabular-nums;\n color: var(--%NS%prism-text);\n }\n \n\n\n\n .stat--ok[_ngcontent-%COMP%] .stat__dot[_ngcontent-%COMP%] { background: var(--%NS%prism-mark-nominal); }\n .stat--ok[_ngcontent-%COMP%] .stat__val[_ngcontent-%COMP%] { color: var(--%NS%prism-mark-nominal); }\n .stat--warn[_ngcontent-%COMP%] .stat__dot[_ngcontent-%COMP%] { background: var(--%NS%prism-mark-attention); }\n .stat--warn[_ngcontent-%COMP%] .stat__val[_ngcontent-%COMP%] { color: var(--%NS%prism-mark-attention); }\n .stat--danger[_ngcontent-%COMP%] .stat__dot[_ngcontent-%COMP%] { background: var(--%NS%prism-mark-critical); }\n .stat--danger[_ngcontent-%COMP%] .stat__val[_ngcontent-%COMP%] { color: var(--%NS%prism-mark-critical); }"] });
32
+ } }, styles: [".stat[_ngcontent-%COMP%] {\n display: flex;\n gap: var(--%NS%sp-3);\n align-items: center;\n padding: var(--%NS%sp-2) var(--%NS%sp-3);\n font-size: var(--%NS%fs-md);\n color: var(--%NS%prism-text-2);\n border-radius: var(--%NS%radius-xs);\n}\n\n.stat__dot[_ngcontent-%COMP%] {\n flex: none;\n width: 5px;\n height: 5px;\n background: transparent;\n border-radius: 50%;\n}\n\n.stat__lbl[_ngcontent-%COMP%] {\n white-space: nowrap;\n}\n\n.stat__val[_ngcontent-%COMP%] {\n margin-left: auto;\n font-family: var(--%NS%font-mono);\n font-variant-numeric: tabular-nums;\n color: var(--%NS%prism-text);\n}\n\n\n\n\n\n.stat--ok[_ngcontent-%COMP%] .stat__dot[_ngcontent-%COMP%] {\n background: var(--%NS%prism-mark-nominal);\n}\n\n.stat--ok[_ngcontent-%COMP%] .stat__val[_ngcontent-%COMP%] {\n color: var(--%NS%prism-mark-nominal);\n}\n\n.stat--warn[_ngcontent-%COMP%] .stat__dot[_ngcontent-%COMP%] {\n background: var(--%NS%prism-mark-attention);\n}\n\n.stat--warn[_ngcontent-%COMP%] .stat__val[_ngcontent-%COMP%] {\n color: var(--%NS%prism-mark-attention);\n}\n\n.stat--danger[_ngcontent-%COMP%] .stat__dot[_ngcontent-%COMP%] {\n background: var(--%NS%prism-mark-critical);\n}\n\n.stat--danger[_ngcontent-%COMP%] .stat__val[_ngcontent-%COMP%] {\n color: var(--%NS%prism-mark-critical);\n}"] });
33
33
  }
34
34
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismStatComponent, [{
35
35
  type: Component,
36
- args: [{ selector: 'prism-stat', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
37
- <div
38
- class="stat"
39
- [class.stat--ok]="variant() === 'ok'"
40
- [class.stat--warn]="variant() === 'warn'"
41
- [class.stat--danger]="variant() === 'danger'"
42
- >
43
- <span class="stat__dot" aria-hidden="true"></span>
44
- <span class="stat__lbl">{{ label() }}</span>
45
- <span class="stat__val">{{ value() }}</span>
46
- </div>
47
- `, styles: ["\n .stat {\n display: flex;\n align-items: center;\n gap: var(--sp-3);\n padding: var(--sp-2) var(--sp-3);\n border-radius: var(--radius-xs);\n font-size: var(--fs-md);\n color: var(--prism-text-2);\n }\n .stat__dot {\n width: 5px;\n height: 5px;\n border-radius: 50%;\n background: transparent;\n flex: none;\n }\n .stat__lbl { white-space: nowrap; }\n .stat__val {\n margin-left: auto;\n font-family: var(--font-mono);\n font-variant-numeric: tabular-nums;\n color: var(--prism-text);\n }\n /* Four states, four treatments. \"ok\" earns the nominal green, and \"none\"\n deliberately does not: a metric with no data has nothing to report, and\n colouring it green would claim a clean result the tool never measured.\n That is the one distinction worth keeping grey. */\n .stat--ok .stat__dot { background: var(--prism-mark-nominal); }\n .stat--ok .stat__val { color: var(--prism-mark-nominal); }\n .stat--warn .stat__dot { background: var(--prism-mark-attention); }\n .stat--warn .stat__val { color: var(--prism-mark-attention); }\n .stat--danger .stat__dot { background: var(--prism-mark-critical); }\n .stat--danger .stat__val { color: var(--prism-mark-critical); }\n "] }]
36
+ args: [{ selector: 'prism-stat', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"stat\"\n [class.stat--ok]=\"variant() === 'ok'\"\n [class.stat--warn]=\"variant() === 'warn'\"\n [class.stat--danger]=\"variant() === 'danger'\">\n <span\n class=\"stat__dot\"\n aria-hidden=\"true\"></span>\n <span class=\"stat__lbl\">{{ label() }}</span>\n <span class=\"stat__val\">{{ value() }}</span>\n</div>\n", styles: [".stat {\n display: flex;\n gap: var(--sp-3);\n align-items: center;\n padding: var(--sp-2) var(--sp-3);\n font-size: var(--fs-md);\n color: var(--prism-text-2);\n border-radius: var(--radius-xs);\n}\n\n.stat__dot {\n flex: none;\n width: 5px;\n height: 5px;\n background: transparent;\n border-radius: 50%;\n}\n\n.stat__lbl {\n white-space: nowrap;\n}\n\n.stat__val {\n margin-left: auto;\n font-family: var(--font-mono);\n font-variant-numeric: tabular-nums;\n color: var(--prism-text);\n}\n\n/* Four states, four treatments. \"ok\" earns the nominal green, and \"none\"\n deliberately does not: a metric with no data has nothing to report, and\n colouring it green would claim a clean result the tool never measured.\n That is the one distinction worth keeping grey. */\n.stat--ok .stat__dot {\n background: var(--prism-mark-nominal);\n}\n\n.stat--ok .stat__val {\n color: var(--prism-mark-nominal);\n}\n\n.stat--warn .stat__dot {\n background: var(--prism-mark-attention);\n}\n\n.stat--warn .stat__val {\n color: var(--prism-mark-attention);\n}\n\n.stat--danger .stat__dot {\n background: var(--prism-mark-critical);\n}\n\n.stat--danger .stat__val {\n color: var(--prism-mark-critical);\n}\n"] }]
48
37
  }], null, { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] }); })();
49
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismStatComponent, { className: "PrismStatComponent", filePath: "app/component-head/prism-stat.component.ts", lineNumber: 62 }); })();
38
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismStatComponent, { className: "PrismStatComponent", filePath: "app/component-head/prism-stat.component.ts", lineNumber: 17 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"boolean-control.component.d.ts","sourceRoot":"","sources":["../../../src/app/controls/boolean-control.component.ts"],"names":[],"mappings":";AAOA,qBA+Ca,uBAAuB;IAClC,QAAQ,CAAC,KAAK,+CAAgB;IAC9B,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,QAAQ,8CAAa;IAC9B,QAAQ,CAAC,WAAW,oDAAqB;yCAJ9B,uBAAuB;2CAAvB,uBAAuB;CAKnC"}
1
+ {"version":3,"file":"boolean-control.component.d.ts","sourceRoot":"","sources":["../../../src/app/controls/boolean-control.component.ts"],"names":[],"mappings":";AAEA,qBAOa,uBAAuB;IAChC,QAAQ,CAAC,KAAK,+CAAgB;IAC9B,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,QAAQ,8CAAa;IAC9B,QAAQ,CAAC,WAAW,oDAAqB;yCAJhC,uBAAuB;2CAAvB,uBAAuB;CAKnC"}
@@ -1,4 +1,4 @@
1
- import { Component, ChangeDetectionStrategy, input, output, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class BooleanControlComponent {
4
4
  value = input(false, /* @ts-ignore */
@@ -16,18 +16,10 @@ export class BooleanControlComponent {
16
16
  } if (rf & 2) {
17
17
  i0.ɵɵclassProp("on", ctx.value());
18
18
  i0.ɵɵattribute("aria-checked", ctx.value());
19
- } }, styles: [".ctl-toggle[_ngcontent-%COMP%] {\n position: relative;\n width: 34px;\n height: 18px;\n border-radius: 9px;\n background: var(--%NS%prism-input-bg);\n border: 1px solid var(--%NS%prism-border);\n transition: all var(--%NS%dur-fast);\n cursor: pointer;\n flex-shrink: 0;\n padding: 0;\n }\n .ctl-toggle[_ngcontent-%COMP%]::after {\n content: '';\n position: absolute;\n left: 2px;\n top: 2px;\n width: 12px;\n height: 12px;\n border-radius: 50%;\n background: var(--%NS%prism-text-muted);\n transition: transform var(--%NS%dur-fast), background var(--%NS%dur-fast);\n }\n .ctl-toggle.on[_ngcontent-%COMP%] {\n background: var(--%NS%prism-primary);\n border-color: var(--%NS%prism-primary);\n }\n .ctl-toggle.on[_ngcontent-%COMP%]::after {\n transform: translateX(16px);\n background: white;\n }"] });
19
+ } }, styles: [".ctl-toggle[_ngcontent-%COMP%] {\n position: relative;\n flex-shrink: 0;\n width: 34px;\n height: 18px;\n padding: 0;\n cursor: pointer;\n background: var(--%NS%prism-input-bg);\n border: 1px solid var(--%NS%prism-border);\n border-radius: 9px;\n transition: all var(--%NS%dur-fast);\n}\n\n.ctl-toggle[_ngcontent-%COMP%]::after {\n position: absolute;\n top: 2px;\n left: 2px;\n width: 12px;\n height: 12px;\n content: '';\n background: var(--%NS%prism-text-muted);\n border-radius: 50%;\n transition:\n transform var(--%NS%dur-fast),\n background var(--%NS%dur-fast);\n}\n\n.ctl-toggle.on[_ngcontent-%COMP%] {\n background: var(--%NS%prism-primary);\n border-color: var(--%NS%prism-primary);\n}\n\n.ctl-toggle.on[_ngcontent-%COMP%]::after {\n background: white;\n transform: translateX(16px);\n}"] });
20
20
  }
21
21
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BooleanControlComponent, [{
22
22
  type: Component,
23
- args: [{ selector: 'prism-boolean-control', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
24
- <button
25
- class="ctl-toggle"
26
- [class.on]="value()"
27
- (click)="valueChange.emit(!value())"
28
- role="switch"
29
- [attr.aria-checked]="value()"
30
- ></button>
31
- `, styles: ["\n .ctl-toggle {\n position: relative;\n width: 34px;\n height: 18px;\n border-radius: 9px;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n transition: all var(--dur-fast);\n cursor: pointer;\n flex-shrink: 0;\n padding: 0;\n }\n .ctl-toggle::after {\n content: '';\n position: absolute;\n left: 2px;\n top: 2px;\n width: 12px;\n height: 12px;\n border-radius: 50%;\n background: var(--prism-text-muted);\n transition: transform var(--dur-fast), background var(--dur-fast);\n }\n .ctl-toggle.on {\n background: var(--prism-primary);\n border-color: var(--prism-primary);\n }\n .ctl-toggle.on::after {\n transform: translateX(16px);\n background: white;\n }\n "] }]
23
+ args: [{ selector: 'prism-boolean-control', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"ctl-toggle\"\n [class.on]=\"value()\"\n (click)=\"valueChange.emit(!value())\"\n role=\"switch\"\n [attr.aria-checked]=\"value()\"></button>\n", styles: [".ctl-toggle {\n position: relative;\n flex-shrink: 0;\n width: 34px;\n height: 18px;\n padding: 0;\n cursor: pointer;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: 9px;\n transition: all var(--dur-fast);\n}\n\n.ctl-toggle::after {\n position: absolute;\n top: 2px;\n left: 2px;\n width: 12px;\n height: 12px;\n content: '';\n background: var(--prism-text-muted);\n border-radius: 50%;\n transition:\n transform var(--dur-fast),\n background var(--dur-fast);\n}\n\n.ctl-toggle.on {\n background: var(--prism-primary);\n border-color: var(--prism-primary);\n}\n\n.ctl-toggle.on::after {\n background: white;\n transform: translateX(16px);\n}\n"] }]
32
24
  }], null, { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], typeName: [{ type: i0.Input, args: [{ isSignal: true, alias: "typeName", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] }); })();
33
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(BooleanControlComponent, { className: "BooleanControlComponent", filePath: "app/controls/boolean-control.component.ts", lineNumber: 55 }); })();
25
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(BooleanControlComponent, { className: "BooleanControlComponent", filePath: "app/controls/boolean-control.component.ts", lineNumber: 10 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"json-control.component.d.ts","sourceRoot":"","sources":["../../../src/app/controls/json-control.component.ts"],"names":[],"mappings":";AAWA,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAanD;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAU5D;AAED,qBAuFa,oBAAoB;IAC/B,QAAQ,CAAC,KAAK,+CAAwB;IACtC,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,QAAQ,8CAAa;IAC9B,QAAQ,CAAC,WAAW,oDAAqB;IAEzC,QAAQ,CAAC,UAAU,kDAAiB;IACpC,QAAQ,CAAC,SAAS,wDAA+B;IAEjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CACgC;IAC3D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkD;IAExE,QAAQ,CAAC,WAAW,yCAIjB;IAEH,QAAQ,CAAC,eAAe,yCAAqD;IAE7E,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAW1B,UAAU,IAAI,IAAI;yCAhCP,oBAAoB;2CAApB,oBAAoB;CAwChC"}
1
+ {"version":3,"file":"json-control.component.d.ts","sourceRoot":"","sources":["../../../src/app/controls/json-control.component.ts"],"names":[],"mappings":";AAEA,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAanD;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAW5D;AAED,qBAOa,oBAAoB;IAC7B,QAAQ,CAAC,KAAK,+CAAwB;IACtC,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,QAAQ,8CAAa;IAC9B,QAAQ,CAAC,WAAW,oDAAqB;IAEzC,QAAQ,CAAC,UAAU,kDAAiB;IACpC,QAAQ,CAAC,SAAS,wDAA+B;IAEjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4D;IACvF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkD;IAExE,QAAQ,CAAC,WAAW,yCAKjB;IAEH,QAAQ,CAAC,eAAe,yCAAqD;IAE7E,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAY1B,UAAU,IAAI,IAAI;yCAjCT,oBAAoB;2CAApB,oBAAoB;CA0ChC"}
@@ -1,4 +1,4 @@
1
- import { Component, ChangeDetectionStrategy, computed, input, output, signal, viewChild, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, input, output, signal, viewChild } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  const _c0 = ["textareaEl"];
4
4
  const _c1 = ["preEl"];
@@ -101,30 +101,10 @@ export class JsonControlComponent {
101
101
  i0.ɵɵdomProperty("value", ctx.displayText());
102
102
  i0.ɵɵadvance(2);
103
103
  i0.ɵɵconditional(ctx.parseError() ? 7 : -1);
104
- } }, styles: [".json-editor[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n\n .json-overlay[_ngcontent-%COMP%] {\n position: relative;\n border: 1px solid var(--%NS%prism-border);\n border-radius: var(--%NS%radius-sm);\n overflow: hidden;\n transition: border-color var(--%NS%dur-fast);\n }\n .json-overlay[_ngcontent-%COMP%]:focus-within {\n border-color: var(--%NS%prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--%NS%prism-primary) 30%, transparent);\n }\n\n .json-pre[_ngcontent-%COMP%], .json-input[_ngcontent-%COMP%] {\n margin: 0;\n padding: 4px 8px;\n font-family: var(--%NS%font-mono);\n font-size: 12px;\n line-height: 1.4;\n white-space: pre-wrap;\n word-wrap: break-word;\n tab-size: 2;\n }\n\n .json-pre[_ngcontent-%COMP%] {\n min-height: 56px;\n pointer-events: none;\n }\n .json-pre[_ngcontent-%COMP%] code[_ngcontent-%COMP%] { font-family: inherit; }\n\n [_nghost-%COMP%] .jh-key { color: var(--%NS%prism-code-attr); }\n [_nghost-%COMP%] .jh-string { color: var(--%NS%prism-code-str); }\n [_nghost-%COMP%] .jh-number { color: var(--%NS%prism-warn); }\n [_nghost-%COMP%] .jh-bool { color: var(--%NS%prism-primary); }\n [_nghost-%COMP%] .jh-null { color: var(--%NS%prism-text-ghost); }\n\n .json-input[_ngcontent-%COMP%] {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n background: transparent;\n color: transparent;\n caret-color: var(--%NS%prism-text);\n border: none;\n resize: none;\n overflow: auto;\n box-sizing: border-box;\n }\n .json-input[_ngcontent-%COMP%]:focus { outline: none; }\n .json-input[_ngcontent-%COMP%]::selection { background: rgba(99, 102, 241, 0.3); }\n\n .json-error[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--%NS%prism-danger);\n display: block;\n margin-top: 2px;\n }"] });
104
+ } }, styles: [".json-editor[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.json-overlay[_ngcontent-%COMP%] {\n position: relative;\n overflow: hidden;\n border: 1px solid var(--%NS%prism-border);\n border-radius: var(--%NS%radius-sm);\n transition: border-color var(--%NS%dur-fast);\n}\n\n.json-overlay[_ngcontent-%COMP%]:focus-within {\n border-color: var(--%NS%prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--%NS%prism-primary) 30%, transparent);\n}\n\n.json-pre[_ngcontent-%COMP%], \n.json-input[_ngcontent-%COMP%] {\n padding: 4px 8px;\n margin: 0;\n font-family: var(--%NS%font-mono);\n font-size: 12px;\n line-height: 1.4;\n overflow-wrap: break-word;\n tab-size: 2;\n white-space: pre-wrap;\n}\n\n.json-pre[_ngcontent-%COMP%] {\n min-height: 56px;\n pointer-events: none;\n}\n\n.json-pre[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n font-family: inherit;\n}\n\n[_nghost-%COMP%] .jh-key {\n color: var(--%NS%prism-code-attr);\n}\n\n[_nghost-%COMP%] .jh-string {\n color: var(--%NS%prism-code-str);\n}\n\n[_nghost-%COMP%] .jh-number {\n color: var(--%NS%prism-warn);\n}\n\n[_nghost-%COMP%] .jh-bool {\n color: var(--%NS%prism-primary);\n}\n\n[_nghost-%COMP%] .jh-null {\n color: var(--%NS%prism-text-ghost);\n}\n\n.json-input[_ngcontent-%COMP%] {\n position: absolute;\n inset: 0;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n overflow: auto;\n color: transparent;\n caret-color: var(--%NS%prism-text);\n resize: none;\n background: transparent;\n border: none;\n}\n\n.json-input[_ngcontent-%COMP%]:focus {\n outline: none;\n}\n\n.json-input[_ngcontent-%COMP%]::selection {\n background: rgb(99 102 241 / 30%);\n}\n\n.json-error[_ngcontent-%COMP%] {\n display: block;\n margin-top: 2px;\n font-size: 11px;\n color: var(--%NS%prism-danger);\n}"] });
105
105
  }
106
106
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(JsonControlComponent, [{
107
107
  type: Component,
108
- args: [{ selector: 'prism-json-control', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
109
- <div class="json-editor">
110
- <div class="json-overlay">
111
- <pre
112
- class="json-pre"
113
- #preEl
114
- ><code [innerHTML]="highlightedHtml()"></code></pre>
115
- <textarea
116
- #textareaEl
117
- class="json-input"
118
- [value]="displayText()"
119
- (input)="onInput($any($event.target).value)"
120
- (scroll)="syncScroll()"
121
- spellcheck="false"
122
- ></textarea>
123
- </div>
124
- @if (parseError()) {
125
- <span class="json-error">Invalid JSON</span>
126
- }
127
- </div>
128
- `, styles: ["\n .json-editor { flex: 1; min-width: 0; }\n\n .json-overlay {\n position: relative;\n border: 1px solid var(--prism-border);\n border-radius: var(--radius-sm);\n overflow: hidden;\n transition: border-color var(--dur-fast);\n }\n .json-overlay:focus-within {\n border-color: var(--prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--prism-primary) 30%, transparent);\n }\n\n .json-pre, .json-input {\n margin: 0;\n padding: 4px 8px;\n font-family: var(--font-mono);\n font-size: 12px;\n line-height: 1.4;\n white-space: pre-wrap;\n word-wrap: break-word;\n tab-size: 2;\n }\n\n .json-pre {\n min-height: 56px;\n pointer-events: none;\n }\n .json-pre code { font-family: inherit; }\n\n :host ::ng-deep .jh-key { color: var(--prism-code-attr); }\n :host ::ng-deep .jh-string { color: var(--prism-code-str); }\n :host ::ng-deep .jh-number { color: var(--prism-warn); }\n :host ::ng-deep .jh-bool { color: var(--prism-primary); }\n :host ::ng-deep .jh-null { color: var(--prism-text-ghost); }\n\n .json-input {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n background: transparent;\n color: transparent;\n caret-color: var(--prism-text);\n border: none;\n resize: none;\n overflow: auto;\n box-sizing: border-box;\n }\n .json-input:focus { outline: none; }\n .json-input::selection { background: rgba(99, 102, 241, 0.3); }\n\n .json-error {\n font-size: 11px;\n color: var(--prism-danger);\n display: block;\n margin-top: 2px;\n }\n "] }]
108
+ args: [{ selector: 'prism-json-control', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"json-editor\">\n <div class=\"json-overlay\">\n <pre\n class=\"json-pre\"\n #preEl><code [innerHTML]=\"highlightedHtml()\"></code></pre>\n <textarea\n #textareaEl\n class=\"json-input\"\n [value]=\"displayText()\"\n (input)=\"onInput($any($event.target).value)\"\n (scroll)=\"syncScroll()\"\n spellcheck=\"false\"></textarea>\n </div>\n @if (parseError()) {\n <span class=\"json-error\">Invalid JSON</span>\n }\n</div>\n", styles: [".json-editor {\n flex: 1;\n min-width: 0;\n}\n\n.json-overlay {\n position: relative;\n overflow: hidden;\n border: 1px solid var(--prism-border);\n border-radius: var(--radius-sm);\n transition: border-color var(--dur-fast);\n}\n\n.json-overlay:focus-within {\n border-color: var(--prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--prism-primary) 30%, transparent);\n}\n\n.json-pre,\n.json-input {\n padding: 4px 8px;\n margin: 0;\n font-family: var(--font-mono);\n font-size: 12px;\n line-height: 1.4;\n overflow-wrap: break-word;\n tab-size: 2;\n white-space: pre-wrap;\n}\n\n.json-pre {\n min-height: 56px;\n pointer-events: none;\n}\n\n.json-pre code {\n font-family: inherit;\n}\n\n:host ::ng-deep .jh-key {\n color: var(--prism-code-attr);\n}\n\n:host ::ng-deep .jh-string {\n color: var(--prism-code-str);\n}\n\n:host ::ng-deep .jh-number {\n color: var(--prism-warn);\n}\n\n:host ::ng-deep .jh-bool {\n color: var(--prism-primary);\n}\n\n:host ::ng-deep .jh-null {\n color: var(--prism-text-ghost);\n}\n\n.json-input {\n position: absolute;\n inset: 0;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n overflow: auto;\n color: transparent;\n caret-color: var(--prism-text);\n resize: none;\n background: transparent;\n border: none;\n}\n\n.json-input:focus {\n outline: none;\n}\n\n.json-input::selection {\n background: rgb(99 102 241 / 30%);\n}\n\n.json-error {\n display: block;\n margin-top: 2px;\n font-size: 11px;\n color: var(--prism-danger);\n}\n"] }]
129
109
  }], null, { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], typeName: [{ type: i0.Input, args: [{ isSignal: true, alias: "typeName", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], textareaEl: [{ type: i0.ViewChild, args: ['textareaEl', { isSignal: true }] }], preEl: [{ type: i0.ViewChild, args: ['preEl', { isSignal: true }] }] }); })();
130
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(JsonControlComponent, { className: "JsonControlComponent", filePath: "app/controls/json-control.component.ts", lineNumber: 126 }); })();
110
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(JsonControlComponent, { className: "JsonControlComponent", filePath: "app/controls/json-control.component.ts", lineNumber: 38 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"number-control.component.d.ts","sourceRoot":"","sources":["../../../src/app/controls/number-control.component.ts"],"names":[],"mappings":";AAOA,qBAiCa,sBAAsB;IACjC,QAAQ,CAAC,KAAK,8CAAY;IAC1B,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,QAAQ,8CAAa;IAC9B,QAAQ,CAAC,WAAW,mDAAoB;yCAJ7B,sBAAsB;2CAAtB,sBAAsB;CAKlC"}
1
+ {"version":3,"file":"number-control.component.d.ts","sourceRoot":"","sources":["../../../src/app/controls/number-control.component.ts"],"names":[],"mappings":";AAEA,qBAOa,sBAAsB;IAC/B,QAAQ,CAAC,KAAK,8CAAY;IAC1B,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,QAAQ,8CAAa;IAC9B,QAAQ,CAAC,WAAW,mDAAoB;yCAJ/B,sBAAsB;2CAAtB,sBAAsB;CAKlC"}
@@ -1,4 +1,4 @@
1
- import { Component, ChangeDetectionStrategy, input, output, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class NumberControlComponent {
4
4
  value = input(0, /* @ts-ignore */
@@ -15,17 +15,10 @@ export class NumberControlComponent {
15
15
  i0.ɵɵdomElementEnd();
16
16
  } if (rf & 2) {
17
17
  i0.ɵɵdomProperty("value", ctx.value());
18
- } }, styles: [".ctl-number[_ngcontent-%COMP%] {\n height: 30px;\n padding: 0 10px;\n background: var(--%NS%prism-input-bg);\n border: 1px solid var(--%NS%prism-border);\n border-radius: var(--%NS%radius-sm);\n color: var(--%NS%prism-text);\n font-size: 13px;\n font-family: var(--%NS%font-sans);\n flex: 1;\n min-width: 0;\n outline: none;\n transition: border-color var(--%NS%dur-fast), box-shadow var(--%NS%dur-fast);\n }\n .ctl-number[_ngcontent-%COMP%]:focus {\n border-color: var(--%NS%prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--%NS%prism-primary) 30%, transparent);\n }"] });
18
+ } }, styles: [".ctl-number[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n height: 30px;\n padding: 0 10px;\n font-family: var(--%NS%font-sans);\n font-size: 13px;\n color: var(--%NS%prism-text);\n outline: none;\n background: var(--%NS%prism-input-bg);\n border: 1px solid var(--%NS%prism-border);\n border-radius: var(--%NS%radius-sm);\n transition:\n border-color var(--%NS%dur-fast),\n box-shadow var(--%NS%dur-fast);\n}\n\n.ctl-number[_ngcontent-%COMP%]:focus {\n border-color: var(--%NS%prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--%NS%prism-primary) 30%, transparent);\n}"] });
19
19
  }
20
20
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NumberControlComponent, [{
21
21
  type: Component,
22
- args: [{ selector: 'prism-number-control', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
23
- <input
24
- type="number"
25
- class="ctl-number"
26
- [value]="value()"
27
- (input)="valueChange.emit($any($event.target).valueAsNumber || 0)"
28
- />
29
- `, styles: ["\n .ctl-number {\n height: 30px;\n padding: 0 10px;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: var(--radius-sm);\n color: var(--prism-text);\n font-size: 13px;\n font-family: var(--font-sans);\n flex: 1;\n min-width: 0;\n outline: none;\n transition: border-color var(--dur-fast), box-shadow var(--dur-fast);\n }\n .ctl-number:focus {\n border-color: var(--prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--prism-primary) 30%, transparent);\n }\n "] }]
22
+ args: [{ selector: 'prism-number-control', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<input\n type=\"number\"\n class=\"ctl-number\"\n [value]=\"value()\"\n (input)=\"valueChange.emit($any($event.target).valueAsNumber || 0)\" />\n", styles: [".ctl-number {\n flex: 1;\n min-width: 0;\n height: 30px;\n padding: 0 10px;\n font-family: var(--font-sans);\n font-size: 13px;\n color: var(--prism-text);\n outline: none;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: var(--radius-sm);\n transition:\n border-color var(--dur-fast),\n box-shadow var(--dur-fast);\n}\n\n.ctl-number:focus {\n border-color: var(--prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--prism-primary) 30%, transparent);\n}\n"] }]
30
23
  }], null, { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], typeName: [{ type: i0.Input, args: [{ isSignal: true, alias: "typeName", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] }); })();
31
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NumberControlComponent, { className: "NumberControlComponent", filePath: "app/controls/number-control.component.ts", lineNumber: 41 }); })();
24
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NumberControlComponent, { className: "NumberControlComponent", filePath: "app/controls/number-control.component.ts", lineNumber: 10 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"string-control.component.d.ts","sourceRoot":"","sources":["../../../src/app/controls/string-control.component.ts"],"names":[],"mappings":";AAOA,qBAiCa,sBAAsB;IACjC,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,QAAQ,8CAAa;IAC9B,QAAQ,CAAC,WAAW,mDAAoB;yCAJ7B,sBAAsB;2CAAtB,sBAAsB;CAKlC"}
1
+ {"version":3,"file":"string-control.component.d.ts","sourceRoot":"","sources":["../../../src/app/controls/string-control.component.ts"],"names":[],"mappings":";AAEA,qBAOa,sBAAsB;IAC/B,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,QAAQ,8CAAa;IAC9B,QAAQ,CAAC,WAAW,mDAAoB;yCAJ/B,sBAAsB;2CAAtB,sBAAsB;CAKlC"}
@@ -1,4 +1,4 @@
1
- import { Component, ChangeDetectionStrategy, input, output, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class StringControlComponent {
4
4
  value = input('', /* @ts-ignore */
@@ -15,17 +15,10 @@ export class StringControlComponent {
15
15
  i0.ɵɵdomElementEnd();
16
16
  } if (rf & 2) {
17
17
  i0.ɵɵdomProperty("value", ctx.value());
18
- } }, styles: [".ctl-text[_ngcontent-%COMP%] {\n height: 30px;\n padding: 0 10px;\n background: var(--%NS%prism-input-bg);\n border: 1px solid var(--%NS%prism-border);\n border-radius: var(--%NS%radius-sm);\n color: var(--%NS%prism-text);\n font-size: 13px;\n font-family: var(--%NS%font-sans);\n flex: 1;\n min-width: 0;\n outline: none;\n transition: border-color var(--%NS%dur-fast), box-shadow var(--%NS%dur-fast);\n }\n .ctl-text[_ngcontent-%COMP%]:focus {\n border-color: var(--%NS%prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--%NS%prism-primary) 30%, transparent);\n }"] });
18
+ } }, styles: [".ctl-text[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n height: 30px;\n padding: 0 10px;\n font-family: var(--%NS%font-sans);\n font-size: 13px;\n color: var(--%NS%prism-text);\n outline: none;\n background: var(--%NS%prism-input-bg);\n border: 1px solid var(--%NS%prism-border);\n border-radius: var(--%NS%radius-sm);\n transition:\n border-color var(--%NS%dur-fast),\n box-shadow var(--%NS%dur-fast);\n}\n\n.ctl-text[_ngcontent-%COMP%]:focus {\n border-color: var(--%NS%prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--%NS%prism-primary) 30%, transparent);\n}"] });
19
19
  }
20
20
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StringControlComponent, [{
21
21
  type: Component,
22
- args: [{ selector: 'prism-string-control', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
23
- <input
24
- type="text"
25
- class="ctl-text"
26
- [value]="value()"
27
- (input)="valueChange.emit($any($event.target).value)"
28
- />
29
- `, styles: ["\n .ctl-text {\n height: 30px;\n padding: 0 10px;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: var(--radius-sm);\n color: var(--prism-text);\n font-size: 13px;\n font-family: var(--font-sans);\n flex: 1;\n min-width: 0;\n outline: none;\n transition: border-color var(--dur-fast), box-shadow var(--dur-fast);\n }\n .ctl-text:focus {\n border-color: var(--prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--prism-primary) 30%, transparent);\n }\n "] }]
22
+ args: [{ selector: 'prism-string-control', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<input\n type=\"text\"\n class=\"ctl-text\"\n [value]=\"value()\"\n (input)=\"valueChange.emit($any($event.target).value)\" />\n", styles: [".ctl-text {\n flex: 1;\n min-width: 0;\n height: 30px;\n padding: 0 10px;\n font-family: var(--font-sans);\n font-size: 13px;\n color: var(--prism-text);\n outline: none;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: var(--radius-sm);\n transition:\n border-color var(--dur-fast),\n box-shadow var(--dur-fast);\n}\n\n.ctl-text:focus {\n border-color: var(--prism-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--prism-primary) 30%, transparent);\n}\n"] }]
30
23
  }], null, { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], typeName: [{ type: i0.Input, args: [{ isSignal: true, alias: "typeName", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] }); })();
31
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(StringControlComponent, { className: "StringControlComponent", filePath: "app/controls/string-control.component.ts", lineNumber: 41 }); })();
24
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(StringControlComponent, { className: "StringControlComponent", filePath: "app/controls/string-control.component.ts", lineNumber: 10 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"union-control.component.d.ts","sourceRoot":"","sources":["../../../src/app/controls/union-control.component.ts"],"names":[],"mappings":";AAOA,qBAgDa,qBAAqB;IAChC,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,QAAQ,8CAAa;IAC9B,QAAQ,CAAC,OAAO,gDAAuB;IACvC,QAAQ,CAAC,WAAW,mDAAoB;yCAL7B,qBAAqB;2CAArB,qBAAqB;CAMjC"}
1
+ {"version":3,"file":"union-control.component.d.ts","sourceRoot":"","sources":["../../../src/app/controls/union-control.component.ts"],"names":[],"mappings":";AAEA,qBAOa,qBAAqB;IAC9B,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,KAAK,8CAAa;IAC3B,QAAQ,CAAC,QAAQ,8CAAa;IAC9B,QAAQ,CAAC,OAAO,gDAAuB;IACvC,QAAQ,CAAC,WAAW,mDAAoB;yCAL/B,qBAAqB;2CAArB,qBAAqB;CAMjC"}