@ng-prism/core 22.5.0 → 22.7.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (437) hide show
  1. package/README.md +13 -9
  2. package/dist/app/canvas/canvas-bg.styles.d.ts +1 -1
  3. package/dist/app/canvas/canvas-bg.styles.d.ts.map +1 -1
  4. package/dist/app/canvas/canvas-bg.styles.js +1 -1
  5. package/dist/app/canvas/canvas-overlay-tokens.d.ts +12 -0
  6. package/dist/app/canvas/canvas-overlay-tokens.d.ts.map +1 -0
  7. package/dist/app/canvas/canvas-overlay-tokens.js +52 -0
  8. package/dist/app/canvas/prism-canvas-bg-pill.component.js +2 -2
  9. package/dist/app/canvas/prism-canvas-pin-row.component.js +2 -2
  10. package/dist/app/canvas/prism-canvas-rulers.component.d.ts +2 -0
  11. package/dist/app/canvas/prism-canvas-rulers.component.d.ts.map +1 -1
  12. package/dist/app/canvas/prism-canvas-rulers.component.js +17 -12
  13. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts +25 -3
  14. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts.map +1 -1
  15. package/dist/app/canvas/prism-canvas-toolbar.component.js +154 -89
  16. package/dist/app/canvas/prism-template-popover.component.d.ts.map +1 -1
  17. package/dist/app/canvas/prism-template-popover.component.js +16 -7
  18. package/dist/app/canvas/state-chips.d.ts +50 -0
  19. package/dist/app/canvas/state-chips.d.ts.map +1 -0
  20. package/dist/app/canvas/state-chips.js +40 -0
  21. package/dist/app/component-head/head-metrics.d.ts +35 -19
  22. package/dist/app/component-head/head-metrics.d.ts.map +1 -1
  23. package/dist/app/component-head/head-metrics.js +57 -27
  24. package/dist/app/component-head/pipe-facts.d.ts +9 -0
  25. package/dist/app/component-head/pipe-facts.d.ts.map +1 -0
  26. package/dist/app/component-head/pipe-facts.js +15 -0
  27. package/dist/app/component-head/prism-component-head.component.d.ts +20 -22
  28. package/dist/app/component-head/prism-component-head.component.d.ts.map +1 -1
  29. package/dist/app/component-head/prism-component-head.component.js +85 -96
  30. package/dist/app/component-head/prism-head-gauge.component.d.ts +8 -12
  31. package/dist/app/component-head/prism-head-gauge.component.d.ts.map +1 -1
  32. package/dist/app/component-head/prism-head-gauge.component.js +51 -67
  33. package/dist/app/component-head/prism-head-info.component.d.ts +14 -2
  34. package/dist/app/component-head/prism-head-info.component.d.ts.map +1 -1
  35. package/dist/app/component-head/prism-head-info.component.js +84 -20
  36. package/dist/app/component-head/prism-stat.component.d.ts +4 -5
  37. package/dist/app/component-head/prism-stat.component.d.ts.map +1 -1
  38. package/dist/app/component-head/prism-stat.component.js +16 -12
  39. package/dist/app/component-head/service-facts.d.ts +8 -0
  40. package/dist/app/component-head/service-facts.d.ts.map +1 -0
  41. package/dist/app/component-head/service-facts.js +11 -0
  42. package/dist/app/controls/boolean-control.component.js +2 -2
  43. package/dist/app/controls/json-control.component.js +2 -2
  44. package/dist/app/controls/union-control.component.js +4 -3
  45. package/dist/app/directives/resize-value.d.ts +1 -1
  46. package/dist/app/directives/resize-value.js +1 -1
  47. package/dist/app/discovery-manifest.d.ts +2 -2
  48. package/dist/app/discovery-manifest.d.ts.map +1 -1
  49. package/dist/app/discovery-manifest.js +15 -3
  50. package/dist/app/header/header-brand.d.ts +25 -0
  51. package/dist/app/header/header-brand.d.ts.map +1 -0
  52. package/dist/app/header/header-brand.js +10 -0
  53. package/dist/app/header/prism-header.component.d.ts +2 -2
  54. package/dist/app/header/prism-header.component.d.ts.map +1 -1
  55. package/dist/app/header/prism-header.component.js +73 -57
  56. package/dist/app/icons/icon-registry.d.ts.map +1 -1
  57. package/dist/app/icons/icon-registry.js +4 -1
  58. package/dist/app/index.d.ts +12 -0
  59. package/dist/app/index.d.ts.map +1 -1
  60. package/dist/app/index.js +12 -1
  61. package/dist/app/layout-menu/prism-layout-menu.component.d.ts +3 -0
  62. package/dist/app/layout-menu/prism-layout-menu.component.d.ts.map +1 -1
  63. package/dist/app/layout-menu/prism-layout-menu.component.js +72 -58
  64. package/dist/app/overview/open-in-playground.d.ts +19 -0
  65. package/dist/app/overview/open-in-playground.d.ts.map +1 -0
  66. package/dist/app/overview/open-in-playground.js +25 -0
  67. package/dist/app/overview/overview-matrix.d.ts +85 -0
  68. package/dist/app/overview/overview-matrix.d.ts.map +1 -0
  69. package/dist/app/overview/overview-matrix.js +98 -0
  70. package/dist/app/overview/overview-visibility.d.ts +10 -2
  71. package/dist/app/overview/overview-visibility.d.ts.map +1 -1
  72. package/dist/app/overview/overview-visibility.js +14 -3
  73. package/dist/app/overview/prism-overview-cell.component.d.ts +27 -2
  74. package/dist/app/overview/prism-overview-cell.component.d.ts.map +1 -1
  75. package/dist/app/overview/prism-overview-cell.component.js +145 -28
  76. package/dist/app/overview/prism-overview-matrix.component.d.ts +29 -0
  77. package/dist/app/overview/prism-overview-matrix.component.d.ts.map +1 -0
  78. package/dist/app/overview/prism-overview-matrix.component.js +155 -0
  79. package/dist/app/overview/prism-overview.component.d.ts +4 -0
  80. package/dist/app/overview/prism-overview.component.d.ts.map +1 -1
  81. package/dist/app/overview/prism-overview.component.js +37 -14
  82. package/dist/app/page-renderer/prism-page-renderer.component.js +2 -2
  83. package/dist/app/panels/a11y/a11y-core.plugin.d.ts.map +1 -1
  84. package/dist/app/panels/a11y/a11y-core.plugin.js +0 -1
  85. package/dist/app/panels/a11y/a11y-header-badge.component.d.ts +1 -4
  86. package/dist/app/panels/a11y/a11y-header-badge.component.d.ts.map +1 -1
  87. package/dist/app/panels/a11y/a11y-header-badge.component.js +8 -19
  88. package/dist/app/panels/a11y/a11y-keyboard-overlay.component.js +2 -2
  89. package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts +1 -0
  90. package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts.map +1 -1
  91. package/dist/app/panels/a11y/a11y-overlay-host.component.js +4 -3
  92. package/dist/app/panels/a11y/a11y-panel.component.d.ts +4 -1
  93. package/dist/app/panels/a11y/a11y-panel.component.d.ts.map +1 -1
  94. package/dist/app/panels/a11y/a11y-panel.component.js +32 -54
  95. package/dist/app/panels/a11y/a11y-score.component.d.ts +8 -3
  96. package/dist/app/panels/a11y/a11y-score.component.d.ts.map +1 -1
  97. package/dist/app/panels/a11y/a11y-score.component.js +19 -35
  98. package/dist/app/panels/a11y/a11y-sr-overlay.component.js +2 -2
  99. package/dist/app/panels/a11y/a11y-sr.component.js +2 -2
  100. package/dist/app/panels/a11y/a11y-summary.d.ts.map +1 -1
  101. package/dist/app/panels/a11y/a11y-summary.js +8 -1
  102. package/dist/app/panels/a11y/a11y-tree.component.js +2 -2
  103. package/dist/app/panels/a11y/a11y-violations.component.d.ts +23 -2
  104. package/dist/app/panels/a11y/a11y-violations.component.d.ts.map +1 -1
  105. package/dist/app/panels/a11y/a11y-violations.component.js +104 -89
  106. package/dist/app/panels/a11y/severity.d.ts +9 -0
  107. package/dist/app/panels/a11y/severity.d.ts.map +1 -0
  108. package/dist/app/panels/a11y/severity.js +12 -0
  109. package/dist/app/panels/controls/controls-plugin.d.ts.map +1 -1
  110. package/dist/app/panels/controls/controls-plugin.js +1 -2
  111. package/dist/app/panels/controls/non-editable-input-types.d.ts +9 -1
  112. package/dist/app/panels/controls/non-editable-input-types.d.ts.map +1 -1
  113. package/dist/app/panels/controls/non-editable-input-types.js +18 -0
  114. package/dist/app/panels/controls/prism-controls-panel.component.d.ts +2 -1
  115. package/dist/app/panels/controls/prism-controls-panel.component.d.ts.map +1 -1
  116. package/dist/app/panels/controls/prism-controls-panel.component.js +77 -59
  117. package/dist/app/panels/events/events-plugin.d.ts.map +1 -1
  118. package/dist/app/panels/events/events-plugin.js +1 -2
  119. package/dist/app/panels/events/prism-events-panel.component.d.ts +2 -0
  120. package/dist/app/panels/events/prism-events-panel.component.d.ts.map +1 -1
  121. package/dist/app/panels/events/prism-events-panel.component.js +20 -7
  122. package/dist/app/panels/events/prism-json-node.utils.d.ts +6 -0
  123. package/dist/app/panels/events/prism-json-node.utils.d.ts.map +1 -1
  124. package/dist/app/panels/events/prism-json-node.utils.js +8 -0
  125. package/dist/app/panels/panel-host/addon-panels.d.ts +11 -0
  126. package/dist/app/panels/panel-host/addon-panels.d.ts.map +1 -0
  127. package/dist/app/panels/panel-host/addon-panels.js +12 -0
  128. package/dist/app/panels/panel-host/panel-badge.d.ts +22 -0
  129. package/dist/app/panels/panel-host/panel-badge.d.ts.map +1 -1
  130. package/dist/app/panels/panel-host/panel-badge.js +56 -11
  131. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts +4 -1
  132. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts.map +1 -1
  133. package/dist/app/panels/panel-host/prism-panel-host.component.js +36 -70
  134. package/dist/app/pseudo/pseudo-state-marker.d.ts +32 -10
  135. package/dist/app/pseudo/pseudo-state-marker.d.ts.map +1 -1
  136. package/dist/app/pseudo/pseudo-state-marker.js +83 -67
  137. package/dist/app/pseudo/pseudo-targets.d.ts +11 -0
  138. package/dist/app/pseudo/pseudo-targets.d.ts.map +1 -0
  139. package/dist/app/pseudo/pseudo-targets.js +46 -0
  140. package/dist/app/pseudo/state-fit.d.ts +28 -0
  141. package/dist/app/pseudo/state-fit.d.ts.map +1 -0
  142. package/dist/app/pseudo/state-fit.js +97 -0
  143. package/dist/app/renderer/composition.d.ts +20 -0
  144. package/dist/app/renderer/composition.d.ts.map +1 -0
  145. package/dist/app/renderer/composition.js +26 -0
  146. package/dist/app/renderer/input-bindings.d.ts +28 -0
  147. package/dist/app/renderer/input-bindings.d.ts.map +1 -0
  148. package/dist/app/renderer/input-bindings.js +42 -0
  149. package/dist/app/renderer/known-inputs.d.ts +8 -1
  150. package/dist/app/renderer/known-inputs.d.ts.map +1 -1
  151. package/dist/app/renderer/known-inputs.js +13 -5
  152. package/dist/app/renderer/prism-renderer.component.d.ts +18 -4
  153. package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
  154. package/dist/app/renderer/prism-renderer.component.js +78 -44
  155. package/dist/app/renderer/projectable-content.d.ts +8 -1
  156. package/dist/app/renderer/projectable-content.d.ts.map +1 -1
  157. package/dist/app/renderer/projectable-content.js +40 -29
  158. package/dist/app/renderer/rendered-key.d.ts +20 -6
  159. package/dist/app/renderer/rendered-key.d.ts.map +1 -1
  160. package/dist/app/renderer/rendered-key.js +25 -8
  161. package/dist/app/renderer/snippet-generator.d.ts +14 -2
  162. package/dist/app/renderer/snippet-generator.d.ts.map +1 -1
  163. package/dist/app/renderer/snippet-generator.js +138 -81
  164. package/dist/app/services/navigation-item.d.ts +10 -0
  165. package/dist/app/services/navigation-item.d.ts.map +1 -0
  166. package/dist/app/services/navigation-item.js +20 -0
  167. package/dist/app/services/navigation-item.types.d.ts +8 -0
  168. package/dist/app/services/navigation-item.types.d.ts.map +1 -1
  169. package/dist/app/services/prism-layout.service.d.ts +12 -0
  170. package/dist/app/services/prism-layout.service.d.ts.map +1 -1
  171. package/dist/app/services/prism-layout.service.js +17 -7
  172. package/dist/app/services/prism-manifest.service.d.ts +4 -0
  173. package/dist/app/services/prism-manifest.service.d.ts.map +1 -1
  174. package/dist/app/services/prism-manifest.service.js +4 -0
  175. package/dist/app/services/prism-navigation.service.d.ts +12 -0
  176. package/dist/app/services/prism-navigation.service.d.ts.map +1 -1
  177. package/dist/app/services/prism-navigation.service.js +85 -19
  178. package/dist/app/services/prism-panel.service.d.ts +7 -3
  179. package/dist/app/services/prism-panel.service.d.ts.map +1 -1
  180. package/dist/app/services/prism-panel.service.js +13 -4
  181. package/dist/app/services/prism-pseudo-state.service.d.ts +59 -14
  182. package/dist/app/services/prism-pseudo-state.service.d.ts.map +1 -1
  183. package/dist/app/services/prism-pseudo-state.service.js +86 -29
  184. package/dist/app/services/prism-renderer.service.d.ts +23 -0
  185. package/dist/app/services/prism-renderer.service.d.ts.map +1 -1
  186. package/dist/app/services/prism-renderer.service.js +77 -8
  187. package/dist/app/services/prism-search.service.d.ts +4 -0
  188. package/dist/app/services/prism-search.service.d.ts.map +1 -1
  189. package/dist/app/services/prism-search.service.js +29 -6
  190. package/dist/app/services/prism-theme.service.d.ts +11 -3
  191. package/dist/app/services/prism-theme.service.d.ts.map +1 -1
  192. package/dist/app/services/prism-theme.service.js +27 -19
  193. package/dist/app/services/prism-url-state.service.d.ts.map +1 -1
  194. package/dist/app/services/prism-url-state.service.js +81 -12
  195. package/dist/app/shared/badge.types.d.ts +7 -0
  196. package/dist/app/shared/badge.types.d.ts.map +1 -0
  197. package/dist/app/shared/badge.types.js +9 -0
  198. package/dist/app/shared/brand-mark.d.ts +35 -0
  199. package/dist/app/shared/brand-mark.d.ts.map +1 -0
  200. package/dist/app/shared/brand-mark.js +52 -0
  201. package/dist/app/shared/metric-bar.d.ts +6 -0
  202. package/dist/app/shared/metric-bar.d.ts.map +1 -0
  203. package/dist/app/shared/metric-bar.js +7 -0
  204. package/dist/app/shared/prism-badge.component.d.ts +21 -0
  205. package/dist/app/shared/prism-badge.component.d.ts.map +1 -0
  206. package/dist/app/shared/prism-badge.component.js +68 -0
  207. package/dist/app/shared/prism-button.component.d.ts +12 -0
  208. package/dist/app/shared/prism-button.component.d.ts.map +1 -0
  209. package/dist/app/shared/prism-button.component.js +28 -0
  210. package/dist/app/shared/prism-icon-button.component.d.ts +17 -0
  211. package/dist/app/shared/prism-icon-button.component.d.ts.map +1 -0
  212. package/dist/app/shared/prism-icon-button.component.js +37 -0
  213. package/dist/app/shared/prism-list-row.component.d.ts +17 -0
  214. package/dist/app/shared/prism-list-row.component.d.ts.map +1 -0
  215. package/dist/app/shared/prism-list-row.component.js +57 -0
  216. package/dist/app/shared/prism-logo.component.d.ts +24 -0
  217. package/dist/app/shared/prism-logo.component.d.ts.map +1 -0
  218. package/dist/app/shared/prism-logo.component.js +77 -0
  219. package/dist/app/shared/prism-metric-badge.component.d.ts +9 -4
  220. package/dist/app/shared/prism-metric-badge.component.d.ts.map +1 -1
  221. package/dist/app/shared/prism-metric-badge.component.js +33 -12
  222. package/dist/app/shared/prism-metric-card.component.d.ts +30 -0
  223. package/dist/app/shared/prism-metric-card.component.d.ts.map +1 -0
  224. package/dist/app/shared/prism-metric-card.component.js +111 -0
  225. package/dist/app/shared/prism-panel-toolbar.component.d.ts +13 -0
  226. package/dist/app/shared/prism-panel-toolbar.component.d.ts.map +1 -0
  227. package/dist/app/shared/prism-panel-toolbar.component.js +28 -0
  228. package/dist/app/shared/prism-segmented.component.d.ts +25 -0
  229. package/dist/app/shared/prism-segmented.component.d.ts.map +1 -0
  230. package/dist/app/shared/prism-segmented.component.js +77 -0
  231. package/dist/app/shared/prism-tabs.component.d.ts +44 -0
  232. package/dist/app/shared/prism-tabs.component.d.ts.map +1 -0
  233. package/dist/app/shared/prism-tabs.component.js +134 -0
  234. package/dist/app/shared/roving-focus.d.ts +13 -0
  235. package/dist/app/shared/roving-focus.d.ts.map +1 -0
  236. package/dist/app/shared/roving-focus.js +34 -0
  237. package/dist/app/shell/prism-shell.component.d.ts +13 -0
  238. package/dist/app/shell/prism-shell.component.d.ts.map +1 -1
  239. package/dist/app/shell/prism-shell.component.js +57 -28
  240. package/dist/app/shell/should-select-first.d.ts +17 -0
  241. package/dist/app/shell/should-select-first.d.ts.map +1 -0
  242. package/dist/app/shell/should-select-first.js +13 -0
  243. package/dist/app/sidebar/navigation-decorations.d.ts +23 -1
  244. package/dist/app/sidebar/navigation-decorations.d.ts.map +1 -1
  245. package/dist/app/sidebar/navigation-decorations.js +33 -2
  246. package/dist/app/sidebar/prism-sidebar.component.d.ts +5 -15
  247. package/dist/app/sidebar/prism-sidebar.component.d.ts.map +1 -1
  248. package/dist/app/sidebar/prism-sidebar.component.js +89 -77
  249. package/dist/app/theme/deprecated-tokens.d.ts +15 -0
  250. package/dist/app/theme/deprecated-tokens.d.ts.map +1 -0
  251. package/dist/app/theme/deprecated-tokens.js +22 -0
  252. package/dist/app/theme/favicon.d.ts +3 -0
  253. package/dist/app/theme/favicon.d.ts.map +1 -0
  254. package/dist/app/theme/favicon.js +3 -0
  255. package/dist/app/theme/prism-default-theme.d.ts.map +1 -1
  256. package/dist/app/theme/prism-default-theme.js +122 -66
  257. package/dist/app/theme/resolve-theme-tokens.d.ts +29 -0
  258. package/dist/app/theme/resolve-theme-tokens.d.ts.map +1 -0
  259. package/dist/app/theme/resolve-theme-tokens.js +43 -0
  260. package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts +4 -7
  261. package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts.map +1 -1
  262. package/dist/app/variant-ribbon/prism-variant-ribbon.component.js +31 -69
  263. package/dist/app/view-tab-bar/next-view-id.d.ts +7 -1
  264. package/dist/app/view-tab-bar/next-view-id.d.ts.map +1 -1
  265. package/dist/app/view-tab-bar/next-view-id.js +9 -1
  266. package/dist/app/view-tab-bar/panel-inputs.d.ts +28 -0
  267. package/dist/app/view-tab-bar/panel-inputs.d.ts.map +1 -0
  268. package/dist/app/view-tab-bar/panel-inputs.js +41 -0
  269. package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts +2 -3
  270. package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts.map +1 -1
  271. package/dist/app/view-tab-bar/prism-view-panel-host.component.js +9 -9
  272. package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts +6 -0
  273. package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts.map +1 -1
  274. package/dist/app/view-tab-bar/prism-view-tab-bar.component.js +22 -29
  275. package/dist/builder/config-loader/deprecated-options.d.ts +9 -0
  276. package/dist/builder/config-loader/deprecated-options.d.ts.map +1 -0
  277. package/dist/builder/config-loader/deprecated-options.js +34 -0
  278. package/dist/builder/manifest/composition-wrapper.generator.d.ts +14 -0
  279. package/dist/builder/manifest/composition-wrapper.generator.d.ts.map +1 -0
  280. package/dist/builder/manifest/composition-wrapper.generator.js +66 -0
  281. package/dist/builder/manifest/host-parser.d.ts +2 -0
  282. package/dist/builder/manifest/host-parser.d.ts.map +1 -1
  283. package/dist/builder/manifest/host-parser.js +9 -4
  284. package/dist/builder/manifest/manifest-imports.d.ts +34 -0
  285. package/dist/builder/manifest/manifest-imports.d.ts.map +1 -0
  286. package/dist/builder/manifest/manifest-imports.js +91 -0
  287. package/dist/builder/manifest/runtime-manifest.generator.d.ts +13 -0
  288. package/dist/builder/manifest/runtime-manifest.generator.d.ts.map +1 -1
  289. package/dist/builder/manifest/runtime-manifest.generator.js +137 -65
  290. package/dist/builder/manifest/selector-element.d.ts +16 -0
  291. package/dist/builder/manifest/selector-element.d.ts.map +1 -0
  292. package/dist/builder/manifest/selector-element.js +46 -0
  293. package/dist/builder/manifest/template-literal.d.ts +3 -0
  294. package/dist/builder/manifest/template-literal.d.ts.map +1 -0
  295. package/dist/builder/manifest/template-literal.js +4 -0
  296. package/dist/builder/plugin-runner/plugin-runner.d.ts.map +1 -1
  297. package/dist/builder/plugin-runner/plugin-runner.js +29 -26
  298. package/dist/builder/scanner/api/angular-decorators.d.ts +84 -0
  299. package/dist/builder/scanner/api/angular-decorators.d.ts.map +1 -0
  300. package/dist/builder/scanner/api/angular-decorators.js +157 -0
  301. package/dist/builder/scanner/api/component-api.extractor.d.ts +13 -0
  302. package/dist/builder/scanner/api/component-api.extractor.d.ts.map +1 -0
  303. package/dist/builder/scanner/api/component-api.extractor.js +104 -0
  304. package/dist/builder/scanner/api/doc-tags.d.ts +13 -0
  305. package/dist/builder/scanner/api/doc-tags.d.ts.map +1 -0
  306. package/dist/builder/scanner/api/doc-tags.js +101 -0
  307. package/dist/builder/scanner/api/export-index.d.ts +18 -0
  308. package/dist/builder/scanner/api/export-index.d.ts.map +1 -0
  309. package/dist/builder/scanner/api/export-index.js +22 -0
  310. package/dist/builder/scanner/api/member.extractor.d.ts +90 -0
  311. package/dist/builder/scanner/api/member.extractor.d.ts.map +1 -0
  312. package/dist/builder/scanner/api/member.extractor.js +270 -0
  313. package/dist/builder/scanner/api/pipe-api.extractor.d.ts +12 -0
  314. package/dist/builder/scanner/api/pipe-api.extractor.d.ts.map +1 -0
  315. package/dist/builder/scanner/api/pipe-api.extractor.js +52 -0
  316. package/dist/builder/scanner/api/service-api.extractor.d.ts +14 -0
  317. package/dist/builder/scanner/api/service-api.extractor.d.ts.map +1 -0
  318. package/dist/builder/scanner/api/service-api.extractor.js +119 -0
  319. package/dist/builder/scanner/api/setup.reader.d.ts +26 -0
  320. package/dist/builder/scanner/api/setup.reader.d.ts.map +1 -0
  321. package/dist/builder/scanner/api/setup.reader.js +89 -0
  322. package/dist/builder/scanner/api/type-collector.d.ts +24 -0
  323. package/dist/builder/scanner/api/type-collector.d.ts.map +1 -0
  324. package/dist/builder/scanner/api/type-collector.js +211 -0
  325. package/dist/builder/scanner/ast-utils.d.ts +8 -0
  326. package/dist/builder/scanner/ast-utils.d.ts.map +1 -1
  327. package/dist/builder/scanner/ast-utils.js +37 -1
  328. package/dist/builder/scanner/class-hierarchy.d.ts +5 -3
  329. package/dist/builder/scanner/class-hierarchy.d.ts.map +1 -1
  330. package/dist/builder/scanner/class-hierarchy.js +12 -6
  331. package/dist/builder/scanner/component.scanner.d.ts +60 -6
  332. package/dist/builder/scanner/component.scanner.d.ts.map +1 -1
  333. package/dist/builder/scanner/component.scanner.js +229 -58
  334. package/dist/builder/scanner/composition/compose-template.d.ts +36 -0
  335. package/dist/builder/scanner/composition/compose-template.d.ts.map +1 -0
  336. package/dist/builder/scanner/composition/compose-template.js +187 -0
  337. package/dist/builder/scanner/composition/declarables.d.ts +54 -0
  338. package/dist/builder/scanner/composition/declarables.d.ts.map +1 -0
  339. package/dist/builder/scanner/composition/declarables.js +182 -0
  340. package/dist/builder/scanner/composition/match-declarables.d.ts +43 -0
  341. package/dist/builder/scanner/composition/match-declarables.d.ts.map +1 -0
  342. package/dist/builder/scanner/composition/match-declarables.js +131 -0
  343. package/dist/builder/scanner/composition/read-composition.d.ts +77 -0
  344. package/dist/builder/scanner/composition/read-composition.d.ts.map +1 -0
  345. package/dist/builder/scanner/composition/read-composition.js +302 -0
  346. package/dist/builder/scanner/composition/template-elements.d.ts +12 -0
  347. package/dist/builder/scanner/composition/template-elements.d.ts.map +1 -0
  348. package/dist/builder/scanner/composition/template-elements.js +41 -0
  349. package/dist/builder/scanner/entry-point-discovery.d.ts +5 -0
  350. package/dist/builder/scanner/entry-point-discovery.d.ts.map +1 -1
  351. package/dist/builder/scanner/entry-point-discovery.js +14 -0
  352. package/dist/builder/scanner/entry-point.scanner.d.ts +3 -1
  353. package/dist/builder/scanner/entry-point.scanner.d.ts.map +1 -1
  354. package/dist/builder/scanner/entry-point.scanner.js +7 -6
  355. package/dist/builder/scanner/index.d.ts +4 -0
  356. package/dist/builder/scanner/index.d.ts.map +1 -1
  357. package/dist/builder/scanner/index.js +2 -0
  358. package/dist/builder/scanner/input.extractor.d.ts +31 -2
  359. package/dist/builder/scanner/input.extractor.d.ts.map +1 -1
  360. package/dist/builder/scanner/input.extractor.js +73 -17
  361. package/dist/builder/scanner/pipe.scanner.d.ts +29 -0
  362. package/dist/builder/scanner/pipe.scanner.d.ts.map +1 -0
  363. package/dist/builder/scanner/pipe.scanner.js +65 -0
  364. package/dist/builder/scanner/pseudo-states.d.ts +1 -0
  365. package/dist/builder/scanner/pseudo-states.d.ts.map +1 -1
  366. package/dist/builder/scanner/pseudo-states.js +1 -1
  367. package/dist/builder/scanner/scanner.d.ts +27 -3
  368. package/dist/builder/scanner/scanner.d.ts.map +1 -1
  369. package/dist/builder/scanner/scanner.js +68 -24
  370. package/dist/builder/scanner/service/angular-decorators.d.ts +80 -0
  371. package/dist/builder/scanner/service/angular-decorators.d.ts.map +1 -0
  372. package/dist/builder/scanner/service/angular-decorators.js +154 -0
  373. package/dist/builder/scanner/service/doc-tags.d.ts +13 -0
  374. package/dist/builder/scanner/service/doc-tags.d.ts.map +1 -0
  375. package/dist/builder/scanner/service/doc-tags.js +97 -0
  376. package/dist/builder/scanner/service/export-index.d.ts +18 -0
  377. package/dist/builder/scanner/service/export-index.d.ts.map +1 -0
  378. package/dist/builder/scanner/service/export-index.js +22 -0
  379. package/dist/builder/scanner/service/member.extractor.d.ts +65 -0
  380. package/dist/builder/scanner/service/member.extractor.d.ts.map +1 -0
  381. package/dist/builder/scanner/service/member.extractor.js +216 -0
  382. package/dist/builder/scanner/service/pipe-api.extractor.d.ts +12 -0
  383. package/dist/builder/scanner/service/pipe-api.extractor.d.ts.map +1 -0
  384. package/dist/builder/scanner/service/pipe-api.extractor.js +72 -0
  385. package/dist/builder/scanner/service/service-api.extractor.d.ts +14 -0
  386. package/dist/builder/scanner/service/service-api.extractor.d.ts.map +1 -0
  387. package/dist/builder/scanner/service/service-api.extractor.js +119 -0
  388. package/dist/builder/scanner/service/setup.reader.d.ts +26 -0
  389. package/dist/builder/scanner/service/setup.reader.d.ts.map +1 -0
  390. package/dist/builder/scanner/service/setup.reader.js +89 -0
  391. package/dist/builder/scanner/service/type-collector.d.ts +23 -0
  392. package/dist/builder/scanner/service/type-collector.d.ts.map +1 -0
  393. package/dist/builder/scanner/service/type-collector.js +210 -0
  394. package/dist/builder/scanner/service.scanner.d.ts +26 -0
  395. package/dist/builder/scanner/service.scanner.d.ts.map +1 -0
  396. package/dist/builder/scanner/service.scanner.js +61 -0
  397. package/dist/builder/scanner/showcase-diagnostics.d.ts +60 -1
  398. package/dist/builder/scanner/showcase-diagnostics.d.ts.map +1 -1
  399. package/dist/builder/scanner/showcase-diagnostics.js +123 -10
  400. package/dist/builder/scanner/showcase-states.d.ts +17 -0
  401. package/dist/builder/scanner/showcase-states.d.ts.map +1 -0
  402. package/dist/builder/scanner/showcase-states.js +58 -0
  403. package/dist/builder/scanner/source-file-cache.d.ts +26 -0
  404. package/dist/builder/scanner/source-file-cache.d.ts.map +1 -0
  405. package/dist/builder/scanner/source-file-cache.js +60 -0
  406. package/dist/builder/shared/prism-pipeline.d.ts +6 -0
  407. package/dist/builder/shared/prism-pipeline.d.ts.map +1 -1
  408. package/dist/builder/shared/prism-pipeline.js +71 -18
  409. package/dist/decorator/index.d.ts +1 -1
  410. package/dist/decorator/index.d.ts.map +1 -1
  411. package/dist/decorator/showcase.types.d.ts +102 -9
  412. package/dist/decorator/showcase.types.d.ts.map +1 -1
  413. package/dist/plugin/index.d.ts +6 -1
  414. package/dist/plugin/index.d.ts.map +1 -1
  415. package/dist/plugin/index.js +4 -0
  416. package/dist/plugin/pipe.types.d.ts +36 -0
  417. package/dist/plugin/pipe.types.d.ts.map +1 -0
  418. package/dist/plugin/pipe.types.js +1 -0
  419. package/dist/plugin/plugin.types.d.ts +184 -8
  420. package/dist/plugin/plugin.types.d.ts.map +1 -1
  421. package/dist/plugin/service.types.d.ts +124 -0
  422. package/dist/plugin/service.types.d.ts.map +1 -0
  423. package/dist/plugin/service.types.js +1 -0
  424. package/dist/plugin/status.d.ts +27 -0
  425. package/dist/plugin/status.d.ts.map +1 -0
  426. package/dist/plugin/status.js +26 -0
  427. package/dist/shared/composition.d.ts +30 -0
  428. package/dist/shared/composition.d.ts.map +1 -0
  429. package/dist/shared/composition.js +29 -0
  430. package/dist/shared/pseudo-state.type.d.ts +2 -1
  431. package/dist/shared/pseudo-state.type.d.ts.map +1 -1
  432. package/dist/shared/void-elements.d.ts +3 -0
  433. package/dist/shared/void-elements.d.ts.map +1 -0
  434. package/dist/shared/void-elements.js +2 -0
  435. package/package.json +1 -1
  436. package/src/builder/build/schema.json +6 -6
  437. package/src/builder/serve/schema.json +6 -6
