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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (377) hide show
  1. package/README.md +11 -9
  2. package/dist/app/canvas/canvas-bg.styles.d.ts +1 -1
  3. package/dist/app/canvas/canvas-bg.styles.d.ts.map +1 -1
  4. package/dist/app/canvas/canvas-bg.styles.js +1 -1
  5. package/dist/app/canvas/canvas-overlay-tokens.d.ts +12 -0
  6. package/dist/app/canvas/canvas-overlay-tokens.d.ts.map +1 -0
  7. package/dist/app/canvas/canvas-overlay-tokens.js +52 -0
  8. package/dist/app/canvas/prism-canvas-bg-pill.component.js +2 -2
  9. package/dist/app/canvas/prism-canvas-pin-row.component.js +2 -2
  10. package/dist/app/canvas/prism-canvas-rulers.component.d.ts +2 -0
  11. package/dist/app/canvas/prism-canvas-rulers.component.d.ts.map +1 -1
  12. package/dist/app/canvas/prism-canvas-rulers.component.js +17 -12
  13. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts +3 -2
  14. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts.map +1 -1
  15. package/dist/app/canvas/prism-canvas-toolbar.component.js +89 -97
  16. package/dist/app/canvas/prism-template-popover.component.d.ts.map +1 -1
  17. package/dist/app/canvas/prism-template-popover.component.js +16 -7
  18. package/dist/app/component-head/head-metrics.d.ts +35 -19
  19. package/dist/app/component-head/head-metrics.d.ts.map +1 -1
  20. package/dist/app/component-head/head-metrics.js +57 -27
  21. package/dist/app/component-head/pipe-facts.d.ts +9 -0
  22. package/dist/app/component-head/pipe-facts.d.ts.map +1 -0
  23. package/dist/app/component-head/pipe-facts.js +15 -0
  24. package/dist/app/component-head/prism-component-head.component.d.ts +19 -22
  25. package/dist/app/component-head/prism-component-head.component.d.ts.map +1 -1
  26. package/dist/app/component-head/prism-component-head.component.js +80 -96
  27. package/dist/app/component-head/prism-head-gauge.component.d.ts +8 -12
  28. package/dist/app/component-head/prism-head-gauge.component.d.ts.map +1 -1
  29. package/dist/app/component-head/prism-head-gauge.component.js +51 -67
  30. package/dist/app/component-head/prism-head-info.component.d.ts +13 -2
  31. package/dist/app/component-head/prism-head-info.component.d.ts.map +1 -1
  32. package/dist/app/component-head/prism-head-info.component.js +57 -16
  33. package/dist/app/component-head/prism-stat.component.d.ts +4 -5
  34. package/dist/app/component-head/prism-stat.component.d.ts.map +1 -1
  35. package/dist/app/component-head/prism-stat.component.js +16 -12
  36. package/dist/app/component-head/service-facts.d.ts +8 -0
  37. package/dist/app/component-head/service-facts.d.ts.map +1 -0
  38. package/dist/app/component-head/service-facts.js +11 -0
  39. package/dist/app/controls/boolean-control.component.js +2 -2
  40. package/dist/app/controls/json-control.component.js +2 -2
  41. package/dist/app/controls/union-control.component.js +4 -3
  42. package/dist/app/header/header-brand.d.ts +25 -0
  43. package/dist/app/header/header-brand.d.ts.map +1 -0
  44. package/dist/app/header/header-brand.js +10 -0
  45. package/dist/app/header/prism-header.component.d.ts +2 -2
  46. package/dist/app/header/prism-header.component.d.ts.map +1 -1
  47. package/dist/app/header/prism-header.component.js +73 -57
  48. package/dist/app/icons/icon-registry.d.ts.map +1 -1
  49. package/dist/app/icons/icon-registry.js +4 -1
  50. package/dist/app/index.d.ts +12 -0
  51. package/dist/app/index.d.ts.map +1 -1
  52. package/dist/app/index.js +12 -1
  53. package/dist/app/layout-menu/prism-layout-menu.component.d.ts +3 -0
  54. package/dist/app/layout-menu/prism-layout-menu.component.d.ts.map +1 -1
  55. package/dist/app/layout-menu/prism-layout-menu.component.js +72 -58
  56. package/dist/app/overview/open-in-playground.d.ts +8 -0
  57. package/dist/app/overview/open-in-playground.d.ts.map +1 -1
  58. package/dist/app/overview/open-in-playground.js +13 -0
  59. package/dist/app/overview/overview-matrix.d.ts +10 -4
  60. package/dist/app/overview/overview-matrix.d.ts.map +1 -1
  61. package/dist/app/overview/overview-matrix.js +3 -3
  62. package/dist/app/overview/prism-overview-cell.component.d.ts +6 -2
  63. package/dist/app/overview/prism-overview-cell.component.d.ts.map +1 -1
  64. package/dist/app/overview/prism-overview-cell.component.js +35 -24
  65. package/dist/app/overview/prism-overview-matrix.component.js +46 -55
  66. package/dist/app/page-renderer/prism-page-renderer.component.js +2 -2
  67. package/dist/app/panels/a11y/a11y-header-badge.component.d.ts +1 -4
  68. package/dist/app/panels/a11y/a11y-header-badge.component.d.ts.map +1 -1
  69. package/dist/app/panels/a11y/a11y-header-badge.component.js +8 -19
  70. package/dist/app/panels/a11y/a11y-keyboard-overlay.component.js +2 -2
  71. package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts +1 -0
  72. package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts.map +1 -1
  73. package/dist/app/panels/a11y/a11y-overlay-host.component.js +4 -3
  74. package/dist/app/panels/a11y/a11y-panel.component.d.ts +4 -1
  75. package/dist/app/panels/a11y/a11y-panel.component.d.ts.map +1 -1
  76. package/dist/app/panels/a11y/a11y-panel.component.js +32 -54
  77. package/dist/app/panels/a11y/a11y-score.component.d.ts +8 -3
  78. package/dist/app/panels/a11y/a11y-score.component.d.ts.map +1 -1
  79. package/dist/app/panels/a11y/a11y-score.component.js +19 -35
  80. package/dist/app/panels/a11y/a11y-sr-overlay.component.js +2 -2
  81. package/dist/app/panels/a11y/a11y-sr.component.js +2 -2
  82. package/dist/app/panels/a11y/a11y-summary.d.ts.map +1 -1
  83. package/dist/app/panels/a11y/a11y-summary.js +8 -1
  84. package/dist/app/panels/a11y/a11y-tree.component.js +2 -2
  85. package/dist/app/panels/a11y/a11y-violations.component.d.ts +23 -2
  86. package/dist/app/panels/a11y/a11y-violations.component.d.ts.map +1 -1
  87. package/dist/app/panels/a11y/a11y-violations.component.js +104 -89
  88. package/dist/app/panels/a11y/severity.d.ts +9 -0
  89. package/dist/app/panels/a11y/severity.d.ts.map +1 -0
  90. package/dist/app/panels/a11y/severity.js +12 -0
  91. package/dist/app/panels/controls/non-editable-input-types.d.ts +9 -1
  92. package/dist/app/panels/controls/non-editable-input-types.d.ts.map +1 -1
  93. package/dist/app/panels/controls/non-editable-input-types.js +18 -0
  94. package/dist/app/panels/controls/prism-controls-panel.component.d.ts +2 -1
  95. package/dist/app/panels/controls/prism-controls-panel.component.d.ts.map +1 -1
  96. package/dist/app/panels/controls/prism-controls-panel.component.js +77 -59
  97. package/dist/app/panels/events/prism-events-panel.component.d.ts +2 -0
  98. package/dist/app/panels/events/prism-events-panel.component.d.ts.map +1 -1
  99. package/dist/app/panels/events/prism-events-panel.component.js +20 -7
  100. package/dist/app/panels/events/prism-json-node.utils.d.ts +6 -0
  101. package/dist/app/panels/events/prism-json-node.utils.d.ts.map +1 -1
  102. package/dist/app/panels/events/prism-json-node.utils.js +8 -0
  103. package/dist/app/panels/panel-host/addon-panels.d.ts +11 -0
  104. package/dist/app/panels/panel-host/addon-panels.d.ts.map +1 -0
  105. package/dist/app/panels/panel-host/addon-panels.js +12 -0
  106. package/dist/app/panels/panel-host/panel-badge.d.ts +22 -0
  107. package/dist/app/panels/panel-host/panel-badge.d.ts.map +1 -1
  108. package/dist/app/panels/panel-host/panel-badge.js +56 -11
  109. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts +4 -1
  110. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts.map +1 -1
  111. package/dist/app/panels/panel-host/prism-panel-host.component.js +36 -70
  112. package/dist/app/renderer/composition.d.ts +20 -0
  113. package/dist/app/renderer/composition.d.ts.map +1 -0
  114. package/dist/app/renderer/composition.js +26 -0
  115. package/dist/app/renderer/input-bindings.d.ts +13 -1
  116. package/dist/app/renderer/input-bindings.d.ts.map +1 -1
  117. package/dist/app/renderer/input-bindings.js +22 -1
  118. package/dist/app/renderer/prism-renderer.component.d.ts +8 -1
  119. package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
  120. package/dist/app/renderer/prism-renderer.component.js +40 -28
  121. package/dist/app/renderer/snippet-generator.d.ts +14 -2
  122. package/dist/app/renderer/snippet-generator.d.ts.map +1 -1
  123. package/dist/app/renderer/snippet-generator.js +137 -82
  124. package/dist/app/services/navigation-item.d.ts +10 -0
  125. package/dist/app/services/navigation-item.d.ts.map +1 -0
  126. package/dist/app/services/navigation-item.js +20 -0
  127. package/dist/app/services/navigation-item.types.d.ts +8 -0
  128. package/dist/app/services/navigation-item.types.d.ts.map +1 -1
  129. package/dist/app/services/prism-layout.service.d.ts +12 -0
  130. package/dist/app/services/prism-layout.service.d.ts.map +1 -1
  131. package/dist/app/services/prism-layout.service.js +17 -7
  132. package/dist/app/services/prism-manifest.service.d.ts +4 -0
  133. package/dist/app/services/prism-manifest.service.d.ts.map +1 -1
  134. package/dist/app/services/prism-manifest.service.js +4 -0
  135. package/dist/app/services/prism-navigation.service.d.ts +12 -0
  136. package/dist/app/services/prism-navigation.service.d.ts.map +1 -1
  137. package/dist/app/services/prism-navigation.service.js +85 -19
  138. package/dist/app/services/prism-panel.service.d.ts +7 -3
  139. package/dist/app/services/prism-panel.service.d.ts.map +1 -1
  140. package/dist/app/services/prism-panel.service.js +13 -4
  141. package/dist/app/services/prism-renderer.service.d.ts +6 -0
  142. package/dist/app/services/prism-renderer.service.d.ts.map +1 -1
  143. package/dist/app/services/prism-renderer.service.js +40 -6
  144. package/dist/app/services/prism-search.service.d.ts +4 -0
  145. package/dist/app/services/prism-search.service.d.ts.map +1 -1
  146. package/dist/app/services/prism-search.service.js +29 -6
  147. package/dist/app/services/prism-theme.service.d.ts +11 -3
  148. package/dist/app/services/prism-theme.service.d.ts.map +1 -1
  149. package/dist/app/services/prism-theme.service.js +27 -19
  150. package/dist/app/services/prism-url-state.service.d.ts.map +1 -1
  151. package/dist/app/services/prism-url-state.service.js +42 -4
  152. package/dist/app/shared/badge.types.d.ts +7 -0
  153. package/dist/app/shared/badge.types.d.ts.map +1 -0
  154. package/dist/app/shared/badge.types.js +9 -0
  155. package/dist/app/shared/brand-mark.d.ts +35 -0
  156. package/dist/app/shared/brand-mark.d.ts.map +1 -0
  157. package/dist/app/shared/brand-mark.js +52 -0
  158. package/dist/app/shared/metric-bar.d.ts +6 -0
  159. package/dist/app/shared/metric-bar.d.ts.map +1 -0
  160. package/dist/app/shared/metric-bar.js +7 -0
  161. package/dist/app/shared/prism-badge.component.d.ts +21 -0
  162. package/dist/app/shared/prism-badge.component.d.ts.map +1 -0
  163. package/dist/app/shared/prism-badge.component.js +68 -0
  164. package/dist/app/shared/prism-button.component.d.ts +12 -0
  165. package/dist/app/shared/prism-button.component.d.ts.map +1 -0
  166. package/dist/app/shared/prism-button.component.js +28 -0
  167. package/dist/app/shared/prism-icon-button.component.d.ts +17 -0
  168. package/dist/app/shared/prism-icon-button.component.d.ts.map +1 -0
  169. package/dist/app/shared/prism-icon-button.component.js +37 -0
  170. package/dist/app/shared/prism-list-row.component.d.ts +17 -0
  171. package/dist/app/shared/prism-list-row.component.d.ts.map +1 -0
  172. package/dist/app/shared/prism-list-row.component.js +57 -0
  173. package/dist/app/shared/prism-logo.component.d.ts +24 -0
  174. package/dist/app/shared/prism-logo.component.d.ts.map +1 -0
  175. package/dist/app/shared/prism-logo.component.js +77 -0
  176. package/dist/app/shared/prism-metric-badge.component.d.ts +9 -4
  177. package/dist/app/shared/prism-metric-badge.component.d.ts.map +1 -1
  178. package/dist/app/shared/prism-metric-badge.component.js +33 -12
  179. package/dist/app/shared/prism-metric-card.component.d.ts +30 -0
  180. package/dist/app/shared/prism-metric-card.component.d.ts.map +1 -0
  181. package/dist/app/shared/prism-metric-card.component.js +111 -0
  182. package/dist/app/shared/prism-panel-toolbar.component.d.ts +13 -0
  183. package/dist/app/shared/prism-panel-toolbar.component.d.ts.map +1 -0
  184. package/dist/app/shared/prism-panel-toolbar.component.js +28 -0
  185. package/dist/app/shared/prism-segmented.component.d.ts +25 -0
  186. package/dist/app/shared/prism-segmented.component.d.ts.map +1 -0
  187. package/dist/app/shared/prism-segmented.component.js +77 -0
  188. package/dist/app/shared/prism-tabs.component.d.ts +44 -0
  189. package/dist/app/shared/prism-tabs.component.d.ts.map +1 -0
  190. package/dist/app/shared/prism-tabs.component.js +134 -0
  191. package/dist/app/shared/roving-focus.d.ts +13 -0
  192. package/dist/app/shared/roving-focus.d.ts.map +1 -0
  193. package/dist/app/shared/roving-focus.js +34 -0
  194. package/dist/app/shell/prism-shell.component.d.ts +13 -0
  195. package/dist/app/shell/prism-shell.component.d.ts.map +1 -1
  196. package/dist/app/shell/prism-shell.component.js +57 -28
  197. package/dist/app/shell/should-select-first.d.ts +17 -0
  198. package/dist/app/shell/should-select-first.d.ts.map +1 -0
  199. package/dist/app/shell/should-select-first.js +13 -0
  200. package/dist/app/sidebar/navigation-decorations.d.ts +23 -1
  201. package/dist/app/sidebar/navigation-decorations.d.ts.map +1 -1
  202. package/dist/app/sidebar/navigation-decorations.js +33 -2
  203. package/dist/app/sidebar/prism-sidebar.component.d.ts +5 -15
  204. package/dist/app/sidebar/prism-sidebar.component.d.ts.map +1 -1
  205. package/dist/app/sidebar/prism-sidebar.component.js +89 -77
  206. package/dist/app/theme/deprecated-tokens.d.ts +15 -0
  207. package/dist/app/theme/deprecated-tokens.d.ts.map +1 -0
  208. package/dist/app/theme/deprecated-tokens.js +22 -0
  209. package/dist/app/theme/favicon.d.ts +3 -0
  210. package/dist/app/theme/favicon.d.ts.map +1 -0
  211. package/dist/app/theme/favicon.js +3 -0
  212. package/dist/app/theme/prism-default-theme.d.ts.map +1 -1
  213. package/dist/app/theme/prism-default-theme.js +116 -61
  214. package/dist/app/theme/resolve-theme-tokens.d.ts +29 -0
  215. package/dist/app/theme/resolve-theme-tokens.d.ts.map +1 -0
  216. package/dist/app/theme/resolve-theme-tokens.js +43 -0
  217. package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts +4 -7
  218. package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts.map +1 -1
  219. package/dist/app/variant-ribbon/prism-variant-ribbon.component.js +31 -69
  220. package/dist/app/view-tab-bar/next-view-id.d.ts +7 -1
  221. package/dist/app/view-tab-bar/next-view-id.d.ts.map +1 -1
  222. package/dist/app/view-tab-bar/next-view-id.js +9 -1
  223. package/dist/app/view-tab-bar/panel-inputs.d.ts +28 -0
  224. package/dist/app/view-tab-bar/panel-inputs.d.ts.map +1 -0
  225. package/dist/app/view-tab-bar/panel-inputs.js +41 -0
  226. package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts +2 -3
  227. package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts.map +1 -1
  228. package/dist/app/view-tab-bar/prism-view-panel-host.component.js +9 -9
  229. package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts +6 -0
  230. package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts.map +1 -1
  231. package/dist/app/view-tab-bar/prism-view-tab-bar.component.js +22 -29
  232. package/dist/builder/config-loader/deprecated-options.d.ts +4 -2
  233. package/dist/builder/config-loader/deprecated-options.d.ts.map +1 -1
  234. package/dist/builder/config-loader/deprecated-options.js +13 -2
  235. package/dist/builder/manifest/composition-wrapper.generator.d.ts +14 -0
  236. package/dist/builder/manifest/composition-wrapper.generator.d.ts.map +1 -0
  237. package/dist/builder/manifest/composition-wrapper.generator.js +66 -0
  238. package/dist/builder/manifest/host-parser.d.ts +2 -0
  239. package/dist/builder/manifest/host-parser.d.ts.map +1 -1
  240. package/dist/builder/manifest/host-parser.js +9 -4
  241. package/dist/builder/manifest/manifest-imports.d.ts +34 -0
  242. package/dist/builder/manifest/manifest-imports.d.ts.map +1 -0
  243. package/dist/builder/manifest/manifest-imports.js +91 -0
  244. package/dist/builder/manifest/runtime-manifest.generator.d.ts +13 -0
  245. package/dist/builder/manifest/runtime-manifest.generator.d.ts.map +1 -1
  246. package/dist/builder/manifest/runtime-manifest.generator.js +135 -64
  247. package/dist/builder/manifest/selector-element.d.ts +16 -0
  248. package/dist/builder/manifest/selector-element.d.ts.map +1 -0
  249. package/dist/builder/manifest/selector-element.js +46 -0
  250. package/dist/builder/manifest/template-literal.d.ts +3 -0
  251. package/dist/builder/manifest/template-literal.d.ts.map +1 -0
  252. package/dist/builder/manifest/template-literal.js +4 -0
  253. package/dist/builder/plugin-runner/plugin-runner.d.ts.map +1 -1
  254. package/dist/builder/plugin-runner/plugin-runner.js +29 -26
  255. package/dist/builder/scanner/api/angular-decorators.d.ts +84 -0
  256. package/dist/builder/scanner/api/angular-decorators.d.ts.map +1 -0
  257. package/dist/builder/scanner/api/angular-decorators.js +157 -0
  258. package/dist/builder/scanner/api/component-api.extractor.d.ts +13 -0
  259. package/dist/builder/scanner/api/component-api.extractor.d.ts.map +1 -0
  260. package/dist/builder/scanner/api/component-api.extractor.js +104 -0
  261. package/dist/builder/scanner/api/doc-tags.d.ts +13 -0
  262. package/dist/builder/scanner/api/doc-tags.d.ts.map +1 -0
  263. package/dist/builder/scanner/api/doc-tags.js +101 -0
  264. package/dist/builder/scanner/api/export-index.d.ts +18 -0
  265. package/dist/builder/scanner/api/export-index.d.ts.map +1 -0
  266. package/dist/builder/scanner/api/export-index.js +22 -0
  267. package/dist/builder/scanner/api/member.extractor.d.ts +90 -0
  268. package/dist/builder/scanner/api/member.extractor.d.ts.map +1 -0
  269. package/dist/builder/scanner/api/member.extractor.js +270 -0
  270. package/dist/builder/scanner/api/pipe-api.extractor.d.ts +12 -0
  271. package/dist/builder/scanner/api/pipe-api.extractor.d.ts.map +1 -0
  272. package/dist/builder/scanner/api/pipe-api.extractor.js +52 -0
  273. package/dist/builder/scanner/api/service-api.extractor.d.ts +14 -0
  274. package/dist/builder/scanner/api/service-api.extractor.d.ts.map +1 -0
  275. package/dist/builder/scanner/api/service-api.extractor.js +119 -0
  276. package/dist/builder/scanner/api/setup.reader.d.ts +26 -0
  277. package/dist/builder/scanner/api/setup.reader.d.ts.map +1 -0
  278. package/dist/builder/scanner/api/setup.reader.js +89 -0
  279. package/dist/builder/scanner/api/type-collector.d.ts +24 -0
  280. package/dist/builder/scanner/api/type-collector.d.ts.map +1 -0
  281. package/dist/builder/scanner/api/type-collector.js +211 -0
  282. package/dist/builder/scanner/ast-utils.d.ts +8 -0
  283. package/dist/builder/scanner/ast-utils.d.ts.map +1 -1
  284. package/dist/builder/scanner/ast-utils.js +37 -1
  285. package/dist/builder/scanner/class-hierarchy.d.ts +5 -3
  286. package/dist/builder/scanner/class-hierarchy.d.ts.map +1 -1
  287. package/dist/builder/scanner/class-hierarchy.js +12 -6
  288. package/dist/builder/scanner/component.scanner.d.ts +60 -6
  289. package/dist/builder/scanner/component.scanner.d.ts.map +1 -1
  290. package/dist/builder/scanner/component.scanner.js +209 -57
  291. package/dist/builder/scanner/composition/compose-template.d.ts +36 -0
  292. package/dist/builder/scanner/composition/compose-template.d.ts.map +1 -0
  293. package/dist/builder/scanner/composition/compose-template.js +187 -0
  294. package/dist/builder/scanner/composition/declarables.d.ts +54 -0
  295. package/dist/builder/scanner/composition/declarables.d.ts.map +1 -0
  296. package/dist/builder/scanner/composition/declarables.js +182 -0
  297. package/dist/builder/scanner/composition/match-declarables.d.ts +43 -0
  298. package/dist/builder/scanner/composition/match-declarables.d.ts.map +1 -0
  299. package/dist/builder/scanner/composition/match-declarables.js +131 -0
  300. package/dist/builder/scanner/composition/read-composition.d.ts +77 -0
  301. package/dist/builder/scanner/composition/read-composition.d.ts.map +1 -0
  302. package/dist/builder/scanner/composition/read-composition.js +302 -0
  303. package/dist/builder/scanner/composition/template-elements.d.ts +12 -0
  304. package/dist/builder/scanner/composition/template-elements.d.ts.map +1 -0
  305. package/dist/builder/scanner/composition/template-elements.js +41 -0
  306. package/dist/builder/scanner/index.d.ts +4 -0
  307. package/dist/builder/scanner/index.d.ts.map +1 -1
  308. package/dist/builder/scanner/index.js +2 -0
  309. package/dist/builder/scanner/input.extractor.d.ts +31 -2
  310. package/dist/builder/scanner/input.extractor.d.ts.map +1 -1
  311. package/dist/builder/scanner/input.extractor.js +52 -15
  312. package/dist/builder/scanner/pipe.scanner.d.ts +29 -0
  313. package/dist/builder/scanner/pipe.scanner.d.ts.map +1 -0
  314. package/dist/builder/scanner/pipe.scanner.js +65 -0
  315. package/dist/builder/scanner/scanner.d.ts +25 -1
  316. package/dist/builder/scanner/scanner.d.ts.map +1 -1
  317. package/dist/builder/scanner/scanner.js +60 -26
  318. package/dist/builder/scanner/service/angular-decorators.d.ts +80 -0
  319. package/dist/builder/scanner/service/angular-decorators.d.ts.map +1 -0
  320. package/dist/builder/scanner/service/angular-decorators.js +154 -0
  321. package/dist/builder/scanner/service/doc-tags.d.ts +13 -0
  322. package/dist/builder/scanner/service/doc-tags.d.ts.map +1 -0
  323. package/dist/builder/scanner/service/doc-tags.js +97 -0
  324. package/dist/builder/scanner/service/export-index.d.ts +18 -0
  325. package/dist/builder/scanner/service/export-index.d.ts.map +1 -0
  326. package/dist/builder/scanner/service/export-index.js +22 -0
  327. package/dist/builder/scanner/service/member.extractor.d.ts +65 -0
  328. package/dist/builder/scanner/service/member.extractor.d.ts.map +1 -0
  329. package/dist/builder/scanner/service/member.extractor.js +216 -0
  330. package/dist/builder/scanner/service/pipe-api.extractor.d.ts +12 -0
  331. package/dist/builder/scanner/service/pipe-api.extractor.d.ts.map +1 -0
  332. package/dist/builder/scanner/service/pipe-api.extractor.js +72 -0
  333. package/dist/builder/scanner/service/service-api.extractor.d.ts +14 -0
  334. package/dist/builder/scanner/service/service-api.extractor.d.ts.map +1 -0
  335. package/dist/builder/scanner/service/service-api.extractor.js +119 -0
  336. package/dist/builder/scanner/service/setup.reader.d.ts +26 -0
  337. package/dist/builder/scanner/service/setup.reader.d.ts.map +1 -0
  338. package/dist/builder/scanner/service/setup.reader.js +89 -0
  339. package/dist/builder/scanner/service/type-collector.d.ts +23 -0
  340. package/dist/builder/scanner/service/type-collector.d.ts.map +1 -0
  341. package/dist/builder/scanner/service/type-collector.js +210 -0
  342. package/dist/builder/scanner/service.scanner.d.ts +26 -0
  343. package/dist/builder/scanner/service.scanner.d.ts.map +1 -0
  344. package/dist/builder/scanner/service.scanner.js +61 -0
  345. package/dist/builder/scanner/showcase-diagnostics.d.ts +60 -1
  346. package/dist/builder/scanner/showcase-diagnostics.d.ts.map +1 -1
  347. package/dist/builder/scanner/showcase-diagnostics.js +114 -1
  348. package/dist/builder/shared/prism-pipeline.d.ts +6 -0
  349. package/dist/builder/shared/prism-pipeline.d.ts.map +1 -1
  350. package/dist/builder/shared/prism-pipeline.js +43 -5
  351. package/dist/decorator/index.d.ts +1 -1
  352. package/dist/decorator/index.d.ts.map +1 -1
  353. package/dist/decorator/showcase.types.d.ts +79 -9
  354. package/dist/decorator/showcase.types.d.ts.map +1 -1
  355. package/dist/plugin/index.d.ts +6 -1
  356. package/dist/plugin/index.d.ts.map +1 -1
  357. package/dist/plugin/index.js +4 -0
  358. package/dist/plugin/pipe.types.d.ts +36 -0
  359. package/dist/plugin/pipe.types.d.ts.map +1 -0
  360. package/dist/plugin/pipe.types.js +1 -0
  361. package/dist/plugin/plugin.types.d.ts +140 -3
  362. package/dist/plugin/plugin.types.d.ts.map +1 -1
  363. package/dist/plugin/service.types.d.ts +124 -0
  364. package/dist/plugin/service.types.d.ts.map +1 -0
  365. package/dist/plugin/service.types.js +1 -0
  366. package/dist/plugin/status.d.ts +27 -0
  367. package/dist/plugin/status.d.ts.map +1 -0
  368. package/dist/plugin/status.js +26 -0
  369. package/dist/shared/composition.d.ts +30 -0
  370. package/dist/shared/composition.d.ts.map +1 -0
  371. package/dist/shared/composition.js +29 -0
  372. package/dist/shared/pseudo-state.type.d.ts +2 -1
  373. package/dist/shared/pseudo-state.type.d.ts.map +1 -1
  374. package/dist/shared/void-elements.d.ts +3 -0
  375. package/dist/shared/void-elements.d.ts.map +1 -0
  376. package/dist/shared/void-elements.js +2 -0
  377. package/package.json +1 -1
