@ng-prism/core 22.4.0 → 22.5.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 (47) hide show
  1. package/README.md +1 -1
  2. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts +12 -2
  3. package/dist/app/canvas/prism-canvas-toolbar.component.d.ts.map +1 -1
  4. package/dist/app/canvas/prism-canvas-toolbar.component.js +55 -21
  5. package/dist/app/discovery-manifest.d.ts.map +1 -1
  6. package/dist/app/discovery-manifest.js +8 -2
  7. package/dist/app/overview/prism-overview-cell.component.d.ts +6 -0
  8. package/dist/app/overview/prism-overview-cell.component.d.ts.map +1 -1
  9. package/dist/app/overview/prism-overview-cell.component.js +14 -2
  10. package/dist/app/pseudo/pseudo-selector.d.ts +24 -0
  11. package/dist/app/pseudo/pseudo-selector.d.ts.map +1 -0
  12. package/dist/app/pseudo/pseudo-selector.js +136 -0
  13. package/dist/app/pseudo/pseudo-state-marker.d.ts +44 -0
  14. package/dist/app/pseudo/pseudo-state-marker.d.ts.map +1 -0
  15. package/dist/app/pseudo/pseudo-state-marker.js +149 -0
  16. package/dist/app/pseudo/pseudo-stylesheets.d.ts +49 -0
  17. package/dist/app/pseudo/pseudo-stylesheets.d.ts.map +1 -0
  18. package/dist/app/pseudo/pseudo-stylesheets.js +137 -0
  19. package/dist/app/renderer/prism-renderer.component.d.ts +11 -1
  20. package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
  21. package/dist/app/renderer/prism-renderer.component.js +39 -15
  22. package/dist/app/renderer/rendered-key.d.ts +24 -0
  23. package/dist/app/renderer/rendered-key.d.ts.map +1 -0
  24. package/dist/app/renderer/rendered-key.js +17 -0
  25. package/dist/app/services/prism-capture.service.d.ts +2 -0
  26. package/dist/app/services/prism-capture.service.d.ts.map +1 -1
  27. package/dist/app/services/prism-capture.service.js +25 -0
  28. package/dist/app/services/prism-pseudo-state.service.d.ts +48 -0
  29. package/dist/app/services/prism-pseudo-state.service.d.ts.map +1 -0
  30. package/dist/app/services/prism-pseudo-state.service.js +98 -0
  31. package/dist/app/shell/prism-shell.component.js +2 -2
  32. package/dist/builder/scanner/component.scanner.d.ts.map +1 -1
  33. package/dist/builder/scanner/component.scanner.js +8 -0
  34. package/dist/builder/scanner/pseudo-states.d.ts +11 -0
  35. package/dist/builder/scanner/pseudo-states.d.ts.map +1 -0
  36. package/dist/builder/scanner/pseudo-states.js +58 -0
  37. package/dist/decorator/showcase.types.d.ts +10 -0
  38. package/dist/decorator/showcase.types.d.ts.map +1 -1
  39. package/dist/plugin/index.d.ts +2 -0
  40. package/dist/plugin/index.d.ts.map +1 -1
  41. package/dist/plugin/index.js +1 -0
  42. package/dist/plugin/plugin.types.d.ts +9 -2
  43. package/dist/plugin/plugin.types.d.ts.map +1 -1
  44. package/dist/shared/pseudo-state.type.d.ts +22 -0
  45. package/dist/shared/pseudo-state.type.d.ts.map +1 -0
  46. package/dist/shared/pseudo-state.type.js +2 -0
  47. package/package.json +4 -4
@@ -0,0 +1,17 @@
1
+ import { forcesAnyState } from '../pseudo/pseudo-state-marker.js';
2
+ /**
3
+ * The value of `data-prism-rendered` on `.demo-wrap`, or `null` while the
4
+ * variant is not ready to be inspected.
5
+ *
6
+ * Screenshot runners wait on this marker, so a variant that forces pseudo
7
+ * states only gets it once those exact states are in place on this exact
8
+ * element. A runner then captures the forced state with no change on its side.
9
+ * A variant without forced states is not held back.
10
+ */
11
+ export function resolveRenderedKey({ component, variantIndex, element, pseudo, pseudoApplied }) {
12
+ if (!element || !component)
13
+ return null;
14
+ if (forcesAnyState(pseudo) && (pseudoApplied?.root !== element || pseudoApplied.states !== pseudo))
15
+ return null;
16
+ return `${component.meta.className}:${variantIndex}`;
17
+ }
@@ -3,6 +3,8 @@ import * as i0 from "@angular/core";
3
3
  export declare const CAPTURE_PARAM = "capture";
4
4
  /** Attribute set on `<html>` while capture mode is active. */
5
5
  export declare const CAPTURE_ATTRIBUTE = "data-prism-capture";
6
+ /** Room in px capture mode leaves around a component that forces pseudo states, for a focus ring drawn outside its box. */
7
+ export declare const CAPTURE_PSEUDO_ROOM = 8;
6
8
  /**
7
9
  * Everything capture mode makes see-through for `bg: 'transparent'`.
8
10
  *
@@ -1 +1 @@
1
- {"version":3,"file":"prism-capture.service.d.ts","sourceRoot":"","sources":["../../../src/app/services/prism-capture.service.ts"],"names":[],"mappings":";AAEA,sFAAsF;AACtF,eAAO,MAAM,aAAa,YAAY,CAAC;AAEvC,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB,uBAAuB,CAAC;AAItD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,4BAA4B,QAE4H,CAAC;AA2FtK;;;;;;;;;;;;;;;GAeG;AACH,qBACa,mBAAmB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6F;IAErH,kEAAkE;IAClE,QAAQ,CAAC,MAAM,0CAA6B;;IAM5C,OAAO,CAAC,eAAe;yCAVd,mBAAmB;;CAoB/B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAKzD"}
1
+ {"version":3,"file":"prism-capture.service.d.ts","sourceRoot":"","sources":["../../../src/app/services/prism-capture.service.ts"],"names":[],"mappings":";AAEA,sFAAsF;AACtF,eAAO,MAAM,aAAa,YAAY,CAAC;AAEvC,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB,uBAAuB,CAAC;AAItD,2HAA2H;AAC3H,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,4BAA4B,QAE4H,CAAC;AAkHtK;;;;;;;;;;;;;;;GAeG;AACH,qBACa,mBAAmB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6F;IAErH,kEAAkE;IAClE,QAAQ,CAAC,MAAM,0CAA6B;;IAM5C,OAAO,CAAC,eAAe;yCAVd,mBAAmB;;CAoB/B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAKzD"}
@@ -5,6 +5,8 @@ export const CAPTURE_PARAM = 'capture';
5
5
  /** Attribute set on `<html>` while capture mode is active. */