@@ -16,10 +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 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}"] });
19
+ } }, styles: ["\n\n\n.ctl-toggle[_ngcontent-%COMP%] {\n position: relative;\n box-sizing: border-box;\n flex-shrink: 0;\n width: 34px;\n height: 18px;\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 1.5px solid var(--%NS%prism-border-strong);\n border-radius: 9px;\n transition:\n background var(--%NS%dur-fast),\n border-color var(--%NS%dur-fast);\n}\n\n.ctl-toggle[_ngcontent-%COMP%]::after {\n position: absolute;\n top: 2px;\n left: 2px;\n width: 11px;\n height: 11px;\n content: '';\n background: var(--%NS%prism-border-strong);\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-toggle-on);\n border-color: transparent;\n}\n\n.ctl-toggle.on[_ngcontent-%COMP%]::after {\n background: var(--%NS%prism-on-primary);\n transform: translateX(16px);\n}\n\n.ctl-toggle[_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--%NS%prism-primary);\n outline-offset: 2px;\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: "<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"] }]
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: ["/* Off: a contour and a knob in the control-contour colour, 3:1 on every\n surface, instead of a tint that disappears. On: the brand-blue track with a\n white knob. */\n.ctl-toggle {\n position: relative;\n box-sizing: border-box;\n flex-shrink: 0;\n width: 34px;\n height: 18px;\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 1.5px solid var(--prism-border-strong);\n border-radius: 9px;\n transition:\n background var(--dur-fast),\n border-color var(--dur-fast);\n}\n\n.ctl-toggle::after {\n position: absolute;\n top: 2px;\n left: 2px;\n width: 11px;\n height: 11px;\n content: '';\n background: var(--prism-border-strong);\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-toggle-on);\n border-color: transparent;\n}\n\n.ctl-toggle.on::after {\n background: var(--prism-on-primary);\n transform: translateX(16px);\n}\n\n.ctl-toggle:focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 2px;\n}\n"] }]
24
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"] }] }); })();
25
25
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(BooleanControlComponent, { className: "BooleanControlComponent", filePath: "app/controls/boolean-control.component.ts", lineNumber: 10 }); })();
@@ -101,10 +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%] {\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}"] });
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 scrollbar-gutter: stable;\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 scrollbar-color: var(--%NS%prism-border-strong) transparent;\n scrollbar-width: thin;\n}\n\n\n\n\n.json-pre[_ngcontent-%COMP%] {\n min-height: 56px;\n max-height: calc(10lh + 8px);\n overflow: hidden;\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-muted);\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: color-mix(in srgb, var(--%NS%prism-primary) 30%, transparent);\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: "<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"] }]
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 scrollbar-gutter: stable;\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 scrollbar-color: var(--prism-border-strong) transparent;\n scrollbar-width: thin;\n}\n\n/* The pre sizes the editor up to ten lines; past that the textarea scrolls\n and syncScroll() moves the pre along. Both reserve the same scrollbar\n gutter, so their text wraps at the same width. */\n.json-pre {\n min-height: 56px;\n max-height: calc(10lh + 8px);\n overflow: hidden;\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-muted);\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: color-mix(in srgb, var(--prism-primary) 30%, transparent);\n}\n\n.json-error {\n display: block;\n margin-top: 2px;\n font-size: 11px;\n color: var(--prism-danger);\n}\n"] }]
109
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 }] }] }); })();
110
110
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(JsonControlComponent, { className: "JsonControlComponent", filePath: "app/controls/json-control.component.ts", lineNumber: 38 }); })();
@@ -10,6 +10,7 @@ function UnionControlComponent_For_2_Template(rf, ctx) { if (rf & 1) {
10
10
  const option_r2 = ctx.$implicit;
11
11
  const ctx_r2 = i0.ɵɵnextContext();
12
12
  i0.ɵɵclassProp("ctl-pill--active", option_r2 === ctx_r2.value());
13
+ i0.ɵɵattribute("aria-pressed", option_r2 === ctx_r2.value());
13
14
  i0.ɵɵadvance();
14
15
  i0.ɵɵtextInterpolate1(" ", option_r2, " ");
15
16
  } }
