{
  "_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-system.v1.json",
  "apiVersion": "1.0.0",
  "name": "DockedFormFooter",
  "description": "Fixed bar pinned to the bottom of the viewport that hosts the primary cancel/save actions for a form, with an optional error indicator button and accompanying error popover.",
  "extensions": {
    "com.salesforce-ux": {
      "genReady": false
    }
  },
  "cssSource": "./dockedFormFooter.css",
  "styleApi": {
    "status": "stable",
    "ready": true
  },
  "structure": {
    "name": "dockedFormFooter",
    "restrict": [
      "div"
    ],
    "description": "Fixed container pinned to the viewport's block-end edge that horizontally centers the form's primary actions.",
    "attributes": {
      "static": {
        "class": "slds-docked-form-footer"
      }
    },
    "children": [
      {
        "name": "errorButton",
        "restrict": [
          "button"
        ],
        "description": "Icon button shown when the form has validation errors; clicking it surfaces the error popover.",
        "renderWhen": "propFilled",
        "attributes": {
          "static": {
            "class": "slds-button slds-button_icon slds-button_icon-error",
            "type": "button",
            "title": "Resolve error"
          }
        },
        "children": [
          {
            "name": "errorIcon",
            "description": "Error glyph rendered inside the error button.",
            "attributes": {
              "static": {
                "class": "slds-button__icon slds-button__icon_large"
              }
            },
            "component": "PrimitiveIcon"
          },
          {
            "name": "errorAssistiveText",
            "restrict": [
              "span"
            ],
            "description": "Visually hidden label announcing the resolve-error action.",
            "attributes": {
              "static": {
                "class": "slds-assistive-text"
              }
            }
          }
        ]
      },
      {
        "name": "cancelButton",
        "restrict": [
          "button"
        ],
        "description": "Neutral button that cancels the form and dismisses the docked footer flow.",
        "attributes": {
          "static": {
            "class": "slds-button slds-button_neutral",
            "type": "button"
          }
        }
      },
      {
        "name": "saveButton",
        "restrict": [
          "button"
        ],
        "description": "Brand-styled button that submits the form.",
        "attributes": {
          "static": {
            "class": "slds-button slds-button_brand",
            "type": "button"
          }
        }
      },
      {
        "name": "errorPopover",
        "restrict": [
          "section"
        ],
        "description": "Error popover anchored above the error button; describes the validation errors that must be resolved before saving.",
        "renderWhen": "propFilled",
        "attributes": {
          "static": {
            "class": "slds-popover slds-popover_error slds-nubbin_bottom-left",
            "role": "dialog"
          }
        },
        "children": [
          {
            "name": "popoverClose",
            "restrict": [
              "button"
            ],
            "description": "Inverse icon button floated to the inline-end of the popover that dismisses it.",
            "attributes": {
              "static": {
                "class": "slds-button slds-button_icon slds-button_icon-small slds-float_right slds-popover__close slds-button_icon-inverse",
                "title": "Close dialog"
              }
            },
            "children": [
              {
                "name": "popoverCloseIcon",
                "description": "Close glyph rendered inside the popover close button.",
                "attributes": {
                  "static": {
                    "class": "slds-button__icon"
                  }
                },
                "component": "PrimitiveIcon"
              },
              {
                "name": "popoverCloseAssistiveText",
                "restrict": [
                  "span"
                ],
                "description": "Visually hidden label announcing the close-dialog action.",
                "attributes": {
                  "static": {
                    "class": "slds-assistive-text"
                  }
                }
              }
            ]
          },
          {
            "name": "popoverHeader",
            "restrict": [
              "header"
            ],
            "description": "Header region of the error popover containing the error icon and heading.",
            "attributes": {
              "static": {
                "class": "slds-popover__header"
              }
            },
            "children": [
              {
                "name": "headerMedia",
                "restrict": [
                  "div"
                ],
                "description": "Media object that aligns the error icon next to the heading text.",
                "attributes": {
                  "static": {
                    "class": "slds-media slds-media_center slds-has-flexi-truncate"
                  }
                },
                "children": [
                  {
                    "name": "headerMediaFigure",
                    "restrict": [
                      "div"
                    ],
                    "description": "Figure slot of the media object holding the error icon.",
                    "attributes": {
                      "static": {
                        "class": "slds-media__figure"
                      }
                    },
                    "children": [
                      {
                        "name": "headerIconContainer",
                        "restrict": [
                          "span"
                        ],
                        "description": "Utility icon container styled for the error variant.",
                        "attributes": {
                          "static": {
                            "class": "slds-icon_container slds-icon-utility-error"
                          }
                        },
                        "children": [
                          {
                            "name": "headerIcon",
                            "restrict": [
                              "svg"
                            ],
                            "description": "Error glyph rendered next to the popover heading.",
                            "attributes": {
                              "static": {
                                "class": "slds-icon slds-icon_x-small",
                                "aria-hidden": "true"
                              }
                            }
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "name": "headerMediaBody",
                    "restrict": [
                      "div"
                    ],
                    "description": "Body slot of the media object holding the popover heading text.",
                    "attributes": {
                      "static": {
                        "class": "slds-media__body"
                      }
                    },
                    "children": [
                      {
                        "name": "popoverHeading",
                        "restrict": [
                          "h2"
                        ],
                        "description": "Popover heading; truncated when the available width is insufficient.",
                        "attributes": {
                          "static": {
                            "class": "slds-truncate slds-text-heading_medium"
                          }
                        }
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "name": "popoverBody",
            "restrict": [
              "div"
            ],
            "description": "Body region of the error popover describing what needs to be resolved.",
            "attributes": {
              "static": {
                "class": "slds-popover__body"
              }
            }
          }
        ]
      }
    ]
  },
  "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"
        }
      }
    }
  }
}
