@pygmalionjs/pygmalion 0.5.13 → 0.5.15

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 (110) hide show
  1. package/dist-lib/types/App.d.ts +5 -0
  2. package/dist-lib/types/canvas/CameraLayer.d.ts +9 -0
  3. package/dist-lib/types/canvas/Canvas.d.ts +19 -0
  4. package/dist-lib/types/canvas/FrameLabelBanner.d.ts +7 -0
  5. package/dist-lib/types/canvas/FrameView.d.ts +9 -0
  6. package/dist-lib/types/canvas/FrozenRoutePreview.d.ts +12 -0
  7. package/dist-lib/types/canvas/InspectOverlay.d.ts +10 -0
  8. package/dist-lib/types/canvas/LightweightCanvas.d.ts +10 -0
  9. package/dist-lib/types/canvas/ObjectControls.d.ts +22 -0
  10. package/dist-lib/types/canvas/Preview.d.ts +3 -0
  11. package/dist-lib/types/canvas/SectionBoxes.d.ts +24 -0
  12. package/dist-lib/types/canvas/ShadowRoutePreview.d.ts +14 -0
  13. package/dist-lib/types/canvas/StoryboardConnections.d.ts +31 -0
  14. package/dist-lib/types/canvas/cameraPlacement.d.ts +45 -0
  15. package/dist-lib/types/canvas/domTags.d.ts +10 -0
  16. package/dist-lib/types/canvas/layoutContext.d.ts +9 -0
  17. package/dist-lib/types/canvas/useFlowSession.d.ts +36 -0
  18. package/dist-lib/types/canvas/useFrameLod.d.ts +35 -0
  19. package/dist-lib/types/editor/adaptiveFrameLayout.d.ts +67 -0
  20. package/dist-lib/types/editor/assetEditing.d.ts +10 -0
  21. package/dist-lib/types/editor/bannerStyle.d.ts +18 -0
  22. package/dist-lib/types/editor/catalog.d.ts +101 -0
  23. package/dist-lib/types/editor/codegen.d.ts +11 -0
  24. package/dist-lib/types/editor/componentConnections.d.ts +63 -0
  25. package/dist-lib/types/editor/componentInstances.d.ts +27 -0
  26. package/dist-lib/types/editor/contentBounds.d.ts +34 -0
  27. package/dist-lib/types/editor/designCompiler.d.ts +100 -0
  28. package/dist-lib/types/editor/designImport.d.ts +448 -0
  29. package/dist-lib/types/editor/documentSync.d.ts +28 -0
  30. package/dist-lib/types/editor/domImport.d.ts +58 -0
  31. package/dist-lib/types/editor/editModePolicy.d.ts +17 -0
  32. package/dist-lib/types/editor/fiberMap.d.ts +16 -0
  33. package/dist-lib/types/editor/flowSessionScheduler.d.ts +97 -0
  34. package/dist-lib/types/editor/flowSessions.d.ts +137 -0
  35. package/dist-lib/types/editor/frameHeight.d.ts +14 -0
  36. package/dist-lib/types/editor/frameIdentity.d.ts +9 -0
  37. package/dist-lib/types/editor/frameLabels.d.ts +124 -0
  38. package/dist-lib/types/editor/frameLanes.d.ts +62 -0
  39. package/dist-lib/types/editor/frameLod.d.ts +123 -0
  40. package/dist-lib/types/editor/frameLodRuntime.d.ts +64 -0
  41. package/dist-lib/types/editor/framePointerHit.d.ts +67 -0
  42. package/dist-lib/types/editor/framePointerIntent.d.ts +53 -0
  43. package/dist-lib/types/editor/framePreviewChannels.d.ts +26 -0
  44. package/dist-lib/types/editor/framePreviewKeys.d.ts +21 -0
  45. package/dist-lib/types/editor/frameWheelRouting.d.ts +16 -0
  46. package/dist-lib/types/editor/frozenImport.d.ts +70 -0
  47. package/dist-lib/types/editor/host.d.ts +114 -0
  48. package/dist-lib/types/editor/inspect.d.ts +225 -0
  49. package/dist-lib/types/editor/interactiveStates.d.ts +103 -0
  50. package/dist-lib/types/editor/livePreviewInstances.d.ts +93 -0
  51. package/dist-lib/types/editor/liveScreens.d.ts +20 -0
  52. package/dist-lib/types/editor/nodeSelector.d.ts +20 -0
  53. package/dist-lib/types/editor/previewBootstrap.d.ts +189 -0
  54. package/dist-lib/types/editor/previewEnvironmentControls.d.ts +33 -0
  55. package/dist-lib/types/editor/previewHydration.d.ts +5 -0
  56. package/dist-lib/types/editor/previewIntent.d.ts +17 -0
  57. package/dist-lib/types/editor/previewSweep.d.ts +129 -0
  58. package/dist-lib/types/editor/previewWarmup.d.ts +77 -0
  59. package/dist-lib/types/editor/projectBootGate.d.ts +45 -0
  60. package/dist-lib/types/editor/projectRuntime.d.ts +138 -0
  61. package/dist-lib/types/editor/registry.d.ts +38 -0
  62. package/dist-lib/types/editor/routePreview.d.ts +285 -0
  63. package/dist-lib/types/editor/routePreviewArtifactV2.d.ts +34 -0
  64. package/dist-lib/types/editor/routePreviewArtifactV3.d.ts +64 -0
  65. package/dist-lib/types/editor/routePreviewPlacement.d.ts +9 -0
  66. package/dist-lib/types/editor/routePreviewStatus.d.ts +48 -0
  67. package/dist-lib/types/editor/scenarioCoverage.d.ts +167 -0
  68. package/dist-lib/types/editor/screenCards.d.ts +101 -0
  69. package/dist-lib/types/editor/screenDimensions.d.ts +63 -0
  70. package/dist-lib/types/editor/screenFlows.d.ts +47 -0
  71. package/dist-lib/types/editor/screenInteractions.d.ts +4 -0
  72. package/dist-lib/types/editor/screenLists.d.ts +40 -0
  73. package/dist-lib/types/editor/screenStateGroups.d.ts +36 -0
  74. package/dist-lib/types/editor/screenshotBitmaps.d.ts +20 -0
  75. package/dist-lib/types/editor/sectionHeaders.d.ts +117 -0
  76. package/dist-lib/types/editor/shadowPreview.d.ts +103 -0
  77. package/dist-lib/types/editor/sharedSource.d.ts +40 -0
  78. package/dist-lib/types/editor/sourceJournal.d.ts +27 -0
  79. package/dist-lib/types/editor/store.d.ts +838 -0
  80. package/dist-lib/types/editor/storyboardComposition.d.ts +116 -0
  81. package/dist-lib/types/editor/storyboardDiscovery.d.ts +105 -0
  82. package/dist-lib/types/editor/storyboardEnvironment.d.ts +22 -0
  83. package/dist-lib/types/editor/storyboardGraph.d.ts +120 -0
  84. package/dist-lib/types/editor/storyboardGraphRuntime.d.ts +12 -0
  85. package/dist-lib/types/editor/storyboardGraphView.d.ts +104 -0
  86. package/dist-lib/types/editor/surfaceDemands.d.ts +138 -0
  87. package/dist-lib/types/editor/tokens.d.ts +26 -0
  88. package/dist-lib/types/editor/useObserved.d.ts +1 -0
  89. package/dist-lib/types/editor/viewportPresets.d.ts +21 -0
  90. package/dist-lib/types/editor/visualQa.d.ts +50 -0
  91. package/dist-lib/types/lib.d.ts +345 -0
  92. package/dist-lib/types/shell/ApplyPanel.d.ts +1 -0
  93. package/dist-lib/types/shell/AssetsPanel.d.ts +3 -0
  94. package/dist-lib/types/shell/CanvasStatusProbe.d.ts +5 -0
  95. package/dist-lib/types/shell/CodePanel.d.ts +1 -0
  96. package/dist-lib/types/shell/ComponentStateControls.d.ts +108 -0
  97. package/dist-lib/types/shell/ContextMenu.d.ts +1 -0
  98. package/dist-lib/types/shell/LayerTree.d.ts +7 -0
  99. package/dist-lib/types/shell/PropsPanel.d.ts +1 -0
  100. package/dist-lib/types/shell/StoryboardGraphPanel.d.ts +23 -0
  101. package/dist-lib/types/shell/ZoomIndicator.d.ts +4 -0
  102. package/dist-lib/types/shell/qaPresentation.d.ts +9 -0
  103. package/dist-lib/types/testing.d.ts +8 -0
  104. package/dist-lib/types/ui/SourceRefControl.d.ts +38 -0
  105. package/dist-lib/types/ui/icons.d.ts +30 -0
  106. package/node/dev-mirror.mjs +142 -1
  107. package/node/dev-view.vite.mjs +37 -0
  108. package/package.json +7 -8
  109. package/testing.d.ts +0 -26
  110. package/types.d.ts +0 -2675