@@ -26,15 +27,15 @@ export class UnionControlComponent {
26
27
  static ɵfac = function UnionControlComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || UnionControlComponent)(); };
27
28
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UnionControlComponent, selectors: [["prism-union-control"]], inputs: { value: [1, "value"], label: [1, "label"], typeName: [1, "typeName"], options: [1, "options"] }, outputs: { valueChange: "valueChange" }, decls: 3, vars: 0, consts: [["role", "group", 1, "ctl-pills"], [1, "ctl-pill", 3, "ctl-pill--active"], [1, "ctl-pill", 3, "click"]], template: function UnionControlComponent_Template(rf, ctx) { if (rf & 1) {
28
29
  i0.ɵɵdomElementStart(0, "div", 0);
29
- i0.ɵɵrepeaterCreate(1, UnionControlComponent_For_2_Template, 2, 3, "button", 1, i0.ɵɵrepeaterTrackByIdentity);
30
+ i0.ɵɵrepeaterCreate(1, UnionControlComponent_For_2_Template, 2, 4, "button", 1, i0.ɵɵrepeaterTrackByIdentity);
30
31
  i0.ɵɵdomElementEnd();
31
32
  } if (rf & 2) {
32
33
  i0.ɵɵadvance();
33
34
  i0.ɵɵrepeater(ctx.options());
34
- } }, styles: [".ctl-pills[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.ctl-pill[_ngcontent-%COMP%] {\n height: 26px;\n padding: 0 10px;\n font-family: var(--%NS%font-sans);\n font-size: var(--%NS%fs-sm);\n font-weight: 500;\n color: var(--%NS%prism-text-muted);\n cursor: pointer;\n background: transparent;\n border: 1px solid var(--%NS%prism-border);\n border-radius: 4px;\n transition: all var(--%NS%dur-fast);\n}\n\n.ctl-pill[_ngcontent-%COMP%]:hover {\n color: var(--%NS%prism-text);\n border-color: var(--%NS%prism-border-strong);\n}\n\n.ctl-pill--active[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--%NS%prism-primary);\n background: color-mix(in srgb, var(--%NS%prism-primary) 15%, transparent);\n border-color: color-mix(in srgb, var(--%NS%prism-primary) 40%, transparent);\n}"] });
35
+ } }, styles: [".ctl-pills[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.ctl-pill[_ngcontent-%COMP%] {\n height: 26px;\n padding: 0 10px;\n font-family: var(--%NS%font-sans);\n font-size: var(--%NS%fs-sm);\n font-weight: 500;\n color: var(--%NS%prism-text-2);\n cursor: pointer;\n background: transparent;\n border: 1px solid var(--%NS%prism-border-strong);\n border-radius: 4px;\n transition: all var(--%NS%dur-fast);\n}\n\n.ctl-pill[_ngcontent-%COMP%]:hover {\n color: var(--%NS%prism-text);\n background: var(--%NS%prism-input-bg);\n}\n\n.ctl-pill--active[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--%NS%prism-primary);\n background: var(--%NS%prism-primary-bg);\n border-color: color-mix(in srgb, var(--%NS%prism-primary) 55%, transparent);\n}"] });
35
36
  }