@@ -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 }); })();
@@ -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"}
package/dist/app/index.js CHANGED
@@ -29,7 +29,9 @@ export { enablePrismHmr } from './hmr.js';
29
29
  //
30
30
  // They still reach Node: `@ng-prism/plugin-coverage` and
31
31
  // `@ng-prism/plugin-visual-regression` re-export their header badges statically
32
- // from their Node entry, and those import `PrismMetricBadgeComponent` from here.
32
+ // from their Node entry, and those import `PrismMetricBadgeComponent` from here;
33
+ // since 22.7 `@ng-prism/plugin-perf` does the same with its panel, which is
34
+ // built from the UI primitives below.
33
35
  // Loading a plugin config in `builder/config-loader` therefore pulls this whole
34
36
  // file, shell included, into Node. That only works because the config loader
35
37
  // imports `@angular/compiler` first.
@@ -41,3 +43,12 @@ export { enablePrismHmr } from './hmr.js';
41
43
  // public API decision.
42
44
  export { PrismMetricBadgeComponent } from './shared/prism-metric-badge.component.js';
43
45
  export { PrismIconComponent } from './icons/prism-icon.component.js';
46
+ export { PrismBadgeComponent } from './shared/prism-badge.component.js';
47
+ export { toneForStatus } from './shared/badge.types.js';
48
+ export { PrismTabsComponent } from './shared/prism-tabs.component.js';
49
+ export { PrismSegmentedComponent } from './shared/prism-segmented.component.js';
50
+ export { PrismPanelToolbarComponent } from './shared/prism-panel-toolbar.component.js';
51
+ export { PrismListRowComponent } from './shared/prism-list-row.component.js';
52
+ export { PrismIconButtonComponent } from './shared/prism-icon-button.component.js';
53
+ export { PrismButtonComponent } from './shared/prism-button.component.js';
54
+ export { PrismMetricCardComponent } from './shared/prism-metric-card.component.js';
@@ -1,7 +1,10 @@
1
1
  import { PrismLayoutService } from '../services/prism-layout.service.js';