@@ -0,0 +1,50 @@
1
+ import type { InspectApplyPayload } from './inspect';
2
+ export interface InspectQaArtifactHash {
3
+ domStructureHash: string;
4
+ screenshotHash: string;
5
+ screenshotUrl?: string;
6
+ }
7
+ export interface InspectQaPixelDimensions {
8
+ width: number;
9
+ height: number;
10
+ }
11
+ export interface InspectQaPixelDiff {
12
+ before: InspectQaPixelDimensions;
13
+ after: InspectQaPixelDimensions;
14
+ dimensionsMatch: boolean;
15
+ changedPixels: number;
16
+ totalPixels: number;
17
+ diffRatio: number;
18
+ threshold: number;
19
+ heatmapUrl: string | null;
20
+ }
21
+ export interface InspectQaFrameResult {
22
+ id: string;
23
+ before: InspectQaArtifactHash;
24
+ after?: InspectQaArtifactHash;
25
+ domChanged?: boolean;
26
+ screenshotChanged?: boolean;
27
+ pixelDiff?: InspectQaPixelDiff;
28
+ }
29
+ export interface InspectQaFailure {
30
+ id: string;
31
+ error: string;
32
+ }
33
+ export interface InspectQaResult {
34
+ phase: 'baseline' | 'changed';
35
+ baselineId: string;
36
+ complete: boolean;
37
+ frames: InspectQaFrameResult[];
38
+ failures: InspectQaFailure[];
39
+ }
40
+ export interface InspectQaCaptureRequest {
41
+ phase: 'baseline' | 'changed';
42
+ basePath: string;
43
+ frameIds: string[];
44
+ baselineId?: string;
45
+ }
46
+ export declare function inspectQaBaseUrl(basePath: string, origin: string): string;
47
+ /** Among all change impact frames calculated by the source graph, only the canonical screen that the host can capture is selected. */
48
+ export declare function inspectQaFrameIds(payload: InspectApplyPayload, eligibleFrameIds?: readonly string[]): string[];
49
+ /** Host Vite middleware strictly normalizes DOM·PNG hashes created with Playwright. */
50
+ export declare function requestInspectQaCapture(fetcher: typeof fetch, endpoint: string, request: InspectQaCaptureRequest): Promise<InspectQaResult>;
@@ -0,0 +1,345 @@
1
+ import { type DesignImportController, type DesignImportInitialPage } from './editor/designImport';
2
+ import { type ComponentRegistry } from './editor/registry';
3
+ import { type DesignComponentConnectionDef } from './editor/componentConnections';
4
+ import { type ApplyPayload, type DesignChangePayload, type DesignChangeResult, type InspectApplyResult, type InspectImpactResult, type InspectPreviewResult } from './editor/host';
5
+ import { type InspectApplyPayload } from './editor/inspect';
6
+ import { type ScreenFlowPath } from './editor/screenFlows';
7
+ import { type ScenarioCoverageClaim } from './editor/scenarioCoverage';
8
+ import { type InteractiveStateDef } from './editor/interactiveStates';
9
+ import { type SurfaceClassification } from './editor/surfaceDemands';
10
+ import { type ScreenDimensionDef } from './editor/screenDimensions';
11
+ import { type FrameBranchKindDef, type FrameLabelLabels } from './editor/frameLabels';
12
+ import { type ScreenCardDef } from './editor/screenCards';
13
+ import { type SectionHeaderDef, type SectionHeaderLabels } from './editor/sectionHeaders';
14
+ import { type ScreenLaneDef } from './editor/frameLanes';
15
+ import { type ScreenListDef } from './editor/screenLists';
16
+ import { type RoutePreviewArtifactBundle } from './editor/routePreview';
17
+ import type { StoryboardDefinition } from './editor/storyboardGraph';
18
+ import { type TokenDef } from './editor/tokens';
19
+ import { type ViewportPresetDef } from './editor/viewportPresets';
20
+ import { type PreviewEnvironmentControlDef } from './editor/previewEnvironmentControls';
21
+
22
+ export { setComponentRegistry } from './editor/registry';
23
+ export type { ComponentRegistry, RegistryEntry, RegistryPropValue, } from './editor/registry';
24
+ export { enumerateDesignComponentConnectionCases, getDesignComponentConnection, getDesignComponentConnectionForComponent, getDesignComponentConnections, setDesignComponentConnections, validateDesignComponentConnections, } from './editor/componentConnections';
25
+ export type { DesignComponentConnectionCase, DesignComponentConnectionCases, DesignComponentConnectionDef, DesignComponentReference, DesignConnectionDiagnostic, DesignConnectionPropertyDef, DesignConnectionPropertyKind, } from './editor/componentConnections';
26
+ export { compileDesignDocument, createDesignIntermediateDocument, DEFAULT_DESIGN_COMPILE_LIMITS, DESIGN_IR_SCHEMA, DESIGN_IR_VERSION, getDesignCodegenAdapters, registerDesignCodegenAdapter, } from './editor/designCompiler';
27
+ export type { DesignCodegenAdapter, DesignCodegenAdapterContext, DesignCodegenAdapterOutput, DesignCompileDiagnostic, DesignCompileLimits, DesignCompileOptions, DesignCompilePurpose, DesignCompileResult, DesignCompileSeverity, DesignCompileStage, DesignCompileStatus, DesignIntermediateDocumentV1, DesignIRAsset, DesignIRComponent, DesignIRMetrics, } from './editor/designCompiler';
28
+ export type { CodegenFrameOptions } from './editor/codegen';
29
+ export { createDesignComponentCatalog, createDesignComponentVariantMatrix, createDesignGalleryCatalog, designCatalogKey, designCatalogRegistryName, PygmalionCatalogDocument, PygmalionCatalogMatrix, PygmalionCatalogSection, } from './editor/catalog';
30
+ export type { DesignCatalogBuild, DesignCatalogFrame, DesignCatalogItem, DesignCatalogKind, DesignCatalogPageDescriptor, DesignComponentCatalogOptions, DesignComponentVariantMatrix, DesignGalleryCatalogOptions, PygmalionCatalogDocumentProps, PygmalionCatalogMatrixProps, PygmalionCatalogSectionProps, } from './editor/catalog';
31
+ export { setTokens, applyTokenOverride, resetTokenOverrides, } from './editor/tokens';
32
+ export { setAppOrigin as setPygmalionAppOrigin } from './editor/host';
33
+ export { setPreviewRevision as setPygmalionPreviewRevision } from './editor/host';
34
+ export { clearRoutePreviewSnapshots as clearPygmalionPreviewCache, recommendedRoutePreviewConcurrency as getRecommendedPygmalionPreviewConcurrency, setRoutePreviewConcurrency as setPygmalionPreviewConcurrency, } from './editor/routePreview';
35
+ export type { RoutePreviewArtifactBundle } from './editor/routePreview';
36
+ export { reconstructRoutePreviewArtifactScreenshotV3, reconstructRoutePreviewArtifactSnapshotV3, validateRoutePreviewArtifactV3Browser, } from './editor/routePreviewArtifactV3';
37
+ export type { RoutePreviewArtifactBundleV3, RoutePreviewArtifactV3Diagnostic, RoutePreviewArtifactV3Frame, RoutePreviewArtifactV3ReconstructedScreenshot, RoutePreviewArtifactV3ScreenshotAsset, RoutePreviewArtifactV3ScreenshotMediaType, RoutePreviewArtifactV3ScreenshotReference, RoutePreviewArtifactV3Status, RoutePreviewArtifactV3ValidationResult, RoutePreviewArtifactV3Viewport, } from './editor/routePreviewArtifactV3';
38
+ export { bootstrapPreviewArtifact, createPreviewArtifactHttpTransport, createPreviewCacheNamespace, createPreviewFrameFingerprint, createPreviewRecipeFingerprint, createStoryboardCaptureRecipeIdentity, resolvePreviewArtifactFrames, validatePreviewArtifactBundle, } from './editor/previewBootstrap';
39
+ export type { PreviewArtifactBootstrapResult, PreviewArtifactExpectation, PreviewArtifactFetch, PreviewArtifactFrameRequest, PreviewArtifactFrameResolution, PreviewArtifactHttpResponse, PreviewArtifactHttpTransportOptions, PreviewArtifactTransport, PreviewArtifactTransportRequest, PreviewArtifactValidationReason, PreviewArtifactValidationResult, PreviewCacheNamespaceOptions, PreviewRecipeIdentity, StoryboardCaptureRecipeInput, } from './editor/previewBootstrap';
40
+ export { validateScreenStateGroups } from './editor/screenStateGroups';
41
+ export type { ScreenStateGroupDiagnostic, ScreenStateGroupInput, } from './editor/screenStateGroups';
42
+ export { validateScreenFlows } from './editor/screenFlows';
43
+ export type { ScreenFlowDiagnostic, ScreenFlowPath, ScreenFlowWaypoint, } from './editor/screenFlows';
44
+ export { applyScenarioCoverageClaim, validateScenarioCoverage, } from './editor/scenarioCoverage';
45
+ export type { ApplyCoverageResult, ScenarioCoverageClaim, ScenarioCoverageContext, ScenarioCoverageDiagnostic, } from './editor/scenarioCoverage';
46
+ export { enumerateControlCandidates, enumerateRequestCandidates, enumerateRouteCandidates, frameSurfaceDemands, getObservedRequests, getSurfaceClassifications, MIN_SURFACE_REASON_LENGTH, requestEndpointShape, setObservedRequests, setSurfaceClassifications, unclassifiedSurfaces, validateSurfaceDemands, } from './editor/surfaceDemands';
47
+ export type { ControlNodeLike, FrameSurfaceDemands, ObservedRequest, RouteEnumerationInput, SurfaceCandidate, SurfaceClassification, SurfaceDemandDiagnostic, SurfaceDemandKind, SurfaceVerdict, } from './editor/surfaceDemands';
48
+ export { validateInteractiveStates } from './editor/interactiveStates';
49
+ export type { InteractiveStateDef, InteractiveStateDiagnostic, InteractiveStateOption, } from './editor/interactiveStates';
50
+ export { validateScreenCards } from './editor/screenCards';
51
+ export type { CardBadgeOption, CardSlotDef, ScreenCardDef, ScreenCardDiagnostic, } from './editor/screenCards';
52
+ export { validateFrameBranchKinds, framesMissingScenario } from './editor/frameLabels';
53
+ export type { FrameBranchKindDef, FrameBranchKindDiagnostic, FrameLabelLabels, } from './editor/frameLabels';
54
+ export { validateSectionHeaders } from './editor/sectionHeaders';
55
+ export type { SectionHeaderDef, SectionHeaderDiagnostic, SectionHeaderFacts, SectionHeaderLabels, } from './editor/sectionHeaders';
56
+ export { validateScreenLanes } from './editor/frameLanes';
57
+ export type { ScreenLaneDef, ScreenLaneDiagnostic } from './editor/frameLanes';
58
+ export { validateScreenLists } from './editor/screenLists';
59
+ export type { ScreenListDef, ScreenListDiagnostic } from './editor/screenLists';
60
+ export type { NodeSelector } from './editor/nodeSelector';
61
+ export { validateScreenDimensions } from './editor/screenDimensions';
62
+ export type { ComponentBranch, ScreenDimensionDef, ScreenDimensionDiagnostic, ScreenDimensionOption, } from './editor/screenDimensions';
63
+ export { createStoryboardPathEdges, createStoryboardGraph, storyboardScreenRecipeKey, } from './editor/storyboardGraph';
64
+ export type { StoryboardDefinition, StoryboardGraph, StoryboardGraphBranch, StoryboardGraphBuildOptions, StoryboardGraphCoverage, StoryboardGraphEdge, StoryboardGraphEdgeInput, StoryboardGraphEdgeOrigin, StoryboardGraphNode, StoryboardGraphSourceGroup, StoryboardGraphWarning, StoryboardGraphWarningCode, StoryboardPathInput, } from './editor/storyboardGraph';
65
+ export { createStoryboardRouteScenarioId, createStoryboardGraphFromDiscovery, getStoryboardDiscoveryBaselineEnvironment, loadStoryboardDiscovery, publishStoryboardDiscovery, resolveStoryboardScreenCases, } from './editor/storyboardDiscovery';
66
+ export type { LoadStoryboardDiscoveryOptions, StoryboardDiscoveryCandidate, StoryboardDiscoveryEdge, StoryboardDiscoveryFetch, StoryboardDiscoveryGraphOptions, StoryboardDiscoveryManifest, StoryboardDiscoveryResponse, StoryboardDiscoveryResult, StoryboardDiscoveryRoute, StoryboardDiscoveryScenario, StoryboardResolvedPage, } from './editor/storyboardDiscovery';
67
+ export { getStoryboardGraph, setStoryboardGraph, subscribeStoryboardGraph, } from './editor/storyboardGraphRuntime';
68
+ export { createStoryboardGraphViewModel } from './editor/storyboardGraphView';
69
+ export type { StoryboardFrameReference, StoryboardGraphCanonicalView, StoryboardGraphFrameView, StoryboardGraphSourceView, StoryboardGraphTransitionView, StoryboardGraphViewModel, } from './editor/storyboardGraphView';
70
+ export { createStoryboardRouteUrl, getStoryboardBaselineEnvironment, mergeStoryboardEnvironment, setStoryboardBaselineEnvironment, STORYBOARD_ENVIRONMENT_CONTROL, STORYBOARD_ENVIRONMENT_QUERY, } from './editor/storyboardEnvironment';
71
+ export type { ApplyPayload, DesignChangePayload, DesignChangeResult, DesignCodeDocument, DesignElementChange, DesignElementDocument, DesignTokenDocument, InspectApplyResult, InspectImpactResult, InspectPreviewResult, } from './editor/host';
72
+ export type { InspectApplyPayload, PrimitiveSourceValue, PrimitiveSourceValueType, SourceAffectedFrame, SourceEditOperation, SourceEditScope, SourceIdentity, SourceInsertComponent, } from './editor/inspect';
73
+ export type { InspectQaArtifactHash, InspectQaCaptureRequest, InspectQaFailure, InspectQaFrameResult, InspectQaPixelDiff, InspectQaPixelDimensions, InspectQaResult, } from './editor/visualQa';
74
+ export { usePygmalionProject } from './editor/projectRuntime';
75
+ export type { PygmalionDesignSessionStatus, PygmalionDevMirrorStatus, PygmalionIntegrationState, PygmalionProjectEndpoints, PygmalionProjectRuntime, PygmalionProjectRuntimeOptions, PygmalionRevertResult, PygmalionSessionOperation, PygmalionSourceRef, PygmalionSourceRefs, PygmalionVisualOperation, PygmalionVisualRevertOperation, } from './editor/projectRuntime';
76
+ export { SourceRefControl } from './ui/SourceRefControl';
77
+ export type { SourceRefControlProps } from './ui/SourceRefControl';
78
+ export type { TokenDef } from './editor/tokens';
79
+ export { getViewportPresets, setViewportPresets, } from './editor/viewportPresets';
80
+ export type { ViewportPresetDef } from './editor/viewportPresets';
81
+ export { clearPreviewEnvironmentControlValues, getPreviewEnvironmentControlValue, getPreviewEnvironmentControls, getPreviewEnvironmentOverride, setPreviewEnvironmentControlValue, setPreviewEnvironmentControls, subscribePreviewEnvironmentControls, } from './editor/previewEnvironmentControls';
82
+ export type { PreviewEnvironmentControlDef, PreviewEnvironmentControlOptionDef, } from './editor/previewEnvironmentControls';
83
+ export { createDesignImportController, createDesignScreenCollection, DESIGN_IMPORT_KINDS, expandDesignScreenCasesViewports, expandDesignScreenCollectionViewports, mergeScreenPresets, } from './editor/designImport';
84
+ export type { CreateDesignImportOptions, DesignBehaviorScenario, DesignImportAsset, DesignImportCollection, DesignImportController, DesignImportCoverage, DesignImportCoverageItem, DesignImportInitialPage, DesignImportKind, DesignImportManifest, DesignImportPage, DesignFrameHeightMode, DesignFrameSizeMode, DesignScenarioCoverage, DesignScenarioSource, DesignScreenCase, DesignScreenAssertion, DesignScreenAssertionReport, DesignScreenAssertionVisibility, DesignScreenAttributeAssertion, DesignScreenCaptureFailure, DesignScreenCaptureFailureCode, DesignScreenCaptureFailureStage, DesignScreenCaptureDefaults, DesignScreenCaptureRequirements, DesignScreenCaptureReport, DesignScreenCaptureSpec, DesignScreenCollectionResult, DesignScreenInteraction, DesignScreenInteractionAction, DesignScreenInteractionReport, DesignScreenPreset, DesignScreenPresetContext, DesignScreenPresetExecutionResult, DesignScreenPresetExecutor, DesignScreenPresetRequest, DesignScreenViewport, DesignScreenViewportExpansionOptions, DesignScreenViewportPagePatch, DesignSerializable, StoryboardEnvironment, StoryboardMediaDevice, StoryboardMediaFailure, StoryboardNetwork, StoryboardPermissionState, StoryboardRequestCondition, StoryboardRequestOutcome, } from './editor/designImport';
85
+ export type { DomImportDiagnostic, DomImportMetrics, DomImportOptions, DomImportResult, } from './editor/domImport';
86
+ export type { SharedSourceEditScope, SharedSourceFrameSummary, SharedSourceImpact, } from './editor/sharedSource';
87
+ export type { NodeJSON } from './editor/store';
88
+ import { getObserverTree, isObservableProp } from 'mobx';
89
+ export declare const __debug: {
90
+ editor: import("./editor/store").EditorStore;
91
+ getObserverTree: typeof getObserverTree;
92
+ isObservableProp: typeof isObservableProp;
93
+ /** Preview-surface introspection for headless diagnosis of frame surfaces. */
94
+ preview(frameId: string): Promise<{
95
+ key: string;
96
+ hasOutcome: boolean;
97
+ screenshot: {
98
+ width: number;
99
+ height: number;
100
+ } | null;
101
+ hasShadowArtifact: boolean;
102
+ hasSnapshot: boolean;
103
+ tier: import("./editor/frameLod").FrameLifecycleTier;
104
+ magnified: boolean;
105
+ promotion: {
106
+ mounted: boolean;
107
+ stamped: boolean | null;
108
+ };
109
+ lodState: {
110
+ tiers: [string, import("./editor/frameLod").FrameLifecycleTier][];
111
+ magnified: [string, boolean][];
112
+ lastRecompute: {
113
+ displayDensity?: number;
114
+ overview?: boolean;
115
+ frames?: {
116
+ id: string;
117
+ screenshotDensity: number | null | undefined;
118
+ tier: string;
119
+ }[];
120
+ };
121
+ };
122
+ readFramesNow: (import("./editor/frameLod").FrameLodFrame & {
123
+ memoKey?: string;
124
+ }) | undefined;
125
+ } | null>;
126
+ /** Flow-session delivery states for headless diagnosis of the captureless supply. */
127
+ flowSessions(): Promise<{
128
+ declaredPaths: number;
129
+ scheduler: {
130
+ calls: number;
131
+ lastCanvas: string;
132
+ lastFlows: number;
133
+ lastCandidates: number;
134
+ lastQueued: number;
135
+ };
136
+ states: Record<string, import("./editor/flowSessions").FlowScreenState>;
137
+ viewport: {
138
+ commit: {
139
+ requested: number;
140
+ resolvedNull: number;
141
+ controllerMissing: number;
142
+ markerGone: number;
143
+ editsWon: number;
144
+ captureNull: number;
145
+ committed: number;
146
+ };
147
+ states: Record<string, unknown>;
148
+ };
149
+ interactive: {
150
+ requests: {
151
+ requested: number;
152
+ noPath: number;
153
+ resolvedNull: number;
154
+ queued: number;
155
+ };
156
+ states: Record<string, unknown>;
157
+ };
158
+ warming: {
159
+ requested: number;
160
+ noPath: number;
161
+ resolvedNull: number;
162
+ alreadyWarm: number;
163
+ queued: number;
164
+ };
165
+ warm: {
166
+ bootsByRunner: {
167
+ [x: string]: number;
168
+ };
169
+ parked: number;
170
+ boots: number;
171
+ reuses: number;
172
+ parks: number;
173
+ evictions: number;
174
+ };
175
+ }>;
176
+ };
177
+ /**
178
+ * Called from the actual button handler of the host screen fixture — Switches to the name matching page (common in editor and preview).
179
+ * Example: SettingsPage card onSelect: () => pygmalionNavigate('Settings panel')
180
+ */
181
+ export declare function pygmalionNavigate(pageName: string): void;
182
+ /** Open the prototype preview (▶) in the code — used when the host places its own entry button. */
183
+ export declare function pygmalionOpenPreview(): void;
184
+ /** Discard unapplied canvas and inspection edits created after the latest source load or apply. */
185
+ export declare function pygmalionResetCurrentEdits(): boolean;
186
+ export interface InitialPageDef extends DesignImportInitialPage {
187
+ }
188
+ export declare function PygmalionEditor({ registry, tokens, initialPages, initialCanvas, initialEditMode, componentConnections, viewportPresets, previewEnvironmentControls, designImport, onTokensChange, appOrigin, previewRevision, previewCacheNamespace, previewArtifacts, previewArtifactEndpoint, previewConcurrency, previewOpen, onPreviewOpenChange, flowCanvas, frameSurface, screenFlows, scenarioCoverage, screenDimensions, screenLists, sectionHeaders, sectionHeaderLabels, screenLanes, frameBranchKinds, frameLabelLabels, screenCards, liveScreenBudget, interactiveStates, surfaceClassifications, onApply, onDesignChange, onInspectApply, onInspectPreview, onInspectImpact, storyboard, storyboardDiscovery, storyboardDiscoveryEndpoint, }: {
189
+ registry?: ComponentRegistry;
190
+ tokens?: TokenDef[];
191
+ initialPages?: InitialPageDef[];
192
+ /** Canvas shown on first mount. Useful when an earlier catalog canvas is expensive to render. */
193
+ initialCanvas?: string;
194
+ /**
195
+ * Mode the editor opens in. Defaults to 'edit'. A host whose editor is a
196
+ * review surface declares 'view-only' so a reader is not one keystroke from
197
+ * changing the design; the toggle stays where it is, and the choice applies
198
+ * once rather than re-asserting over whatever the designer picked.
199
+ */
200
+ initialEditMode?: 'edit' | 'view-only';
201
+ /** Explicit external-design to registered-code component mappings. */
202
+ componentConnections?: readonly DesignComponentConnectionDef[];
203
+ /** Named frame widths the application supports — rendered as one-click buttons beside the W/H boxes. */
204
+ viewportPresets?: readonly ViewportPresetDef[];
205
+ /** Host-declared browser conditions shown in the active frame's Preview inspector. */
206
+ previewEnvironmentControls?: readonly PreviewEnvironmentControlDef[];
207
+ /** A public importer that provides unified control over code inventory and importing of entire DOM layers. */
208
+ designImport?: DesignImportController;
209
+ /** Called with cumulative changes when editing a token in the Assets panel — the host is responsible for writing back (file saving). */
210
+ onTokensChange?: (changed: {
211
+ name: string;
212
+ value: string;
213
+ }[]) => void;
214
+ /** The standard origin of the route page iframe ('' if same-origin). */
215
+ appOrigin?: string;
216
+ /** Code version as of preview (dev SHA, etc.). Even if the URL is the same, if the value changes, the screen cache is updated. */
217
+ previewRevision?: string;
218
+ /** Project/branch boundaries for screen caches that are persistent in the browser. Stable string separate from random dev port. */
219
+ previewCacheNamespace?: string;
220
+ /** A canonical screen snapshot created during build. When the namespace matches, it is injected into the cache before the first render. */
221
+ previewArtifacts?: RoutePreviewArtifactBundle;
222
+ /** Same-origin endpoint that resolves an exact namespace and source revision, generating it on demand when configured by the Vite plugin. */
223
+ previewArtifactEndpoint?: string;
224
+ /** Number of actual app previews to run simultaneously. Defaults to an adaptive 12–32 lanes. */
225
+ previewConcurrency?: number;
226
+ /** Controlled by external status such as host route ▶ Whether the preview is opened or not. */
227
+ previewOpen?: boolean;
228
+ /** ▶ Called when the preview is opened or closed — allows the host to synchronize URLs. */
229
+ onPreviewOpenChange?: (open: boolean) => void;
230
+ /** ▶ The name of the “app screen flow” canvas that the preview will always play — Enter this canvas screen even if you press it on another canvas. */
231
+ flowCanvas?: string;
232
+ /**
233
+ * Static surface for route frames: `bitmap` (default) renders captured
234
+ * screenshots and reconstructs frozen DOM on demand; `dom` mounts the
235
+ * frozen DOM from the start — recommended with per-section canvases, where
236
+ * a canvas holds a section's worth of frames and every activation is then
237
+ * promotion-ready without a mount wait.
238
+ */
239
+ frameSurface?: 'bitmap' | 'dom';
240
+ /**
241
+ * Host-declared flow paths — the captureless surface supply. One hidden
242
+ * live instance boots per path and walks its waypoints, publishing a
243
+ * frozen snapshot per screen into the preview store; frames whose screen a
244
+ * flow claims wait for the delivery instead of booting live themselves.
245
+ * Screens no flow claims keep the classic artifact/sweep/boot supply.
246
+ */
247
+ screenFlows?: readonly ScreenFlowPath[];
248
+ /**
249
+ * Host-declared scenario coverage ledger: where each QA scenario is
250
+ * verified (frame, folded screen state, component toggle, viewport
251
+ * preset, behavior, todo). The right panel lists a screen's claims as
252
+ * executable rows and badges component controls with the scenarios they
253
+ * demonstrate. Validate with validateScenarioCoverage in the host gate.
254
+ */
255
+ scenarioCoverage?: readonly ScenarioCoverageClaim[];
256
+ /**
257
+ * Host-declared screen dimensions: curated right-panel controls that swap
258
+ * a captured piece's state (a status bar, a row badge) by adopting the
259
+ * matched node into a registry adapter. Validate with
260
+ * validateScreenDimensions against the component-branch scan.
261
+ */
262
+ screenDimensions?: readonly ScreenDimensionDef[];
263
+ /**
264
+ * Host-declared screen lists: right-panel row-count controls for a
265
+ * repeating list. Growing clones the list's last row; the per-row
266
+ * dimension controls are what make the copies differ. Validate with
267
+ * validateScreenLists.
268
+ */
269
+ screenLists?: readonly ScreenListDef[];
270
+ /**
271
+ * Host-declared section headers: the band above a section box that says what
272
+ * the group covers. The core counts the frames, folded variants, scenarios
273
+ * and viewport itself; the host declares the code, the one-line purpose, the
274
+ * accent and the category. A section with no declaration keeps its plain
275
+ * name. Validate with validateSectionHeaders.
276
+ */
277
+ sectionHeaders?: readonly SectionHeaderDef[];
278
+ /** Words for the facts a section header counts. English by default. */
279
+ sectionHeaderLabels?: SectionHeaderLabels;
280
+ /**
281
+ * Host-declared situation lanes: within a section, one lane is one row of
282
+ * the canvas, read left to right. Packing by area produces a uniform grid
283
+ * that says nothing, and only the host knows which screens belong to the
284
+ * same situation. A section with no lanes keeps the area packing.
285
+ * Validate with validateScreenLanes.
286
+ */
287
+ screenLanes?: readonly ScreenLaneDef[];
288
+ /**
289
+ * Host-declared presentation of each branch kind a frame label can carry:
290
+ * the state kinds the catalog declares, plus the core's own `step` and
291
+ * `variant`. The core decides which kind a frame is and counts its facts;
292
+ * this says what each kind is called and what colour it reads as. Validate
293
+ * with validateFrameBranchKinds.
294
+ */
295
+ frameBranchKinds?: readonly FrameBranchKindDef[];
296
+ /** Words for the facts a frame label counts. English by default. */
297
+ frameLabelLabels?: FrameLabelLabels;
298
+ /**
299
+ * Host-declared card compositions: which badges each repeated card may show,
300
+ * in which slot, and how many at once. Declares the component's anatomy so
301
+ * the panel offers only combinations the product could render. Validate with
302
+ * validateScreenCards.
303
+ */
304
+ screenCards?: readonly ScreenCardDef[];
305
+ /**
306
+ * How many frames may render the running application instead of their
307
+ * capture. Default 0 — every frame is served from its capture, which is
308
+ * what keeps a canvas deterministic and quiet. Raise it to keep the
309
+ * frames a designer is working with interactive; the least recently
310
+ * activated holder gives its slot back.
311
+ */
312
+ liveScreenBudget?: number;
313
+ /**
314
+ * Host-declared interactive states: axes a screen reaches by acting on it
315
+ * (folding the sidebar, hovering a row) rather than by being a separate
316
+ * captured frame. Validate with validateInteractiveStates.
317
+ */
318
+ interactiveStates?: readonly InteractiveStateDef[];
319
+ /**
320
+ * Host verdicts for the surfaces the editor asks about — the routes it can
321
+ * render, the operable elements of an imported tree, the requests a frame
322
+ * makes while booting. Each answer either names the declaration that covers
323
+ * the surface or excludes it with a reason; anything unanswered shows up on
324
+ * the frame as an unclassified surface instead of quietly not existing.
325
+ */
326
+ surfaceClassifications?: readonly SurfaceClassification[];
327
+ /** Reflect button — Returns { branch } after the host saves the file and commits the branch (push is done directly by the user). */
328
+ onApply?: (payload: ApplyPayload) => Promise<{
329
+ branch: string;
330
+ } | void>;
331
+ /** A common write-back pathway that automatically saves the final state of all canvas elements in your code. */
332
+ onDesignChange?: (payload: DesignChangePayload) => Promise<DesignChangeResult | void>;
333
+ /** Apply inspection edits through the host write-back endpoint. */
334
+ onInspectApply?: (payload: InspectApplyPayload) => Promise<InspectApplyResult | void>;
335
+ /** Generate a source diff before apply. When connected, apply is blocked until review. */
336
+ onInspectPreview?: (payload: InspectApplyPayload) => Promise<InspectPreviewResult>;
337
+ /** Calculate the impact screen by querying the inverse dependency closure of the changed file. */
338
+ onInspectImpact?: (componentFiles: string[]) => Promise<InspectImpactResult>;
339
+ /** Authored screen paths and starts merged with source-discovered navigation. */
340
+ storyboard?: StoryboardDefinition;
341
+ /** Detect portable browser branches from source before route frames boot. Default true. */
342
+ storyboardDiscovery?: boolean;
343
+ /** Vite endpoint that returns the generated generic storyboard environment manifest. */
344
+ storyboardDiscoveryEndpoint?: string;
345
+ }): import("react").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const ApplyPanel: import("react").FunctionComponent<object>;
@@ -0,0 +1,3 @@
1
+ export declare function AssetsPanel({ onFrameFocus, }: {
2
+ onFrameFocus?: (id: string) => void;
3
+ }): import("react").JSX.Element;
@@ -0,0 +1,5 @@
1
+ export declare function CanvasStatusProbe({ previewIdentityReady, previewCacheHydrated, previewCacheKeys, }: {
2
+ previewIdentityReady: boolean;
3
+ previewCacheHydrated: boolean;
4
+ previewCacheKeys: readonly string[];
5
+ }): import("react").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const CodePanel: import("react").FunctionComponent<object>;
@@ -0,0 +1,108 @@
1
+ import { type ReactNode } from 'react';
2
+ import { sourceWritableRegistryProps } from '../editor/componentInstances';
3
+ import type { RegistryEntry, RegistryPropValue } from '../editor/registry';
4
+ import { type NodeModel, type PageModel } from '../editor/store';
5
+ /** Property-panel section frame shared across the shell panels. */
6
+ export declare function Sec({ title, action, children, }: {
7
+ title: string;
8
+ action?: ReactNode;
9
+ children: ReactNode;
10
+ }): import("react").JSX.Element;
11
+ export declare function componentPropValue(node: Pick<NodeModel, 'componentProps'>, key: string, options: readonly RegistryPropValue[], defaultValue: RegistryPropValue | undefined): RegistryPropValue | undefined;
12
+ export declare function componentPropLabel(value: RegistryPropValue): string;
13
+ /**
14
+ * Typed prop controls for one component instance. `sourceWritableProps`
15
+ * enables the per-prop "preview only" badge for imported instances whose
16
+ * prop is expression-bound; pass null for catalog nodes, which are
17
+ * themselves the source.
18
+ */
19
+ export declare function ComponentPropControls({ node, entry, sourceWritableProps, propBadges, onPatch, }: {
20
+ node: Pick<NodeModel, 'componentProps'>;
21
+ entry: RegistryEntry;
22
+ sourceWritableProps?: readonly string[] | null;
23
+ /** Scenario ids each prop demonstrates — rendered as chips beside the control. */
24
+ propBadges?: Readonly<Record<string, readonly string[]>>;
25
+ onPatch: (prop: string, value: RegistryPropValue) => void;
26
+ }): import("react").JSX.Element;
27
+ /**
28
+ * State variants of the active screen — a modal that may cover it, a
29
+ * permission badge, an alternate panel layout. They live as sibling frames
30
+ * (each is its own verified capture), but the designer flips between them
31
+ * here instead of hunting the canvas; selection activates the sibling and
32
+ * swaps it into the group's canvas slot.
33
+ *
34
+ * A pair of base + one declared branch reads as an On/Off toggle; larger
35
+ * groups list their states as a radio. `stateKind` tags the control with the
36
+ * branch's category when the host declares one.
37
+ */
38
+ export declare const FrameScreenStates: import("react").FunctionComponent<{
39
+ page: PageModel;
40
+ }>;
41
+ /**
42
+ * QA scenarios the active screen verifies, as executable rows: clicking a
43
+ * claim reproduces the exact reviewed state (frame activation, state reveal,
44
+ * prop flip, or preset resize). The ledger is host-declared and core-
45
+ * validated, so a renamed component or retired preset fails the gate instead
46
+ * of silently orphaning the scenario.
47
+ */
48
+ export declare const FrameScenarioCoverage: import("react").FunctionComponent<{
49
+ page: PageModel;
50
+ }>;
51
+ /**
52
+ * Curated per-screen dimension controls — "swap this piece's state". The
53
+ * host declares the pieces (status bar states, row badge kinds); the
54
+ * control adopts the captured stand-in into the adapter and re-props it.
55
+ * Undo restores the captured node. This axis is for the single piece a
56
+ * screen shows once; a repeated piece belongs to the card composition axis,
57
+ * which knows about slots and can hold several badges at once. Below the
58
+ * controls, branches discovered in the declared source are listed so
59
+ * undeclared cases stay visible instead of silently unknown.
60
+ */
61
+ export declare const FrameScreenDimensions: import("react").FunctionComponent<{
62
+ page: PageModel;
63
+ }>;
64
+ /**
65
+ * Screen lists — how many rows a repeating list shows. Growing clones the
66
+ * last row, so the copies start identical and the per-row dimension
67
+ * controls above are what make them differ. It edits the captured tree, so
68
+ * it lands instantly and undoes in one step.
69
+ */
70
+ export declare const FrameScreenLists: import("react").FunctionComponent<{
71
+ page: PageModel;
72
+ }>;
73
+ /**
74
+ * Card badges — what each repeated card shows, slot by slot.
75
+ *
76
+ * One row per slot per card, because that is the shape of the component: the
77
+ * identity row and the status slot hold different vocabularies, and a slot
78
+ * that can hold several badges gets several independent toggles rather than
79
+ * a select that can only ever show one.
80
+ */
81
+ export declare const FrameCardBadges: import("react").FunctionComponent<{
82
+ page: PageModel;
83
+ }>;
84
+ /**
85
+ * Interactive states — axes reachable by acting on the screen (folding the
86
+ * sidebar, hovering a row). They are not sibling frames: the same frame is
87
+ * re-supplied with the option's steps appended to its recipe.
88
+ */
89
+ export declare const FrameInteractiveStates: import("react").FunctionComponent<{
90
+ page: PageModel;
91
+ }>;
92
+ /**
93
+ * Surfaces this frame owes an answer to.
94
+ *
95
+ * The axes above are what the host remembered to declare, and for a long time
96
+ * that was the whole story: an element nobody thought about produced no axis and
97
+ * no complaint, because the ledger only ever compared declarations with each
98
+ * other. This section is the other half — the editor lists the operable elements
99
+ * of the tree it imported and the requests the frame made while booting, and the
100
+ * host either points each one at a declaration or excludes it with a reason.
101
+ *
102
+ * It renders nothing once every surface has a verdict, so a finished frame stays
103
+ * quiet and an unfinished one says exactly what is missing.
104
+ */
105
+ export declare const FrameSurfaceDemands: import("react").FunctionComponent<{
106
+ page: PageModel;
107
+ }>;
108
+ export { sourceWritableRegistryProps };
@@ -0,0 +1 @@
1
+ export declare const ContextMenu: import("react").FunctionComponent<object>;
@@ -0,0 +1,7 @@
1
+ import type { StoryboardConnectionMode } from '../canvas/StoryboardConnections';
2
+ export declare const LayerTree: import("react").FunctionComponent<{
3
+ onFrameFocus?: (id: string) => void;
4
+ storyboardConnectionMode?: StoryboardConnectionMode;
5
+ onStoryboardConnectionModeChange?: (mode: StoryboardConnectionMode) => void;
6
+ storyboardReady?: boolean;
7
+ }>;
@@ -0,0 +1 @@
1
+ export declare const PropsPanel: import("react").FunctionComponent<object>;
@@ -0,0 +1,23 @@
1
+ import type { StoryboardGraphViewModel } from '../editor/storyboardGraphView';
2
+ import type { StoryboardCompositionModel } from '../editor/storyboardComposition';
3
+ import type { StoryboardConnectionMode } from '../canvas/StoryboardConnections';
4
+ export interface StoryboardGraphPanelProps {
5
+ model: StoryboardGraphViewModel;
6
+ onSelectFrame: (frameId: string) => void;
7
+ activeFrameId?: string | null;
8
+ connectionMode: StoryboardConnectionMode;
9
+ onConnectionModeChange: (mode: StoryboardConnectionMode) => void;
10
+ /**
11
+ * Structure for a canvas with no routes, where a journey graph has nothing
12
+ * to say. Present only on catalog canvases.
13
+ */
14
+ composition?: StoryboardCompositionModel | null;
15
+ /** Frame names for composition rows, which carry ids rather than frames. */
16
+ frameNameById?: ReadonlyMap<string, string>;
17
+ }
18
+ /**
19
+ * Generic navigation and coverage surface for a project-supplied storyboard
20
+ * graph. It never interprets domain labels and delegates camera focus to the
21
+ * editor's existing frame-selection action.
22
+ */
23
+ export declare function StoryboardGraphPanel({ model, onSelectFrame, activeFrameId, connectionMode, onConnectionModeChange, composition, frameNameById, }: StoryboardGraphPanelProps): import("react").JSX.Element | null;
@@ -0,0 +1,4 @@
1
+ /** Zoom percentage cluster in the expanded right panel header. */
2
+ export declare const ZoomIndicator: import("react").FunctionComponent<object>;
3
+ /** Zoom buttons on the compact right-panel rail; their tooltips read the zoom. */
4
+ export declare const CompactZoomControls: import("react").FunctionComponent<object>;
@@ -0,0 +1,9 @@
1
+ import type { InspectQaFrameResult, InspectQaResult } from '../editor/visualQa';
2
+ export interface InspectQaSummary {
3
+ capturedFrames: number;
4
+ failedFrames: number;
5
+ changedFrames: number;
6
+ changedPixels: number;
7
+ }
8
+ export declare function summarizeInspectQa(qa: InspectQaResult): InspectQaSummary;
9
+ export declare function inspectQaFrameChangeLabel(frame: InspectQaFrameResult): string;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Package-level integration test surface.
3
+ * Host repositories can verify frozen preview behavior without importing this
4
+ * repository's source tree or depending on private internal file paths.
5
+ */
6
+ export { FrozenRoutePreviewView } from './canvas/FrozenRoutePreview';
7
+ export { NodeModel, editor, serializeNode } from './editor/store';
8
+ export { setComponentRegistry } from './editor/registry';
@@ -0,0 +1,38 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { PygmalionSourceRef } from '../editor/projectRuntime';
3
+ export interface SourceRefControlProps {
4
+ /** Revision the mirror follows now. */
5
+ value: string | null;
6
+ /** Commit currently rendered by the mirror. Used to expose a newer ref tip. */
7
+ currentCommit?: string | null;
8
+ /** Revisions the mirror can be repointed at. */
9
+ refs: readonly PygmalionSourceRef[];
10
+ onChange(ref: string): void;
11
+ /** Blocks selection while the mirror rebuilds. */
12
+ busy?: boolean;
13
+ /** Revision used when none is pinned, offered as the first entry. */
14
+ defaultRef?: string | null;
15
+ /** Ref that renders uncommitted work. Omitted from the list when absent. */
16
+ worktreeRef?: string | null;
17
+ /** Accessible name for the control. */
18
+ label?: string;
19
+ /** Menu label for reloading the selected revision after its tip moves. */
20
+ refreshLabel?: string;
21
+ /**
22
+ * Trigger content. A host renders its own status chip here, so the control
23
+ * blends into an existing toolbar instead of adding a second field.
24
+ * Defaults to the selected revision.
25
+ */
26
+ children?: ReactNode;
27
+ className?: string;
28
+ }
29
+ /**
30
+ * Selects the revision the dev mirror follows. Switching rebuilds the mirror,
31
+ * screen inventory, and preview on that revision, so the editor reloads.
32
+ *
33
+ * The menu is a native select layered over the trigger: the host owns how the
34
+ * trigger looks, while keyboard access, mobile behavior, and menu placement stay
35
+ * with the platform. Pygmalion owns this control because the mirror lifecycle
36
+ * belongs to the tool, not to a consuming application.
37
+ */
38
+ export declare function SourceRefControl({ value, currentCommit, refs, onChange, busy, defaultRef, worktreeRef, label, refreshLabel, children, className, }: SourceRefControlProps): import("react").JSX.Element;