{
  "schemaVersion": 1,
  "generatedFrom": [
    "admin/src/main.js",
    "admin/src/pages/translations.js",
    "includes/Admin/AssetLoader.php",
    "includes/Admin/MenuController.php",
    "includes/Admin/OnboardingWizard.php",
    "includes/SiteServices/UpdateChecker.php",
    "includes/Translation/BulkActions.php",
    "includes/Translation/MetaBox.php"
  ],
  "sourceFingerprint": "c368d22aa59479610f35477871649ecf58cd1265f57ea2c9dc09e06519e25ad6",
  "surfaces": [
    {
      "id": "spa.dashboard",
      "route": "#/dashboard",
      "registration": "admin/src/main.js:dashboard",
      "renderers": [
        "admin/src/pages/dashboard.js",
        "admin/src/sections/analytics-dashboard.js"
      ],
      "states": [
        "default",
        "loading",
        "empty",
        "recoverable-error",
        "analytics-loaded"
      ],
      "behaviorChecks": [
        "route lifecycle",
        "request cancellation",
        "keyed reconciliation",
        "analytics tab state"
      ],
      "sharedComponents": [
        "Button",
        "Card",
        "DataRegion",
        "emptyStateRow",
        "PageHeader",
        "PageShell",
        "SkeletonChart",
        "SkeletonList",
        "SkeletonStatRow",
        "StatRegionPreset",
        "TableRegionPreset"
      ],
      "screenshotStates": [
        "spa.dashboard.default",
        "spa.dashboard.loading",
        "spa.dashboard.empty",
        "spa.dashboard.recoverable-error",
        "spa.dashboard.analytics-loaded"
      ]
    },
    {
      "id": "spa.languages",
      "route": "#/languages",
      "registration": "admin/src/main.js:languages",
      "renderers": [
        "admin/src/pages/languages.js"
      ],
      "states": [
        "default",
        "loading",
        "empty",
        "recoverable-error",
        "modal",
        "disabled",
        "selected-row"
      ],
      "behaviorChecks": [
        "selection",
        "sorting",
        "add/edit modal",
        "default-language protection"
      ],
      "sharedComponents": [
        "Badge",
        "Button",
        "DataRegion",
        "emptyStateRow",
        "FormField",
        "Modal",
        "PageHeader",
        "Select",
        "TableRegionPreset",
        "Toast",
        "Toggle",
        "ToggleSwitch"
      ],
      "screenshotStates": [
        "spa.languages.default",
        "spa.languages.loading",
        "spa.languages.empty",
        "spa.languages.recoverable-error",
        "spa.languages.modal",
        "spa.languages.disabled",
        "spa.languages.selected-row"
      ]
    },
    {
      "id": "spa.fields",
      "route": "#/fields",
      "registration": "admin/src/main.js:fields",
      "renderers": [
        "admin/src/pages/fields-translate.js"
      ],
      "states": [
        "default",
        "loading",
        "empty",
        "recoverable-error",
        "selected-group",
        "nested-disclosure",
        "mutation-error",
        "pagination"
      ],
      "behaviorChecks": [
        "group search persistence",
        "group selection",
        "nested lazy mount",
        "focus restoration",
        "mutation reload",
        "independent zebra parity"
      ],
      "sharedComponents": [
        "Badge",
        "Button",
        "DataRegion",
        "Disclosure",
        "EmptyState",
        "FormControlGroup",
        "Notice",
        "Pagination",
        "SearchControl",
        "SelectControl",
        "SelectionCard",
        "Table",
        "Toast"
      ],
      "screenshotStates": [
        "spa.fields.default",
        "spa.fields.loading",
        "spa.fields.empty",
        "spa.fields.recoverable-error",
        "spa.fields.selected-group",
        "spa.fields.nested-disclosure",
        "spa.fields.mutation-error",
        "spa.fields.pagination"
      ]
    },
    {
      "id": "spa.translations.themes",
      "route": "#/translations/themes",
      "registration": "admin/src/main.js:translations + translations.js:themes",
      "renderers": [
        "admin/src/pages/translations.js",
        "admin/src/pages/string-translate.js"
      ],
      "states": [
        "default",
        "loading",
        "empty",
        "recoverable-error",
        "filter-results",
        "selected-row",
        "generation-modal",
        "disabled-billing",
        "progress"
      ],
      "behaviorChecks": [
        "filtering",
        "selection",
        "pagination",
        "explicit language selection",
        "generation confirmation",
        "progress and completion"
      ],
      "sharedComponents": [
        "Badge",
        "BulkActionBar",
        "Button",
        "Checkbox",
        "DataRegion",
        "FilterBar",
        "FilterGroup",
        "getTranslationProgressBar",
        "getTranslationProgressLabel",
        "IndeterminateTranslationProgress",
        "Modal",
        "PageHeader",
        "Pagination",
        "ProgressBar",
        "SearchControl",
        "SelectControl",
        "TabButton",
        "TableRegionPreset",
        "Tabs",
        "TextareaControl",
        "Toast",
        "TranslationProgressCompletion",
        "TranslationProgressView"
      ],
      "screenshotStates": [
        "spa.translations.themes.default",
        "spa.translations.themes.loading",
        "spa.translations.themes.empty",
        "spa.translations.themes.recoverable-error",
        "spa.translations.themes.filter-results",
        "spa.translations.themes.selected-row",
        "spa.translations.themes.generation-modal",
        "spa.translations.themes.disabled-billing",
        "spa.translations.themes.progress"
      ]
    },
    {
      "id": "spa.translations.pages",
      "route": "#/translations/pages",
      "registration": "admin/src/main.js:translations + translations.js:pages",
      "renderers": [
        "admin/src/pages/translations.js",
        "admin/src/pages/content-translate.js"
      ],
      "states": [
        "default",
        "loading",
        "empty",
        "recoverable-error",
        "filter-results",
        "selected-row",
        "generation-modal",
        "progress"
      ],
      "behaviorChecks": [
        "filtering",
        "selection",
        "pagination",
        "generation confirmation",
        "request cancellation"
      ],
      "sharedComponents": [
        "Badge",
        "BulkActionBar",
        "Button",
        "Checkbox",
        "DataRegion",
        "emptyStateRow",
        "FilterBar",
        "FilterGroup",
        "getTranslationProgressBar",
        "getTranslationProgressLabel",
        "IndeterminateTranslationProgress",
        "InputControl",
        "Modal",
        "PageHeader",
        "Pagination",
        "ProgressBar",
        "SearchControl",
        "SelectControl",
        "TabButton",
        "TableRegionPreset",
        "Tabs",
        "TextareaControl",
        "Toast",
        "TranslationProgressCompletion",
        "TranslationProgressView"
      ],
      "screenshotStates": [
        "spa.translations.pages.default",
        "spa.translations.pages.loading",
        "spa.translations.pages.empty",
        "spa.translations.pages.recoverable-error",
        "spa.translations.pages.filter-results",
        "spa.translations.pages.selected-row",
        "spa.translations.pages.generation-modal",
        "spa.translations.pages.progress"
      ]
    },
    {
      "id": "spa.translations.posts",
      "route": "#/translations/posts",
      "registration": "admin/src/main.js:translations + translations.js:posts",
      "renderers": [
        "admin/src/pages/translations.js",
        "admin/src/pages/content-translate.js"
      ],
      "states": [
        "default",
        "loading",
        "empty",
        "recoverable-error",
        "filter-results",
        "selected-row",
        "generation-modal",
        "progress"
      ],
      "behaviorChecks": [
        "filtering",
        "selection",
        "pagination",
        "generation confirmation",
        "request cancellation"
      ],
      "sharedComponents": [
        "Badge",
        "BulkActionBar",
        "Button",
        "Checkbox",
        "DataRegion",
        "emptyStateRow",
        "FilterBar",
        "FilterGroup",
        "getTranslationProgressBar",
        "getTranslationProgressLabel",
        "IndeterminateTranslationProgress",
        "InputControl",
        "Modal",
        "PageHeader",
        "Pagination",
        "ProgressBar",
        "SearchControl",
        "SelectControl",
        "TabButton",
        "TableRegionPreset",
        "Tabs",
        "TextareaControl",
        "Toast",
        "TranslationProgressCompletion",
        "TranslationProgressView"
      ],
      "screenshotStates": [
        "spa.translations.posts.default",
        "spa.translations.posts.loading",
        "spa.translations.posts.empty",
        "spa.translations.posts.recoverable-error",
        "spa.translations.posts.filter-results",
        "spa.translations.posts.selected-row",
        "spa.translations.posts.generation-modal",
        "spa.translations.posts.progress"
      ]
    },
    {
      "id": "spa.translations.custom-types",
      "route": "#/translations/custom-types",
      "registration": "admin/src/main.js:translations + translations.js:custom-types",
      "renderers": [
        "admin/src/pages/translations.js",
        "admin/src/pages/content-translate.js"
      ],
      "states": [
        "default",
        "loading",
        "empty",
        "recoverable-error",
        "type-selected",
        "selected-row",
        "generation-modal",
        "progress"
      ],
      "behaviorChecks": [
        "custom type routing",
        "invalid type recovery",
        "selection",
        "pagination",
        "request cancellation"
      ],
      "sharedComponents": [
        "Badge",
        "BulkActionBar",
        "Button",
        "Checkbox",
        "DataRegion",
        "emptyStateRow",
        "FilterBar",
        "FilterGroup",
        "getTranslationProgressBar",
        "getTranslationProgressLabel",
        "IndeterminateTranslationProgress",
        "InputControl",
        "Modal",
        "PageHeader",
        "Pagination",
        "ProgressBar",
        "SearchControl",
        "SelectControl",
        "TabButton",
        "TableRegionPreset",
        "Tabs",
        "TextareaControl",
        "Toast",
        "TranslationProgressCompletion",
        "TranslationProgressView"
      ],
      "screenshotStates": [
        "spa.translations.custom-types.default",
        "spa.translations.custom-types.loading",
        "spa.translations.custom-types.empty",
        "spa.translations.custom-types.recoverable-error",
        "spa.translations.custom-types.type-selected",
        "spa.translations.custom-types.selected-row",
        "spa.translations.custom-types.generation-modal",
        "spa.translations.custom-types.progress"
      ]
    },
    {
      "id": "spa.translations.fields",
      "route": "#/translations/fields",
      "registration": "admin/src/main.js:translations + translations.js:fields",
      "renderers": [
        "admin/src/pages/translations.js",
        "admin/src/pages/fields-translate.js"
      ],
      "states": [
        "default",
        "loading",
        "empty",
        "recoverable-error",
        "selected-group",
        "nested-disclosure",
        "pagination"
      ],
      "behaviorChecks": [
        "tab lifecycle",
        "group selection",
        "search/disclosure restoration",
        "zebra parity"
      ],
      "sharedComponents": [
        "Badge",
        "Button",
        "DataRegion",
        "Disclosure",
        "EmptyState",
        "FormControlGroup",
        "Notice",
        "PageHeader",
        "Pagination",
        "SearchControl",
        "SelectControl",
        "SelectionCard",
        "Table",
        "Tabs",
        "Toast"
      ],
      "screenshotStates": [
        "spa.translations.fields.default",
        "spa.translations.fields.loading",
        "spa.translations.fields.empty",
        "spa.translations.fields.recoverable-error",
        "spa.translations.fields.selected-group",
        "spa.translations.fields.nested-disclosure",
        "spa.translations.fields.pagination"
      ]
    },
    {
      "id": "spa.translations.plugins",
      "route": "#/translations/plugins",
      "registration": "admin/src/main.js:translations + translations.js:plugins",
      "renderers": [
        "admin/src/pages/translations.js",
        "admin/src/pages/string-translate.js"
      ],
      "states": [
        "default",
        "loading",
        "empty",
        "recoverable-error",
        "filter-results",
        "selected-row",
        "generation-modal",
        "disabled-billing",
        "progress"
      ],
      "behaviorChecks": [
        "filtering",
        "selection",
        "pagination",
        "explicit language selection",
        "generation confirmation",
        "progress and completion"
      ],
      "sharedComponents": [
        "Badge",
        "BulkActionBar",
        "Button",
        "Checkbox",
        "DataRegion",
        "FilterBar",
        "FilterGroup",
        "getTranslationProgressBar",
        "getTranslationProgressLabel",
        "IndeterminateTranslationProgress",
        "Modal",
        "PageHeader",
        "Pagination",
        "ProgressBar",
        "SearchControl",
        "SelectControl",
        "TabButton",
        "TableRegionPreset",
        "Tabs",
        "TextareaControl",
        "Toast",
        "TranslationProgressCompletion",
        "TranslationProgressView"
      ],
      "screenshotStates": [
        "spa.translations.plugins.default",
        "spa.translations.plugins.loading",
        "spa.translations.plugins.empty",
        "spa.translations.plugins.recoverable-error",
        "spa.translations.plugins.filter-results",
        "spa.translations.plugins.selected-row",
        "spa.translations.plugins.generation-modal",
        "spa.translations.plugins.disabled-billing",
        "spa.translations.plugins.progress"
      ]
    },
    {
      "id": "spa.history",
      "route": "#/history",
      "registration": "admin/src/main.js:history",
      "renderers": [
        "admin/src/pages/translate-history.js"
      ],
      "states": [
        "default",
        "loading",
        "empty",
        "recoverable-error",
        "filter-results",
        "modal",
        "progress"
      ],
      "behaviorChecks": [
        "filtering",
        "pagination",
        "job detail modal",
        "cancel/retry actions"
      ],
      "sharedComponents": [
        "Badge",
        "Button",
        "DataRegion",
        "emptyStateRow",
        "Modal",
        "PageHeader",
        "Pagination",
        "SearchControl",
        "SelectControl",
        "TableRegionPreset",
        "Toast"
      ],
      "screenshotStates": [
        "spa.history.default",
        "spa.history.loading",
        "spa.history.empty",
        "spa.history.recoverable-error",
        "spa.history.filter-results",
        "spa.history.modal",
        "spa.history.progress"
      ]
    },
    {
      "id": "spa.settings",
      "route": "#/settings",
      "registration": "admin/src/main.js:settings",
      "renderers": [
        "admin/src/pages/settings.js"
      ],
      "states": [
        "default",
        "loading",
        "empty",
        "recoverable-error",
        "dirty",
        "saved",
        "exceptions-tab",
        "reset-confirmation"
      ],
      "behaviorChecks": [
        "tab state",
        "dirty fields",
        "save",
        "reset confirmation",
        "exceptions management"
      ],
      "sharedComponents": [
        "Button",
        "DataRegion",
        "ExceptionsTab",
        "FormField",
        "Modal",
        "PageHeader",
        "REGION_DEFER_ATTR",
        "Select",
        "SkeletonForm",
        "TabPanel",
        "Tabs",
        "Toast",
        "Toggle"
      ],
      "screenshotStates": [
        "spa.settings.default",
        "spa.settings.loading",
        "spa.settings.empty",
        "spa.settings.recoverable-error",
        "spa.settings.dirty",
        "spa.settings.saved",
        "spa.settings.exceptions-tab",
        "spa.settings.reset-confirmation"
      ]
    },
    {
      "id": "spa.account",
      "route": "#/account",
      "registration": "admin/src/main.js:account",
      "renderers": [
        "admin/src/pages/account.js"
      ],
      "states": [
        "default",
        "loading",
        "empty",
        "recoverable-error",
        "disconnected",
        "connected"
      ],
      "behaviorChecks": [
        "billing portal",
        "disconnect confirmation"
      ],
      "sharedComponents": [
        "Button",
        "EmptyState",
        "ErrorState",
        "PageHeader",
        "SkeletonTable",
        "Table"
      ],
      "screenshotStates": [
        "spa.account.default",
        "spa.account.loading",
        "spa.account.empty",
        "spa.account.recoverable-error",
        "spa.account.disconnected",
        "spa.account.connected"
      ]
    },
    {
      "id": "spa.migration",
      "route": "#/migration",
      "registration": "admin/src/main.js:migration",
      "renderers": [
        "admin/src/pages/migration.js"
      ],
      "states": [
        "default",
        "loading",
        "empty",
        "recoverable-error",
        "preflight",
        "progress",
        "complete",
        "failed"
      ],
      "behaviorChecks": [
        "preflight",
        "progress",
        "rollback actions",
        "terminal errors"
      ],
      "sharedComponents": [
        "Button",
        "Card",
        "DataRegion",
        "PageHeader",
        "ProgressBar",
        "SkeletonList",
        "Spinner"
      ],
      "screenshotStates": [
        "spa.migration.default",
        "spa.migration.loading",
        "spa.migration.empty",
        "spa.migration.recoverable-error",
        "spa.migration.preflight",
        "spa.migration.progress",
        "spa.migration.complete",
        "spa.migration.failed"
      ]
    },
    {
      "id": "spa.team",
      "route": "#/team",
      "registration": "admin/src/main.js:team",
      "renderers": [
        "admin/src/pages/TeamDashboard.js"
      ],
      "states": [
        "default",
        "loading",
        "empty",
        "recoverable-error",
        "member-selected",
        "modal"
      ],
      "behaviorChecks": [
        "member selection",
        "role actions",
        "modal focus"
      ],
      "sharedComponents": [
        "DataRegion",
        "Skeleton",
        "SurfaceCard"
      ],
      "screenshotStates": [
        "spa.team.default",
        "spa.team.loading",
        "spa.team.empty",
        "spa.team.recoverable-error",
        "spa.team.member-selected",
        "spa.team.modal"
      ]
    },
    {
      "id": "spa.workflow",
      "route": "#/workflow",
      "registration": "admin/src/main.js:workflow",
      "renderers": [
        "admin/src/pages/WorkflowDashboard.js"
      ],
      "states": [
        "default",
        "loading",
        "empty",
        "recoverable-error",
        "timeline",
        "progress"
      ],
      "behaviorChecks": [
        "timeline presentation",
        "progress state",
        "request cancellation"
      ],
      "sharedComponents": [
        "DataRegion",
        "Skeleton",
        "SurfaceCard"
      ],
      "screenshotStates": [
        "spa.workflow.default",
        "spa.workflow.loading",
        "spa.workflow.empty",
        "spa.workflow.recoverable-error",
        "spa.workflow.timeline",
        "spa.workflow.progress"
      ]
    },
    {
      "id": "spa.assignments",
      "route": "#/assignments",
      "registration": "admin/src/main.js:assignments",
      "renderers": [
        "admin/src/pages/my-assignments.js"
      ],
      "states": [
        "default",
        "loading",
        "empty",
        "recoverable-error",
        "tab-selected",
        "assignment-selected",
        "deadline"
      ],
      "behaviorChecks": [
        "tab state",
        "assignment actions",
        "deadline presentation"
      ],
      "sharedComponents": [
        "AssignmentCard",
        "DataRegion",
        "InputControl",
        "ListRegionPreset",
        "Modal",
        "Skeleton",
        "Tabs",
        "TextareaControl",
        "Toast",
        "WorkflowTimeline"
      ],
      "screenshotStates": [
        "spa.assignments.default",
        "spa.assignments.loading",
        "spa.assignments.empty",
        "spa.assignments.recoverable-error",
        "spa.assignments.tab-selected",
        "spa.assignments.assignment-selected",
        "spa.assignments.deadline"
      ]
    },
    {
      "id": "spa.onboarding",
      "route": "#/onboarding",
      "registration": "includes/Admin/OnboardingWizard.php + admin/src/main.js:onboarding",
      "renderers": [
        "admin/src/pages/onboarding.js"
      ],
      "states": [
        "default",
        "loading",
        "empty",
        "recoverable-error",
        "step",
        "disabled",
        "complete"
      ],
      "behaviorChecks": [
        "step state",
        "back/continue",
        "validation",
        "completion"
      ],
      "sharedComponents": [
        "Button",
        "ErrorState",
        "PageHeader",
        "SpinnerWithText"
      ],
      "screenshotStates": [
        "spa.onboarding.default",
        "spa.onboarding.loading",
        "spa.onboarding.empty",
        "spa.onboarding.recoverable-error",
        "spa.onboarding.step",
        "spa.onboarding.disabled",
        "spa.onboarding.complete"
      ]
    },
    {
      "id": "editor.translation-metabox",
      "route": "post.php/post-new.php#ipz-translate-metabox",
      "registration": "includes/Translation/MetaBox.php:add_meta_box",
      "renderers": [
        "admin/src/editor/translation-metabox.js"
      ],
      "states": [
        "loading",
        "empty",
        "dirty-disabled",
        "missing",
        "queued",
        "processing",
        "translated",
        "failed"
      ],
      "behaviorChecks": [
        "dirty editor protection",
        "queue",
        "polling",
        "focus restoration",
        "teardown"
      ],
      "sharedComponents": [
        "Badge",
        "Button",
        "Notice"
      ],
      "screenshotStates": [
        "editor.translation-metabox.loading",
        "editor.translation-metabox.empty",
        "editor.translation-metabox.dirty-disabled",
        "editor.translation-metabox.missing",
        "editor.translation-metabox.queued",
        "editor.translation-metabox.processing",
        "editor.translation-metabox.translated",
        "editor.translation-metabox.failed"
      ]
    },
    {
      "id": "wpadmin.bulk-translation",
      "route": "edit.php/edit.php?post_type=page",
      "registration": "includes/Translation/BulkActions.php:bulk_actions + admin_notices",
      "renderers": [
        "includes/Translation/BulkActions.php"
      ],
      "states": [
        "action-available",
        "success",
        "warning",
        "error",
        "permission-skipped"
      ],
      "behaviorChecks": [
        "post/page action registration",
        "target-language routing",
        "permission filtering",
        "result persistence",
        "dismissible shared notice"
      ],
      "sharedComponents": [
        "Notice"
      ],
      "screenshotStates": [
        "wpadmin.bulk-translation.action-available",
        "wpadmin.bulk-translation.success",
        "wpadmin.bulk-translation.warning",
        "wpadmin.bulk-translation.error",
        "wpadmin.bulk-translation.permission-skipped"
      ]
    },
    {
      "id": "wpadmin.update-notice",
      "route": "plugins.php/update-core.php",
      "registration": "includes/SiteServices/UpdateChecker.php:admin_notices",
      "renderers": [
        "includes/SiteServices/UpdateChecker.php"
      ],
      "states": [
        "available",
        "dismissible",
        "details-action"
      ],
      "behaviorChecks": [
        "capability guard",
        "signed update URL",
        "details link",
        "shared notice styling"
      ],
      "sharedComponents": [
        "Button",
        "Notice"
      ],
      "screenshotStates": [
        "wpadmin.update-notice.available",
        "wpadmin.update-notice.dismissible",
        "wpadmin.update-notice.details-action"
      ]
    }
  ]
}
