@ng-prism/core 22.2.0-beta.4 → 22.2.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 (201) hide show
  1. package/dist/app/canvas/canvas-bg.styles.d.ts +19 -0
  2. package/dist/app/canvas/canvas-bg.styles.d.ts.map +1 -0
  3. package/dist/app/canvas/canvas-bg.styles.js +58 -0
  4. package/dist/app/canvas/prism-canvas-bg-pill.component.d.ts.map +1 -1
  5. package/dist/app/canvas/prism-canvas-bg-pill.component.js +3 -3
  6. package/dist/app/canvas/prism-canvas-rulers.component.js +1 -1
  7. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts +31 -7
  8. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts.map +1 -1
  9. package/dist/app/canvas/prism-canvas-toolbar.component.js +158 -121
  10. package/dist/app/canvas/prism-template-popover.component.d.ts +0 -3
  11. package/dist/app/canvas/prism-template-popover.component.d.ts.map +1 -1
  12. package/dist/app/canvas/prism-template-popover.component.js +43 -59
  13. package/dist/app/component-head/head-metrics.d.ts +41 -0
  14. package/dist/app/component-head/head-metrics.d.ts.map +1 -0
  15. package/dist/app/component-head/head-metrics.js +39 -0
  16. package/dist/app/component-head/prism-component-head.component.d.ts +10 -2
  17. package/dist/app/component-head/prism-component-head.component.d.ts.map +1 -1
  18. package/dist/app/component-head/prism-component-head.component.js +107 -209
  19. package/dist/app/component-head/prism-head-gauge.component.d.ts +23 -0
  20. package/dist/app/component-head/prism-head-gauge.component.d.ts.map +1 -0
  21. package/dist/app/component-head/prism-head-gauge.component.js +123 -0
  22. package/dist/app/component-head/prism-head-info.component.d.ts +23 -0
  23. package/dist/app/component-head/prism-head-info.component.d.ts.map +1 -0
  24. package/dist/app/component-head/prism-head-info.component.js +124 -0
  25. package/dist/app/component-head/prism-stat.component.d.ts +10 -4
  26. package/dist/app/component-head/prism-stat.component.d.ts.map +1 -1
  27. package/dist/app/component-head/prism-stat.component.js +34 -44
  28. package/dist/app/controls/boolean-control.component.js +1 -1
  29. package/dist/app/controls/json-control.component.js +1 -1
  30. package/dist/app/controls/number-control.component.js +1 -1
  31. package/dist/app/controls/string-control.component.js +1 -1
  32. package/dist/app/controls/union-control.component.js +1 -1
  33. package/dist/app/header/prism-header.component.js +2 -2
  34. package/dist/app/icons/icon-registry.d.ts +15 -0
  35. package/dist/app/icons/icon-registry.d.ts.map +1 -0
  36. package/dist/app/icons/icon-registry.js +44 -0
  37. package/dist/app/icons/prism-icon.component.d.ts +2 -2
  38. package/dist/app/icons/prism-icon.component.d.ts.map +1 -1
  39. package/dist/app/icons/prism-icon.component.js +7 -32
  40. package/dist/app/index.d.ts +3 -1
  41. package/dist/app/index.d.ts.map +1 -1
  42. package/dist/app/index.js +26 -1
  43. package/dist/app/layout-menu/prism-layout-menu.component.js +3 -3
  44. package/dist/app/overview/overview-panel.d.ts +3 -0
  45. package/dist/app/overview/overview-panel.d.ts.map +1 -0
  46. package/dist/app/overview/overview-panel.js +9 -0
  47. package/dist/app/overview/overview-visibility.d.ts +15 -0
  48. package/dist/app/overview/overview-visibility.d.ts.map +1 -0
  49. package/dist/app/overview/overview-visibility.js +18 -0
  50. package/dist/app/overview/prism-overview-cell.component.d.ts +29 -0
  51. package/dist/app/overview/prism-overview-cell.component.d.ts.map +1 -0
  52. package/dist/app/overview/prism-overview-cell.component.js +136 -0
  53. package/dist/app/overview/prism-overview.component.d.ts +17 -0
  54. package/dist/app/overview/prism-overview.component.d.ts.map +1 -0
  55. package/dist/app/overview/prism-overview.component.js +53 -0
  56. package/dist/app/page-renderer/prism-page-renderer.component.d.ts.map +1 -1
  57. package/dist/app/page-renderer/prism-page-renderer.component.js +3 -3
  58. package/dist/app/panels/a11y/a11y-audit.service.d.ts +1 -1
  59. package/dist/app/panels/a11y/a11y-audit.service.d.ts.map +1 -1
  60. package/dist/app/panels/a11y/a11y-header-badge.component.d.ts.map +1 -1
  61. package/dist/app/panels/a11y/a11y-header-badge.component.js +21 -30
  62. package/dist/app/panels/a11y/a11y-keyboard-overlay.component.js +1 -1
  63. package/dist/app/panels/a11y/a11y-keyboard.component.js +1 -1
  64. package/dist/app/panels/a11y/a11y-keyboard.service.d.ts +1 -1
  65. package/dist/app/panels/a11y/a11y-keyboard.service.d.ts.map +1 -1
  66. package/dist/app/panels/a11y/a11y-overlay-host.component.js +1 -1
  67. package/dist/app/panels/a11y/a11y-panel-state.service.d.ts +1 -1
  68. package/dist/app/panels/a11y/a11y-panel-state.service.d.ts.map +1 -1
  69. package/dist/app/panels/a11y/a11y-panel.component.js +1 -1
  70. package/dist/app/panels/a11y/a11y-perspective.service.d.ts +1 -1
  71. package/dist/app/panels/a11y/a11y-perspective.service.d.ts.map +1 -1
  72. package/dist/app/panels/a11y/a11y-score.component.js +1 -1
  73. package/dist/app/panels/a11y/a11y-sr-overlay.component.js +1 -1
  74. package/dist/app/panels/a11y/a11y-sr.component.js +1 -1
  75. package/dist/app/panels/a11y/a11y-sr.service.d.ts +1 -1
  76. package/dist/app/panels/a11y/a11y-sr.service.d.ts.map +1 -1
  77. package/dist/app/panels/a11y/a11y-summary.d.ts +15 -0
  78. package/dist/app/panels/a11y/a11y-summary.d.ts.map +1 -0
  79. package/dist/app/panels/a11y/a11y-summary.js +33 -0
  80. package/dist/app/panels/a11y/a11y-tree.component.js +2 -2
  81. package/dist/app/panels/a11y/a11y-tree.service.d.ts +1 -1
  82. package/dist/app/panels/a11y/a11y-tree.service.d.ts.map +1 -1
  83. package/dist/app/panels/a11y/a11y-violations.component.js +3 -3
  84. package/dist/app/panels/a11y/a11y.types.d.ts +14 -0
  85. package/dist/app/panels/a11y/a11y.types.d.ts.map +1 -1
  86. package/dist/app/panels/builtin-navigation-decorations.d.ts +8 -0
  87. package/dist/app/panels/builtin-navigation-decorations.d.ts.map +1 -0
  88. package/dist/app/panels/builtin-navigation-decorations.js +20 -0
  89. package/dist/app/panels/builtin-panels.d.ts.map +1 -1
  90. package/dist/app/panels/builtin-panels.js +2 -0
  91. package/dist/app/panels/controls/prism-controls-panel.component.js +1 -1
  92. package/dist/app/panels/events/prism-events-panel.component.js +1 -1
  93. package/dist/app/panels/events/prism-json-node.component.js +1 -1
  94. package/dist/app/panels/panel-host/panel-badge.d.ts +8 -2
  95. package/dist/app/panels/panel-host/panel-badge.d.ts.map +1 -1
  96. package/dist/app/panels/panel-host/panel-badge.js +8 -13
  97. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts +8 -2
  98. package/dist/app/panels/panel-host/prism-panel-host.component.d.ts.map +1 -1
  99. package/dist/app/panels/panel-host/prism-panel-host.component.js +33 -22
  100. package/dist/app/renderer/overlay-resolver.d.ts.map +1 -1
  101. package/dist/app/renderer/overlay-resolver.js +12 -1
  102. package/dist/app/renderer/prism-renderer.component.d.ts +0 -1
  103. package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
  104. package/dist/app/renderer/prism-renderer.component.js +11 -75
  105. package/dist/app/renderer/projectable-content.d.ts +10 -0
  106. package/dist/app/renderer/projectable-content.d.ts.map +1 -0
  107. package/dist/app/renderer/projectable-content.js +60 -0
  108. package/dist/app/services/prism-canvas.service.d.ts +1 -1
  109. package/dist/app/services/prism-canvas.service.d.ts.map +1 -1
  110. package/dist/app/services/prism-capture.service.d.ts +7 -1
  111. package/dist/app/services/prism-capture.service.d.ts.map +1 -1
  112. package/dist/app/services/prism-capture.service.js +27 -1
  113. package/dist/app/services/prism-event-log.service.d.ts +1 -1
  114. package/dist/app/services/prism-event-log.service.d.ts.map +1 -1
  115. package/dist/app/services/prism-layout.service.d.ts +1 -4
  116. package/dist/app/services/prism-layout.service.d.ts.map +1 -1
  117. package/dist/app/services/prism-layout.service.js +0 -8
  118. package/dist/app/services/prism-manifest.service.d.ts +1 -1
  119. package/dist/app/services/prism-manifest.service.d.ts.map +1 -1
  120. package/dist/app/services/prism-navigation.service.d.ts +1 -1
  121. package/dist/app/services/prism-navigation.service.d.ts.map +1 -1
  122. package/dist/app/services/prism-panel.service.d.ts +19 -1
  123. package/dist/app/services/prism-panel.service.d.ts.map +1 -1
  124. package/dist/app/services/prism-panel.service.js +28 -0
  125. package/dist/app/services/prism-persistence.service.d.ts +1 -1
  126. package/dist/app/services/prism-persistence.service.d.ts.map +1 -1
  127. package/dist/app/services/prism-plugin.service.d.ts +8 -2
  128. package/dist/app/services/prism-plugin.service.d.ts.map +1 -1
  129. package/dist/app/services/prism-plugin.service.js +15 -0
  130. package/dist/app/services/prism-renderer.service.d.ts +1 -1
  131. package/dist/app/services/prism-renderer.service.d.ts.map +1 -1
  132. package/dist/app/services/prism-search.service.d.ts +1 -1
  133. package/dist/app/services/prism-search.service.d.ts.map +1 -1
  134. package/dist/app/services/prism-theme.service.d.ts +1 -1
  135. package/dist/app/services/prism-theme.service.d.ts.map +1 -1
  136. package/dist/app/services/prism-url-state.service.d.ts +1 -1
  137. package/dist/app/services/prism-url-state.service.d.ts.map +1 -1
  138. package/dist/app/services/prism-variant-bg.service.d.ts +1 -1
  139. package/dist/app/services/prism-variant-bg.service.d.ts.map +1 -1
  140. package/dist/app/shared/prism-metric-badge.component.d.ts +32 -0
  141. package/dist/app/shared/prism-metric-badge.component.d.ts.map +1 -0
  142. package/dist/app/shared/prism-metric-badge.component.js +70 -0
  143. package/dist/app/shell/prism-shell.component.d.ts +0 -1
  144. package/dist/app/shell/prism-shell.component.d.ts.map +1 -1
  145. package/dist/app/shell/prism-shell.component.js +57 -49
  146. package/dist/app/sidebar/navigation-decorations.d.ts +70 -0
  147. package/dist/app/sidebar/navigation-decorations.d.ts.map +1 -0
  148. package/dist/app/sidebar/navigation-decorations.js +87 -0
  149. package/dist/app/sidebar/prism-sidebar.component.d.ts +29 -8
  150. package/dist/app/sidebar/prism-sidebar.component.d.ts.map +1 -1
  151. package/dist/app/sidebar/prism-sidebar.component.js +129 -76
  152. package/dist/app/theme/prism-default-theme.d.ts.map +1 -1
  153. package/dist/app/theme/prism-default-theme.js +44 -4
  154. package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts +4 -1
  155. package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts.map +1 -1
  156. package/dist/app/variant-ribbon/prism-variant-ribbon.component.js +13 -26
  157. package/dist/app/variant-ribbon/spectrum.d.ts +19 -0
  158. package/dist/app/variant-ribbon/spectrum.d.ts.map +1 -0
  159. package/dist/app/variant-ribbon/spectrum.js +15 -0
  160. package/dist/app/view-tab-bar/next-view-id.d.ts +12 -0
  161. package/dist/app/view-tab-bar/next-view-id.d.ts.map +1 -0
  162. package/dist/app/view-tab-bar/next-view-id.js +16 -0
  163. package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts +0 -1
  164. package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts.map +1 -1
  165. package/dist/app/view-tab-bar/prism-view-panel-host.component.js +11 -12
  166. package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts +0 -1
  167. package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts.map +1 -1
  168. package/dist/app/view-tab-bar/prism-view-tab-bar.component.js +6 -13
  169. package/dist/builder/a11y/a11y-report-reader.d.ts +15 -1
  170. package/dist/builder/a11y/a11y-report-reader.d.ts.map +1 -1
  171. package/dist/builder/a11y/a11y-report-reader.js +37 -0
  172. package/dist/builder/shared/prism-pipeline.d.ts.map +1 -1
  173. package/dist/builder/shared/prism-pipeline.js +19 -2
  174. package/dist/plugin/index.d.ts +2 -1
  175. package/dist/plugin/index.d.ts.map +1 -1
  176. package/dist/plugin/index.js +10 -0
  177. package/dist/plugin/plugin.types.d.ts +33 -0
  178. package/dist/plugin/plugin.types.d.ts.map +1 -1
  179. package/dist/transformer/cli.js +0 -0
  180. package/package.json +1 -1
  181. package/dist/app/canvas/prism-code-drawer.component.d.ts +0 -14
  182. package/dist/app/canvas/prism-code-drawer.component.d.ts.map +0 -1
  183. package/dist/app/canvas/prism-code-drawer.component.js +0 -116
  184. package/dist/app/component-header/prism-component-header.component.d.ts +0 -8
  185. package/dist/app/component-header/prism-component-header.component.d.ts.map +0 -1
  186. package/dist/app/component-header/prism-component-header.component.js +0 -77
  187. package/dist/cli/audit-a11y/aggregator.d.ts +0 -10
  188. package/dist/cli/audit-a11y/aggregator.d.ts.map +0 -1
  189. package/dist/cli/audit-a11y/aggregator.js +0 -64
  190. package/dist/cli/audit-a11y/auditor.d.ts +0 -14
  191. package/dist/cli/audit-a11y/auditor.d.ts.map +0 -1
  192. package/dist/cli/audit-a11y/auditor.js +0 -104
  193. package/dist/cli/audit-a11y/cli.d.ts +0 -3
  194. package/dist/cli/audit-a11y/cli.d.ts.map +0 -1
  195. package/dist/cli/audit-a11y/cli.js +0 -143
  196. package/dist/cli/audit-a11y/index.d.ts +0 -4
  197. package/dist/cli/audit-a11y/index.d.ts.map +0 -1
  198. package/dist/cli/audit-a11y/index.js +0 -3
  199. package/dist/cli/audit-a11y/static-server.d.ts +0 -11
  200. package/dist/cli/audit-a11y/static-server.d.ts.map +0 -1
  201. package/dist/cli/audit-a11y/static-server.js +0 -61
