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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (377) hide show
  1. package/README.md +11 -9
  2. package/dist/app/canvas/canvas-bg.styles.d.ts +1 -1
  3. package/dist/app/canvas/canvas-bg.styles.d.ts.map +1 -1
  4. package/dist/app/canvas/canvas-bg.styles.js +1 -1
  5. package/dist/app/canvas/canvas-overlay-tokens.d.ts +12 -0
  6. package/dist/app/canvas/canvas-overlay-tokens.d.ts.map +1 -0
  7. package/dist/app/canvas/canvas-overlay-tokens.js +52 -0
  8. package/dist/app/canvas/prism-canvas-bg-pill.component.js +2 -2
  9. package/dist/app/canvas/prism-canvas-pin-row.component.js +2 -2
  10. package/dist/app/canvas/prism-canvas-rulers.component.d.ts +2 -0
  11. package/dist/app/canvas/prism-canvas-rulers.component.d.ts.map +1 -1
  12. package/dist/app/canvas/prism-canvas-rulers.component.js +17 -12
  13. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts +3 -2
  14. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts.map +1 -1
  15. package/dist/app/canvas/prism-canvas-toolbar.component.js +89 -97
  16. package/dist/app/canvas/prism-template-popover.component.d.ts.map +1 -1
  17. package/dist/app/canvas/prism-template-popover.component.js +16 -7
  18. package/dist/app/component-head/head-metrics.d.ts +35 -19
  19. package/dist/app/component-head/head-metrics.d.ts.map +1 -1
  20. package/dist/app/component-head/head-metrics.js +57 -27
  21. package/dist/app/component-head/pipe-facts.d.ts +9 -0
  22. package/dist/app/component-head/pipe-facts.d.ts.map +1 -0
  23. package/dist/app/component-head/pipe-facts.js +15 -0
  24. package/dist/app/component-head/prism-component-head.component.d.ts +19 -22
  25. package/dist/app/component-head/prism-component-head.component.d.ts.map +1 -1
  26. package/dist/app/component-head/prism-component-head.component.js +80 -96
  27. package/dist/app/component-head/prism-head-gauge.component.d.ts +8 -12
  28. package/dist/app/component-head/prism-head-gauge.component.d.ts.map +1 -1
  29. package/dist/app/component-head/prism-head-gauge.component.js +51 -67
  30. package/dist/app/component-head/prism-head-info.component.d.ts +13 -2
  31. package/dist/app/component-head/prism-head-info.component.d.ts.map +1 -1
  32. package/dist/app/component-head/prism-head-info.component.js +57 -16
  33. package/dist/app/component-head/prism-stat.component.d.ts +4 -5
  34. package/dist/app/component-head/prism-stat.component.d.ts.map +1 -1
  35. package/dist/app/component-head/prism-stat.component.js +16 -12
  36. package/dist/app/component-head/service-facts.d.ts +8 -0
  37. package/dist/app/component-head/service-facts.d.ts.map +1 -0
  38. package/dist/app/component-head/service-facts.js +11 -0
  39. package/dist/app/controls/boolean-control.component.js +2 -2
  40. package/dist/app/controls/json-control.component.js +2 -2
  41. package/dist/app/controls/union-control.component.js +4 -3
  42. package/dist/app/header/header-brand.d.ts +25 -0
  43. package/dist/app/header/header-brand.d.ts.map +1 -0
  44. package/dist/app/header/header-brand.js +10 -0
  45. package/dist/app/header/prism-header.component.d.ts +2 -2
  46. package/dist/app/header/prism-header.component.d.ts.map +1 -1
  47. package/dist/app/header/prism-header.component.js +73 -57
  48. package/dist/app/icons/icon-registry.d.ts.map +1 -1
  49. package/dist/app/icons/icon-registry.js +4 -1
  50. package/dist/app/index.d.ts +12 -0
  51. package/dist/app/index.d.ts.map +1 -1
  52. package/dist/app/index.js +12 -1
  53. package/dist/app/layout-menu/prism-layout-menu.component.d.ts +3 -0
  54. package/dist/app/layout-menu/prism-layout-menu.component.d.ts.map +1 -1
  55. package/dist/app/layout-menu/prism-layout-menu.component.js +72 -58
  56. package/dist/app/overview/open-in-playground.d.ts +8 -0
  57. package/dist/app/overview/open-in-playground.d.ts.map +1 -1
  58. package/dist/app/overview/open-in-playground.js +13 -0
  59. package/dist/app/overview/overview-matrix.d.ts +10 -4
  60. package/dist/app/overview/overview-matrix.d.ts.map +1 -1
  61. package/dist/app/overview/overview-matrix.js +3 -3
  62. package/dist/app/overview/prism-overview-cell.component.d.ts +6 -2
  63. package/dist/app/overview/prism-overview-cell.component.d.ts.map +1 -1
  64. package/dist/app/overview/prism-overview-cell.component.js +35 -24
  65. package/dist/app/overview/prism-overview-matrix.component.js +46 -55
  66. package/dist/app/page-renderer/prism-page-renderer.component.js +2 -2
  67. package/dist/app/panels/a11y/a11y-header-badge.component.d.ts +1 -4
  68. package/dist/app/panels/a11y/a11y-header-badge.component.d.ts.map +1 -1
  69. package/dist/app/panels/a11y/a11y-header-badge.component.js +8 -19
  70. package/dist/app/panels/a11y/a11y-keyboard-overlay.component.js +2 -2
  71. package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts +1 -0
  72. package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts.map +1 -1
  73. package/dist/app/panels/a11y/a11y-overlay-host.component.js +4 -3
  74. package/dist/app/panels/a11y/a11y-panel.component.d.ts +4 -1
  75. package/dist/app/panels/a11y/a11y-panel.component.d.ts.map +1 -1
  76. package/dist/app/panels/a11y/a11y-panel.component.js +32 -54
  77. package/dist/app/panels/a11y/a11y-score.component.d.ts +8 -3
  78. package/dist/app/panels/a11y/a11y-score.component.d.ts.map +1 -1
  79. package/dist/app/panels/a11y/a11y-score.component.js +19 -35
  80. package/dist/app/panels/a11y/a11y-sr-overlay.component.js +2 -2
  81. package/dist/app/panels/a11y/a11y-sr.component.js +2 -2
  82. package/dist/app/panels/a11y/a11y-summary.d.ts.map +1 -1
  83. package/dist/app/panels/a11y/a11y-summary.js +8 -1
  84. package/dist/app/panels/a11y/a11y-tree.component.js +2 -2
  85. package/dist/app/panels/a11y/a11y-violations.component.d.ts +23 -2
  86. package/dist/app/panels/a11y/a11y-violations.component.d.ts.map +1 -1
  87. package/dist/app/panels/a11y/a11y-violations.component.js +104 -89
  88. package/dist/app/panels/a11y/severity.d.ts +9 -0
  89. package/dist/app/panels/a11y/severity.d.ts.map +1 -0
  90. package/dist/app/panels/a11y/severity.js +12 -0
  91. package/dist/app/panels/controls/non-editable-input-types.d.ts +9 -1
  92. package/dist/app/panels/controls/non-editable-input-types.d.ts.map +1 -1
  93. package/dist/app/panels/controls/non-editable-input-types.js +18 -0
  94. package/dist/app/panels/controls/prism-controls-panel.component.d.ts +2 -1
  95. package/dist/app/panels/controls/prism-controls-panel.component.d.ts.map +1 -1
  96. package/dist/app/panels/controls/prism-controls-panel.component.js +77 -59
  97. package/dist/app/panels/events/prism-events-panel.component.d.ts +2 -0
  98. package/dist/app/panels/events/prism-events-panel.component.d.ts.map +1 -1
  99. package/dist/app/panels/events/prism-events-panel.component.js +20 -7
  100. package/dist/app/panels/events/prism-json-node.utils.d.ts +6 -0
  101. package/dist/app/panels/events/prism-json-node.utils.d.ts.map +1 -1
  102. package/dist/app/panels/events/prism-json-node.utils.js +8 -0
  103. package/dist/app/panels/panel-host/addon-panels.d.ts +11 -0
  104. package/dist/app/panels/panel-host/addon-panels.d.ts.map +1 -0
  105. package/dist/app/panels/panel-host/addon-panels.js +12 -0
  106. package/dist/app/panels/panel-host/panel-badge.d.ts +22 -0
  107. package/dist/app/panels/panel-host/panel-badge.d.ts.map +1 -1
  108. package/dist/app/panels/panel-host/panel-badge.js +56 -11
  109. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts +4 -1
  110. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts.map +1 -1
  111. package/dist/app/panels/panel-host/prism-panel-host.component.js +36 -70
  112. package/dist/app/renderer/composition.d.ts +20 -0
  113. package/dist/app/renderer/composition.d.ts.map +1 -0
  114. package/dist/app/renderer/composition.js +26 -0
  115. package/dist/app/renderer/input-bindings.d.ts +13 -1
  116. package/dist/app/renderer/input-bindings.d.ts.map +1 -1
  117. package/dist/app/renderer/input-bindings.js +22 -1
  118. package/dist/app/renderer/prism-renderer.component.d.ts +8 -1
  119. package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
  120. package/dist/app/renderer/prism-renderer.component.js +40 -28
  121. package/dist/app/renderer/snippet-generator.d.ts +14 -2
  122. package/dist/app/renderer/snippet-generator.d.ts.map +1 -1
  123. package/dist/app/renderer/snippet-generator.js +137 -82
  124. package/dist/app/services/navigation-item.d.ts +10 -0
  125. package/dist/app/services/navigation-item.d.ts.map +1 -0
  126. package/dist/app/services/navigation-item.js +20 -0
  127. package/dist/app/services/navigation-item.types.d.ts +8 -0
  128. package/dist/app/services/navigation-item.types.d.ts.map +1 -1
  129. package/dist/app/services/prism-layout.service.d.ts +12 -0
  130. package/dist/app/services/prism-layout.service.d.ts.map +1 -1
  131. package/dist/app/services/prism-layout.service.js +17 -7
  132. package/dist/app/services/prism-manifest.service.d.ts +4 -0
  133. package/dist/app/services/prism-manifest.service.d.ts.map +1 -1
  134. package/dist/app/services/prism-manifest.service.js +4 -0
  135. package/dist/app/services/prism-navigation.service.d.ts +12 -0
  136. package/dist/app/services/prism-navigation.service.d.ts.map +1 -1
  137. package/dist/app/services/prism-navigation.service.js +85 -19
  138. package/dist/app/services/prism-panel.service.d.ts +7 -3
  139. package/dist/app/services/prism-panel.service.d.ts.map +1 -1
  140. package/dist/app/services/prism-panel.service.js +13 -4
  141. package/dist/app/services/prism-renderer.service.d.ts +6 -0
  142. package/dist/app/services/prism-renderer.service.d.ts.map +1 -1
  143. package/dist/app/services/prism-renderer.service.js +40 -6
  144. package/dist/app/services/prism-search.service.d.ts +4 -0
  145. package/dist/app/services/prism-search.service.d.ts.map +1 -1
  146. package/dist/app/services/prism-search.service.js +29 -6
  147. package/dist/app/services/prism-theme.service.d.ts +11 -3
  148. package/dist/app/services/prism-theme.service.d.ts.map +1 -1
  149. package/dist/app/services/prism-theme.service.js +27 -19
  150. package/dist/app/services/prism-url-state.service.d.ts.map +1 -1
  151. package/dist/app/services/prism-url-state.service.js +42 -4
  152. package/dist/app/shared/badge.types.d.ts +7 -0
  153. package/dist/app/shared/badge.types.d.ts.map +1 -0
  154. package/dist/app/shared/badge.types.js +9 -0
  155. package/dist/app/shared/brand-mark.d.ts +35 -0
  156. package/dist/app/shared/brand-mark.d.ts.map +1 -0
  157. package/dist/app/shared/brand-mark.js +52 -0
  158. package/dist/app/shared/metric-bar.d.ts +6 -0
  159. package/dist/app/shared/metric-bar.d.ts.map +1 -0
  160. package/dist/app/shared/metric-bar.js +7 -0
  161. package/dist/app/shared/prism-badge.component.d.ts +21 -0
  162. package/dist/app/shared/prism-badge.component.d.ts.map +1 -0
  163. package/dist/app/shared/prism-badge.component.js +68 -0
  164. package/dist/app/shared/prism-button.component.d.ts +12 -0
  165. package/dist/app/shared/prism-button.component.d.ts.map +1 -0
  166. package/dist/app/shared/prism-button.component.js +28 -0
  167. package/dist/app/shared/prism-icon-button.component.d.ts +17 -0
  168. package/dist/app/shared/prism-icon-button.component.d.ts.map +1 -0
  169. package/dist/app/shared/prism-icon-button.component.js +37 -0
  170. package/dist/app/shared/prism-list-row.component.d.ts +17 -0
  171. package/dist/app/shared/prism-list-row.component.d.ts.map +1 -0
  172. package/dist/app/shared/prism-list-row.component.js +57 -0
  173. package/dist/app/shared/prism-logo.component.d.ts +24 -0
  174. package/dist/app/shared/prism-logo.component.d.ts.map +1 -0
  175. package/dist/app/shared/prism-logo.component.js +77 -0
  176. package/dist/app/shared/prism-metric-badge.component.d.ts +9 -4
  177. package/dist/app/shared/prism-metric-badge.component.d.ts.map +1 -1
  178. package/dist/app/shared/prism-metric-badge.component.js +33 -12
  179. package/dist/app/shared/prism-metric-card.component.d.ts +30 -0
  180. package/dist/app/shared/prism-metric-card.component.d.ts.map +1 -0
  181. package/dist/app/shared/prism-metric-card.component.js +111 -0
  182. package/dist/app/shared/prism-panel-toolbar.component.d.ts +13 -0
  183. package/dist/app/shared/prism-panel-toolbar.component.d.ts.map +1 -0
  184. package/dist/app/shared/prism-panel-toolbar.component.js +28 -0
  185. package/dist/app/shared/prism-segmented.component.d.ts +25 -0
  186. package/dist/app/shared/prism-segmented.component.d.ts.map +1 -0
  187. package/dist/app/shared/prism-segmented.component.js +77 -0
  188. package/dist/app/shared/prism-tabs.component.d.ts +44 -0
  189. package/dist/app/shared/prism-tabs.component.d.ts.map +1 -0
  190. package/dist/app/shared/prism-tabs.component.js +134 -0
  191. package/dist/app/shared/roving-focus.d.ts +13 -0
  192. package/dist/app/shared/roving-focus.d.ts.map +1 -0
  193. package/dist/app/shared/roving-focus.js +34 -0
  194. package/dist/app/shell/prism-shell.component.d.ts +13 -0
  195. package/dist/app/shell/prism-shell.component.d.ts.map +1 -1
  196. package/dist/app/shell/prism-shell.component.js +57 -28
  197. package/dist/app/shell/should-select-first.d.ts +17 -0
  198. package/dist/app/shell/should-select-first.d.ts.map +1 -0
  199. package/dist/app/shell/should-select-first.js +13 -0
  200. package/dist/app/sidebar/navigation-decorations.d.ts +23 -1
  201. package/dist/app/sidebar/navigation-decorations.d.ts.map +1 -1
  202. package/dist/app/sidebar/navigation-decorations.js +33 -2
  203. package/dist/app/sidebar/prism-sidebar.component.d.ts +5 -15
  204. package/dist/app/sidebar/prism-sidebar.component.d.ts.map +1 -1
  205. package/dist/app/sidebar/prism-sidebar.component.js +89 -77
  206. package/dist/app/theme/deprecated-tokens.d.ts +15 -0
  207. package/dist/app/theme/deprecated-tokens.d.ts.map +1 -0
  208. package/dist/app/theme/deprecated-tokens.js +22 -0
  209. package/dist/app/theme/favicon.d.ts +3 -0
  210. package/dist/app/theme/favicon.d.ts.map +1 -0
  211. package/dist/app/theme/favicon.js +3 -0
  212. package/dist/app/theme/prism-default-theme.d.ts.map +1 -1
  213. package/dist/app/theme/prism-default-theme.js +116 -61
  214. package/dist/app/theme/resolve-theme-tokens.d.ts +29 -0
  215. package/dist/app/theme/resolve-theme-tokens.d.ts.map +1 -0
  216. package/dist/app/theme/resolve-theme-tokens.js +43 -0
  217. package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts +4 -7
  218. package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts.map +1 -1
  219. package/dist/app/variant-ribbon/prism-variant-ribbon.component.js +31 -69
  220. package/dist/app/view-tab-bar/next-view-id.d.ts +7 -1
  221. package/dist/app/view-tab-bar/next-view-id.d.ts.map +1 -1
  222. package/dist/app/view-tab-bar/next-view-id.js +9 -1
  223. package/dist/app/view-tab-bar/panel-inputs.d.ts +28 -0
  224. package/dist/app/view-tab-bar/panel-inputs.d.ts.map +1 -0
  225. package/dist/app/view-tab-bar/panel-inputs.js +41 -0
  226. package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts +2 -3
  227. package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts.map +1 -1
  228. package/dist/app/view-tab-bar/prism-view-panel-host.component.js +9 -9
  229. package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts +6 -0
  230. package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts.map +1 -1
  231. package/dist/app/view-tab-bar/prism-view-tab-bar.component.js +22 -29
  232. package/dist/builder/config-loader/deprecated-options.d.ts +4 -2
  233. package/dist/builder/config-loader/deprecated-options.d.ts.map +1 -1
  234. package/dist/builder/config-loader/deprecated-options.js +13 -2
  235. package/dist/builder/manifest/composition-wrapper.generator.d.ts +14 -0
  236. package/dist/builder/manifest/composition-wrapper.generator.d.ts.map +1 -0
  237. package/dist/builder/manifest/composition-wrapper.generator.js +66 -0
  238. package/dist/builder/manifest/host-parser.d.ts +2 -0
  239. package/dist/builder/manifest/host-parser.d.ts.map +1 -1
  240. package/dist/builder/manifest/host-parser.js +9 -4
  241. package/dist/builder/manifest/manifest-imports.d.ts +34 -0
  242. package/dist/builder/manifest/manifest-imports.d.ts.map +1 -0
  243. package/dist/builder/manifest/manifest-imports.js +91 -0
  244. package/dist/builder/manifest/runtime-manifest.generator.d.ts +13 -0
  245. package/dist/builder/manifest/runtime-manifest.generator.d.ts.map +1 -1
  246. package/dist/builder/manifest/runtime-manifest.generator.js +135 -64
  247. package/dist/builder/manifest/selector-element.d.ts +16 -0
  248. package/dist/builder/manifest/selector-element.d.ts.map +1 -0
  249. package/dist/builder/manifest/selector-element.js +46 -0
  250. package/dist/builder/manifest/template-literal.d.ts +3 -0
  251. package/dist/builder/manifest/template-literal.d.ts.map +1 -0
  252. package/dist/builder/manifest/template-literal.js +4 -0
  253. package/dist/builder/plugin-runner/plugin-runner.d.ts.map +1 -1
  254. package/dist/builder/plugin-runner/plugin-runner.js +29 -26
  255. package/dist/builder/scanner/api/angular-decorators.d.ts +84 -0
  256. package/dist/builder/scanner/api/angular-decorators.d.ts.map +1 -0
  257. package/dist/builder/scanner/api/angular-decorators.js +157 -0
  258. package/dist/builder/scanner/api/component-api.extractor.d.ts +13 -0
  259. package/dist/builder/scanner/api/component-api.extractor.d.ts.map +1 -0
  260. package/dist/builder/scanner/api/component-api.extractor.js +104 -0
  261. package/dist/builder/scanner/api/doc-tags.d.ts +13 -0
  262. package/dist/builder/scanner/api/doc-tags.d.ts.map +1 -0
  263. package/dist/builder/scanner/api/doc-tags.js +101 -0
  264. package/dist/builder/scanner/api/export-index.d.ts +18 -0
  265. package/dist/builder/scanner/api/export-index.d.ts.map +1 -0
  266. package/dist/builder/scanner/api/export-index.js +22 -0
  267. package/dist/builder/scanner/api/member.extractor.d.ts +90 -0
  268. package/dist/builder/scanner/api/member.extractor.d.ts.map +1 -0
  269. package/dist/builder/scanner/api/member.extractor.js +270 -0
  270. package/dist/builder/scanner/api/pipe-api.extractor.d.ts +12 -0
  271. package/dist/builder/scanner/api/pipe-api.extractor.d.ts.map +1 -0
  272. package/dist/builder/scanner/api/pipe-api.extractor.js +52 -0
  273. package/dist/builder/scanner/api/service-api.extractor.d.ts +14 -0
  274. package/dist/builder/scanner/api/service-api.extractor.d.ts.map +1 -0
  275. package/dist/builder/scanner/api/service-api.extractor.js +119 -0
  276. package/dist/builder/scanner/api/setup.reader.d.ts +26 -0
  277. package/dist/builder/scanner/api/setup.reader.d.ts.map +1 -0
  278. package/dist/builder/scanner/api/setup.reader.js +89 -0
  279. package/dist/builder/scanner/api/type-collector.d.ts +24 -0
  280. package/dist/builder/scanner/api/type-collector.d.ts.map +1 -0
  281. package/dist/builder/scanner/api/type-collector.js +211 -0
  282. package/dist/builder/scanner/ast-utils.d.ts +8 -0
  283. package/dist/builder/scanner/ast-utils.d.ts.map +1 -1
  284. package/dist/builder/scanner/ast-utils.js +37 -1
  285. package/dist/builder/scanner/class-hierarchy.d.ts +5 -3
  286. package/dist/builder/scanner/class-hierarchy.d.ts.map +1 -1
  287. package/dist/builder/scanner/class-hierarchy.js +12 -6
  288. package/dist/builder/scanner/component.scanner.d.ts +60 -6
  289. package/dist/builder/scanner/component.scanner.d.ts.map +1 -1
  290. package/dist/builder/scanner/component.scanner.js +209 -57
  291. package/dist/builder/scanner/composition/compose-template.d.ts +36 -0
  292. package/dist/builder/scanner/composition/compose-template.d.ts.map +1 -0
  293. package/dist/builder/scanner/composition/compose-template.js +187 -0
  294. package/dist/builder/scanner/composition/declarables.d.ts +54 -0
  295. package/dist/builder/scanner/composition/declarables.d.ts.map +1 -0
  296. package/dist/builder/scanner/composition/declarables.js +182 -0
  297. package/dist/builder/scanner/composition/match-declarables.d.ts +43 -0
  298. package/dist/builder/scanner/composition/match-declarables.d.ts.map +1 -0
  299. package/dist/builder/scanner/composition/match-declarables.js +131 -0
  300. package/dist/builder/scanner/composition/read-composition.d.ts +77 -0
  301. package/dist/builder/scanner/composition/read-composition.d.ts.map +1 -0
  302. package/dist/builder/scanner/composition/read-composition.js +302 -0
  303. package/dist/builder/scanner/composition/template-elements.d.ts +12 -0
  304. package/dist/builder/scanner/composition/template-elements.d.ts.map +1 -0
  305. package/dist/builder/scanner/composition/template-elements.js +41 -0
  306. package/dist/builder/scanner/index.d.ts +4 -0
  307. package/dist/builder/scanner/index.d.ts.map +1 -1
  308. package/dist/builder/scanner/index.js +2 -0
  309. package/dist/builder/scanner/input.extractor.d.ts +31 -2
  310. package/dist/builder/scanner/input.extractor.d.ts.map +1 -1
  311. package/dist/builder/scanner/input.extractor.js +52 -15
  312. package/dist/builder/scanner/pipe.scanner.d.ts +29 -0
  313. package/dist/builder/scanner/pipe.scanner.d.ts.map +1 -0
  314. package/dist/builder/scanner/pipe.scanner.js +65 -0
  315. package/dist/builder/scanner/scanner.d.ts +25 -1
  316. package/dist/builder/scanner/scanner.d.ts.map +1 -1
  317. package/dist/builder/scanner/scanner.js +60 -26
  318. package/dist/builder/scanner/service/angular-decorators.d.ts +80 -0
  319. package/dist/builder/scanner/service/angular-decorators.d.ts.map +1 -0
  320. package/dist/builder/scanner/service/angular-decorators.js +154 -0
  321. package/dist/builder/scanner/service/doc-tags.d.ts +13 -0
  322. package/dist/builder/scanner/service/doc-tags.d.ts.map +1 -0
  323. package/dist/builder/scanner/service/doc-tags.js +97 -0
  324. package/dist/builder/scanner/service/export-index.d.ts +18 -0
  325. package/dist/builder/scanner/service/export-index.d.ts.map +1 -0
  326. package/dist/builder/scanner/service/export-index.js +22 -0
  327. package/dist/builder/scanner/service/member.extractor.d.ts +65 -0
  328. package/dist/builder/scanner/service/member.extractor.d.ts.map +1 -0
  329. package/dist/builder/scanner/service/member.extractor.js +216 -0
  330. package/dist/builder/scanner/service/pipe-api.extractor.d.ts +12 -0
  331. package/dist/builder/scanner/service/pipe-api.extractor.d.ts.map +1 -0
  332. package/dist/builder/scanner/service/pipe-api.extractor.js +72 -0
  333. package/dist/builder/scanner/service/service-api.extractor.d.ts +14 -0
  334. package/dist/builder/scanner/service/service-api.extractor.d.ts.map +1 -0
  335. package/dist/builder/scanner/service/service-api.extractor.js +119 -0
  336. package/dist/builder/scanner/service/setup.reader.d.ts +26 -0
  337. package/dist/builder/scanner/service/setup.reader.d.ts.map +1 -0
  338. package/dist/builder/scanner/service/setup.reader.js +89 -0
  339. package/dist/builder/scanner/service/type-collector.d.ts +23 -0
  340. package/dist/builder/scanner/service/type-collector.d.ts.map +1 -0
  341. package/dist/builder/scanner/service/type-collector.js +210 -0
  342. package/dist/builder/scanner/service.scanner.d.ts +26 -0
  343. package/dist/builder/scanner/service.scanner.d.ts.map +1 -0
  344. package/dist/builder/scanner/service.scanner.js +61 -0
  345. package/dist/builder/scanner/showcase-diagnostics.d.ts +60 -1
  346. package/dist/builder/scanner/showcase-diagnostics.d.ts.map +1 -1
  347. package/dist/builder/scanner/showcase-diagnostics.js +114 -1
  348. package/dist/builder/shared/prism-pipeline.d.ts +6 -0
  349. package/dist/builder/shared/prism-pipeline.d.ts.map +1 -1
  350. package/dist/builder/shared/prism-pipeline.js +43 -5
  351. package/dist/decorator/index.d.ts +1 -1
  352. package/dist/decorator/index.d.ts.map +1 -1
  353. package/dist/decorator/showcase.types.d.ts +79 -9
  354. package/dist/decorator/showcase.types.d.ts.map +1 -1
  355. package/dist/plugin/index.d.ts +6 -1
  356. package/dist/plugin/index.d.ts.map +1 -1
  357. package/dist/plugin/index.js +4 -0
  358. package/dist/plugin/pipe.types.d.ts +36 -0
  359. package/dist/plugin/pipe.types.d.ts.map +1 -0
  360. package/dist/plugin/pipe.types.js +1 -0
  361. package/dist/plugin/plugin.types.d.ts +140 -3
  362. package/dist/plugin/plugin.types.d.ts.map +1 -1
  363. package/dist/plugin/service.types.d.ts +124 -0
  364. package/dist/plugin/service.types.d.ts.map +1 -0
  365. package/dist/plugin/service.types.js +1 -0
  366. package/dist/plugin/status.d.ts +27 -0
  367. package/dist/plugin/status.d.ts.map +1 -0
  368. package/dist/plugin/status.js +26 -0
  369. package/dist/shared/composition.d.ts +30 -0
  370. package/dist/shared/composition.d.ts.map +1 -0
  371. package/dist/shared/composition.js +29 -0
  372. package/dist/shared/pseudo-state.type.d.ts +2 -1
  373. package/dist/shared/pseudo-state.type.d.ts.map +1 -1
  374. package/dist/shared/void-elements.d.ts +3 -0
  375. package/dist/shared/void-elements.d.ts.map +1 -0
  376. package/dist/shared/void-elements.js +2 -0
  377. package/package.json +1 -1