6
6
  export const CAPTURE_ATTRIBUTE = 'data-prism-capture';
7
7
  const STYLE_ELEMENT_ID = 'ng-prism-capture-styles';
8
+ /** Room in px capture mode leaves around a component that forces pseudo states, for a focus ring drawn outside its box. */
9
+ export const CAPTURE_PSEUDO_ROOM = 8;
8
10
  /**
9
11
  * Everything capture mode makes see-through for `bg: 'transparent'`.
10
12
  *
@@ -68,6 +70,19 @@ const CAPTURE_CANVAS_ONLY_SELECTOR = `[${CAPTURE_ATTRIBUTE}] ` + `:is(.prism-she
68
70
  * padding gone it sits flush against the component, so capture mode removes the
69
71
  * paint and keeps the geometry. {@link CAPTURE_TRANSPARENT_SELECTOR} does not
70
72
  * cover this: an outline is not a background.
73
+ *
74
+ * A variant that forces pseudo states (`.demo-wrap[data-pseudo]`) gets 8px of
75
+ * room around the component. `.demo-wrap` hugs the component's box, but a focus
76
+ * ring is drawn outside it (an `outline` with an offset, a `box-shadow` halo),
77
+ * so a screenshot of the bare box would crop it. The negative margin takes the
78
+ * padding back out of layout, so the component sits and sizes exactly as
79
+ * without it, and `content-box` keeps the padding outside a `stretch` variant's
80
+ * width. That width gives up the room where the canvas is narrower than
81
+ * `max-width` plus the room, so the room stays inside the canvas instead of
82
+ * being clipped on one side and scrolling on the other; from there on
83
+ * `max-width` clamps it to the width it has without the room. Only these
84
+ * variants: any other change to `.demo-wrap`'s box would move every existing
85
+ * baseline.
71
86
  */
72
87
  const CAPTURE_STYLES = `
73
88
  [${CAPTURE_ATTRIBUTE}] *,
@@ -106,6 +121,16 @@ ${CAPTURE_CANVAS_ONLY_SELECTOR} {
106
121
  [${CAPTURE_ATTRIBUTE}] .prism-canvas-wrap:has(.prism-canvas-stage) {
107
122
  grid-template-rows: minmax(0, 1fr) !important;
108
123
  }
124
+
125
+ [${CAPTURE_ATTRIBUTE}] .demo-wrap[data-pseudo] {
126
+ box-sizing: content-box !important;
127
+ padding: ${CAPTURE_PSEUDO_ROOM}px !important;
128
+ margin: -${CAPTURE_PSEUDO_ROOM}px !important;
129
+ }
130
+
131
+ [${CAPTURE_ATTRIBUTE}] .demo-wrap[data-pseudo][data-canvas-layout='stretch'] {
132
+ width: calc(100% - ${2 * CAPTURE_PSEUDO_ROOM}px) !important;
133
+ }
109
134
  `;