@@ -2,6 +2,7 @@ import { Component, inject, computed, effect, viewChild, viewChildren, ChangeDet
2
2
  import { PrismIconComponent } from '../icons/prism-icon.component.js';
3
3
  import { PrismNavigationService } from '../services/prism-navigation.service.js';
4
4
  import { PrismRendererService } from '../services/prism-renderer.service.js';
5
+ import { spectrumSlot } from './spectrum.js';
5
6
  import * as i0 from "@angular/core";
6
7
  const _c0 = ["tabsContainer"];
7
8
  const _c1 = ["tabButton"];
@@ -10,22 +11,21 @@ function PrismVariantRibbonComponent_Conditional_0_For_4_Template(rf, ctx) { if
10
11
  const _r2 = i0.ɵɵgetCurrentView();
11
12
  i0.ɵɵelementStart(0, "button", 10, 1);
12
13
  i0.ɵɵlistener("click", function PrismVariantRibbonComponent_Conditional_0_For_4_Template_button_click_0_listener() { const ɵ$index_6_r3 = i0.ɵɵrestoreView(_r2).$index; const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.rendererService.selectVariant(ɵ$index_6_r3)); });
13
- i0.ɵɵelement(2, "span", 11);
14
- i0.ɵɵtext(3);
14
+ i0.ɵɵtext(2);
15
15
  i0.ɵɵelementEnd();
16
16
  } if (rf & 2) {
17
17
  const v_r5 = ctx.$implicit;
18
18
  const ɵ$index_6_r3 = ctx.$index;
19
19
  const ctx_r3 = i0.ɵɵnextContext(2);
20
- i0.ɵɵstyleProp("--vc", ctx_r3.variantColor(v_r5.name, ɵ$index_6_r3));
20
+ i0.ɵɵstyleProp("--%NS%i", ctx_r3.slot(ɵ$index_6_r3).i)("--%NS%n", ctx_r3.slot(ɵ$index_6_r3).n);
21
21
  i0.ɵɵclassProp("v-tab--active", ctx_r3.rendererService.activeVariantIndex() === ɵ$index_6_r3);
22
- i0.ɵɵadvance(3);
22
+ i0.ɵɵadvance(2);
23
23
  i0.ɵɵtextInterpolate1(" ", v_r5.name, " ");
24
24
  } }