@@ -1,73 +1,86 @@
1
1
  import { Component, inject, signal } from '@angular/core';
2
+ import { PrismIconComponent } from '../icons/prism-icon.component.js';
2
3
  import { PrismLayoutService } from '../services/prism-layout.service.js';
4
+ import { PrismThemeService } from '../services/prism-theme.service.js';
5
+ import { PrismIconButtonComponent } from '../shared/prism-icon-button.component.js';
3
6
  import * as i0 from "@angular/core";
4
- function PrismLayoutMenuComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
7
+ function PrismLayoutMenuComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
5
8
  const _r1 = i0.ɵɵgetCurrentView();
6
- i0.ɵɵdomElementStart(0, "div", 6);
7
- i0.ɵɵdomListener("click", function PrismLayoutMenuComponent_Conditional_6_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.open.set(false)); });
8
- i0.ɵɵdomElementEnd();
9
- i0.ɵɵdomElementStart(1, "div", 7)(2, "button", 8);
10
- i0.ɵɵdomListener("click", function PrismLayoutMenuComponent_Conditional_6_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggle("sidebar")); });
11
- i0.ɵɵdomElementStart(3, "span", 9);
9
+ i0.ɵɵelementStart(0, "div", 3);
10
+ i0.ɵɵlistener("click", function PrismLayoutMenuComponent_Conditional_3_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.open.set(false)); });
11
+ i0.ɵɵelementEnd();
12
+ i0.ɵɵelementStart(1, "div", 4)(2, "button", 5);
13
+ i0.ɵɵlistener("click", function PrismLayoutMenuComponent_Conditional_3_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggle("sidebar")); });
14
+ i0.ɵɵelementStart(3, "span", 6);
12
15
  i0.ɵɵnamespaceSVG();