110
135
  /**
111
136
  * Capture-isolation mode, for external screenshot runners.
@@ -0,0 +1,48 @@
1
+ import { type ForcedPseudoStates, type PseudoState } from '../../shared/pseudo-state.type.js';
2
+ import { PseudoStateMarker } from '../pseudo/pseudo-state-marker.js';
3
+ import * as i0 from "@angular/core";
4
+ /** Per state: forced on (`true`) or off (`false`) on top of what the variant declares. */
5
+ export type PseudoStateOverride = Partial<Record<PseudoState, boolean>>;
6
+ /**
7
+ * `declared` with the user's toggles from the tools menu on top.
8
+ *
9
+ * Returns `declared` itself while nothing is toggled, so the renderer, which
10
+ * waits for the exact states object it was given, is not sent a copy. A state
11
+ * switched on from the menu applies to the whole component (`true`), the way a
12
+ * pointer over it would. One the variant declares keeps its own target.
13
+ */
14
+ export declare function withOverride(declared: ForcedPseudoStates | null, override: PseudoStateOverride): ForcedPseudoStates | null;
15
+ /**
16
+ * The pseudo states the canvas forces on the active variant.
17
+ *
18
+ * `declared` is `Variant.pseudo`. The tools menu can switch states on and off
19
+ * on top of it; like the background override, that toggle is transient and
20
+ * resets when the variant or the component changes. Capture mode ignores it:
21
+ * it is session UI state and must not shape a baseline.
22
+ *
23
+ * Also owns the document's {@link PseudoStyleSheets}, which every marker shares
24
+ * so each stylesheet is rewritten once, whether the Playground canvas or an
25
+ * Overview cell asks first.
26
+ */
27
+ export declare class PrismPseudoStateService {
28
+ private readonly navigation;
29
+ private readonly renderer;
30
+ private readonly capture;
31
+ private readonly stylesheets;
32
+ readonly declared: import("@angular/core").Signal<Partial<Record<PseudoState, import("../../shared/pseudo-state.type.js").PseudoTarget>> | null>;
33
+ private readonly _override;
34
+ readonly override: import("@angular/core").Signal<Partial<Record<PseudoState, boolean>>>;
35
+ /** What the canvas forces: `declared`, with the user's toggles on top outside capture mode. */
36
+ readonly effective: import("@angular/core").Signal<Partial<Record<PseudoState, import("../../shared/pseudo-state.type.js").PseudoTarget>> | null>;
37
+ constructor();
38
+ isForced(state: PseudoState): boolean;
39
+ isDeclared(state: PseudoState): boolean;
40
+ /** Flips `state` against what is forced now. Flipping it back to what the variant declares drops the toggle. */
41
+ toggle(state: PseudoState): void;
42
+ clearOverride(): void;
43
+ /** A marker for one rendered component, sharing this app's rewritten stylesheets. */
44
+ createMarker(): PseudoStateMarker;
45
+ static ɵfac: i0.ɵɵFactoryDeclaration<PrismPseudoStateService, never>;
46
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
47
+ }
48
+ //# sourceMappingURL=prism-pseudo-state.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prism-pseudo-state.service.d.ts","sourceRoot":"","sources":["../../../src/app/services/prism-pseudo-state.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,kBAAkB,EAAiB,KAAK,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAC7G,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;;AAMrE,0FAA0F;AAC1F,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AAExE;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,EAAE,QAAQ,EAAE,mBAAmB,GAAG,kBAAkB,GAAG,IAAI,CAY1H;AAED;;;;;;;;;;;GAWG;AACH,qBACa,uBAAuB;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkC;IAC7D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgC;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2C;IAEvE,QAAQ,CAAC,QAAQ,gIAKd;IAEH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmC;IAC7D,QAAQ,CAAC,QAAQ,wEAA+B;IAEhD,+FAA+F;IAC/F,QAAQ,CAAC,SAAS,gIAA0I;;IAU5J,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO;IAIrC,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO;IAIvC,gHAAgH;IAChH,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAYhC,aAAa,IAAI,IAAI;IAIrB,qFAAqF;IACrF,YAAY,IAAI,iBAAiB;yCArDxB,uBAAuB;;CAwDnC"}
@@ -0,0 +1,98 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { computed, effect, inject, Injectable, signal } from '@angular/core';
3
+ import { PSEUDO_STATES } from '../../shared/pseudo-state.type.js';
4
+ import { PseudoStateMarker } from '../pseudo/pseudo-state-marker.js';
5
+ import { PseudoStyleSheets } from '../pseudo/pseudo-stylesheets.js';
6
+ import { PrismCaptureService } from './prism-capture.service.js';
7
+ import { PrismNavigationService } from './prism-navigation.service.js';
8
+ import { PrismRendererService } from './prism-renderer.service.js';
9
+ import * as i0 from "@angular/core";
10
+ /**
11
+ * `declared` with the user's toggles from the tools menu on top.
12
+ *
13
+ * Returns `declared` itself while nothing is toggled, so the renderer, which
14
+ * waits for the exact states object it was given, is not sent a copy. A state
15
+ * switched on from the menu applies to the whole component (`true`), the way a
16
+ * pointer over it would. One the variant declares keeps its own target.
17
+ */
18
+ export function withOverride(declared, override) {
19
+ if (Object.keys(override).length === 0)
20
+ return declared;
21
+ const states = {};
22
+ for (const state of PSEUDO_STATES) {
23
+ const forced = override[state];
24
+ const target = forced === undefined ? declared?.[state] : forced ? (declared?.[state] ?? true) : undefined;
25
+ if (target !== undefined)
26
+ states[state] = target;
27
+ }
28
+ return Object.keys(states).length > 0 ? states : null;
29
+ }
30
+ /**
31
+ * The pseudo states the canvas forces on the active variant.
32
+ *
33
+ * `declared` is `Variant.pseudo`. The tools menu can switch states on and off
34
+ * on top of it; like the background override, that toggle is transient and
35
+ * resets when the variant or the component changes. Capture mode ignores it:
36
+ * it is session UI state and must not shape a baseline.
37
+ *
38
+ * Also owns the document's {@link PseudoStyleSheets}, which every marker shares
39
+ * so each stylesheet is rewritten once, whether the Playground canvas or an
40
+ * Overview cell asks first.
41
+ */
42
+ export class PrismPseudoStateService {
43
+ navigation = inject(PrismNavigationService);
44
+ renderer = inject(PrismRendererService);
45
+ capture = inject(PrismCaptureService);
46
+ stylesheets = new PseudoStyleSheets(inject(DOCUMENT));
47
+ declared = computed(() => {
48
+ const comp = this.navigation.activeComponent();
49
+ if (!comp)
50
+ return null;
51
+ return comp.meta.showcaseConfig.variants?.[this.renderer.activeVariantIndex()]?.pseudo ?? null;
52
+ }, /* @ts-ignore */
53
+ ...(ngDevMode ? [{ debugName: "declared" }] : /* istanbul ignore next */ []));
54
+ _override = signal({}, /* @ts-ignore */
55
+ ...(ngDevMode ? [{ debugName: "_override" }] : /* istanbul ignore next */ []));
56
+ override = this._override.asReadonly();
57
+ /** What the canvas forces: `declared`, with the user's toggles on top outside capture mode. */
58
+ effective = computed(() => (this.capture.active() ? this.declared() : withOverride(this.declared(), this._override())), /* @ts-ignore */
59
+ ...(ngDevMode ? [{ debugName: "effective" }] : /* istanbul ignore next */ []));
60
+ constructor() {
61
+ effect(() => {
62
+ this.navigation.activeComponent();
63
+ this.renderer.activeVariantIndex();
64
+ this._override.set({});
65
+ });
66
+ }
67
+ isForced(state) {
68
+ return this.effective()?.[state] !== undefined;
69
+ }
70
+ isDeclared(state) {
71
+ return this.declared()?.[state] !== undefined;
72
+ }
73
+ /** Flips `state` against what is forced now. Flipping it back to what the variant declares drops the toggle. */
74
+ toggle(state) {
75
+ const forced = !this.isForced(state);
76
+ this._override.update((override) => {
77
+ const next = { ...override };
78
+ if (forced === this.isDeclared(state))
79
+ delete next[state];
80
+ else
81
+ next[state] = forced;
82
+ return next;
83
+ });
84
+ }
85
+ clearOverride() {
86
+ this._override.set({});
87
+ }
88
+ /** A marker for one rendered component, sharing this app's rewritten stylesheets. */
89
+ createMarker() {
90
+ return new PseudoStateMarker(this.stylesheets);
91
+ }
92
+ static ɵfac = function PrismPseudoStateService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismPseudoStateService)(); };
93
+ static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PrismPseudoStateService, factory: PrismPseudoStateService.ɵfac, providedIn: 'root' });
94
+ }
95
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrismPseudoStateService, [{
96
+ type: Injectable,
97
+ args: [{ providedIn: 'root' }]
98
+ }], () => [], null); })();
@@ -170,7 +170,7 @@ export class PrismShellComponent {
170
170
  static ɵfac = function PrismShellComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PrismShellComponent)(); };