36
37
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UnionControlComponent, [{
37
38
  type: Component,
38
- args: [{ selector: 'prism-union-control', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"ctl-pills\"\n role=\"group\">\n @for (option of options(); track option) {\n <button\n class=\"ctl-pill\"\n [class.ctl-pill--active]=\"option === value()\"\n (click)=\"valueChange.emit(option)\">\n {{ option }}\n </button>\n }\n</div>\n", styles: [".ctl-pills {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.ctl-pill {\n height: 26px;\n padding: 0 10px;\n font-family: var(--font-sans);\n font-size: var(--fs-sm);\n font-weight: 500;\n color: var(--prism-text-muted);\n cursor: pointer;\n background: transparent;\n border: 1px solid var(--prism-border);\n border-radius: 4px;\n transition: all var(--dur-fast);\n}\n\n.ctl-pill:hover {\n color: var(--prism-text);\n border-color: var(--prism-border-strong);\n}\n\n.ctl-pill--active {\n font-weight: 600;\n color: var(--prism-primary);\n background: color-mix(in srgb, var(--prism-primary) 15%, transparent);\n border-color: color-mix(in srgb, var(--prism-primary) 40%, transparent);\n}\n"] }]
39
+ args: [{ selector: 'prism-union-control', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"ctl-pills\"\n role=\"group\">\n @for (option of options(); track option) {\n <button\n class=\"ctl-pill\"\n [class.ctl-pill--active]=\"option === value()\"\n [attr.aria-pressed]=\"option === value()\"\n (click)=\"valueChange.emit(option)\">\n {{ option }}\n </button>\n }\n</div>\n", styles: [".ctl-pills {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.ctl-pill {\n height: 26px;\n padding: 0 10px;\n font-family: var(--font-sans);\n font-size: var(--fs-sm);\n font-weight: 500;\n color: var(--prism-text-2);\n cursor: pointer;\n background: transparent;\n border: 1px solid var(--prism-border-strong);\n border-radius: 4px;\n transition: all var(--dur-fast);\n}\n\n.ctl-pill:hover {\n color: var(--prism-text);\n background: var(--prism-input-bg);\n}\n\n.ctl-pill--active {\n font-weight: 600;\n color: var(--prism-primary);\n background: var(--prism-primary-bg);\n border-color: color-mix(in srgb, var(--prism-primary) 55%, transparent);\n}\n"] }]
39
40
  }], 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 }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] }); })();
40
41
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UnionControlComponent, { className: "UnionControlComponent", filePath: "app/controls/union-control.component.ts", lineNumber: 10 }); })();
@@ -5,7 +5,7 @@
5
5
  * rendered inside a host component to be exercised, and this package's specs
6
6
  * run under jsdom against SWC-compiled sources, where JIT cannot instantiate
7
7
  * one. Extracted, the maths is ordinary and testable. It is the same reason
8
- * `known-inputs.ts` and `overlay-resolver.ts` sit beside their components.
8
+ * `input-bindings.ts` and `overlay-resolver.ts` sit beside their components.
9
9
  */
10
10
  /**
11
11
  * Where a drag lands.
@@ -5,7 +5,7 @@
5
5
  * rendered inside a host component to be exercised, and this package's specs
6
6
  * run under jsdom against SWC-compiled sources, where JIT cannot instantiate
7
7
  * one. Extracted, the maths is ordinary and testable. It is the same reason
8
- * `known-inputs.ts` and `overlay-resolver.ts` sit beside their components.
8
+ * `input-bindings.ts` and `overlay-resolver.ts` sit beside their components.
9
9
  */
10
10
  /**
11
11
  * Where a drag lands.
@@ -6,8 +6,8 @@ export declare function serializableMeta(meta: Record<string, unknown> | undefin
6
6
  *
7
7
  * It is not the runtime manifest: no Angular class references, no
8
8
  * providers, no scanned input/output metadata. It carries what an external tool
9
- * needs to enumerate and address variants, plus the `@Showcase` metadata that
10
- * lets a tool decide how to treat one.
9
+ * needs to enumerate and address variants and component-level states, plus the
10
+ * `@Showcase` metadata that lets a tool decide how to treat one.
11
11
  */
12
12
  export declare function buildDiscoveryManifest(manifest: RuntimeManifest): DiscoveryManifest;
13
13
  //# sourceMappingURL=discovery-manifest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"discovery-manifest.d.ts","sourceRoot":"","sources":["../../src/app/discovery-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,iBAAiB,EAAoB,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAyD1H,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAM/G;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,eAAe,GAAG,iBAAiB,CAyCnF"}