25
25
  function PrismVariantRibbonComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
26
26
  const _r1 = i0.ɵɵgetCurrentView();
27
27
  i0.ɵɵelementStart(0, "nav", 2)(1, "div", 3, 0);
28
- i0.ɵɵrepeaterCreate(3, PrismVariantRibbonComponent_Conditional_0_For_4_Template, 4, 5, "button", 4, _forTrack0);
28
+ i0.ɵɵrepeaterCreate(3, PrismVariantRibbonComponent_Conditional_0_For_4_Template, 3, 7, "button", 4, _forTrack0);
29
29
  i0.ɵɵelementEnd();
30
30
  i0.ɵɵelementStart(5, "div", 5)(6, "button", 6);
31
31
  i0.ɵɵlistener("click", function PrismVariantRibbonComponent_Conditional_0_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r1); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.prev()); });
@@ -48,19 +48,6 @@ function PrismVariantRibbonComponent_Conditional_0_Template(rf, ctx) { if (rf &
48
48
  i0.ɵɵadvance();
49
49
  i0.ɵɵproperty("size", 14);
50
50
  } }
51
- function variantColor(name, index) {
52
- const palette = [
53
- '#a78bfa',
54
- '#60a5fa',
55
- '#34d399',
56
- '#fbbf24',
57
- '#f472b6',
58
- '#8476a2',
59
- '#ec4899',
60
- '#06b6d4',
61
- ];
62
- return palette[index % palette.length];
63
- }
64
51
  export class PrismVariantRibbonComponent {
65
52
  navigationService = inject(PrismNavigationService);
66
53
  rendererService = inject(PrismRendererService);
@@ -92,8 +79,8 @@ export class PrismVariantRibbonComponent {
92
79
  }
93
80
  });
94
81
  }
95
- variantColor(name, index) {
96
- return variantColor(name, index);
82
+ slot(index) {
83
+ return spectrumSlot(index, this.variants().length);
97
84
  }
98
85
  prev() {
99
86
  const idx = this.rendererService.activeVariantIndex();
@@ -110,11 +97,11 @@ export class PrismVariantRibbonComponent {
110
97
  i0.ɵɵviewQuerySignal(ctx.tabsContainer, _c0, 5)(ctx.tabButtons, _c1, 5);
111
98
  } if (rf & 2) {
112
99
  i0.ɵɵqueryAdvance(2);
113
- } }, decls: 1, vars: 1, consts: [["tabsContainer", ""], ["tabButton", ""], [1, "variant-ribbon"], [1, "variant-ribbon-tabs"], [1, "v-tab", 3, "v-tab--active", "--vc"], [1, "variant-ribbon-right"], ["title", "Previous variant", "aria-label", "Previous variant", 1, "tool-btn", 3, "click", "disabled"], ["name", "chevron-right", 2, "transform", "rotate(180deg)", 3, "size"], ["title", "Next variant", "aria-label", "Next variant", 1, "tool-btn", 3, "click", "disabled"], ["name", "chevron-right", 3, "size"], [1, "v-tab", 3, "click"], [1, "v-dot"]], template: function PrismVariantRibbonComponent_Template(rf, ctx) { if (rf & 1) {
100
+ } }, decls: 1, vars: 1, consts: [["tabsContainer", ""], ["tabButton", ""], [1, "variant-ribbon"], [1, "variant-ribbon-tabs"], [1, "v-tab", 3, "v-tab--active", "--%NS%i", "--%NS%n"], [1, "variant-ribbon-right"], ["title", "Previous variant", "aria-label", "Previous variant", 1, "tool-btn", 3, "click", "disabled"], ["name", "chevron-right", 2, "transform", "rotate(180deg)", 3, "size"], ["title", "Next variant", "aria-label", "Next variant", 1, "tool-btn", 3, "click", "disabled"], ["name", "chevron-right", 3, "size"], [1, "v-tab", 3, "click"]], template: function PrismVariantRibbonComponent_Template(rf, ctx) { if (rf & 1) {
114
101
  i0.ɵɵconditionalCreate(0, PrismVariantRibbonComponent_Conditional_0_Template, 10, 4, "nav", 2);
115
102
  } if (rf & 2) {
116
103
  i0.ɵɵconditional(ctx.variants().length > 0 ? 0 : -1);
117
- } }, dependencies: [PrismIconComponent], styles: ["[_nghost-%COMP%] { display: block; flex-shrink: 0; }\n\n .variant-ribbon[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 0 28px;\n background: var(--prism-bg);\n border-bottom: 1px solid var(--prism-border);\n height: 42px;\n }\n\n .variant-ribbon-tabs[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 2px;\n height: 100%;\n overflow-x: auto;\n scrollbar-width: none;\n }\n .variant-ribbon-tabs[_ngcontent-%COMP%]::-webkit-scrollbar { display: none; }\n\n .v-tab[_ngcontent-%COMP%] {\n position: relative;\n height: 100%;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 0 14px;\n font-size: 13px;\n font-weight: 500;\n color: var(--prism-text-muted);\n white-space: nowrap;\n transition: color var(--dur-fast);\n background: none;\n border: none;\n cursor: pointer;\n font-family: var(--font-sans);\n }\n .v-tab[_ngcontent-%COMP%]::after {\n content: '';\n position: absolute;\n left: 10px;\n right: 10px;\n bottom: 0;\n height: 2px;\n background: linear-gradient(90deg, var(--prism-primary-from), var(--prism-primary-to));\n opacity: 0;\n transition: opacity var(--dur-fast);\n border-radius: 1px 1px 0 0;\n }\n .v-tab[_ngcontent-%COMP%]:hover { color: var(--prism-text-2); }\n .v-tab--active[_ngcontent-%COMP%] { color: var(--prism-text); }\n .v-tab--active[_ngcontent-%COMP%]::after { opacity: 1; }\n\n .v-dot[_ngcontent-%COMP%] {\n width: 6px;\n height: 6px;\n border-radius: 2px;\n background: var(--vc, var(--prism-primary));\n opacity: 0.6;\n }\n .v-tab--active[_ngcontent-%COMP%] .v-dot[_ngcontent-%COMP%] {\n opacity: 1;\n box-shadow: 0 0 6px var(--vc);\n }\n\n .variant-ribbon-right[_ngcontent-%COMP%] {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n padding-left: 12px;\n margin-left: 12px;\n border-left: 1px solid var(--prism-border);\n height: 24px;\n }\n\n .tool-btn[_ngcontent-%COMP%] {\n height: 24px;\n width: 24px;\n display: grid;\n place-items: center;\n border-radius: var(--radius-sm);\n color: var(--prism-text-muted);\n background: none;\n border: none;\n cursor: pointer;\n transition: all var(--dur-fast);\n }\n .tool-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n color: var(--prism-text);\n background: color-mix(in srgb, var(--prism-primary) 8%, transparent);\n }\n .tool-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.3;\n cursor: default;\n }\n\n [_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 2px;\n }"] });
104
+ } }, dependencies: [PrismIconComponent], styles: ["[_nghost-%COMP%] { display: block; flex-shrink: 0; }\n\n .variant-ribbon[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 0 var(--%NS%sp-5);\n background: var(--%NS%prism-bg);\n border-bottom: 1px solid var(--%NS%prism-border);\n height: var(--%NS%band-rail);\n }\n\n .variant-ribbon-tabs[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 2px;\n height: 100%;\n overflow-x: auto;\n scrollbar-width: none;\n }\n .variant-ribbon-tabs[_ngcontent-%COMP%]::-webkit-scrollbar { display: none; }\n\n .v-tab[_ngcontent-%COMP%] {\n position: relative;\n height: 100%;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 0 14px;\n font-size: 13px;\n font-weight: 500;\n color: var(--%NS%prism-text-muted);\n white-space: nowrap;\n transition: color var(--%NS%dur-fast);\n background: none;\n border: none;\n cursor: pointer;\n font-family: var(--%NS%font-sans);\n }\n \n\n\n .v-tab[_ngcontent-%COMP%]::after {\n content: '';\n position: absolute;\n left: var(--%NS%sp-3);\n right: var(--%NS%sp-3);\n bottom: 0;\n height: 2px;\n border-radius: 2px;\n background: var(--%NS%prism-spectrum);\n background-size: calc(var(--%NS%n) * 100%) 100%;\n background-position: calc(var(--%NS%i) / (var(--%NS%n) - 1) * 100%) 0;\n opacity: 0;\n transition: opacity var(--%NS%dur-fast) var(--%NS%ease-default);\n }\n .v-tab[_ngcontent-%COMP%]:hover { color: var(--%NS%prism-text-2); }\n .v-tab--active[_ngcontent-%COMP%] { color: var(--%NS%prism-text); }\n .v-tab--%NS%active[_ngcontent-%COMP%]::after { opacity: 1; }\n .v-tab[_ngcontent-%COMP%]:hover::after { opacity: 0.4; }\n\n .variant-ribbon-right[_ngcontent-%COMP%] {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n padding-left: 12px;\n margin-left: 12px;\n border-left: 1px solid var(--%NS%prism-border);\n height: 24px;\n }\n\n .tool-btn[_ngcontent-%COMP%] {\n height: 24px;\n width: 24px;\n display: grid;\n place-items: center;\n border-radius: var(--%NS%radius-sm);\n color: var(--%NS%prism-text-muted);\n background: none;\n border: none;\n cursor: pointer;\n transition: all var(--%NS%dur-fast);\n }\n .tool-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n color: var(--%NS%prism-text);\n background: color-mix(in srgb, var(--%NS%prism-primary) 8%, transparent);\n }\n .tool-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.3;\n cursor: default;\n }\n\n [_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--%NS%prism-primary);\n outline-offset: 2px;\n }"] });
118
105
  }