13
- i0.ɵɵdomElementStart(4, "svg", 10);
14
- i0.ɵɵdomElement(5, "path", 11);
15
- i0.ɵɵdomElementEnd()();
16
+ i0.ɵɵelementStart(4, "svg", 7);
17
+ i0.ɵɵelement(5, "path", 8);
18
+ i0.ɵɵelementEnd()();
16
19
  i0.ɵɵnamespaceHTML();
17
- i0.ɵɵdomElementStart(6, "span", 12);
20
+ i0.ɵɵelementStart(6, "span", 9);
18
21
  i0.ɵɵtext(7, "Show sidebar");
19
- i0.ɵɵdomElementEnd();
20
- i0.ɵɵdomElementStart(8, "span", 13)(9, "kbd");
22
+ i0.ɵɵelementEnd();
23
+ i0.ɵɵelementStart(8, "span", 10)(9, "kbd");
21
24
  i0.ɵɵtext(10, "\u2325");
22
- i0.ɵɵdomElementEnd();
23
- i0.ɵɵdomElementStart(11, "kbd");
25
+ i0.ɵɵelementEnd();
26
+ i0.ɵɵelementStart(11, "kbd");
24
27
  i0.ɵɵtext(12, "S");
25
- i0.ɵɵdomElementEnd()()();
26
- i0.ɵɵdomElementStart(13, "button", 8);
27
- i0.ɵɵdomListener("click", function PrismLayoutMenuComponent_Conditional_6_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggle("toolbar")); });
28
- i0.ɵɵdomElementStart(14, "span", 9);
28
+ i0.ɵɵelementEnd()()();
29
+ i0.ɵɵelementStart(13, "button", 5);
30
+ i0.ɵɵlistener("click", function PrismLayoutMenuComponent_Conditional_3_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggle("toolbar")); });
31
+ i0.ɵɵelementStart(14, "span", 6);
29
32
  i0.ɵɵnamespaceSVG();
30
- i0.ɵɵdomElementStart(15, "svg", 10);
31
- i0.ɵɵdomElement(16, "path", 11);
32
- i0.ɵɵdomElementEnd()();
33
+ i0.ɵɵelementStart(15, "svg", 7);
34
+ i0.ɵɵelement(16, "path", 8);
35
+ i0.ɵɵelementEnd()();
33
36
  i0.ɵɵnamespaceHTML();
34
- i0.ɵɵdomElementStart(17, "span", 12);
37
+ i0.ɵɵelementStart(17, "span", 9);
35
38
  i0.ɵɵtext(18, "Show variant rail");
36
- i0.ɵɵdomElementEnd();
37
- i0.ɵɵdomElementStart(19, "span", 13)(20, "kbd");
39
+ i0.ɵɵelementEnd();
40
+ i0.ɵɵelementStart(19, "span", 10)(20, "kbd");
38
41
  i0.ɵɵtext(21, "\u2325");
39
- i0.ɵɵdomElementEnd();
40
- i0.ɵɵdomElementStart(22, "kbd");
42
+ i0.ɵɵelementEnd();
43
+ i0.ɵɵelementStart(22, "kbd");
41
44
  i0.ɵɵtext(23, "T");
42
- i0.ɵɵdomElementEnd()()();
43
- i0.ɵɵdomElementStart(24, "button", 8);
44
- i0.ɵɵdomListener("click", function PrismLayoutMenuComponent_Conditional_6_Template_button_click_24_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggle("addons")); });
45
- i0.ɵɵdomElementStart(25, "span", 9);
45
+ i0.ɵɵelementEnd()()();
46
+ i0.ɵɵelementStart(24, "button", 5);
47
+ i0.ɵɵlistener("click", function PrismLayoutMenuComponent_Conditional_3_Template_button_click_24_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggle("addons")); });
48
+ i0.ɵɵelementStart(25, "span", 6);
46
49
  i0.ɵɵnamespaceSVG();
47
- i0.ɵɵdomElementStart(26, "svg", 10);
48
- i0.ɵɵdomElement(27, "path", 11);
49
- i0.ɵɵdomElementEnd()();
50
+ i0.ɵɵelementStart(26, "svg", 7);
51
+ i0.ɵɵelement(27, "path", 8);
52
+ i0.ɵɵelementEnd()();
50
53
  i0.ɵɵnamespaceHTML();
51
- i0.ɵɵdomElementStart(28, "span", 12);
54
+ i0.ɵɵelementStart(28, "span", 9);
52
55
  i0.ɵɵtext(29, "Show addons panel");
53
- i0.ɵɵdomElementEnd();
54
- i0.ɵɵdomElementStart(30, "span", 13)(31, "kbd");
56
+ i0.ɵɵelementEnd();
57
+ i0.ɵɵelementStart(30, "span", 10)(31, "kbd");
55
58
  i0.ɵɵtext(32, "\u2325");
56
- i0.ɵɵdomElementEnd();
57
- i0.ɵɵdomElementStart(33, "kbd");
59
+ i0.ɵɵelementEnd();
60
+ i0.ɵɵelementStart(33, "kbd");
58
61
  i0.ɵɵtext(34, "A");
59
- i0.ɵɵdomElementEnd()()()();
62
+ i0.ɵɵelementEnd()()()();
60
63
  } if (rf & 2) {
61
64
  const ctx_r1 = i0.ɵɵnextContext();
62
- i0.ɵɵadvance(3);
65
+ i0.ɵɵadvance();
66
+ i0.ɵɵstyleMap(ctx_r1.theme.appTokens());
67
+ i0.ɵɵadvance();
68
+ i0.ɵɵattribute("aria-checked", ctx_r1.layout.sidebarVisible());
69
+ i0.ɵɵadvance();
63
70
  i0.ɵɵclassProp("layout-menu__check--on", ctx_r1.layout.sidebarVisible());
64
- i0.ɵɵadvance(11);
71
+ i0.ɵɵadvance(10);
72
+ i0.ɵɵattribute("aria-checked", ctx_r1.layout.toolbarVisible());
73
+ i0.ɵɵadvance();
65
74
  i0.ɵɵclassProp("layout-menu__check--on", ctx_r1.layout.toolbarVisible());
66
- i0.ɵɵadvance(11);
75
+ i0.ɵɵadvance(10);
76
+ i0.ɵɵattribute("aria-checked", ctx_r1.layout.addonsVisible());
77
+ i0.ɵɵadvance();
67
78
  i0.ɵɵclassProp("layout-menu__check--on", ctx_r1.layout.addonsVisible());
68
79
  } }
69
80
  export class PrismLayoutMenuComponent {
70
81
  layout = inject(PrismLayoutService);
82
+ /** The dropdown opens out of the navy header band but belongs to the app, so it takes the active theme back. */
83
+ theme = inject(PrismThemeService);
71
84
  open = signal(false, /* @ts-ignore */
72
85
  ...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
73
86
  toggle(target) {
@@ -88,24 +101,25 @@ export class PrismLayoutMenuComponent {
88
101
  }
89
102
  }
90
103
  static ɵfac = function PrismLayoutMenuComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismLayoutMenuComponent)(); };