1
+ {"version":3,"file":"discovery-manifest.d.ts","sourceRoot":"","sources":["../../src/app/discovery-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,iBAAiB,EAAoC,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAyD1I,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAM/G;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,eAAe,GAAG,iBAAiB,CAoDnF"}
@@ -1,5 +1,5 @@
1
1
  import { resolveVariantBg } from '../shared/variant-bg.js';
2
- import { forcesAnyState } from './pseudo/pseudo-state-marker.js';
2
+ import { forcesAnyState } from './pseudo/pseudo-targets.js';
3
3
  /**
4
4
  * External tooling reads `__PRISM_MANIFEST__` through a structured-clone bridge
5
5
  * (Playwright's `page.evaluate()`, `postMessage`, devtools). `ShowcaseConfig.meta`
@@ -60,8 +60,8 @@ export function serializableMeta(meta) {
60
60
  *
61
61
  * It is not the runtime manifest: no Angular class references, no
62
62
  * providers, no scanned input/output metadata. It carries what an external tool
63
- * needs to enumerate and address variants, plus the `@Showcase` metadata that
64
- * lets a tool decide how to treat one.
63
+ * needs to enumerate and address variants and component-level states, plus the
64
+ * `@Showcase` metadata that lets a tool decide how to treat one.
65
65
  */
66
66
  export function buildDiscoveryManifest(manifest) {
67
67
  return {
@@ -82,6 +82,8 @@ export function buildDiscoveryManifest(manifest) {
82
82
  discovered.meta = meta;
83
83
  if (pseudo)
84
84
  discovered.pseudo = pseudo;
85
+ if (variant.states === false)
86
+ discovered.states = false;
85
87
  return discovered;
86
88
  })
87
89
  : [
@@ -91,12 +93,22 @@ export function buildDiscoveryManifest(manifest) {
91
93
  bg: resolveVariantBg(showcaseConfig, 0)
92
94
  }
93
95
  ];
96
+ // Every slot is listed, the empty ones too: the scanner keeps a state it
97
+ // cannot use as `{ name, pseudo: {} }` so the position in the array stays
98
+ // the `?state=` value of the states behind it.
99
+ const states = (showcaseConfig.states ?? []).map((state, index) => ({
100
+ name: state.name,
101
+ index,
102
+ pseudo: (serializableMeta(state.pseudo) ?? {})
103
+ }));
94
104
  const meta = serializableMeta(showcaseConfig.meta);
95
105
  const discovered = {
96
106
  className,
97
107
  title: showcaseConfig.title,
98
108
  variants
99
109
  };
110
+ if (states.length)
111
+ discovered.states = states;
100
112
  if (meta)
101
113
  discovered.meta = meta;
102
114
  return discovered;
@@ -0,0 +1,25 @@
1
+ import type { NgPrismConfig } from '../../plugin/plugin.types.js';
2
+ /**
3
+ * What the header's brand slot shows.
4
+ *
5
+ * `wordmark` is ng-prism's own: the symbol (or the configured logo) and
6
+ * "ng-prism" in the brand gradient. `title` is a consuming app's name, set in
7
+ * plain text: the gradient belongs to the ng-prism wordmark only, and ng-prism
8
+ * stays visible through "Powered by ng-prism" in the sidebar footer.
9
+ */
10
+ export type HeaderBrand = {
11
+ kind: 'wordmark';
12
+ logoUrl: string | null;
13
+ } | {
14
+ kind: 'title';
15
+ title: string;
16
+ logoUrl: string | null;
17
+ };
18
+ /**
19
+ * The brand slot for a config.
20
+ *
21
+ * The logo for dark backgrounds is preferred in both themes, because the header
22
+ * is a navy band in both since 22.7.
23
+ */
24
+ export declare function headerBrand(config: Pick<NgPrismConfig, 'title' | 'logo'>): HeaderBrand;
25
+ //# sourceMappingURL=header-brand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-brand.d.ts","sourceRoot":"","sources":["../../../src/app/header/header-brand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAElI;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,MAAM,CAAC,GAAG,WAAW,CAItF"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The brand slot for a config.
3
+ *
4
+ * The logo for dark backgrounds is preferred in both themes, because the header
5
+ * is a navy band in both since 22.7.
6
+ */
7
+ export function headerBrand(config) {
8
+ const logoUrl = config.logo?.dark ?? config.logo?.light ?? null;
9
+ return config.title ? { kind: 'title', title: config.title, logoUrl } : { kind: 'wordmark', logoUrl };
10
+ }
@@ -8,8 +8,8 @@ export declare class PrismHeaderComponent {
8
8
  protected readonly themeService: PrismThemeService;
9
9
  protected readonly widgetsStart: import("@angular/core").Signal<import("../../plugin/plugin.types.js").HeaderWidgetDefinition[]>;
10
10
  protected readonly widgetsEnd: import("@angular/core").Signal<import("../../plugin/plugin.types.js").HeaderWidgetDefinition[]>;
11
- protected readonly logoUrl: import("@angular/core").Signal<string | null>;
12
- protected readonly title: import("@angular/core").Signal<string>;
11
+ protected readonly brand: import("@angular/core").Signal<import("./header-brand.js").HeaderBrand>;
12
+ protected readonly brandTitle: import("@angular/core").Signal<string | null>;
13
13
  protected readonly subtitle: import("@angular/core").Signal<string | null>;
14
14
  protected readonly buildInfoLabel: import("@angular/core").Signal<string | null>;
15
15
  protected onGlobalKey(e: KeyboardEvent): void;
@@ -1 +1 @@
1
- {"version":3,"file":"prism-header.component.d.ts","sourceRoot":"","sources":["../../../src/app/header/prism-header.component.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;;AAIvE,qBAQa,oBAAoB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAC9D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAC5D,SAAS,CAAC,QAAQ,CAAC,aAAa,qBAA8B;IAC9D,SAAS,CAAC,QAAQ,CAAC,YAAY,oBAA6B;IAE5D,SAAS,CAAC,QAAQ,CAAC,YAAY,kGAE7B;IAEF,SAAS,CAAC,QAAQ,CAAC,UAAU,kGAI3B;IAEF,SAAS,CAAC,QAAQ,CAAC,OAAO,gDAOvB;IAEH,SAAS,CAAC,QAAQ,CAAC,KAAK,yCAAmD;IAC3E,SAAS,CAAC,QAAQ,CAAC,QAAQ,gDAAgD;IAE3E,SAAS,CAAC,QAAQ,CAAC,cAAc,gDAS9B;IAGH,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAO7C,SAAS,CAAC,aAAa,IAAI,IAAI;yCA/CtB,oBAAoB;2CAApB,oBAAoB;CAkDhC"}
1
+ {"version":3,"file":"prism-header.component.d.ts","sourceRoot":"","sources":["../../../src/app/header/prism-header.component.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;;AAOvE,qBAWa,oBAAoB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAC9D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAC5D,SAAS,CAAC,QAAQ,CAAC,aAAa,qBAA8B;IAC9D,SAAS,CAAC,QAAQ,CAAC,YAAY,oBAA6B;IAE5D,SAAS,CAAC,QAAQ,CAAC,YAAY,kGAE7B;IAEF,SAAS,CAAC,QAAQ,CAAC,UAAU,kGAI3B;IAEF,SAAS,CAAC,QAAQ,CAAC,KAAK,0EAA4C;IACpE,SAAS,CAAC,QAAQ,CAAC,UAAU,gDAI1B;IACH,SAAS,CAAC,QAAQ,CAAC,QAAQ,gDAAgD;IAE3E,SAAS,CAAC,QAAQ,CAAC,cAAc,gDAS9B;IAGH,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAO7C,SAAS,CAAC,aAAa,IAAI,IAAI;yCA3CtB,oBAAoB;2CAApB,oBAAoB;CA8ChC"}
@@ -5,23 +5,38 @@ import { BUILTIN_HEADER_WIDGETS } from '../panels/builtin-header-widgets.js';
5
5
  import { PrismPluginService } from '../services/prism-plugin.service.js';
6
6
  import { PrismSearchService } from '../services/prism-search.service.js';
7
7
  import { PrismThemeService } from '../services/prism-theme.service.js';
8
+ import { PrismIconButtonComponent } from '../shared/prism-icon-button.component.js';
9
+ import { PrismLogoComponent } from '../shared/prism-logo.component.js';
8
10
  import { PRISM_CONFIG } from '../tokens/prism-tokens.js';
11
+ import { headerBrand } from './header-brand.js';
9
12
  import { PrismHeaderWidgetHostComponent } from './prism-header-widget-host.component.js';
10
13
  import * as i0 from "@angular/core";
11
14
  const _forTrack0 = ($index, $item) => $item.id;
12
- function PrismHeaderComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
13
- i0.ɵɵelement(0, "img", 2);
15
+ function PrismHeaderComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
16
+ i0.ɵɵelement(0, "img", 3);
14
17
  } if (rf & 2) {
15
- const ctx_r0 = i0.ɵɵnextContext();
16
- i0.ɵɵproperty("src", ctx_r0.logoUrl(), i0.ɵɵsanitizeUrl)("alt", ctx_r0.title());
18
+ i0.ɵɵproperty("src", ctx, i0.ɵɵsanitizeUrl);
17
19
  } }
18
- function PrismHeaderComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
19
- i0.ɵɵelementStart(0, "div", 3);
20
- i0.ɵɵelement(1, "img", 14);
20
+ function PrismHeaderComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
21
+ i0.ɵɵelement(0, "prism-logo", 4);
22
+ } if (rf & 2) {
23
+ i0.ɵɵproperty("size", 22);
24
+ } }
25
+ function PrismHeaderComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
26
+ i0.ɵɵelementStart(0, "span", 6);
27
+ i0.ɵɵtext(1);
21
28
  i0.ɵɵelementEnd();
29
+ } if (rf & 2) {
30
+ i0.ɵɵadvance();
31
+ i0.ɵɵtextInterpolate(ctx);
22
32
  } }
23
33
  function PrismHeaderComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
24
- i0.ɵɵelementStart(0, "span", 6);
34
+ i0.ɵɵelementStart(0, "span", 7);
35
+ i0.ɵɵtext(1, "ng-prism");
36
+ i0.ɵɵelementEnd();
37
+ } }
38
+ function PrismHeaderComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
39
+ i0.ɵɵelementStart(0, "span", 8);
25
40
  i0.ɵɵtext(1);
26
41
  i0.ɵɵelementEnd();
27
42
  } if (rf & 2) {
@@ -29,29 +44,29 @@ function PrismHeaderComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
29
44
  i0.ɵɵadvance();
30
45
  i0.ɵɵtextInterpolate(ctx_r0.subtitle());
31
46
  } }
32
- function PrismHeaderComponent_Conditional_8_For_2_Template(rf, ctx) { if (rf & 1) {
33
- i0.ɵɵelement(0, "prism-header-widget-host", 9);
47
+ function PrismHeaderComponent_Conditional_9_For_2_Template(rf, ctx) { if (rf & 1) {
48
+ i0.ɵɵelement(0, "prism-header-widget-host", 11);
34
49
  } if (rf & 2) {
35
50
  const w_r2 = ctx.$implicit;
36
51
  i0.ɵɵproperty("widget", w_r2);
37
52
  } }
38
- function PrismHeaderComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
39
- i0.ɵɵelementStart(0, "div", 7);
40
- i0.ɵɵrepeaterCreate(1, PrismHeaderComponent_Conditional_8_For_2_Template, 1, 1, "prism-header-widget-host", 9, _forTrack0);
53
+ function PrismHeaderComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
54
+ i0.ɵɵelementStart(0, "div", 9);
55
+ i0.ɵɵrepeaterCreate(1, PrismHeaderComponent_Conditional_9_For_2_Template, 1, 1, "prism-header-widget-host", 11, _forTrack0);
41
56
  i0.ɵɵelementEnd();
42
57
  } if (rf & 2) {
43
58
  const ctx_r0 = i0.ɵɵnextContext();
44
59
  i0.ɵɵadvance();
45
60
  i0.ɵɵrepeater(ctx_r0.widgetsStart());
46
61
  } }
47
- function PrismHeaderComponent_For_11_Template(rf, ctx) { if (rf & 1) {
48
- i0.ɵɵelement(0, "prism-header-widget-host", 9);
62
+ function PrismHeaderComponent_For_12_Template(rf, ctx) { if (rf & 1) {
63
+ i0.ɵɵelement(0, "prism-header-widget-host", 11);
49
64
  } if (rf & 2) {
50
65
  const w_r3 = ctx.$implicit;
51
66
  i0.ɵɵproperty("widget", w_r3);
52
67
  } }
53
- function PrismHeaderComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
54
- i0.ɵɵelementStart(0, "span", 10);
68
+ function PrismHeaderComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
69
+ i0.ɵɵelementStart(0, "span", 12);
55
70
  i0.ɵɵtext(1);
56
71
  i0.ɵɵelementEnd();
57
72
  } if (rf & 2) {
@@ -59,13 +74,13 @@ function PrismHeaderComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
59
74
  i0.ɵɵadvance();
60
75
  i0.ɵɵtextInterpolate(ctx_r0.buildInfoLabel());
61
76
  } }
62
- function PrismHeaderComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
63
- i0.ɵɵelement(0, "prism-icon", 12);
77
+ function PrismHeaderComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
78
+ i0.ɵɵelement(0, "prism-icon", 14);
64
79
  } if (rf & 2) {
65
80
  i0.ɵɵproperty("size", 16);
66
81
  } }
67
- function PrismHeaderComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
68
- i0.ɵɵelement(0, "prism-icon", 13);
82
+ function PrismHeaderComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
83
+ i0.ɵɵelement(0, "prism-icon", 15);
69
84
  } if (rf & 2) {
70
85
  i0.ɵɵproperty("size", 16);
71
86
  } }