119
106
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismVariantRibbonComponent, [{
120
107
  type: Component,
@@ -127,10 +114,10 @@ export class PrismVariantRibbonComponent {
127
114
  #tabButton
128
115
  class="v-tab"
129
116
  [class.v-tab--active]="rendererService.activeVariantIndex() === i"
130
- [style.--vc]="variantColor(v.name, i)"
117
+ [style.--i]="slot(i).i"
118
+ [style.--n]="slot(i).n"
131
119
  (click)="rendererService.selectVariant(i)"
132
120
  >
133
- <span class="v-dot"></span>
134
121
  {{ v.name }}
135
122
  </button>
136
123
  }
@@ -163,6 +150,6 @@ export class PrismVariantRibbonComponent {
163
150
  </div>
164
151
  </nav>
165
152
  }
166
- `, styles: ["\n :host { display: block; flex-shrink: 0; }\n\n .variant-ribbon {\n display: flex;\n align-items: center;\n padding: 0 28px;\n background: var(--prism-bg);\n border-bottom: 1px solid var(--prism-border);\n height: 42px;\n }\n\n .variant-ribbon-tabs {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 2px;\n height: 100%;\n overflow-x: auto;\n scrollbar-width: none;\n }\n .variant-ribbon-tabs::-webkit-scrollbar { display: none; }\n\n .v-tab {\n position: relative;\n height: 100%;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 0 14px;\n font-size: 13px;\n font-weight: 500;\n color: var(--prism-text-muted);\n white-space: nowrap;\n transition: color var(--dur-fast);\n background: none;\n border: none;\n cursor: pointer;\n font-family: var(--font-sans);\n }\n .v-tab::after {\n content: '';\n position: absolute;\n left: 10px;\n right: 10px;\n bottom: 0;\n height: 2px;\n background: linear-gradient(90deg, var(--prism-primary-from), var(--prism-primary-to));\n opacity: 0;\n transition: opacity var(--dur-fast);\n border-radius: 1px 1px 0 0;\n }\n .v-tab:hover { color: var(--prism-text-2); }\n .v-tab--active { color: var(--prism-text); }\n .v-tab--active::after { opacity: 1; }\n\n .v-dot {\n width: 6px;\n height: 6px;\n border-radius: 2px;\n background: var(--vc, var(--prism-primary));\n opacity: 0.6;\n }\n .v-tab--active .v-dot {\n opacity: 1;\n box-shadow: 0 0 6px var(--vc);\n }\n\n .variant-ribbon-right {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n padding-left: 12px;\n margin-left: 12px;\n border-left: 1px solid var(--prism-border);\n height: 24px;\n }\n\n .tool-btn {\n height: 24px;\n width: 24px;\n display: grid;\n place-items: center;\n border-radius: var(--radius-sm);\n color: var(--prism-text-muted);\n background: none;\n border: none;\n cursor: pointer;\n transition: all var(--dur-fast);\n }\n .tool-btn:hover:not(:disabled) {\n color: var(--prism-text);\n background: color-mix(in srgb, var(--prism-primary) 8%, transparent);\n }\n .tool-btn:disabled {\n opacity: 0.3;\n cursor: default;\n }\n\n :focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 2px;\n }\n "] }]
153
+ `, styles: ["\n :host { display: block; flex-shrink: 0; }\n\n .variant-ribbon {\n display: flex;\n align-items: center;\n padding: 0 var(--sp-5);\n background: var(--prism-bg);\n border-bottom: 1px solid var(--prism-border);\n height: var(--band-rail);\n }\n\n .variant-ribbon-tabs {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 2px;\n height: 100%;\n overflow-x: auto;\n scrollbar-width: none;\n }\n .variant-ribbon-tabs::-webkit-scrollbar { display: none; }\n\n .v-tab {\n position: relative;\n height: 100%;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 0 14px;\n font-size: 13px;\n font-weight: 500;\n color: var(--prism-text-muted);\n white-space: nowrap;\n transition: color var(--dur-fast);\n background: none;\n border: none;\n cursor: pointer;\n font-family: var(--font-sans);\n }\n /* Colour as position, not assignment: each tab shows the slice of one\n broken spectrum that corresponds to where it sits in the sequence. Nine\n arbitrary hues used to say nothing at all; this says \"you are here\". */\n .v-tab::after {\n content: '';\n position: absolute;\n left: var(--sp-3);\n right: var(--sp-3);\n bottom: 0;\n height: 2px;\n border-radius: 2px;\n background: var(--prism-spectrum);\n background-size: calc(var(--n) * 100%) 100%;\n background-position: calc(var(--i) / (var(--n) - 1) * 100%) 0;\n opacity: 0;\n transition: opacity var(--dur-fast) var(--ease-default);\n }\n .v-tab:hover { color: var(--prism-text-2); }\n .v-tab--active { color: var(--prism-text); }\n .v-tab--active::after { opacity: 1; }\n .v-tab:hover::after { opacity: 0.4; }\n\n .variant-ribbon-right {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n padding-left: 12px;\n margin-left: 12px;\n border-left: 1px solid var(--prism-border);\n height: 24px;\n }\n\n .tool-btn {\n height: 24px;\n width: 24px;\n display: grid;\n place-items: center;\n border-radius: var(--radius-sm);\n color: var(--prism-text-muted);\n background: none;\n border: none;\n cursor: pointer;\n transition: all var(--dur-fast);\n }\n .tool-btn:hover:not(:disabled) {\n color: var(--prism-text);\n background: color-mix(in srgb, var(--prism-primary) 8%, transparent);\n }\n .tool-btn:disabled {\n opacity: 0.3;\n cursor: default;\n }\n\n :focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 2px;\n }\n "] }]
167
154
  }], () => [], { tabsContainer: [{ type: i0.ViewChild, args: ['tabsContainer', { isSignal: true }] }], tabButtons: [{ type: i0.ViewChildren, args: ['tabButton', { isSignal: true }] }] }); })();