2
+ import { PrismThemeService } from '../services/prism-theme.service.js';
2
3
  import * as i0 from "@angular/core";
3
4
  export declare class PrismLayoutMenuComponent {
4
5
  protected readonly layout: PrismLayoutService;
6
+ /** The dropdown opens out of the navy header band but belongs to the app, so it takes the active theme back. */
7
+ protected readonly theme: PrismThemeService;
5
8
  protected readonly open: import("@angular/core").WritableSignal<boolean>;
6
9
  protected toggle(target: 'sidebar' | 'toolbar' | 'addons' | 'orientation'): void;
7
10
  static ɵfac: i0.ɵɵFactoryDeclaration<PrismLayoutMenuComponent, never>;
@@ -1 +1 @@
1
- {"version":3,"file":"prism-layout-menu.component.d.ts","sourceRoot":"","sources":["../../../src/app/layout-menu/prism-layout-menu.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;;AAEzE,qBAMa,wBAAwB;IACjC,SAAS,CAAC,QAAQ,CAAC,MAAM,qBAA8B;IACvD,SAAS,CAAC,QAAQ,CAAC,IAAI,kDAAiB;IAExC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,IAAI;yCAJvE,wBAAwB;2CAAxB,wBAAwB;CAqBpC"}
1
+ {"version":3,"file":"prism-layout-menu.component.d.ts","sourceRoot":"","sources":["../../../src/app/layout-menu/prism-layout-menu.component.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;;AAGvE,qBAOa,wBAAwB;IACjC,SAAS,CAAC,QAAQ,CAAC,MAAM,qBAA8B;IACvD,gHAAgH;IAChH,SAAS,CAAC,QAAQ,CAAC,KAAK,oBAA6B;IACrD,SAAS,CAAC,QAAQ,CAAC,IAAI,kDAAiB;IAExC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,IAAI;yCANvE,wBAAwB;2CAAxB,wBAAwB;CAuBpC"}