@@ -78,16 +93,13 @@ export class PrismHeaderComponent {
78
93
  ...(ngDevMode ? [{ debugName: "widgetsStart" }] : /* istanbul ignore next */ []));
79
94
  widgetsEnd = computed(() => [...BUILTIN_HEADER_WIDGETS.filter((w) => (w.placement ?? 'end') === 'end'), ...this.pluginService.headerWidgetsEnd()].sort((a, b) => (a.order ?? 0) - (b.order ?? 0)), /* @ts-ignore */
80
95
  ...(ngDevMode ? [{ debugName: "widgetsEnd" }] : /* istanbul ignore next */ []));
81
- logoUrl = computed(() => {
82
- const logo = this.config.logo;
83
- if (!logo)
84
- return null;
85
- const isDark = this.themeService.isDark();
86
- return (isDark ? (logo.dark ?? logo.light) : (logo.light ?? logo.dark)) ?? null;
96
+ brand = computed(() => headerBrand(this.config), /* @ts-ignore */
97
+ ...(ngDevMode ? [{ debugName: "brand" }] : /* istanbul ignore next */ []));
98
+ brandTitle = computed(() => {
99
+ const brand = this.brand();
100
+ return brand.kind === 'title' ? brand.title : null;
87
101
  }, /* @ts-ignore */
88
- ...(ngDevMode ? [{ debugName: "logoUrl" }] : /* istanbul ignore next */ []));
89
- title = computed(() => this.config.title ?? 'ng-prism', /* @ts-ignore */
90
- ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
102
+ ...(ngDevMode ? [{ debugName: "brandTitle" }] : /* istanbul ignore next */ []));
91
103
  subtitle = computed(() => this.config.subtitle ?? null, /* @ts-ignore */
92
104
  ...(ngDevMode ? [{ debugName: "subtitle" }] : /* istanbul ignore next */ []));
93
105
  buildInfoLabel = computed(() => {
@@ -112,51 +124,55 @@ export class PrismHeaderComponent {
112
124
  // Placeholder, will be wired to the command palette later
113
125
  }
114
126
  static ɵfac = function PrismHeaderComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismHeaderComponent)(); };
115
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismHeaderComponent, selectors: [["prism-header"]], hostBindings: function PrismHeaderComponent_HostBindings(rf, ctx) { if (rf & 1) {
127
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismHeaderComponent, selectors: [["prism-header"]], hostVars: 2, hostBindings: function PrismHeaderComponent_HostBindings(rf, ctx) { if (rf & 1) {
116
128
  i0.ɵɵlistener("keydown", function PrismHeaderComponent_keydown_HostBindingHandler($event) { return ctx.onGlobalKey($event); }, i0.ɵɵresolveDocument);
117
- } }, decls: 17, vars: 9, consts: [[1, "prism-header"], [1, "prism-header__brand"], [1, "prism-header__logo-img", 3, "src", "alt"], [1, "prism-header__logo-default"], [1, "prism-header__brand-text"], [1, "prism-header__brand-name"], [1, "prism-header__brand-sub"], [1, "prism-header__widgets", "prism-header__widgets--start"], [1, "prism-header__actions"], [3, "widget"], [1, "prism-header__build-pill"], [1, "prism-header__icon-btn", 3, "click", "title"], ["name", "sun", 3, "size"], ["name", "moon", 3, "size"], ["alt", "ng prism logo", "src", "data:image/png;base64,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"]], template: function PrismHeaderComponent_Template(rf, ctx) { if (rf & 1) {
129
+ } if (rf & 2) {
130
+ i0.ɵɵstyleMap(ctx.themeService.headerTokens());
131
+ } }, decls: 18, vars: 8, consts: [[1, "prism-header"], [1, "prism-header__brand"], ["aria-hidden", "true", 1, "prism-header__glow"], ["alt", "", 1, "prism-header__logo-img", 3, "src"], [3, "size"], [1, "prism-header__brand-text"], [1, "prism-header__brand-name"], [1, "prism-header__wordmark"], [1, "prism-header__brand-sub"], [1, "prism-header__widgets", "prism-header__widgets--start"], [1, "prism-header__actions"], [3, "widget"], [1, "prism-header__build-pill"], ["prismIconButton", "", "size", "md", 3, "click", "title"], ["name", "sun", 3, "size"], ["name", "moon", 3, "size"]], template: function PrismHeaderComponent_Template(rf, ctx) { if (rf & 1) {
118
132
  i0.ɵɵelementStart(0, "header", 0)(1, "div", 1);
119
- i0.ɵɵconditionalCreate(2, PrismHeaderComponent_Conditional_2_Template, 1, 2, "img", 2)(3, PrismHeaderComponent_Conditional_3_Template, 2, 0, "div", 3);
120
- i0.ɵɵelementStart(4, "div", 4)(5, "span", 5);
121
- i0.ɵɵtext(6);
122
- i0.ɵɵelementEnd();
123
- i0.ɵɵconditionalCreate(7, PrismHeaderComponent_Conditional_7_Template, 2, 1, "span", 6);
133
+ i0.ɵɵelement(2, "span", 2);
134
+ i0.ɵɵconditionalCreate(3, PrismHeaderComponent_Conditional_3_Template, 1, 1, "img", 3)(4, PrismHeaderComponent_Conditional_4_Template, 1, 1, "prism-logo", 4);
135
+ i0.ɵɵelementStart(5, "div", 5);
136
+ i0.ɵɵconditionalCreate(6, PrismHeaderComponent_Conditional_6_Template, 2, 1, "span", 6)(7, PrismHeaderComponent_Conditional_7_Template, 2, 0, "span", 7);
137
+ i0.ɵɵconditionalCreate(8, PrismHeaderComponent_Conditional_8_Template, 2, 1, "span", 8);
124
138
  i0.ɵɵelementEnd()();
125
- i0.ɵɵconditionalCreate(8, PrismHeaderComponent_Conditional_8_Template, 3, 0, "div", 7);
126
- i0.ɵɵelementStart(9, "div", 8);
127
- i0.ɵɵrepeaterCreate(10, PrismHeaderComponent_For_11_Template, 1, 1, "prism-header-widget-host", 9, _forTrack0);
128
- i0.ɵɵconditionalCreate(12, PrismHeaderComponent_Conditional_12_Template, 2, 1, "span", 10);
129
- i0.ɵɵelementStart(13, "button", 11);
130
- i0.ɵɵlistener("click", function PrismHeaderComponent_Template_button_click_13_listener() { return ctx.themeService.toggle(); });
131
- i0.ɵɵconditionalCreate(14, PrismHeaderComponent_Conditional_14_Template, 1, 1, "prism-icon", 12)(15, PrismHeaderComponent_Conditional_15_Template, 1, 1, "prism-icon", 13);
139
+ i0.ɵɵconditionalCreate(9, PrismHeaderComponent_Conditional_9_Template, 3, 0, "div", 9);
140
+ i0.ɵɵelementStart(10, "div", 10);
141
+ i0.ɵɵrepeaterCreate(11, PrismHeaderComponent_For_12_Template, 1, 1, "prism-header-widget-host", 11, _forTrack0);
142
+ i0.ɵɵconditionalCreate(13, PrismHeaderComponent_Conditional_13_Template, 2, 1, "span", 12);
143
+ i0.ɵɵelementStart(14, "button", 13);
144
+ i0.ɵɵlistener("click", function PrismHeaderComponent_Template_button_click_14_listener() { return ctx.themeService.toggle(); });
145
+ i0.ɵɵconditionalCreate(15, PrismHeaderComponent_Conditional_15_Template, 1, 1, "prism-icon", 14)(16, PrismHeaderComponent_Conditional_16_Template, 1, 1, "prism-icon", 15);
132
146
  i0.ɵɵelementEnd();
133
- i0.ɵɵelement(16, "prism-layout-menu");
147
+ i0.ɵɵelement(17, "prism-layout-menu");
134
148
  i0.ɵɵelementEnd()();
135
149
  } if (rf & 2) {
150
+ let tmp_0_0;
151
+ let tmp_1_0;
152
+ i0.ɵɵadvance(3);
153
+ i0.ɵɵconditional((tmp_0_0 = ctx.brand().logoUrl) ? 3 : 4, tmp_0_0);
154
+ i0.ɵɵadvance(3);
155
+ i0.ɵɵconditional((tmp_1_0 = ctx.brandTitle()) ? 6 : 7, tmp_1_0);
136
156
  i0.ɵɵadvance(2);
137
- i0.ɵɵconditional(ctx.logoUrl() ? 2 : 3);
138
- i0.ɵɵadvance(4);
139
- i0.ɵɵtextInterpolate(ctx.title());
140
- i0.ɵɵadvance();
141
- i0.ɵɵconditional(ctx.subtitle() ? 7 : -1);
157
+ i0.ɵɵconditional(ctx.subtitle() ? 8 : -1);
142
158
  i0.ɵɵadvance();
143
- i0.ɵɵconditional(ctx.widgetsStart().length ? 8 : -1);
159
+ i0.ɵɵconditional(ctx.widgetsStart().length ? 9 : -1);
144
160
  i0.ɵɵadvance(2);
145
161
  i0.ɵɵrepeater(ctx.widgetsEnd());
146
162
  i0.ɵɵadvance(2);
147
- i0.ɵɵconditional(ctx.buildInfoLabel() ? 12 : -1);
163
+ i0.ɵɵconditional(ctx.buildInfoLabel() ? 13 : -1);
148
164
  i0.ɵɵadvance();
149
165
  i0.ɵɵproperty("title", ctx.themeService.isDark() ? "Switch to light mode" : "Switch to dark mode");
150
- i0.ɵɵattribute("aria-label", ctx.themeService.isDark() ? "Switch to light mode" : "Switch to dark mode")("aria-pressed", ctx.themeService.isDark());
166
+ i0.ɵɵattribute("aria-label", ctx.themeService.isDark() ? "Switch to light mode" : "Switch to dark mode");
151
167
  i0.ɵɵadvance();
152
- i0.ɵɵconditional(ctx.themeService.isDark() ? 14 : 15);
153
- } }, dependencies: [PrismIconComponent, PrismLayoutMenuComponent, PrismHeaderWidgetHostComponent], styles: [".prism-header[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: minmax(min-content, var(--%NS%sw, 264px)) 1fr auto;\n align-items: center;\n height: var(--%NS%band-header);\n padding: 0 14px 0 0;\n background: var(--%NS%prism-bg);\n border-bottom: 1px solid var(--%NS%prism-border);\n}\n\n.prism-header__brand[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n align-items: center;\n padding: 0 16px;\n white-space: nowrap;\n cursor: pointer;\n}\n\n.prism-header__logo-default[_ngcontent-%COMP%] {\n flex: 0 0 26px;\n width: 26px;\n height: 26px;\n color: var(--%NS%prism-primary);\n filter: drop-shadow(0 0 8px var(--%NS%prism-glow-strong));\n}\n\n.prism-header__logo-default[_ngcontent-%COMP%] img[_ngcontent-%COMP%] {\n width: 30px;\n}\n\n.prism-header__logo-img[_ngcontent-%COMP%] {\n width: auto;\n height: 26px;\n object-fit: contain;\n}\n\n.prism-header__brand-text[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n line-height: 1.1;\n}\n\n.prism-header__brand-name[_ngcontent-%COMP%] {\n font-size: var(--%NS%fs-xl);\n font-weight: 700;\n color: transparent;\n letter-spacing: -0.01em;\n background: linear-gradient(90deg, var(--%NS%prism-primary), var(--%NS%prism-accent) 60%, var(--%NS%prism-primary-to));\n background-clip: text;\n}\n\n.prism-header__brand-sub[_ngcontent-%COMP%] {\n font-family: var(--%NS%font-mono);\n font-size: var(--%NS%fs-xs);\n color: var(--%NS%prism-text-ghost);\n}\n\n.prism-header__cmdbar[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n align-items: center;\n justify-self: center;\n width: 100%;\n max-width: 540px;\n height: 32px;\n padding: 0 12px;\n font-size: var(--%NS%fs-lg);\n color: var(--%NS%prism-text-muted);\n cursor: pointer;\n background: var(--%NS%prism-input-bg);\n border: 1px solid var(--%NS%prism-border);\n border-radius: 8px;\n transition:\n border-color var(--%NS%dur-fast),\n background var(--%NS%dur-fast);\n}\n\n.prism-header__cmdbar[_ngcontent-%COMP%]:hover {\n color: var(--%NS%prism-text-2);\n border-color: var(--%NS%prism-border-strong);\n}\n\n.prism-header__cmdbar-text[_ngcontent-%COMP%] {\n flex: 1;\n text-align: left;\n}\n\n.prism-header__cmdbar-shortcut[_ngcontent-%COMP%] {\n display: flex;\n gap: 3px;\n}\n\n.prism-header__cmdbar-shortcut[_ngcontent-%COMP%] kbd[_ngcontent-%COMP%] {\n padding: 1px 5px;\n font-family: var(--%NS%font-mono);\n font-size: 10.5px;\n color: var(--%NS%prism-text-muted);\n background: var(--%NS%prism-input-bg);\n border: 1px solid var(--%NS%prism-border);\n border-radius: 4px;\n}\n\n.prism-header__build-pill[_ngcontent-%COMP%] {\n padding: 2px 10px;\n font-family: var(--%NS%font-mono);\n font-size: var(--%NS%fs-xs);\n line-height: 1.4;\n color: var(--%NS%prism-text-ghost);\n white-space: nowrap;\n background: var(--%NS%prism-input-bg);\n border: 1px solid var(--%NS%prism-border);\n border-radius: 9999px;\n}\n\n.prism-header__actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n align-items: center;\n justify-content: flex-end;\n}\n\n.prism-header__widgets[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n min-width: 0;\n}\n\n.prism-header__widgets--start[_ngcontent-%COMP%] {\n justify-content: flex-start;\n padding-left: 4px;\n}\n\n.prism-header__icon-btn[_ngcontent-%COMP%] {\n position: relative;\n display: grid;\n place-items: center;\n width: 32px;\n height: 32px;\n color: var(--%NS%prism-text-muted);\n cursor: pointer;\n background: none;\n border: none;\n border-radius: 8px;\n transition: all var(--%NS%dur-fast);\n}\n\n.prism-header__icon-btn[_ngcontent-%COMP%]:hover {\n color: var(--%NS%prism-text);\n background: var(--%NS%prism-input-bg);\n}\n\n[_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--%NS%prism-primary);\n outline-offset: 2px;\n}"] });
168
+ i0.ɵɵconditional(ctx.themeService.isDark() ? 15 : 16);
169
+ } }, dependencies: [PrismIconComponent, PrismLayoutMenuComponent, PrismHeaderWidgetHostComponent, PrismLogoComponent, PrismIconButtonComponent], styles: ["\n\n[_nghost-%COMP%] {\n display: block;\n}\n\n.prism-header[_ngcontent-%COMP%] {\n position: relative;\n display: grid;\n grid-template-columns: minmax(min-content, var(--%NS%sw, 264px)) 1fr auto;\n align-items: center;\n height: var(--%NS%band-header);\n padding: 0 14px 0 0;\n color: var(--%NS%prism-text);\n background: var(--%NS%prism-bg);\n border-bottom: 1px solid var(--%NS%prism-border);\n}\n\n\n.prism-header[_ngcontent-%COMP%]::before {\n position: absolute;\n inset: 0 0 auto;\n height: 2px;\n pointer-events: none;\n content: '';\n background: var(--%NS%prism-brand-gradient);\n}\n\n\nhtml[data-theme='light'][_nghost-%COMP%] .prism-header[_ngcontent-%COMP%], html[data-theme='light'] [_nghost-%COMP%] .prism-header[_ngcontent-%COMP%] {\n border-bottom-color: transparent;\n}\n\n.prism-header__brand[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n gap: 9px;\n align-items: center;\n padding: 0 16px;\n white-space: nowrap;\n cursor: pointer;\n isolation: isolate;\n}\n\n\n.prism-header__glow[_ngcontent-%COMP%] {\n position: absolute;\n top: -16px;\n left: 4px;\n z-index: -1;\n width: 150px;\n height: 68px;\n pointer-events: none;\n background: var(--%NS%prism-brand-glow);\n border-radius: 50%;\n filter: blur(10px);\n}\n\n.prism-header__logo-img[_ngcontent-%COMP%] {\n width: auto;\n height: 24px;\n object-fit: contain;\n}\n\n.prism-header__brand-text[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n line-height: 1.1;\n}\n\n\n.prism-header__wordmark[_ngcontent-%COMP%] {\n font-size: 16.5px;\n font-weight: 700;\n color: transparent;\n letter-spacing: -0.035em;\n background: var(--%NS%prism-brand-gradient);\n background-clip: text;\n}\n\n.prism-header__brand-name[_ngcontent-%COMP%] {\n font-size: var(--%NS%fs-xl);\n font-weight: 600;\n color: var(--%NS%prism-text);\n letter-spacing: -0.01em;\n}\n\n.prism-header__brand-sub[_ngcontent-%COMP%] {\n font-family: var(--%NS%font-mono);\n font-size: var(--%NS%fs-xs);\n color: var(--%NS%prism-text-muted);\n}\n\n.prism-header__build-pill[_ngcontent-%COMP%] {\n padding: 2px 10px;\n font-family: var(--%NS%font-mono);\n font-size: var(--%NS%fs-xs);\n line-height: 1.4;\n color: var(--%NS%prism-text-muted);\n white-space: nowrap;\n background: var(--%NS%prism-input-bg);\n border: 1px solid var(--%NS%prism-border);\n border-radius: 9999px;\n}\n\n.prism-header__actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n align-items: center;\n justify-content: flex-end;\n}\n\n.prism-header__widgets[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n min-width: 0;\n}\n\n.prism-header__widgets--start[_ngcontent-%COMP%] {\n justify-content: flex-start;\n padding-left: 4px;\n}\n\n[_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--%NS%prism-primary);\n outline-offset: 2px;\n}"] });
154
170
  }