91
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismLayoutMenuComponent, selectors: [["prism-layout-menu"]], decls: 7, vars: 3, consts: [[1, "layout-menu"], ["title", "Layout options", 1, "layout-menu__trigger", 3, "click"], ["width", "16", "height", "16", "viewBox", "0 0 16 16", "fill", "none"], ["cx", "8", "cy", "3", "r", "1.25", "fill", "currentColor"], ["cx", "8", "cy", "8", "r", "1.25", "fill", "currentColor"], ["cx", "8", "cy", "13", "r", "1.25", "fill", "currentColor"], [1, "layout-menu__backdrop", 3, "click"], [1, "layout-menu__dropdown"], [1, "layout-menu__item", 3, "click"], [1, "layout-menu__check"], ["width", "12", "height", "12", "viewBox", "0 0 12 12", "fill", "none"], ["d", "M2 6l3 3 5-5", "stroke", "currentColor", "stroke-width", "1.5", "stroke-linecap", "round", "stroke-linejoin", "round"], [1, "layout-menu__label"], [1, "layout-menu__kbd"]], template: function PrismLayoutMenuComponent_Template(rf, ctx) { if (rf & 1) {
92
- i0.ɵɵdomElementStart(0, "div", 0)(1, "button", 1);
93
- i0.ɵɵdomListener("click", function PrismLayoutMenuComponent_Template_button_click_1_listener() { return ctx.open.set(!ctx.open()); });
94
- i0.ɵɵnamespaceSVG();
95
- i0.ɵɵdomElementStart(2, "svg", 2);
96
- i0.ɵɵdomElement(3, "circle", 3)(4, "circle", 4)(5, "circle", 5);
97
- i0.ɵɵdomElementEnd()();
98
- i0.ɵɵconditionalCreate(6, PrismLayoutMenuComponent_Conditional_6_Template, 35, 6);
99
- i0.ɵɵdomElementEnd();
104
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismLayoutMenuComponent, selectors: [["prism-layout-menu"]], decls: 4, vars: 4, consts: [[1, "layout-menu"], ["prismIconButton", "", "size", "md", "aria-label", "Layout options", "aria-haspopup", "menu", "title", "Layout options", 3, "click", "pressed"], ["name", "more-vertical", 3, "size"], [1, "layout-menu__backdrop", 3, "click"], ["role", "menu", "aria-label", "Layout", 1, "layout-menu__dropdown"], ["role", "menuitemcheckbox", 1, "layout-menu__item", 3, "click"], [1, "layout-menu__check"], ["width", "12", "height", "12", "viewBox", "0 0 12 12", "fill", "none"], ["d", "M2 6l3 3 5-5", "stroke", "currentColor", "stroke-width", "1.5", "stroke-linecap", "round", "stroke-linejoin", "round"], [1, "layout-menu__label"], [1, "layout-menu__kbd"]], template: function PrismLayoutMenuComponent_Template(rf, ctx) { if (rf & 1) {
105
+ i0.ɵɵelementStart(0, "div", 0)(1, "button", 1);
106
+ i0.ɵɵlistener("click", function PrismLayoutMenuComponent_Template_button_click_1_listener() { return ctx.open.set(!ctx.open()); });
107
+ i0.ɵɵelement(2, "prism-icon", 2);
108
+ i0.ɵɵelementEnd();
109
+ i0.ɵɵconditionalCreate(3, PrismLayoutMenuComponent_Conditional_3_Template, 35, 11);
110
+ i0.ɵɵelementEnd();
100
111
  } if (rf & 2) {
101
112
  i0.ɵɵadvance();
102
- i0.ɵɵclassProp("layout-menu__trigger--active", ctx.open());
103
- i0.ɵɵadvance(5);
104
- i0.ɵɵconditional(ctx.open() ? 6 : -1);
105
- } }, styles: [".layout-menu[_ngcontent-%COMP%] {\n position: relative;\n}\n\n.layout-menu__trigger[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 30px;\n height: 30px;\n color: var(--%NS%prism-text-muted);\n cursor: pointer;\n background: transparent;\n border: 1px solid var(--%NS%prism-border);\n border-radius: var(--%NS%prism-radius-sm);\n transition:\n border-color 0.15s,\n color 0.15s,\n background 0.15s;\n}\n\n.layout-menu__trigger[_ngcontent-%COMP%]:hover, \n.layout-menu__trigger--active[_ngcontent-%COMP%] {\n color: var(--%NS%prism-text);\n background: var(--%NS%prism-bg-surface);\n border-color: var(--%NS%prism-border-strong);\n}\n\n.layout-menu__backdrop[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n z-index: 40;\n}\n\n.layout-menu__dropdown[_ngcontent-%COMP%] {\n position: absolute;\n top: calc(100% + 6px);\n right: 0;\n z-index: 50;\n min-width: 240px;\n padding: 4px;\n background: var(--%NS%prism-bg-elevated);\n border: 1px solid var(--%NS%prism-border-strong);\n border-radius: var(--%NS%prism-radius);\n box-shadow: 0 8px 32px rgb(0 0 0 / 40%);\n}\n\n.layout-menu__item[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n width: 100%;\n padding: 7px 10px;\n font-family: var(--%NS%prism-font-sans);\n font-size: 13px;\n color: var(--%NS%prism-text);\n text-align: left;\n cursor: pointer;\n background: none;\n border: none;\n border-radius: var(--%NS%prism-radius-sm);\n transition: background 0.1s;\n}\n\n.layout-menu__item[_ngcontent-%COMP%]:hover {\n background: var(--%NS%prism-bg-surface);\n}\n\n.layout-menu__check[_ngcontent-%COMP%] {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n color: transparent;\n border: 1px solid var(--%NS%prism-border-strong);\n border-radius: 3px;\n}\n\n.layout-menu__check--on[_ngcontent-%COMP%] {\n color: white;\n background: var(--%NS%prism-primary);\n border-color: var(--%NS%prism-primary);\n}\n\n.layout-menu__icon[_ngcontent-%COMP%] {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n color: var(--%NS%prism-text-muted);\n}\n\n.layout-menu__label[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.layout-menu__kbd[_ngcontent-%COMP%] {\n display: flex;\n gap: 2px;\n opacity: 0.6;\n}\n\nkbd[_ngcontent-%COMP%] {\n padding: 1px 4px;\n font-family: var(--%NS%prism-font-sans);\n font-size: 11px;\n color: var(--%NS%prism-text-muted);\n background: var(--%NS%prism-bg-surface);\n border: 1px solid var(--%NS%prism-border-strong);\n border-radius: 3px;\n}\n\n.layout-menu__divider[_ngcontent-%COMP%] {\n height: 1px;\n margin: 4px 0;\n background: var(--%NS%prism-border);\n}"] });
113
+ i0.ɵɵproperty("pressed", ctx.open() ? true : null);
114
+ i0.ɵɵattribute("aria-expanded", ctx.open());
115
+ i0.ɵɵadvance();
116
+ i0.ɵɵproperty("size", 16);
117
+ i0.ɵɵadvance();
118
+ i0.ɵɵconditional(ctx.open() ? 3 : -1);
119
+ } }, dependencies: [PrismIconButtonComponent, PrismIconComponent], styles: [".layout-menu[_ngcontent-%COMP%] {\n position: relative;\n}\n\n.layout-menu__backdrop[_ngcontent-%COMP%] {\n position: fixed;\n inset: 0;\n z-index: 40;\n}\n\n.layout-menu__dropdown[_ngcontent-%COMP%] {\n position: absolute;\n top: calc(100% + 6px);\n right: 0;\n z-index: 50;\n min-width: 240px;\n padding: 4px;\n background: var(--%NS%prism-bg-elevated);\n border: 1px solid var(--%NS%prism-border);\n border-radius: var(--%NS%radius-md);\n box-shadow: var(--%NS%prism-shadow-md);\n}\n\n.layout-menu__item[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n width: 100%;\n padding: 7px 10px;\n font-family: var(--%NS%prism-font-sans);\n font-size: 13px;\n color: var(--%NS%prism-text);\n text-align: left;\n cursor: pointer;\n background: none;\n border: none;\n border-radius: var(--%NS%radius-sm);\n transition: background 0.1s;\n}\n\n.layout-menu__item[_ngcontent-%COMP%]:hover {\n background: var(--%NS%prism-bg-surface);\n}\n\n.layout-menu__check[_ngcontent-%COMP%] {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n color: transparent;\n border: 1px solid var(--%NS%prism-border-strong);\n border-radius: 3px;\n}\n\n.layout-menu__check--on[_ngcontent-%COMP%] {\n color: var(--%NS%prism-on-primary);\n background: var(--%NS%prism-primary-fill);\n border-color: var(--%NS%prism-primary-fill);\n}\n\n.layout-menu__icon[_ngcontent-%COMP%] {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n color: var(--%NS%prism-text-muted);\n}\n\n.layout-menu__label[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.layout-menu__kbd[_ngcontent-%COMP%] {\n display: flex;\n gap: 2px;\n opacity: 0.6;\n}\n\nkbd[_ngcontent-%COMP%] {\n padding: 1px 4px;\n font-family: var(--%NS%prism-font-sans);\n font-size: 11px;\n color: var(--%NS%prism-text-muted);\n background: var(--%NS%prism-bg-surface);\n border: 1px solid var(--%NS%prism-border);\n border-radius: 3px;\n}\n\n.layout-menu__divider[_ngcontent-%COMP%] {\n height: 1px;\n margin: 4px 0;\n background: var(--%NS%prism-border);\n}"] });
106
120
  }