168
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismVariantRibbonComponent, { className: "PrismVariantRibbonComponent", filePath: "app/variant-ribbon/prism-variant-ribbon.component.ts", lineNumber: 187 }); })();
155
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismVariantRibbonComponent, { className: "PrismVariantRibbonComponent", filePath: "app/variant-ribbon/prism-variant-ribbon.component.ts", lineNumber: 168 }); })();
@@ -0,0 +1,19 @@
1
+ /** Where one variant tab sits on the spectrum rail. */
2
+ export interface SpectrumSlot {
3
+ /** Zero-based position. */
4
+ i: number;
5
+ /** Total positions, never below 2. */
6
+ n: number;
7
+ }
8
+ /**
9
+ * Maps a variant's index onto the spectrum rail.
10
+ *
11
+ * The CSS reads `calc(var(--i) / (var(--n) - 1) * 100%)`, so n = 1 would
12
+ * divide by zero — and an invalid calc() drops the whole declaration rather
13
+ * than falling back to a sane default, leaving the result dependent on
14
+ * whatever else happens to target background-position. Reporting a floor of 2
15
+ * keeps the arithmetic defined and parks a lone variant at the start of the
16
+ * spectrum, which is also what it should look like.
17
+ */
18
+ export declare function spectrumSlot(index: number, count: number): SpectrumSlot;
19
+ //# sourceMappingURL=spectrum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spectrum.d.ts","sourceRoot":"","sources":["../../../src/app/variant-ribbon/spectrum.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,MAAM,WAAW,YAAY;IAC3B,2BAA2B;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,sCAAsC;IACtC,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAIvE"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Maps a variant's index onto the spectrum rail.
3
+ *
4
+ * The CSS reads `calc(var(--i) / (var(--n) - 1) * 100%)`, so n = 1 would
5
+ * divide by zero — and an invalid calc() drops the whole declaration rather
6
+ * than falling back to a sane default, leaving the result dependent on
7
+ * whatever else happens to target background-position. Reporting a floor of 2
8
+ * keeps the arithmetic defined and parks a lone variant at the start of the
9
+ * spectrum, which is also what it should look like.
10
+ */
11
+ export function spectrumSlot(index, count) {
12
+ const n = count < 2 ? 2 : count;
13
+ const i = index < 0 ? 0 : index > n - 1 ? n - 1 : index;
14
+ return { i, n };
15
+ }
@@ -0,0 +1,12 @@
1
+ import type { PanelDefinition } from '../../plugin/plugin.types.js';
2
+ /**
3
+ * The view to switch to, or `null` when the active one still stands.
4
+ *
5
+ * A view survives a component switch for as long as the new component still
6
+ * offers it — that is the whole rule. `renderer` needs no check of its own
7
+ * because it is the one view every component has: there is no `isVisible` for
8
+ * the Playground, so it can never drop out of the visible list and never
9
+ * needs a fallback away from itself.
10
+ */
11
+ export declare function nextViewId(activeViewId: string, visibleViewPanels: readonly PanelDefinition[]): string | null;
12
+ //# sourceMappingURL=next-view-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next-view-id.d.ts","sourceRoot":"","sources":["../../../src/app/view-tab-bar/next-view-id.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpE;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACxB,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,SAAS,eAAe,EAAE,GAC5C,MAAM,GAAG,IAAI,CAKf"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * The view to switch to, or `null` when the active one still stands.
3
+ *
4
+ * A view survives a component switch for as long as the new component still
5
+ * offers it — that is the whole rule. `renderer` needs no check of its own
6
+ * because it is the one view every component has: there is no `isVisible` for
7
+ * the Playground, so it can never drop out of the visible list and never
8
+ * needs a fallback away from itself.
9
+ */
10
+ export function nextViewId(activeViewId, visibleViewPanels) {
11
+ if (activeViewId === 'renderer')
12
+ return null;
13
+ return visibleViewPanels.some((p) => p.id === activeViewId)
14
+ ? null
15
+ : 'renderer';
16
+ }
@@ -2,7 +2,6 @@ import { EnvironmentInjector, OnDestroy, type Type } from '@angular/core';
2
2
  import { PrismPanelService } from '../services/prism-panel.service.js';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class PrismViewPanelHostComponent implements OnDestroy {
5
- private readonly pluginService;
6
5
  private readonly nav;
7
6
  protected readonly panelService: PrismPanelService;
8
7
  private readonly envInjector;
@@ -1 +1 @@
1
- {"version":3,"file":"prism-view-panel-host.component.d.ts","sourceRoot":"","sources":["../../../src/app/view-tab-bar/prism-view-panel-host.component.ts"],"names":[],"mappings":"AACA,OAAO,EAA0D,mBAAmB,EAAU,SAAS,EAAU,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAGlJ,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;;AAGvE,qBAqBa,2BAA4B,YAAW,SAAS;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAC5D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkC;IACtD,SAAS,CAAC,QAAQ,CAAC,YAAY,oBAA6B;IAC5D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAE3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAG3B;IAEH,SAAS,CAAC,QAAQ,CAAC,iBAAiB,+DAAsC;IAC1E,SAAS,CAAC,QAAQ,CAAC,WAAW;;OAE1B;IAEJ,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAC9D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0C;IAExE,SAAS,CAAC,QAAQ,CAAC,cAAc,sDAY9B;;IA+BH,WAAW,IAAI,IAAI;yCA9DR,2BAA2B;2CAA3B,2BAA2B;CAiEvC"}
1
+ {"version":3,"file":"prism-view-panel-host.component.d.ts","sourceRoot":"","sources":["../../../src/app/view-tab-bar/prism-view-panel-host.component.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,mBAAmB,EAEnB,SAAS,EAET,KAAK,IAAI,EACV,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;;AAEvE,qBA2Ba,2BAA4B,YAAW,SAAS;IAC3D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkC;IACtD,SAAS,CAAC,QAAQ,CAAC,YAAY,oBAA6B;IAC5D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAE3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgC;IAE9D,SAAS,CAAC,QAAQ,CAAC,iBAAiB,+DAAsC;IAC1E,SAAS,CAAC,QAAQ,CAAC,WAAW;;OAE1B;IAEJ,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAC9D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0C;IAExE,SAAS,CAAC,QAAQ,CAAC,cAAc,sDAgB9B;;IAkCH,WAAW,IAAI,IAAI;yCAjER,2BAA2B;2CAA3B,2BAA2B;CAoEvC"}
@@ -1,9 +1,7 @@
1
1
  import { NgComponentOutlet } from '@angular/common';
2
- import { Component, computed, createEnvironmentInjector, effect, EnvironmentInjector, inject, signal } from '@angular/core';
3
- import { BUILTIN_PANELS } from '../panels/builtin-panels.js';
2
+ import { Component, computed, createEnvironmentInjector, effect, EnvironmentInjector, inject, signal, } from '@angular/core';
4
3
  import { PrismNavigationService } from '../services/prism-navigation.service.js';
5
4
  import { PrismPanelService } from '../services/prism-panel.service.js';
6
- import { PrismPluginService } from '../services/prism-plugin.service.js';
7
5
  import * as i0 from "@angular/core";
8
6
  function PrismViewPanelHostComponent_Conditional_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
9
7
  i0.ɵɵelementContainer(0);
@@ -15,15 +13,10 @@ function PrismViewPanelHostComponent_Conditional_1_Template(rf, ctx) { if (rf &
15
13
  i0.ɵɵproperty("ngComponentOutlet", ctx_r0.resolvedComponent())("ngComponentOutletInputs", ctx_r0.panelInputs())("ngComponentOutletInjector", ctx_r0.activeInjector());
16
14
  } }
17
15
  export class PrismViewPanelHostComponent {
18
- pluginService = inject(PrismPluginService);
19
16
  nav = inject(PrismNavigationService);
20
17
  panelService = inject(PrismPanelService);
21
18
  envInjector = inject(EnvironmentInjector);
22
- allViewPanels = computed(() => [
23
- ...BUILTIN_PANELS.filter((p) => p.placement === 'view'),
24
- ...this.pluginService.viewPanels(),
25
- ], /* @ts-ignore */
26
- ...(ngDevMode ? [{ debugName: "allViewPanels" }] : /* istanbul ignore next */ []));
19
+ allViewPanels = this.panelService.viewPanels;
27
20
  resolvedComponent = signal(null, /* @ts-ignore */
28
21
  ...(ngDevMode ? [{ debugName: "resolvedComponent" }] : /* istanbul ignore next */ []));
29
22
  panelInputs = computed(() => ({
@@ -79,16 +72,22 @@ export class PrismViewPanelHostComponent {
79
72
  } if (rf & 2) {
80
73
  i0.ɵɵadvance();
81
74
  i0.ɵɵconditional(ctx.resolvedComponent() ? 1 : -1);
82
- } }, dependencies: [NgComponentOutlet], styles: [".prism-view-panel-host[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: auto;\n background: var(--prism-bg-elevated);\n }"] });
75
+ } }, dependencies: [NgComponentOutlet], styles: [".prism-view-panel-host[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: auto;\n background: var(--%NS%prism-bg-elevated);\n }"] });
83
76
  }