155
171
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismHeaderComponent, [{
156
172
  type: Component,
157
- args: [{ selector: 'prism-header', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismIconComponent, PrismLayoutMenuComponent, PrismHeaderWidgetHostComponent], template: "<header class=\"prism-header\">\n <div class=\"prism-header__brand\">\n @if (logoUrl()) {\n <img\n class=\"prism-header__logo-img\"\n [src]=\"logoUrl()\"\n [alt]=\"title()\" />\n } @else {\n <div class=\"prism-header__logo-default\">\n <!-- @formatter:off -->\n <!-- prettier-ignore -->\n <img alt=\"ng prism logo\" src=\"data:image/png;base64,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\" />\n <!-- @formatter:on -->\n </div>\n }\n <div class=\"prism-header__brand-text\">\n <span class=\"prism-header__brand-name\">{{ title() }}</span>\n @if (subtitle()) {\n <span class=\"prism-header__brand-sub\">{{ subtitle() }}</span>\n }\n </div>\n </div>\n @if (widgetsStart().length) {\n <div class=\"prism-header__widgets prism-header__widgets--start\">\n @for (w of widgetsStart(); track w.id) {\n <prism-header-widget-host [widget]=\"w\" />\n }\n </div>\n }\n <div class=\"prism-header__actions\">\n @for (w of widgetsEnd(); track w.id) {\n <prism-header-widget-host [widget]=\"w\" />\n }\n @if (buildInfoLabel()) {\n <span class=\"prism-header__build-pill\">{{ buildInfoLabel() }}</span>\n }\n <button\n class=\"prism-header__icon-btn\"\n (click)=\"themeService.toggle()\"\n [title]=\"themeService.isDark() ? 'Switch to light mode' : 'Switch to dark mode'\"\n [attr.aria-label]=\"themeService.isDark() ? 'Switch to light mode' : 'Switch to dark mode'\"\n [attr.aria-pressed]=\"themeService.isDark()\">\n @if (themeService.isDark()) {\n <prism-icon\n name=\"sun\"\n [size]=\"16\" />\n } @else {\n <prism-icon\n name=\"moon\"\n [size]=\"16\" />\n }\n </button>\n <prism-layout-menu />\n </div>\n</header>\n", styles: [".prism-header {\n display: grid;\n grid-template-columns: minmax(min-content, var(--sw, 264px)) 1fr auto;\n align-items: center;\n height: var(--band-header);\n padding: 0 14px 0 0;\n background: var(--prism-bg);\n border-bottom: 1px solid var(--prism-border);\n}\n\n.prism-header__brand {\n display: flex;\n gap: 10px;\n align-items: center;\n padding: 0 16px;\n white-space: nowrap;\n cursor: pointer;\n}\n\n.prism-header__logo-default {\n flex: 0 0 26px;\n width: 26px;\n height: 26px;\n color: var(--prism-primary);\n filter: drop-shadow(0 0 8px var(--prism-glow-strong));\n}\n\n.prism-header__logo-default img {\n width: 30px;\n}\n\n.prism-header__logo-img {\n width: auto;\n height: 26px;\n object-fit: contain;\n}\n\n.prism-header__brand-text {\n display: flex;\n flex-direction: column;\n line-height: 1.1;\n}\n\n.prism-header__brand-name {\n font-size: var(--fs-xl);\n font-weight: 700;\n color: transparent;\n letter-spacing: -0.01em;\n background: linear-gradient(90deg, var(--prism-primary), var(--prism-accent) 60%, var(--prism-primary-to));\n background-clip: text;\n}\n\n.prism-header__brand-sub {\n font-family: var(--font-mono);\n font-size: var(--fs-xs);\n color: var(--prism-text-ghost);\n}\n\n.prism-header__cmdbar {\n display: flex;\n gap: 10px;\n align-items: center;\n justify-self: center;\n width: 100%;\n max-width: 540px;\n height: 32px;\n padding: 0 12px;\n font-size: var(--fs-lg);\n color: var(--prism-text-muted);\n cursor: pointer;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: 8px;\n transition:\n border-color var(--dur-fast),\n background var(--dur-fast);\n}\n\n.prism-header__cmdbar:hover {\n color: var(--prism-text-2);\n border-color: var(--prism-border-strong);\n}\n\n.prism-header__cmdbar-text {\n flex: 1;\n text-align: left;\n}\n\n.prism-header__cmdbar-shortcut {\n display: flex;\n gap: 3px;\n}\n\n.prism-header__cmdbar-shortcut kbd {\n padding: 1px 5px;\n font-family: var(--font-mono);\n font-size: 10.5px;\n color: var(--prism-text-muted);\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: 4px;\n}\n\n.prism-header__build-pill {\n padding: 2px 10px;\n font-family: var(--font-mono);\n font-size: var(--fs-xs);\n line-height: 1.4;\n color: var(--prism-text-ghost);\n white-space: nowrap;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: 9999px;\n}\n\n.prism-header__actions {\n display: flex;\n gap: 6px;\n align-items: center;\n justify-content: flex-end;\n}\n\n.prism-header__widgets {\n display: flex;\n gap: 8px;\n align-items: center;\n min-width: 0;\n}\n\n.prism-header__widgets--start {\n justify-content: flex-start;\n padding-left: 4px;\n}\n\n.prism-header__icon-btn {\n position: relative;\n display: grid;\n place-items: center;\n width: 32px;\n height: 32px;\n color: var(--prism-text-muted);\n cursor: pointer;\n background: none;\n border: none;\n border-radius: 8px;\n transition: all var(--dur-fast);\n}\n\n.prism-header__icon-btn:hover {\n color: var(--prism-text);\n background: var(--prism-input-bg);\n}\n\n:focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 2px;\n}\n"] }]
173
+ args: [{ selector: 'prism-header', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [PrismIconComponent, PrismLayoutMenuComponent, PrismHeaderWidgetHostComponent, PrismLogoComponent, PrismIconButtonComponent], host: { '[style]': 'themeService.headerTokens()' }, template: "<header class=\"prism-header\">\n <div class=\"prism-header__brand\">\n <span\n class=\"prism-header__glow\"\n aria-hidden=\"true\"></span>\n @if (brand().logoUrl; as logoUrl) {\n <img\n class=\"prism-header__logo-img\"\n [src]=\"logoUrl\"\n alt=\"\" />\n } @else {\n <prism-logo [size]=\"22\" />\n }\n <div class=\"prism-header__brand-text\">\n @if (brandTitle(); as title) {\n <span class=\"prism-header__brand-name\">{{ title }}</span>\n } @else {\n <span class=\"prism-header__wordmark\">ng-prism</span>\n }\n @if (subtitle()) {\n <span class=\"prism-header__brand-sub\">{{ subtitle() }}</span>\n }\n </div>\n </div>\n @if (widgetsStart().length) {\n <div class=\"prism-header__widgets prism-header__widgets--start\">\n @for (w of widgetsStart(); track w.id) {\n <prism-header-widget-host [widget]=\"w\" />\n }\n </div>\n }\n <div class=\"prism-header__actions\">\n @for (w of widgetsEnd(); track w.id) {\n <prism-header-widget-host [widget]=\"w\" />\n }\n @if (buildInfoLabel()) {\n <span class=\"prism-header__build-pill\">{{ buildInfoLabel() }}</span>\n }\n <button\n prismIconButton\n size=\"md\"\n (click)=\"themeService.toggle()\"\n [title]=\"themeService.isDark() ? 'Switch to light mode' : 'Switch to dark mode'\"\n [attr.aria-label]=\"themeService.isDark() ? 'Switch to light mode' : 'Switch to dark mode'\">\n @if (themeService.isDark()) {\n <prism-icon\n name=\"sun\"\n [size]=\"16\" />\n } @else {\n <prism-icon\n name=\"moon\"\n [size]=\"16\" />\n }\n </button>\n <prism-layout-menu />\n </div>\n</header>\n", styles: ["/* The host carries the dark token set inline (see the component), so every\n token below resolves to the navy band in both themes. */\n:host {\n display: block;\n}\n\n.prism-header {\n position: relative;\n display: grid;\n grid-template-columns: minmax(min-content, var(--sw, 264px)) 1fr auto;\n align-items: center;\n height: var(--band-header);\n padding: 0 14px 0 0;\n color: var(--prism-text);\n background: var(--prism-bg);\n border-bottom: 1px solid var(--prism-border);\n}\n\n/* The brand edge: one of the few places the gradient appears outside the logo. */\n.prism-header::before {\n position: absolute;\n inset: 0 0 auto;\n height: 2px;\n pointer-events: none;\n content: '';\n background: var(--prism-brand-gradient);\n}\n\n/* In the light theme the band sets itself apart; a hairline under it only adds noise. */\n:host-context(html[data-theme='light']) .prism-header {\n border-bottom-color: transparent;\n}\n\n.prism-header__brand {\n position: relative;\n display: flex;\n gap: 9px;\n align-items: center;\n padding: 0 16px;\n white-space: nowrap;\n cursor: pointer;\n isolation: isolate;\n}\n\n/* Light through the prism: a soft refraction behind the mark, never on it. */\n.prism-header__glow {\n position: absolute;\n top: -16px;\n left: 4px;\n z-index: -1;\n width: 150px;\n height: 68px;\n pointer-events: none;\n background: var(--prism-brand-glow);\n border-radius: 50%;\n filter: blur(10px);\n}\n\n.prism-header__logo-img {\n width: auto;\n height: 24px;\n object-fit: contain;\n}\n\n.prism-header__brand-text {\n display: flex;\n flex-direction: column;\n line-height: 1.1;\n}\n\n/* The wordmark runs through the brand gradient end to end (brand guide). */\n.prism-header__wordmark {\n font-size: 16.5px;\n font-weight: 700;\n color: transparent;\n letter-spacing: -0.035em;\n background: var(--prism-brand-gradient);\n background-clip: text;\n}\n\n.prism-header__brand-name {\n font-size: var(--fs-xl);\n font-weight: 600;\n color: var(--prism-text);\n letter-spacing: -0.01em;\n}\n\n.prism-header__brand-sub {\n font-family: var(--font-mono);\n font-size: var(--fs-xs);\n color: var(--prism-text-muted);\n}\n\n.prism-header__build-pill {\n padding: 2px 10px;\n font-family: var(--font-mono);\n font-size: var(--fs-xs);\n line-height: 1.4;\n color: var(--prism-text-muted);\n white-space: nowrap;\n background: var(--prism-input-bg);\n border: 1px solid var(--prism-border);\n border-radius: 9999px;\n}\n\n.prism-header__actions {\n display: flex;\n gap: 6px;\n align-items: center;\n justify-content: flex-end;\n}\n\n.prism-header__widgets {\n display: flex;\n gap: 8px;\n align-items: center;\n min-width: 0;\n}\n\n.prism-header__widgets--start {\n justify-content: flex-start;\n padding-left: 4px;\n}\n\n:focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 2px;\n}\n"] }]
158
174
  }], null, { onGlobalKey: [{
159
175
  type: HostListener,
160
176
  args: ['document:keydown', ['$event']]
161
177
  }] }); })();