107
121
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismLayoutMenuComponent, [{
108
122
  type: Component,
109
- args: [{ selector: 'prism-layout-menu', standalone: true, template: "<div class=\"layout-menu\">\n <button\n class=\"layout-menu__trigger\"\n (click)=\"open.set(!open())\"\n [class.layout-menu__trigger--active]=\"open()\"\n title=\"Layout options\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\">\n <circle\n cx=\"8\"\n cy=\"3\"\n r=\"1.25\"\n fill=\"currentColor\" />\n <circle\n cx=\"8\"\n cy=\"8\"\n r=\"1.25\"\n fill=\"currentColor\" />\n <circle\n cx=\"8\"\n cy=\"13\"\n r=\"1.25\"\n fill=\"currentColor\" />\n </svg>\n </button>\n @if (open()) {\n <div\n class=\"layout-menu__backdrop\"\n (click)=\"open.set(false)\"></div>\n <div class=\"layout-menu__dropdown\">\n <button\n class=\"layout-menu__item\"\n (click)=\"toggle('sidebar')\">\n <span\n class=\"layout-menu__check\"\n [class.layout-menu__check--on]=\"layout.sidebarVisible()\">\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\">\n <path\n d=\"M2 6l3 3 5-5\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span class=\"layout-menu__label\">Show sidebar</span>\n <span class=\"layout-menu__kbd\"><kbd>\u2325</kbd><kbd>S</kbd></span>\n </button>\n <button\n class=\"layout-menu__item\"\n (click)=\"toggle('toolbar')\">\n <span\n class=\"layout-menu__check\"\n [class.layout-menu__check--on]=\"layout.toolbarVisible()\">\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\">\n <path\n d=\"M2 6l3 3 5-5\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span class=\"layout-menu__label\">Show variant rail</span>\n <span class=\"layout-menu__kbd\"><kbd>\u2325</kbd><kbd>T</kbd></span>\n </button>\n <button\n class=\"layout-menu__item\"\n (click)=\"toggle('addons')\">\n <span\n class=\"layout-menu__check\"\n [class.layout-menu__check--on]=\"layout.addonsVisible()\">\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\">\n <path\n d=\"M2 6l3 3 5-5\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span class=\"layout-menu__label\">Show addons panel</span>\n <span class=\"layout-menu__kbd\"><kbd>\u2325</kbd><kbd>A</kbd></span>\n </button>\n </div>\n }\n</div>\n", styles: [".layout-menu {\n position: relative;\n}\n\n.layout-menu__trigger {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 30px;\n height: 30px;\n color: var(--prism-text-muted);\n cursor: pointer;\n background: transparent;\n border: 1px solid var(--prism-border);\n border-radius: var(--prism-radius-sm);\n transition:\n border-color 0.15s,\n color 0.15s,\n background 0.15s;\n}\n\n.layout-menu__trigger:hover,\n.layout-menu__trigger--active {\n color: var(--prism-text);\n background: var(--prism-bg-surface);\n border-color: var(--prism-border-strong);\n}\n\n.layout-menu__backdrop {\n position: fixed;\n inset: 0;\n z-index: 40;\n}\n\n.layout-menu__dropdown {\n position: absolute;\n top: calc(100% + 6px);\n right: 0;\n z-index: 50;\n min-width: 240px;\n padding: 4px;\n background: var(--prism-bg-elevated);\n border: 1px solid var(--prism-border-strong);\n border-radius: var(--prism-radius);\n box-shadow: 0 8px 32px rgb(0 0 0 / 40%);\n}\n\n.layout-menu__item {\n display: flex;\n gap: 8px;\n align-items: center;\n width: 100%;\n padding: 7px 10px;\n font-family: var(--prism-font-sans);\n font-size: 13px;\n color: var(--prism-text);\n text-align: left;\n cursor: pointer;\n background: none;\n border: none;\n border-radius: var(--prism-radius-sm);\n transition: background 0.1s;\n}\n\n.layout-menu__item:hover {\n background: var(--prism-bg-surface);\n}\n\n.layout-menu__check {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n color: transparent;\n border: 1px solid var(--prism-border-strong);\n border-radius: 3px;\n}\n\n.layout-menu__check--on {\n color: white;\n background: var(--prism-primary);\n border-color: var(--prism-primary);\n}\n\n.layout-menu__icon {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n color: var(--prism-text-muted);\n}\n\n.layout-menu__label {\n flex: 1;\n}\n\n.layout-menu__kbd {\n display: flex;\n gap: 2px;\n opacity: 0.6;\n}\n\nkbd {\n padding: 1px 4px;\n font-family: var(--prism-font-sans);\n font-size: 11px;\n color: var(--prism-text-muted);\n background: var(--prism-bg-surface);\n border: 1px solid var(--prism-border-strong);\n border-radius: 3px;\n}\n\n.layout-menu__divider {\n height: 1px;\n margin: 4px 0;\n background: var(--prism-border);\n}\n"] }]
123
+ args: [{ selector: 'prism-layout-menu', standalone: true, imports: [PrismIconButtonComponent, PrismIconComponent], template: "<div class=\"layout-menu\">\n <button\n prismIconButton\n size=\"md\"\n aria-label=\"Layout options\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"open()\"\n [pressed]=\"open() ? true : null\"\n (click)=\"open.set(!open())\"\n title=\"Layout options\">\n <prism-icon\n name=\"more-vertical\"\n [size]=\"16\" />\n </button>\n @if (open()) {\n <div\n class=\"layout-menu__backdrop\"\n (click)=\"open.set(false)\"></div>\n <div\n class=\"layout-menu__dropdown\"\n role=\"menu\"\n aria-label=\"Layout\"\n [style]=\"theme.appTokens()\">\n <button\n class=\"layout-menu__item\"\n role=\"menuitemcheckbox\"\n [attr.aria-checked]=\"layout.sidebarVisible()\"\n (click)=\"toggle('sidebar')\">\n <span\n class=\"layout-menu__check\"\n [class.layout-menu__check--on]=\"layout.sidebarVisible()\">\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\">\n <path\n d=\"M2 6l3 3 5-5\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span class=\"layout-menu__label\">Show sidebar</span>\n <span class=\"layout-menu__kbd\"><kbd>\u2325</kbd><kbd>S</kbd></span>\n </button>\n <button\n class=\"layout-menu__item\"\n role=\"menuitemcheckbox\"\n [attr.aria-checked]=\"layout.toolbarVisible()\"\n (click)=\"toggle('toolbar')\">\n <span\n class=\"layout-menu__check\"\n [class.layout-menu__check--on]=\"layout.toolbarVisible()\">\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\">\n <path\n d=\"M2 6l3 3 5-5\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span class=\"layout-menu__label\">Show variant rail</span>\n <span class=\"layout-menu__kbd\"><kbd>\u2325</kbd><kbd>T</kbd></span>\n </button>\n <button\n class=\"layout-menu__item\"\n role=\"menuitemcheckbox\"\n [attr.aria-checked]=\"layout.addonsVisible()\"\n (click)=\"toggle('addons')\">\n <span\n class=\"layout-menu__check\"\n [class.layout-menu__check--on]=\"layout.addonsVisible()\">\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\">\n <path\n d=\"M2 6l3 3 5-5\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span class=\"layout-menu__label\">Show addons panel</span>\n <span class=\"layout-menu__kbd\"><kbd>\u2325</kbd><kbd>A</kbd></span>\n </button>\n </div>\n }\n</div>\n", styles: [".layout-menu {\n position: relative;\n}\n\n.layout-menu__backdrop {\n position: fixed;\n inset: 0;\n z-index: 40;\n}\n\n.layout-menu__dropdown {\n position: absolute;\n top: calc(100% + 6px);\n right: 0;\n z-index: 50;\n min-width: 240px;\n padding: 4px;\n background: var(--prism-bg-elevated);\n border: 1px solid var(--prism-border);\n border-radius: var(--radius-md);\n box-shadow: var(--prism-shadow-md);\n}\n\n.layout-menu__item {\n display: flex;\n gap: 8px;\n align-items: center;\n width: 100%;\n padding: 7px 10px;\n font-family: var(--prism-font-sans);\n font-size: 13px;\n color: var(--prism-text);\n text-align: left;\n cursor: pointer;\n background: none;\n border: none;\n border-radius: var(--radius-sm);\n transition: background 0.1s;\n}\n\n.layout-menu__item:hover {\n background: var(--prism-bg-surface);\n}\n\n.layout-menu__check {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n color: transparent;\n border: 1px solid var(--prism-border-strong);\n border-radius: 3px;\n}\n\n.layout-menu__check--on {\n color: var(--prism-on-primary);\n background: var(--prism-primary-fill);\n border-color: var(--prism-primary-fill);\n}\n\n.layout-menu__icon {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n color: var(--prism-text-muted);\n}\n\n.layout-menu__label {\n flex: 1;\n}\n\n.layout-menu__kbd {\n display: flex;\n gap: 2px;\n opacity: 0.6;\n}\n\nkbd {\n padding: 1px 4px;\n font-family: var(--prism-font-sans);\n font-size: 11px;\n color: var(--prism-text-muted);\n background: var(--prism-bg-surface);\n border: 1px solid var(--prism-border);\n border-radius: 3px;\n}\n\n.layout-menu__divider {\n height: 1px;\n margin: 4px 0;\n background: var(--prism-border);\n}\n"] }]
110
124
  }], null, null); })();
111
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismLayoutMenuComponent, { className: "PrismLayoutMenuComponent", filePath: "app/layout-menu/prism-layout-menu.component.ts", lineNumber: 10 }); })();
125
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismLayoutMenuComponent, { className: "PrismLayoutMenuComponent", filePath: "app/layout-menu/prism-layout-menu.component.ts", lineNumber: 14 }); })();
@@ -8,4 +8,12 @@ import type { PrismRendererService } from '../services/prism-renderer.service.js
8
8
  * before for a frame.
9
9
  */
10
10
  export declare function openInPlayground(renderer: Pick<PrismRendererService, 'selectVariant' | 'selectState'>, panels: Pick<PrismPanelService, 'activeViewId'>, variantIndex: number, stateIndex: number | null): void;
11
+ /**
12
+ * Whether a cell shows what the Playground shows: the same variant under the
13
+ * same component state. A variant that opted out with `states: false` shows
14
+ * no state in either place, so only the variant counts for it.
15
+ */
16
+ export declare function isPlaygroundCombination(renderer: Pick<PrismRendererService, 'activeVariantIndex' | 'activeStateIndex'>, variantIndex: number, stateIndex: number | null, statesOptedOut?: boolean): boolean;
17
+ /** A cell's accessible name, with the reason when its state does not apply: the cell itself shows only a dash then. */
18
+ export declare function playgroundLabel(variant: string, state: string | undefined, unfitReason: string | null): string;
11
19
  //# sourceMappingURL=open-in-playground.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"open-in-playground.d.ts","sourceRoot":"","sources":["../../../src/app/overview/open-in-playground.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAElF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC5B,QAAQ,EAAE,IAAI,CAAC,oBAAoB,EAAE,eAAe,GAAG,aAAa,CAAC,EACrE,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,cAAc,CAAC,EAC/C,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GAAG,IAAI,GAC1B,IAAI,CAIN"}