84
77
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismViewPanelHostComponent, [{
85
78
  type: Component,
86
79
  args: [{ selector: 'prism-view-panel-host', standalone: true, imports: [NgComponentOutlet], template: `
87
80
  <div class="prism-view-panel-host">
88
81
  @if (resolvedComponent()) {
89
- <ng-container *ngComponentOutlet="resolvedComponent(); inputs: panelInputs(); injector: activeInjector()" />
82
+ <ng-container
83
+ *ngComponentOutlet="
84
+ resolvedComponent();
85
+ inputs: panelInputs();
86
+ injector: activeInjector()
87
+ "
88
+ />
90
89
  }
91
90
  </div>
92
91
  `, styles: ["\n .prism-view-panel-host {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: auto;\n background: var(--prism-bg-elevated);\n }\n "] }]
93
92
  }], () => [], null); })();
94
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismViewPanelHostComponent, { className: "PrismViewPanelHostComponent", filePath: "app/view-tab-bar/prism-view-panel-host.component.ts", lineNumber: 29 }); })();
93
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismViewPanelHostComponent, { className: "PrismViewPanelHostComponent", filePath: "app/view-tab-bar/prism-view-panel-host.component.ts", lineNumber: 43 }); })();
@@ -2,7 +2,6 @@ import { PrismPanelService } from '../services/prism-panel.service.js';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class PrismViewTabBarComponent {
4
4
  protected readonly panelService: PrismPanelService;
5
- private readonly pluginService;
6
5
  protected readonly viewPanels: import("@angular/core").Signal<import("../../index.js").PanelDefinition[]>;
7
6
  static ɵfac: i0.ɵɵFactoryDeclaration<PrismViewTabBarComponent, never>;
8
7
  static ɵcmp: i0.ɵɵComponentDeclaration<PrismViewTabBarComponent, "prism-view-tab-bar", never, {}, {}, never, never, true, never>;
@@ -1 +1 @@
1
- {"version":3,"file":"prism-view-tab-bar.component.d.ts","sourceRoot":"","sources":["../../../src/app/view-tab-bar/prism-view-tab-bar.component.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;;AAGvE,qBAoEa,wBAAwB;IACnC,SAAS,CAAC,QAAQ,CAAC,YAAY,oBAA6B;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAE5D,SAAS,CAAC,QAAQ,CAAC,UAAU,6EAG1B;yCAPQ,wBAAwB;2CAAxB,wBAAwB;CAQpC"}
1
+ {"version":3,"file":"prism-view-tab-bar.component.d.ts","sourceRoot":"","sources":["../../../src/app/view-tab-bar/prism-view-tab-bar.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;;AAEvE,qBAgEa,wBAAwB;IACnC,SAAS,CAAC,QAAQ,CAAC,YAAY,oBAA6B;IAE5D,SAAS,CAAC,QAAQ,CAAC,UAAU,6EAAuC;yCAHzD,wBAAwB;2CAAxB,wBAAwB;CAIpC"}
@@ -1,7 +1,5 @@
1
- import { Component, computed, inject } from '@angular/core';
2
- import { BUILTIN_PANELS } from '../panels/builtin-panels.js';
1
+ import { Component, inject, ChangeDetectionStrategy } from '@angular/core';
3
2
  import { PrismPanelService } from '../services/prism-panel.service.js';
4
- import { PrismPluginService } from '../services/prism-plugin.service.js';
5
3
  import * as i0 from "@angular/core";
6
4
  const _forTrack0 = ($index, $item) => $item.id;
7
5
  function PrismViewTabBarComponent_For_4_Template(rf, ctx) { if (rf & 1) {
@@ -19,12 +17,7 @@ function PrismViewTabBarComponent_For_4_Template(rf, ctx) { if (rf & 1) {
19
17
  } }
20
18
  export class PrismViewTabBarComponent {
21
19
  panelService = inject(PrismPanelService);
22
- pluginService = inject(PrismPluginService);
23
- viewPanels = computed(() => [
24
- ...BUILTIN_PANELS.filter((p) => p.placement === 'view'),
25
- ...this.pluginService.viewPanels(),
26
- ], /* @ts-ignore */
27
- ...(ngDevMode ? [{ debugName: "viewPanels" }] : /* istanbul ignore next */ []));
20
+ viewPanels = this.panelService.visibleViewPanels;
28
21
  static ɵfac = function PrismViewTabBarComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismViewTabBarComponent)(); };
29
22
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismViewTabBarComponent, selectors: [["prism-view-tab-bar"]], decls: 5, vars: 2, consts: [[1, "prism-view-tab-bar"], [1, "prism-view-tab-bar__tab", 3, "click"], [1, "prism-view-tab-bar__tab", 3, "prism-view-tab-bar__tab--active"]], template: function PrismViewTabBarComponent_Template(rf, ctx) { if (rf & 1) {
30
23
  i0.ɵɵdomElementStart(0, "div", 0)(1, "button", 1);
@@ -38,11 +31,11 @@ export class PrismViewTabBarComponent {
38
31
  i0.ɵɵclassProp("prism-view-tab-bar__tab--active", ctx.panelService.activeViewId() === "renderer");
39
32
  i0.ɵɵadvance(2);
40
33
  i0.ɵɵrepeater(ctx.viewPanels());
41
- } }, styles: [".prism-view-tab-bar[_ngcontent-%COMP%] {\n display: flex;\n border-bottom: 1px solid var(--prism-border);\n padding: 0 8px;\n flex-shrink: 0;\n background: var(--prism-bg-elevated);\n }\n\n .prism-view-tab-bar__tab[_ngcontent-%COMP%] {\n padding: 9px 14px;\n font-size: 13px;\n font-family: var(--prism-font-sans);\n border: none;\n background: none;\n color: var(--prism-text-muted);\n cursor: pointer;\n position: relative;\n margin-bottom: -1px;\n transition: color 0.12s;\n }\n\n .prism-view-tab-bar__tab[_ngcontent-%COMP%]::after {\n content: '';\n position: absolute;\n bottom: 0;\n left: 8px;\n right: 8px;\n height: 2px;\n background: linear-gradient(90deg, var(--prism-primary-from), var(--prism-primary-to));\n opacity: 0;\n transition: opacity 0.12s;\n }\n\n .prism-view-tab-bar__tab[_ngcontent-%COMP%]:hover { color: var(--prism-text-2); }\n\n .prism-view-tab-bar__tab--active[_ngcontent-%COMP%] { color: var(--prism-primary); font-weight: 500; }\n\n .prism-view-tab-bar__tab--active[_ngcontent-%COMP%]::after { opacity: 1; }"] });
34
+ } }, styles: ["[_nghost-%COMP%] { display: inline-flex; }\n\n .prism-view-tab-bar[_ngcontent-%COMP%] {\n display: inline-flex;\n gap: 2px;\n padding: 2px;\n border-radius: var(--%NS%radius-sm);\n background: var(--%NS%prism-input-bg);\n }\n\n .prism-view-tab-bar__tab[_ngcontent-%COMP%] {\n padding: 2px var(--%NS%sp-4);\n border: 0;\n border-radius: var(--%NS%radius-xs);\n background: none;\n font-family: var(--%NS%prism-font-sans);\n font-size: var(--%NS%fs-md);\n color: var(--%NS%prism-text-muted);\n cursor: pointer;\n white-space: nowrap;\n transition: color var(--%NS%dur-fast) var(--%NS%ease-default);\n }\n .prism-view-tab-bar__tab[_ngcontent-%COMP%]:hover { color: var(--%NS%prism-text-2); }\n .prism-view-tab-bar__tab[_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--%NS%prism-primary);\n outline-offset: 1px;\n }\n .prism-view-tab-bar__tab--active[_ngcontent-%COMP%] {\n background: var(--%NS%prism-bg-elevated);\n color: var(--%NS%prism-text);\n font-weight: 500;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.18);\n }"] });
42
35
  }