171
171
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrismShellComponent, selectors: [["prism-shell"]], hostBindings: function PrismShellComponent_HostBindings(rf, ctx) { if (rf & 1) {
172
172
  i0.ɵɵlistener("keydown", function PrismShellComponent_keydown_HostBindingHandler($event) { return ctx.onKeyDown($event); }, i0.ɵɵresolveDocument);
173
- } }, decls: 8, vars: 8, consts: [[1, "prism-shell"], [1, "prism-shell__header"], [1, "prism-body"], [1, "prism-main"], [1, "prism-main__canvas"], [1, "prism-shell__empty"], [1, "prism-sidebar-wrap"], [1, "prism-sidebar-foot"], ["alt", "ng-prism logo", "src", "data:image/png;base64,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", 1, "prism-sidebar-foot__logo"], ["href", "https://dyingangel666.github.io/ng-prism/#/", "target", "_blank", "rel", "noopener", 1, "prism-sidebar-foot__link"], ["prismResizer", "", "axis", "x", 1, "prism-resizer-col", 3, "valueChange", "min", "max", "value"], ["headEnd", ""], [1, "prism-canvas-wrap"], ["prismResizer", "", "axis", "y", 1, "prism-resizer-row", 3, "valueChange", "min", "max", "value"], [1, "prism-main__panel"], ["viewBox", "0 0 24 24", "fill", "none", "stroke", "currentColor", "stroke-width", "1.5", "stroke-linecap", "round", "stroke-linejoin", "round", 1, "prism-shell__empty-icon"], ["d", "M12 2L4 14h16L12 2z"], ["d", "M4 14l4 8h8l4-8"], [1, "prism-shell__empty-text"], [1, "prism-shell__empty-hint"]], template: function PrismShellComponent_Template(rf, ctx) { if (rf & 1) {
173
+ } }, decls: 8, vars: 8, consts: [[1, "prism-shell"], [1, "prism-shell__header"], [1, "prism-body"], [1, "prism-main"], [1, "prism-main__canvas"], [1, "prism-shell__empty"], [1, "prism-sidebar-wrap"], [1, "prism-sidebar-foot"], ["alt", "ng-prism logo", "src", "data:image/png;base64,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", 1, "prism-sidebar-foot__logo"], ["href", "https://ng-prism.github.io/ng-prism/#/", "target", "_blank", "rel", "noopener", 1, "prism-sidebar-foot__link"], ["prismResizer", "", "axis", "x", 1, "prism-resizer-col", 3, "valueChange", "min", "max", "value"], ["headEnd", ""], [1, "prism-canvas-wrap"], ["prismResizer", "", "axis", "y", 1, "prism-resizer-row", 3, "valueChange", "min", "max", "value"], [1, "prism-main__panel"], ["viewBox", "0 0 24 24", "fill", "none", "stroke", "currentColor", "stroke-width", "1.5", "stroke-linecap", "round", "stroke-linejoin", "round", 1, "prism-shell__empty-icon"], ["d", "M12 2L4 14h16L12 2z"], ["d", "M4 14l4 8h8l4-8"], [1, "prism-shell__empty-text"], [1, "prism-shell__empty-hint"]], template: function PrismShellComponent_Template(rf, ctx) { if (rf & 1) {
174
174
  i0.ɵɵelementStart(0, "div", 0);
175
175
  i0.ɵɵelement(1, "prism-header", 1);
176
176
  i0.ɵɵelementStart(2, "div", 2);
@@ -218,7 +218,7 @@ export class PrismShellComponent {
218
218
  PrismCanvasToolbarComponent,
219
219
  PrismTemplatePopoverComponent,
220
220
  PrismCanvasPinRowComponent
221
- ], template: "<div\n class=\"prism-shell\"\n [style]=\"shellStyle()\">\n <prism-header class=\"prism-shell__header\" />\n\n <div\n class=\"prism-body\"\n [class.prism-body--no-sidebar]=\"!layout.sidebarVisible()\">\n @if (layout.sidebarVisible()) {\n <aside class=\"prism-sidebar-wrap\">\n <prism-sidebar />\n <div class=\"prism-sidebar-foot\">\n <img\n class=\"prism-sidebar-foot__logo\"\n alt=\"ng-prism logo\"\n src=\"data:image/png;base64,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\" />\n <a\n class=\"prism-sidebar-foot__link\"\n href=\"https://dyingangel666.github.io/ng-prism/#/\"\n target=\"_blank\"\n rel=\"noopener\">\n Powered by ng-prism\n </a>\n </div>\n </aside>\n <div\n class=\"prism-resizer-col\"\n prismResizer\n axis=\"x\"\n [min]=\"200\"\n [max]=\"360\"\n [value]=\"layout.sidebarWidth()\"\n (valueChange)=\"layout.setSidebarWidth($event)\"></div>\n }\n\n <main\n class=\"prism-main\"\n [style.--ph.px]=\"showPanel() ? layout.panelHeight() : 0\">\n @if (navigationService.activeComponent()) {\n @if (panelService.activeViewId() === 'renderer') {\n <prism-component-head>\n @if (viewPanels().length > 0) {\n <prism-view-tab-bar headEnd />\n }\n </prism-component-head>\n @if (layout.toolbarVisible()) {\n <prism-variant-ribbon />\n }\n <div class=\"prism-canvas-wrap\">\n <prism-canvas-toolbar />\n <prism-renderer />\n <prism-template-popover />\n <prism-canvas-pin-row />\n </div>\n } @else {\n <prism-component-head>\n <prism-view-tab-bar headEnd />\n </prism-component-head>\n <prism-view-panel-host class=\"prism-main__canvas\" />\n }\n @if (showPanel()) {\n <div\n class=\"prism-resizer-row\"\n prismResizer\n axis=\"y\"\n [min]=\"200\"\n [max]=\"560\"\n [value]=\"layout.panelHeight()\"\n (valueChange)=\"layout.setPanelHeight($event)\"></div>\n <div class=\"prism-main__panel\">\n <prism-panel-host />\n </div>\n }\n } @else if (navigationService.activePage()) {\n <prism-page-renderer class=\"prism-main__canvas\" />\n } @else {\n <div class=\"prism-shell__empty\">\n <svg\n class=\"prism-shell__empty-icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path d=\"M12 2L4 14h16L12 2z\" />\n <path d=\"M4 14l4 8h8l4-8\" />\n </svg>\n <p class=\"prism-shell__empty-text\">Select a component</p>\n <p class=\"prism-shell__empty-hint\"> from the sidebar to preview it here </p>\n </div>\n }\n </main>\n </div>\n</div>\n", styles: [":host {\n display: block;\n height: 100%;\n}\n\n.prism-shell {\n display: grid;\n grid-template-rows: var(--band-header) 1fr;\n\n /* Declared for its minimum, not for its size. An implicit grid track is\n auto, and an auto track's minimum is the min-content width of what sits\n in it -- here the whole body, sidebar and resizer and main together. The\n track therefore grows to whatever the widest panel demands and the\n overflow: hidden below clips the remainder, instead of the viewport ever\n getting a chance to reflow. Measured at a 500px viewport the track stood\n at 763px and held the canvas at 415px however far the window was dragged\n in, so responsive behaviour inside a showcased component was impossible\n to reach.\n The rows stay bare because min-height: 0 is already spelled out on every\n level below them. The inline axis had no such counterpart anywhere, and\n the levels below zero their own minimum through overflow: hidden, which\n is why this one track is the only place that needs saying. */\n grid-template-columns: minmax(0, 1fr);\n height: 100vh;\n overflow: hidden;\n font-family: var(--font-sans, var(--prism-font-sans));\n color: var(--prism-text);\n background: var(--prism-void);\n}\n\n.prism-body {\n display: grid;\n grid-template-columns: var(--sw, 264px) 4px 1fr;\n min-height: 0;\n}\n\n.prism-body--no-sidebar {\n grid-template-columns: 1fr;\n}\n\n.prism-sidebar-wrap {\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n background: var(--prism-bg);\n border-right: 1px solid var(--prism-border);\n}\n\n.prism-sidebar-wrap prism-sidebar {\n flex: 1;\n min-height: 0;\n}\n\n.prism-sidebar-foot {\n display: flex;\n gap: 8px;\n align-items: center;\n padding: 10px 14px;\n font-size: 11px;\n color: var(--prism-text-ghost);\n border-top: 1px solid var(--prism-border);\n}\n\n.prism-sidebar-foot__logo {\n flex-shrink: 0;\n width: 16px;\n}\n\n.prism-sidebar-foot__link {\n color: var(--prism-text-ghost);\n text-decoration: none;\n transition: color var(--dur-fast);\n}\n\n.prism-sidebar-foot__link:hover {\n color: var(--prism-text-2);\n}\n\n.prism-resizer-col {\n position: relative;\n z-index: 5;\n width: 4px;\n background: transparent;\n transition: background var(--dur-fast) var(--ease-default);\n}\n\n.prism-resizer-col:hover,\n.prism-resizer-col.active {\n background: var(--prism-primary);\n}\n\n.prism-main {\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n background: var(--prism-void);\n}\n\n.prism-resizer-row {\n position: relative;\n z-index: 5;\n flex-shrink: 0;\n height: 4px;\n background: transparent;\n transition: background var(--dur-fast) var(--ease-default);\n}\n\n.prism-resizer-row:hover,\n.prism-resizer-row.active {\n background: var(--prism-primary);\n}\n\n/* One row, not two: the canvas tools no longer occupy a band above the\n stage, they float over it from a rail absolutely positioned against\n this element. The position: relative below is what anchors it. */\n.prism-canvas-wrap {\n position: relative;\n display: grid;\n flex: 1;\n grid-template-rows: minmax(0, 1fr);\n min-height: 0;\n overflow: hidden;\n background: var(--prism-bg-surface);\n}\n\n.prism-main__canvas {\n flex: 1;\n min-height: 0;\n overflow: auto;\n}\n\n.prism-main__panel {\n flex-shrink: 0;\n height: var(--ph, 260px);\n min-height: 0;\n overflow: hidden;\n}\n\n.prism-shell__empty {\n display: flex;\n flex-direction: column;\n grid-row: 1 / -1;\n gap: 8px;\n align-items: center;\n justify-content: center;\n}\n\n.prism-shell__empty-icon {\n width: 48px;\n height: 48px;\n margin-bottom: 8px;\n color: var(--prism-text-ghost);\n}\n\n.prism-shell__empty-text {\n margin: 0;\n font-size: var(--fs-xl);\n font-weight: 500;\n color: var(--prism-text-muted);\n}\n\n.prism-shell__empty-hint {\n margin: 0;\n font-size: var(--fs-lg);\n color: var(--prism-text-ghost);\n}\n"] }]
221
+ ], template: "<div\n class=\"prism-shell\"\n [style]=\"shellStyle()\">\n <prism-header class=\"prism-shell__header\" />\n\n <div\n class=\"prism-body\"\n [class.prism-body--no-sidebar]=\"!layout.sidebarVisible()\">\n @if (layout.sidebarVisible()) {\n <aside class=\"prism-sidebar-wrap\">\n <prism-sidebar />\n <div class=\"prism-sidebar-foot\">\n <img\n class=\"prism-sidebar-foot__logo\"\n alt=\"ng-prism logo\"\n src=\"data:image/png;base64,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\" />\n <a\n class=\"prism-sidebar-foot__link\"\n href=\"https://ng-prism.github.io/ng-prism/#/\"\n target=\"_blank\"\n rel=\"noopener\">\n Powered by ng-prism\n </a>\n </div>\n </aside>\n <div\n class=\"prism-resizer-col\"\n prismResizer\n axis=\"x\"\n [min]=\"200\"\n [max]=\"360\"\n [value]=\"layout.sidebarWidth()\"\n (valueChange)=\"layout.setSidebarWidth($event)\"></div>\n }\n\n <main\n class=\"prism-main\"\n [style.--ph.px]=\"showPanel() ? layout.panelHeight() : 0\">\n @if (navigationService.activeComponent()) {\n @if (panelService.activeViewId() === 'renderer') {\n <prism-component-head>\n @if (viewPanels().length > 0) {\n <prism-view-tab-bar headEnd />\n }\n </prism-component-head>\n @if (layout.toolbarVisible()) {\n <prism-variant-ribbon />\n }\n <div class=\"prism-canvas-wrap\">\n <prism-canvas-toolbar />\n <prism-renderer />\n <prism-template-popover />\n <prism-canvas-pin-row />\n </div>\n } @else {\n <prism-component-head>\n <prism-view-tab-bar headEnd />\n </prism-component-head>\n <prism-view-panel-host class=\"prism-main__canvas\" />\n }\n @if (showPanel()) {\n <div\n class=\"prism-resizer-row\"\n prismResizer\n axis=\"y\"\n [min]=\"200\"\n [max]=\"560\"\n [value]=\"layout.panelHeight()\"\n (valueChange)=\"layout.setPanelHeight($event)\"></div>\n <div class=\"prism-main__panel\">\n <prism-panel-host />\n </div>\n }\n } @else if (navigationService.activePage()) {\n <prism-page-renderer class=\"prism-main__canvas\" />\n } @else {\n <div class=\"prism-shell__empty\">\n <svg\n class=\"prism-shell__empty-icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path d=\"M12 2L4 14h16L12 2z\" />\n <path d=\"M4 14l4 8h8l4-8\" />\n </svg>\n <p class=\"prism-shell__empty-text\">Select a component</p>\n <p class=\"prism-shell__empty-hint\"> from the sidebar to preview it here </p>\n </div>\n }\n </main>\n </div>\n</div>\n", styles: [":host {\n display: block;\n height: 100%;\n}\n\n.prism-shell {\n display: grid;\n grid-template-rows: var(--band-header) 1fr;\n\n /* Declared for its minimum, not for its size. An implicit grid track is\n auto, and an auto track's minimum is the min-content width of what sits\n in it -- here the whole body, sidebar and resizer and main together. The\n track therefore grows to whatever the widest panel demands and the\n overflow: hidden below clips the remainder, instead of the viewport ever\n getting a chance to reflow. Measured at a 500px viewport the track stood\n at 763px and held the canvas at 415px however far the window was dragged\n in, so responsive behaviour inside a showcased component was impossible\n to reach.\n The rows stay bare because min-height: 0 is already spelled out on every\n level below them. The inline axis had no such counterpart anywhere, and\n the levels below zero their own minimum through overflow: hidden, which\n is why this one track is the only place that needs saying. */\n grid-template-columns: minmax(0, 1fr);\n height: 100vh;\n overflow: hidden;\n font-family: var(--font-sans, var(--prism-font-sans));\n color: var(--prism-text);\n background: var(--prism-void);\n}\n\n.prism-body {\n display: grid;\n grid-template-columns: var(--sw, 264px) 4px 1fr;\n min-height: 0;\n}\n\n.prism-body--no-sidebar {\n grid-template-columns: 1fr;\n}\n\n.prism-sidebar-wrap {\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n background: var(--prism-bg);\n border-right: 1px solid var(--prism-border);\n}\n\n.prism-sidebar-wrap prism-sidebar {\n flex: 1;\n min-height: 0;\n}\n\n.prism-sidebar-foot {\n display: flex;\n gap: 8px;\n align-items: center;\n padding: 10px 14px;\n font-size: 11px;\n color: var(--prism-text-ghost);\n border-top: 1px solid var(--prism-border);\n}\n\n.prism-sidebar-foot__logo {\n flex-shrink: 0;\n width: 16px;\n}\n\n.prism-sidebar-foot__link {\n color: var(--prism-text-ghost);\n text-decoration: none;\n transition: color var(--dur-fast);\n}\n\n.prism-sidebar-foot__link:hover {\n color: var(--prism-text-2);\n}\n\n.prism-resizer-col {\n position: relative;\n z-index: 5;\n width: 4px;\n background: transparent;\n transition: background var(--dur-fast) var(--ease-default);\n}\n\n.prism-resizer-col:hover,\n.prism-resizer-col.active {\n background: var(--prism-primary);\n}\n\n.prism-main {\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n background: var(--prism-void);\n}\n\n.prism-resizer-row {\n position: relative;\n z-index: 5;\n flex-shrink: 0;\n height: 4px;\n background: transparent;\n transition: background var(--dur-fast) var(--ease-default);\n}\n\n.prism-resizer-row:hover,\n.prism-resizer-row.active {\n background: var(--prism-primary);\n}\n\n/* One row, not two: the canvas tools no longer occupy a band above the\n stage, they float over it from a rail absolutely positioned against\n this element. The position: relative below is what anchors it. */\n.prism-canvas-wrap {\n position: relative;\n display: grid;\n flex: 1;\n grid-template-rows: minmax(0, 1fr);\n min-height: 0;\n overflow: hidden;\n background: var(--prism-bg-surface);\n}\n\n.prism-main__canvas {\n flex: 1;\n min-height: 0;\n overflow: auto;\n}\n\n.prism-main__panel {\n flex-shrink: 0;\n height: var(--ph, 260px);\n min-height: 0;\n overflow: hidden;\n}\n\n.prism-shell__empty {\n display: flex;\n flex-direction: column;\n grid-row: 1 / -1;\n gap: 8px;\n align-items: center;\n justify-content: center;\n}\n\n.prism-shell__empty-icon {\n width: 48px;\n height: 48px;\n margin-bottom: 8px;\n color: var(--prism-text-ghost);\n}\n\n.prism-shell__empty-text {\n margin: 0;\n font-size: var(--fs-xl);\n font-weight: 500;\n color: var(--prism-text-muted);\n}\n\n.prism-shell__empty-hint {\n margin: 0;\n font-size: var(--fs-lg);\n color: var(--prism-text-ghost);\n}\n"] }]
222
222
  }], () => [], { onKeyDown: [{
223
223
  type: HostListener,
224
224
  args: ['document:keydown', ['$event']]
@@ -1 +1 @@
1
- {"version":3,"file":"component.scanner.d.ts","sourceRoot":"","sources":["../../../src/builder/scanner/component.scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAgDrE;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE,WAAW,GAAE,MAAM,EAAO,EAAE,OAAO,cAAoB,GAAG,gBAAgB,EAAE,CAsEzJ"}
1
+ {"version":3,"file":"component.scanner.d.ts","sourceRoot":"","sources":["../../../src/builder/scanner/component.scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAiDrE;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE,WAAW,GAAE,MAAM,EAAO,EAAE,OAAO,cAAoB,GAAG,gBAAgB,EAAE,CAsEzJ"}
@@ -4,6 +4,7 @@ import { CANVAS_LAYOUTS } from '../../shared/canvas-layout.type.js';
4
4
  import { evaluateExpression, evaluateStatic, findDecorator, getDecoratorArgument, UNEVALUABLE } from './ast-utils.js';
5
5
  import { getClassHierarchy } from './class-hierarchy.js';
6
6
  import { extractInputs, extractOutputs } from './input.extractor.js';
7
+ import { readPseudoStates } from './pseudo-states.js';
7
8
  import { describeDeprecatedProviders, describeUnevaluable, describeUnreadableBase } from './showcase-diagnostics.js';
8
9
  const COMPONENT_STATUSES = ['stable', 'beta', 'wip', 'deprecated'];
9
10
  function isComponentStatus(value) {
@@ -210,6 +211,13 @@ function extractShowcaseConfig(decorator, className, report, checker) {
210
211
  `invalid canvasLayout "${String(variant['canvasLayout'])}", expected one of: ${CANVAS_LAYOUTS.join(', ')}. Skipping.`);
211
212
  delete cleaned['canvasLayout'];
212
213
  }
214
+ if (variant['pseudo'] !== undefined) {
215
+ const pseudo = readPseudoStates(variant['pseudo'], `${className} variant "${String(variant['name'])}"`, report);
216
+ if (pseudo)
217
+ cleaned['pseudo'] = pseudo;
218
+ else
219
+ delete cleaned['pseudo'];
220
+ }
213
221
  return cleaned;
214
222
  });
215
223
  }
@@ -0,0 +1,11 @@
1
+ import { type ForcedPseudoStates } from '../../shared/pseudo-state.type.js';
2
+ /**
3
+ * `Variant.pseudo` as the scanner evaluated it, with everything it cannot use
4
+ * reported and dropped: a value that is no object, an unknown state, and a
5
+ * target that is neither `true` nor selectors. `undefined` when nothing is left.
6
+ *
7
+ * Selectors are checked to be non-empty strings only. Whether one parses is up
8
+ * to the browser, which warns about it once the variant renders.
9
+ */
10
+ export declare function readPseudoStates(value: unknown, where: string, report: (message: string) => void): ForcedPseudoStates | undefined;
11
+ //# sourceMappingURL=pseudo-states.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pseudo-states.d.ts","sourceRoot":"","sources":["../../../src/builder/scanner/pseudo-states.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAsD,MAAM,mCAAmC,CAAC;AAehI;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,kBAAkB,GAAG,SAAS,CAmBjI"}
@@ -0,0 +1,58 @@
1
+ import { PSEUDO_STATES } from '../../shared/pseudo-state.type.js';
2
+ function isPseudoState(value) {
3
+ return PSEUDO_STATES.includes(value);
4
+ }
5
+ function isSelector(value) {
6
+ return typeof value === 'string' && value.trim() !== '';
7
+ }
8
+ function describeValue(value) {
9
+ if (typeof value === 'string' || (typeof value === 'object' && value !== null))
10
+ return JSON.stringify(value) ?? String(value);
11
+ return String(value);
12
+ }
13
+ /**
14
+ * `Variant.pseudo` as the scanner evaluated it, with everything it cannot use
15
+ * reported and dropped: a value that is no object, an unknown state, and a
16
+ * target that is neither `true` nor selectors. `undefined` when nothing is left.
17
+ *
18
+ * Selectors are checked to be non-empty strings only. Whether one parses is up
19
+ * to the browser, which warns about it once the variant renders.
20
+ */
21
+ export function readPseudoStates(value, where, report) {
22
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
23
+ report(`${where} declares invalid pseudo ${describeValue(value)}, expected an object mapping pseudo states to true or selectors. Skipping.`);
24
+ return undefined;
25
+ }
26
+ const states = {};
27
+ for (const [state, target] of Object.entries(value)) {
28
+ if (!isPseudoState(state)) {
29
+ report(`${where} declares unknown pseudo state "${state}", expected one of: ${PSEUDO_STATES.join(', ')}. Skipping.`);
30
+ continue;
31
+ }
32
+ const read = readTarget(target, `${where} declares pseudo state "${state}"`, report);
33
+ if (read !== undefined)
34
+ states[state] = read;
35
+ }
36
+ return Object.keys(states).length > 0 ? states : undefined;
37
+ }
38
+ function readTarget(target, where, report) {
39
+ if (target === true || isSelector(target))
40
+ return target;
41
+ if (typeof target === 'string') {
42
+ report(`${where} with an empty selector. Skipping.`);
43
+ return undefined;
44
+ }
45
+ if (Array.isArray(target)) {
46
+ const selectors = target.filter(isSelector);
47
+ const invalid = target.filter((entry) => !isSelector(entry));
48
+ if (invalid.length > 0) {
49
+ report(`${where} with ${invalid.map(describeValue).join(', ')} in its selector list, expected non-empty strings. Skipping ${invalid.length === 1 ? 'it' : 'them'}.`);
50
+ }
51
+ else if (selectors.length === 0) {
52
+ report(`${where} with an empty selector list. Skipping.`);
53
+ }
54
+ return selectors.length > 0 ? selectors : undefined;
55
+ }
56
+ report(`${where} with invalid target ${describeValue(target)}, expected true, a selector or a list of selectors. Skipping.`);
57
+ return undefined;
58
+ }
@@ -1,6 +1,7 @@
1
1
  import type { InputSignalWithTransform, Provider } from '@angular/core';
2
2
  import type { CanvasBg } from '../shared/canvas-bg.type.js';
3
3
  import type { CanvasLayout } from '../shared/canvas-layout.type.js';
4
+ import type { ForcedPseudoStates } from '../shared/pseudo-state.type.js';
4
5
  export type ComponentStatus = 'stable' | 'beta' | 'wip' | 'deprecated';
5
6
  export interface DirectiveHost {
6
7
  selector: string;
@@ -107,6 +108,15 @@ export interface Variant<T = unknown> {
107
108
  bg?: CanvasBg;
108
109
  /** Canvas layout mode for this variant. Overrides `ShowcaseConfig.canvasLayout`. See `ShowcaseConfig.canvasLayout` for semantics. */
109
110
  canvasLayout?: CanvasLayout;
111
+ /**
112
+ * Pseudo states forced on while this variant renders, e.g.
113
+ * `{ 'focus-visible': '.btn' }` or `{ hover: true }`.
114
+ * - `true`: the state is forced on every element of the rendered component, the host included.
115
+ * - A selector, or a list of them: only on the matching elements, resolved against the host and everything inside it.
116
+ *
117
+ * The component's own CSS applies: every selector using the pseudo-class is widened to also match a stand-in class on the targeted elements.
118
+ */
119
+ pseudo?: ForcedPseudoStates;
110
120
  }
111
121
  export {};
112
122
  //# sourceMappingURL=showcase.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"showcase.types.d.ts","sourceRoot":"","sources":["../../src/decorator/showcase.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"showcase.types.d.ts","sourceRoot":"","sources":["../../src/decorator/showcase.types.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,8 @@ export type { CanvasBg } from '../shared/canvas-bg.type.js';
4
4
  export { CANVAS_BGS } from '../shared/canvas-bg.type.js';
5
5
  export { DEFAULT_VARIANT_BG, resolveVariantBg } from '../shared/variant-bg.js';
6
6
  export type { VariantBgSource } from '../shared/variant-bg.js';
7
+ export type { ForcedPseudoStates, PseudoState, PseudoTarget } from '../shared/pseudo-state.type.js';
8
+ export { PSEUDO_STATES } from '../shared/pseudo-state.type.js';
7
9
  export { componentPage, customPage } from './page-helpers.js';
8
10
  export type { ComponentPageOptions } from './page-helpers.js';
9
11
  export { defineConfig } from './define-config.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AACA,YAAY,EACR,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,SAAS,EACT,oBAAoB,EACpB,8BAA8B,EAC9B,aAAa,EACb,aAAa,EACb,UAAU,EACV,UAAU,EACV,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EACnB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAKjF,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,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMlD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACnG,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,EACR,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,SAAS,EACT,oBAAoB,EACpB,8BAA8B,EAC9B,aAAa,EACb,aAAa,EACb,UAAU,EACV,UAAU,EACV,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EACnB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAKjF,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;AAK/D,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMlD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACnG,YAAY,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export { CANVAS_BGS } from '../shared/canvas-bg.type.js';
2
2
  export { DEFAULT_VARIANT_BG, resolveVariantBg } from '../shared/variant-bg.js';
3
+ export { PSEUDO_STATES } from '../shared/pseudo-state.type.js';
3
4
  export { componentPage, customPage } from './page-helpers.js';
4
5
  export { defineConfig } from './define-config.js';
5
6
  // Imported from the dependency-free registry module, not from
@@ -1,5 +1,6 @@
1
1
  import type { Provider, Type } from '@angular/core';
2
2
  import type { CanvasBg } from '../shared/canvas-bg.type.js';
3
+ import type { ForcedPseudoStates } from '../shared/pseudo-state.type.js';
3
4
  import type { StyleguidePage } from './page.types.js';
4
5
  export interface NgPrismPlugin {
5
6
  /** Unique plugin name, used for debugging and conflict detection */
@@ -204,6 +205,12 @@ export interface DiscoveryVariant {
204
205
  bg: CanvasBg;
205
206
  /** Sanitised `Variant.meta`. Omitted when empty. */
206
207
  meta?: Record<string, unknown>;
208
+ /**
209
+ * `Variant.pseudo`: the pseudo states the variant forces. Omitted when it
210
+ * forces none. The render marker waits for them, so a capture shows them
211
+ * without any action on the runner's side.
212
+ */
213
+ pseudo?: ForcedPseudoStates;
207
214
  }
208
215
  export interface DiscoveryPage {
209
216
  title: string;
@@ -247,8 +254,8 @@ export interface NgPrismConfig {
247
254
  /**
248
255
  * When true, the build fails instead of warning whenever the scanner has
249
256
  * to drop a `@Showcase` value: one it cannot evaluate statically, an
250
- * invalid `bg`, `status` or `canvasLayout`, a missing `title`, or the
251
- * deprecated `providers`, which never reach the styleguide.
257
+ * invalid `bg`, `status`, `canvasLayout` or `pseudo`, a missing `title`,
258
+ * or the deprecated `providers`, which never reach the styleguide.
252
259
  * Default: `false`.
253
260
  */
254
261
  strictShowcase?: boolean;
@@ -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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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * A user-action pseudo-class a variant can force on.
3
+ *
4
+ * Limited to the states a script cannot hold. `:hover` and `:active` follow
5
+ * the pointer, and only one element in the document can be focused, which the
6
+ * first click into the shell takes away again. A state an input can set
7
+ * (`:checked`, `:disabled`) belongs in `Variant.inputs`.
8
+ */
9
+ export type PseudoState = 'hover' | 'active' | 'focus' | 'focus-visible' | 'focus-within';
10
+ /** Every value {@link PseudoState} accepts, in the order the tools menu lists them. */
11
+ export declare const PSEUDO_STATES: readonly PseudoState[];
12
+ /**
13
+ * Where a forced state applies.
14
+ *
15
+ * `true` puts it on every element of the rendered component, the host
16
+ * included. A selector, or a list of them, limits it to the matching elements,
17
+ * resolved against the host and everything inside it.
18
+ */
19
+ export type PseudoTarget = true | string | readonly string[];
20
+ /** The pseudo states a variant forces, each with the elements it applies to. */
21
+ export type ForcedPseudoStates = Partial<Record<PseudoState, PseudoTarget>>;
22
+ //# sourceMappingURL=pseudo-state.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pseudo-state.type.d.ts","sourceRoot":"","sources":["../../src/shared/pseudo-state.type.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,eAAe,GAAG,cAAc,CAAC;AAE1F,uFAAuF;AACvF,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAA2E,CAAC;AAE5H;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;AAE7D,gFAAgF;AAChF,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ /** Every value {@link PseudoState} accepts, in the order the tools menu lists them. */
2
+ export const PSEUDO_STATES = ['hover', 'active', 'focus', 'focus-visible', 'focus-within'];