162
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismHeaderComponent, { className: "PrismHeaderComponent", filePath: "app/header/prism-header.component.ts", lineNumber: 20 }); })();
178
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismHeaderComponent, { className: "PrismHeaderComponent", filePath: "app/header/prism-header.component.ts", lineNumber: 26 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"icon-registry.d.ts","sourceRoot":"","sources":["../../../src/app/icons/icon-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,QAAA,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAqCjC,CAAC;AAEF,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,iFAAiF;AACjF,eAAO,MAAM,UAAU,EAAE,SAAS,MAAM,EAAuB,CAAC"}
1
+ {"version":3,"file":"icon-registry.d.ts","sourceRoot":"","sources":["../../../src/app/icons/icon-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,QAAA,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAyCjC,CAAC;AAEF,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,iFAAiF;AACjF,eAAO,MAAM,UAAU,EAAE,SAAS,MAAM,EAAuB,CAAC"}
@@ -15,6 +15,7 @@ const ICONS = {
15
15
  sun: '<circle cx="12" cy="12" r="4"/><path d="M12 2v2m0 16v2M4.2 4.2l1.4 1.4m12.8 12.8 1.4 1.4M2 12h2m16 0h2M4.2 19.8l1.4-1.4M18.4 5.6l1.4-1.4"/>',
16
16
  moon: '<path d="M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8Z"/>',
17
17
  'more-horizontal': '<circle cx="12" cy="12" r="1"/><circle cx="19" cy="12" r="1"/><circle cx="5" cy="12" r="1"/>',
18
+ 'more-vertical': '<circle cx="12" cy="12" r="1"/><circle cx="12" cy="5" r="1"/><circle cx="12" cy="19" r="1"/>',
18
19
  'chevron-down': '<path d="m6 9 6 6 6-6"/>',
19
20
  'chevron-right': '<path d="m9 18 6-6-6-6"/>',
20
21
  pin: '<path d="M12 17v5"/><path d="M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"/>',
@@ -39,7 +40,9 @@ const ICONS = {
39
40
  x: '<path d="M18 6 6 18M6 6l12 12"/>',
40
41
  check: '<path d="M20 6 9 17l-5-5"/>',
41
42
  info: '<circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/>',
42
- 'circle-dashed': '<path d="M10.1 2.18a9.93 9.93 0 0 1 3.8 0"/><path d="M17.6 3.71a9.95 9.95 0 0 1 2.69 2.7"/><path d="M21.82 10.1a9.93 9.93 0 0 1 0 3.8"/><path d="M20.29 17.6a9.95 9.95 0 0 1-2.7 2.69"/><path d="M13.9 21.82a9.94 9.94 0 0 1-3.8 0"/><path d="M6.4 20.29a9.95 9.95 0 0 1-2.69-2.7"/><path d="M2.18 13.9a9.93 9.93 0 0 1 0-3.8"/><path d="M3.71 6.4a9.95 9.95 0 0 1 2.7-2.69"/>'
43
+ 'circle-dashed': '<path d="M10.1 2.18a9.93 9.93 0 0 1 3.8 0"/><path d="M17.6 3.71a9.95 9.95 0 0 1 2.69 2.7"/><path d="M21.82 10.1a9.93 9.93 0 0 1 0 3.8"/><path d="M20.29 17.6a9.95 9.95 0 0 1-2.7 2.69"/><path d="M13.9 21.82a9.94 9.94 0 0 1-3.8 0"/><path d="M6.4 20.29a9.95 9.95 0 0 1-2.69-2.7"/><path d="M2.18 13.9a9.93 9.93 0 0 1 0-3.8"/><path d="M3.71 6.4a9.95 9.95 0 0 1 2.7-2.69"/>',
44
+ plug: '<path d="M12 22v-5"/><path d="M9 8V2"/><path d="M15 8V2"/><path d="M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z"/>',
45
+ pipette: '<path d="m12 9-8.414 8.414A2 2 0 0 0 3 18.828v1.344a2 2 0 0 1-.586 1.414A2 2 0 0 1 3.828 21h1.344a2 2 0 0 0 1.414-.586L15 12"/><path d="m18 9 .4.4a1 1 0 1 1-3 3l-3.8-3.8a1 1 0 1 1 3-3l.4.4 3.4-3.4a1 1 0 1 1 3 3z"/><path d="m2 22 .414-.414"/>'
43
46
  };
44
47
  export { ICONS };
45
48
  /** Every name the registry can draw. A panel's `icon` has to pick from these. */
@@ -18,4 +18,16 @@ export type { ProvidePrismOptions } from './provide-prism.js';
18
18
  export { enablePrismHmr } from './hmr.js';
19
19
  export { PrismMetricBadgeComponent } from './shared/prism-metric-badge.component.js';
20
20
  export { PrismIconComponent } from './icons/prism-icon.component.js';
21
+ export { PrismBadgeComponent } from './shared/prism-badge.component.js';
22
+ export { toneForStatus } from './shared/badge.types.js';
23
+ export type { BadgeTone, StatusTone } from './shared/badge.types.js';
24
+ export { PrismTabsComponent } from './shared/prism-tabs.component.js';
25
+ export type { PrismTabBadge, PrismTabItem } from './shared/prism-tabs.component.js';
26
+ export { PrismSegmentedComponent } from './shared/prism-segmented.component.js';
27
+ export type { PrismSegmentOption } from './shared/prism-segmented.component.js';
28
+ export { PrismPanelToolbarComponent } from './shared/prism-panel-toolbar.component.js';
29
+ export { PrismListRowComponent } from './shared/prism-list-row.component.js';
30
+ export { PrismIconButtonComponent } from './shared/prism-icon-button.component.js';
31
+ export { PrismButtonComponent } from './shared/prism-button.component.js';
32
+ export { PrismMetricCardComponent } from './shared/prism-metric-card.component.js';
21
33
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAGxE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAC7H,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAGtE,YAAY,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAG1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,KAAK,aAAa,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAGlF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAGvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kDAAkD,CAAC;AAG9F,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAkB1C,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAGxE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAC7H,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAGtE,YAAY,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAG1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,KAAK,aAAa,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAGlF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAGvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kDAAkD,CAAC;AAG9F,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAoB1C,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,YAAY,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC"}