1
+ {"version":3,"file":"open-in-playground.d.ts","sourceRoot":"","sources":["../../../src/app/overview/open-in-playground.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAElF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC5B,QAAQ,EAAE,IAAI,CAAC,oBAAoB,EAAE,eAAe,GAAG,aAAa,CAAC,EACrE,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,cAAc,CAAC,EAC/C,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GAAG,IAAI,GAC1B,IAAI,CAIN;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACnC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,EAAE,oBAAoB,GAAG,kBAAkB,CAAC,EAC/E,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,cAAc,UAAQ,GACvB,OAAO,CAET;AAED,uHAAuH;AACvH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAI9G"}
@@ -10,3 +10,16 @@ export function openInPlayground(renderer, panels, variantIndex, stateIndex) {
10
10
  renderer.selectState(stateIndex);
11
11
  panels.activeViewId.set('renderer');
12
12
  }
13
+ /**
14
+ * Whether a cell shows what the Playground shows: the same variant under the
15
+ * same component state. A variant that opted out with `states: false` shows
16
+ * no state in either place, so only the variant counts for it.
17
+ */
18
+ export function isPlaygroundCombination(renderer, variantIndex, stateIndex, statesOptedOut = false) {
19
+ return renderer.activeVariantIndex() === variantIndex && (statesOptedOut || renderer.activeStateIndex() === stateIndex);
20
+ }
21
+ /** A cell's accessible name, with the reason when its state does not apply: the cell itself shows only a dash then. */
22
+ export function playgroundLabel(variant, state, unfitReason) {
23
+ const label = `Open ${variant}${state ? ` × ${state}` : ''} in the Playground`;
24
+ return unfitReason === null ? label : `${label} (not applicable: ${unfitReason})`;
25
+ }
@@ -13,6 +13,7 @@ export interface MatrixColumn {
13
13
  export interface MatrixRow {
14
14
  variant: number;
15
15
  title: string;
16
+ /** `bg: dark` or `states: false`: the row header's tooltip. */
16
17
  note: string | null;
17
18
  optedOut: boolean;
18
19
  }
@@ -38,8 +39,13 @@ export declare function buildOverviewMatrix(config: ShowcaseConfig): OverviewMat
38
39
  * target forces nothing, as the marker sees it.
39
40
  */
40
41
  export declare function pseudoSignature(pseudo: ForcedPseudoStates): string;
41
- /** `fits 2 of 5`: the variants a state fits, of those it is combined with. */
42
- export declare function fitLabel(fits: number, eligible: number): string;
42
+ /** A column's fit count: short in the header, spelled out in its tooltip. */
43
+ export interface FitLabel {
44
+ text: string;
45
+ title: string;
46
+ }
47
+ /** `2/5`: the variants a state fits, of those it is combined with. */
48
+ export declare function fitLabel(fits: number, total: number): FitLabel;
43
49
  /** Key of one cell's result in the map the matrix collects from the cells. */
44
50
  export declare function fitKey(variant: number, state: number): string;
45
51
  export interface ColumnFit {
@@ -69,8 +75,8 @@ export declare function statesFittingNowhere(results: ReadonlyMap<string, StateF
69
75
  /** One column header of the matrix. */
70
76
  export interface ColumnHeader {
71
77
  column: MatrixColumn;
72
- /** `fits x of y`, `null` for the Default column. */
73
- fit: string | null;
78
+ /** `x/y` and its tooltip, `null` for the Default column. */
79
+ fit: FitLabel | null;
74
80
  /** The state is one of {@link statesFittingNowhere}. */
75
81
  fitsNowhere: boolean;
76
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"overview-matrix.d.ts","sourceRoot":"","sources":["../../../src/app/overview/overview-matrix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,KAAK,kBAAkB,EAAmC,MAAM,mCAAmC,CAAC;AAE7G,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvE,yFAAyF;AACzF,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,gHAAgH;IAChH,WAAW,EAAE,OAAO,CAAC;CACxB;AAED,yHAAyH;AACzH,MAAM,WAAW,SAAS;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,IAAI,EAAE,SAAS,EAAE,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAsB1E;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAelE;AAED,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,8EAA8E;AAC9E,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,MAAM,WAAW,SAAS;IACtB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,uEAAuE;AACvE,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAKlH;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,CAQ7G;AAED,uCAAuC;AACvC,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,oDAAoD;IACpD,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,wDAAwD;IACxD,WAAW,EAAE,OAAO,CAAC;CACxB;AAED,wHAAwH;AACxH,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,cAAc,GAAG,YAAY,EAAE,CAU5G"}
1
+ {"version":3,"file":"overview-matrix.d.ts","sourceRoot":"","sources":["../../../src/app/overview/overview-matrix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,KAAK,kBAAkB,EAAmC,MAAM,mCAAmC,CAAC;AAE7G,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvE,yFAAyF;AACzF,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,gHAAgH;IAChH,WAAW,EAAE,OAAO,CAAC;CACxB;AAED,yHAAyH;AACzH,MAAM,WAAW,SAAS;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,IAAI,EAAE,SAAS,EAAE,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAsB1E;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAelE;AAED,6EAA6E;AAC7E,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,sEAAsE;AACtE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAE9D;AAED,8EAA8E;AAC9E,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,MAAM,WAAW,SAAS;IACtB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,uEAAuE;AACvE,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAKlH;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,CAQ7G;AAED,uCAAuC;AACvC,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,4DAA4D;IAC5D,GAAG,EAAE,QAAQ,GAAG,IAAI,CAAC;IACrB,wDAAwD;IACxD,WAAW,EAAE,OAAO,CAAC;CACxB;AAED,wHAAwH;AACxH,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,cAAc,GAAG,YAAY,EAAE,CAU5G"}
@@ -51,9 +51,9 @@ export function pseudoSignature(pseudo) {
51
51
  return 'forces no state';
52
52
  return Array.from(groups, ([label, states]) => `${states.join(' + ')} → ${label}`).join('; ');
53
53
  }
54
- /** `fits 2 of 5`: the variants a state fits, of those it is combined with. */
55
- export function fitLabel(fits, eligible) {
56
- return `fits ${fits} of ${eligible}`;
54
+ /** `2/5`: the variants a state fits, of those it is combined with. */
55
+ export function fitLabel(fits, total) {
56
+ return { text: `${fits}/${total}`, title: `State applies to ${fits} of ${total} ${total === 1 ? 'variant' : 'variants'}` };
57
57
  }
58
58
  /** Key of one cell's result in the map the matrix collects from the cells. */
59
59
  export function fitKey(variant, state) {
@@ -20,8 +20,10 @@ import * as i0 from "@angular/core";
20
20
  * A cell can combine its variant with one of the component's `states` (the
21
21
  * matrix does). When the marker finds that the state does not fit the rendered
22
22
  * component, or the variant opted out with `states: false`, the cell shows the
23
- * reason in place of the component. Every cell, with or without a state, opens
24
- * its exact combination in the Playground on click, Enter or Space.
23
+ * a dash in place of the component, with the reason as its tooltip and in its
24
+ * label. Every cell, with or without a state, opens its exact combination in
25
+ * the Playground on click, Enter or Space, and the one the Playground shows is
26
+ * outlined.
25
27
  */
26
28
  export declare class PrismOverviewCellComponent {
27
29
  readonly component: import("@angular/core").InputSignal<RuntimeComponent>;
@@ -44,6 +46,8 @@ export declare class PrismOverviewCellComponent {
44
46
  /** Why the state is not shown on this cell, `null` while the component is. */
45
47
  protected readonly unfitReason: import("@angular/core").WritableSignal<string | null>;
46
48
  protected readonly label: import("@angular/core").Signal<string>;
49
+ /** The combination the Playground shows right now. */
50
+ protected readonly current: import("@angular/core").Signal<boolean>;
47
51
  protected readonly stretches: import("@angular/core").Signal<boolean>;
48
52
  constructor();
49
53
  protected open(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"prism-overview-cell.component.d.ts","sourceRoot":"","sources":["../../../src/app/overview/prism-overview-cell.component.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAIrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;;AAQvD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAmBa,0BAA0B;IACnC,QAAQ,CAAC,SAAS,wDAAsC;IACxD,QAAQ,CAAC,KAAK,8CAA4B;IAC1C,gGAAgG;IAChG,QAAQ,CAAC,KAAK,qDAA8B;IAC5C,mFAAmF;IACnF,QAAQ,CAAC,IAAI,0DAAsC;IACnD,6FAA6F;IAC7F,QAAQ,CAAC,SAAS,qDAAsB;IAExC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgC;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkD;IAC/E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAEpB;IAEH,yEAAyE;IACzE,SAAS,CAAC,QAAQ,CAAC,EAAE,yFAAwF;IAE7G,SAAS,CAAC,QAAQ,CAAC,OAAO,yCAUvB;IAEH,8EAA8E;IAC9E,SAAS,CAAC,QAAQ,CAAC,WAAW,wDAA+B;IAE7D,SAAS,CAAC,QAAQ,CAAC,KAAK,yCAOrB;IAEH,SAAS,CAAC,QAAQ,CAAC,SAAS,0CAKzB;;IAuBH,SAAS,CAAC,IAAI,IAAI,IAAI;IAItB,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAkB/C,OAAO,CAAC,KAAK;IAsEb,OAAO,CAAC,KAAK;yCAtKJ,0BAA0B;2CAA1B,0BAA0B;CA0KtC"}
1
+ {"version":3,"file":"prism-overview-cell.component.d.ts","sourceRoot":"","sources":["../../../src/app/overview/prism-overview-cell.component.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAKrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;;AASvD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAsBa,0BAA0B;IACnC,QAAQ,CAAC,SAAS,wDAAsC;IACxD,QAAQ,CAAC,KAAK,8CAA4B;IAC1C,gGAAgG;IAChG,QAAQ,CAAC,KAAK,qDAA8B;IAC5C,mFAAmF;IACnF,QAAQ,CAAC,IAAI,0DAAsC;IACnD,6FAA6F;IAC7F,QAAQ,CAAC,SAAS,qDAAsB;IAExC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgC;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkD;IAC/E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAEpB;IAEH,yEAAyE;IACzE,SAAS,CAAC,QAAQ,CAAC,EAAE,yFAAwF;IAE7G,SAAS,CAAC,QAAQ,CAAC,OAAO,yCAUvB;IAEH,8EAA8E;IAC9E,SAAS,CAAC,QAAQ,CAAC,WAAW,wDAA+B;IAE7D,SAAS,CAAC,QAAQ,CAAC,KAAK,yCAOrB;IAEH,sDAAsD;IACtD,SAAS,CAAC,QAAQ,CAAC,OAAO,0CAIvB;IAEH,SAAS,CAAC,QAAQ,CAAC,SAAS,0CAKzB;;IAuBH,SAAS,CAAC,IAAI,IAAI,IAAI;IAItB,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAkB/C,OAAO,CAAC,KAAK;IA0Eb,OAAO,CAAC,KAAK;yCAjLJ,0BAA0B;2CAA1B,0BAA0B;CAqLtC"}
@@ -1,24 +1,20 @@
1
1
  import { ChangeDetectionStrategy, Component, computed, DestroyRef, effect, inject, Injector, input, output, reflectComponentType, signal, untracked, viewChild, ViewContainerRef } from '@angular/core';
2
+ import { PRISM_VARIANT_INPUT } from '../../shared/composition.js';
2
3
  import { resolveVariantBg } from '../../shared/variant-bg.js';
3
4
  import { CANVAS_BG_STYLES } from '../canvas/canvas-bg.styles.js';
5
+ import { activeCase, renderTypeFor } from '../renderer/composition.js';
4
6
  import { buildInputBindings } from '../renderer/input-bindings.js';
5
7
  import { parseContentToNodes } from '../renderer/projectable-content.js';
6
8
  import { PrismPanelService } from '../services/prism-panel.service.js';
7
9
  import { PrismPseudoStateService } from '../services/prism-pseudo-state.service.js';
8
10
  import { computeVariantState, PrismRendererService } from '../services/prism-renderer.service.js';
9
- import { openInPlayground } from './open-in-playground.js';
11
+ import { isPlaygroundCombination, openInPlayground, playgroundLabel } from './open-in-playground.js';
10
12
  import * as i0 from "@angular/core";
11
13
  const _c0 = ["outlet"];
12
14
  function PrismOverviewCellComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
13
- i0.ɵɵdomElementStart(0, "div", 3)(1, "span", 5);
14
- i0.ɵɵtext(2, "\u2013");
15
+ i0.ɵɵdomElementStart(0, "span", 3);
16
+ i0.ɵɵtext(1, "\u2013");
15
17
  i0.ɵɵdomElementEnd();
16
- i0.ɵɵdomElementStart(3, "span", 6);
17
- i0.ɵɵtext(4);
18
- i0.ɵɵdomElementEnd()();
19
- } if (rf & 2) {
20
- i0.ɵɵadvance(4);
21
- i0.ɵɵtextInterpolate(ctx);
22
18
  } }
23
19
  function PrismOverviewCellComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
24
20
  i0.ɵɵdomElementStart(0, "span", 4);
@@ -48,8 +44,10 @@ function PrismOverviewCellComponent_Conditional_5_Template(rf, ctx) { if (rf & 1
48
44
  * A cell can combine its variant with one of the component's `states` (the
49
45
  * matrix does). When the marker finds that the state does not fit the rendered
50
46
  * component, or the variant opted out with `states: false`, the cell shows the
51
- * reason in place of the component. Every cell, with or without a state, opens
52
- * its exact combination in the Playground on click, Enter or Space.
47
+ * a dash in place of the component, with the reason as its tooltip and in its
48
+ * label. Every cell, with or without a state, opens its exact combination in
49
+ * the Playground on click, Enter or Space, and the one the Playground shows is
50
+ * outlined.
53
51
  */
54
52
  export class PrismOverviewCellComponent {
55
53
  component = input.required(/* @ts-ignore */
@@ -92,9 +90,15 @@ export class PrismOverviewCellComponent {
92
90
  const variant = config.variants?.[this.index()]?.name ?? this.caption();
93
91
  const stateIndex = this.state();
94
92
  const state = stateIndex === null ? undefined : config.states?.[stateIndex];
95
- return `Open ${variant}${state ? ` × ${state.name}` : ''} in the Playground`;
93
+ return playgroundLabel(variant, state?.name, this.unfitReason());
96
94
  }, /* @ts-ignore */
97
95
  ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
96
+ /** The combination the Playground shows right now. */
97
+ current = computed(() => {
98
+ const optedOut = this.component().meta.showcaseConfig.variants?.[this.index()]?.states === false;
99
+ return isPlaygroundCombination(this.renderer, this.index(), this.state(), optedOut);
100
+ }, /* @ts-ignore */
101
+ ...(ngDevMode ? [{ debugName: "current" }] : /* istanbul ignore next */ []));
98
102
  stretches = computed(() => {
99
103
  const config = this.component().meta.showcaseConfig;
100
104
  const variant = config.variants?.[this.index()];
@@ -158,14 +162,19 @@ export class PrismOverviewCellComponent {
158
162
  providers: component.meta.showcaseConfig.providers ?? [],
159
163
  parent: this.injector
160
164
  });
161
- const projectableNodes = activeContent ? parseContentToNodes(activeContent, reflectComponentType(component.type)?.ngContentSelectors ?? []) : undefined;
162
- const ref = this.outlet().createComponent(component.type, {
165
+ const composed = activeCase(component, index) !== null;
166
+ const type = renderTypeFor(component, index);
167
+ const projectableNodes = activeContent && !composed ? parseContentToNodes(activeContent, reflectComponentType(type)?.ngContentSelectors ?? []) : undefined;
168
+ const ref = this.outlet().createComponent(type, {
163
169
  injector,
164
170
  projectableNodes
165
171
  });
166
- const inputBindings = buildInputBindings(component);
172
+ if (composed)
173
+ ref.setInput(PRISM_VARIANT_INPUT, index);
174
+ const inputBindings = buildInputBindings(component, index);
167
175
  for (const [key, value] of Object.entries(values)) {
168
176
  const binding = inputBindings.get(key);
177
+ // None for an unknown input, and none for one the composition of the variant leaves unbound.
169
178
  if (binding !== undefined)
170
179
  ref.setInput(binding, value);
171
180
  }
@@ -207,25 +216,24 @@ export class PrismOverviewCellComponent {
207
216
  i0.ɵɵviewQuerySignal(ctx.outlet, _c0, 5, ViewContainerRef);
208
217
  } if (rf & 2) {
209
218
  i0.ɵɵqueryAdvance();
210
- } }, hostAttrs: ["role", "listitem", "tabindex", "0"], hostVars: 3, hostBindings: function PrismOverviewCellComponent_HostBindings(rf, ctx) { if (rf & 1) {
219
+ } }, hostAttrs: ["role", "listitem", "tabindex", "0"], hostVars: 6, hostBindings: function PrismOverviewCellComponent_HostBindings(rf, ctx) { if (rf & 1) {
211
220
  i0.ɵɵlistener("click", function PrismOverviewCellComponent_click_HostBindingHandler() { return ctx.open(); })("keydown", function PrismOverviewCellComponent_keydown_HostBindingHandler($event) { return ctx.onKeydown($event); });
212
221
  } if (rf & 2) {
213
- i0.ɵɵattribute("aria-label", ctx.label())("data-wide", ctx.mode() === "sheet" && ctx.stretches() ? "" : null)("data-stretch", ctx.mode() === "matrix" && ctx.stretches() ? "" : null);
214
- } }, inputs: { component: [1, "component"], index: [1, "index"], state: [1, "state"], mode: [1, "mode"] }, outputs: { fitChange: "fitChange" }, decls: 6, vars: 4, consts: [["outlet", ""], [1, "cell__stage"], [1, "cell__mount"], [1, "cell__unfit"], [1, "cell__caption"], ["aria-hidden", "true", 1, "cell__unfit-mark"], [1, "cell__unfit-reason"]], template: function PrismOverviewCellComponent_Template(rf, ctx) { if (rf & 1) {
222
+ i0.ɵɵattribute("aria-label", ctx.label())("title", ctx.unfitReason())("data-matrix", ctx.mode() === "matrix" ? "" : null)("data-current", ctx.current() ? "" : null)("data-wide", ctx.mode() === "sheet" && ctx.stretches() ? "" : null)("data-stretch", ctx.mode() === "matrix" && ctx.stretches() ? "" : null);
223
+ } }, inputs: { component: [1, "component"], index: [1, "index"], state: [1, "state"], mode: [1, "mode"] }, outputs: { fitChange: "fitChange" }, decls: 6, vars: 4, consts: [["outlet", ""], [1, "cell__stage"], [1, "cell__mount"], ["aria-hidden", "true", 1, "cell__unfit"], [1, "cell__caption"]], template: function PrismOverviewCellComponent_Template(rf, ctx) { if (rf & 1) {
215
224
  i0.ɵɵdomElementStart(0, "div", 1)(1, "div", 2);
216
225
  i0.ɵɵdomElementContainer(2, null, 0);
217
226
  i0.ɵɵdomElementEnd();
218
- i0.ɵɵconditionalCreate(4, PrismOverviewCellComponent_Conditional_4_Template, 5, 1, "div", 3);
227
+ i0.ɵɵconditionalCreate(4, PrismOverviewCellComponent_Conditional_4_Template, 2, 0, "span", 3);
219
228
  i0.ɵɵdomElementEnd();
220
229
  i0.ɵɵconditionalCreate(5, PrismOverviewCellComponent_Conditional_5_Template, 2, 1, "span", 4);
221
230
  } if (rf & 2) {
222
- let tmp_3_0;
223
231
  i0.ɵɵattribute("data-bg", ctx.unfitReason() === null ? ctx.bg() : null)("data-unfit", ctx.unfitReason() === null ? null : "");
224
232
  i0.ɵɵadvance(4);
225
- i0.ɵɵconditional((tmp_3_0 = ctx.unfitReason()) ? 4 : -1, tmp_3_0);
233
+ i0.ɵɵconditional(ctx.unfitReason() !== null ? 4 : -1);
226
234
  i0.ɵɵadvance();
227
235
  i0.ɵɵconditional(ctx.mode() === "sheet" ? 5 : -1);
228
- } }, styles: ["[_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--%NS%sp-2);\n min-width: 0;\n cursor: pointer;\n}\n\n[_nghost-%COMP%]:focus-visible {\n outline: 2px solid var(--%NS%prism-primary);\n outline-offset: 2px;\n border-radius: var(--%NS%radius-sm);\n}\n\n\n\n[data-wide][_nghost-%COMP%] {\n grid-column: 1 / -1;\n}\n\n.cell__stage[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: center;\n min-height: 120px;\n padding: var(--%NS%sp-5);\n overflow: hidden;\n outline: 1px solid var(--%NS%prism-stage-edge);\n outline-offset: -1px;\n background-color: var(--%NS%prism-stage);\n border-radius: var(--%NS%radius-sm);\n}\n\n.cell__mount[_ngcontent-%COMP%] {\n display: inline-block;\n max-width: 100%;\n}\n\n[data-wide][_nghost-%COMP%] .cell__mount[_ngcontent-%COMP%], \n[data-stretch][_nghost-%COMP%] .cell__mount[_ngcontent-%COMP%] {\n display: block;\n width: 100%;\n}\n\n\n\n.cell__stage[data-unfit][_ngcontent-%COMP%] {\n outline-style: dashed;\n background: none;\n}\n\n.cell__stage[data-unfit][_ngcontent-%COMP%] .cell__mount[_ngcontent-%COMP%] {\n display: none;\n}\n\n.cell__unfit[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--%NS%sp-1);\n align-items: center;\n max-width: 100%;\n font-family: var(--%NS%prism-font-mono);\n font-size: var(--%NS%fs-xs);\n color: var(--%NS%prism-text-muted);\n text-align: center;\n}\n\n.cell__unfit-mark[_ngcontent-%COMP%] {\n font-size: var(--%NS%fs-md);\n line-height: 1;\n}\n\n\n\n\n\n.cell__caption[_ngcontent-%COMP%] {\n overflow: hidden;\n text-overflow: ellipsis;\n font-family: var(--%NS%prism-font-mono);\n font-size: var(--%NS%fs-xs);\n color: var(--%NS%prism-text-muted);\n white-space: nowrap;\n}", "[data-bg=\"dots\"][_ngcontent-%COMP%] {\n background-image: radial-gradient(circle, var(--%NS%prism-dot) 1px, transparent 1px);\n background-size: 20px 20px;\n }\n\n [data-bg=\"plain\"][_ngcontent-%COMP%] {\n background-image: none;\n }\n\n \n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [data-bg=\"light\"][_ngcontent-%COMP%] {\n background-color: var(--%NS%prism-void-light, #f7f5fc);\n background-image: none;\n --%NS%prism-measure: #ca00c1;\n --%NS%prism-measure-plate: var(--%NS%prism-void-light, #f7f5fc);\n }\n [data-bg=\"dark\"][_ngcontent-%COMP%] {\n background-color: var(--%NS%prism-void-dark, #07050f);\n background-image: none;\n --%NS%prism-measure: #f632ff;\n --%NS%prism-measure-plate: var(--%NS%prism-void-dark, #07050f);\n }\n\n \n\n\n [data-bg=\"checker\"][_ngcontent-%COMP%], \n [data-bg=\"transparent\"][_ngcontent-%COMP%] {\n background-image:\n linear-gradient(45deg, var(--%NS%prism-border) 25%, transparent 25%),\n linear-gradient(-45deg, var(--%NS%prism-border) 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, var(--%NS%prism-border) 75%),\n linear-gradient(-45deg, transparent 75%, var(--%NS%prism-border) 75%);\n background-size: 16px 16px;\n background-position: 0 0, 0 8px, 8px -8px, -8px 0;\n }"] });
236
+ } }, styles: ["[_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--%NS%sp-2);\n min-width: 0;\n cursor: pointer;\n}\n\n[_nghost-%COMP%]:focus-visible {\n outline: 2px solid var(--%NS%prism-primary);\n outline-offset: 2px;\n border-radius: var(--%NS%radius-sm);\n}\n\n\n\n[data-wide][_nghost-%COMP%] {\n grid-column: 1 / -1;\n}\n\n.cell__stage[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: center;\n min-height: 120px;\n padding: var(--%NS%sp-5);\n overflow: hidden;\n outline: 1px solid var(--%NS%prism-stage-edge);\n outline-offset: -1px;\n background-color: var(--%NS%prism-stage);\n border-radius: var(--%NS%radius-sm);\n}\n\n\n\n[data-matrix][_nghost-%COMP%] .cell__stage[_ngcontent-%COMP%] {\n min-height: 72px;\n padding: var(--%NS%sp-3);\n}\n\n\n\n\n[_nghost-%COMP%]:hover .cell__stage[_ngcontent-%COMP%], \n[data-current][_nghost-%COMP%] .cell__stage[_ngcontent-%COMP%] {\n outline-width: 1.5px;\n outline-color: var(--%NS%prism-primary);\n outline-offset: 1px;\n}\n\n.cell__mount[_ngcontent-%COMP%] {\n display: inline-block;\n max-width: 100%;\n}\n\n[data-wide][_nghost-%COMP%] .cell__mount[_ngcontent-%COMP%], \n[data-stretch][_nghost-%COMP%] .cell__mount[_ngcontent-%COMP%] {\n display: block;\n width: 100%;\n}\n\n\n\n.cell__stage[data-unfit][_ngcontent-%COMP%] {\n outline-style: dashed;\n background: none;\n}\n\n.cell__stage[data-unfit][_ngcontent-%COMP%] .cell__mount[_ngcontent-%COMP%] {\n display: none;\n}\n\n\n.cell__unfit[_ngcontent-%COMP%] {\n font-family: var(--%NS%prism-font-mono);\n font-size: var(--%NS%fs-md);\n line-height: 1;\n color: var(--%NS%prism-text-muted);\n}\n\n\n\n\n\n.cell__caption[_ngcontent-%COMP%] {\n overflow: hidden;\n text-overflow: ellipsis;\n font-family: var(--%NS%prism-font-mono);\n font-size: var(--%NS%fs-xs);\n color: var(--%NS%prism-text-muted);\n white-space: nowrap;\n}", "[data-bg=\"dots\"][_ngcontent-%COMP%] {\n background-image: radial-gradient(circle, var(--%NS%prism-dot) 1px, transparent 1px);\n background-size: 20px 20px;\n }\n\n [data-bg=\"plain\"][_ngcontent-%COMP%] {\n background-image: none;\n }\n\n \n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [data-bg=\"light\"][_ngcontent-%COMP%] {\n background-color: var(--%NS%prism-void-light, #f7f5fc);\n background-image: none;\n --%NS%prism-measure: #ca00c1;\n --%NS%prism-measure-plate: var(--%NS%prism-void-light, #f7f5fc);\n }\n [data-bg=\"dark\"][_ngcontent-%COMP%] {\n background-color: var(--%NS%prism-void-dark, #07050f);\n background-image: none;\n --%NS%prism-measure: #f632ff;\n --%NS%prism-measure-plate: var(--%NS%prism-void-dark, #07050f);\n }\n\n \n\n\n [data-bg=\"checker\"][_ngcontent-%COMP%], \n [data-bg=\"transparent\"][_ngcontent-%COMP%] {\n background-image:\n linear-gradient(45deg, var(--%NS%prism-border) 25%, transparent 25%),\n linear-gradient(-45deg, var(--%NS%prism-border) 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, var(--%NS%prism-border) 75%),\n linear-gradient(-45deg, transparent 75%, var(--%NS%prism-border) 75%);\n background-size: 16px 16px;\n background-position: 0 0, 0 8px, 8px -8px, -8px 0;\n }"] });
229
237
  }
230
238
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismOverviewCellComponent, [{
231
239
  type: Component,
@@ -233,14 +241,17 @@ export class PrismOverviewCellComponent {
233
241
  role: 'listitem',
234
242
  tabindex: '0',
235
243
  '[attr.aria-label]': 'label()',
244
+ '[attr.title]': 'unfitReason()',
245
+ '[attr.data-matrix]': "mode() === 'matrix' ? '' : null",
246
+ '[attr.data-current]': "current() ? '' : null",
236
247
  // In the matrix the grid spans are the matrix's own. A stretch variant still
237
248
  // fills its cell, so `canvasLayout` holds for the whole row.
238
249
  '[attr.data-wide]': "mode() === 'sheet' && stretches() ? '' : null",
239
250
  '[attr.data-stretch]': "mode() === 'matrix' && stretches() ? '' : null",
240
251
  '(click)': 'open()',
241
252
  '(keydown)': 'onKeydown($event)'
242
- }, template: "<div\n class=\"cell__stage\"\n [attr.data-bg]=\"unfitReason() === null ? bg() : null\"\n [attr.data-unfit]=\"unfitReason() === null ? null : ''\">\n <div class=\"cell__mount\"><ng-container #outlet /></div>\n @if (unfitReason(); as reason) {\n <div class=\"cell__unfit\">\n <span\n class=\"cell__unfit-mark\"\n aria-hidden=\"true\"\n >\u2013</span\n >\n <span class=\"cell__unfit-reason\">{{ reason }}</span>\n </div>\n }\n</div>\n@if (mode() === 'sheet') {\n <span class=\"cell__caption\">{{ caption() }}</span>\n}\n", styles: [":host {\n display: flex;\n flex-direction: column;\n gap: var(--sp-2);\n min-width: 0;\n cursor: pointer;\n}\n\n:host(:focus-visible) {\n outline: 2px solid var(--prism-primary);\n outline-offset: 2px;\n border-radius: var(--radius-sm);\n}\n\n/* A stretch variant has no intrinsic width to compare against its\n neighbours, so it takes the row rather than a column. */\n:host([data-wide]) {\n grid-column: 1 / -1;\n}\n\n.cell__stage {\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: center;\n min-height: 120px;\n padding: var(--sp-5);\n overflow: hidden;\n outline: 1px solid var(--prism-stage-edge);\n outline-offset: -1px;\n background-color: var(--prism-stage);\n border-radius: var(--radius-sm);\n}\n\n.cell__mount {\n display: inline-block;\n max-width: 100%;\n}\n\n:host([data-wide]) .cell__mount,\n:host([data-stretch]) .cell__mount {\n display: block;\n width: 100%;\n}\n\n/* A state that does not fit shows no component and paints no ground: an\n empty frame with the reason, so it cannot pass for a rendering. */\n.cell__stage[data-unfit] {\n outline-style: dashed;\n background: none;\n}\n\n.cell__stage[data-unfit] .cell__mount {\n display: none;\n}\n\n.cell__unfit {\n display: flex;\n flex-direction: column;\n gap: var(--sp-1);\n align-items: center;\n max-width: 100%;\n font-family: var(--prism-font-mono);\n font-size: var(--fs-xs);\n color: var(--prism-text-muted);\n text-align: center;\n}\n\n.cell__unfit-mark {\n font-size: var(--fs-md);\n line-height: 1;\n}\n\n/* The caption sits below the frame, not on it. Inside, it would have to\n invert against every background the cell can paint, and gaining a new\n contrast rule per CanvasBg value is the cost the sheet exists to\n avoid. */\n.cell__caption {\n overflow: hidden;\n text-overflow: ellipsis;\n font-family: var(--prism-font-mono);\n font-size: var(--fs-xs);\n color: var(--prism-text-muted);\n white-space: nowrap;\n}\n", "\n [data-bg=\"dots\"] {\n background-image: radial-gradient(circle, var(--prism-dot) 1px, transparent 1px);\n background-size: 20px 20px;\n }\n\n [data-bg=\"plain\"] {\n background-image: none;\n }\n\n /* Flat, not dotted. \"light\" and \"dark\" name the surface a component was\n designed against, and their colour is absolute rather than a theme token,\n which makes them the values to declare for a screenshot baseline. Use\n \"dots\" for the grid. */\n /* These two also re-point --prism-measure. Other overlays use theme colours\n on theme surfaces, but these grounds ignore the theme: \"light\" stays\n near-white in the dark theme and \"dark\" stays near-black in the light one.\n The dark theme's magenta reaches only 2.85:1 on the light ground, under the\n 4.5:1 its 9px readout needs, so the measurement colour has to follow the\n ground, not the theme.\n\n --prism-measure-plate follows it for the same reason. It is the surface\n the measuring tool's value label paints itself on, so the label reads as a\n gap in the measurement line rather than a badge on top of it. At its\n --prism-stage fallback it would be the theme's stage under a re-pointed\n foreground: the light theme's magenta on the dark theme's stage reads\n 3.71:1, the dark theme's on white 3.08:1. Pinned to the ground the same way,\n the pairs reach 4.54:1 and 6.57:1. A color-mix against the ground would\n work too, but this file already states both grounds literally, and one\n mechanism per decision is enough.\n\n Literal values because this file is theme-independent, like the two\n grounds below. Keep them in step with --prism-measure in\n prism-default-theme.ts; semantic-colours.spec.ts fails if they drift. */\n [data-bg=\"light\"] {\n background-color: var(--prism-void-light, #f7f5fc);\n background-image: none;\n --prism-measure: #ca00c1;\n --prism-measure-plate: var(--prism-void-light, #f7f5fc);\n }\n [data-bg=\"dark\"] {\n background-color: var(--prism-void-dark, #07050f);\n background-image: none;\n --prism-measure: #f632ff;\n --prism-measure-plate: var(--prism-void-dark, #07050f);\n }\n\n /* \"transparent\" shares the checkerboard. In the app the checkerboard is\n already the UI's sign for \"no surface\", and a see-through stage would only\n show the shell behind it. Only CAPTURE_STYLES tells the two apart. */\n [data-bg=\"checker\"],\n [data-bg=\"transparent\"] {\n background-image:\n linear-gradient(45deg, var(--prism-border) 25%, transparent 25%),\n linear-gradient(-45deg, var(--prism-border) 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, var(--prism-border) 75%),\n linear-gradient(-45deg, transparent 75%, var(--prism-border) 75%);\n background-size: 16px 16px;\n background-position: 0 0, 0 8px, 8px -8px, -8px 0;\n }\n"] }]
253
+ }, template: "<div\n class=\"cell__stage\"\n [attr.data-bg]=\"unfitReason() === null ? bg() : null\"\n [attr.data-unfit]=\"unfitReason() === null ? null : ''\">\n <div class=\"cell__mount\"><ng-container #outlet /></div>\n @if (unfitReason() !== null) {\n <span\n class=\"cell__unfit\"\n aria-hidden=\"true\"\n >\u2013</span\n >\n }\n</div>\n@if (mode() === 'sheet') {\n <span class=\"cell__caption\">{{ caption() }}</span>\n}\n", styles: [":host {\n display: flex;\n flex-direction: column;\n gap: var(--sp-2);\n min-width: 0;\n cursor: pointer;\n}\n\n:host(:focus-visible) {\n outline: 2px solid var(--prism-primary);\n outline-offset: 2px;\n border-radius: var(--radius-sm);\n}\n\n/* A stretch variant has no intrinsic width to compare against its\n neighbours, so it takes the row rather than a column. */\n:host([data-wide]) {\n grid-column: 1 / -1;\n}\n\n.cell__stage {\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: center;\n min-height: 120px;\n padding: var(--sp-5);\n overflow: hidden;\n outline: 1px solid var(--prism-stage-edge);\n outline-offset: -1px;\n background-color: var(--prism-stage);\n border-radius: var(--radius-sm);\n}\n\n/* The matrix is denser than the sheet: a row of five states has to fit the\n panel. The component keeps its own size; only the frame around it shrinks. */\n:host([data-matrix]) .cell__stage {\n min-height: 72px;\n padding: var(--sp-3);\n}\n\n/* What the click opens, and what the Playground shows right now. Outside the\n stage, on the panel surface, where the primary holds its contrast whatever\n ground the cell paints. Longhands, so a dashed n/a frame stays dashed. */\n:host(:hover) .cell__stage,\n:host([data-current]) .cell__stage {\n outline-width: 1.5px;\n outline-color: var(--prism-primary);\n outline-offset: 1px;\n}\n\n.cell__mount {\n display: inline-block;\n max-width: 100%;\n}\n\n:host([data-wide]) .cell__mount,\n:host([data-stretch]) .cell__mount {\n display: block;\n width: 100%;\n}\n\n/* A state that does not fit shows no component and paints no ground: an\n empty, dashed frame, so it cannot pass for a rendering. */\n.cell__stage[data-unfit] {\n outline-style: dashed;\n background: none;\n}\n\n.cell__stage[data-unfit] .cell__mount {\n display: none;\n}\n\n/* Only the dash: the reason is the cell's tooltip and part of its label. */\n.cell__unfit {\n font-family: var(--prism-font-mono);\n font-size: var(--fs-md);\n line-height: 1;\n color: var(--prism-text-muted);\n}\n\n/* The caption sits below the frame, not on it. Inside, it would have to\n invert against every background the cell can paint, and gaining a new\n contrast rule per CanvasBg value is the cost the sheet exists to\n avoid. */\n.cell__caption {\n overflow: hidden;\n text-overflow: ellipsis;\n font-family: var(--prism-font-mono);\n font-size: var(--fs-xs);\n color: var(--prism-text-muted);\n white-space: nowrap;\n}\n", "\n [data-bg=\"dots\"] {\n background-image: radial-gradient(circle, var(--prism-dot) 1px, transparent 1px);\n background-size: 20px 20px;\n }\n\n [data-bg=\"plain\"] {\n background-image: none;\n }\n\n /* Flat, not dotted. \"light\" and \"dark\" name the surface a component was\n designed against, and their colour is absolute rather than a theme token,\n which makes them the values to declare for a screenshot baseline. Use\n \"dots\" for the grid. */\n /* These two also re-point --prism-measure. Other overlays use theme colours\n on theme surfaces, but these grounds ignore the theme: \"light\" stays\n near-white in the dark theme and \"dark\" stays near-black in the light one.\n The dark theme's magenta reaches only 2.85:1 on the light ground, under the\n 4.5:1 its 9px readout needs, so the measurement colour has to follow the\n ground, not the theme.\n\n --prism-measure-plate follows it for the same reason. It is the surface\n the measuring tool's value label paints itself on, so the label reads as a\n gap in the measurement line rather than a badge on top of it. At its\n --prism-stage fallback it would be the theme's stage under a re-pointed\n foreground: the light theme's magenta on the dark theme's stage reads\n 3.71:1, the dark theme's on white 3.08:1. Pinned to the ground the same way,\n the pairs reach 4.54:1 and 6.57:1. A color-mix against the ground would\n work too, but this file already states both grounds literally, and one\n mechanism per decision is enough.\n\n Literal values because this file is theme-independent, like the two\n grounds below. Keep them in step with --prism-measure in canvas-overlay-tokens.ts and\n prism-default-theme.ts; semantic-colours.spec.ts fails if they drift. */\n [data-bg=\"light\"] {\n background-color: var(--prism-void-light, #f7f5fc);\n background-image: none;\n --prism-measure: #ca00c1;\n --prism-measure-plate: var(--prism-void-light, #f7f5fc);\n }\n [data-bg=\"dark\"] {\n background-color: var(--prism-void-dark, #07050f);\n background-image: none;\n --prism-measure: #f632ff;\n --prism-measure-plate: var(--prism-void-dark, #07050f);\n }\n\n /* \"transparent\" shares the checkerboard. In the app the checkerboard is\n already the UI's sign for \"no surface\", and a see-through stage would only\n show the shell behind it. Only CAPTURE_STYLES tells the two apart. */\n [data-bg=\"checker\"],\n [data-bg=\"transparent\"] {\n background-image:\n linear-gradient(45deg, var(--prism-border) 25%, transparent 25%),\n linear-gradient(-45deg, var(--prism-border) 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, var(--prism-border) 75%),\n linear-gradient(-45deg, transparent 75%, var(--prism-border) 75%);\n background-size: 16px 16px;\n background-position: 0 0, 0 8px, 8px -8px, -8px 0;\n }\n"] }]
243
254
  }], () => [], { component: [{ type: i0.Input, args: [{ isSignal: true, alias: "component", required: true }] }], index: [{ type: i0.Input, args: [{ isSignal: true, alias: "index", required: true }] }], state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], fitChange: [{ type: i0.Output, args: ["fitChange"] }], outlet: [{ type: i0.ViewChild, args: ['outlet', { ...{
244
255
  read: ViewContainerRef
245
256
  }, isSignal: true }] }] }); })();
246
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismOverviewCellComponent, { className: "PrismOverviewCellComponent", filePath: "app/overview/prism-overview-cell.component.ts", lineNumber: 70 }); })();
257
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismOverviewCellComponent, { className: "PrismOverviewCellComponent", filePath: "app/overview/prism-overview-cell.component.ts", lineNumber: 77 }); })();