{
  "_copyright": "Copyright (c) 2026, Salesforce, Inc., All rights reserved. For full license text, see the LICENSE.txt file",
  "$schema": "https://slds.lightningdesignsystem.com/schemas/uif-foundation.v1.json",
  "apiVersion": "1.0.0",
  "name": "ProgressIndicator",
  "description": "A progress indicator communicates to the user the progress of a particular process as a series of steps.",
  "structure": {
    "name": "root",
    "restrict": [
      "div"
    ],
    "description": "Progress indicator container",
    "children": [
      {
        "name": "progress",
        "restrict": [
          "ol",
          "ul"
        ],
        "description": "Progress steps list",
        "attributes": {
          "static": {
            "role": "list"
          }
        },
        "slot": {
          "name": "default"
        },
        "children": [
          {
            "name": "item",
            "restrict": [
              "li"
            ],
            "description": "progress step item",
            "repeats": true,
            "children": [
              {
                "name": "marker",
                "restrict": [
                  "button",
                  "div",
                  "span"
                ],
                "description": "step marker indicator",
                "children": [
                  {
                    "name": "markerIcon",
                    "description": "Optional icon glyph rendered inside the marker for completed or errored steps",
                    "component": "PrimitiveIcon"
                  },
                  {
                    "name": "markerAssistiveText",
                    "restrict": [
                      "span"
                    ],
                    "description": "Screen-reader-only label describing the step's state"
                  }
                ]
              },
              {
                "name": "itemContent",
                "restrict": [
                  "div"
                ],
                "description": "Visible per-step content (label, metadata) rendered alongside the marker in vertical layouts"
              }
            ]
          }
        ]
      },
      {
        "name": "progressBar",
        "restrict": [
          "div"
        ],
        "description": "Progress bar that summarizes overall completion percentage",
        "attributes": {
          "static": {
            "role": "progressbar"
          }
        },
        "children": [
          {
            "name": "progressBarValue",
            "restrict": [
              "span"
            ],
            "description": "Filled portion of the progress bar (sized by inline width)",
            "children": [
              {
                "name": "progressBarAssistiveText",
                "restrict": [
                  "span"
                ],
                "description": "Screen-reader-only label announcing the current progress percentage"
              }
            ]
          }
        ]
      },
      {
        "name": "stepTooltip",
        "restrict": [
          "div"
        ],
        "description": "Optional tooltip popover that labels the currently active step",
        "attributes": {
          "static": {
            "role": "tooltip"
          }
        },
        "children": [
          {
            "name": "stepTooltipBody",
            "restrict": [
              "div"
            ],
            "description": "Tooltip text content"
          }
        ]
      }
    ]
  },
  "states": [
    {
      "name": "currentStep",
      "type": "enum",
      "description": "Index of current step",
      "options": []
    },
    {
      "name": "hasError",
      "type": "boolean",
      "aria": "aria-invalid",
      "description": "Whether current step has error"
    },
    {
      "name": "completed",
      "type": "boolean",
      "description": "whether a step is completed"
    }
  ],
  "accessibility": {
    "requirements": [
      {
        "id": "step-labels",
        "description": "Each step should have an accessible label"
      },
      {
        "id": "current-step",
        "description": "Current step should be indicated to screen readers"
      },
      {
        "id": "progressbar-values",
        "description": "The progress bar must expose aria-valuemin, aria-valuemax, and aria-valuenow plus an accessible label naming what is progressing"
      }
    ]
  },
  "componentRefs": {
    "PrimitiveIcon": {
      "description": "Bare SVG icon composed directly inside the component. The host node supplies the SVG class (e.g. slds-button__icon, slds-menu__item-icon) via componentProps; PrimitiveIcon contributes the sprite-href binding.",
      "props": {
        "iconName": {
          "type": "string",
          "required": true,
          "description": "Sprite reference for the icon glyph"
        }
      }
    }
  }
}