43
36
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismViewTabBarComponent, [{
44
37
  type: Component,
45
- args: [{ selector: 'prism-view-tab-bar', standalone: true, template: `
38
+ args: [{ selector: 'prism-view-tab-bar', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
46
39
  <div class="prism-view-tab-bar">
47
40
  <button
48
41
  class="prism-view-tab-bar__tab"
@@ -65,6 +58,6 @@ export class PrismViewTabBarComponent {
65
58
  </button>
66
59
  }
67
60
  </div>
68
- `, styles: ["\n .prism-view-tab-bar {\n display: flex;\n border-bottom: 1px solid var(--prism-border);\n padding: 0 8px;\n flex-shrink: 0;\n background: var(--prism-bg-elevated);\n }\n\n .prism-view-tab-bar__tab {\n padding: 9px 14px;\n font-size: 13px;\n font-family: var(--prism-font-sans);\n border: none;\n background: none;\n color: var(--prism-text-muted);\n cursor: pointer;\n position: relative;\n margin-bottom: -1px;\n transition: color 0.12s;\n }\n\n .prism-view-tab-bar__tab::after {\n content: '';\n position: absolute;\n bottom: 0;\n left: 8px;\n right: 8px;\n height: 2px;\n background: linear-gradient(90deg, var(--prism-primary-from), var(--prism-primary-to));\n opacity: 0;\n transition: opacity 0.12s;\n }\n\n .prism-view-tab-bar__tab:hover { color: var(--prism-text-2); }\n\n .prism-view-tab-bar__tab--active { color: var(--prism-primary); font-weight: 500; }\n\n .prism-view-tab-bar__tab--active::after { opacity: 1; }\n "] }]
61
+ `, styles: ["\n :host { display: inline-flex; }\n\n .prism-view-tab-bar {\n display: inline-flex;\n gap: 2px;\n padding: 2px;\n border-radius: var(--radius-sm);\n background: var(--prism-input-bg);\n }\n\n .prism-view-tab-bar__tab {\n padding: 2px var(--sp-4);\n border: 0;\n border-radius: var(--radius-xs);\n background: none;\n font-family: var(--prism-font-sans);\n font-size: var(--fs-md);\n color: var(--prism-text-muted);\n cursor: pointer;\n white-space: nowrap;\n transition: color var(--dur-fast) var(--ease-default);\n }\n .prism-view-tab-bar__tab:hover { color: var(--prism-text-2); }\n .prism-view-tab-bar__tab:focus-visible {\n outline: 2px solid var(--prism-primary);\n outline-offset: 1px;\n }\n .prism-view-tab-bar__tab--active {\n background: var(--prism-bg-elevated);\n color: var(--prism-text);\n font-weight: 500;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.18);\n }\n "] }]
69
62
  }], null, null); })();
70
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismViewTabBarComponent, { className: "PrismViewTabBarComponent", filePath: "app/view-tab-bar/prism-view-tab-bar.component.ts", lineNumber: 74 }); })();
63
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PrismViewTabBarComponent, { className: "PrismViewTabBarComponent", filePath: "app/view-tab-bar/prism-view-tab-bar.component.ts", lineNumber: 68 }); })();
@@ -1,7 +1,21 @@
1
- import type { A11yManifestMeta, A11yReport, A11yThresholds } from '../../app/panels/a11y/a11y.types.js';
1
+ import type { A11yComponentMeta, A11yManifestMeta, A11yReport, A11yThresholds } from '../../app/panels/a11y/a11y.types.js';
2
+ import { deriveA11ySummary } from '../../app/panels/a11y/a11y-summary.js';
3
+ export { deriveA11ySummary };
2
4
  export declare const DEFAULT_A11Y_REPORT_PATH = "a11y-report.json";
3
5
  export declare function loadA11yReport(reportPath: string): A11yReport | null;
4
6
  export declare function readA11yMeta(reportPath: string, thresholdsInput?: Partial<A11yThresholds>): A11yManifestMeta | null;
7
+ /**
8
+ * Every component's entry, from a single read of the report.
9
+ *
10
+ * The plural form exists because {@link readA11yForComponent} re-enters
11
+ * {@link loadA11yReport}, which `statSync`s the file even on a cache hit.
12
+ * Calling it once per scanned component turns a 300-component library into 300
13
+ * redundant syscalls per build, and a watch-mode rebuild repeats them all — so
14
+ * the pipeline reads the report once and looks components up in the result.
15
+ */
16
+ export declare function readA11yForComponents(reportPath: string, thresholds: A11yThresholds): Map<string, A11yComponentMeta>;
17
+ /** The per-component entry of the report, or null when there is none. */
18
+ export declare function readA11yForComponent(reportPath: string, className: string, thresholds: A11yThresholds): A11yComponentMeta | null;
5
19
  export interface ThresholdViolation {
6
20
  metric: 'score' | 'critical' | 'serious' | 'moderate';
7
21
  actual: number;
@@ -1 +1 @@
1
- {"version":3,"file":"a11y-report-reader.d.ts","sourceRoot":"","sources":["../../../src/builder/a11y/a11y-report-reader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EACV,cAAc,EACf,MAAM,qCAAqC,CAAC;AAG7C,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAI3D,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAapE;AAED,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GACxC,gBAAgB,GAAG,IAAI,CAQzB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,gBAAgB,GACrB,kBAAkB,EAAE,CAkCtB;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
1
+ {"version":3,"file":"a11y-report-reader.d.ts","sourceRoot":"","sources":["../../../src/builder/a11y/a11y-report-reader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACf,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAK1E,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAI3D,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAapE;AAED,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GACxC,gBAAgB,GAAG,IAAI,CAQzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,cAAc,GACzB,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAchC;AAED,yEAAyE;AACzE,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,cAAc,GACzB,iBAAiB,GAAG,IAAI,CAK1B;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,gBAAgB,GACrB,kBAAkB,EAAE,CAkCtB;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
@@ -1,5 +1,10 @@
1
1
  import { readFileSync, statSync } from 'node:fs';
2
2
  import { resolveA11yThresholds } from '../../app/panels/a11y/a11y-thresholds.js';
3
+ import { deriveA11ySummary } from '../../app/panels/a11y/a11y-summary.js';
4
+ // Re-exported so the builder side keeps one import surface for the a11y
5
+ // report. The derivation itself lives in `app/` because the panel tab grades
6
+ // the live audit with it and cannot reach into `builder/`.
7
+ export { deriveA11ySummary };
3
8
  export const DEFAULT_A11Y_REPORT_PATH = 'a11y-report.json';
4
9
  const cache = new Map();
5
10
  export function loadA11yReport(reportPath) {
@@ -26,6 +31,38 @@ export function readA11yMeta(reportPath, thresholdsInput) {
26
31
  thresholds: resolveA11yThresholds(thresholdsInput),
27
32
  };
28
33
  }
34
+ /**
35
+ * Every component's entry, from a single read of the report.
36
+ *
37
+ * The plural form exists because {@link readA11yForComponent} re-enters
38
+ * {@link loadA11yReport}, which `statSync`s the file even on a cache hit.
39
+ * Calling it once per scanned component turns a 300-component library into 300
40
+ * redundant syscalls per build, and a watch-mode rebuild repeats them all — so
41
+ * the pipeline reads the report once and looks components up in the result.
42
+ */
43
+ export function readA11yForComponents(reportPath, thresholds) {
44
+ const components = loadA11yReport(reportPath)?.components;
45
+ const byClassName = new Map();
46
+ if (!components)
47
+ return byClassName;
48
+ for (const [className, score] of Object.entries(components)) {
49
+ if (!score)
50
+ continue;
51
+ byClassName.set(className, {
52
+ found: true,
53
+ score,
54
+ summary: deriveA11ySummary(score, thresholds),
55
+ });
56
+ }
57
+ return byClassName;
58
+ }
59
+ /** The per-component entry of the report, or null when there is none. */
60
+ export function readA11yForComponent(reportPath, className, thresholds) {
61
+ const score = loadA11yReport(reportPath)?.components?.[className];
62
+ if (!score)
63
+ return null;
64
+ return { found: true, score, summary: deriveA11ySummary(score, thresholds) };
65
+ }
29
66
  export function checkA11yThresholds(meta) {
30
67
  const violations = [];
31
68
  const t = meta.thresholds;
@@ -1 +1 @@
1
- {"version":3,"file":"prism-pipeline.d.ts","sourceRoot":"","sources":["../../../src/builder/shared/prism-pipeline.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhE,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAYpE,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,mGAAmG;IACnG,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,oGAAoG;IACpG,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED,wBAAgB,mBAAmB,IAAI,kBAAkB,CAExD;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,mBAAmB,CAAC,CAyE9B"}
1
+ {"version":3,"file":"prism-pipeline.d.ts","sourceRoot":"","sources":["../../../src/builder/shared/prism-pipeline.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhE,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAapE,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,mGAAmG;IACnG,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,oGAAoG;IACpG,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED,wBAAgB,mBAAmB,IAAI,kBAAkB,CAExD;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,mBAAmB,CAAC,CAyF9B"}
@@ -6,7 +6,7 @@ import { discoverSecondaryEntryPoints } from '../scanner/entry-point-discovery.j
6
6
  import { loadConfig } from '../config-loader/config-loader.js';
7
7
  import { runPluginHooks } from '../plugin-runner/plugin-runner.js';
8
8
  import { generateRuntimeManifest } from '../manifest/runtime-manifest.generator.js';
9
- import { DEFAULT_A11Y_REPORT_PATH, checkA11yThresholds, readA11yMeta, } from '../a11y/a11y-report-reader.js';
9
+ import { DEFAULT_A11Y_REPORT_PATH, checkA11yThresholds, readA11yForComponents, readA11yMeta, } from '../a11y/a11y-report-reader.js';
10
10
  export function createPipelineState() {
11
11
  return { scanner: undefined, lastEntrySetKey: undefined };
12
12
  }
@@ -23,7 +23,8 @@ export async function runPrismPipeline(options, context, state) {
23
23
  context.reportStatus('Running plugin hooks...');
24
24
  let manifest = await runPluginHooks({ ...scanResult, pages }, config.plugins ?? []);
25
25
  const a11yReportPath = config.a11y?.reportPath ?? DEFAULT_A11Y_REPORT_PATH;
26
- const a11yMeta = readA11yMeta(join(workspaceRoot, a11yReportPath), config.a11y?.thresholds);
26
+ const a11yReportPathAbs = join(workspaceRoot, a11yReportPath);
27
+ const a11yMeta = readA11yMeta(a11yReportPathAbs, config.a11y?.thresholds);
27
28
  if (a11yMeta) {
28
29
  const violations = checkA11yThresholds(a11yMeta);
29
30
  if (violations.length > 0) {
@@ -33,8 +34,24 @@ export async function runPrismPipeline(options, context, state) {
33
34
  throw new Error(`ng-prism: a11y thresholds violated — ${summary}. ` +
34
35
  `Update components or relax thresholds via config.a11y.thresholds.`);
35
36
  }
37
+ // Read once, not once per component: the reader re-stats the file on every
38
+ // call even when its cache hits, so a per-component lookup scales the
39
+ // syscalls with the library and repeats them on every watch rebuild.
40
+ const a11yByComponent = readA11yForComponents(a11yReportPathAbs, a11yMeta.thresholds);
36
41
  manifest = {
37
42
  ...manifest,
43
+ components: manifest.components.map((component) => {
44
+ const a11y = a11yByComponent.get(component.className);
45
+ if (!a11y)
46
+ return component;
47
+ return {
48
+ ...component,
49
+ showcaseConfig: {
50
+ ...component.showcaseConfig,
51
+ meta: { ...component.showcaseConfig.meta, a11y },
52
+ },
53
+ };
54
+ }),
38
55
  meta: { ...manifest.meta, a11y: a11yMeta },
39
56
  };
40
57
  }
@@ -1,4 +1,4 @@
1
- export type { NgPrismPlugin, PanelBadge, PanelDefinition, ControlDefinition, HeaderWidgetDefinition, NgPrismConfig, PrismManifest, ScannedComponent, InputMeta, OutputMeta, RuntimeManifest, RuntimeComponent, DiscoveryManifest, DiscoveryComponent, DiscoveryVariant, DiscoveryPage, } from './plugin.types.js';
1
+ export type { NgPrismPlugin, PanelBadge, PanelDefinition, ControlDefinition, HeaderWidgetDefinition, NavigationDecoration, NavigationDecorationDefinition, NgPrismConfig, PrismManifest, ScannedComponent, InputMeta, OutputMeta, RuntimeManifest, RuntimeComponent, DiscoveryManifest, DiscoveryComponent, DiscoveryVariant, DiscoveryPage, } from './plugin.types.js';
2
2
  export type { StyleguidePage, CustomPage, ComponentPage, } from './page.types.js';
3
3
  export type { CanvasBg } from '../shared/canvas-bg.type.js';
4
4
  export { CANVAS_BGS } from '../shared/canvas-bg.type.js';
@@ -7,6 +7,7 @@ export type { VariantBgSource } from '../shared/variant-bg.js';
7
7
  export { customPage, componentPage } from './page-helpers.js';
8
8
  export type { ComponentPageOptions } from './page-helpers.js';
9
9
  export { defineConfig } from './define-config.js';
10
+ export { ICON_NAMES } from '../app/icons/icon-registry.js';
10
11
  export { PRISM_RENDERER_HOOKS, PRISM_MANIFEST, PRISM_CONFIG, } from '../app/tokens/prism-tokens.js';
11
12
  export type { PrismRendererHooks } from '../app/tokens/prism-tokens.js';
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,aAAa,EACb,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,cAAc,EACd,UAAU,EACV,aAAa,GACd,MAAM,iBAAiB,CAAC;AAKzB,YAAY,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,YAAY,GACb,MAAM,+BAA+B,CAAC;AACvC,YAAY,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,aAAa,EACb,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,8BAA8B,EAC9B,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,cAAc,EACd,UAAU,EACV,aAAa,GACd,MAAM,iBAAiB,CAAC;AAKzB,YAAY,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC/E,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAUlD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,YAAY,GACb,MAAM,+BAA+B,CAAC;AACvC,YAAY,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC"}
@@ -2,4 +2,14 @@ export { CANVAS_BGS } from '../shared/canvas-bg.type.js';
2
2
  export { DEFAULT_VARIANT_BG, resolveVariantBg } from '../shared/variant-bg.js';
3
3
  export { customPage, componentPage } from './page-helpers.js';
4
4
  export { defineConfig } from './define-config.js';
5
+ // From the dependency-free registry module, not `prism-icon.component.js`.
6
+ // The builder evaluates plugin config — and everything it imports — in
7
+ // Node.js, and importing the component module would run an `@Component`
8
+ // decorator there: template compilation, styles, the whole runtime.
9
+ //
10
+ // Not a blanket "no Angular below this line": `prism-tokens.js` a few lines
11
+ // down imports `InjectionToken`, and evaluating a plain class constructor in
12
+ // Node is harmless. The line being drawn is decorated declarations, not the
13
+ // package.
14
+ export { ICON_NAMES } from '../app/icons/icon-registry.js';
5
15
  export { PRISM_RENDERER_HOOKS, PRISM_MANIFEST, PRISM_CONFIG, } from '../app/tokens/prism-tokens.js';
@@ -11,6 +11,8 @@ export interface NgPrismPlugin {
11
11
  controls?: ControlDefinition[];
12
12
  /** Header widgets rendered in the Prism shell header bar */
13
13
  headerWidgets?: HeaderWidgetDefinition[];
14
+ /** Markers contributed to each component's navigation item. */
15
+ navigationDecorations?: NavigationDecorationDefinition[];
14
16
  /** Angular standalone component that wraps each rendered component */
15
17
  wrapComponent?: Type<unknown>;
16
18
  }
@@ -39,6 +41,37 @@ export interface PanelBadge {
39
41
  */
40
42
  variant?: 'default' | 'ok' | 'warn' | 'danger';
41
43
  }
44
+ /** What one source has to say about one component in the navigation. */
45
+ export interface NavigationDecoration {
46
+ /**
47
+ * Colour role. Deliberately only two: an 'ok' state would make the marker
48
+ * permanent, and a marker that is always present stops being a signal.
49
+ */
50
+ variant: 'warn' | 'danger';
51
+ /** One tooltip line for this source, e.g. 'A11y: 2 critical, 1 serious'. */
52
+ label: string;
53
+ }
54
+ export interface NavigationDecorationDefinition {
55
+ /** Unique id — used for de-duplication when two plugins contribute the same source. */
56
+ id: string;
57
+ /** Icon name from the built-in registry (`ICON_NAMES`). */
58
+ icon: string;
59
+ /**
60
+ * Fixed slot order (lower = further left). The order is part of the reading
61
+ * contract: position alone names the source, so a decoration must not move
62
+ * depending on plugin registration order.
63
+ * Built-in: a11y 10, visual-regression 20, coverage 30.
64
+ */
65
+ order?: number;
66
+ /**
67
+ * The component's standing for this source, or `null` for "nothing worth
68
+ * saying".
69
+ *
70
+ * Called during change detection, so it has to be cheap and pure: read what
71
+ * the component's `meta` already holds, do not fetch and do not inject.
72
+ */
73
+ badge: (component: RuntimeComponent) => NavigationDecoration | null;
74
+ }
42
75
  export interface PanelDefinition {
43
76
  id: string;
44
77
  label: string;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.types.d.ts","sourceRoot":"","sources":["../../src/plugin/plugin.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.types.d.ts","sourceRoot":"","sources":["../../src/plugin/plugin.types.ts"],"names":[],"mappings":"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"}
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-prism/core",
3
- "version": "22.2.0-beta.4",
3
+ "version": "22.2.0",
4
4
  "description": "ng-prism — the Angular-native Storybook alternative. Lightweight component showcase with @Showcase decorator, no story files needed.",
5
5
  "keywords": [
6
6
  "ng-prism",