{
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
  "name": "@eurodata/eurodata-ui",
  "version": "0.9.0",
  "description-markup": "markdown",
  "contributions": {
    "html": {
      "elements": [
        {
          "name": "ed-icon",
          "description": "Icons are symbols that can be used to represent various options within an application.\n---\n\n\n### **Events:**\n - **ed-load** - Emitted when the icon has loaded. When using `spriteSheet: true` this will not emit.\n- **ed-error** - Emitted when the icon fails to load due to an error. When using `spriteSheet: true` this will not emit.\n\n### **CSS Parts:**\n - **svg** - The internal SVG element.\n- **use** - The `<use>` element generated when using `spriteSheet: true`",
          "doc-url": "",
          "attributes": [
            {
              "name": "name",
              "description": "The name of the icon to draw. Available names depend on the icon library being used.",
              "value": { "type": "string | undefined" }
            },
            {
              "name": "family",
              "description": "The family of icons to choose from. When using empty state icons you can add the mono to get the mono-colored icons.",
              "value": { "type": "string" }
            },
            {
              "name": "variant",
              "description": "The name of the icon's variant. Our Libraries do not use any variants, but it is use-full for some custom added libraries.",
              "value": { "type": "string" }
            },
            {
              "name": "auto-width",
              "description": "Sets the width of the icon to match the cropped SVG viewBox. This operates like the Font `fa-width-auto` class.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "swap-opacity",
              "description": "Swaps the opacity of duotone icons.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "src",
              "description": "An external URL of an SVG file. Be sure you trust the content you are including, as it will be executed as code and\ncan result in XSS attacks.",
              "value": { "type": "string | undefined" }
            },
            {
              "name": "label",
              "description": "An alternate description to use for assistive devices. If omitted, the icon will be considered presentational and\nignored by assistive devices.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "library",
              "description": "The name of a registered custom icon library.",
              "value": { "type": "string", "default": "'default'" }
            },
            {
              "name": "no-recolor",
              "description": "Disables the recoloring of the icon with currentColor and instead keeps the initial fill color for each path",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "rotate",
              "description": "Sets the rotation degree of the icon",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "flip",
              "description": "Sets the flip direction of the icon along the 'x' (horizontal), 'y' (vertical), or 'both' axes.",
              "value": { "type": "'x' | 'y' | 'both' | undefined" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [],
          "events": [
            {
              "name": "ed-load",
              "description": "Emitted when the icon has loaded. When using `spriteSheet: true` this will not emit."
            },
            {
              "name": "ed-error",
              "description": "Emitted when the icon fails to load due to an error. When using `spriteSheet: true` this will not emit."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "name",
                "description": "The name of the icon to draw. Available names depend on the icon library being used.",
                "type": "string | undefined"
              },
              {
                "name": "family",
                "description": "The family of icons to choose from. When using empty state icons you can add the mono to get the mono-colored icons.",
                "type": "string"
              },
              {
                "name": "variant",
                "description": "The name of the icon's variant. Our Libraries do not use any variants, but it is use-full for some custom added libraries.",
                "type": "string"
              },
              {
                "name": "autoWidth",
                "description": "Sets the width of the icon to match the cropped SVG viewBox. This operates like the Font `fa-width-auto` class.",
                "type": "boolean"
              },
              {
                "name": "swapOpacity",
                "description": "Swaps the opacity of duotone icons.",
                "type": "boolean"
              },
              {
                "name": "src",
                "description": "An external URL of an SVG file. Be sure you trust the content you are including, as it will be executed as code and\ncan result in XSS attacks.",
                "type": "string | undefined"
              },
              {
                "name": "label",
                "description": "An alternate description to use for assistive devices. If omitted, the icon will be considered presentational and\nignored by assistive devices.",
                "type": "string"
              },
              {
                "name": "library",
                "description": "The name of a registered custom icon library.",
                "type": "string"
              },
              {
                "name": "noRecolor",
                "description": "Disables the recoloring of the icon with currentColor and instead keeps the initial fill color for each path",
                "type": "boolean"
              },
              {
                "name": "rotate",
                "description": "Sets the rotation degree of the icon",
                "type": "number"
              },
              {
                "name": "flip",
                "description": "Sets the flip direction of the icon along the 'x' (horizontal), 'y' (vertical), or 'both' axes.",
                "type": "'x' | 'y' | 'both' | undefined"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-load",
                "description": "Emitted when the icon has loaded. When using `spriteSheet: true` this will not emit."
              },
              {
                "name": "ed-error",
                "description": "Emitted when the icon fails to load due to an error. When using `spriteSheet: true` this will not emit."
              }
            ]
          }
        },
        {
          "name": "ed-checkbox",
          "description": "Checkboxes allow the user to toggle an option on or off.\n---\n\n\n### **Events:**\n - **change** - Emitted when the checked state changes.\n- **blur** - Emitted when the checkbox loses focus.\n- **focus** - Emitted when the checkbox gains focus.\n- **input** - Emitted when the checkbox receives input.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **click()** - Simulates a click on the checkbox.\n- **focus(options: _FocusOptions_)** - Sets focus on the checkbox.\n- **blur()** - Removes focus from the checkbox.\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **formStateRestoreCallback(state: _string | File | FormData | null_, reason: _'autocomplete' | 'restore'_)** - Called when the browser is trying to restore element’s state to state in which case reason is \"restore\", or when\nthe browser is trying to fulfill autofill on behalf of user in which case reason is \"autocomplete\". In the case of\n\"restore\", state is a string, File, or FormData object previously set as the second argument to setFormValue.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n### **Slots:**\n - _default_ - The checkbox's label.\n- **hint** - Text that describes how to use the checkbox. Alternatively, you can use the `hint` attribute.\n\n### **CSS Properties:**\n - **--checked-icon-color** - The color of the checked and indeterminate icons. _(default: undefined)_\n- **--checked-icon-size** - The size of the checked and indeterminate icons. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's label .\n- **control** - The square container that wraps the checkbox's checked state.\n- **checked-icon** - The checked icon, a `<ed-icon>` element.\n- **indeterminate-icon** - The indeterminate icon, a `<ed-icon>` element.\n- **label** - The container that wraps the checkbox's label.\n- **hint** - The hint's wrapper.",
          "doc-url": "",
          "attributes": [
            { "name": "title", "value": { "type": "string", "default": "''" } },
            {
              "name": "name",
              "description": "The name of the checkbox, submitted as a name/value pair with form data.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "value",
              "description": "The value of the checkbox, submitted as a name/value pair with form data.",
              "value": { "type": "string | null" }
            },
            {
              "name": "disabled",
              "description": "Disables the checkbox.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "readonly",
              "description": "Makes the checkbox readonly.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "indeterminate",
              "description": "Draws the checkbox in an indeterminate state. This is usually applied to checkboxes that represents a \"select\nall/none\" behavior when associated checkboxes have a mix of checked and unchecked states.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "alternative",
              "description": "Enables alternative styling",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "checked",
              "description": "The default value of the form control. Primarily used for resetting the form control.",
              "value": { "type": "boolean" }
            },
            {
              "name": "required",
              "description": "Makes the checkbox a required field.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "error",
              "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "warning",
              "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "ai",
              "description": "Draws an ai-style input with AI colored border and icon.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "hint",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            { "name": "", "description": "The checkbox's label." },
            {
              "name": "hint",
              "description": "Text that describes how to use the checkbox. Alternatively, you can use the `hint` attribute."
            }
          ],
          "events": [
            {
              "name": "change",
              "type": "Event",
              "description": "Emitted when the checked state changes."
            },
            {
              "name": "blur",
              "description": "Emitted when the checkbox loses focus."
            },
            {
              "name": "focus",
              "description": "Emitted when the checkbox gains focus."
            },
            {
              "name": "input",
              "description": "Emitted when the checkbox receives input."
            },
            {
              "name": "ed-invalid",
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "input",
                "type": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              { "name": "title", "type": "string" },
              {
                "name": "name",
                "description": "The name of the checkbox, submitted as a name/value pair with form data.",
                "type": "string | null"
              },
              {
                "name": "value",
                "description": "The value of the checkbox, submitted as a name/value pair with form data.",
                "type": "string | null"
              },
              {
                "name": "disabled",
                "description": "Disables the checkbox.",
                "type": "boolean"
              },
              {
                "name": "readonly",
                "description": "Makes the checkbox readonly.",
                "type": "boolean"
              },
              {
                "name": "indeterminate",
                "description": "Draws the checkbox in an indeterminate state. This is usually applied to checkboxes that represents a \"select\nall/none\" behavior when associated checkboxes have a mix of checked and unchecked states.",
                "type": "boolean"
              },
              {
                "name": "alternative",
                "description": "Enables alternative styling",
                "type": "boolean"
              },
              { "name": "_checked", "type": "boolean | null" },
              {
                "name": "checked",
                "description": "Draws the checkbox in a checked state."
              },
              {
                "name": "defaultChecked",
                "description": "The default value of the form control. Primarily used for resetting the form control.",
                "type": "boolean"
              },
              {
                "name": "required",
                "description": "Makes the checkbox a required field.",
                "type": "boolean"
              },
              {
                "name": "error",
                "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
                "type": "string | null"
              },
              {
                "name": "warning",
                "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
                "type": "string | null"
              },
              {
                "name": "ai",
                "description": "Draws an ai-style input with AI colored border and icon.",
                "type": "boolean"
              },
              {
                "name": "hint",
                "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
                "type": "string"
              },
              { "name": "assumeInteractionOn", "type": "string[]" },
              {
                "name": "assumeInteractionOnMode",
                "type": "'combined' | 'separated' | string"
              },
              { "name": "valueHasChanged", "type": "boolean" },
              { "name": "hasInteracted", "type": "boolean" },
              { "name": "states", "type": "CustomStateSet" },
              { "name": "emitInvalid" },
              { "name": "labels" },
              {
                "name": "form",
                "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
                "type": "HTMLFormElement | null"
              },
              { "name": "validity" },
              { "name": "willValidate" },
              { "name": "validationMessage" },
              {
                "name": "validationTarget",
                "description": "Override this to change where constraint validation popups are anchored.",
                "type": "undefined | HTMLElement"
              },
              { "name": "allValidators" },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "change",
                "type": "Event",
                "description": "Emitted when the checked state changes."
              },
              {
                "name": "blur",
                "description": "Emitted when the checkbox loses focus."
              },
              {
                "name": "focus",
                "description": "Emitted when the checkbox gains focus."
              },
              {
                "name": "input",
                "description": "Emitted when the checkbox receives input."
              },
              {
                "name": "ed-invalid",
                "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied."
              }
            ]
          }
        },
        {
          "name": "ed-progress-ring",
          "description": "Progress rings show the progress of an operation in a circular fashion. Set `indeterminate` for a loading spinner.\n---\n\n\n### **Slots:**\n - **label** - The progress ring's label. Alternatively, you can use the `label` attribute.\n\n### **CSS Properties:**\n - **--size** - The diameter of the ring. _(default: 3rem)_\n- **--track-width** - The width of the track stroke (SVG user units). _(default: 5)_\n- **--track-color** - The color of the track. _(default: var(--ed-color-neutral-fill-normal))_\n- **--indicator-width** - The width of the indicator stroke. _(default: var(--track-width))_\n- **--indicator-color** - The color of the indicator. _(default: var(--ed-color-brand-fill-normal))_\n- **--indicator-transition-duration** - The transition duration for determinate value changes. _(default: 0.35s)_\n\n### **CSS Parts:**\n - **form-control-label** - The label element below the ring.\n- **base** - The component's base wrapper.\n- **track** - The SVG track circle.\n- **indicator** - The SVG indicator circle.",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "The current progress as a percentage, 0 to 100.",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "indeterminate",
              "description": "When true, percentage is ignored and a loading spinner animation is shown.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "label",
              "description": "The progress ring's label. If you need to display HTML, use the `label` slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "label",
              "description": "The progress ring's label. Alternatively, you can use the `label` attribute."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "The current progress as a percentage, 0 to 100.",
                "type": "number"
              },
              {
                "name": "indeterminate",
                "description": "When true, percentage is ignored and a loading spinner animation is shown.",
                "type": "boolean"
              },
              {
                "name": "label",
                "description": "The progress ring's label. If you need to display HTML, use the `label` slot instead.",
                "type": "string"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-tree-item",
          "description": "A tree item serves as a hierarchical node that lives inside a [tree](/a/eurodata-ui/docs/components/tree).\n---\n\n\n### **Events:**\n - **ed-expand** - Emitted when the tree item expands.\n- **ed-after-expand** - Emitted after the tree item expands and all animations are complete.\n- **ed-collapse** - Emitted when the tree item collapses.\n- **ed-after-collapse** - Emitted after the tree item collapses and all animations are complete.\n- **ed-lazy-change** - Emitted when the tree item's lazy state changes.\n- **ed-lazy-load** - Emitted when a lazy item is selected. Use this event to asynchronously load data and append items to the tree before expanding. After appending new items, remove the `lazy` attribute to remove the loading state and update the tree.\n\n### **Methods:**\n - **getChildrenItems({ includeDisabled = true }: _{ includeDisabled?: boolean }_): _EdTreeItem[]_** - Gets all the nested tree items in this node.\n\n### **Slots:**\n - _default_ - The default slot.\n- **start** - Content placed before the label, e.g. an icon.\n- **end** - Content placed after the label, e.g. an action button or badge.\n- **description** - Secondary text rendered below the label. Stays at default styling regardless of selection state (does not adopt the active or path-highlight color/weight).\n- **expand-icon** - The icon to show when the tree item is expanded.\n- **collapse-icon** - The icon to show when the tree item is collapsed.\n\n### **CSS Properties:**\n - **--show-duration** - The animation duration when expanding tree items. _(default: 200ms)_\n- **--hide-duration** - The animation duration when collapsing tree items. _(default: 200ms)_\n- **--background** - The background color the tree item sits on. Hover and active states are mixed on top of this value, so override it when placing the tree on a non-default surface (e.g. a raised panel or card) to keep hover/active feedback coherent. _(default: var(--ed-color-surface-default))_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **item** - The tree item's container. This element wraps everything except slotted tree item children.\n- **indentation** - The tree item's indentation container.\n- **expand-button** - The container that wraps the tree item's expand button and spinner.\n- **spinner** - The spinner that shows when a lazy tree item is in the loading state.\n- **spinner__base** - The spinner's base part.\n- **start** - The container for the `start` slot, rendered before the label.\n- **text** - The vertical container that wraps the label and the description.\n- **label** - The tree item's label.\n- **description** - The container for the `description` slot, rendered below the label.\n- **end** - The container for the `end` slot, rendered after the label.\n- **children** - The container that wraps the tree item's nested children.\n- **checkbox** - The checkbox that shows when using multiselect.\n- **checkbox__base** - The checkbox's exported `base` part.\n- **checkbox__control** - The checkbox's exported `control` part.\n- **checkbox__checked-icon** - The checkbox's exported `checked-icon` part.\n- **checkbox__indeterminate-icon** - The checkbox's exported `indeterminate-icon` part.\n- **checkbox__label** - The checkbox's exported `label` part.",
          "doc-url": "",
          "attributes": [
            {
              "name": "expanded",
              "description": "Expands the tree item.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "selected",
              "description": "Draws the tree item in a selected state.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "disabled",
              "description": "Disables the tree item.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "lazy",
              "description": "Enables lazy loading behavior.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            { "name": "", "description": "The default slot." },
            {
              "name": "start",
              "description": "Content placed before the label, e.g. an icon."
            },
            {
              "name": "end",
              "description": "Content placed after the label, e.g. an action button or badge."
            },
            {
              "name": "description",
              "description": "Secondary text rendered below the label. Stays at default styling regardless of selection state (does not adopt the active or path-highlight color/weight)."
            },
            {
              "name": "expand-icon",
              "description": "The icon to show when the tree item is expanded."
            },
            {
              "name": "collapse-icon",
              "description": "The icon to show when the tree item is collapsed."
            }
          ],
          "events": [
            {
              "name": "ed-expand",
              "description": "Emitted when the tree item expands."
            },
            {
              "name": "ed-after-expand",
              "description": "Emitted after the tree item expands and all animations are complete."
            },
            {
              "name": "ed-collapse",
              "description": "Emitted when the tree item collapses."
            },
            {
              "name": "ed-after-collapse",
              "description": "Emitted after the tree item collapses and all animations are complete."
            },
            {
              "name": "ed-lazy-change",
              "description": "Emitted when the tree item's lazy state changes."
            },
            {
              "name": "ed-lazy-load",
              "description": "Emitted when a lazy item is selected. Use this event to asynchronously load data and append items to the tree before expanding. After appending new items, remove the `lazy` attribute to remove the loading state and update the tree."
            }
          ],
          "js": {
            "properties": [
              { "name": "indeterminate", "type": "boolean" },
              { "name": "isLeaf", "type": "boolean" },
              { "name": "loading", "type": "boolean" },
              { "name": "selectable", "type": "boolean" },
              {
                "name": "expanded",
                "description": "Expands the tree item.",
                "type": "boolean"
              },
              {
                "name": "selected",
                "description": "Draws the tree item in a selected state.",
                "type": "boolean"
              },
              {
                "name": "disabled",
                "description": "Disables the tree item.",
                "type": "boolean"
              },
              {
                "name": "lazy",
                "description": "Enables lazy loading behavior.",
                "type": "boolean"
              },
              { "name": "defaultSlot", "type": "HTMLSlotElement" },
              { "name": "childrenSlot", "type": "HTMLSlotElement" },
              { "name": "itemElement", "type": "HTMLDivElement" },
              { "name": "childrenContainer", "type": "HTMLDivElement" },
              { "name": "expandButtonSlot", "type": "HTMLSlotElement" },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-expand",
                "description": "Emitted when the tree item expands."
              },
              {
                "name": "ed-after-expand",
                "description": "Emitted after the tree item expands and all animations are complete."
              },
              {
                "name": "ed-collapse",
                "description": "Emitted when the tree item collapses."
              },
              {
                "name": "ed-after-collapse",
                "description": "Emitted after the tree item collapses and all animations are complete."
              },
              {
                "name": "ed-lazy-change",
                "description": "Emitted when the tree item's lazy state changes."
              },
              {
                "name": "ed-lazy-load",
                "description": "Emitted when a lazy item is selected. Use this event to asynchronously load data and append items to the tree before expanding. After appending new items, remove the `lazy` attribute to remove the loading state and update the tree."
              }
            ]
          }
        },
        {
          "name": "ed-side-menu-item",
          "description": "A navigation item for use inside [ed-side-menu](/a/eurodata-ui/docs/components/side-menu). Extends ed-tree-item with link support.\n---\n\n\n### **Events:**\n - **ed-navigate** - Emitted when a navigable item (with `href`) is clicked. Can be `preventDefault()`'d for SPA routing.\n- **ed-expand** - Emitted when the item expands.\n- **ed-after-expand** - Emitted after the item expands and all animations are complete.\n- **ed-collapse** - Emitted when the item collapses.\n- **ed-after-collapse** - Emitted after the item collapses and all animations are complete.\n- **ed-lazy-change** - Emitted when the tree item's lazy state changes.\n- **ed-lazy-load** - Emitted when a lazy item is selected. Use this event to asynchronously load data and append items to the tree before expanding. After appending new items, remove the `lazy` attribute to remove the loading state and update the tree.\n\n### **Methods:**\n - **getChildrenItems({ includeDisabled = true }: _{ includeDisabled?: boolean }_): _EdTreeItem[]_** - Gets all the nested tree items in this node.\n\n### **Slots:**\n - _default_ - The default slot for the item label.\n- **start** - Content placed before the label, e.g. an icon.\n- **end** - Content placed after the label, e.g. a badge.\n- **description** - Secondary text rendered below the label.\n- **expand-icon** - The icon to show when the tree item is expanded.\n- **collapse-icon** - The icon to show when the tree item is collapsed.\n\n### **CSS Properties:**\n - **--show-duration** - The animation duration when expanding tree items. _(default: 200ms)_\n- **--hide-duration** - The animation duration when collapsing tree items. _(default: 200ms)_\n- **--background** - The background color the tree item sits on. Hover and active states are mixed on top of this value, so override it when placing the tree on a non-default surface (e.g. a raised panel or card) to keep hover/active feedback coherent. _(default: var(--ed-color-surface-default))_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **item-wrapper** - The wrapper around indentation, chevron, and the clickable row.\n- **item** - The clickable row (renders as `<a>` when `href` is set, `<div>` otherwise).\n- **indentation** - The tree item's indentation container.\n- **expand-button** - The chevron container (sibling of the row — clicking it does not navigate).\n- **start** - Container for the start slot.\n- **text** - Wrapper for label and description.\n- **label** - The item's label.\n- **description** - Container for the description slot.\n- **end** - Container for the end slot.\n- **children** - Container for nested child items.\n- **spinner** - The spinner that shows when a lazy tree item is in the loading state.\n- **spinner__base** - The spinner's base part.\n- **checkbox** - The checkbox that shows when using multiselect.\n- **checkbox__base** - The checkbox's exported `base` part.\n- **checkbox__control** - The checkbox's exported `control` part.\n- **checkbox__checked-icon** - The checkbox's exported `checked-icon` part.\n- **checkbox__indeterminate-icon** - The checkbox's exported `indeterminate-icon` part.\n- **checkbox__label** - The checkbox's exported `label` part.",
          "doc-url": "",
          "attributes": [
            {
              "name": "pinned",
              "description": "Marks the item as a permanently expanded parent. The chevron is not rendered, attempts to collapse are ignored,\nand `aria-expanded` is omitted (no disclosure semantics). Use for top-level navigation groups whose children\nshould always be visible. Implies `expanded = true` on connect.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "href",
              "description": "The URL the item navigates to. When set, the item renders as an `<a>` element with proper link semantics.",
              "value": { "type": "string" }
            },
            {
              "name": "target",
              "description": "Where to open the linked URL (e.g. `_blank`, `_self`). Only used when `href` is set.",
              "value": { "type": "string" }
            },
            {
              "name": "active",
              "description": "True when this item's href matches the parent side-menu's `current-href`. Set by the parent; do not write directly.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "expanded",
              "description": "Expands the tree item.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "selected",
              "description": "Draws the tree item in a selected state.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "disabled",
              "description": "Disables the tree item.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "lazy",
              "description": "Enables lazy loading behavior.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "The default slot for the item label."
            },
            {
              "name": "start",
              "description": "Content placed before the label, e.g. an icon."
            },
            {
              "name": "end",
              "description": "Content placed after the label, e.g. a badge."
            },
            {
              "name": "description",
              "description": "Secondary text rendered below the label."
            },
            {
              "name": "expand-icon",
              "description": "The icon to show when the tree item is expanded."
            },
            {
              "name": "collapse-icon",
              "description": "The icon to show when the tree item is collapsed."
            }
          ],
          "events": [
            {
              "name": "ed-navigate",
              "description": "Emitted when a navigable item (with `href`) is clicked. Can be `preventDefault()`'d for SPA routing."
            },
            {
              "name": "ed-expand",
              "description": "Emitted when the item expands."
            },
            {
              "name": "ed-after-expand",
              "description": "Emitted after the item expands and all animations are complete."
            },
            {
              "name": "ed-collapse",
              "description": "Emitted when the item collapses."
            },
            {
              "name": "ed-after-collapse",
              "description": "Emitted after the item collapses and all animations are complete."
            },
            {
              "name": "ed-lazy-change",
              "description": "Emitted when the tree item's lazy state changes."
            },
            {
              "name": "ed-lazy-load",
              "description": "Emitted when a lazy item is selected. Use this event to asynchronously load data and append items to the tree before expanding. After appending new items, remove the `lazy` attribute to remove the loading state and update the tree."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "href",
                "description": "The URL the item navigates to. When set, the item renders as an `<a>` element with proper link semantics.",
                "type": "string"
              },
              {
                "name": "target",
                "description": "Where to open the linked URL (e.g. `_blank`, `_self`). Only used when `href` is set.",
                "type": "string"
              },
              {
                "name": "active",
                "description": "True when this item's href matches the parent side-menu's `current-href`. Set by the parent; do not write directly.",
                "type": "boolean"
              },
              {
                "name": "pinned",
                "description": "Marks the item as a permanently expanded parent. The chevron is not rendered, attempts to collapse are ignored,\nand `aria-expanded` is omitted (no disclosure semantics). Use for top-level navigation groups whose children\nshould always be visible. Implies `expanded = true` on connect.",
                "type": "boolean"
              },
              { "name": "indeterminate", "type": "boolean" },
              { "name": "isLeaf", "type": "boolean" },
              { "name": "loading", "type": "boolean" },
              { "name": "selectable", "type": "boolean" },
              {
                "name": "expanded",
                "description": "Expands the tree item.",
                "type": "boolean"
              },
              {
                "name": "selected",
                "description": "Draws the tree item in a selected state.",
                "type": "boolean"
              },
              {
                "name": "disabled",
                "description": "Disables the tree item.",
                "type": "boolean"
              },
              {
                "name": "lazy",
                "description": "Enables lazy loading behavior.",
                "type": "boolean"
              },
              { "name": "defaultSlot", "type": "HTMLSlotElement" },
              { "name": "childrenSlot", "type": "HTMLSlotElement" },
              { "name": "itemElement", "type": "HTMLDivElement" },
              { "name": "childrenContainer", "type": "HTMLDivElement" },
              { "name": "expandButtonSlot", "type": "HTMLSlotElement" },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-navigate",
                "description": "Emitted when a navigable item (with `href`) is clicked. Can be `preventDefault()`'d for SPA routing."
              },
              {
                "name": "ed-expand",
                "description": "Emitted when the item expands."
              },
              {
                "name": "ed-after-expand",
                "description": "Emitted after the item expands and all animations are complete."
              },
              {
                "name": "ed-collapse",
                "description": "Emitted when the item collapses."
              },
              {
                "name": "ed-after-collapse",
                "description": "Emitted after the item collapses and all animations are complete."
              },
              {
                "name": "ed-lazy-change",
                "description": "Emitted when the tree item's lazy state changes."
              },
              {
                "name": "ed-lazy-load",
                "description": "Emitted when a lazy item is selected. Use this event to asynchronously load data and append items to the tree before expanding. After appending new items, remove the `lazy` attribute to remove the loading state and update the tree."
              }
            ]
          }
        },
        {
          "name": "ed-table-cell",
          "description": "A table cell that functions as either a `columnheader` or `gridcell` depending on its context.\n---\n\n\n### **Events:**\n \n\n### **Slots:**\n - _default_ - The cell's content.\n\n### **CSS Parts:**\n - **base** - The cell's content wrapper.\n- **sort-indicator** - The sort direction icon (header cells only).\n- **resize-handle** - The resize grip (header cells only).",
          "doc-url": "",
          "attributes": [
            {
              "name": "sortable",
              "description": "Allow sorting by this column (header cells only).",
              "value": { "type": "'single' | 'multi' | undefined" }
            },
            {
              "name": "sort-key",
              "description": "Key emitted in sort events. Defaults to the cell's text content.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "resizable",
              "description": "Show a resize handle on this cell (header cells only).",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "min-width",
              "description": "Minimum column width (e.g. `8rem`, `120px`). Applied as CSS min-width.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "align",
              "description": "Text alignment for this cell. Applied as `text-align` on the host.",
              "value": { "type": "'start' | 'center' | 'end' | undefined" }
            },
            {
              "name": "colspan",
              "description": "Column span for multi-column headers. Sets the cell to span multiple columns.",
              "value": { "type": "number", "default": "1" }
            },
            {
              "name": "rowspan",
              "description": "Row span for multi-column headers. Sets the cell to span multiple rows.",
              "value": { "type": "number", "default": "1" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [{ "name": "", "description": "The cell's content." }],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "sortable",
                "description": "Allow sorting by this column (header cells only).",
                "type": "'single' | 'multi' | undefined"
              },
              {
                "name": "sortKey",
                "description": "Key emitted in sort events. Defaults to the cell's text content.",
                "type": "string"
              },
              {
                "name": "resizable",
                "description": "Show a resize handle on this cell (header cells only).",
                "type": "boolean"
              },
              {
                "name": "minWidth",
                "description": "Minimum column width (e.g. `8rem`, `120px`). Applied as CSS min-width.",
                "type": "string"
              },
              {
                "name": "align",
                "description": "Text alignment for this cell. Applied as `text-align` on the host.",
                "type": "'start' | 'center' | 'end' | undefined"
              },
              {
                "name": "colspan",
                "description": "Column span for multi-column headers. Sets the cell to span multiple columns.",
                "type": "number"
              },
              {
                "name": "rowspan",
                "description": "Row span for multi-column headers. Sets the cell to span multiple rows.",
                "type": "number"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-table-row",
          "description": "A table row that contains table cells.\n---\n\n\n### **Slots:**\n - _default_ - The row's cells. Must be `<ed-table-cell>` elements.\n\n### **CSS Properties:**\n - **** - the height of the row _(default: undefined)_",
          "doc-url": "",
          "attributes": [
            {
              "name": "selected",
              "description": "Whether the row is selected.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "multi-line",
              "description": "Allow cells in this row to wrap content across multiple lines instead of truncating.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "The row's cells. Must be `<ed-table-cell>` elements."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "selected",
                "description": "Whether the row is selected.",
                "type": "boolean"
              },
              {
                "name": "multiLine",
                "description": "Allow cells in this row to wrap content across multiple lines instead of truncating.",
                "type": "boolean"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-carousel-item",
          "description": "A carousel item represent a slide within a carousel.\n---\n\n\n### **Slots:**\n - _default_ - The carousel item's content.\n\n### **CSS Properties:**\n - **--aspect-ratio** - The slide's aspect ratio. Inherited from the carousel by default. _(default: undefined)_",
          "doc-url": "",
          "attributes": [
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            { "name": "", "description": "The carousel item's content." }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-button",
          "description": "Buttons represent actions that are available to the user.\n---\n\n\n### **Events:**\n - **blur** - Emitted when the button loses focus.\n- **focus** - Emitted when the button gains focus.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **click()** - Simulates a click on the button.\n- **focus(options: _FocusOptions_)** - Sets focus on the button.\n- **blur()** - Removes focus from the button.\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **formStateRestoreCallback(state: _string | File | FormData | null_, reason: _'autocomplete' | 'restore'_)** - Called when the browser is trying to restore element’s state to state in which case reason is \"restore\", or when\nthe browser is trying to fulfill autofill on behalf of user in which case reason is \"autocomplete\". In the case of\n\"restore\", state is a string, File, or FormData object previously set as the second argument to setFormValue.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n### **Slots:**\n - _default_ - The button's label.\n- **start** - An element, such as `<ed-icon>`, placed before the label.\n- **end** - An element, such as `<ed-icon>`, placed after the label.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **start** - The container that wraps the `start` slot.\n- **label** - The button's label.\n- **end** - The container that wraps the `end` slot.\n- **caret** - The button's caret icon, a `<ed-icon>` element.\n- **spinner** - The spinner that shows when the button is in the loading state.",
          "doc-url": "",
          "attributes": [
            { "name": "title", "value": { "type": "string", "default": "''" } },
            {
              "name": "variant",
              "description": "The button's theme variant. Defaults to `brand` if not within another element with a variant.",
              "value": {
                "type": "'brand' | 'ai' | 'info' | 'neutral' | 'success' | 'warning' | 'danger' | 'new'",
                "default": "'brand'"
              }
            },
            {
              "name": "navbar",
              "description": "Flags the buttons as a navbar button. This is for convenience to make a full-height, at least squared, header-colored button.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "appearance",
              "description": "The button's visual appearance.",
              "value": {
                "type": "'accent' | 'filled-outlined' | 'filled' | 'outlined' | 'plain'",
                "default": "'accent'"
              }
            },
            {
              "name": "density",
              "description": "Controls the component's spacing density without affecting font-size.",
              "value": {
                "type": "'compact' | 'default' | 'spacious'",
                "default": "'default'"
              }
            },
            {
              "name": "with-caret",
              "description": "Draws the button with a caret. Used to indicate that the button triggers a dropdown menu or similar behavior.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "with-start",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `start` element so the server-rendered markup\nincludes the start slot before the component hydrates on the client.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "with-end",
              "description": "Only required for SSR. Set to `true` if you're slotting in an `end` element so the server-rendered markup\nincludes the end slot before the component hydrates on the client.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "disabled",
              "description": "Disables the button. Does not apply to link buttons.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "loading",
              "description": "Draws the button in a loading state.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "pill",
              "description": "Draws a pill-style button with rounded edges.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "type",
              "description": "The type of button. Note that the default value is `button` instead of `submit`, which is opposite of how native\n`<button>` elements behave. When the type is `submit`, the button will submit the surrounding form.",
              "value": {
                "type": "'button' | 'submit' | 'reset'",
                "default": "'button'"
              }
            },
            {
              "name": "name",
              "description": "The name of the button, submitted as a name/value pair with form data, but only when this button is the submitter.\nThis attribute is ignored when `href` is present.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "value",
              "description": "The value of the button, submitted as a pair with the button's name as part of the form data, but only when this\nbutton is the submitter. This attribute is ignored when `href` is present.",
              "value": { "type": "string" }
            },
            {
              "name": "href",
              "description": "When set, the underlying button will be rendered as an `<a>` with this `href` instead of a `<button>`.",
              "value": { "type": "string" }
            },
            {
              "name": "target",
              "description": "Tells the browser where to open the link. Only used when `href` is present.",
              "value": { "type": "'_blank' | '_parent' | '_self' | '_top'" }
            },
            {
              "name": "rel",
              "description": "When using `href`, this attribute will map to the underlying link's `rel` attribute.",
              "value": { "type": "string | undefined" }
            },
            {
              "name": "download",
              "description": "Tells the browser to download the linked file as this filename. Only used when `href` is present.",
              "value": { "type": "string | undefined" }
            },
            {
              "name": "formaction",
              "description": "Used to override the form owner's `action` attribute.",
              "value": { "type": "string" }
            },
            {
              "name": "formenctype",
              "description": "Used to override the form owner's `enctype` attribute.",
              "value": {
                "type": "'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain'"
              }
            },
            {
              "name": "formmethod",
              "description": "Used to override the form owner's `method` attribute.",
              "value": { "type": "'post' | 'get'" }
            },
            {
              "name": "formnovalidate",
              "description": "Used to override the form owner's `novalidate` attribute.",
              "value": { "type": "boolean" }
            },
            {
              "name": "formtarget",
              "description": "Used to override the form owner's `target` attribute.",
              "value": {
                "type": "'_self' | '_blank' | '_parent' | '_top' | string"
              }
            },
            {
              "name": "error",
              "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "warning",
              "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "ai",
              "description": "Draws an ai-style input with AI colored border and icon.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "hint",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            { "name": "", "description": "The button's label." },
            {
              "name": "start",
              "description": "An element, such as `<ed-icon>`, placed before the label."
            },
            {
              "name": "end",
              "description": "An element, such as `<ed-icon>`, placed after the label."
            }
          ],
          "events": [
            {
              "name": "blur",
              "description": "Emitted when the button loses focus."
            },
            {
              "name": "focus",
              "description": "Emitted when the button gains focus."
            },
            {
              "name": "ed-invalid",
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied."
            }
          ],
          "js": {
            "properties": [
              { "name": "assumeInteractionOn", "type": "string[]" },
              {
                "name": "button",
                "type": "HTMLButtonElement | HTMLLinkElement"
              },
              { "name": "labelSlot", "type": "HTMLSlotElement" },
              { "name": "invalid", "type": "boolean" },
              { "name": "isIconButton", "type": "boolean" },
              { "name": "title", "type": "string" },
              {
                "name": "variant",
                "description": "The button's theme variant. Defaults to `brand` if not within another element with a variant.",
                "type": "'brand' | 'ai' | 'info' | 'neutral' | 'success' | 'warning' | 'danger' | 'new'"
              },
              {
                "name": "navbar",
                "description": "Flags the buttons as a navbar button. This is for convenience to make a full-height, at least squared, header-colored button.",
                "type": "boolean"
              },
              {
                "name": "appearance",
                "description": "The button's visual appearance.",
                "type": "'accent' | 'filled-outlined' | 'filled' | 'outlined' | 'plain'"
              },
              {
                "name": "density",
                "description": "Controls the component's spacing density without affecting font-size.",
                "type": "'compact' | 'default' | 'spacious'"
              },
              {
                "name": "withCaret",
                "description": "Draws the button with a caret. Used to indicate that the button triggers a dropdown menu or similar behavior.",
                "type": "boolean"
              },
              {
                "name": "withStart",
                "description": "Only required for SSR. Set to `true` if you're slotting in a `start` element so the server-rendered markup\nincludes the start slot before the component hydrates on the client.",
                "type": "boolean"
              },
              {
                "name": "withEnd",
                "description": "Only required for SSR. Set to `true` if you're slotting in an `end` element so the server-rendered markup\nincludes the end slot before the component hydrates on the client.",
                "type": "boolean"
              },
              {
                "name": "disabled",
                "description": "Disables the button. Does not apply to link buttons.",
                "type": "boolean"
              },
              {
                "name": "loading",
                "description": "Draws the button in a loading state.",
                "type": "boolean"
              },
              {
                "name": "pill",
                "description": "Draws a pill-style button with rounded edges.",
                "type": "boolean"
              },
              {
                "name": "type",
                "description": "The type of button. Note that the default value is `button` instead of `submit`, which is opposite of how native\n`<button>` elements behave. When the type is `submit`, the button will submit the surrounding form.",
                "type": "'button' | 'submit' | 'reset'"
              },
              {
                "name": "name",
                "description": "The name of the button, submitted as a name/value pair with form data, but only when this button is the submitter.\nThis attribute is ignored when `href` is present.",
                "type": "string | null"
              },
              {
                "name": "value",
                "description": "The value of the button, submitted as a pair with the button's name as part of the form data, but only when this\nbutton is the submitter. This attribute is ignored when `href` is present.",
                "type": "string"
              },
              {
                "name": "href",
                "description": "When set, the underlying button will be rendered as an `<a>` with this `href` instead of a `<button>`.",
                "type": "string"
              },
              {
                "name": "target",
                "description": "Tells the browser where to open the link. Only used when `href` is present.",
                "type": "'_blank' | '_parent' | '_self' | '_top'"
              },
              {
                "name": "rel",
                "description": "When using `href`, this attribute will map to the underlying link's `rel` attribute.",
                "type": "string | undefined"
              },
              {
                "name": "download",
                "description": "Tells the browser to download the linked file as this filename. Only used when `href` is present.",
                "type": "string | undefined"
              },
              {
                "name": "formAction",
                "description": "Used to override the form owner's `action` attribute.",
                "type": "string"
              },
              {
                "name": "formEnctype",
                "description": "Used to override the form owner's `enctype` attribute.",
                "type": "'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain'"
              },
              {
                "name": "formMethod",
                "description": "Used to override the form owner's `method` attribute.",
                "type": "'post' | 'get'"
              },
              {
                "name": "formNoValidate",
                "description": "Used to override the form owner's `novalidate` attribute.",
                "type": "boolean"
              },
              {
                "name": "formTarget",
                "description": "Used to override the form owner's `target` attribute.",
                "type": "'_self' | '_blank' | '_parent' | '_top' | string"
              },
              {
                "name": "error",
                "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
                "type": "string | null"
              },
              {
                "name": "warning",
                "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
                "type": "string | null"
              },
              {
                "name": "ai",
                "description": "Draws an ai-style input with AI colored border and icon.",
                "type": "boolean"
              },
              {
                "name": "hint",
                "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
                "type": "string"
              },
              { "name": "required", "type": "boolean" },
              {
                "name": "assumeInteractionOnMode",
                "type": "'combined' | 'separated' | string"
              },
              {
                "name": "input",
                "type": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              { "name": "valueHasChanged", "type": "boolean" },
              { "name": "hasInteracted", "type": "boolean" },
              { "name": "states", "type": "CustomStateSet" },
              { "name": "emitInvalid" },
              { "name": "labels" },
              {
                "name": "form",
                "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
                "type": "HTMLFormElement | null"
              },
              { "name": "validity" },
              { "name": "willValidate" },
              { "name": "validationMessage" },
              {
                "name": "validationTarget",
                "description": "Override this to change where constraint validation popups are anchored.",
                "type": "undefined | HTMLElement"
              },
              { "name": "allValidators" },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "blur",
                "description": "Emitted when the button loses focus."
              },
              {
                "name": "focus",
                "description": "Emitted when the button gains focus."
              },
              {
                "name": "ed-invalid",
                "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied."
              }
            ]
          }
        },
        {
          "name": "ed-dialog",
          "description": "Dialogs, sometimes called \"modals\", appear above the page and require the user's immediate attention.\n---\n\n\n### **Events:**\n - **ed-show** - Emitted when the dialog opens.\n- **ed-after-show** - Emitted after the dialog opens and all animations are complete.\n- **ed-hide** - Emitted when the dialog is requested to close. Calling `event.preventDefault()` will prevent the dialog from closing. You can inspect `event.detail.source` to see which element caused the dialog to close. If the source is the dialog element itself, the user has pressed [[Escape]] or the dialog has been closed programmatically. Avoid using this unless closing the dialog will result in destructive behavior such as data loss.\n- **ed-after-hide** - Emitted after the dialog closes and all animations are complete.\n\n### **Slots:**\n - _default_ - The dialog's main content.\n- **title** - The dialog's title. Alternatively, you can use the `title` attribute.\n- **subtitle** - The dialog's subtitle. Alternatively, you can use the `subtitle` attribute.\n- **header-actions** - Optional actions to add to the header. Works best with `<ed-button>`.\n- **footer** - The dialog's footer, usually one or more buttons representing various options.\n\n### **CSS Properties:**\n - **--spacing** - The amount of space around and between the dialog's content. _(default: var(--ed-panel-spacing))_\n- **--width** - The preferred width of the dialog. Note that the dialog will shrink to accommodate smaller screens. _(default: undefined)_\n- **--show-duration** - The animation duration when showing the dialog. _(default: 200ms)_\n- **--hide-duration** - The animation duration when hiding the dialog. _(default: 200ms)_\n- **--backdrop-filter** - A CSS filter, e.g. `blur(4px)`, applied to the backdrop element behind the dialog. _(default: undefined)_\n\n### **CSS Parts:**\n - **dialog** - The dialog's internal `<dialog>` element.\n- **header** - The dialog's header. This element wraps the title and header actions.\n- **header-actions** - Optional actions to add to the header. Works best with `<ed-button>`.\n- **title** - The dialog's title.\n- **subtitle** - The dialog's subtitle.\n- **close-button** - The close button, a `<ed-button>`.\n- **close-button__base** - The close button's exported `base` part.\n- **body** - The dialog's body.\n- **footer** - The dialog's footer.",
          "doc-url": "",
          "attributes": [
            {
              "name": "open",
              "description": "Indicates whether the dialog is open. Toggle this attribute to show and hide the dialog.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "title",
              "description": "The dialog's title as displayed in the header. You should always include a relevant title, as it is required for\nproper accessibility. If you need to display HTML, use the `title` slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "subtitle",
              "description": "The dialog's subtitle. If you need to display HTML, use the `subtitle` slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "without-header",
              "description": "Disables the header. This will also remove the default close button.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "without-close",
              "description": "Disables default close button.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "light-dismiss",
              "description": "When enabled, the dialog will be closed when the user clicks outside of it.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "header-alignment",
              "description": "This is for convenience to switch between stacked and inline headers when using a subtitle",
              "value": {
                "type": "'stacked' | 'inline'",
                "default": "'stacked'"
              }
            },
            {
              "name": "type",
              "description": "Specifies a preset for alert messages",
              "value": {
                "type": "'default' | 'info' | 'warning' | 'danger'",
                "default": "'default'"
              }
            },
            {
              "name": "resizable",
              "description": "Indicates whether the dialog is resizable",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "draggable",
              "description": "Indicates whether the dialog is draggable. The drag-handle is the header, so make sure to add one if draggable is used",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "fullscreen",
              "description": "Indicates whether the dialog is displayed fullscreen, occupying the entire viewport. While `fullscreen` is active,\n`resizable` and `draggable` are ignored; toggling it off restores their behavior.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            { "name": "", "description": "The dialog's main content." },
            {
              "name": "title",
              "description": "The dialog's title. Alternatively, you can use the `title` attribute."
            },
            {
              "name": "subtitle",
              "description": "The dialog's subtitle. Alternatively, you can use the `subtitle` attribute."
            },
            {
              "name": "header-actions",
              "description": "Optional actions to add to the header. Works best with `<ed-button>`."
            },
            {
              "name": "footer",
              "description": "The dialog's footer, usually one or more buttons representing various options."
            }
          ],
          "events": [
            {
              "name": "ed-show",
              "description": "Emitted when the dialog opens."
            },
            {
              "name": "ed-after-show",
              "description": "Emitted after the dialog opens and all animations are complete."
            },
            {
              "name": "ed-hide",
              "type": "{ source: Element }",
              "description": "Emitted when the dialog is requested to close. Calling `event.preventDefault()` will prevent the dialog from closing. You can inspect `event.detail.source` to see which element caused the dialog to close. If the source is the dialog element itself, the user has pressed [[Escape]] or the dialog has been closed programmatically. Avoid using this unless closing the dialog will result in destructive behavior such as data loss."
            },
            {
              "name": "ed-after-hide",
              "description": "Emitted after the dialog closes and all animations are complete."
            }
          ],
          "js": {
            "properties": [
              { "name": "dialog", "type": "HTMLDialogElement" },
              {
                "name": "open",
                "description": "Indicates whether the dialog is open. Toggle this attribute to show and hide the dialog.",
                "type": "boolean"
              },
              {
                "name": "title",
                "description": "The dialog's title as displayed in the header. You should always include a relevant title, as it is required for\nproper accessibility. If you need to display HTML, use the `title` slot instead.",
                "type": "string"
              },
              {
                "name": "subtitle",
                "description": "The dialog's subtitle. If you need to display HTML, use the `subtitle` slot instead.",
                "type": "string"
              },
              {
                "name": "withoutHeader",
                "description": "Disables the header. This will also remove the default close button.",
                "type": "boolean"
              },
              {
                "name": "withoutClose",
                "description": "Disables default close button.",
                "type": "boolean"
              },
              {
                "name": "lightDismiss",
                "description": "When enabled, the dialog will be closed when the user clicks outside of it.",
                "type": "boolean"
              },
              {
                "name": "headerAlignment",
                "description": "This is for convenience to switch between stacked and inline headers when using a subtitle",
                "type": "'stacked' | 'inline'"
              },
              {
                "name": "type",
                "description": "Specifies a preset for alert messages",
                "type": "'default' | 'info' | 'warning' | 'danger'"
              },
              {
                "name": "resizable",
                "description": "Indicates whether the dialog is resizable",
                "type": "boolean"
              },
              {
                "name": "draggable",
                "description": "Indicates whether the dialog is draggable. The drag-handle is the header, so make sure to add one if draggable is used",
                "type": "boolean"
              },
              {
                "name": "fullscreen",
                "description": "Indicates whether the dialog is displayed fullscreen, occupying the entire viewport. While `fullscreen` is active,\n`resizable` and `draggable` are ignored; toggling it off restores their behavior.",
                "type": "boolean"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-show",
                "description": "Emitted when the dialog opens."
              },
              {
                "name": "ed-after-show",
                "description": "Emitted after the dialog opens and all animations are complete."
              },
              {
                "name": "ed-hide",
                "type": "{ source: Element }",
                "description": "Emitted when the dialog is requested to close. Calling `event.preventDefault()` will prevent the dialog from closing. You can inspect `event.detail.source` to see which element caused the dialog to close. If the source is the dialog element itself, the user has pressed [[Escape]] or the dialog has been closed programmatically. Avoid using this unless closing the dialog will result in destructive behavior such as data loss."
              },
              {
                "name": "ed-after-hide",
                "description": "Emitted after the dialog closes and all animations are complete."
              }
            ]
          }
        },
        {
          "name": "ed-alert-dialog",
          "description": "Alert dialogs interrupt the user with a brief, severity-coded message and at most a confirm/cancel choice.\n---\n\n\n### **Events:**\n - **ed-show** - Bubbles from the inner ed-dialog when the alert opens.\n- **ed-after-show** - Bubbles from the inner ed-dialog after open animations complete.\n- **ed-hide** - Bubbles from the inner ed-dialog when the alert is requested to close.\n- **ed-after-hide** - Bubbles from the inner ed-dialog after close animations complete.\n- **ed-confirm** - Emitted when the default-rendered confirm button is clicked. Cancelable; calling `event.preventDefault()` keeps the dialog open.\n- **ed-cancel** - Emitted when the default-rendered cancel button is clicked. Cancelable; calling `event.preventDefault()` keeps the dialog open.\n\n### **Slots:**\n - _default_ - The message body.\n- **title** - Override the title (HTML).\n- **icon** - Override the default icon (HTML).\n- **footer** - Full override of footer buttons. When provided, `confirm-text` and `cancel-text` are ignored.\n\n### **CSS Parts:**\n - **dialog** - The inner ed-dialog.\n- **body** - The icon + content grid container.\n- **icon** - The icon wrapper.\n- **content** - The title + message wrapper.\n- **title** - The title element.\n- **message** - The message wrapper.\n- **footer** - The footer wrapper.",
          "doc-url": "",
          "attributes": [
            {
              "name": "open",
              "description": "Indicates whether the alert dialog is open. Toggle this attribute to show or hide the dialog.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "type",
              "description": "The severity. Selects the icon and accent color.",
              "value": {
                "type": "'warning' | 'error' | 'info' | 'help'",
                "default": "'info'"
              }
            },
            {
              "name": "title",
              "description": "The heading text. If you need HTML, use the `title` slot.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "confirm-text",
              "description": "If set, renders a primary confirm button with this label.",
              "value": { "type": "string | undefined" }
            },
            {
              "name": "cancel-text",
              "description": "If set, renders a secondary cancel button with this label.",
              "value": { "type": "string | undefined" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            { "name": "", "description": "The message body." },
            { "name": "title", "description": "Override the title (HTML)." },
            {
              "name": "icon",
              "description": "Override the default icon (HTML)."
            },
            {
              "name": "footer",
              "description": "Full override of footer buttons. When provided, `confirm-text` and `cancel-text` are ignored."
            }
          ],
          "events": [
            {
              "name": "ed-show",
              "description": "Bubbles from the inner ed-dialog when the alert opens."
            },
            {
              "name": "ed-after-show",
              "description": "Bubbles from the inner ed-dialog after open animations complete."
            },
            {
              "name": "ed-hide",
              "description": "Bubbles from the inner ed-dialog when the alert is requested to close."
            },
            {
              "name": "ed-after-hide",
              "description": "Bubbles from the inner ed-dialog after close animations complete."
            },
            {
              "name": "ed-confirm",
              "description": "Emitted when the default-rendered confirm button is clicked. Cancelable; calling `event.preventDefault()` keeps the dialog open."
            },
            {
              "name": "ed-cancel",
              "description": "Emitted when the default-rendered cancel button is clicked. Cancelable; calling `event.preventDefault()` keeps the dialog open."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "open",
                "description": "Indicates whether the alert dialog is open. Toggle this attribute to show or hide the dialog.",
                "type": "boolean"
              },
              {
                "name": "type",
                "description": "The severity. Selects the icon and accent color.",
                "type": "'warning' | 'error' | 'info' | 'help'"
              },
              {
                "name": "title",
                "description": "The heading text. If you need HTML, use the `title` slot.",
                "type": "string"
              },
              {
                "name": "confirmText",
                "description": "If set, renders a primary confirm button with this label.",
                "type": "string | undefined"
              },
              {
                "name": "cancelText",
                "description": "If set, renders a secondary cancel button with this label.",
                "type": "string | undefined"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-show",
                "description": "Bubbles from the inner ed-dialog when the alert opens."
              },
              {
                "name": "ed-after-show",
                "description": "Bubbles from the inner ed-dialog after open animations complete."
              },
              {
                "name": "ed-hide",
                "description": "Bubbles from the inner ed-dialog when the alert is requested to close."
              },
              {
                "name": "ed-after-hide",
                "description": "Bubbles from the inner ed-dialog after close animations complete."
              },
              {
                "name": "ed-confirm",
                "description": "Emitted when the default-rendered confirm button is clicked. Cancelable; calling `event.preventDefault()` keeps the dialog open."
              },
              {
                "name": "ed-cancel",
                "description": "Emitted when the default-rendered cancel button is clicked. Cancelable; calling `event.preventDefault()` keeps the dialog open."
              }
            ]
          }
        },
        {
          "name": "ed-animation",
          "description": "Animate elements declaratively with nearly 100 baked-in presets, or roll your own with custom keyframes. Powered by the [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API).\n---\n\n\n### **Events:**\n - **ed-cancel** - Emitted when the animation is canceled.\n- **ed-finish** - Emitted when the animation finishes.\n- **ed-start** - Emitted when the animation starts or restarts.\n\n### **Methods:**\n - **cancel()** - Clears all keyframe effects caused by this animation and aborts its playback.\n- **finish()** - Sets the playback time to the end of the animation corresponding to the current playback direction.\n\n### **Slots:**\n - _default_ - The element to animate. Avoid slotting in more than one element, as subsequent ones will be ignored. To animate multiple elements, either wrap them in a single container or use multiple `<ed-animation>` elements.",
          "doc-url": "",
          "attributes": [
            {
              "name": "name",
              "description": "The name of the built-in animation to use. For custom animations, use the `keyframes` prop.",
              "value": { "type": "string", "default": "'none'" }
            },
            {
              "name": "play",
              "description": "Plays the animation. When omitted, the animation will be paused. This attribute will be automatically removed when\nthe animation finishes or gets canceled.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "delay",
              "description": "The number of milliseconds to delay the start of the animation.",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "direction",
              "description": "Determines the direction of playback as well as the behavior when reaching the end of an iteration.\n[Learn more](https://developer.mozilla.org/en-US/docs/Web/CSS/animation-direction)",
              "value": { "type": "PlaybackDirection", "default": "'normal'" }
            },
            {
              "name": "duration",
              "description": "The number of milliseconds each iteration of the animation takes to complete.",
              "value": { "type": "number", "default": "1000" }
            },
            {
              "name": "easing",
              "description": "The easing function to use for the animation. This can be an easing function or a custom easing function\nsuch as `cubic-bezier(0, 1, .76, 1.14)`.",
              "value": { "type": "string", "default": "'linear'" }
            },
            {
              "name": "end-delay",
              "description": "The number of milliseconds to delay after the active period of an animation sequence.",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "fill",
              "description": "Sets how the animation applies styles to its target before and after its execution.",
              "value": { "type": "FillMode", "default": "'auto'" }
            },
            {
              "name": "iterations",
              "description": "The number of iterations to run before the animation completes. Defaults to `Infinity`, which loops.",
              "value": { "type": "string", "default": "Infinity" }
            },
            {
              "name": "iteration-start",
              "description": "The offset at which to start the animation, usually between 0 (start) and 1 (end).",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "playback-rate",
              "description": "Sets the animation's playback rate. The default is `1`, which plays the animation at a normal speed. Setting this\nto `2`, for example, will double the animation's speed. A negative value can be used to reverse the animation. This\nvalue can be changed without causing the animation to restart.",
              "value": { "type": "number", "default": "1" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "The element to animate. Avoid slotting in more than one element, as subsequent ones will be ignored. To animate multiple elements, either wrap them in a single container or use multiple `<ed-animation>` elements."
            }
          ],
          "events": [
            {
              "name": "ed-cancel",
              "description": "Emitted when the animation is canceled."
            },
            {
              "name": "ed-finish",
              "description": "Emitted when the animation finishes."
            },
            {
              "name": "ed-start",
              "description": "Emitted when the animation starts or restarts."
            }
          ],
          "js": {
            "properties": [
              { "name": "defaultSlot", "type": "Promise<HTMLSlotElement>" },
              {
                "name": "name",
                "description": "The name of the built-in animation to use. For custom animations, use the `keyframes` prop.",
                "type": "string"
              },
              {
                "name": "play",
                "description": "Plays the animation. When omitted, the animation will be paused. This attribute will be automatically removed when\nthe animation finishes or gets canceled.",
                "type": "boolean"
              },
              {
                "name": "delay",
                "description": "The number of milliseconds to delay the start of the animation.",
                "type": "number"
              },
              {
                "name": "direction",
                "description": "Determines the direction of playback as well as the behavior when reaching the end of an iteration.\n[Learn more](https://developer.mozilla.org/en-US/docs/Web/CSS/animation-direction)",
                "type": "PlaybackDirection"
              },
              {
                "name": "duration",
                "description": "The number of milliseconds each iteration of the animation takes to complete.",
                "type": "number"
              },
              {
                "name": "easing",
                "description": "The easing function to use for the animation. This can be an easing function or a custom easing function\nsuch as `cubic-bezier(0, 1, .76, 1.14)`.",
                "type": "string"
              },
              {
                "name": "endDelay",
                "description": "The number of milliseconds to delay after the active period of an animation sequence.",
                "type": "number"
              },
              {
                "name": "fill",
                "description": "Sets how the animation applies styles to its target before and after its execution.",
                "type": "FillMode"
              },
              {
                "name": "iterations",
                "description": "The number of iterations to run before the animation completes. Defaults to `Infinity`, which loops."
              },
              {
                "name": "iterationStart",
                "description": "The offset at which to start the animation, usually between 0 (start) and 1 (end).",
                "type": "number"
              },
              {
                "name": "keyframes",
                "description": "The keyframes to use for the animation. If this is set, `name` will be ignored.",
                "type": "Keyframe[] | undefined"
              },
              {
                "name": "playbackRate",
                "description": "Sets the animation's playback rate. The default is `1`, which plays the animation at a normal speed. Setting this\nto `2`, for example, will double the animation's speed. A negative value can be used to reverse the animation. This\nvalue can be changed without causing the animation to restart.",
                "type": "number"
              },
              {
                "name": "currentTime",
                "description": "Gets and sets the current animation time.",
                "type": "CSSNumberish"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-cancel",
                "description": "Emitted when the animation is canceled."
              },
              {
                "name": "ed-finish",
                "description": "Emitted when the animation finishes."
              },
              {
                "name": "ed-start",
                "description": "Emitted when the animation starts or restarts."
              }
            ]
          }
        },
        {
          "name": "ed-avatar",
          "description": "Avatars are used to represent a person or object.\n---\n\n\n### **Events:**\n - **ed-error** - The image could not be loaded. This may because of an invalid URL, a temporary network condition, or some unknown cause.\n\n### **Slots:**\n - **icon** - The default icon to use when no image or initials are present. Works best with `<ed-icon>`.\n\n### **CSS Properties:**\n - **--size** - The size of the avatar. _(default: undefined)_\n\n### **CSS Parts:**\n - **icon** - The container that wraps the avatar's icon.\n- **initials** - The container that wraps the avatar's initials.\n- **image** - The avatar image. Only shown when the `image` attribute is set.",
          "doc-url": "",
          "attributes": [
            {
              "name": "image",
              "description": "The image source to use for the avatar.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "label",
              "description": "A label to use to describe the avatar to assistive devices.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "initials",
              "description": "Initials to use as a fallback when no image is available (1-2 characters max recommended).",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "loading",
              "description": "Indicates how the browser should load the image.",
              "value": { "type": "'eager' | 'lazy'", "default": "'eager'" }
            },
            {
              "name": "shape",
              "description": "The shape of the avatar.",
              "value": {
                "type": "'circle' | 'square' | 'rounded'",
                "default": "'circle'"
              }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "icon",
              "description": "The default icon to use when no image or initials are present. Works best with `<ed-icon>`."
            }
          ],
          "events": [
            {
              "name": "ed-error",
              "description": "The image could not be loaded. This may because of an invalid URL, a temporary network condition, or some unknown cause."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "image",
                "description": "The image source to use for the avatar.",
                "type": "string"
              },
              {
                "name": "label",
                "description": "A label to use to describe the avatar to assistive devices.",
                "type": "string"
              },
              {
                "name": "initials",
                "description": "Initials to use as a fallback when no image is available (1-2 characters max recommended).",
                "type": "string"
              },
              {
                "name": "loading",
                "description": "Indicates how the browser should load the image.",
                "type": "'eager' | 'lazy'"
              },
              {
                "name": "shape",
                "description": "The shape of the avatar.",
                "type": "'circle' | 'square' | 'rounded'"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-error",
                "description": "The image could not be loaded. This may because of an invalid URL, a temporary network condition, or some unknown cause."
              }
            ]
          }
        },
        {
          "name": "ed-badge",
          "description": "Badges are used to draw attention and display statuses, counts or filters.\n---\n\n\n### **Events:**\n \n\n### **Slots:**\n - _default_ - The badge's content.\n- **start** - Content placed before the badge's main content. Typically used for icons.\n- **end** - Content placed after the badge's main content. Typically used for icons. When `with-remove` is set, the default content is a remove icon that emits `ed-remove` on click.\n\n### **CSS Properties:**\n - **--pulse-color** - The color of the badge's pulse effect when using `attention=\"pulse\"`. _(default: undefined)_\n\n### **CSS Parts:**\n - **remove-icon** - The component's remove icon\n- **base** - The component's base wrapper.\n- **start** - The container that wraps the `start` slot.\n- **end** - The container that wraps the `end` slot.",
          "doc-url": "",
          "attributes": [
            {
              "name": "variant",
              "description": "The badge's theme variant. Defaults to `brand` if not within another element with a variant.",
              "value": {
                "type": "| 'neutral'\n    | 'info'\n    | 'success'\n    | 'danger'\n    | 'warning'\n    | 'new'\n    | 'expired'\n    | 'ai'\n    | 'notification'\n    | 'notification-alt'",
                "default": "'info'"
              }
            },
            {
              "name": "pill",
              "description": "Draws a pill-style badge with rounded edges. Mainly used to display filters",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "attention",
              "description": "Adds an animation to draw attention to the badge.",
              "value": {
                "type": "'none' | 'pulse' | 'bounce'",
                "default": "'none'"
              }
            },
            {
              "name": "with-remove",
              "description": "Makes the badge removable and shows a remove button. Although you could use removable without pill, our styleguide requires that only pill styled badges can be removable",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            { "name": "", "description": "The badge's content." },
            {
              "name": "start",
              "description": "Content placed before the badge's main content. Typically used for icons."
            },
            {
              "name": "end",
              "description": "Content placed after the badge's main content. Typically used for icons. When `with-remove` is set, the default content is a remove icon that emits `ed-remove` on click."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "variant",
                "description": "The badge's theme variant. Defaults to `brand` if not within another element with a variant.",
                "type": "| 'neutral'\n    | 'info'\n    | 'success'\n    | 'danger'\n    | 'warning'\n    | 'new'\n    | 'expired'\n    | 'ai'\n    | 'notification'\n    | 'notification-alt'"
              },
              {
                "name": "pill",
                "description": "Draws a pill-style badge with rounded edges. Mainly used to display filters",
                "type": "boolean"
              },
              {
                "name": "attention",
                "description": "Adds an animation to draw attention to the badge.",
                "type": "'none' | 'pulse' | 'bounce'"
              },
              {
                "name": "withRemove",
                "description": "Makes the badge removable and shows a remove button. Although you could use removable without pill, our styleguide requires that only pill styled badges can be removable",
                "type": "boolean"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-breadcrumb-item",
          "description": "Breadcrumb Items are used inside breadcrumbs to represent different links.\n---\n\n\n### **Slots:**\n - _default_ - The breadcrumb item's label.\n- **start** - An element, such as `<ed-icon>`, placed before the label.\n- **end** - An element, such as `<ed-icon>`, placed after the label.\n- **separator** - The separator to use for the breadcrumb item. This will only change the separator for this item. If you want to change it for all items in the group, set the separator on `<ed-breadcrumb>` instead.\n\n### **CSS Parts:**\n - **label** - The breadcrumb item's label.\n- **start** - The container that wraps the `start` slot.\n- **end** - The container that wraps the `end` slot.\n- **separator** - The container that wraps the separator.",
          "doc-url": "",
          "attributes": [
            {
              "name": "href",
              "description": "Optional URL to direct the user to when the breadcrumb item is activated. When set, a link will be rendered\ninternally. When unset, a button will be rendered instead.",
              "value": { "type": "string | undefined" }
            },
            {
              "name": "target",
              "description": "Tells the browser where to open the link. Only used when `href` is set.",
              "value": {
                "type": "'_blank' | '_parent' | '_self' | '_top' | undefined"
              }
            },
            {
              "name": "rel",
              "description": "The `rel` attribute to use on the link. Only used when `href` is set.",
              "value": { "type": "string", "default": "'noreferrer noopener'" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            { "name": "", "description": "The breadcrumb item's label." },
            {
              "name": "start",
              "description": "An element, such as `<ed-icon>`, placed before the label."
            },
            {
              "name": "end",
              "description": "An element, such as `<ed-icon>`, placed after the label."
            },
            {
              "name": "separator",
              "description": "The separator to use for the breadcrumb item. This will only change the separator for this item. If you want to change it for all items in the group, set the separator on `<ed-breadcrumb>` instead."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              { "name": "defaultSlot", "type": "HTMLSlotElement" },
              {
                "name": "href",
                "description": "Optional URL to direct the user to when the breadcrumb item is activated. When set, a link will be rendered\ninternally. When unset, a button will be rendered instead.",
                "type": "string | undefined"
              },
              {
                "name": "target",
                "description": "Tells the browser where to open the link. Only used when `href` is set.",
                "type": "'_blank' | '_parent' | '_self' | '_top' | undefined"
              },
              {
                "name": "rel",
                "description": "The `rel` attribute to use on the link. Only used when `href` is set.",
                "type": "string"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-breadcrumb",
          "description": "Breadcrumbs provide a group of links so users can easily navigate a website's hierarchy.\n---\n\n\n### **Slots:**\n - _default_ - One or more breadcrumb items to display.\n- **separator** - The separator to use between breadcrumb items. Works best with `<ed-icon>`.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
          "doc-url": "",
          "attributes": [
            {
              "name": "label",
              "description": "The label to use for the breadcrumb control. This will not be shown on the screen, but it will be announced by\nscreen readers and other assistive devices to provide more context for users.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "variant",
              "description": "The breadcrumb's visual variant.",
              "value": {
                "type": "'inline' | 'inline-title' | 'title'",
                "default": "'inline'"
              }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "One or more breadcrumb items to display."
            },
            {
              "name": "separator",
              "description": "The separator to use between breadcrumb items. Works best with `<ed-icon>`."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              { "name": "defaultSlot", "type": "HTMLSlotElement" },
              { "name": "separatorSlot", "type": "HTMLSlotElement" },
              {
                "name": "label",
                "description": "The label to use for the breadcrumb control. This will not be shown on the screen, but it will be announced by\nscreen readers and other assistive devices to provide more context for users.",
                "type": "string"
              },
              {
                "name": "variant",
                "description": "The breadcrumb's visual variant.",
                "type": "'inline' | 'inline-title' | 'title'"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-button-group",
          "description": "Button groups can be used to group related buttons into sections.\n---\n\n\n### **Slots:**\n - _default_ - One or more `<ed-button>` elements to display in the button group.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
          "doc-url": "",
          "attributes": [
            {
              "name": "label",
              "description": "A label to use for the button group. This won't be displayed on the screen, but it will be announced by assistive\ndevices when interacting with the control and is strongly recommended.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "orientation",
              "description": "The button group's orientation.",
              "value": {
                "type": "'horizontal' | 'vertical'",
                "default": "'horizontal'"
              }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "One or more `<ed-button>` elements to display in the button group."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              { "name": "defaultSlot", "type": "HTMLSlotElement" },
              { "name": "disableRole", "type": "boolean" },
              { "name": "hasOutlined", "type": "boolean" },
              {
                "name": "label",
                "description": "A label to use for the button group. This won't be displayed on the screen, but it will be announced by assistive\ndevices when interacting with the control and is strongly recommended.",
                "type": "string"
              },
              {
                "name": "orientation",
                "description": "The button group's orientation.",
                "type": "'horizontal' | 'vertical'"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-card",
          "description": "Cards can be used to group related subjects in a container.\n---\n\n\n### **Slots:**\n - _default_ - The card's main content.\n- **header** - An optional header for the card.\n- **footer** - An optional footer for the card.\n- **media** - An optional media section to render at the start of the card.\n- **actions** - An optional actions section to render at the end for the horizontal card.\n- **header-actions** - An optional actions section to render in the header of the vertical card.\n- **footer-actions** - An optional actions section to render in the footer of the vertical card.\n\n### **CSS Properties:**\n - **--spacing** - The amount of space around and between sections of the card. Expects a single value. _(default: var(--ed-space-l))_\n\n### **CSS Parts:**\n - **media** - The container that wraps the card's media.\n- **header** - The container that wraps the card's header.\n- **body** - The container that wraps the card's main content.\n- **footer** - The container that wraps the card's footer.",
          "doc-url": "",
          "attributes": [
            {
              "name": "appearance",
              "description": "The card's visual appearance.",
              "value": {
                "type": "'accent' | 'filled' | 'outlined' | 'plain'",
                "default": "'plain'"
              }
            },
            {
              "name": "with-header",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `header` element so the server-rendered markup\nincludes the header before the component hydrates on the client.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "with-media",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `media` element so the server-rendered markup\nincludes the media before the component hydrates on the client.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "with-footer",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `footer` element so the server-rendered markup\nincludes the footer before the component hydrates on the client.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "orientation",
              "description": "Renders the card's orientation *",
              "value": {
                "type": "'horizontal' | 'vertical'",
                "default": "'vertical'"
              }
            },
            {
              "name": "interactive",
              "description": "Makes the card interactive (hover and pressed styling) *",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "selected",
              "description": "Enables the selected styling if the card is interactive *",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            { "name": "", "description": "The card's main content." },
            {
              "name": "header",
              "description": "An optional header for the card."
            },
            {
              "name": "footer",
              "description": "An optional footer for the card."
            },
            {
              "name": "media",
              "description": "An optional media section to render at the start of the card."
            },
            {
              "name": "actions",
              "description": "An optional actions section to render at the end for the horizontal card."
            },
            {
              "name": "header-actions",
              "description": "An optional actions section to render in the header of the vertical card."
            },
            {
              "name": "footer-actions",
              "description": "An optional actions section to render in the footer of the vertical card."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "appearance",
                "description": "The card's visual appearance.",
                "type": "'accent' | 'filled' | 'outlined' | 'plain'"
              },
              {
                "name": "withHeader",
                "description": "Only required for SSR. Set to `true` if you're slotting in a `header` element so the server-rendered markup\nincludes the header before the component hydrates on the client.",
                "type": "boolean"
              },
              {
                "name": "withMedia",
                "description": "Only required for SSR. Set to `true` if you're slotting in a `media` element so the server-rendered markup\nincludes the media before the component hydrates on the client.",
                "type": "boolean"
              },
              {
                "name": "withFooter",
                "description": "Only required for SSR. Set to `true` if you're slotting in a `footer` element so the server-rendered markup\nincludes the footer before the component hydrates on the client.",
                "type": "boolean"
              },
              {
                "name": "orientation",
                "description": "Renders the card's orientation *",
                "type": "'horizontal' | 'vertical'"
              },
              {
                "name": "interactive",
                "description": "Makes the card interactive (hover and pressed styling) *",
                "type": "boolean"
              },
              {
                "name": "selected",
                "description": "Enables the selected styling if the card is interactive *",
                "type": "boolean"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-carousel",
          "description": "Carousels display an arbitrary number of content slides along a horizontal or vertical axis.\n---\n\n\n### **Events:**\n - **ed-slide-change** - Emitted when the active slide changes.\n\n### **Methods:**\n - **previous(behavior: _ScrollBehavior_)** - Move the carousel backward by `slides-per-move` slides.\n- **next(behavior: _ScrollBehavior_)** - Move the carousel forward by `slides-per-move` slides.\n- **goToSlide(index: _number_, behavior: _ScrollBehavior_)** - Scrolls the carousel to the slide specified by `index`.\n\n### **Slots:**\n - _default_ - The carousel's main content, one or more `<ed-carousel-item>` elements.\n- **next-icon** - Optional next icon to use instead of the default. Works best with `<ed-icon>`.\n- **previous-icon** - Optional previous icon to use instead of the default. Works best with `<ed-icon>`.\n\n### **CSS Properties:**\n - **--aspect-ratio** - The aspect ratio of each slide. _(default: 16/9)_\n- **--scroll-hint** - The amount of padding to apply to the scroll area, allowing adjacent slides to become partially visible as a scroll hint. _(default: undefined)_\n- **--slide-gap** - The space between each slide. _(default: var(--ed-space-m))_\n\n### **CSS Parts:**\n - **base** - The carousel's internal wrapper.\n- **scroll-container** - The scroll container that wraps the slides.\n- **pagination** - The pagination indicators wrapper.\n- **pagination-item** - The pagination indicator.\n- **pagination-item-active** - Applied when the item is active.\n- **navigation** - The navigation wrapper.\n- **navigation-button** - The navigation button.\n- **navigation-button-previous** - Applied to the previous button.\n- **navigation-button-next** - Applied to the next button.",
          "doc-url": "",
          "attributes": [
            {
              "name": "loop",
              "description": "When set, allows the user to navigate the carousel in the same direction indefinitely.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "slides", "value": { "type": "number", "default": "0" } },
            {
              "name": "currentSlide",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "navigation",
              "description": "When set, show the carousel's navigation.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "pagination",
              "description": "When set, show the carousel's pagination indicators.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "paginationVariant",
              "value": { "type": "'dots' | 'buttons'", "default": "'dots'" }
            },
            {
              "name": "autoplay",
              "description": "When set, the slides will scroll automatically when the user is not interacting with them.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "autoplay-interval",
              "description": "Specifies the amount of time, in milliseconds, between each automatic scroll.",
              "value": { "type": "number", "default": "3000" }
            },
            {
              "name": "slides-per-page",
              "description": "Specifies how many slides should be shown at a given time.",
              "value": { "type": "number", "default": "1" }
            },
            {
              "name": "slides-per-move",
              "description": "Specifies the number of slides the carousel will advance when scrolling, useful when specifying a `slides-per-page`\ngreater than one. It can't be higher than `slides-per-page`.",
              "value": { "type": "number", "default": "1" }
            },
            {
              "name": "orientation",
              "description": "Specifies the orientation in which the carousel will lay out.",
              "value": {
                "type": "'horizontal' | 'vertical'",
                "default": "'horizontal'"
              }
            },
            {
              "name": "mouse-dragging",
              "description": "When set, it is possible to scroll through the slides by dragging them with the mouse.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "The carousel's main content, one or more `<ed-carousel-item>` elements."
            },
            {
              "name": "next-icon",
              "description": "Optional next icon to use instead of the default. Works best with `<ed-icon>`."
            },
            {
              "name": "previous-icon",
              "description": "Optional previous icon to use instead of the default. Works best with `<ed-icon>`."
            }
          ],
          "events": [
            {
              "name": "ed-slide-change",
              "type": "{ index: number, slide: EdCarouselItem }",
              "description": "Emitted when the active slide changes."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "loop",
                "description": "When set, allows the user to navigate the carousel in the same direction indefinitely.",
                "type": "boolean"
              },
              { "name": "slides", "type": "number" },
              { "name": "currentSlide", "type": "number" },
              {
                "name": "navigation",
                "description": "When set, show the carousel's navigation.",
                "type": "boolean"
              },
              {
                "name": "pagination",
                "description": "When set, show the carousel's pagination indicators.",
                "type": "boolean"
              },
              { "name": "paginationVariant", "type": "'dots' | 'buttons'" },
              {
                "name": "autoplay",
                "description": "When set, the slides will scroll automatically when the user is not interacting with them.",
                "type": "boolean"
              },
              {
                "name": "autoplayInterval",
                "description": "Specifies the amount of time, in milliseconds, between each automatic scroll.",
                "type": "number"
              },
              {
                "name": "slidesPerPage",
                "description": "Specifies how many slides should be shown at a given time.",
                "type": "number"
              },
              {
                "name": "slidesPerMove",
                "description": "Specifies the number of slides the carousel will advance when scrolling, useful when specifying a `slides-per-page`\ngreater than one. It can't be higher than `slides-per-page`.",
                "type": "number"
              },
              {
                "name": "orientation",
                "description": "Specifies the orientation in which the carousel will lay out.",
                "type": "'horizontal' | 'vertical'"
              },
              {
                "name": "mouseDragging",
                "description": "When set, it is possible to scroll through the slides by dragging them with the mouse.",
                "type": "boolean"
              },
              { "name": "scrollContainer", "type": "HTMLElement" },
              { "name": "paginationContainer", "type": "HTMLElement" },
              { "name": "activeSlide", "type": "number" },
              { "name": "scrolling", "type": "boolean" },
              { "name": "dragging", "type": "boolean" },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-slide-change",
                "type": "{ index: number, slide: EdCarouselItem }",
                "description": "Emitted when the active slide changes."
              }
            ]
          }
        },
        {
          "name": "ed-popup",
          "description": "Popup is a utility that lets you declaratively anchor \"popup\" containers to another element.\n---\n\n\n### **Events:**\n - **ed-reposition** - Emitted when the popup is repositioned. This event can fire a lot, so avoid putting expensive operations in your listener or consider debouncing it.\n\n### **Methods:**\n - **reposition()** - Forces the popup to recalculate and reposition itself.\n\n### **Slots:**\n - _default_ - The popup's content.\n- **anchor** - The element the popup will be anchored to. If the anchor lives outside the popup, you can use the `anchor` attribute or property instead.\n\n### **CSS Properties:**\n - **--arrow-size** - The size of the arrow. Note that an arrow won't be shown unless the `arrow` attribute is used. _(default: 6px)_\n- **--popup-border-width** - The width of any custom border applied to the popup. This is used to reposition the arrow to overlap to the inside edge of the popup border. _(default: undefined)_\n- **--arrow-color** - The color of the arrow. _(default: black)_\n- **--auto-size-available-width** - A read-only custom property that determines the amount of width the popup can be before overflowing. Useful for positioning child elements that need to overflow. This property is only available when using `auto-size`. _(default: undefined)_\n- **--auto-size-available-height** - A read-only custom property that determines the amount of height the popup can be before overflowing. Useful for positioning child elements that need to overflow. This property is only available when using `auto-size`. _(default: undefined)_\n- **--show-duration** - The show duration to use when applying built-in animation classes. _(default: 100ms)_\n- **--hide-duration** - The hide duration to use when applying built-in animation classes. _(default: 100ms)_\n\n### **CSS Parts:**\n - **arrow** - The arrow's container. Avoid setting `top|bottom|left|right` properties, as these values are assigned dynamically as the popup moves. This is most useful for applying a background color to match the popup, and maybe a border or box shadow.\n- **popup** - The popup's container. Useful for setting a background color, box shadow, etc.\n- **hover-bridge** - The hover bridge element. Only available when the `hover-bridge` option is enabled.",
          "doc-url": "",
          "attributes": [
            {
              "name": "anchor",
              "description": "The element the popup will be anchored to. If the anchor lives outside of the popup, you can provide the anchor\nelement `id`, a DOM element reference, or a `VirtualElement`. If the anchor lives inside the popup, use the\n`anchor` slot instead.",
              "value": { "type": "Element | string | VirtualElement" }
            },
            {
              "name": "active",
              "description": "Activates the positioning logic and shows the popup. When this attribute is removed, the positioning logic is torn\ndown and the popup will be hidden.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "placement",
              "description": "The preferred placement of the popup. Note that the actual placement will vary as configured to keep the\npanel inside of the viewport.",
              "value": {
                "type": "| 'top'\n    | 'top-start'\n    | 'top-end'\n    | 'bottom'\n    | 'bottom-start'\n    | 'bottom-end'\n    | 'right'\n    | 'right-start'\n    | 'right-end'\n    | 'left'\n    | 'left-start'\n    | 'left-end'",
                "default": "'top'"
              }
            },
            {
              "name": "boundary",
              "description": "The bounding box to use for flipping, shifting, and auto-sizing.",
              "value": {
                "type": "'viewport' | 'scroll'",
                "default": "'viewport'"
              }
            },
            {
              "name": "distance",
              "description": "The distance in pixels from which to offset the panel away from its anchor.",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "skidding",
              "description": "The distance in pixels from which to offset the panel along its anchor.",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "arrow",
              "description": "Attaches an arrow to the popup. The arrow's size and color can be customized using the `--arrow-size` and\n`--arrow-color` custom properties. For additional customizations, you can also target the arrow using\n`::part(arrow)` in your stylesheet.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "arrow-placement",
              "description": "The placement of the arrow. The default is `anchor`, which will align the arrow as close to the center of the\nanchor as possible, considering available space and `arrow-padding`. A value of `start`, `end`, or `center` will\nalign the arrow to the start, end, or center of the popover instead.",
              "value": {
                "type": "'start' | 'end' | 'center' | 'anchor'",
                "default": "'anchor'"
              }
            },
            {
              "name": "arrow-padding",
              "description": "The amount of padding between the arrow and the edges of the popup. If the popup has a border-radius, for example,\nthis will prevent it from overflowing the corners.",
              "value": { "type": "number", "default": "10" }
            },
            {
              "name": "flip",
              "description": "When set, placement of the popup will flip to the opposite site to keep it in view. You can use\n`flipFallbackPlacements` to further configure how the fallback placement is determined.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "flip-fallback-placements",
              "description": "If the preferred placement doesn't fit, popup will be tested in these fallback placements until one fits. Must be a\nstring of any number of placements separated by a space, e.g. \"top bottom left\". If no placement fits, the flip\nfallback strategy will be used instead.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "flip-fallback-strategy",
              "description": "When neither the preferred placement nor the fallback placements fit, this value will be used to determine whether\nthe popup should be positioned using the best available fit based on available space or as it was initially\npreferred.",
              "value": {
                "type": "'best-fit' | 'initial'",
                "default": "'best-fit'"
              }
            },
            {
              "name": "flipBoundary",
              "description": "The flip boundary describes clipping element(s) that overflow will be checked relative to when flipping. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.",
              "value": { "type": "Element | Element[]" }
            },
            {
              "name": "flip-padding",
              "description": "The amount of padding, in pixels, to exceed before the flip behavior will occur.",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "shift",
              "description": "Moves the popup along the axis to keep it in view when clipped.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "shiftBoundary",
              "description": "The shift boundary describes clipping element(s) that overflow will be checked relative to when shifting. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.",
              "value": { "type": "Element | Element[]" }
            },
            {
              "name": "shift-padding",
              "description": "The amount of padding, in pixels, to exceed before the shift behavior will occur.",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "auto-size",
              "description": "When set, this will cause the popup to automatically resize itself to prevent it from overflowing.",
              "value": { "type": "'horizontal' | 'vertical' | 'both'" }
            },
            {
              "name": "sync",
              "description": "Syncs the popup's width or height to that of the anchor element.",
              "value": { "type": "'width' | 'height' | 'both'" }
            },
            {
              "name": "autoSizeBoundary",
              "description": "The auto-size boundary describes clipping element(s) that overflow will be checked relative to when resizing. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.",
              "value": { "type": "Element | Element[]" }
            },
            {
              "name": "auto-size-padding",
              "description": "The amount of padding, in pixels, to exceed before the auto-size behavior will occur.",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "hover-bridge",
              "description": "When a gap exists between the anchor and the popup element, this option will add a \"hover bridge\" that fills the\ngap using an invisible element. This makes listening for events such as `mouseenter` and `mouseleave` more sane\nbecause the pointer never technically leaves the element. The hover bridge will only be drawn when the popover is\nactive.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            { "name": "", "description": "The popup's content." },
            {
              "name": "anchor",
              "description": "The element the popup will be anchored to. If the anchor lives outside the popup, you can use the `anchor` attribute or property instead."
            }
          ],
          "events": [
            {
              "name": "ed-reposition",
              "description": "Emitted when the popup is repositioned. This event can fire a lot, so avoid putting expensive operations in your listener or consider debouncing it."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "popup",
                "description": "A reference to the internal popup container. Useful for animating and styling the popup with JavaScript.",
                "type": "HTMLElement"
              },
              {
                "name": "anchor",
                "description": "The element the popup will be anchored to. If the anchor lives outside of the popup, you can provide the anchor\nelement `id`, a DOM element reference, or a `VirtualElement`. If the anchor lives inside the popup, use the\n`anchor` slot instead.",
                "type": "Element | string | VirtualElement"
              },
              {
                "name": "active",
                "description": "Activates the positioning logic and shows the popup. When this attribute is removed, the positioning logic is torn\ndown and the popup will be hidden.",
                "type": "boolean"
              },
              {
                "name": "placement",
                "description": "The preferred placement of the popup. Note that the actual placement will vary as configured to keep the\npanel inside of the viewport.",
                "type": "| 'top'\n    | 'top-start'\n    | 'top-end'\n    | 'bottom'\n    | 'bottom-start'\n    | 'bottom-end'\n    | 'right'\n    | 'right-start'\n    | 'right-end'\n    | 'left'\n    | 'left-start'\n    | 'left-end'"
              },
              {
                "name": "boundary",
                "description": "The bounding box to use for flipping, shifting, and auto-sizing.",
                "type": "'viewport' | 'scroll'"
              },
              {
                "name": "distance",
                "description": "The distance in pixels from which to offset the panel away from its anchor.",
                "type": "number"
              },
              {
                "name": "skidding",
                "description": "The distance in pixels from which to offset the panel along its anchor.",
                "type": "number"
              },
              {
                "name": "arrow",
                "description": "Attaches an arrow to the popup. The arrow's size and color can be customized using the `--arrow-size` and\n`--arrow-color` custom properties. For additional customizations, you can also target the arrow using\n`::part(arrow)` in your stylesheet.",
                "type": "boolean"
              },
              {
                "name": "arrowPlacement",
                "description": "The placement of the arrow. The default is `anchor`, which will align the arrow as close to the center of the\nanchor as possible, considering available space and `arrow-padding`. A value of `start`, `end`, or `center` will\nalign the arrow to the start, end, or center of the popover instead.",
                "type": "'start' | 'end' | 'center' | 'anchor'"
              },
              {
                "name": "arrowPadding",
                "description": "The amount of padding between the arrow and the edges of the popup. If the popup has a border-radius, for example,\nthis will prevent it from overflowing the corners.",
                "type": "number"
              },
              {
                "name": "flip",
                "description": "When set, placement of the popup will flip to the opposite site to keep it in view. You can use\n`flipFallbackPlacements` to further configure how the fallback placement is determined.",
                "type": "boolean"
              },
              {
                "name": "flipFallbackPlacements",
                "description": "If the preferred placement doesn't fit, popup will be tested in these fallback placements until one fits. Must be a\nstring of any number of placements separated by a space, e.g. \"top bottom left\". If no placement fits, the flip\nfallback strategy will be used instead.",
                "type": "string"
              },
              {
                "name": "flipFallbackStrategy",
                "description": "When neither the preferred placement nor the fallback placements fit, this value will be used to determine whether\nthe popup should be positioned using the best available fit based on available space or as it was initially\npreferred.",
                "type": "'best-fit' | 'initial'"
              },
              {
                "name": "flipBoundary",
                "description": "The flip boundary describes clipping element(s) that overflow will be checked relative to when flipping. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.",
                "type": "Element | Element[]"
              },
              {
                "name": "flipPadding",
                "description": "The amount of padding, in pixels, to exceed before the flip behavior will occur.",
                "type": "number"
              },
              {
                "name": "shift",
                "description": "Moves the popup along the axis to keep it in view when clipped.",
                "type": "boolean"
              },
              {
                "name": "shiftBoundary",
                "description": "The shift boundary describes clipping element(s) that overflow will be checked relative to when shifting. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.",
                "type": "Element | Element[]"
              },
              {
                "name": "shiftPadding",
                "description": "The amount of padding, in pixels, to exceed before the shift behavior will occur.",
                "type": "number"
              },
              {
                "name": "autoSize",
                "description": "When set, this will cause the popup to automatically resize itself to prevent it from overflowing.",
                "type": "'horizontal' | 'vertical' | 'both'"
              },
              {
                "name": "sync",
                "description": "Syncs the popup's width or height to that of the anchor element.",
                "type": "'width' | 'height' | 'both'"
              },
              {
                "name": "autoSizeBoundary",
                "description": "The auto-size boundary describes clipping element(s) that overflow will be checked relative to when resizing. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.",
                "type": "Element | Element[]"
              },
              {
                "name": "autoSizePadding",
                "description": "The amount of padding, in pixels, to exceed before the auto-size behavior will occur.",
                "type": "number"
              },
              {
                "name": "hoverBridge",
                "description": "When a gap exists between the anchor and the popup element, this option will add a \"hover bridge\" that fills the\ngap using an invisible element. This makes listening for events such as `mouseenter` and `mouseleave` more sane\nbecause the pointer never technically leaves the element. The hover bridge will only be drawn when the popover is\nactive.",
                "type": "boolean"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-reposition",
                "description": "Emitted when the popup is repositioned. This event can fire a lot, so avoid putting expensive operations in your listener or consider debouncing it."
              }
            ]
          }
        },
        {
          "name": "ed-select",
          "description": "Selects allow you to choose items from a menu of predefined options.\n---\n\n\n### **Events:**\n - **input** - Emitted when the control receives input.\n- **change** - Emitted when the control's value changes.\n- **focus** - Emitted when the control gains focus.\n- **blur** - Emitted when the control loses focus.\n- **ed-clear** - Emitted when the control's value is cleared.\n- **ed-show** - Emitted when the select's menu opens.\n- **ed-after-show** - Emitted after the select's menu opens and all animations are complete.\n- **ed-hide** - Emitted when the select's menu closes.\n- **ed-after-hide** - Emitted after the select's menu closes and all animations are complete.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **show()** - Shows the listbox.\n- **hide()** - Hides the listbox.\n- **focus(options: _FocusOptions_)** - Sets focus on the control.\n- **blur()** - Removes focus from the control.\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **formStateRestoreCallback(state: _string | File | FormData | null_, reason: _'autocomplete' | 'restore'_)** - Called when the browser is trying to restore element’s state to state in which case reason is \"restore\", or when\nthe browser is trying to fulfill autofill on behalf of user in which case reason is \"autocomplete\". In the case of\n\"restore\", state is a string, File, or FormData object previously set as the second argument to setFormValue.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n### **Slots:**\n - _default_ - The listbox options. Must be `<ed-option>` elements. You can use `<ed-divider>` to group items visually.\n- **label** - The input's label. Alternatively, you can use the `label` attribute.\n- **start** - An element, such as `<ed-icon>`, placed at the start of the combobox.\n- **end** - An element, such as `<ed-icon>`, placed at the end of the combobox.\n- **clear-icon** - An icon to use in lieu of the default clear icon.\n- **expand-icon** - The icon to show when the control is expanded and collapsed. Rotates on open and close.\n- **hint** - Text that describes how to use the input. Alternatively, you can use the `hint` attribute.\n\n### **CSS Properties:**\n - **--show-duration** - The duration of the show animation. _(default: 100ms)_\n- **--hide-duration** - The duration of the hide animation. _(default: 100ms)_\n- **--tag-max-size** - When using `multiple`, the max size of tags before their content is truncated. _(default: 10ch)_\n\n### **CSS Parts:**\n - **form-control** - The form control that wraps the label, input, and hint.\n- **form-control-label** - The label's wrapper.\n- **form-control-input** - The select's wrapper.\n- **hint** - The hint's wrapper.\n- **combobox** - The container the wraps the start, end, value, clear icon, and expand button.\n- **start** - The container that wraps the `start` slot.\n- **end** - The container that wraps the `end` slot.\n- **display-input** - The element that displays the selected option's label, an `<input>` element.\n- **listbox** - The listbox container where options are slotted.\n- **tags** - The container that houses option tags when `multiselect` is used.\n- **tag** - The individual tags that represent each multiselect option.\n- **tag__base** - The tag's base part.\n- **tag__content** - The tag's content part.\n- **tag__remove-button** - The tag's remove button.\n- **tag__remove-button__base** - The tag's remove button base part.\n- **clear-button** - The clear button.\n- **expand-icon** - The container that wraps the expand icon.",
          "doc-url": "",
          "attributes": [
            {
              "name": "name",
              "description": "The name of the select, submitted as a name/value pair with form data.",
              "value": { "type": "string | null", "default": "''" }
            },
            {
              "name": "value",
              "description": "The select's value. This will be a string for single select or an array for multi-select.",
              "value": { "type": "string" }
            },
            {
              "name": "density",
              "description": "Controls the component's spacing density without affecting font-size.",
              "value": {
                "type": "'compact' | 'default' | 'spacious'",
                "default": "'default'"
              }
            },
            {
              "name": "placeholder",
              "description": "Placeholder text to show as a hint when the select is empty.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "multiple",
              "description": "Allows more than one option to be selected.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "max-options-visible",
              "description": "The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\nindicate the number of additional items that are selected. Set to 0 to remove the limit.",
              "value": { "type": "number", "default": "3" }
            },
            {
              "name": "disabled",
              "description": "Disables the select control.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "readonly",
              "description": "Makes the select control readonly.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "with-clear",
              "description": "Adds a clear button when the select is not empty.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "open",
              "description": "Indicates whether or not the select is open. You can toggle this attribute to show and hide the menu, or you can\nuse the `show()` and `hide()` methods and this attribute will reflect the select's open state.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "pill",
              "description": "Draws a pill-style select with rounded edges.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "label",
              "description": "The select's label. If you need to display HTML, use the `label` slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "placement",
              "description": "The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\ninside of the viewport.",
              "value": { "type": "'top' | 'bottom'", "default": "'bottom'" }
            },
            {
              "name": "with-label",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element so the server-rendered markup includes the label before the component hydrates on the client.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "with-hint",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup includes the hint before the component hydrates on the client.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "required",
              "description": "The select's required attribute.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "error",
              "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "warning",
              "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "ai",
              "description": "Draws an ai-style input with AI colored border and icon.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "hint",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "The listbox options. Must be `<ed-option>` elements. You can use `<ed-divider>` to group items visually."
            },
            {
              "name": "label",
              "description": "The input's label. Alternatively, you can use the `label` attribute."
            },
            {
              "name": "start",
              "description": "An element, such as `<ed-icon>`, placed at the start of the combobox."
            },
            {
              "name": "end",
              "description": "An element, such as `<ed-icon>`, placed at the end of the combobox."
            },
            {
              "name": "clear-icon",
              "description": "An icon to use in lieu of the default clear icon."
            },
            {
              "name": "expand-icon",
              "description": "The icon to show when the control is expanded and collapsed. Rotates on open and close."
            },
            {
              "name": "hint",
              "description": "Text that describes how to use the input. Alternatively, you can use the `hint` attribute."
            }
          ],
          "events": [
            {
              "name": "input",
              "type": "InputEvent",
              "description": "Emitted when the control receives input."
            },
            {
              "name": "change",
              "type": "Event",
              "description": "Emitted when the control's value changes."
            },
            {
              "name": "focus",
              "description": "Emitted when the control gains focus."
            },
            {
              "name": "blur",
              "description": "Emitted when the control loses focus."
            },
            {
              "name": "ed-clear",
              "description": "Emitted when the control's value is cleared."
            },
            {
              "name": "ed-show",
              "description": "Emitted when the select's menu opens."
            },
            {
              "name": "ed-after-show",
              "description": "Emitted after the select's menu opens and all animations are complete."
            },
            {
              "name": "ed-hide",
              "description": "Emitted when the select's menu closes."
            },
            {
              "name": "ed-after-hide",
              "description": "Emitted after the select's menu closes and all animations are complete."
            },
            {
              "name": "ed-invalid",
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied."
            }
          ],
          "js": {
            "properties": [
              { "name": "assumeInteractionOn", "type": "string[]" },
              { "name": "popup", "type": "EdPopup" },
              { "name": "combobox", "type": "HTMLSlotElement" },
              { "name": "displayInput", "type": "HTMLInputElement" },
              { "name": "valueInput", "type": "HTMLInputElement" },
              { "name": "listbox", "type": "HTMLSlotElement" },
              {
                "name": "validationTarget",
                "description": "Where to anchor native constraint validation",
                "type": "undefined | HTMLElement"
              },
              { "name": "displayLabel", "type": "string" },
              { "name": "currentOption", "type": "EdOption" },
              { "name": "selectedOptions", "type": "EdOption[]" },
              {
                "name": "name",
                "description": "The name of the select, submitted as a name/value pair with form data.",
                "type": "string | null"
              },
              { "name": "defaultValue" },
              {
                "name": "value",
                "description": "The select's value. This will be a string for single select or an array for multi-select."
              },
              {
                "name": "density",
                "description": "Controls the component's spacing density without affecting font-size.",
                "type": "'compact' | 'default' | 'spacious'"
              },
              {
                "name": "placeholder",
                "description": "Placeholder text to show as a hint when the select is empty.",
                "type": "string"
              },
              {
                "name": "multiple",
                "description": "Allows more than one option to be selected.",
                "type": "boolean"
              },
              {
                "name": "maxOptionsVisible",
                "description": "The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\nindicate the number of additional items that are selected. Set to 0 to remove the limit.",
                "type": "number"
              },
              {
                "name": "disabled",
                "description": "Disables the select control.",
                "type": "boolean"
              },
              {
                "name": "readonly",
                "description": "Makes the select control readonly.",
                "type": "boolean"
              },
              {
                "name": "withClear",
                "description": "Adds a clear button when the select is not empty.",
                "type": "boolean"
              },
              {
                "name": "open",
                "description": "Indicates whether or not the select is open. You can toggle this attribute to show and hide the menu, or you can\nuse the `show()` and `hide()` methods and this attribute will reflect the select's open state.",
                "type": "boolean"
              },
              {
                "name": "pill",
                "description": "Draws a pill-style select with rounded edges.",
                "type": "boolean"
              },
              {
                "name": "label",
                "description": "The select's label. If you need to display HTML, use the `label` slot instead.",
                "type": "string"
              },
              {
                "name": "placement",
                "description": "The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\ninside of the viewport.",
                "type": "'top' | 'bottom'"
              },
              {
                "name": "withLabel",
                "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element so the server-rendered markup includes the label before the component hydrates on the client.",
                "type": "boolean"
              },
              {
                "name": "withHint",
                "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup includes the hint before the component hydrates on the client.",
                "type": "boolean"
              },
              {
                "name": "required",
                "description": "The select's required attribute.",
                "type": "boolean"
              },
              {
                "name": "getTag",
                "description": "A function that customizes the tags to be rendered when multiple=true. The first argument is the option, the second\nis the current tag's index.  The function should return either a Lit TemplateResult or a string containing trusted\nHTML of the symbol to render at the specified value.",
                "type": "(option: EdOption, index: number) => TemplateResult | string | HTMLElement"
              },
              {
                "name": "error",
                "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
                "type": "string | null"
              },
              {
                "name": "warning",
                "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
                "type": "string | null"
              },
              {
                "name": "ai",
                "description": "Draws an ai-style input with AI colored border and icon.",
                "type": "boolean"
              },
              {
                "name": "hint",
                "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
                "type": "string"
              },
              {
                "name": "assumeInteractionOnMode",
                "type": "'combined' | 'separated' | string"
              },
              {
                "name": "input",
                "type": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              { "name": "valueHasChanged", "type": "boolean" },
              { "name": "hasInteracted", "type": "boolean" },
              { "name": "states", "type": "CustomStateSet" },
              { "name": "emitInvalid" },
              { "name": "labels" },
              {
                "name": "form",
                "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
                "type": "HTMLFormElement | null"
              },
              { "name": "validity" },
              { "name": "willValidate" },
              { "name": "validationMessage" },
              { "name": "allValidators" },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "input",
                "type": "InputEvent",
                "description": "Emitted when the control receives input."
              },
              {
                "name": "change",
                "type": "Event",
                "description": "Emitted when the control's value changes."
              },
              {
                "name": "focus",
                "description": "Emitted when the control gains focus."
              },
              {
                "name": "blur",
                "description": "Emitted when the control loses focus."
              },
              {
                "name": "ed-clear",
                "description": "Emitted when the control's value is cleared."
              },
              {
                "name": "ed-show",
                "description": "Emitted when the select's menu opens."
              },
              {
                "name": "ed-after-show",
                "description": "Emitted after the select's menu opens and all animations are complete."
              },
              {
                "name": "ed-hide",
                "description": "Emitted when the select's menu closes."
              },
              {
                "name": "ed-after-hide",
                "description": "Emitted after the select's menu closes and all animations are complete."
              },
              {
                "name": "ed-invalid",
                "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied."
              }
            ]
          }
        },
        {
          "name": "ed-option",
          "description": "Options define the selectable items within a select component.\n---\n\n\n### **Slots:**\n - _default_ - The option's label.\n- **start** - An element, such as `<ed-icon>`, placed before the label.\n- **end** - An element, such as `<ed-icon>`, placed after the label.\n\n### **CSS Parts:**\n - **checked-icon** - The checked icon, a `<ed-icon>` element.\n- **label** - The option's label.\n- **start** - The container that wraps the `start` slot.\n- **end** - The container that wraps the `end` slot.",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "The option's value. When selected, the containing form control will receive this value. The value must be unique\nfrom other options in the same group. Values may not contain spaces, as spaces are used as delimiters when listing\nmultiple values.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "disabled",
              "description": "Draws the option in a disabled state, preventing selection.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "selected",
              "description": "Selects an option initially.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "label",
              "description": "The option’s plain text label.\nUsually automatically generated, but can be useful to provide manually for cases involving complex content.",
              "value": { "type": "string" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            { "name": "", "description": "The option's label." },
            {
              "name": "start",
              "description": "An element, such as `<ed-icon>`, placed before the label."
            },
            {
              "name": "end",
              "description": "An element, such as `<ed-icon>`, placed after the label."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              { "name": "defaultSlot", "type": "HTMLSlotElement" },
              { "name": "current", "type": "boolean" },
              {
                "name": "value",
                "description": "The option's value. When selected, the containing form control will receive this value. The value must be unique\nfrom other options in the same group. Values may not contain spaces, as spaces are used as delimiters when listing\nmultiple values.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Draws the option in a disabled state, preventing selection.",
                "type": "boolean"
              },
              {
                "name": "defaultSelected",
                "description": "Selects an option initially.",
                "type": "boolean"
              },
              { "name": "_label", "type": "string" },
              {
                "name": "label",
                "description": "The option’s plain text label.\nUsually automatically generated, but can be useful to provide manually for cases involving complex content.",
                "type": "string"
              },
              {
                "name": "defaultLabel",
                "description": "The default label, generated from the element contents. Will be equal to `label` in most cases.",
                "type": "string"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-combobox",
          "description": "Comboboxes combine a text input with a listbox, allowing users to filter and select from predefined options or enter custom values.\n---\n\n\n### **Events:**\n - **input** - Emitted when the control receives input.\n- **change** - Emitted when the control's value changes.\n- **focus** - Emitted when the control gains focus.\n- **blur** - Emitted when the control loses focus.\n- **ed-clear** - Emitted when the control's value is cleared.\n- **ed-show** - Emitted when the select's menu opens.\n- **ed-after-show** - Emitted after the select's menu opens and all animations are complete.\n- **ed-hide** - Emitted when the select's menu closes.\n- **ed-after-hide** - Emitted after the select's menu closes and all animations are complete.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **show()** - Shows the listbox.\n- **hide()** - Hides the listbox.\n- **focus(options: _FocusOptions_)** - Sets focus on the control.\n- **blur()** - Removes focus from the control.\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **formStateRestoreCallback(state: _string | File | FormData | null_, reason: _'autocomplete' | 'restore'_)** - Called when the browser is trying to restore element’s state to state in which case reason is \"restore\", or when\nthe browser is trying to fulfill autofill on behalf of user in which case reason is \"autocomplete\". In the case of\n\"restore\", state is a string, File, or FormData object previously set as the second argument to setFormValue.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n### **Slots:**\n - _default_ - The listbox options. Must be `<ed-option>` elements. You can use `<ed-divider>` to group items visually.\n- **label** - The input's label. Alternatively, you can use the `label` attribute.\n- **start** - An element, such as `<ed-icon>`, placed at the start of the combobox.\n- **end** - An element, such as `<ed-icon>`, placed at the end of the combobox.\n- **clear-icon** - An icon to use in lieu of the default clear icon.\n- **expand-icon** - The icon to show when the control is expanded and collapsed. Rotates on open and close.\n- **hint** - Text that describes how to use the input. Alternatively, you can use the `hint` attribute.\n\n### **CSS Properties:**\n - **--show-duration** - The duration of the show animation. _(default: 100ms)_\n- **--hide-duration** - The duration of the hide animation. _(default: 100ms)_\n- **--tag-max-size** - When using `multiple`, the max size of tags before their content is truncated. _(default: 10ch)_\n\n### **CSS Parts:**\n - **form-control** - The form control that wraps the label, input, and hint.\n- **form-control-label** - The label's wrapper.\n- **form-control-input** - The select's wrapper.\n- **hint** - The hint's wrapper.\n- **combobox** - The container the wraps the start, end, value, clear icon, and expand button.\n- **start** - The container that wraps the `start` slot.\n- **end** - The container that wraps the `end` slot.\n- **display-input** - The element that displays the selected option's label, an `<input>` element.\n- **listbox** - The listbox container where options are slotted.\n- **tags** - The container that houses option tags when `multiselect` is used.\n- **tag** - The individual tags that represent each multiselect option.\n- **tag__content** - The tag's content part.\n- **tag__remove-button** - The tag's remove button.\n- **tag__remove-button__base** - The tag's remove button base part.\n- **clear-button** - The clear button.\n- **expand-icon** - The container that wraps the expand icon.",
          "doc-url": "",
          "attributes": [
            {
              "name": "name",
              "description": "The name of the select, submitted as a name/value pair with form data.",
              "value": { "type": "string | null", "default": "''" }
            },
            {
              "name": "value",
              "description": "The select's value. This will be a string for single select or an array for multi-select.",
              "value": { "type": "string" }
            },
            {
              "name": "density",
              "description": "Controls the component's spacing density without affecting font-size.",
              "value": {
                "type": "'compact' | 'default' | 'spacious'",
                "default": "'default'"
              }
            },
            {
              "name": "placeholder",
              "description": "Placeholder text to show as a hint when the select is empty.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "multiple",
              "description": "Allows more than one option to be selected.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "max-options-visible",
              "description": "The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\nindicate the number of additional items that are selected. Set to 0 to remove the limit.",
              "value": { "type": "number", "default": "3" }
            },
            {
              "name": "disabled",
              "description": "Disables the select control.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "readonly",
              "description": "Disables the select control.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "with-clear",
              "description": "Adds a clear button when the select is not empty.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "open",
              "description": "Indicates whether or not the select is open. You can toggle this attribute to show and hide the menu, or you can\nuse the `show()` and `hide()` methods and this attribute will reflect the select's open state.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "pill",
              "description": "Draws a pill-style select with rounded edges.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "label",
              "description": "The select's label. If you need to display HTML, use the `label` slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "placement",
              "description": "The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\ninside of the viewport.",
              "value": { "type": "'top' | 'bottom'", "default": "'bottom'" }
            },
            {
              "name": "with-label",
              "description": "Used for SSR purposes when a label is slotted in. Will show the label on first render.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "with-hint",
              "description": "Used for SSR purposes when hint is slotted in. Will show the hint on first render.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "required",
              "description": "The select's required attribute.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "allowCustomValue",
              "description": "When true, allows the user to enter a value that doesn't match any of the options. Only applies to single-select comboboxes. When false, the combobox will only accept values that match an option.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "autocomplete",
              "description": "The autocomplete behavior of the combobox. - list: When the popup is triggered, it presents suggested values that complete or logically correspond to the characters typed in the combobox. The character string the user has typed will become the value of the combobox unless the user selects a value in the popup. - none: The combobox is editable, and when the popup is triggered, the suggested values it contains are the same regardless of the characters typed in the combobox.",
              "value": { "type": "'both' | 'none'", "default": "'both'" }
            },
            {
              "name": "inputValue",
              "description": "The current text value in the input field.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "error",
              "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "warning",
              "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "ai",
              "description": "Draws an ai-style input with AI colored border and icon.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "hint",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "The listbox options. Must be `<ed-option>` elements. You can use `<ed-divider>` to group items visually."
            },
            {
              "name": "label",
              "description": "The input's label. Alternatively, you can use the `label` attribute."
            },
            {
              "name": "start",
              "description": "An element, such as `<ed-icon>`, placed at the start of the combobox."
            },
            {
              "name": "end",
              "description": "An element, such as `<ed-icon>`, placed at the end of the combobox."
            },
            {
              "name": "clear-icon",
              "description": "An icon to use in lieu of the default clear icon."
            },
            {
              "name": "expand-icon",
              "description": "The icon to show when the control is expanded and collapsed. Rotates on open and close."
            },
            {
              "name": "hint",
              "description": "Text that describes how to use the input. Alternatively, you can use the `hint` attribute."
            }
          ],
          "events": [
            {
              "name": "input",
              "type": "InputEvent",
              "description": "Emitted when the control receives input."
            },
            {
              "name": "change",
              "type": "Event",
              "description": "Emitted when the control's value changes."
            },
            {
              "name": "focus",
              "description": "Emitted when the control gains focus."
            },
            {
              "name": "blur",
              "description": "Emitted when the control loses focus."
            },
            {
              "name": "ed-clear",
              "description": "Emitted when the control's value is cleared."
            },
            {
              "name": "ed-show",
              "description": "Emitted when the select's menu opens."
            },
            {
              "name": "ed-after-show",
              "description": "Emitted after the select's menu opens and all animations are complete."
            },
            {
              "name": "ed-hide",
              "description": "Emitted when the select's menu closes."
            },
            {
              "name": "ed-after-hide",
              "description": "Emitted after the select's menu closes and all animations are complete."
            },
            {
              "name": "ed-invalid",
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied."
            }
          ],
          "js": {
            "properties": [
              { "name": "assumeInteractionOn", "type": "string[]" },
              { "name": "popup", "type": "EdPopup" },
              { "name": "combobox", "type": "HTMLSlotElement" },
              { "name": "displayInput", "type": "HTMLInputElement" },
              { "name": "valueInput", "type": "HTMLInputElement" },
              { "name": "listbox", "type": "HTMLSlotElement" },
              { "name": "liveRegion", "type": "HTMLDivElement" },
              {
                "name": "validationTarget",
                "description": "Where to anchor native constraint validation",
                "type": "undefined | HTMLElement"
              },
              { "name": "comboboxLabel", "type": "string" },
              { "name": "currentOption", "type": "EdOption" },
              { "name": "selectedOptions", "type": "EdOption[]" },
              { "name": "filteredOptions", "type": "EdOption[]" },
              {
                "name": "optionValues",
                "type": "Set<string | null> | undefined"
              },
              {
                "name": "name",
                "description": "The name of the select, submitted as a name/value pair with form data.",
                "type": "string | null"
              },
              {
                "name": "value",
                "description": "The select's value. This will be a string for single select or an array for multi-select."
              },
              { "name": "defaultValue" },
              {
                "name": "density",
                "description": "Controls the component's spacing density without affecting font-size.",
                "type": "'compact' | 'default' | 'spacious'"
              },
              {
                "name": "placeholder",
                "description": "Placeholder text to show as a hint when the select is empty.",
                "type": "string"
              },
              {
                "name": "multiple",
                "description": "Allows more than one option to be selected.",
                "type": "boolean"
              },
              {
                "name": "maxOptionsVisible",
                "description": "The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\nindicate the number of additional items that are selected. Set to 0 to remove the limit.",
                "type": "number"
              },
              {
                "name": "disabled",
                "description": "Disables the select control.",
                "type": "boolean"
              },
              {
                "name": "readonly",
                "description": "Disables the select control.",
                "type": "boolean"
              },
              {
                "name": "withClear",
                "description": "Adds a clear button when the select is not empty.",
                "type": "boolean"
              },
              {
                "name": "open",
                "description": "Indicates whether or not the select is open. You can toggle this attribute to show and hide the menu, or you can\nuse the `show()` and `hide()` methods and this attribute will reflect the select's open state.",
                "type": "boolean"
              },
              {
                "name": "pill",
                "description": "Draws a pill-style select with rounded edges.",
                "type": "boolean"
              },
              {
                "name": "label",
                "description": "The select's label. If you need to display HTML, use the `label` slot instead.",
                "type": "string"
              },
              {
                "name": "placement",
                "description": "The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\ninside of the viewport.",
                "type": "'top' | 'bottom'"
              },
              {
                "name": "withLabel",
                "description": "Used for SSR purposes when a label is slotted in. Will show the label on first render.",
                "type": "boolean"
              },
              {
                "name": "withHint",
                "description": "Used for SSR purposes when hint is slotted in. Will show the hint on first render.",
                "type": "boolean"
              },
              {
                "name": "required",
                "description": "The select's required attribute.",
                "type": "boolean"
              },
              {
                "name": "allowCustomValue",
                "description": "When true, allows the user to enter a value that doesn't match any of the options. Only applies to single-select comboboxes. When false, the combobox will only accept values that match an option.",
                "type": "boolean"
              },
              {
                "name": "autocomplete",
                "description": "The autocomplete behavior of the combobox. - list: When the popup is triggered, it presents suggested values that complete or logically correspond to the characters typed in the combobox. The character string the user has typed will become the value of the combobox unless the user selects a value in the popup. - none: The combobox is editable, and when the popup is triggered, the suggested values it contains are the same regardless of the characters typed in the combobox.",
                "type": "'both' | 'none'"
              },
              {
                "name": "inputValue",
                "description": "The current text value in the input field.",
                "type": "string"
              },
              {
                "name": "filter",
                "description": "A function that customizes how options are filtered based on the input value. The function receives the option and the current input query string. Return true to include the option in the filtered list, false to exclude. By default, options are filtered by checking if the option's label contains the query (case-insensitive).",
                "type": "((option: EdOption, query: string) => boolean) | null"
              },
              {
                "name": "getTag",
                "description": "A function that customizes the tags to be rendered when multiple=true. The first argument is the option, the second\nis the current tag's index.  The function should return either a Lit TemplateResult or a string containing trusted\nHTML of the symbol to render at the specified value.",
                "type": "(option: EdOption, index: number) => TemplateResult | string | HTMLElement"
              },
              {
                "name": "error",
                "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
                "type": "string | null"
              },
              {
                "name": "warning",
                "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
                "type": "string | null"
              },
              {
                "name": "ai",
                "description": "Draws an ai-style input with AI colored border and icon.",
                "type": "boolean"
              },
              {
                "name": "hint",
                "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
                "type": "string"
              },
              {
                "name": "assumeInteractionOnMode",
                "type": "'combined' | 'separated' | string"
              },
              {
                "name": "input",
                "type": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              { "name": "valueHasChanged", "type": "boolean" },
              { "name": "hasInteracted", "type": "boolean" },
              { "name": "states", "type": "CustomStateSet" },
              { "name": "emitInvalid" },
              { "name": "labels" },
              {
                "name": "form",
                "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
                "type": "HTMLFormElement | null"
              },
              { "name": "validity" },
              { "name": "willValidate" },
              { "name": "validationMessage" },
              { "name": "allValidators" },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "input",
                "type": "InputEvent",
                "description": "Emitted when the control receives input."
              },
              {
                "name": "change",
                "type": "Event",
                "description": "Emitted when the control's value changes."
              },
              {
                "name": "focus",
                "description": "Emitted when the control gains focus."
              },
              {
                "name": "blur",
                "description": "Emitted when the control loses focus."
              },
              {
                "name": "ed-clear",
                "description": "Emitted when the control's value is cleared."
              },
              {
                "name": "ed-show",
                "description": "Emitted when the select's menu opens."
              },
              {
                "name": "ed-after-show",
                "description": "Emitted after the select's menu opens and all animations are complete."
              },
              {
                "name": "ed-hide",
                "description": "Emitted when the select's menu closes."
              },
              {
                "name": "ed-after-hide",
                "description": "Emitted after the select's menu closes and all animations are complete."
              },
              {
                "name": "ed-invalid",
                "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied."
              }
            ]
          }
        },
        {
          "name": "ed-tooltip",
          "description": "Tooltips display additional information based on a specific action.\n---\n\n\n### **Events:**\n - **ed-show** - Emitted when the tooltip begins to show.\n- **ed-after-show** - Emitted after the tooltip has shown and all animations are complete.\n- **ed-hide** - Emitted when the tooltip begins to hide.\n- **ed-after-hide** - Emitted after the tooltip has hidden and all animations are complete.\n\n### **Methods:**\n - **show()** - Shows the tooltip.\n- **hide()** - Hides the tooltip\n\n### **Slots:**\n - _default_ - The tooltip's default slot where any content should live. Interactive content should be avoided.\n\n### **CSS Properties:**\n - **--max-width** - The maximum width of the tooltip before its content will wrap. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper, an `<ed-popup>` element.\n- **base__popup** - The popup's exported `popup` part. Use this to target the tooltip's popup container.\n- **base__arrow** - The popup's exported `arrow` part. Use this to target the tooltip's arrow.\n- **body** - The tooltip's body where its content is rendered.",
          "doc-url": "",
          "attributes": [
            {
              "name": "placement",
              "description": "The preferred placement of the tooltip. Note that the actual placement may vary as needed to keep the tooltip\ninside of the viewport.",
              "value": {
                "type": "| 'top'\n    | 'top-start'\n    | 'top-end'\n    | 'right'\n    | 'right-start'\n    | 'right-end'\n    | 'bottom'\n    | 'bottom-start'\n    | 'bottom-end'\n    | 'left'\n    | 'left-start'\n    | 'left-end'",
                "default": "'top'"
              }
            },
            {
              "name": "disabled",
              "description": "Disables the tooltip so it won't show when triggered.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "distance",
              "description": "The distance in pixels from which to offset the tooltip away from its target.",
              "value": { "type": "number", "default": "8" }
            },
            {
              "name": "open",
              "description": "Indicates whether or not the tooltip is open. You can use this in lieu of the show/hide methods.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "skidding",
              "description": "The distance in pixels from which to offset the tooltip along its target.",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "show-delay",
              "description": "The amount of time to wait before showing the tooltip when the user mouses in.",
              "value": { "type": "number", "default": "150" }
            },
            {
              "name": "hide-delay",
              "description": "The amount of time to wait before hiding the tooltip when the user mouses out.",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "trigger",
              "description": "Controls how the tooltip is activated. Possible options include `click`, `hover`, `focus`, and `manual`. Multiple\noptions can be passed by separating them with a space. When manual is used, the tooltip must be activated\nprogrammatically.",
              "value": { "type": "string", "default": "'hover focus'" }
            },
            {
              "name": "without-arrow",
              "description": "Removes the arrow from the tooltip.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "for",
              "value": { "type": "string | null", "default": "null" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "The tooltip's default slot where any content should live. Interactive content should be avoided."
            }
          ],
          "events": [
            {
              "name": "ed-show",
              "description": "Emitted when the tooltip begins to show."
            },
            {
              "name": "ed-after-show",
              "description": "Emitted after the tooltip has shown and all animations are complete."
            },
            {
              "name": "ed-hide",
              "description": "Emitted when the tooltip begins to hide."
            },
            {
              "name": "ed-after-hide",
              "description": "Emitted after the tooltip has hidden and all animations are complete."
            }
          ],
          "js": {
            "properties": [
              { "name": "defaultSlot", "type": "HTMLSlotElement" },
              { "name": "body", "type": "HTMLElement" },
              { "name": "popup", "type": "EdPopup" },
              {
                "name": "placement",
                "description": "The preferred placement of the tooltip. Note that the actual placement may vary as needed to keep the tooltip\ninside of the viewport.",
                "type": "| 'top'\n    | 'top-start'\n    | 'top-end'\n    | 'right'\n    | 'right-start'\n    | 'right-end'\n    | 'bottom'\n    | 'bottom-start'\n    | 'bottom-end'\n    | 'left'\n    | 'left-start'\n    | 'left-end'"
              },
              {
                "name": "disabled",
                "description": "Disables the tooltip so it won't show when triggered.",
                "type": "boolean"
              },
              {
                "name": "distance",
                "description": "The distance in pixels from which to offset the tooltip away from its target.",
                "type": "number"
              },
              {
                "name": "open",
                "description": "Indicates whether or not the tooltip is open. You can use this in lieu of the show/hide methods.",
                "type": "boolean"
              },
              {
                "name": "skidding",
                "description": "The distance in pixels from which to offset the tooltip along its target.",
                "type": "number"
              },
              {
                "name": "showDelay",
                "description": "The amount of time to wait before showing the tooltip when the user mouses in.",
                "type": "number"
              },
              {
                "name": "hideDelay",
                "description": "The amount of time to wait before hiding the tooltip when the user mouses out.",
                "type": "number"
              },
              {
                "name": "trigger",
                "description": "Controls how the tooltip is activated. Possible options include `click`, `hover`, `focus`, and `manual`. Multiple\noptions can be passed by separating them with a space. When manual is used, the tooltip must be activated\nprogrammatically.",
                "type": "string"
              },
              {
                "name": "withoutArrow",
                "description": "Removes the arrow from the tooltip.",
                "type": "boolean"
              },
              { "name": "for", "type": "string | null" },
              { "name": "anchor", "type": "null | Element" },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-show",
                "description": "Emitted when the tooltip begins to show."
              },
              {
                "name": "ed-after-show",
                "description": "Emitted after the tooltip has shown and all animations are complete."
              },
              {
                "name": "ed-hide",
                "description": "Emitted when the tooltip begins to hide."
              },
              {
                "name": "ed-after-hide",
                "description": "Emitted after the tooltip has hidden and all animations are complete."
              }
            ]
          }
        },
        {
          "name": "ed-copy-button",
          "description": "Copies text data to the clipboard when the user clicks the trigger.\n---\n\n\n### **Events:**\n - **ed-copy** - Emitted when the data has been copied.\n- **ed-error** - Emitted when the data could not be copied.\n\n### **Slots:**\n - _default_ - The trigger element. By default, a copy icon button is rendered so this is optional. If desired, you can slot in a custom element such as `<wa-button>` or `<button>`.\n- **copy-icon** - The icon to show in the default copy state. Works best with `<ed-icon>`.\n- **success-icon** - The icon to show when the content is copied. Works best with `<ed-icon>`.\n- **error-icon** - The icon to show when a copy error occurs. Works best with `<ed-icon>`.\n\n### **CSS Parts:**\n - **button** - The internal `<button>` element.\n- **copy-icon** - The container that holds the copy icon.\n- **success-icon** - The container that holds the success icon.\n- **error-icon** - The container that holds the error icon.\n- **tooltip__base** - The tooltip's exported `base` part.\n- **tooltip__base__popup** - The tooltip's exported `popup` part.\n- **tooltip__base__arrow** - The tooltip's exported `arrow` part.\n- **tooltip__body** - The tooltip's exported `body` part.",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "The text value to copy.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "from",
              "description": "An id that references an element in the same document from which data will be copied. If both this and `value` are\npresent, this value will take precedence. By default, the target element's `textContent` will be copied. To copy an\nattribute, append the attribute name wrapped in square brackets, e.g. `from=\"el[value]\"`. To copy a property,\nappend a dot and the property name, e.g. `from=\"el.value\"`.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "disabled",
              "description": "Disables the copy button.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "copy-label",
              "description": "A custom label to show in the tooltip.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "success-label",
              "description": "A custom label to show in the tooltip after copying.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "error-label",
              "description": "A custom label to show in the tooltip when a copy error occurs.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "feedback-duration",
              "description": "The length of time to show feedback before restoring the default trigger.",
              "value": { "type": "number", "default": "1000" }
            },
            {
              "name": "tooltip-placement",
              "description": "The preferred placement of the tooltip.",
              "value": {
                "type": "'top' | 'right' | 'bottom' | 'left'",
                "default": "'top'"
              }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "The trigger element. By default, a copy icon button is rendered so this is optional. If desired, you can slot in a custom element such as `<wa-button>` or `<button>`."
            },
            {
              "name": "copy-icon",
              "description": "The icon to show in the default copy state. Works best with `<ed-icon>`."
            },
            {
              "name": "success-icon",
              "description": "The icon to show when the content is copied. Works best with `<ed-icon>`."
            },
            {
              "name": "error-icon",
              "description": "The icon to show when a copy error occurs. Works best with `<ed-icon>`."
            }
          ],
          "events": [
            {
              "name": "ed-copy",
              "description": "Emitted when the data has been copied."
            },
            {
              "name": "ed-error",
              "description": "Emitted when the data could not be copied."
            }
          ],
          "js": {
            "properties": [
              { "name": "copyIcon", "type": "HTMLSlotElement" },
              { "name": "successIcon", "type": "HTMLSlotElement" },
              { "name": "errorIcon", "type": "HTMLSlotElement" },
              { "name": "tooltip", "type": "EdTooltip" },
              { "name": "isCopying", "type": "boolean" },
              { "name": "status", "type": "'rest' | 'success' | 'error'" },
              {
                "name": "value",
                "description": "The text value to copy.",
                "type": "string"
              },
              {
                "name": "from",
                "description": "An id that references an element in the same document from which data will be copied. If both this and `value` are\npresent, this value will take precedence. By default, the target element's `textContent` will be copied. To copy an\nattribute, append the attribute name wrapped in square brackets, e.g. `from=\"el[value]\"`. To copy a property,\nappend a dot and the property name, e.g. `from=\"el.value\"`.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables the copy button.",
                "type": "boolean"
              },
              {
                "name": "copyLabel",
                "description": "A custom label to show in the tooltip.",
                "type": "string"
              },
              {
                "name": "successLabel",
                "description": "A custom label to show in the tooltip after copying.",
                "type": "string"
              },
              {
                "name": "errorLabel",
                "description": "A custom label to show in the tooltip when a copy error occurs.",
                "type": "string"
              },
              {
                "name": "feedbackDuration",
                "description": "The length of time to show feedback before restoring the default trigger.",
                "type": "number"
              },
              {
                "name": "tooltipPlacement",
                "description": "The preferred placement of the tooltip.",
                "type": "'top' | 'right' | 'bottom' | 'left'"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-copy",
                "description": "Emitted when the data has been copied."
              },
              {
                "name": "ed-error",
                "description": "Emitted when the data could not be copied."
              }
            ]
          }
        },
        {
          "name": "ed-number-input",
          "description": "Number inputs allow users to enter and edit numeric values with optional stepper buttons.\n---\n\n\n### **Events:**\n - **input** - Emitted when the control receives input.\n- **change** - Emitted when an alteration to the control's value is committed by the user.\n- **blur** - Emitted when the control loses focus.\n- **beforeinput** - Emitted from a stepper button before the value changes. Call `event.preventDefault()` to cancel the change.\n- **focus** - Emitted when the control gains focus.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **focus(options: _FocusOptions_)** - Sets focus on the input.\n- **blur()** - Removes focus from the input.\n- **select()** - Selects all the text in the input.\n- **stepUp()** - Increments the value by the step amount.\n- **stepDown()** - Decrements the value by the step amount.\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **formStateRestoreCallback(state: _string | File | FormData | null_, reason: _'autocomplete' | 'restore'_)** - Called when the browser is trying to restore element’s state to state in which case reason is \"restore\", or when\nthe browser is trying to fulfill autofill on behalf of user in which case reason is \"autocomplete\". In the case of\n\"restore\", state is a string, File, or FormData object previously set as the second argument to setFormValue.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n### **Slots:**\n - **label** - The input's label. Alternatively, you can use the `label` attribute.\n- **start** - An element, such as `<ed-icon>`, placed at the start of the input control.\n- **end** - An element, such as `<ed-icon>`, placed at the end of the input control (before steppers).\n- **increment-icon** - An icon to use in lieu of the default increment icon.\n- **decrement-icon** - An icon to use in lieu of the default decrement icon.\n- **hint** - Text that describes how to use the input. Alternatively, you can use the `hint` attribute.\n\n### **CSS Properties:**\n - **--width** - Sets a fixed width for the input field _(default: undefined)_\n\n### **CSS Parts:**\n - **label** - The label element.\n- **form-control-label** - Alias for the label element.\n- **hint** - The hint element.\n- **base** - The wrapper containing the input and steppers.\n- **input** - The internal `<input>` control.\n- **start** - The container that wraps the `start` slot.\n- **end** - The container that wraps the `end` slot.\n- **stepper** - Both stepper buttons (for shared styling).\n- **stepper-increment** - The increment (+) button on the end side.\n- **stepper-decrement** - The decrement (-) button on the start side.",
          "doc-url": "",
          "attributes": [
            { "name": "title", "value": { "type": "string", "default": "''" } },
            {
              "name": "value",
              "description": "The default value of the form control. Primarily used for resetting the form control.",
              "value": { "type": "string | null" }
            },
            {
              "name": "density",
              "description": "Controls the component's spacing density without affecting font-size.",
              "value": {
                "type": "'compact' | 'default' | 'spacious'",
                "default": "'default'"
              }
            },
            {
              "name": "pill",
              "description": "Draws a pill-style input with rounded edges.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "label",
              "description": "The input's label. If you need to display HTML, use the `label` slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "placeholder",
              "description": "Placeholder text to show as a hint when the input is empty.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "readonly",
              "description": "Makes the input readonly.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "required",
              "description": "Makes the input a required field.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "min",
              "description": "The input's minimum value.",
              "value": { "type": "number" }
            },
            {
              "name": "max",
              "description": "The input's maximum value.",
              "value": { "type": "number" }
            },
            {
              "name": "step",
              "description": "Specifies the granularity that the value must adhere to, or the special value `any` which means no stepping is\nimplied, allowing any numeric value.",
              "value": { "type": "number | 'any'", "default": "1" }
            },
            {
              "name": "without-steppers",
              "description": "Hides the increment/decrement stepper buttons.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "autocomplete",
              "description": "Specifies what permission the browser has to provide assistance in filling out form field values. Refer to\n[this page on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for available values.",
              "value": { "type": "string" }
            },
            {
              "name": "autofocus",
              "description": "Indicates that the input should receive focus on page load.",
              "value": { "type": "boolean" }
            },
            {
              "name": "enterkeyhint",
              "description": "Used to customize the label or icon of the Enter key on virtual keyboards.",
              "value": {
                "type": "'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'"
              }
            },
            {
              "name": "inputmode",
              "description": "Tells the browser what type of data will be entered by the user, allowing it to display the appropriate virtual\nkeyboard on supportive devices.",
              "value": {
                "type": "'numeric' | 'decimal'",
                "default": "'numeric'"
              }
            },
            {
              "name": "with-label",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element so the server-rendered markup includes the label before the component hydrates on the client.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "with-hint",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup includes the hint before the component hydrates on the client.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "error",
              "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "warning",
              "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "ai",
              "description": "Draws an ai-style input with AI colored border and icon.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "hint",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "name",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "disabled",
              "description": "Disables the form control.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "label",
              "description": "The input's label. Alternatively, you can use the `label` attribute."
            },
            {
              "name": "start",
              "description": "An element, such as `<ed-icon>`, placed at the start of the input control."
            },
            {
              "name": "end",
              "description": "An element, such as `<ed-icon>`, placed at the end of the input control (before steppers)."
            },
            {
              "name": "increment-icon",
              "description": "An icon to use in lieu of the default increment icon."
            },
            {
              "name": "decrement-icon",
              "description": "An icon to use in lieu of the default decrement icon."
            },
            {
              "name": "hint",
              "description": "Text that describes how to use the input. Alternatively, you can use the `hint` attribute."
            }
          ],
          "events": [
            {
              "name": "input",
              "type": "InputEvent",
              "description": "Emitted when the control receives input."
            },
            {
              "name": "change",
              "type": "Event",
              "description": "Emitted when an alteration to the control's value is committed by the user."
            },
            {
              "name": "blur",
              "description": "Emitted when the control loses focus."
            },
            {
              "name": "beforeinput",
              "description": "Emitted from a stepper button before the value changes. Call `event.preventDefault()` to cancel the change."
            },
            {
              "name": "focus",
              "description": "Emitted when the control gains focus."
            },
            {
              "name": "ed-invalid",
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied."
            }
          ],
          "js": {
            "properties": [
              { "name": "assumeInteractionOn", "type": "string[]" },
              {
                "name": "input",
                "type": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              { "name": "title", "type": "string" },
              {
                "name": "value",
                "description": "The current value of the input, submitted as a name/value pair with form data."
              },
              {
                "name": "defaultValue",
                "description": "The default value of the form control. Primarily used for resetting the form control.",
                "type": "string | null"
              },
              {
                "name": "density",
                "description": "Controls the component's spacing density without affecting font-size.",
                "type": "'compact' | 'default' | 'spacious'"
              },
              {
                "name": "pill",
                "description": "Draws a pill-style input with rounded edges.",
                "type": "boolean"
              },
              {
                "name": "label",
                "description": "The input's label. If you need to display HTML, use the `label` slot instead.",
                "type": "string"
              },
              {
                "name": "placeholder",
                "description": "Placeholder text to show as a hint when the input is empty.",
                "type": "string"
              },
              {
                "name": "readonly",
                "description": "Makes the input readonly.",
                "type": "boolean"
              },
              {
                "name": "required",
                "description": "Makes the input a required field.",
                "type": "boolean"
              },
              {
                "name": "min",
                "description": "The input's minimum value.",
                "type": "number"
              },
              {
                "name": "max",
                "description": "The input's maximum value.",
                "type": "number"
              },
              {
                "name": "step",
                "description": "Specifies the granularity that the value must adhere to, or the special value `any` which means no stepping is\nimplied, allowing any numeric value.",
                "type": "number | 'any'"
              },
              {
                "name": "withoutSteppers",
                "description": "Hides the increment/decrement stepper buttons.",
                "type": "boolean"
              },
              {
                "name": "autocomplete",
                "description": "Specifies what permission the browser has to provide assistance in filling out form field values. Refer to\n[this page on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for available values.",
                "type": "string"
              },
              {
                "name": "autofocus",
                "description": "Indicates that the input should receive focus on page load.",
                "type": "boolean"
              },
              {
                "name": "enterkeyhint",
                "description": "Used to customize the label or icon of the Enter key on virtual keyboards.",
                "type": "'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'"
              },
              {
                "name": "inputmode",
                "description": "Tells the browser what type of data will be entered by the user, allowing it to display the appropriate virtual\nkeyboard on supportive devices.",
                "type": "'numeric' | 'decimal'"
              },
              {
                "name": "withLabel",
                "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element so the server-rendered markup includes the label before the component hydrates on the client.",
                "type": "boolean"
              },
              {
                "name": "withHint",
                "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup includes the hint before the component hydrates on the client.",
                "type": "boolean"
              },
              {
                "name": "error",
                "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
                "type": "string | null"
              },
              {
                "name": "warning",
                "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
                "type": "string | null"
              },
              {
                "name": "ai",
                "description": "Draws an ai-style input with AI colored border and icon.",
                "type": "boolean"
              },
              {
                "name": "hint",
                "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
                "type": "string"
              },
              {
                "name": "name",
                "description": "The name of the input, submitted as a name/value pair with form data.",
                "type": "string | null"
              },
              {
                "name": "disabled",
                "description": "Disables the form control.",
                "type": "boolean"
              },
              {
                "name": "assumeInteractionOnMode",
                "type": "'combined' | 'separated' | string"
              },
              { "name": "valueHasChanged", "type": "boolean" },
              { "name": "hasInteracted", "type": "boolean" },
              { "name": "states", "type": "CustomStateSet" },
              { "name": "emitInvalid" },
              { "name": "labels" },
              {
                "name": "form",
                "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
                "type": "HTMLFormElement | null"
              },
              { "name": "validity" },
              { "name": "willValidate" },
              { "name": "validationMessage" },
              {
                "name": "validationTarget",
                "description": "Override this to change where constraint validation popups are anchored.",
                "type": "undefined | HTMLElement"
              },
              { "name": "allValidators" },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "input",
                "type": "InputEvent",
                "description": "Emitted when the control receives input."
              },
              {
                "name": "change",
                "type": "Event",
                "description": "Emitted when an alteration to the control's value is committed by the user."
              },
              {
                "name": "blur",
                "description": "Emitted when the control loses focus."
              },
              {
                "name": "beforeinput",
                "description": "Emitted from a stepper button before the value changes. Call `event.preventDefault()` to cancel the change."
              },
              {
                "name": "focus",
                "description": "Emitted when the control gains focus."
              },
              {
                "name": "ed-invalid",
                "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied."
              }
            ]
          }
        },
        {
          "name": "ed-pagination",
          "description": "Pagination allows users to navigate through pages of content and optionally change the page size.\n---\n\n\n### **Events:**\n - **ed-page-change** - Emitted when the current page changes.\n- **ed-page-size-change** - Emitted when the page size changes.\n\n### **Methods:**\n - **setPageSize(size: _number | string_)** - Sets the page size\n- **setPage(page: _number | string_)** - Sets the current page\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **page-size-section** - The page-size selector section.\n- **page-size-section-select** - The internal ed-select.\n- **page-nav-section** - The page navigation section.\n- **total-pages** - The \"from X\" text.",
          "doc-url": "",
          "attributes": [
            {
              "name": "total-items",
              "description": "The total number of items being paginated.",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "page",
              "description": "The current page (1-indexed).",
              "value": { "type": "number", "default": "1" }
            },
            {
              "name": "page-size",
              "description": "The number of items per page.",
              "value": { "type": "number", "default": "50" }
            },
            {
              "name": "page-size-options",
              "description": "The available page size options for the dropdown.",
              "value": { "type": "number[]", "default": "[50, 100, 200, 500]" }
            },
            {
              "name": "hide-page-size",
              "description": "Hides the page-size selector section.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "disabled",
              "description": "Disables the entire pagination component.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [],
          "events": [
            {
              "name": "ed-page-change",
              "description": "Emitted when the current page changes."
            },
            {
              "name": "ed-page-size-change",
              "description": "Emitted when the page size changes."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "totalItems",
                "description": "The total number of items being paginated.",
                "type": "number"
              },
              {
                "name": "page",
                "description": "The current page (1-indexed).",
                "type": "number"
              },
              {
                "name": "pageSize",
                "description": "The number of items per page.",
                "type": "number"
              },
              {
                "name": "pageSizeOptions",
                "description": "The available page size options for the dropdown.",
                "type": "number[]"
              },
              {
                "name": "hidePageSize",
                "description": "Hides the page-size selector section.",
                "type": "boolean"
              },
              {
                "name": "disabled",
                "description": "Disables the entire pagination component.",
                "type": "boolean"
              },
              {
                "name": "totalPages",
                "description": "The total number of pages, derived from totalItems and pageSize.",
                "type": "number"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-page-change",
                "description": "Emitted when the current page changes."
              },
              {
                "name": "ed-page-size-change",
                "description": "Emitted when the page size changes."
              }
            ]
          }
        },
        {
          "name": "ed-data-grid",
          "description": "A high-performance data grid with sorting, selection, resizing, grouping, pagination, and virtual scroll.\n---\n\n\n### **Events:**\n - **ed-sort** - Emitted when a sortable column header is activated.\n- **ed-selection-change** - Emitted when row selection changes.\n- **ed-column-resize** - Emitted when a column is resized via drag handle.\n- **ed-pagination-change** - Emitted when the page or page size changes.\n- **ed-row-reorder** - Emitted when a row is reordered via drag-and-drop.\n- **ed-column-reorder** - Emitted when a column is reordered via drag-and-drop.\n- **ed-row-expand** - Emitted when a group row is expanded.\n- **ed-row-collapse** - Emitted when a group row is collapsed.\n- **ed-row-dblclick** - Emitted on row double-click.\n- **ed-scroll-start** - Emitted when scrolling begins.\n- **ed-scroll-end** - Emitted when scrolling ends.\n- **ed-load-more** - Emitted when infinite scroll reaches near the bottom and needs more data.\n\n### **Methods:**\n - **selectAll(): _void_** - Selects all body rows. Only effective in multi-select mode.\n- **deselectAll(): _void_** - Clears all row selections.\n- **expandRow(rowId: _unknown_): _void_** - Expands a tree or group row. For lazy rows, emits load event.\n- **collapseRow(rowId: _unknown_): _void_** - Collapses a tree or group row.\n- **toggleRow(rowId: _unknown_): _void_** - Toggles a tree or group row's expanded/collapsed state.\n- **goToPage(page: _number_): _void_** - Navigates to a specific page.\n- **setPageSize(size: _number_): _void_** - Changes the page size and resets to page 1.\n- **scrollToIndex(index: _number_): _void_** - Scrolls the grid so that the row at the given data index is visible.\n\n### **Slots:**\n - **empty** - Content to display when the grid has no data rows.\n\n### **CSS Properties:**\n - **--row-height** - Overwrites the density attribute for manual row height adjustment. _(default: var(--ed-space-2xl))_",
          "doc-url": "",
          "attributes": [
            {
              "name": "row-key",
              "description": "Property key used to uniquely identify rows.",
              "value": { "type": "string", "default": "'id'" }
            },
            {
              "name": "sortable",
              "description": "Enables sortable columns. `'single'` allows one sorted column; `'multi'` allows Shift+click multi-sort.",
              "value": { "type": "'single' | 'multi' | undefined" }
            },
            {
              "name": "selectable",
              "description": "Enables row selection. `'single'` allows one selected row; `'multi'` allows range/toggle selection.",
              "value": { "type": "'single' | 'multi' | undefined" }
            },
            {
              "name": "density",
              "description": "Controls row density (padding and height).",
              "value": {
                "type": "'compact' | 'default' | 'spacious'",
                "default": "'default'"
              }
            },
            {
              "name": "resizable",
              "description": "Makes all columns resizable via drag handle.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "column-reorderable",
              "description": "Enables column reordering via drag-and-drop on header cells.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "row-reorderable",
              "description": "Enables row reordering via drag-and-drop handle.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "group-by",
              "description": "Groups flat data by column value(s). Comma-separated for nested grouping.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "pagination",
              "description": "Pagination mode. `'controls'` shows page controls; `'infinite'` loads more on scroll.",
              "value": { "type": "'controls' | 'infinite' | undefined" }
            },
            {
              "name": "total-rows",
              "description": "Total number of rows (for server-side pagination). When set, uses this instead of `.data.length`.",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "current-page",
              "description": "Current page (1-based).",
              "value": { "type": "number", "default": "1" }
            },
            {
              "name": "page-size",
              "description": "Number of rows per page.",
              "value": { "type": "number", "default": "50" }
            },
            {
              "name": "page-size-options",
              "description": "Available page size options for the pagination dropdown.",
              "value": { "type": "number[]", "default": "[50, 200, 500, 1000]" }
            },
            {
              "name": "footer",
              "description": "Shows a footer bar with row and selection counts. Automatically enabled when pagination is active.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "virtual-scroll",
              "description": "Enables virtual scrolling for large datasets.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "row-height",
              "description": "Explicit row height in pixels. If 0, measured from first rendered row.",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "scroll-buffer",
              "description": "Number of buffer rows rendered above and below the visible viewport.",
              "value": { "type": "number", "default": "5" }
            },
            {
              "name": "loading",
              "description": "Shows a loading indicator over the grid body.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "empty",
              "description": "Content to display when the grid has no data rows."
            }
          ],
          "events": [
            {
              "name": "ed-sort",
              "type": "{ sorts: SortEntry[], added?: SortEntry }",
              "description": "Emitted when a sortable column header is activated."
            },
            {
              "name": "ed-selection-change",
              "type": "{ selectedKeys: Set<unknown> }",
              "description": "Emitted when row selection changes."
            },
            {
              "name": "ed-column-resize",
              "type": "{ column: string, width: number }",
              "description": "Emitted when a column is resized via drag handle."
            },
            {
              "name": "ed-pagination-change",
              "type": "{ page: number, pageSize: number }",
              "description": "Emitted when the page or page size changes."
            },
            {
              "name": "ed-row-reorder",
              "type": "{ row: RowData, fromIndex: number, toIndex: number }",
              "description": "Emitted when a row is reordered via drag-and-drop."
            },
            {
              "name": "ed-column-reorder",
              "type": "{ column: EdDataGridColumn, fromIndex: number, toIndex: number }",
              "description": "Emitted when a column is reordered via drag-and-drop."
            },
            {
              "name": "ed-row-expand",
              "type": "{ row: RowData, rowId: unknown }",
              "description": "Emitted when a group row is expanded."
            },
            {
              "name": "ed-row-collapse",
              "type": "{ row: RowData, rowId: unknown }",
              "description": "Emitted when a group row is collapsed."
            },
            {
              "name": "ed-row-dblclick",
              "type": "{ row: HTMLElement, data?: RowData, rowIndex: number }",
              "description": "Emitted on row double-click."
            },
            {
              "name": "ed-scroll-start",
              "type": "{ scrollTop: number, scrollLeft: number }",
              "description": "Emitted when scrolling begins."
            },
            {
              "name": "ed-scroll-end",
              "type": "{ scrollTop: number, scrollLeft: number }",
              "description": "Emitted when scrolling ends."
            },
            {
              "name": "ed-load-more",
              "type": "{ offset: number }",
              "description": "Emitted when infinite scroll reaches near the bottom and needs more data."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "columns",
                "description": "Column definitions. Supports nested `children` for multi-row headers.",
                "type": "EdDataGridColumn[]"
              },
              {
                "name": "data",
                "description": "Row data array. Each object should contain keys matching column `key` values.",
                "type": "RowData[]"
              },
              {
                "name": "rowKey",
                "description": "Property key used to uniquely identify rows.",
                "type": "string"
              },
              {
                "name": "sortable",
                "description": "Enables sortable columns. `'single'` allows one sorted column; `'multi'` allows Shift+click multi-sort.",
                "type": "'single' | 'multi' | undefined"
              },
              {
                "name": "selectable",
                "description": "Enables row selection. `'single'` allows one selected row; `'multi'` allows range/toggle selection.",
                "type": "'single' | 'multi' | undefined"
              },
              {
                "name": "density",
                "description": "Controls row density (padding and height).",
                "type": "'compact' | 'default' | 'spacious'"
              },
              {
                "name": "resizable",
                "description": "Makes all columns resizable via drag handle.",
                "type": "boolean"
              },
              {
                "name": "columnReorderable",
                "description": "Enables column reordering via drag-and-drop on header cells.",
                "type": "boolean"
              },
              {
                "name": "rowReorderable",
                "description": "Enables row reordering via drag-and-drop handle.",
                "type": "boolean"
              },
              {
                "name": "groupBy",
                "description": "Groups flat data by column value(s). Comma-separated for nested grouping.",
                "type": "string"
              },
              {
                "name": "pagination",
                "description": "Pagination mode. `'controls'` shows page controls; `'infinite'` loads more on scroll.",
                "type": "'controls' | 'infinite' | undefined"
              },
              {
                "name": "totalRows",
                "description": "Total number of rows (for server-side pagination). When set, uses this instead of `.data.length`.",
                "type": "number"
              },
              {
                "name": "currentPage",
                "description": "Current page (1-based).",
                "type": "number"
              },
              {
                "name": "pageSize",
                "description": "Number of rows per page.",
                "type": "number"
              },
              {
                "name": "pageSizeOptions",
                "description": "Available page size options for the pagination dropdown.",
                "type": "number[]"
              },
              {
                "name": "footer",
                "description": "Shows a footer bar with row and selection counts. Automatically enabled when pagination is active.",
                "type": "boolean"
              },
              {
                "name": "virtualScroll",
                "description": "Enables virtual scrolling for large datasets.",
                "type": "boolean"
              },
              {
                "name": "rowHeight",
                "description": "Explicit row height in pixels. If 0, measured from first rendered row.",
                "type": "number"
              },
              {
                "name": "scrollBuffer",
                "description": "Number of buffer rows rendered above and below the visible viewport.",
                "type": "number"
              },
              {
                "name": "loading",
                "description": "Shows a loading indicator over the grid body.",
                "type": "boolean"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-sort",
                "type": "{ sorts: SortEntry[], added?: SortEntry }",
                "description": "Emitted when a sortable column header is activated."
              },
              {
                "name": "ed-selection-change",
                "type": "{ selectedKeys: Set<unknown> }",
                "description": "Emitted when row selection changes."
              },
              {
                "name": "ed-column-resize",
                "type": "{ column: string, width: number }",
                "description": "Emitted when a column is resized via drag handle."
              },
              {
                "name": "ed-pagination-change",
                "type": "{ page: number, pageSize: number }",
                "description": "Emitted when the page or page size changes."
              },
              {
                "name": "ed-row-reorder",
                "type": "{ row: RowData, fromIndex: number, toIndex: number }",
                "description": "Emitted when a row is reordered via drag-and-drop."
              },
              {
                "name": "ed-column-reorder",
                "type": "{ column: EdDataGridColumn, fromIndex: number, toIndex: number }",
                "description": "Emitted when a column is reordered via drag-and-drop."
              },
              {
                "name": "ed-row-expand",
                "type": "{ row: RowData, rowId: unknown }",
                "description": "Emitted when a group row is expanded."
              },
              {
                "name": "ed-row-collapse",
                "type": "{ row: RowData, rowId: unknown }",
                "description": "Emitted when a group row is collapsed."
              },
              {
                "name": "ed-row-dblclick",
                "type": "{ row: HTMLElement, data?: RowData, rowIndex: number }",
                "description": "Emitted on row double-click."
              },
              {
                "name": "ed-scroll-start",
                "type": "{ scrollTop: number, scrollLeft: number }",
                "description": "Emitted when scrolling begins."
              },
              {
                "name": "ed-scroll-end",
                "type": "{ scrollTop: number, scrollLeft: number }",
                "description": "Emitted when scrolling ends."
              },
              {
                "name": "ed-load-more",
                "type": "{ offset: number }",
                "description": "Emitted when infinite scroll reaches near the bottom and needs more data."
              }
            ]
          }
        },
        {
          "name": "ed-details",
          "description": "Details show a brief summary and expand to show additional content.\n---\n\n\n### **Events:**\n - **ed-show** - Emitted when the details opens.\n- **ed-after-show** - Emitted after the details opens and all animations are complete.\n- **ed-hide** - Emitted when the details closes.\n- **ed-after-hide** - Emitted after the details closes and all animations are complete.\n\n### **Methods:**\n - **show()** - Shows the details.\n- **hide()** - Hides the details\n\n### **Slots:**\n - _default_ - The details' main content.\n- **summary** - The details' summary. Alternatively, you can use the `summary` attribute.\n- **expand-icon** - Optional expand icon to use instead of the default. Works best with `<ed-icon>`.\n- **collapse-icon** - Optional collapse icon to use instead of the default. Works best with `<ed-icon>`.\n\n### **CSS Properties:**\n - **--spacing** - The amount of space around and between the details' content. Expects a single value. _(default: undefined)_\n- **--show-duration** - The show duration to use when applying built-in animation classes. _(default: 200ms)_\n- **--hide-duration** - The hide duration to use when applying built-in animation classes. _(default: 200ms)_\n\n### **CSS Parts:**\n - **base** - The inner `<details>` element used to render the component. Styles you apply to the component are automatically applied to this part, so you usually don't need to deal with it unless you need to set the `display` property.\n- **header** - The header that wraps both the summary and the expand/collapse icon.\n- **summary** - The container that wraps the summary.\n- **icon** - The container that wraps the expand/collapse icons.\n- **content** - The details content.",
          "doc-url": "",
          "attributes": [
            {
              "name": "open",
              "description": "Indicates whether or not the details is open. You can toggle this attribute to show and hide the details, or you\ncan use the `show()` and `hide()` methods and this attribute will reflect the details' open state.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "summary",
              "description": "The summary to show in the header. If you need to display HTML, use the `summary` slot instead.",
              "value": { "type": "string" }
            },
            {
              "name": "name",
              "description": "Groups related details elements. When one opens, others with the same name will close.",
              "value": { "type": "string" }
            },
            {
              "name": "disabled",
              "description": "Disables the details so it can't be toggled.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "appearance",
              "description": "The element's visual appearance.",
              "value": { "type": "'filled' | 'plain'", "default": "'plain'" }
            },
            {
              "name": "icon-placement",
              "description": "The location of the expand/collapse icon.",
              "value": { "type": "'start' | 'end'", "default": "'start'" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            { "name": "", "description": "The details' main content." },
            {
              "name": "summary",
              "description": "The details' summary. Alternatively, you can use the `summary` attribute."
            },
            {
              "name": "expand-icon",
              "description": "Optional expand icon to use instead of the default. Works best with `<ed-icon>`."
            },
            {
              "name": "collapse-icon",
              "description": "Optional collapse icon to use instead of the default. Works best with `<ed-icon>`."
            }
          ],
          "events": [
            {
              "name": "ed-show",
              "description": "Emitted when the details opens."
            },
            {
              "name": "ed-after-show",
              "description": "Emitted after the details opens and all animations are complete."
            },
            {
              "name": "ed-hide",
              "description": "Emitted when the details closes."
            },
            {
              "name": "ed-after-hide",
              "description": "Emitted after the details closes and all animations are complete."
            }
          ],
          "js": {
            "properties": [
              { "name": "details", "type": "HTMLDetailsElement" },
              { "name": "header", "type": "HTMLElement" },
              { "name": "body", "type": "HTMLElement" },
              { "name": "expandIconSlot", "type": "HTMLSlotElement" },
              { "name": "isAnimating", "type": "boolean" },
              {
                "name": "open",
                "description": "Indicates whether or not the details is open. You can toggle this attribute to show and hide the details, or you\ncan use the `show()` and `hide()` methods and this attribute will reflect the details' open state.",
                "type": "boolean"
              },
              {
                "name": "summary",
                "description": "The summary to show in the header. If you need to display HTML, use the `summary` slot instead.",
                "type": "string"
              },
              {
                "name": "name",
                "description": "Groups related details elements. When one opens, others with the same name will close.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables the details so it can't be toggled.",
                "type": "boolean"
              },
              {
                "name": "appearance",
                "description": "The element's visual appearance.",
                "type": "'filled' | 'plain'"
              },
              {
                "name": "iconPlacement",
                "description": "The location of the expand/collapse icon.",
                "type": "'start' | 'end'"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-show",
                "description": "Emitted when the details opens."
              },
              {
                "name": "ed-after-show",
                "description": "Emitted after the details opens and all animations are complete."
              },
              {
                "name": "ed-hide",
                "description": "Emitted when the details closes."
              },
              {
                "name": "ed-after-hide",
                "description": "Emitted after the details closes and all animations are complete."
              }
            ]
          }
        },
        {
          "name": "ed-divider",
          "description": "Dividers are used to visually separate or group elements.\n---\n\n\n### **CSS Properties:**\n - **--color** - The color of the divider. _(default: undefined)_\n- **--width** - The width of the divider. _(default: undefined)_\n- **--spacing** - The spacing of the divider. _(default: undefined)_",
          "doc-url": "",
          "attributes": [
            {
              "name": "orientation",
              "description": "Sets the divider's orientation.",
              "value": {
                "type": "'horizontal' | 'vertical'",
                "default": "'horizontal'"
              }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "orientation",
                "description": "Sets the divider's orientation.",
                "type": "'horizontal' | 'vertical'"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-drawer",
          "description": "Drawers slide in from a container to expose additional options and information.\n---\n\n\n### **Events:**\n - **ed-show** - Emitted when the drawer opens.\n- **ed-after-show** - Emitted after the drawer opens and all animations are complete.\n- **ed-hide** - Emitted when the drawer is requesting to close. Calling `event.preventDefault()` will prevent the drawer from closing. You can inspect `event.detail.source` to see which element caused the drawer to close. If the source is the drawer element itself, the user has pressed [[Escape]] or the drawer has been closed programmatically. Avoid using this unless closing the drawer will result in destructive behavior such as data loss.\n- **ed-after-hide** - Emitted after the drawer closes and all animations are complete.\n\n### **Slots:**\n - _default_ - The drawer's main content.\n- **label** - The drawer's label. Alternatively, you can use the `label` attribute.\n- **header-actions** - Optional actions to add to the header. Works best with `<ed-button>`.\n- **footer** - The drawer's footer, usually one or more buttons representing various options.\n\n### **CSS Properties:**\n - **--spacing** - The amount of space around and between the drawer's content. _(default: undefined)_\n- **--size** - The preferred size of the drawer. This will be applied to the drawer's width or height depending on its `placement`. Note that the drawer will shrink to accommodate smaller screens. _(default: undefined)_\n- **--show-duration** - The animation duration when showing the drawer. _(default: 200ms)_\n- **--hide-duration** - The animation duration when hiding the drawer. _(default: 200ms)_\n- **--backdrop-filter** - A CSS filter, e.g. `blur(4px)`, applied to the backdrop element behind the drawer. _(default: undefined)_\n\n### **CSS Parts:**\n - **dialog** - The drawer's internal `<dialog>` element.\n- **header** - The drawer's header. This element wraps the title and header actions.\n- **header-actions** - Optional actions to add to the header. Works best with `<ed-button>`.\n- **title** - The drawer's title.\n- **close-button** - The close button, a `<ed-button>`.\n- **close-button__base** - The close button's exported `base` part.\n- **body** - The drawer's body.\n- **footer** - The drawer's footer.",
          "doc-url": "",
          "attributes": [
            {
              "name": "open",
              "description": "Indicates whether or not the drawer is open. Toggle this attribute to show and hide the drawer.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "label",
              "description": "The drawer's label as displayed in the header. You should always include a relevant label, as it is required for\nproper accessibility. If you need to display HTML, use the `label` slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "placement",
              "description": "The direction from which the drawer will open.",
              "value": {
                "type": "'top' | 'end' | 'bottom' | 'start'",
                "default": "'end'"
              }
            },
            {
              "name": "without-header",
              "description": "Disables the header. This will also remove the default close button.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "without-close",
              "description": "Disables the default close button while keeping the header visible.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "light-dismiss",
              "description": "When enabled, the drawer will be closed when the user clicks outside of it.",
              "value": { "type": "boolean", "default": "true" }
            },
            {
              "name": "with-footer",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `footer` element so the server-rendered markup\nincludes the footer before the component hydrates on the client.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "contained",
              "description": "By default, the drawer slides out of the viewport. To make it slide out of its parent element, set this attribute and add `position: relative` and `overflow: hidden` to the parent.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "push",
              "description": "When used with `contained`, the drawer pushes adjacent content aside instead of overlaying it. The parent element must be a flex container.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            { "name": "", "description": "The drawer's main content." },
            {
              "name": "label",
              "description": "The drawer's label. Alternatively, you can use the `label` attribute."
            },
            {
              "name": "header-actions",
              "description": "Optional actions to add to the header. Works best with `<ed-button>`."
            },
            {
              "name": "footer",
              "description": "The drawer's footer, usually one or more buttons representing various options."
            }
          ],
          "events": [
            {
              "name": "ed-show",
              "description": "Emitted when the drawer opens."
            },
            {
              "name": "ed-after-show",
              "description": "Emitted after the drawer opens and all animations are complete."
            },
            {
              "name": "ed-hide",
              "type": "{ source: Element }",
              "description": "Emitted when the drawer is requesting to close. Calling `event.preventDefault()` will prevent the drawer from closing. You can inspect `event.detail.source` to see which element caused the drawer to close. If the source is the drawer element itself, the user has pressed [[Escape]] or the drawer has been closed programmatically. Avoid using this unless closing the drawer will result in destructive behavior such as data loss."
            },
            {
              "name": "ed-after-hide",
              "description": "Emitted after the drawer closes and all animations are complete."
            }
          ],
          "js": {
            "properties": [
              { "name": "drawer", "type": "HTMLDialogElement" },
              { "name": "panel", "type": "HTMLElement" },
              { "name": "overlay", "type": "HTMLElement" },
              {
                "name": "open",
                "description": "Indicates whether or not the drawer is open. Toggle this attribute to show and hide the drawer.",
                "type": "boolean"
              },
              {
                "name": "label",
                "description": "The drawer's label as displayed in the header. You should always include a relevant label, as it is required for\nproper accessibility. If you need to display HTML, use the `label` slot instead.",
                "type": "string"
              },
              {
                "name": "placement",
                "description": "The direction from which the drawer will open.",
                "type": "'top' | 'end' | 'bottom' | 'start'"
              },
              {
                "name": "withoutHeader",
                "description": "Disables the header. This will also remove the default close button.",
                "type": "boolean"
              },
              {
                "name": "withoutClose",
                "description": "Disables the default close button while keeping the header visible.",
                "type": "boolean"
              },
              {
                "name": "lightDismiss",
                "description": "When enabled, the drawer will be closed when the user clicks outside of it.",
                "type": "boolean"
              },
              {
                "name": "withFooter",
                "description": "Only required for SSR. Set to `true` if you're slotting in a `footer` element so the server-rendered markup\nincludes the footer before the component hydrates on the client.",
                "type": "boolean"
              },
              {
                "name": "contained",
                "description": "By default, the drawer slides out of the viewport. To make it slide out of its parent element, set this attribute and add `position: relative` and `overflow: hidden` to the parent.",
                "type": "boolean"
              },
              {
                "name": "push",
                "description": "When used with `contained`, the drawer pushes adjacent content aside instead of overlaying it. The parent element must be a flex container.",
                "type": "boolean"
              },
              {
                "name": "modal",
                "description": "Exposes the internal modal utility that controls focus trapping. To temporarily disable focus trapping and allow third-party modals spawned from an active Shoelace modal, call `modal.activateExternal()` when the third-party modal opens. Upon closing, call `modal.deactivateExternal()` to restore Shoelace's focus trapping."
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-show",
                "description": "Emitted when the drawer opens."
              },
              {
                "name": "ed-after-show",
                "description": "Emitted after the drawer opens and all animations are complete."
              },
              {
                "name": "ed-hide",
                "type": "{ source: Element }",
                "description": "Emitted when the drawer is requesting to close. Calling `event.preventDefault()` will prevent the drawer from closing. You can inspect `event.detail.source` to see which element caused the drawer to close. If the source is the drawer element itself, the user has pressed [[Escape]] or the drawer has been closed programmatically. Avoid using this unless closing the drawer will result in destructive behavior such as data loss."
              },
              {
                "name": "ed-after-hide",
                "description": "Emitted after the drawer closes and all animations are complete."
              }
            ]
          }
        },
        {
          "name": "ed-dropdown-item",
          "description": "Represents an individual item within a dropdown menu, supporting standard items, checkboxes, and submenus.\n---\n\n\n### **Events:**\n - **blur** - Emitted when the dropdown item loses focus.\n- **focus** - Emitted when the dropdown item gains focus.\n\n### **Methods:**\n - **openSubmenu()** - Opens the submenu.\n- **closeSubmenu()** - Closes the submenu.\n\n### **Slots:**\n - _default_ - The dropdown item's label.\n- **icon** - An optional icon to display before the label.\n- **details** - Additional content or details to display after the label.\n- **submenu** - Submenu items, typically `<ed-dropdown-item>` elements, to create a nested menu.\n\n### **CSS Parts:**\n - **checkbox** - The checkbox indicator (an `<ed-checkbox>` element) when the item is a checkbox.\n- **icon** - The container for the icon slot.\n- **label** - The container for the label slot.\n- **details** - The container for the details slot.\n- **submenu-icon** - The submenu indicator icon (a `<ed-icon>` element).\n- **submenu** - The submenu container.",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "An optional value for the menu item. This is useful for determining which item was selected when listening to the\ndropdown's `ed-select` event.",
              "value": { "type": "string" }
            },
            {
              "name": "type",
              "description": "Set to `checkbox` to make the item a checkbox.",
              "value": {
                "type": "'normal' | 'checkbox'",
                "default": "'normal'"
              }
            },
            {
              "name": "checked",
              "description": "Set to true to check the dropdown item. Only valid when `type` is `checkbox`.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "disabled",
              "description": "Disables the dropdown item.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "submenuOpen",
              "description": "Whether the submenu is currently open.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            { "name": "", "description": "The dropdown item's label." },
            {
              "name": "icon",
              "description": "An optional icon to display before the label."
            },
            {
              "name": "details",
              "description": "Additional content or details to display after the label."
            },
            {
              "name": "submenu",
              "description": "Submenu items, typically `<ed-dropdown-item>` elements, to create a nested menu."
            }
          ],
          "events": [
            {
              "name": "blur",
              "description": "Emitted when the dropdown item loses focus."
            },
            {
              "name": "focus",
              "description": "Emitted when the dropdown item gains focus."
            }
          ],
          "js": {
            "properties": [
              { "name": "submenuElement", "type": "HTMLDivElement" },
              {
                "name": "value",
                "description": "An optional value for the menu item. This is useful for determining which item was selected when listening to the\ndropdown's `ed-select` event.",
                "type": "string"
              },
              {
                "name": "type",
                "description": "Set to `checkbox` to make the item a checkbox.",
                "type": "'normal' | 'checkbox'"
              },
              {
                "name": "checked",
                "description": "Set to true to check the dropdown item. Only valid when `type` is `checkbox`.",
                "type": "boolean"
              },
              {
                "name": "disabled",
                "description": "Disables the dropdown item.",
                "type": "boolean"
              },
              {
                "name": "submenuOpen",
                "description": "Whether the submenu is currently open.",
                "type": "boolean"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "blur",
                "description": "Emitted when the dropdown item loses focus."
              },
              {
                "name": "focus",
                "description": "Emitted when the dropdown item gains focus."
              }
            ]
          }
        },
        {
          "name": "ed-dropdown",
          "description": "Dropdowns display a list of options that can be triggered by a button or other element. They support\nkeyboard navigation, submenus, and various customization options.\n---\n\n\n### **Events:**\n - **ed-show** - Emitted when the dropdown is about to show.\n- **ed-after-show** - Emitted after the dropdown has been shown.\n- **ed-hide** - Emitted when the dropdown is about to hide.\n- **ed-after-hide** - Emitted after the dropdown has been hidden.\n- **ed-select** - Emitted when an item in the dropdown is selected.\n\n### **Slots:**\n - _default_ - The dropdown's items, typically `<ed-dropdown-item>` elements.\n- **trigger** - The element that triggers the dropdown, such as a `<ed-button>` or `<button>`.\n\n### **CSS Properties:**\n - **--show-duration** - The duration of the show animation. _(default: undefined)_\n- **--hide-duration** - The duration of the hide animation. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's host element.\n- **menu** - The dropdown menu container.",
          "doc-url": "",
          "attributes": [
            {
              "name": "open",
              "description": "Opens or closes the dropdown.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "placement",
              "description": "The placement of the dropdown menu in reference to the trigger. The menu will shift to a more optimal location if\nthe preferred placement doesn't have enough room.",
              "value": {
                "type": "| 'top'\n    | 'top-start'\n    | 'top-end'\n    | 'bottom'\n    | 'bottom-start'\n    | 'bottom-end'\n    | 'right'\n    | 'right-start'\n    | 'right-end'\n    | 'left'\n    | 'left-start'\n    | 'left-end'",
                "default": "'bottom-start'"
              }
            },
            {
              "name": "distance",
              "description": "The distance of the dropdown menu from its trigger.",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "skidding",
              "description": "The offset of the dropdown menu along its trigger.",
              "value": { "type": "number", "default": "0" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "The dropdown's items, typically `<ed-dropdown-item>` elements."
            },
            {
              "name": "trigger",
              "description": "The element that triggers the dropdown, such as a `<ed-button>` or `<button>`."
            }
          ],
          "events": [
            {
              "name": "ed-show",
              "description": "Emitted when the dropdown is about to show."
            },
            {
              "name": "ed-after-show",
              "description": "Emitted after the dropdown has been shown."
            },
            {
              "name": "ed-hide",
              "description": "Emitted when the dropdown is about to hide."
            },
            {
              "name": "ed-after-hide",
              "description": "Emitted after the dropdown has been hidden."
            },
            {
              "name": "ed-select",
              "description": "Emitted when an item in the dropdown is selected."
            }
          ],
          "js": {
            "properties": [
              { "name": "defaultSlot", "type": "HTMLSlotElement" },
              {
                "name": "open",
                "description": "Opens or closes the dropdown.",
                "type": "boolean"
              },
              {
                "name": "placement",
                "description": "The placement of the dropdown menu in reference to the trigger. The menu will shift to a more optimal location if\nthe preferred placement doesn't have enough room.",
                "type": "| 'top'\n    | 'top-start'\n    | 'top-end'\n    | 'bottom'\n    | 'bottom-start'\n    | 'bottom-end'\n    | 'right'\n    | 'right-start'\n    | 'right-end'\n    | 'left'\n    | 'left-start'\n    | 'left-end'"
              },
              {
                "name": "distance",
                "description": "The distance of the dropdown menu from its trigger.",
                "type": "number"
              },
              {
                "name": "skidding",
                "description": "The offset of the dropdown menu along its trigger.",
                "type": "number"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-show",
                "description": "Emitted when the dropdown is about to show."
              },
              {
                "name": "ed-after-show",
                "description": "Emitted after the dropdown has been shown."
              },
              {
                "name": "ed-hide",
                "description": "Emitted when the dropdown is about to hide."
              },
              {
                "name": "ed-after-hide",
                "description": "Emitted after the dropdown has been hidden."
              },
              {
                "name": "ed-select",
                "description": "Emitted when an item in the dropdown is selected."
              }
            ]
          }
        },
        {
          "name": "ed-empty-state",
          "description": "Buttons represent actions that are available to the user.\n---\n\n\n### **Slots:**\n - _default_ - Empty state text.\n- **icon** - An element, such as `<ed-icon>`, placed before the Text. Alternatively, you can use the `icon` attribute.\n- **label** - The EmptyState's label.\n- **button** - Optional Button.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **icon** - The container that wraps the `icon` slot.\n- **label** - The container that wraps the `label` slot.\n- **description** - Description of empty state.",
          "doc-url": "",
          "attributes": [
            {
              "name": "size",
              "description": "Defines the size of the empty state. You have to manually set the correct header (`<h1/>`, `<h2/>`, `<h3/>`, `<p/>`) and button styling.",
              "value": {
                "type": "'fullscreen' | 'small' | 'medium' | 'large'",
                "default": "'fullscreen'"
              }
            },
            {
              "name": "alignment",
              "description": "Defines the alignment of the empty state.",
              "value": {
                "type": "'horizontal' | 'vertical'",
                "default": "'vertical'"
              }
            },
            {
              "name": "icon",
              "description": "Defines the icon which is used in the empty state. If you need a customized icon, use the `icon` slot instead.",
              "value": { "type": "string", "default": "'error'" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            { "name": "", "description": "Empty state text." },
            {
              "name": "icon",
              "description": "An element, such as `<ed-icon>`, placed before the Text. Alternatively, you can use the `icon` attribute."
            },
            { "name": "label", "description": "The EmptyState's label." },
            { "name": "button", "description": "Optional Button." }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "size",
                "description": "Defines the size of the empty state. You have to manually set the correct header (`<h1/>`, `<h2/>`, `<h3/>`, `<p/>`) and button styling.",
                "type": "'fullscreen' | 'small' | 'medium' | 'large'"
              },
              {
                "name": "alignment",
                "description": "Defines the alignment of the empty state.",
                "type": "'horizontal' | 'vertical'"
              },
              {
                "name": "icon",
                "description": "Defines the icon which is used in the empty state. If you need a customized icon, use the `icon` slot instead.",
                "type": "string"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-format-bytes",
          "description": "Formats a number as a human readable bytes value.\n---\n",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "The number to format in bytes.",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "unit",
              "description": "The type of unit to display.",
              "value": { "type": "'byte' | 'bit'", "default": "'byte'" }
            },
            {
              "name": "display",
              "description": "Determines how to display the result, e.g. \"100 bytes\", \"100 b\", or \"100b\".",
              "value": {
                "type": "'long' | 'short' | 'narrow'",
                "default": "'short'"
              }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "The number to format in bytes.",
                "type": "number"
              },
              {
                "name": "unit",
                "description": "The type of unit to display.",
                "type": "'byte' | 'bit'"
              },
              {
                "name": "display",
                "description": "Determines how to display the result, e.g. \"100 bytes\", \"100 b\", or \"100b\".",
                "type": "'long' | 'short' | 'narrow'"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-format-date",
          "description": "Formats a date/time using the specified locale and options.\n---\n",
          "doc-url": "",
          "attributes": [
            {
              "name": "date",
              "description": "The date/time to format. If not set, the current date and time will be used. When passing a string, it's strongly\nrecommended to use the ISO 8601 format to ensure timezones are handled correctly. To convert a date to this format\nin JavaScript, use [`date.toISOString()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString).",
              "value": { "type": "Date | string", "default": "new Date()" }
            },
            {
              "name": "weekday",
              "description": "The format for displaying the weekday.",
              "value": { "type": "'narrow' | 'short' | 'long'" }
            },
            {
              "name": "era",
              "description": "The format for displaying the era.",
              "value": { "type": "'narrow' | 'short' | 'long'" }
            },
            {
              "name": "year",
              "description": "The format for displaying the year.",
              "value": { "type": "'numeric' | '2-digit'" }
            },
            {
              "name": "month",
              "description": "The format for displaying the month.",
              "value": {
                "type": "'numeric' | '2-digit' | 'narrow' | 'short' | 'long'"
              }
            },
            {
              "name": "day",
              "description": "The format for displaying the day.",
              "value": { "type": "'numeric' | '2-digit'" }
            },
            {
              "name": "hour",
              "description": "The format for displaying the hour.",
              "value": { "type": "'numeric' | '2-digit'" }
            },
            {
              "name": "minute",
              "description": "The format for displaying the minute.",
              "value": { "type": "'numeric' | '2-digit'" }
            },
            {
              "name": "second",
              "description": "The format for displaying the second.",
              "value": { "type": "'numeric' | '2-digit'" }
            },
            {
              "name": "time-zone-name",
              "description": "The format for displaying the time.",
              "value": { "type": "'short' | 'long'" }
            },
            {
              "name": "time-zone",
              "description": "The time zone to express the time in.",
              "value": { "type": "string" }
            },
            {
              "name": "hour-format",
              "description": "The format for displaying the hour.",
              "value": { "type": "'auto' | '12' | '24'", "default": "'auto'" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "date",
                "description": "The date/time to format. If not set, the current date and time will be used. When passing a string, it's strongly\nrecommended to use the ISO 8601 format to ensure timezones are handled correctly. To convert a date to this format\nin JavaScript, use [`date.toISOString()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString).",
                "type": "Date | string"
              },
              {
                "name": "weekday",
                "description": "The format for displaying the weekday.",
                "type": "'narrow' | 'short' | 'long'"
              },
              {
                "name": "era",
                "description": "The format for displaying the era.",
                "type": "'narrow' | 'short' | 'long'"
              },
              {
                "name": "year",
                "description": "The format for displaying the year.",
                "type": "'numeric' | '2-digit'"
              },
              {
                "name": "month",
                "description": "The format for displaying the month.",
                "type": "'numeric' | '2-digit' | 'narrow' | 'short' | 'long'"
              },
              {
                "name": "day",
                "description": "The format for displaying the day.",
                "type": "'numeric' | '2-digit'"
              },
              {
                "name": "hour",
                "description": "The format for displaying the hour.",
                "type": "'numeric' | '2-digit'"
              },
              {
                "name": "minute",
                "description": "The format for displaying the minute.",
                "type": "'numeric' | '2-digit'"
              },
              {
                "name": "second",
                "description": "The format for displaying the second.",
                "type": "'numeric' | '2-digit'"
              },
              {
                "name": "timeZoneName",
                "description": "The format for displaying the time.",
                "type": "'short' | 'long'"
              },
              {
                "name": "timeZone",
                "description": "The time zone to express the time in.",
                "type": "string"
              },
              {
                "name": "hourFormat",
                "description": "The format for displaying the hour.",
                "type": "'auto' | '12' | '24'"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-format-number",
          "description": "Formats a number using the specified locale and options.\n---\n",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "The number to format.",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "type",
              "description": "The formatting style to use.",
              "value": {
                "type": "'currency' | 'decimal' | 'percent'",
                "default": "'decimal'"
              }
            },
            {
              "name": "without-grouping",
              "description": "Turns off grouping separators.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "currency",
              "description": "The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code to use when formatting.",
              "value": { "type": "string", "default": "'USD'" }
            },
            {
              "name": "currency-display",
              "description": "How to display the currency.",
              "value": {
                "type": "'symbol' | 'narrowSymbol' | 'code' | 'name'",
                "default": "'symbol'"
              }
            },
            {
              "name": "minimum-integer-digits",
              "description": "The minimum number of integer digits to use. Possible values are 1-21.",
              "value": { "type": "number" }
            },
            {
              "name": "minimum-fraction-digits",
              "description": "The minimum number of fraction digits to use. Possible values are 0-100.",
              "value": { "type": "number" }
            },
            {
              "name": "maximum-fraction-digits",
              "description": "The maximum number of fraction digits to use. Possible values are 0-100.",
              "value": { "type": "number" }
            },
            {
              "name": "minimum-significant-digits",
              "description": "The minimum number of significant digits to use. Possible values are 1-21.",
              "value": { "type": "number" }
            },
            {
              "name": "maximum-significant-digits",
              "description": "The maximum number of significant digits to use. Possible values are 1-21.",
              "value": { "type": "number" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "The number to format.",
                "type": "number"
              },
              {
                "name": "type",
                "description": "The formatting style to use.",
                "type": "'currency' | 'decimal' | 'percent'"
              },
              {
                "name": "withoutGrouping",
                "description": "Turns off grouping separators.",
                "type": "boolean"
              },
              {
                "name": "currency",
                "description": "The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code to use when formatting.",
                "type": "string"
              },
              {
                "name": "currencyDisplay",
                "description": "How to display the currency.",
                "type": "'symbol' | 'narrowSymbol' | 'code' | 'name'"
              },
              {
                "name": "minimumIntegerDigits",
                "description": "The minimum number of integer digits to use. Possible values are 1-21.",
                "type": "number"
              },
              {
                "name": "minimumFractionDigits",
                "description": "The minimum number of fraction digits to use. Possible values are 0-100.",
                "type": "number"
              },
              {
                "name": "maximumFractionDigits",
                "description": "The maximum number of fraction digits to use. Possible values are 0-100.",
                "type": "number"
              },
              {
                "name": "minimumSignificantDigits",
                "description": "The minimum number of significant digits to use. Possible values are 1-21.",
                "type": "number"
              },
              {
                "name": "maximumSignificantDigits",
                "description": "The maximum number of significant digits to use. Possible values are 1-21.",
                "type": "number"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-header",
          "description": "Headers provide a consistent app bar with a logo area and a content area for navigation, search, or actions.\n---\n\n\n### **Slots:**\n - _default_ - The header's content (navigation, search, actions, etc.). Visually leading; use `margin-inline-start: auto` on a child to push it (and everything after it) to the right of the content row.\n- **logo** - The branding logo. Rendered first in the DOM (so assistive technologies reach the home link before the navigation) but visually trailing. Images and inline SVGs are sized to fit the header height automatically.\n\n### **CSS Parts:**\n - **content** - The wrapper around the default slot.\n- **logo** - The wrapper around the `logo` slot.",
          "doc-url": "",
          "attributes": [
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "The header's content (navigation, search, actions, etc.). Visually leading; use `margin-inline-start: auto` on a child to push it (and everything after it) to the right of the content row."
            },
            {
              "name": "logo",
              "description": "The branding logo. Rendered first in the DOM (so assistive technologies reach the home link before the navigation) but visually trailing. Images and inline SVGs are sized to fit the header height automatically."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-input",
          "description": "Inputs collect data from the user.\n---\n\n\n### **Events:**\n - **input** - Emitted when the control receives input.\n- **change** - Emitted when an alteration to the control's value is committed by the user.\n- **blur** - Emitted when the control loses focus.\n- **focus** - Emitted when the control gains focus.\n- **ed-clear** - Emitted when the clear button is activated.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **focus(options: _FocusOptions_)** - Sets focus on the input.\n- **blur()** - Removes focus from the input.\n- **select()** - Selects all the text in the input.\n- **setSelectionRange(selectionStart: _number_, selectionEnd: _number_, selectionDirection: _'forward' | 'backward' | 'none'_)** - Sets the start and end positions of the text selection (0-based).\n- **setRangeText(replacement: _string_, start: _number_, end: _number_, selectMode: _'select' | 'start' | 'end' | 'preserve'_)** - Replaces a range of text with a new string.\n- **showPicker()** - Displays the browser picker for an input element (only works if the browser supports it for the input type).\n- **stepUp()** - Increments the value of a numeric input type by the value of the step attribute.\n- **stepDown()** - Decrements the value of a numeric input type by the value of the step attribute.\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **formStateRestoreCallback(state: _string | File | FormData | null_, reason: _'autocomplete' | 'restore'_)** - Called when the browser is trying to restore element’s state to state in which case reason is \"restore\", or when\nthe browser is trying to fulfill autofill on behalf of user in which case reason is \"autocomplete\". In the case of\n\"restore\", state is a string, File, or FormData object previously set as the second argument to setFormValue.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n### **Slots:**\n - **label** - The input's label. Alternatively, you can use the `label` attribute.\n- **start** - An element, such as `<ed-icon>`, placed at the start of the input control.\n- **end** - An element, such as `<ed-icon>`, placed at the end of the input control.\n- **clear-icon** - An icon to use in lieu of the default clear icon.\n- **show-password-icon** - An icon to use in lieu of the default show password icon.\n- **hide-password-icon** - An icon to use in lieu of the default hide password icon.\n- **hint** - Text that describes how to use the input. Alternatively, you can use the `hint` attribute.\n\n### **CSS Parts:**\n - **label** - The label\n- **hint** - The hint's wrapper.\n- **base** - The wrapper being rendered as an input\n- **input** - The internal `<input>` control.\n- **start** - The container that wraps the `start` slot.\n- **clear-button** - The clear button.\n- **password-toggle-button** - The password toggle button.\n- **end** - The container that wraps the `end` slot.",
          "doc-url": "",
          "attributes": [
            { "name": "title", "value": { "type": "string", "default": "''" } },
            {
              "name": "type",
              "description": "The type of input. Works the same as a native `<input>` element, but only a subset of types are supported. Defaults\nto `text`.",
              "value": {
                "type": "| 'date'\n    | 'datetime-local'\n    | 'email'\n    | 'number'\n    | 'password'\n    | 'search'\n    | 'tel'\n    | 'text'\n    | 'time'\n    | 'url'",
                "default": "'text'"
              }
            },
            {
              "name": "value",
              "description": "The default value of the form control. Primarily used for resetting the form control.",
              "value": { "type": "string | null" }
            },
            {
              "name": "density",
              "description": "Controls the component's spacing density without affecting font-size.",
              "value": {
                "type": "'compact' | 'default' | 'spacious'",
                "default": "'default'"
              }
            },
            {
              "name": "pill",
              "description": "Draws a pill-style input with rounded edges.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "label",
              "description": "The input's label. If you need to display HTML, use the `label` slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "with-clear",
              "description": "Adds a clear button when the input is not empty.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "placeholder",
              "description": "Placeholder text to show as a hint when the input is empty.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "readonly",
              "description": "Makes the input readonly.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "password-toggle",
              "description": "Adds a button to toggle the password's visibility. Only applies to password types.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "password-visible",
              "description": "Determines whether or not the password is currently visible. Only applies to password input types.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "without-spin-buttons",
              "description": "Hides the browser's built-in increment/decrement spin buttons for number inputs.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "required",
              "description": "Makes the input a required field.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "pattern",
              "description": "A regular expression pattern to validate input against.",
              "value": { "type": "string" }
            },
            {
              "name": "minlength",
              "description": "The minimum length of input that will be considered valid.",
              "value": { "type": "number" }
            },
            {
              "name": "maxlength",
              "description": "The maximum length of input that will be considered valid.",
              "value": { "type": "number" }
            },
            {
              "name": "min",
              "description": "The input's minimum value. Only applies to date and number input types.",
              "value": { "type": "number | string" }
            },
            {
              "name": "max",
              "description": "The input's maximum value. Only applies to date and number input types.",
              "value": { "type": "number | string" }
            },
            {
              "name": "step",
              "description": "Specifies the granularity that the value must adhere to, or the special value `any` which means no stepping is\nimplied, allowing any numeric value. Only applies to date and number input types.",
              "value": { "type": "number | 'any'" }
            },
            {
              "name": "autocapitalize",
              "description": "Controls whether and how text input is automatically capitalized as it is entered by the user.",
              "value": {
                "type": "'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters'"
              }
            },
            {
              "name": "autocorrect",
              "description": "Indicates whether the browser's autocorrect feature is on or off. When set as an attribute, use `\"off\"` or `\"on\"`.\nWhen set as a property, use `true` or `false`.",
              "value": { "type": "boolean" }
            },
            {
              "name": "autocomplete",
              "description": "Specifies what permission the browser has to provide assistance in filling out form field values. Refer to\n[this page on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for available values.",
              "value": { "type": "string" }
            },
            {
              "name": "autofocus",
              "description": "Indicates that the input should receive focus on page load.",
              "value": { "type": "boolean" }
            },
            {
              "name": "enterkeyhint",
              "description": "Used to customize the label or icon of the Enter key on virtual keyboards.",
              "value": {
                "type": "'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'"
              }
            },
            {
              "name": "spellcheck",
              "description": "Enables spell checking on the input.",
              "value": { "type": "boolean", "default": "true" }
            },
            {
              "name": "inputmode",
              "description": "Tells the browser what type of data will be entered by the user, allowing it to display the appropriate virtual\nkeyboard on supportive devices.",
              "value": {
                "type": "'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'"
              }
            },
            {
              "name": "with-label",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element so the server-rendered markup includes the label before the component hydrates on the client.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "with-hint",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup includes the hint before the component hydrates on the client.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "error",
              "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "warning",
              "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "ai",
              "description": "Draws an ai-style input with AI colored border and icon.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "hint",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "name",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "disabled",
              "description": "Disables the form control.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "label",
              "description": "The input's label. Alternatively, you can use the `label` attribute."
            },
            {
              "name": "start",
              "description": "An element, such as `<ed-icon>`, placed at the start of the input control."
            },
            {
              "name": "end",
              "description": "An element, such as `<ed-icon>`, placed at the end of the input control."
            },
            {
              "name": "clear-icon",
              "description": "An icon to use in lieu of the default clear icon."
            },
            {
              "name": "show-password-icon",
              "description": "An icon to use in lieu of the default show password icon."
            },
            {
              "name": "hide-password-icon",
              "description": "An icon to use in lieu of the default hide password icon."
            },
            {
              "name": "hint",
              "description": "Text that describes how to use the input. Alternatively, you can use the `hint` attribute."
            }
          ],
          "events": [
            {
              "name": "input",
              "type": "InputEvent",
              "description": "Emitted when the control receives input."
            },
            {
              "name": "change",
              "type": "Event",
              "description": "Emitted when an alteration to the control's value is committed by the user."
            },
            {
              "name": "blur",
              "description": "Emitted when the control loses focus."
            },
            {
              "name": "focus",
              "description": "Emitted when the control gains focus."
            },
            {
              "name": "ed-clear",
              "description": "Emitted when the clear button is activated."
            },
            {
              "name": "ed-invalid",
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied."
            }
          ],
          "js": {
            "properties": [
              { "name": "assumeInteractionOn", "type": "string[]" },
              {
                "name": "input",
                "type": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              { "name": "title", "type": "string" },
              {
                "name": "type",
                "description": "The type of input. Works the same as a native `<input>` element, but only a subset of types are supported. Defaults\nto `text`.",
                "type": "| 'date'\n    | 'datetime-local'\n    | 'email'\n    | 'number'\n    | 'password'\n    | 'search'\n    | 'tel'\n    | 'text'\n    | 'time'\n    | 'url'"
              },
              {
                "name": "value",
                "description": "The current value of the input, submitted as a name/value pair with form data."
              },
              {
                "name": "defaultValue",
                "description": "The default value of the form control. Primarily used for resetting the form control.",
                "type": "string | null"
              },
              {
                "name": "density",
                "description": "Controls the component's spacing density without affecting font-size.",
                "type": "'compact' | 'default' | 'spacious'"
              },
              {
                "name": "pill",
                "description": "Draws a pill-style input with rounded edges.",
                "type": "boolean"
              },
              {
                "name": "label",
                "description": "The input's label. If you need to display HTML, use the `label` slot instead.",
                "type": "string"
              },
              {
                "name": "withClear",
                "description": "Adds a clear button when the input is not empty.",
                "type": "boolean"
              },
              {
                "name": "placeholder",
                "description": "Placeholder text to show as a hint when the input is empty.",
                "type": "string"
              },
              {
                "name": "readonly",
                "description": "Makes the input readonly.",
                "type": "boolean"
              },
              {
                "name": "passwordToggle",
                "description": "Adds a button to toggle the password's visibility. Only applies to password types.",
                "type": "boolean"
              },
              {
                "name": "passwordVisible",
                "description": "Determines whether or not the password is currently visible. Only applies to password input types.",
                "type": "boolean"
              },
              {
                "name": "withoutSpinButtons",
                "description": "Hides the browser's built-in increment/decrement spin buttons for number inputs.",
                "type": "boolean"
              },
              {
                "name": "required",
                "description": "Makes the input a required field.",
                "type": "boolean"
              },
              {
                "name": "pattern",
                "description": "A regular expression pattern to validate input against.",
                "type": "string"
              },
              {
                "name": "minlength",
                "description": "The minimum length of input that will be considered valid.",
                "type": "number"
              },
              {
                "name": "maxlength",
                "description": "The maximum length of input that will be considered valid.",
                "type": "number"
              },
              {
                "name": "min",
                "description": "The input's minimum value. Only applies to date and number input types.",
                "type": "number | string"
              },
              {
                "name": "max",
                "description": "The input's maximum value. Only applies to date and number input types.",
                "type": "number | string"
              },
              {
                "name": "step",
                "description": "Specifies the granularity that the value must adhere to, or the special value `any` which means no stepping is\nimplied, allowing any numeric value. Only applies to date and number input types.",
                "type": "number | 'any'"
              },
              {
                "name": "autocapitalize",
                "description": "Controls whether and how text input is automatically capitalized as it is entered by the user.",
                "type": "'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters'"
              },
              {
                "name": "autocorrect",
                "description": "Indicates whether the browser's autocorrect feature is on or off. When set as an attribute, use `\"off\"` or `\"on\"`.\nWhen set as a property, use `true` or `false`.",
                "type": "boolean"
              },
              {
                "name": "autocomplete",
                "description": "Specifies what permission the browser has to provide assistance in filling out form field values. Refer to\n[this page on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for available values.",
                "type": "string"
              },
              {
                "name": "autofocus",
                "description": "Indicates that the input should receive focus on page load.",
                "type": "boolean"
              },
              {
                "name": "enterkeyhint",
                "description": "Used to customize the label or icon of the Enter key on virtual keyboards.",
                "type": "'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'"
              },
              {
                "name": "spellcheck",
                "description": "Enables spell checking on the input.",
                "type": "boolean"
              },
              {
                "name": "inputmode",
                "description": "Tells the browser what type of data will be entered by the user, allowing it to display the appropriate virtual\nkeyboard on supportive devices.",
                "type": "'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'"
              },
              {
                "name": "withLabel",
                "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element so the server-rendered markup includes the label before the component hydrates on the client.",
                "type": "boolean"
              },
              {
                "name": "withHint",
                "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup includes the hint before the component hydrates on the client.",
                "type": "boolean"
              },
              {
                "name": "error",
                "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
                "type": "string | null"
              },
              {
                "name": "warning",
                "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
                "type": "string | null"
              },
              {
                "name": "ai",
                "description": "Draws an ai-style input with AI colored border and icon.",
                "type": "boolean"
              },
              {
                "name": "hint",
                "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
                "type": "string"
              },
              {
                "name": "name",
                "description": "The name of the input, submitted as a name/value pair with form data.",
                "type": "string | null"
              },
              {
                "name": "disabled",
                "description": "Disables the form control.",
                "type": "boolean"
              },
              {
                "name": "assumeInteractionOnMode",
                "type": "'combined' | 'separated' | string"
              },
              { "name": "valueHasChanged", "type": "boolean" },
              { "name": "hasInteracted", "type": "boolean" },
              { "name": "states", "type": "CustomStateSet" },
              { "name": "emitInvalid" },
              { "name": "labels" },
              {
                "name": "form",
                "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
                "type": "HTMLFormElement | null"
              },
              { "name": "validity" },
              { "name": "willValidate" },
              { "name": "validationMessage" },
              {
                "name": "validationTarget",
                "description": "Override this to change where constraint validation popups are anchored.",
                "type": "undefined | HTMLElement"
              },
              { "name": "allValidators" },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "input",
                "type": "InputEvent",
                "description": "Emitted when the control receives input."
              },
              {
                "name": "change",
                "type": "Event",
                "description": "Emitted when an alteration to the control's value is committed by the user."
              },
              {
                "name": "blur",
                "description": "Emitted when the control loses focus."
              },
              {
                "name": "focus",
                "description": "Emitted when the control gains focus."
              },
              {
                "name": "ed-clear",
                "description": "Emitted when the clear button is activated."
              },
              {
                "name": "ed-invalid",
                "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied."
              }
            ]
          }
        },
        {
          "name": "ed-intersection-observer",
          "description": "Tracks immediate child elements and fires events as they move in and out of view.\n---\n\n\n### **Events:**\n - **ed-intersect** - Fired when a tracked element begins or ceases intersecting.\n\n### **Slots:**\n - _default_ - Elements to track. Only immediate children of the host are monitored.",
          "doc-url": "",
          "attributes": [
            {
              "name": "root",
              "description": "Element ID to define the viewport boundaries for tracked targets.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "rootElement",
              "description": "Explicit root element. Use this instead of the root (ID) when you use the intersection-observer inside another shadow dom",
              "value": { "type": "Element | null | undefined" }
            },
            {
              "name": "root-margin",
              "description": "Offset space around the root boundary. Accepts values like CSS margin syntax.",
              "value": { "type": "string", "default": "'0px'" }
            },
            {
              "name": "threshold",
              "description": "One or more space-separated values representing visibility percentages that trigger the observer callback.",
              "value": { "type": "string", "default": "'0'" }
            },
            {
              "name": "intersect-class",
              "description": "CSS class applied to elements during intersection. Automatically removed when elements leave\nthe viewport, enabling pure CSS styling based on visibility state.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "once",
              "description": "If enabled, observation ceases after initial intersection.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "disabled",
              "description": "Deactivates the intersection observer functionality.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "Elements to track. Only immediate children of the host are monitored."
            }
          ],
          "events": [
            {
              "name": "ed-intersect",
              "type": "{ entry: IntersectionObserverEntry }",
              "description": "Fired when a tracked element begins or ceases intersecting."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "root",
                "description": "Element ID to define the viewport boundaries for tracked targets.",
                "type": "string | null"
              },
              {
                "name": "rootElement",
                "description": "Explicit root element. Use this instead of the root (ID) when you use the intersection-observer inside another shadow dom",
                "type": "Element | null | undefined"
              },
              {
                "name": "rootMargin",
                "description": "Offset space around the root boundary. Accepts values like CSS margin syntax.",
                "type": "string"
              },
              {
                "name": "threshold",
                "description": "One or more space-separated values representing visibility percentages that trigger the observer callback.",
                "type": "string"
              },
              {
                "name": "intersectClass",
                "description": "CSS class applied to elements during intersection. Automatically removed when elements leave\nthe viewport, enabling pure CSS styling based on visibility state.",
                "type": "string"
              },
              {
                "name": "once",
                "description": "If enabled, observation ceases after initial intersection.",
                "type": "boolean"
              },
              {
                "name": "disabled",
                "description": "Deactivates the intersection observer functionality.",
                "type": "boolean"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-intersect",
                "type": "{ entry: IntersectionObserverEntry }",
                "description": "Fired when a tracked element begins or ceases intersecting."
              }
            ]
          }
        },
        {
          "name": "ed-markdown",
          "description": "Renders markdown content in plain ol' HTML.\n---\n\n\n### **Methods:**\n - **getMarked(): _Marked_** - Returns the shared Marked instance used by all `<ed-markdown>` components.\n- **updateAll(): _void_** - Re-renders all connected `<ed-markdown>` instances. Call this after changing the Marked configuration.\n- **renderMarkdown()** - Reads the script content, normalizes whitespace, parses markdown, and injects the result.",
          "doc-url": "",
          "attributes": [
            {
              "name": "tab-size",
              "description": "The tab stop width used when converting leading tabs to spaces during whitespace normalization.",
              "value": { "type": "number", "default": "4" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "tabSize",
                "description": "The tab stop width used when converting leading tabs to spaces during whitespace normalization.",
                "type": "number"
              },
              {
                "name": "marked",
                "description": "A reference to the shared Marked instance for convenience. Equivalent to `EdMarkdown.getMarked()`.",
                "type": "Marked"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-mutation-observer",
          "description": "The Mutation Observer component offers a thin, declarative interface to the [`MutationObserver API`](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver).\n---\n\n\n### **Events:**\n - **ed-mutation** - Emitted when a mutation is observed. The event detail contains a `mutationList` array of [`MutationRecord`](https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord) objects.\n\n### **Slots:**\n - _default_ - The content to watch for mutations.",
          "doc-url": "",
          "attributes": [
            {
              "name": "attr",
              "description": "Watches for changes to attributes. To watch only specific attributes, separate them by a space, e.g.\n`attr=\"class id title\"`. To watch all attributes, use `*`.",
              "value": { "type": "string" }
            },
            {
              "name": "attr-old-value",
              "description": "Indicates whether or not the attribute's previous value should be recorded when monitoring changes.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "char-data",
              "description": "Watches for changes to the character data contained within the node.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "char-data-old-value",
              "description": "Indicates whether or not the previous value of the node's text should be recorded.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "child-list",
              "description": "Watches for the addition or removal of new child nodes.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "disabled",
              "description": "Disables the observer.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            { "name": "", "description": "The content to watch for mutations." }
          ],
          "events": [
            {
              "name": "ed-mutation",
              "description": "Emitted when a mutation is observed. The event detail contains a `mutationList` array of [`MutationRecord`](https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord) objects."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "attr",
                "description": "Watches for changes to attributes. To watch only specific attributes, separate them by a space, e.g.\n`attr=\"class id title\"`. To watch all attributes, use `*`.",
                "type": "string"
              },
              {
                "name": "attrOldValue",
                "description": "Indicates whether or not the attribute's previous value should be recorded when monitoring changes.",
                "type": "boolean"
              },
              {
                "name": "charData",
                "description": "Watches for changes to the character data contained within the node.",
                "type": "boolean"
              },
              {
                "name": "charDataOldValue",
                "description": "Indicates whether or not the previous value of the node's text should be recorded.",
                "type": "boolean"
              },
              {
                "name": "childList",
                "description": "Watches for the addition or removal of new child nodes.",
                "type": "boolean"
              },
              {
                "name": "disabled",
                "description": "Disables the observer.",
                "type": "boolean"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-mutation",
                "description": "Emitted when a mutation is observed. The event detail contains a `mutationList` array of [`MutationRecord`](https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord) objects."
              }
            ]
          }
        },
        {
          "name": "ed-notification",
          "description": "Notifications display important inline messages with a title, optional description, and optional action / close.\n---\n\n\n### **Events:**\n - **ed-show** - Emitted when the notification opens.\n- **ed-after-show** - Emitted after the notification opens and all animations are complete.\n- **ed-hide** - Emitted when the notification closes.\n- **ed-after-hide** - Emitted after the notification closes and all animations are complete.\n\n### **Methods:**\n - **show()** - Shows the notification.\n- **hide()** - Hides the notification.\n\n### **Slots:**\n - _default_ - The notification's title (required, vertically centered against the icon).\n- **description** - Optional description content shown below the title row. When `collapsible` is set, this content is hidden until the user expands the toggle.\n- **icon** - Override the default variant icon.\n- **action** - Action buttons placed in the title row toolbar. One button is recommended.\n\n### **CSS Parts:**\n - **base** - The container that wraps the whole notification.\n- **icon** - The icon cell.\n- **title** - The title cell.\n- **toggle** - The collapse toggle button (rendered only when `collapsible`).\n- **description** - The description cell (always in DOM when the description slot is filled; hidden when `collapsible` and collapsed).\n- **action** - The action slot wrapper.\n- **close-button** - The close button (rendered only when `closable`).",
          "doc-url": "",
          "attributes": [
            {
              "name": "variant",
              "description": "The notification's theme variant.",
              "value": {
                "type": "'brand' | 'ai' | 'info' | 'neutral' | 'success' | 'warning' | 'danger' | 'new'",
                "default": "'info'"
              }
            },
            {
              "name": "open",
              "description": "Indicates whether the notification is open. Toggle to show/hide; reflects to the attribute.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "closable",
              "description": "When set, renders a close button that hides the notification on click.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "collapsible",
              "description": "When set, the description is hidden behind a toggle in the title row. Only meaningful when a `description` slot is provided.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "The notification's title (required, vertically centered against the icon)."
            },
            {
              "name": "description",
              "description": "Optional description content shown below the title row. When `collapsible` is set, this content is hidden until the user expands the toggle."
            },
            {
              "name": "icon",
              "description": "Override the default variant icon."
            },
            {
              "name": "action",
              "description": "Action buttons placed in the title row toolbar. One button is recommended."
            }
          ],
          "events": [
            {
              "name": "ed-show",
              "description": "Emitted when the notification opens."
            },
            {
              "name": "ed-after-show",
              "description": "Emitted after the notification opens and all animations are complete."
            },
            {
              "name": "ed-hide",
              "description": "Emitted when the notification closes."
            },
            {
              "name": "ed-after-hide",
              "description": "Emitted after the notification closes and all animations are complete."
            }
          ],
          "js": {
            "properties": [
              { "name": "base", "type": "HTMLElement" },
              {
                "name": "variant",
                "description": "The notification's theme variant.",
                "type": "'brand' | 'ai' | 'info' | 'neutral' | 'success' | 'warning' | 'danger' | 'new'"
              },
              {
                "name": "open",
                "description": "Indicates whether the notification is open. Toggle to show/hide; reflects to the attribute.",
                "type": "boolean"
              },
              {
                "name": "closable",
                "description": "When set, renders a close button that hides the notification on click.",
                "type": "boolean"
              },
              {
                "name": "collapsible",
                "description": "When set, the description is hidden behind a toggle in the title row. Only meaningful when a `description` slot is provided.",
                "type": "boolean"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-show",
                "description": "Emitted when the notification opens."
              },
              {
                "name": "ed-after-show",
                "description": "Emitted after the notification opens and all animations are complete."
              },
              {
                "name": "ed-hide",
                "description": "Emitted when the notification closes."
              },
              {
                "name": "ed-after-hide",
                "description": "Emitted after the notification closes and all animations are complete."
              }
            ]
          }
        },
        {
          "name": "ed-page",
          "description": "Basic Page construct\n---\n\n\n### **Methods:**\n - **visiblePixelsInViewport(element: _HTMLElement | null_)** - https://stackoverflow.com/a/26831113\nThis prevents awkward gaps when scrolling the page and the aside / menu dont \"fill\" the gaps.\n- **showNavigation()** - Shows the navigation\n- **hideNavigation()** - Hides the navigation\n- **toggleNavigation()** - Toggles the navigation\n\n### **Slots:**\n - _default_ - The page's main content.\n- **banner** - The banner that gets display above the header. The banner will not be shown if no content is provided.\n- **header** - The header to display at the top of the page. If a banner is present, the header will appear below the banner. The header will not be shown if there is no content.\n- **subheader** - A subheader to display below the `header`. This is a good place to put things like breadcrumbs.\n- **menu** - The left side of the page. If you slot an element in here, you will override the default `navigation` slot and will be handling navigation on your own. This section \"sticks\" to the top as the page scrolls.\n- **navigation-header** - The header for the navigation area. On desktop this is at the top of the `<nav>`. On mobile it renders as the header of `<ed-drawer>`.\n- **navigation** - The main content to display in the navigation area. On desktop it is displayed in a `<nav>` on the left side. On mobile it renders inside `<ed-drawer>`.\n- **navigation-footer** - The footer for the navigation area. On desktop this is at the bottom of the `<nav>`. On mobile it renders as the footer of `<ed-drawer>`.\n- **navigation-toggle** - Use this slot to slot in your own button + icon for toggling the navigation. By default it is an `<ed-button>` with a menu `<ed-icon>`.\n- **navigation-toggle-icon** - Use this to slot in your own icon for toggling the navigation. By default it is a menu `<ed-icon>`.\n- **main-header** - Header to display inline above the main content.\n- **main-footer** - Footer to display inline below the main content.\n- **aside** - Content to be shown on the right side of the page. Typically contains a table of contents, ads, etc. This section \"sticks\" to the top as the page scrolls.\n- **skip-to-content** - The \"skip to content\" slot. You can override this if you would like to customize the `Skip to content` button or add additional \"Skip to X\" links.\n- **footer** - The content to display in the footer. This is always displayed underneath the viewport so will always make the page \"scrollable\".\n\n### **CSS Properties:**\n - **--menu-width** - The width of the page's \"menu\" section. _(default: 16.875rem)_\n- **--main-width** - The width of the page's \"main\" section. _(default: 1fr)_\n- **--aside-width** - The width of the page's \"aside\" section. _(default: auto)_\n- **--banner-height** - The height of the banner. This gets calculated when the page initializes. If the height is known, you can set it here to prevent shifting when the page loads. _(default: 0px)_\n- **--header-height** - The height of the header. This gets calculated when the page initializes. If the height is known, you can set it here to prevent shifting when the page loads. _(default: 0px)_\n- **--subheader-height** - The height of the subheader. This gets calculated when the page initializes. If the height is known, you can set it here to prevent shifting when the page loads. _(default: 0px)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **banner** - The banner to show above header.\n- **header** - The header, usually for top level navigation / branding.\n- **subheader** - Shown below the header, usually intended for things like breadcrumbs and other page level navigation.\n- **body** - The wrapper around menu, main, and aside.\n- **menu** - The left hand side of the page. Generally intended for navigation.\n- **navigation** - The `<nav>` that wraps the navigation slots on desktop viewports.\n- **navigation-header** - The header inside the navigation `<nav>`. On mobile this is the header of `<ed-drawer>`.\n- **navigation-footer** - The footer inside the navigation `<nav>`. On mobile this is the footer of `<ed-drawer>`.\n- **navigation-toggle** - The default `<ed-button>` that toggles the navigation.\n- **navigation-toggle-icon** - The default `<ed-icon>` displayed inside the navigation-toggle button.\n- **main-header** - The header above main content.\n- **main-content** - The main content.\n- **main-footer** - The footer below main content.\n- **aside** - The right hand side of the page. Used for things like table of contents, ads, etc.\n- **skip-link** - The \"skip to main content\" link.\n- **footer** - The footer of the page. This is always below the initial viewport size.\n- **drawer** - The mobile navigation `<ed-drawer>`.",
          "doc-url": "",
          "attributes": [
            {
              "name": "view",
              "description": "The view is a reflection of the \"mobileBreakpoint\", when the page is larger than the `mobile-breakpoint` (768px by\ndefault), it is considered to be a \"desktop\" view. The view is merely a way to distinguish when to show/hide the\nnavigation. You can use additional media queries to make other adjustments to content as necessary.\nThe default is \"desktop\" because the \"mobile navigation drawer\" isn't accessible via SSR due to drawer requiring JS.",
              "value": {
                "type": "'mobile' | 'desktop'",
                "default": "'desktop'"
              }
            },
            {
              "name": "desktop-nav-open",
              "description": "Whether the desktop navigation is open.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "mobile-nav-open",
              "description": "Whether the mobile navigation drawer is open.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "mobile-breakpoint",
              "description": "At what page width to hide the \"navigation\" slot and collapse into a hamburger button.\nAccepts both numbers (interpreted as px) and CSS lengths (e.g. `50em`), which are resolved based on the root element.",
              "value": { "type": "string", "default": "'768px'" }
            },
            {
              "name": "navigation-placement",
              "description": "Where to place the navigation when in the mobile viewport.",
              "value": { "type": "'start' | 'end'", "default": "'start'" }
            },
            {
              "name": "disable-navigation-toggle",
              "description": "Determines whether to hide the default hamburger button.\nThis will automatically flip to \"true\" if you add an element with `data-toggle-nav` anywhere in the element light DOM.\nGenerally this will be set for you and you don't need to do anything, unless you're using SSR, in which case you should set this manually for initial page loads.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            { "name": "", "description": "The page's main content." },
            {
              "name": "banner",
              "description": "The banner that gets display above the header. The banner will not be shown if no content is provided."
            },
            {
              "name": "header",
              "description": "The header to display at the top of the page. If a banner is present, the header will appear below the banner. The header will not be shown if there is no content."
            },
            {
              "name": "subheader",
              "description": "A subheader to display below the `header`. This is a good place to put things like breadcrumbs."
            },
            {
              "name": "menu",
              "description": "The left side of the page. If you slot an element in here, you will override the default `navigation` slot and will be handling navigation on your own. This section \"sticks\" to the top as the page scrolls."
            },
            {
              "name": "navigation-header",
              "description": "The header for the navigation area. On desktop this is at the top of the `<nav>`. On mobile it renders as the header of `<ed-drawer>`."
            },
            {
              "name": "navigation",
              "description": "The main content to display in the navigation area. On desktop it is displayed in a `<nav>` on the left side. On mobile it renders inside `<ed-drawer>`."
            },
            {
              "name": "navigation-footer",
              "description": "The footer for the navigation area. On desktop this is at the bottom of the `<nav>`. On mobile it renders as the footer of `<ed-drawer>`."
            },
            {
              "name": "navigation-toggle",
              "description": "Use this slot to slot in your own button + icon for toggling the navigation. By default it is an `<ed-button>` with a menu `<ed-icon>`."
            },
            {
              "name": "navigation-toggle-icon",
              "description": "Use this to slot in your own icon for toggling the navigation. By default it is a menu `<ed-icon>`."
            },
            {
              "name": "main-header",
              "description": "Header to display inline above the main content."
            },
            {
              "name": "main-footer",
              "description": "Footer to display inline below the main content."
            },
            {
              "name": "aside",
              "description": "Content to be shown on the right side of the page. Typically contains a table of contents, ads, etc. This section \"sticks\" to the top as the page scrolls."
            },
            {
              "name": "skip-to-content",
              "description": "The \"skip to content\" slot. You can override this if you would like to customize the `Skip to content` button or add additional \"Skip to X\" links."
            },
            {
              "name": "footer",
              "description": "The content to display in the footer. This is always displayed underneath the viewport so will always make the page \"scrollable\"."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              { "name": "header", "type": "HTMLElement" },
              { "name": "menu", "type": "HTMLElement" },
              { "name": "main", "type": "HTMLElement" },
              { "name": "aside", "type": "HTMLElement" },
              { "name": "subheader", "type": "HTMLElement" },
              { "name": "footer", "type": "HTMLElement" },
              { "name": "banner", "type": "HTMLElement" },
              { "name": "navigationDrawer", "type": "EdDrawer" },
              { "name": "navigationToggleSlot", "type": "HTMLSlotElement" },
              {
                "name": "view",
                "description": "The view is a reflection of the \"mobileBreakpoint\", when the page is larger than the `mobile-breakpoint` (768px by\ndefault), it is considered to be a \"desktop\" view. The view is merely a way to distinguish when to show/hide the\nnavigation. You can use additional media queries to make other adjustments to content as necessary.\nThe default is \"desktop\" because the \"mobile navigation drawer\" isn't accessible via SSR due to drawer requiring JS.",
                "type": "'mobile' | 'desktop'"
              },
              {
                "name": "desktopNavOpen",
                "description": "Whether the desktop navigation is open.",
                "type": "boolean"
              },
              {
                "name": "mobileNavOpen",
                "description": "Whether the mobile navigation drawer is open.",
                "type": "boolean"
              },
              {
                "name": "mobileBreakpoint",
                "description": "At what page width to hide the \"navigation\" slot and collapse into a hamburger button.\nAccepts both numbers (interpreted as px) and CSS lengths (e.g. `50em`), which are resolved based on the root element.",
                "type": "string"
              },
              {
                "name": "navigationPlacement",
                "description": "Where to place the navigation when in the mobile viewport.",
                "type": "'start' | 'end'"
              },
              {
                "name": "disableNavigationToggle",
                "description": "Determines whether to hide the default hamburger button.\nThis will automatically flip to \"true\" if you add an element with `data-toggle-nav` anywhere in the element light DOM.\nGenerally this will be set for you and you don't need to do anything, unless you're using SSR, in which case you should set this manually for initial page loads.",
                "type": "boolean"
              },
              { "name": "pageResizeObserver" },
              { "name": "updateAsideAndMenuHeights" },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-popover",
          "description": "Popovers display contextual content and interactive elements in a floating panel.\n---\n\n\n### **Events:**\n - **ed-show** - Emitted when the popover begins to show. Canceling this event will stop the popover from showing.\n- **ed-after-show** - Emitted after the popover has shown and all animations are complete.\n- **ed-hide** - Emitted when the popover begins to hide. Canceling this event will stop the popover from hiding.\n- **ed-after-hide** - Emitted after the popover has hidden and all animations are complete.\n\n### **Methods:**\n - **show()** - Shows the popover.\n- **hide()** - Hides the popover.\n\n### **Slots:**\n - _default_ - The popover's content. Interactive elements such as buttons and links are supported.\n\n### **CSS Properties:**\n - **--arrow-size** - The size of the tiny arrow that points to the popover (set to zero to remove). _(default: 0.375rem)_\n- **--max-width** - The maximum width of the popover's body content. _(default: 25rem)_\n- **--show-duration** - The speed of the show animation. _(default: 100ms)_\n- **--hide-duration** - The speed of the hide animation. _(default: 100ms)_\n\n### **CSS Parts:**\n - **dialog** - The native dialog element that contains the popover content.\n- **body** - The popover's body where its content is rendered.\n- **popup** - The internal `<ed-popup>` element that positions the popover.\n- **popup__popup** - The popup's exported `popup` part. Use this to target the popover's popup container.\n- **popup__arrow** - The popup's exported `arrow` part. Use this to target the popover's arrow.",
          "doc-url": "",
          "attributes": [
            {
              "name": "placement",
              "description": "The preferred placement of the popover. Note that the actual placement may vary as needed to keep the popover\ninside of the viewport.",
              "value": {
                "type": "| 'top'\n    | 'top-start'\n    | 'top-end'\n    | 'right'\n    | 'right-start'\n    | 'right-end'\n    | 'bottom'\n    | 'bottom-start'\n    | 'bottom-end'\n    | 'left'\n    | 'left-start'\n    | 'left-end'",
                "default": "'top'"
              }
            },
            {
              "name": "open",
              "description": "Shows or hides the popover.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "distance",
              "description": "The distance in pixels from which to offset the popover away from its target.",
              "value": { "type": "number", "default": "8" }
            },
            {
              "name": "skidding",
              "description": "The distance in pixels from which to offset the popover along its target.",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "for",
              "description": "The ID of the popover's anchor element. This must be an interactive/focusable element such as a button.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "without-arrow",
              "description": "Removes the arrow from the popover.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "The popover's content. Interactive elements such as buttons and links are supported."
            }
          ],
          "events": [
            {
              "name": "ed-show",
              "description": "Emitted when the popover begins to show. Canceling this event will stop the popover from showing."
            },
            {
              "name": "ed-after-show",
              "description": "Emitted after the popover has shown and all animations are complete."
            },
            {
              "name": "ed-hide",
              "description": "Emitted when the popover begins to hide. Canceling this event will stop the popover from hiding."
            },
            {
              "name": "ed-after-hide",
              "description": "Emitted after the popover has hidden and all animations are complete."
            }
          ],
          "js": {
            "properties": [
              { "name": "dialog", "type": "HTMLDialogElement" },
              { "name": "body", "type": "HTMLElement" },
              { "name": "popup", "type": "EdPopup" },
              { "name": "anchor", "type": "null | Element" },
              {
                "name": "placement",
                "description": "The preferred placement of the popover. Note that the actual placement may vary as needed to keep the popover\ninside of the viewport.",
                "type": "| 'top'\n    | 'top-start'\n    | 'top-end'\n    | 'right'\n    | 'right-start'\n    | 'right-end'\n    | 'bottom'\n    | 'bottom-start'\n    | 'bottom-end'\n    | 'left'\n    | 'left-start'\n    | 'left-end'"
              },
              {
                "name": "open",
                "description": "Shows or hides the popover.",
                "type": "boolean"
              },
              {
                "name": "distance",
                "description": "The distance in pixels from which to offset the popover away from its target.",
                "type": "number"
              },
              {
                "name": "skidding",
                "description": "The distance in pixels from which to offset the popover along its target.",
                "type": "number"
              },
              {
                "name": "for",
                "description": "The ID of the popover's anchor element. This must be an interactive/focusable element such as a button.",
                "type": "string | null"
              },
              {
                "name": "withoutArrow",
                "description": "Removes the arrow from the popover.",
                "type": "boolean"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-show",
                "description": "Emitted when the popover begins to show. Canceling this event will stop the popover from showing."
              },
              {
                "name": "ed-after-show",
                "description": "Emitted after the popover has shown and all animations are complete."
              },
              {
                "name": "ed-hide",
                "description": "Emitted when the popover begins to hide. Canceling this event will stop the popover from hiding."
              },
              {
                "name": "ed-after-hide",
                "description": "Emitted after the popover has hidden and all animations are complete."
              }
            ]
          }
        },
        {
          "name": "ed-progress-bar",
          "description": "Progress bars are used to show the status of an ongoing operation.\n---\n\n\n### **Slots:**\n - **label** - The progress bar's label. Alternatively, you can use the `label` attribute.\n\n### **CSS Properties:**\n - **--track-height** - The height of the track. _(default: var(--ed-space-2xs))_\n- **--track-color** - The color of the track. _(default: var(--ed-color-neutral-240))_\n- **--indicator-color** - The color of the indicator. _(default: var(--ed-color-brand-fill-normal))_\n\n### **CSS Parts:**\n - **form-control-label** - The label element above the bar.\n- **base** - The component's base wrapper (track).\n- **indicator** - The progress bar's indicator (fill).",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "The current progress as a percentage, 0 to 100.",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "indeterminate",
              "description": "When true, percentage is ignored and the progress bar is drawn in an indeterminate state.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "label",
              "description": "The progress bar's label. If you need to display HTML, use the `label` slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "label",
              "description": "The progress bar's label. Alternatively, you can use the `label` attribute."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "value",
                "description": "The current progress as a percentage, 0 to 100.",
                "type": "number"
              },
              {
                "name": "indeterminate",
                "description": "When true, percentage is ignored and the progress bar is drawn in an indeterminate state.",
                "type": "boolean"
              },
              {
                "name": "label",
                "description": "The progress bar's label. If you need to display HTML, use the `label` slot instead.",
                "type": "string"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-radio",
          "description": "Radios allow the user to select a single option from a group.\n---\n\n\n### **Events:**\n - **blur** - Emitted when the control loses focus.\n- **focus** - Emitted when the control gains focus.\n\n### **Methods:**\n - **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **formStateRestoreCallback(state: _string | File | FormData | null_, reason: _'autocomplete' | 'restore'_)** - Called when the browser is trying to restore element’s state to state in which case reason is \"restore\", or when\nthe browser is trying to fulfill autofill on behalf of user in which case reason is \"autocomplete\". In the case of\n\"restore\", state is a string, File, or FormData object previously set as the second argument to setFormValue.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n### **Slots:**\n - _default_ - The radio's label.\n\n### **CSS Properties:**\n - **--checked-icon-color** - The color of the checked icon. _(default: undefined)_\n- **--checked-icon-scale** - The size of the checked icon relative to the radio. _(default: undefined)_\n\n### **CSS Parts:**\n - **control** - The circular container that wraps the radio's checked state.\n- **checked-icon** - The checked icon.\n- **label** - The container that wraps the radio's label.",
          "doc-url": "",
          "attributes": [
            {
              "name": "value",
              "description": "The radio's value. When selected, the radio group will receive this value.",
              "value": { "type": "string" }
            },
            {
              "name": "disabled",
              "description": "Disables the radio.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "appearance",
              "description": "The radio's visual appearance.",
              "value": {
                "type": "'default' | 'button'",
                "default": "'default'"
              }
            },
            {
              "name": "error",
              "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "warning",
              "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "ai",
              "description": "Draws an ai-style input with AI colored border and icon.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "hint",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "name",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "value": { "type": "string | null", "default": "null" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [{ "name": "", "description": "The radio's label." }],
          "events": [
            {
              "name": "blur",
              "description": "Emitted when the control loses focus."
            },
            {
              "name": "focus",
              "description": "Emitted when the control gains focus."
            }
          ],
          "js": {
            "properties": [
              { "name": "assumeInteractionOn", "type": "string[]" },
              {
                "name": "assumeInteractionOnMode",
                "type": "'combined' | 'separated' | string"
              },
              { "name": "checked", "type": "boolean" },
              {
                "name": "value",
                "description": "The radio's value. When selected, the radio group will receive this value.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables the radio.",
                "type": "boolean"
              },
              {
                "name": "appearance",
                "description": "The radio's visual appearance.",
                "type": "'default' | 'button'"
              },
              {
                "name": "error",
                "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
                "type": "string | null"
              },
              {
                "name": "warning",
                "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
                "type": "string | null"
              },
              {
                "name": "ai",
                "description": "Draws an ai-style input with AI colored border and icon.",
                "type": "boolean"
              },
              {
                "name": "hint",
                "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
                "type": "string"
              },
              {
                "name": "name",
                "description": "The name of the input, submitted as a name/value pair with form data.",
                "type": "string | null"
              },
              { "name": "required", "type": "boolean" },
              {
                "name": "input",
                "type": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              { "name": "valueHasChanged", "type": "boolean" },
              { "name": "hasInteracted", "type": "boolean" },
              { "name": "states", "type": "CustomStateSet" },
              { "name": "emitInvalid" },
              { "name": "labels" },
              {
                "name": "form",
                "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
                "type": "HTMLFormElement | null"
              },
              { "name": "validity" },
              { "name": "willValidate" },
              { "name": "validationMessage" },
              {
                "name": "validationTarget",
                "description": "Override this to change where constraint validation popups are anchored.",
                "type": "undefined | HTMLElement"
              },
              { "name": "allValidators" },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "blur",
                "description": "Emitted when the control loses focus."
              },
              {
                "name": "focus",
                "description": "Emitted when the control gains focus."
              }
            ]
          }
        },
        {
          "name": "ed-radio-group",
          "description": "Radio groups are used to group multiple [radios](/a/eurodata-ui/docs/components/radio) so they function as a single form control.\n---\n\n\n### **Events:**\n - **input** - Emitted when the radio group receives user input.\n- **change** - Emitted when the radio group's selected value changes.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **focus(options: _FocusOptions_)** - Sets focus on the radio group.\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **formStateRestoreCallback(state: _string | File | FormData | null_, reason: _'autocomplete' | 'restore'_)** - Called when the browser is trying to restore element’s state to state in which case reason is \"restore\", or when\nthe browser is trying to fulfill autofill on behalf of user in which case reason is \"autocomplete\". In the case of\n\"restore\", state is a string, File, or FormData object previously set as the second argument to setFormValue.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n### **Slots:**\n - _default_ - The default slot where `<ed-radio>` elements are placed.\n- **label** - The radio group's label. Required for proper accessibility. Alternatively, you can use the `label` attribute.\n- **hint** - Text that describes how to use the radio group. Alternatively, you can use the `hint` attribute.\n\n### **CSS Parts:**\n - **form-control** - The form control that wraps the label, input, and hint.\n- **form-control-label** - The label's wrapper.\n- **form-control-input** - The input's wrapper.\n- **radios** - The wrapper than surrounds radio items, styled as a flex container by default.\n- **hint** - The hint's wrapper.",
          "doc-url": "",
          "attributes": [
            {
              "name": "label",
              "description": "The radio group's label. Required for proper accessibility. If you need to display HTML, use the `label` slot\ninstead.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "name",
              "description": "The name of the radio group, submitted as a name/value pair with form data.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "disabled",
              "description": "Disables the radio group and all child radios.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "orientation",
              "description": "The orientation in which to show radio items.",
              "value": {
                "type": "'horizontal' | 'vertical'",
                "default": "'vertical'"
              }
            },
            {
              "name": "readonly",
              "description": "Makes the radio group and all child radios readonly.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "value",
              "description": "The default value of the form control. Primarily used for resetting the form control.",
              "value": { "type": "string | null" }
            },
            {
              "name": "required",
              "description": "Ensures a child radio is checked before allowing the containing form to submit.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "with-label",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element so the server-rendered markup includes the label before the component hydrates on the client.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "with-hint",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup includes the hint before the component hydrates on the client.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "appearance",
              "description": "Changes the visual appearance to segmented controls.",
              "value": {
                "type": "'default' | 'button'",
                "default": "'default'"
              }
            },
            {
              "name": "error",
              "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "warning",
              "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "ai",
              "description": "Draws an ai-style input with AI colored border and icon.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "hint",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "The default slot where `<ed-radio>` elements are placed."
            },
            {
              "name": "label",
              "description": "The radio group's label. Required for proper accessibility. Alternatively, you can use the `label` attribute."
            },
            {
              "name": "hint",
              "description": "Text that describes how to use the radio group. Alternatively, you can use the `hint` attribute."
            }
          ],
          "events": [
            {
              "name": "input",
              "type": "InputEvent",
              "description": "Emitted when the radio group receives user input."
            },
            {
              "name": "change",
              "type": "Event",
              "description": "Emitted when the radio group's selected value changes."
            },
            {
              "name": "ed-invalid",
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied."
            }
          ],
          "js": {
            "properties": [
              { "name": "defaultSlot", "type": "HTMLSlotElement" },
              {
                "name": "label",
                "description": "The radio group's label. Required for proper accessibility. If you need to display HTML, use the `label` slot\ninstead.",
                "type": "string"
              },
              {
                "name": "name",
                "description": "The name of the radio group, submitted as a name/value pair with form data.",
                "type": "string | null"
              },
              {
                "name": "disabled",
                "description": "Disables the radio group and all child radios.",
                "type": "boolean"
              },
              {
                "name": "orientation",
                "description": "The orientation in which to show radio items.",
                "type": "'horizontal' | 'vertical'"
              },
              {
                "name": "readonly",
                "description": "Makes the radio group and all child radios readonly.",
                "type": "boolean"
              },
              {
                "name": "value",
                "description": "The current value of the radio group, submitted as a name/value pair with form data."
              },
              {
                "name": "defaultValue",
                "description": "The default value of the form control. Primarily used for resetting the form control.",
                "type": "string | null"
              },
              {
                "name": "required",
                "description": "Ensures a child radio is checked before allowing the containing form to submit.",
                "type": "boolean"
              },
              {
                "name": "withLabel",
                "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element so the server-rendered markup includes the label before the component hydrates on the client.",
                "type": "boolean"
              },
              {
                "name": "withHint",
                "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup includes the hint before the component hydrates on the client.",
                "type": "boolean"
              },
              {
                "name": "appearance",
                "description": "Changes the visual appearance to segmented controls.",
                "type": "'default' | 'button'"
              },
              {
                "name": "validationTarget",
                "description": "We use the first available radio as the validationTarget similar to native HTML that shows the validation popup on\nthe first radio element.",
                "type": "undefined | HTMLElement"
              },
              {
                "name": "error",
                "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
                "type": "string | null"
              },
              {
                "name": "warning",
                "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
                "type": "string | null"
              },
              {
                "name": "ai",
                "description": "Draws an ai-style input with AI colored border and icon.",
                "type": "boolean"
              },
              {
                "name": "hint",
                "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
                "type": "string"
              },
              { "name": "assumeInteractionOn", "type": "string[]" },
              {
                "name": "assumeInteractionOnMode",
                "type": "'combined' | 'separated' | string"
              },
              {
                "name": "input",
                "type": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              { "name": "valueHasChanged", "type": "boolean" },
              { "name": "hasInteracted", "type": "boolean" },
              { "name": "states", "type": "CustomStateSet" },
              { "name": "emitInvalid" },
              { "name": "labels" },
              {
                "name": "form",
                "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
                "type": "HTMLFormElement | null"
              },
              { "name": "validity" },
              { "name": "willValidate" },
              { "name": "validationMessage" },
              { "name": "allValidators" },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "input",
                "type": "InputEvent",
                "description": "Emitted when the radio group receives user input."
              },
              {
                "name": "change",
                "type": "Event",
                "description": "Emitted when the radio group's selected value changes."
              },
              {
                "name": "ed-invalid",
                "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied."
              }
            ]
          }
        },
        {
          "name": "ed-rating",
          "description": "Ratings give users a way to quickly view and provide feedback.\n---\n\n\n### **Events:**\n - **change** - Emitted when the rating's value changes.\n- **ed-hover** - Emitted when the user hovers over a value. The `phase` property indicates when hovering starts, moves to a new value, or ends. The `value` property tells what the rating's value would be if the user were to commit to the hovered value.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **formStateRestoreCallback(state: _string | File | FormData | null_, reason: _'autocomplete' | 'restore'_)** - Called when the browser is trying to restore element’s state to state in which case reason is \"restore\", or when\nthe browser is trying to fulfill autofill on behalf of user in which case reason is \"autocomplete\". In the case of\n\"restore\", state is a string, File, or FormData object previously set as the second argument to setFormValue.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n### **CSS Properties:**\n - **--symbol-color** - The inactive color for symbols. _(default: undefined)_\n- **--symbol-color-active** - The active color for symbols. _(default: undefined)_\n- **--symbol-spacing** - The spacing to use around symbols. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
          "doc-url": "",
          "attributes": [
            {
              "name": "name",
              "description": "The name of the rating, submitted as a name/value pair with form data.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "label",
              "description": "A label that describes the rating to assistive devices.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "value",
              "description": "The current rating.",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "default-value",
              "description": "The default value of the form control. Used to reset the rating to its initial value.",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "max",
              "description": "The highest rating to show.",
              "value": { "type": "number", "default": "5" }
            },
            {
              "name": "precision",
              "description": "The precision at which the rating will increase and decrease. For example, to allow half-star ratings, set this\nattribute to `0.5`.",
              "value": { "type": "number", "default": "1" }
            },
            {
              "name": "readonly",
              "description": "Makes the rating readonly.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "icon",
              "description": "The icon name for inactive (unselected) symbols.",
              "value": { "type": "string", "default": "'favorite'" }
            },
            {
              "name": "active-icon",
              "description": "The icon name for active (selected) symbols.",
              "value": { "type": "string", "default": "'favorite_filled'" }
            },
            {
              "name": "density",
              "description": "The component's density.",
              "value": {
                "type": "'compact' | 'default' | 'spacious'",
                "default": "'default'"
              }
            },
            {
              "name": "error",
              "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "warning",
              "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "ai",
              "description": "Draws an ai-style input with AI colored border and icon.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "hint",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "disabled",
              "description": "Disables the form control.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "events": [
            {
              "name": "change",
              "description": "Emitted when the rating's value changes."
            },
            {
              "name": "ed-hover",
              "type": "{ phase: 'start' | 'move' | 'end', value: number }",
              "description": "Emitted when the user hovers over a value. The `phase` property indicates when hovering starts, moves to a new value, or ends. The `value` property tells what the rating's value would be if the user were to commit to the hovered value."
            },
            {
              "name": "ed-invalid",
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied."
            }
          ],
          "js": {
            "properties": [
              { "name": "assumeInteractionOn", "type": "string[]" },
              {
                "name": "name",
                "description": "The name of the rating, submitted as a name/value pair with form data.",
                "type": "string | null"
              },
              {
                "name": "label",
                "description": "A label that describes the rating to assistive devices.",
                "type": "string"
              },
              {
                "name": "value",
                "description": "The current rating.",
                "type": "number"
              },
              {
                "name": "defaultValue",
                "description": "The default value of the form control. Used to reset the rating to its initial value.",
                "type": "number"
              },
              {
                "name": "max",
                "description": "The highest rating to show.",
                "type": "number"
              },
              {
                "name": "precision",
                "description": "The precision at which the rating will increase and decrease. For example, to allow half-star ratings, set this\nattribute to `0.5`.",
                "type": "number"
              },
              {
                "name": "readonly",
                "description": "Makes the rating readonly.",
                "type": "boolean"
              },
              {
                "name": "icon",
                "description": "The icon name for inactive (unselected) symbols.",
                "type": "string"
              },
              {
                "name": "activeIcon",
                "description": "The icon name for active (selected) symbols.",
                "type": "string"
              },
              {
                "name": "density",
                "description": "The component's density.",
                "type": "'compact' | 'default' | 'spacious'"
              },
              {
                "name": "error",
                "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
                "type": "string | null"
              },
              {
                "name": "warning",
                "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
                "type": "string | null"
              },
              {
                "name": "ai",
                "description": "Draws an ai-style input with AI colored border and icon.",
                "type": "boolean"
              },
              {
                "name": "hint",
                "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables the form control.",
                "type": "boolean"
              },
              { "name": "required", "type": "boolean" },
              {
                "name": "assumeInteractionOnMode",
                "type": "'combined' | 'separated' | string"
              },
              {
                "name": "input",
                "type": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              { "name": "valueHasChanged", "type": "boolean" },
              { "name": "hasInteracted", "type": "boolean" },
              { "name": "states", "type": "CustomStateSet" },
              { "name": "emitInvalid" },
              { "name": "labels" },
              {
                "name": "form",
                "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
                "type": "HTMLFormElement | null"
              },
              { "name": "validity" },
              { "name": "willValidate" },
              { "name": "validationMessage" },
              {
                "name": "validationTarget",
                "description": "Override this to change where constraint validation popups are anchored.",
                "type": "undefined | HTMLElement"
              },
              { "name": "allValidators" },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "change",
                "description": "Emitted when the rating's value changes."
              },
              {
                "name": "ed-hover",
                "type": "{ phase: 'start' | 'move' | 'end', value: number }",
                "description": "Emitted when the user hovers over a value. The `phase` property indicates when hovering starts, moves to a new value, or ends. The `value` property tells what the rating's value would be if the user were to commit to the hovered value."
              },
              {
                "name": "ed-invalid",
                "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied."
              }
            ]
          }
        },
        {
          "name": "ed-relative-time",
          "description": "Outputs a localized time phrase relative to the current date and time.\n---\n",
          "doc-url": "",
          "attributes": [
            {
              "name": "date",
              "description": "The date from which to calculate time from. If not set, the current date and time will be used. When passing a\nstring, it's strongly recommended to use the ISO 8601 format to ensure timezones are handled correctly. To convert\na date to this format in JavaScript, use [`date.toISOString()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString).",
              "value": { "type": "Date | string", "default": "new Date()" }
            },
            {
              "name": "format",
              "description": "The formatting style to use.",
              "value": {
                "type": "'long' | 'short' | 'narrow'",
                "default": "'long'"
              }
            },
            {
              "name": "numeric",
              "description": "When `auto`, values such as \"yesterday\" and \"tomorrow\" will be shown when possible. When `always`, values such as\n\"1 day ago\" and \"in 1 day\" will be shown.",
              "value": { "type": "'always' | 'auto'", "default": "'auto'" }
            },
            {
              "name": "sync",
              "description": "Keep the displayed value up to date as time passes.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "date",
                "description": "The date from which to calculate time from. If not set, the current date and time will be used. When passing a\nstring, it's strongly recommended to use the ISO 8601 format to ensure timezones are handled correctly. To convert\na date to this format in JavaScript, use [`date.toISOString()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString).",
                "type": "Date | string"
              },
              {
                "name": "format",
                "description": "The formatting style to use.",
                "type": "'long' | 'short' | 'narrow'"
              },
              {
                "name": "numeric",
                "description": "When `auto`, values such as \"yesterday\" and \"tomorrow\" will be shown when possible. When `always`, values such as\n\"1 day ago\" and \"in 1 day\" will be shown.",
                "type": "'always' | 'auto'"
              },
              {
                "name": "sync",
                "description": "Keep the displayed value up to date as time passes.",
                "type": "boolean"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-resize-observer",
          "description": "The Resize Observer component offers a thin, declarative interface to the [`ResizeObserver API`](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver).\n---\n\n\n### **Events:**\n - **ed-resize** - Emitted when a watched element is resized. The event detail contains an `entries` array of [`ResizeObserverEntry`](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserverEntry) objects.\n\n### **Slots:**\n - _default_ - One or more elements to watch for resizing.",
          "doc-url": "",
          "attributes": [
            {
              "name": "disabled",
              "description": "Disables the observer.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "One or more elements to watch for resizing."
            }
          ],
          "events": [
            {
              "name": "ed-resize",
              "description": "Emitted when a watched element is resized. The event detail contains an `entries` array of [`ResizeObserverEntry`](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserverEntry) objects."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "disabled",
                "description": "Disables the observer.",
                "type": "boolean"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-resize",
                "description": "Emitted when a watched element is resized. The event detail contains an `entries` array of [`ResizeObserverEntry`](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserverEntry) objects."
              }
            ]
          }
        },
        {
          "name": "ed-scroller",
          "description": "Scrollers create an accessible container while providing visual cues that help users identify and navigate\nthrough content that scrolls.\n---\n\n\n### **Slots:**\n - _default_ - The content to show inside the scroller.\n\n### **CSS Properties:**\n - **--shadow-color** - The base color of the shadow. _(default: var(--ed-color-surface-default))_\n- **--shadow-size** - The size of the shadow. _(default: 2rem)_\n\n### **CSS Parts:**\n - **content** - The container that wraps the slotted content.",
          "doc-url": "",
          "attributes": [
            {
              "name": "orientation",
              "description": "The scroller's orientation.",
              "value": {
                "type": "'horizontal' | 'vertical'",
                "default": "'horizontal'"
              }
            },
            {
              "name": "without-scrollbar",
              "description": "Removes the visible scrollbar.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "without-shadow",
              "description": "Removes the shadows.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "The content to show inside the scroller."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              { "name": "content", "type": "HTMLElement" },
              { "name": "canScroll", "type": "boolean" },
              {
                "name": "orientation",
                "description": "The scroller's orientation.",
                "type": "'horizontal' | 'vertical'"
              },
              {
                "name": "withoutScrollbar",
                "description": "Removes the visible scrollbar.",
                "type": "boolean"
              },
              {
                "name": "withoutShadow",
                "description": "Removes the shadows.",
                "type": "boolean"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-scrollspy-item",
          "description": "A single item inside [ed-scrollspy](/a/eurodata-ui/docs/components/scrollspy). Renders as an anchor link so right-click, keyboard, and share-link work natively.\n---\n\n\n### **Slots:**\n - _default_ - The item's label text and optional nested `<ed-scrollspy-item>` children (level 2 only — the parent enforces the two-level cap).\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **link** - The clickable anchor row.\n- **rail** - The vertical line column to the inline-start of the label. Tinted for the active section.\n- **dot** - The circular indicator on the rail. Solid-filled when active.\n- **label** - The visible item label.\n- **count** - The child-count badge on parent items (rendered when `count > 0`).\n- **children** - Container for nested level-2 items.",
          "doc-url": "",
          "attributes": [
            {
              "name": "href",
              "description": "Anchor target — the heading id this item points to (e.g. `#anatomy`).",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "active",
              "description": "Whether this item's heading is the active scroll target. Set by the parent; do not write directly.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "parent-active",
              "description": "Whether this is a level-1 item whose level-2 child is active. Set by the parent; do not write directly.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "passed",
              "description": "Whether the reader has scrolled past this item. Set by the parent; do not write directly.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "count",
              "description": "Number of level-2 children inside this item. Set by the parent on level-1 items.",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "show-count",
              "description": "When true, render the count badge. Gated by the parent's `show-counts` attribute.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "The item's label text and optional nested `<ed-scrollspy-item>` children (level 2 only — the parent enforces the two-level cap)."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "href",
                "description": "Anchor target — the heading id this item points to (e.g. `#anatomy`).",
                "type": "string"
              },
              {
                "name": "active",
                "description": "Whether this item's heading is the active scroll target. Set by the parent; do not write directly.",
                "type": "boolean"
              },
              {
                "name": "parentActive",
                "description": "Whether this is a level-1 item whose level-2 child is active. Set by the parent; do not write directly.",
                "type": "boolean"
              },
              {
                "name": "passed",
                "description": "Whether the reader has scrolled past this item. Set by the parent; do not write directly.",
                "type": "boolean"
              },
              {
                "name": "count",
                "description": "Number of level-2 children inside this item. Set by the parent on level-1 items.",
                "type": "number"
              },
              {
                "name": "showCount",
                "description": "When true, render the count badge. Gated by the parent's `show-counts` attribute.",
                "type": "boolean"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-scrollspy",
          "description": "Tracks the user's scroll position through a long page and highlights the corresponding entry in a vertical \"on this page\" rail. Two-level hierarchy with declarative or auto-discovered items.\n---\n\n\n### **Events:**\n - **ed-scrollspy-change** - Fired when the active heading changes.\n\n### **Methods:**\n - **recomputeActive()** - Public test hook: synchronously recompute active item from current scroll position.\nSide-menu's `setCurrentHref()` is the precedent for an externally-callable sync escape hatch.\n- **scrollToId(id: _string_)** - Smoothly scroll the named heading into view, sync the URL hash, and set active immediately.\n\n### **Slots:**\n - _default_ - The default slot for `<ed-scrollspy-item>` elements when authoring declaratively.\n\n### **CSS Parts:**\n - **base** - The inner `<nav>` element.\n- **list** - The top-level `<ul>` rendered for auto-discovered items.",
          "doc-url": "",
          "attributes": [
            {
              "name": "for",
              "description": "CSS selector for the article whose headings should be auto-discovered.\nSlot children take precedence — when both are present, auto-discovery is silently skipped.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "headings",
              "description": "CSS selector for the headings to scan inside the `for=` target. The first match becomes a level-1 item, the second a level-2 child.",
              "value": { "type": "string", "default": "'h2, h3'" }
            },
            {
              "name": "expand",
              "description": "Children-display mode.\n- `'active'` — level-2 children visible only under the active level-1 parent.\n- `'all'` — all level-2 children always visible.\n\nTo get an L1-only rail, narrow the scan with `headings=\"h2\"` instead — that way\nthe spy never tracks h3s, so scrolling past one can't steal the active state from\nits parent.",
              "value": { "type": "'active' | 'all'", "default": "'active'" }
            },
            {
              "name": "show-counts",
              "description": "When true, parent items render a child-count badge with their level-2 child count.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "label",
              "description": "Sets `aria-label` on the inner `<nav>`.",
              "value": { "type": "string", "default": "'On this page'" }
            },
            {
              "name": "active-id",
              "description": "Currently active heading id. Reflected for CSS hooks; consumers should treat as\nread-only outside tests.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "offset",
              "description": "Probe-line position from the scroll region's top (the article's scroll container when\nthe article is `overflow:auto`/`scroll`, otherwise the viewport). CSS length string\n(default `'25%'` — a quarter into the scroll region).\n\n`%` is interpreted relative to the scroll region's height; `vh`/`vw` always refer to\nthe viewport per CSS convention; `px`/`rem`/`em` are absolute. Override when a sticky\npage header consumes part of the scroll region.",
              "value": { "type": "string", "default": "'25%'" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "The default slot for `<ed-scrollspy-item>` elements when authoring declaratively."
            }
          ],
          "events": [
            {
              "name": "ed-scrollspy-change",
              "type": "{ activeId: string, previousId: string | null }",
              "description": "Fired when the active heading changes."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "for",
                "description": "CSS selector for the article whose headings should be auto-discovered.\nSlot children take precedence — when both are present, auto-discovery is silently skipped.",
                "type": "string"
              },
              {
                "name": "headings",
                "description": "CSS selector for the headings to scan inside the `for=` target. The first match becomes a level-1 item, the second a level-2 child.",
                "type": "string"
              },
              {
                "name": "expand",
                "description": "Children-display mode.\n- `'active'` — level-2 children visible only under the active level-1 parent.\n- `'all'` — all level-2 children always visible.\n\nTo get an L1-only rail, narrow the scan with `headings=\"h2\"` instead — that way\nthe spy never tracks h3s, so scrolling past one can't steal the active state from\nits parent.",
                "type": "'active' | 'all'"
              },
              {
                "name": "showCounts",
                "description": "When true, parent items render a child-count badge with their level-2 child count.",
                "type": "boolean"
              },
              {
                "name": "label",
                "description": "Sets `aria-label` on the inner `<nav>`.",
                "type": "string"
              },
              {
                "name": "activeId",
                "description": "Currently active heading id. Reflected for CSS hooks; consumers should treat as\nread-only outside tests.",
                "type": "string"
              },
              {
                "name": "offset",
                "description": "Probe-line position from the scroll region's top (the article's scroll container when\nthe article is `overflow:auto`/`scroll`, otherwise the viewport). CSS length string\n(default `'25%'` — a quarter into the scroll region).\n\n`%` is interpreted relative to the scroll region's height; `vh`/`vw` always refer to\nthe viewport per CSS convention; `px`/`rem`/`em` are absolute. Override when a sticky\npage header consumes part of the scroll region.",
                "type": "string"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-scrollspy-change",
                "type": "{ activeId: string, previousId: string | null }",
                "description": "Fired when the active heading changes."
              }
            ]
          }
        },
        {
          "name": "ed-tree",
          "description": "Trees allow you to display a hierarchical list of selectable [tree items](/a/eurodata-ui/docs/components/tree-item). Items with children can be expanded and collapsed as desired by the user.\n---\n\n\n### **Events:**\n - **ed-selection-change** - Emitted when a tree item is selected or deselected.\n\n### **Slots:**\n - _default_ - The default slot.\n- **expand-icon** - The icon to show when the tree item is expanded. Works best with `<ed-icon>`.\n- **collapse-icon** - The icon to show when the tree item is collapsed. Works best with `<ed-icon>`.\n\n### **CSS Properties:**\n - **--indent-size** - The size of the indentation for nested items. Derived from indent-guide geometry so the highlight stays flush against the guide regardless of font-size; override only when the indent column needs to grow or shrink visibly (and accept that the highlight will then float). _(default: undefined)_\n- **--indent-guide-color** - The color of the indentation line. _(default: var(--ed-color-border))_\n- **--indent-guide-active-color** - The color of the indentation line segment next to a selected item. _(default: var(--ed-color-brand-fill-normal))_\n- **--indent-guide-offset** - Reserved for vertical offset of the indent guide; currently unused with per-item rendering and kept for future use. _(default: 0)_\n- **--indent-guide-style** - The style of the indentation line, e.g. solid, dotted, dashed. _(default: solid)_\n- **--indent-guide-width** - The width of the indentation line. Set to 0 (or use the `hide-indent-guides` attribute) to hide the guides entirely. _(default: var(--ed-border-width-m))_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
          "doc-url": "",
          "attributes": [
            {
              "name": "selection",
              "description": "The selection behavior of the tree. Single selection allows only one node to be selected at a time. Multiple\ndisplays checkboxes and allows more than one node to be selected. Leaf allows only leaf nodes to be selected.",
              "value": {
                "type": "'single' | 'multiple' | 'leaf'",
                "default": "'single'"
              }
            },
            {
              "name": "hide-indent-guides",
              "description": "Hides the vertical guide lines between nested items. By default the guides are shown.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "chevron-placement",
              "description": "Where to render the expand/collapse chevron — at the row's start (default) or end.",
              "value": { "type": "'start' | 'end'", "default": "'start'" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            { "name": "", "description": "The default slot." },
            {
              "name": "expand-icon",
              "description": "The icon to show when the tree item is expanded. Works best with `<ed-icon>`."
            },
            {
              "name": "collapse-icon",
              "description": "The icon to show when the tree item is collapsed. Works best with `<ed-icon>`."
            }
          ],
          "events": [
            {
              "name": "ed-selection-change",
              "type": "{ selection: EdTreeItem[] }",
              "description": "Emitted when a tree item is selected or deselected."
            }
          ],
          "js": {
            "properties": [
              { "name": "defaultSlot", "type": "HTMLSlotElement" },
              { "name": "expandedIconSlot", "type": "HTMLSlotElement" },
              { "name": "collapsedIconSlot", "type": "HTMLSlotElement" },
              {
                "name": "selection",
                "description": "The selection behavior of the tree. Single selection allows only one node to be selected at a time. Multiple\ndisplays checkboxes and allows more than one node to be selected. Leaf allows only leaf nodes to be selected.",
                "type": "'single' | 'multiple' | 'leaf'"
              },
              {
                "name": "hideIndentGuides",
                "description": "Hides the vertical guide lines between nested items. By default the guides are shown.",
                "type": "boolean"
              },
              {
                "name": "chevronPlacement",
                "description": "Where to render the expand/collapse chevron — at the row's start (default) or end.",
                "type": "'start' | 'end'"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-selection-change",
                "type": "{ selection: EdTreeItem[] }",
                "description": "Emitted when a tree item is selected or deselected."
              }
            ]
          }
        },
        {
          "name": "ed-side-menu",
          "description": "A preconfigured navigation sidebar that wraps [ed-tree](/a/eurodata-ui/docs/components/tree) with optional search filtering and super-tabs.\n---\n\n\n### **Events:**\n - **ed-filter** - Emitted when the search filter value changes.\n- **ed-super-tab-change** - Emitted when the active super-tab changes. Detail contains `{ tab: string }`.\n\n### **Methods:**\n - **setCurrentHref(href: _string_)** - Update `currentHref` and synchronously reflect the active-state on items. Prefer this over\nassigning `currentHref` directly when the highlight must move in the same frame as a route\nchange — direct assignment defers through Lit's async update cycle and will flash for one\npaint. Typical consumer: a Turbo/SPA `visit` hook.\n\n### **Slots:**\n - _default_ - The default slot for `ed-side-menu-item` elements.\n- **super-tab** - Tab definitions for the super-tab bar. Use plain elements with `value` and `icon` attributes, e.g. `<span slot=\"super-tab\" value=\"reports\" icon=\"bar_chart\">Reports</span>`.\n\n### **CSS Properties:**\n - **--background** - Side-menu background color. _(default: var(--ed-color-surface-raised))_\n- **--filter-spacing** - Padding around the search input. _(default: var(--ed-space-s))_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **super-tabs** - Container for the super-tab bar.\n- **super-tab** - An individual super-tab button.\n- **filter** - Container for the search input.\n- **filter-input** - The search input element.\n- **tree-wrapper** - Scrollable container around the tree.\n- **tree** - The internal ed-tree element.",
          "doc-url": "",
          "attributes": [
            {
              "name": "filter",
              "description": "Shows a search input that filters items by label and description text.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "filter-placeholder",
              "description": "Placeholder text for the search input.",
              "value": { "type": "string", "default": "'Search'" }
            },
            {
              "name": "hide-indent-guides",
              "description": "Hides the indent guide lines in the internal tree.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "current-href",
              "description": "The `href` of the currently active item. Set this to programmatically select a navigable item, e.g. after a route change.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "active-tab",
              "description": "The currently active super-tab value. Defaults to the first tab.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "density",
              "description": "Density of nav items.\n- `spacious` — relaxed rows (~52px), 24px start/end icons.\n- `default` — condensed rows (~40px), 16px start/end icons.\n- `compact` — minimal rows (`--ed-form-control-height`, ~32px), 16px start/end icons.",
              "value": {
                "type": "'spacious' | 'default' | 'compact'",
                "default": "'default'"
              }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "The default slot for `ed-side-menu-item` elements."
            },
            {
              "name": "super-tab",
              "description": "Tab definitions for the super-tab bar. Use plain elements with `value` and `icon` attributes, e.g. `<span slot=\"super-tab\" value=\"reports\" icon=\"bar_chart\">Reports</span>`."
            }
          ],
          "events": [
            {
              "name": "ed-filter",
              "description": "Emitted when the search filter value changes."
            },
            {
              "name": "ed-super-tab-change",
              "description": "Emitted when the active super-tab changes. Detail contains `{ tab: string }`."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "filter",
                "description": "Shows a search input that filters items by label and description text.",
                "type": "boolean"
              },
              {
                "name": "filterPlaceholder",
                "description": "Placeholder text for the search input.",
                "type": "string"
              },
              {
                "name": "hideIndentGuides",
                "description": "Hides the indent guide lines in the internal tree.",
                "type": "boolean"
              },
              {
                "name": "currentHref",
                "description": "The `href` of the currently active item. Set this to programmatically select a navigable item, e.g. after a route change.",
                "type": "string"
              },
              {
                "name": "activeTab",
                "description": "The currently active super-tab value. Defaults to the first tab.",
                "type": "string"
              },
              {
                "name": "density",
                "description": "Density of nav items.\n- `spacious` — relaxed rows (~52px), 24px start/end icons.\n- `default` — condensed rows (~40px), 16px start/end icons.\n- `compact` — minimal rows (`--ed-form-control-height`, ~32px), 16px start/end icons.",
                "type": "'spacious' | 'default' | 'compact'"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-filter",
                "description": "Emitted when the search filter value changes."
              },
              {
                "name": "ed-super-tab-change",
                "description": "Emitted when the active super-tab changes. Detail contains `{ tab: string }`."
              }
            ]
          }
        },
        {
          "name": "ed-skeleton",
          "description": "Skeletons are used to provide a visual representation of where content will eventually be drawn.\n---\n\n\n### **CSS Properties:**\n - **--color** - The color of the skeleton. _(default: undefined)_\n- **--sheen-color** - The sheen color when the skeleton is in its loading state. _(default: undefined)_\n\n### **CSS Parts:**\n - **indicator** - The skeleton's indicator which is responsible for its color and animation.",
          "doc-url": "",
          "attributes": [
            {
              "name": "effect",
              "description": "Determines which effect the skeleton will use.",
              "value": {
                "type": "'pulse' | 'sheen' | 'none'",
                "default": "'none'"
              }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "effect",
                "description": "Determines which effect the skeleton will use.",
                "type": "'pulse' | 'sheen' | 'none'"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-slider",
          "description": "Ranges allow the user to select a single value within a given range using a slider.\n---\n\n\n### **Events:**\n - **change** - Emitted when an alteration to the control's value is committed by the user.\n- **blur** - Emitted when the control loses focus.\n- **focus** - Emitted when the control gains focus.\n- **input** - Emitted when the control receives input.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **focus()** - Sets focus to the slider.\n- **blur()** - Removes focus from the slider.\n- **stepDown()** - Decreases the slider's value by `step`. This is a programmatic change, so `input` and `change` events will not be\nemitted when this is called.\n- **stepUp()** - Increases the slider's value by `step`. This is a programmatic change, so `input` and `change` events will not be\nemitted when this is called.\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **formStateRestoreCallback(state: _string | File | FormData | null_, reason: _'autocomplete' | 'restore'_)** - Called when the browser is trying to restore element’s state to state in which case reason is \"restore\", or when\nthe browser is trying to fulfill autofill on behalf of user in which case reason is \"autocomplete\". In the case of\n\"restore\", state is a string, File, or FormData object previously set as the second argument to setFormValue.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n### **Slots:**\n - **label** - The slider label. Alternatively, you can use the `label` attribute.\n- **hint** - Text that describes how to use the input. Alternatively, you can use the `hint` attribute. instead.\n- **reference** - One or more reference labels to show visually below the slider.\n\n### **CSS Properties:**\n - **--track-size** - The height or width of the slider's track. _(default: 0.75em)_\n- **--marker-size** - The size of each individual marker. _(default: 0.1875em)_\n- **--thumb-size** - The size of the thumb. _(default: 1.25em)_\n\n### **CSS Parts:**\n - **label** - The element that contains the slider's label.\n- **hint** - The element that contains the slider's description.\n- **slider** - The focusable element with `role=\"slider\"`. Contains the track and reference slot.\n- **track** - The slider's track.\n- **indicator** - The colored indicator that shows from the start of the slider to the current value.\n- **markers** - The container that holds all the markers when `with-markers` is used.\n- **marker** - The individual markers that are shown when `with-markers` is used.\n- **references** - The container that holds references that get slotted in.\n- **thumb** - The slider's thumb.\n- **thumb-min** - The min value thumb in a range slider.\n- **thumb-max** - The max value thumb in a range slider.\n- **tooltip** - The tooltip, a `<ed-tooltip>` element.\n- **tooltip__tooltip** - The tooltip's `tooltip` part.\n- **tooltip__content** - The tooltip's `content` part.\n- **tooltip__arrow** - The tooltip's `arrow` part.",
          "doc-url": "",
          "attributes": [
            {
              "name": "label",
              "description": "The slider's label. If you need to provide HTML in the label, use the `label` slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "name",
              "description": "The name of the slider. This will be submitted with the form as a name/value pair.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "min-value",
              "description": "The minimum value of a range selection. Used only when range attribute is set.",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "max-value",
              "description": "The maximum value of a range selection. Used only when range attribute is set.",
              "value": { "type": "number", "default": "50" }
            },
            {
              "name": "value",
              "description": "The default value of the form control. Primarily used for resetting the form control.",
              "value": { "type": "number" }
            },
            {
              "name": "range",
              "description": "Converts the slider to a range slider with two thumbs.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "disabled",
              "description": "Disables the slider.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "readonly",
              "description": "Makes the slider a read-only field.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "orientation",
              "description": "The orientation of the slider.",
              "value": {
                "type": "'horizontal' | 'vertical'",
                "default": "'horizontal'"
              }
            },
            {
              "name": "indicator-offset",
              "description": "The starting value from which to draw the slider's fill, which is based on its current value.",
              "value": { "type": "number" }
            },
            {
              "name": "min",
              "description": "The minimum value allowed.",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "max",
              "description": "The maximum value allowed.",
              "value": { "type": "number", "default": "100" }
            },
            {
              "name": "step",
              "description": "The granularity the value must adhere to when incrementing and decrementing.",
              "value": { "type": "number", "default": "1" }
            },
            {
              "name": "autofocus",
              "description": "Tells the browser to focus the slider when the page loads or a dialog is shown.",
              "value": { "type": "boolean" }
            },
            {
              "name": "tooltip-distance",
              "description": "The distance of the tooltip from the slider's thumb.",
              "value": { "type": "number", "default": "8" }
            },
            {
              "name": "tooltip-placement",
              "description": "The placement of the tooltip in reference to the slider's thumb.",
              "value": {
                "type": "'top' | 'right' | 'bottom' | 'left'",
                "default": "'top'"
              }
            },
            {
              "name": "with-markers",
              "description": "Draws markers at each step along the slider.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "with-tooltip",
              "description": "Draws a tooltip above the thumb when the control has focus or is dragged.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "with-label",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element so the server-rendered markup\nincludes the label before the component hydrates on the client.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "with-hint",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup\nincludes the hint before the component hydrates on the client.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "error",
              "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "warning",
              "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "ai",
              "description": "Draws an ai-style input with AI colored border and icon.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "hint",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "label",
              "description": "The slider label. Alternatively, you can use the `label` attribute."
            },
            {
              "name": "hint",
              "description": "Text that describes how to use the input. Alternatively, you can use the `hint` attribute. instead."
            },
            {
              "name": "reference",
              "description": "One or more reference labels to show visually below the slider."
            }
          ],
          "events": [
            {
              "name": "change",
              "type": "Event",
              "description": "Emitted when an alteration to the control's value is committed by the user."
            },
            {
              "name": "blur",
              "type": "FocusEvent",
              "description": "Emitted when the control loses focus."
            },
            {
              "name": "focus",
              "type": "FocusEvent",
              "description": "Emitted when the control gains focus."
            },
            {
              "name": "input",
              "type": "InputEvent",
              "description": "Emitted when the control receives input."
            },
            {
              "name": "ed-invalid",
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "validationTarget",
                "description": "Override validation target to point to the focusable element",
                "type": "undefined | HTMLElement"
              },
              { "name": "slider", "type": "HTMLElement" },
              { "name": "thumb", "type": "HTMLElement" },
              { "name": "thumbMin", "type": "HTMLElement" },
              { "name": "thumbMax", "type": "HTMLElement" },
              { "name": "track", "type": "HTMLElement" },
              { "name": "tooltip", "type": "EdTooltip" },
              {
                "name": "label",
                "description": "The slider's label. If you need to provide HTML in the label, use the `label` slot instead.",
                "type": "string"
              },
              {
                "name": "name",
                "description": "The name of the slider. This will be submitted with the form as a name/value pair.",
                "type": "string | null"
              },
              {
                "name": "minValue",
                "description": "The minimum value of a range selection. Used only when range attribute is set.",
                "type": "number"
              },
              {
                "name": "maxValue",
                "description": "The maximum value of a range selection. Used only when range attribute is set.",
                "type": "number"
              },
              {
                "name": "defaultValue",
                "description": "The default value of the form control. Primarily used for resetting the form control.",
                "type": "number"
              },
              {
                "name": "value",
                "description": "The current value of the slider, submitted as a name/value pair with form data.",
                "type": "number"
              },
              {
                "name": "range",
                "description": "Converts the slider to a range slider with two thumbs.",
                "type": "boolean"
              },
              {
                "name": "isRange",
                "description": "Get if this is a range slider",
                "type": "boolean"
              },
              {
                "name": "disabled",
                "description": "Disables the slider.",
                "type": "boolean"
              },
              {
                "name": "readonly",
                "description": "Makes the slider a read-only field.",
                "type": "boolean"
              },
              {
                "name": "orientation",
                "description": "The orientation of the slider.",
                "type": "'horizontal' | 'vertical'"
              },
              {
                "name": "indicatorOffset",
                "description": "The starting value from which to draw the slider's fill, which is based on its current value.",
                "type": "number"
              },
              {
                "name": "min",
                "description": "The minimum value allowed.",
                "type": "number"
              },
              {
                "name": "max",
                "description": "The maximum value allowed.",
                "type": "number"
              },
              {
                "name": "step",
                "description": "The granularity the value must adhere to when incrementing and decrementing.",
                "type": "number"
              },
              {
                "name": "autofocus",
                "description": "Tells the browser to focus the slider when the page loads or a dialog is shown.",
                "type": "boolean"
              },
              {
                "name": "tooltipDistance",
                "description": "The distance of the tooltip from the slider's thumb.",
                "type": "number"
              },
              {
                "name": "tooltipPlacement",
                "description": "The placement of the tooltip in reference to the slider's thumb.",
                "type": "'top' | 'right' | 'bottom' | 'left'"
              },
              {
                "name": "withMarkers",
                "description": "Draws markers at each step along the slider.",
                "type": "boolean"
              },
              {
                "name": "withTooltip",
                "description": "Draws a tooltip above the thumb when the control has focus or is dragged.",
                "type": "boolean"
              },
              {
                "name": "withLabel",
                "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element so the server-rendered markup\nincludes the label before the component hydrates on the client.",
                "type": "boolean"
              },
              {
                "name": "withHint",
                "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup\nincludes the hint before the component hydrates on the client.",
                "type": "boolean"
              },
              {
                "name": "valueFormatter",
                "description": "A custom formatting function to apply to the value. This will be shown in the tooltip and announced by screen\nreaders. Must be set with JavaScript. Property only.",
                "type": "(value: number) => string"
              },
              {
                "name": "error",
                "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
                "type": "string | null"
              },
              {
                "name": "warning",
                "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
                "type": "string | null"
              },
              {
                "name": "ai",
                "description": "Draws an ai-style input with AI colored border and icon.",
                "type": "boolean"
              },
              {
                "name": "hint",
                "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
                "type": "string"
              },
              { "name": "required", "type": "boolean" },
              { "name": "assumeInteractionOn", "type": "string[]" },
              {
                "name": "assumeInteractionOnMode",
                "type": "'combined' | 'separated' | string"
              },
              {
                "name": "input",
                "type": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              { "name": "valueHasChanged", "type": "boolean" },
              { "name": "hasInteracted", "type": "boolean" },
              { "name": "states", "type": "CustomStateSet" },
              { "name": "emitInvalid" },
              { "name": "labels" },
              {
                "name": "form",
                "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
                "type": "HTMLFormElement | null"
              },
              { "name": "validity" },
              { "name": "willValidate" },
              { "name": "validationMessage" },
              { "name": "allValidators" },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "change",
                "type": "Event",
                "description": "Emitted when an alteration to the control's value is committed by the user."
              },
              {
                "name": "blur",
                "type": "FocusEvent",
                "description": "Emitted when the control loses focus."
              },
              {
                "name": "focus",
                "type": "FocusEvent",
                "description": "Emitted when the control gains focus."
              },
              {
                "name": "input",
                "type": "InputEvent",
                "description": "Emitted when the control receives input."
              },
              {
                "name": "ed-invalid",
                "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied."
              }
            ]
          }
        },
        {
          "name": "ed-split-panel",
          "description": "Split panels display two adjacent panels, allowing the user to reposition them.\n---\n\n\n### **Events:**\n - **ed-reposition** - Emitted when the divider's position changes.\n\n### **Slots:**\n - **start** - Content to place in the start panel.\n- **end** - Content to place in the end panel.\n- **divider** - The divider. Useful for slotting in a custom icon that renders as a handle.\n\n### **CSS Properties:**\n - **--divider-width** - The width of the visible divider. _(default: 4px)_\n- **--divider-hit-area** - The invisible region around the divider where dragging can occur. This is usually wider than the divider to facilitate easier dragging. _(default: 12px)_\n- **--min** - The minimum allowed size of the primary panel. _(default: 0)_\n- **--max** - The maximum allowed size of the primary panel. _(default: 100%)_\n\n### **CSS Parts:**\n - **start** - The start panel.\n- **end** - The end panel.\n- **panel** - Targets both the start and end panels.\n- **divider** - The divider that separates the start and end panels.",
          "doc-url": "",
          "attributes": [
            {
              "name": "position",
              "description": "The current position of the divider from the primary panel's edge as a percentage 0-100. Defaults to 50% of the\ncontainer's initial size.",
              "value": { "type": "number", "default": "50" }
            },
            {
              "name": "position-in-pixels",
              "description": "The current position of the divider from the primary panel's edge in pixels.",
              "value": { "type": "number" }
            },
            {
              "name": "orientation",
              "description": "Sets the split panel's orientation.",
              "value": {
                "type": "'horizontal' | 'vertical'",
                "default": "'horizontal'"
              }
            },
            {
              "name": "disabled",
              "description": "Disables resizing. Note that the position may still change as a result of resizing the host element.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "primary",
              "description": "If no primary panel is designated, both panels will resize proportionally when the host element is resized. If a\nprimary panel is designated, it will maintain its size and the other panel will grow or shrink as needed when the\nhost element is resized.",
              "value": { "type": "'start' | 'end' | undefined" }
            },
            {
              "name": "snap",
              "description": "One or more space-separated values at which the divider should snap. Values can be in pixels or percentages, e.g.\n`\"100px 50%\"`.",
              "value": { "type": "string | undefined" }
            },
            {
              "name": "snap-threshold",
              "description": "How close the divider must be to a snap point until snapping occurs.",
              "value": { "type": "number", "default": "12" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "start",
              "description": "Content to place in the start panel."
            },
            {
              "name": "end",
              "description": "Content to place in the end panel."
            },
            {
              "name": "divider",
              "description": "The divider. Useful for slotting in a custom icon that renders as a handle."
            }
          ],
          "events": [
            {
              "name": "ed-reposition",
              "description": "Emitted when the divider's position changes."
            }
          ],
          "js": {
            "properties": [
              { "name": "divider", "type": "HTMLElement" },
              {
                "name": "position",
                "description": "The current position of the divider from the primary panel's edge as a percentage 0-100. Defaults to 50% of the\ncontainer's initial size.",
                "type": "number"
              },
              {
                "name": "positionInPixels",
                "description": "The current position of the divider from the primary panel's edge in pixels.",
                "type": "number"
              },
              {
                "name": "orientation",
                "description": "Sets the split panel's orientation.",
                "type": "'horizontal' | 'vertical'"
              },
              {
                "name": "disabled",
                "description": "Disables resizing. Note that the position may still change as a result of resizing the host element.",
                "type": "boolean"
              },
              {
                "name": "primary",
                "description": "If no primary panel is designated, both panels will resize proportionally when the host element is resized. If a\nprimary panel is designated, it will maintain its size and the other panel will grow or shrink as needed when the\nhost element is resized.",
                "type": "'start' | 'end' | undefined"
              },
              {
                "name": "snap",
                "description": "One or more space-separated values at which the divider should snap. Values can be in pixels or percentages, e.g.\n`\"100px 50%\"`.",
                "type": "string | undefined"
              },
              {
                "name": "snapThreshold",
                "description": "How close the divider must be to a snap point until snapping occurs.",
                "type": "number"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-reposition",
                "description": "Emitted when the divider's position changes."
              }
            ]
          }
        },
        {
          "name": "ed-switch",
          "description": "Switches allow the user to toggle an option on or off.\n---\n\n\n### **Events:**\n - **change** - Emitted when the control's checked state changes.\n- **input** - Emitted when the control receives input.\n- **blur** - Emitted when the control loses focus.\n- **focus** - Emitted when the control gains focus.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **click()** - Simulates a click on the switch.\n- **focus(options: _FocusOptions_)** - Sets focus on the switch.\n- **blur()** - Removes focus from the switch.\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **formStateRestoreCallback(state: _string | File | FormData | null_, reason: _'autocomplete' | 'restore'_)** - Called when the browser is trying to restore element’s state to state in which case reason is \"restore\", or when\nthe browser is trying to fulfill autofill on behalf of user in which case reason is \"autocomplete\". In the case of\n\"restore\", state is a string, File, or FormData object previously set as the second argument to setFormValue.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n### **Slots:**\n - _default_ - The switch's label.\n- **hint** - Text that describes how to use the switch. Alternatively, you can use the `hint` attribute.\n\n### **CSS Properties:**\n - **--width** - The width of the switch. _(default: undefined)_\n- **--height** - The height of the switch. _(default: undefined)_\n- **--thumb-size** - The size of the thumb. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **control** - The control that houses the switch's thumb.\n- **thumb** - The switch's thumb.\n- **label** - The switch's label.\n- **hint** - The hint's wrapper.",
          "doc-url": "",
          "attributes": [
            { "name": "title", "value": { "type": "string", "default": "''" } },
            {
              "name": "name",
              "description": "The name of the switch, submitted as a name/value pair with form data.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "value",
              "description": "The value of the switch, submitted as a name/value pair with form data.",
              "value": { "type": "string | null" }
            },
            {
              "name": "disabled",
              "description": "Disables the switch.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "readonly",
              "description": "Makes the switch readonly.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "checked",
              "description": "The default value of the form control. Primarily used for resetting the form control.",
              "value": { "type": "boolean" }
            },
            {
              "name": "required",
              "description": "Makes the switch a required field.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "with-hint",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup includes the hint before the component hydrates on the client.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "error",
              "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "warning",
              "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "ai",
              "description": "Draws an ai-style input with AI colored border and icon.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "hint",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            { "name": "", "description": "The switch's label." },
            {
              "name": "hint",
              "description": "Text that describes how to use the switch. Alternatively, you can use the `hint` attribute."
            }
          ],
          "events": [
            {
              "name": "change",
              "type": "Event",
              "description": "Emitted when the control's checked state changes."
            },
            {
              "name": "input",
              "type": "InputEvent",
              "description": "Emitted when the control receives input."
            },
            {
              "name": "blur",
              "description": "Emitted when the control loses focus."
            },
            {
              "name": "focus",
              "description": "Emitted when the control gains focus."
            },
            {
              "name": "ed-invalid",
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "input",
                "type": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              { "name": "title", "type": "string" },
              {
                "name": "name",
                "description": "The name of the switch, submitted as a name/value pair with form data.",
                "type": "string | null"
              },
              {
                "name": "value",
                "description": "The value of the switch, submitted as a name/value pair with form data.",
                "type": "string | null"
              },
              {
                "name": "disabled",
                "description": "Disables the switch.",
                "type": "boolean"
              },
              {
                "name": "readonly",
                "description": "Makes the switch readonly.",
                "type": "boolean"
              },
              { "name": "_checked", "type": "boolean | null" },
              {
                "name": "checked",
                "description": "Draws the switch in a checked state."
              },
              {
                "name": "defaultChecked",
                "description": "The default value of the form control. Primarily used for resetting the form control.",
                "type": "boolean"
              },
              {
                "name": "required",
                "description": "Makes the switch a required field.",
                "type": "boolean"
              },
              {
                "name": "withHint",
                "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup includes the hint before the component hydrates on the client.",
                "type": "boolean"
              },
              {
                "name": "error",
                "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
                "type": "string | null"
              },
              {
                "name": "warning",
                "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
                "type": "string | null"
              },
              {
                "name": "ai",
                "description": "Draws an ai-style input with AI colored border and icon.",
                "type": "boolean"
              },
              {
                "name": "hint",
                "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
                "type": "string"
              },
              { "name": "assumeInteractionOn", "type": "string[]" },
              {
                "name": "assumeInteractionOnMode",
                "type": "'combined' | 'separated' | string"
              },
              { "name": "valueHasChanged", "type": "boolean" },
              { "name": "hasInteracted", "type": "boolean" },
              { "name": "states", "type": "CustomStateSet" },
              { "name": "emitInvalid" },
              { "name": "labels" },
              {
                "name": "form",
                "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
                "type": "HTMLFormElement | null"
              },
              { "name": "validity" },
              { "name": "willValidate" },
              { "name": "validationMessage" },
              {
                "name": "validationTarget",
                "description": "Override this to change where constraint validation popups are anchored.",
                "type": "undefined | HTMLElement"
              },
              { "name": "allValidators" },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "change",
                "type": "Event",
                "description": "Emitted when the control's checked state changes."
              },
              {
                "name": "input",
                "type": "InputEvent",
                "description": "Emitted when the control receives input."
              },
              {
                "name": "blur",
                "description": "Emitted when the control loses focus."
              },
              {
                "name": "focus",
                "description": "Emitted when the control gains focus."
              },
              {
                "name": "ed-invalid",
                "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied."
              }
            ]
          }
        },
        {
          "name": "ed-tab",
          "description": "Tabs are used inside [tab groups](/a/eurodata-ui/docs/components/tab-group) to represent and activate [tab panels](/a/eurodata-ui/docs/components/tab-panel).\n---\n\n\n### **Events:**\n - **ed-tab-close** - Emitted when the tab's close button is activated.\n\n### **Slots:**\n - _default_ - The tab's label.\n- **icon** - An icon to display before the label. Alternatively, use the `icon` attribute for a system icon.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **content** - The container that wraps the icon and label.\n- **icon** - The icon slot container.\n- **label** - The label wrapper.",
          "doc-url": "",
          "attributes": [
            {
              "name": "panel",
              "description": "The name of the tab panel this tab is associated with. The panel must be located in the same tab group.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "disabled",
              "description": "Disables the tab and prevents selection.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "closable",
              "description": "Make the tab closable",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "icon",
              "description": "The name of a system icon to display before the label.",
              "value": { "type": "string", "default": "''" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            { "name": "", "description": "The tab's label." },
            {
              "name": "icon",
              "description": "An icon to display before the label. Alternatively, use the `icon` attribute for a system icon."
            }
          ],
          "events": [
            {
              "name": "ed-tab-close",
              "type": "{ panel: string }",
              "description": "Emitted when the tab's close button is activated."
            }
          ],
          "js": {
            "properties": [
              { "name": "tab", "type": "HTMLElement" },
              { "name": "tabLabel", "type": "HTMLElement" },
              {
                "name": "panel",
                "description": "The name of the tab panel this tab is associated with. The panel must be located in the same tab group.",
                "type": "string"
              },
              {
                "name": "disabled",
                "description": "Disables the tab and prevents selection.",
                "type": "boolean"
              },
              {
                "name": "closable",
                "description": "Make the tab closable",
                "type": "boolean"
              },
              {
                "name": "icon",
                "description": "The name of a system icon to display before the label.",
                "type": "string"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-tab-close",
                "type": "{ panel: string }",
                "description": "Emitted when the tab's close button is activated."
              }
            ]
          }
        },
        {
          "name": "ed-tab-panel",
          "description": "Tab panels are used inside [tab groups](/a/eurodata-ui/docs/components/tab-group) to display tabbed content.\n---\n\n\n### **Slots:**\n - _default_ - The tab panel's content.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
          "doc-url": "",
          "attributes": [
            {
              "name": "name",
              "description": "The tab panel's name.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "active",
              "description": "When true, the tab panel will be shown.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [{ "name": "", "description": "The tab panel's content." }],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "name",
                "description": "The tab panel's name.",
                "type": "string"
              },
              {
                "name": "active",
                "description": "When true, the tab panel will be shown.",
                "type": "boolean"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-tab-group",
          "description": "Tab groups organize content into a container that shows one section at a time.\n---\n\n\n### **Events:**\n - **ed-tab-show** - Emitted when a tab is shown.\n- **ed-tab-hide** - Emitted when a tab is hidden.\n\n### **Slots:**\n - _default_ - Used for grouping tab panels in the tab group. Must be `<ed-tab-panel>` elements.\n- **nav** - Used for grouping tabs in the tab group. Must be `<ed-tab>` elements. Note that `<ed-tab>` will set this slot on itself automatically.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **nav** - The tab group's navigation container where tabs are slotted in.\n- **tabs** - The container that wraps the tabs.\n- **body** - The tab group's body where tab panels are slotted in.\n- **scroll-button** - The previous/next scroll buttons that show when tabs are scrollable, a `<ed-button>`.\n- **scroll-button-start** - The starting scroll button.\n- **scroll-button-end** - The ending scroll button.",
          "doc-url": "",
          "attributes": [
            {
              "name": "active",
              "description": "Sets the active tab.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "placement",
              "description": "The placement of the tabs.",
              "value": {
                "type": "'top' | 'bottom' | 'left' | 'right'",
                "default": "'top'"
              }
            },
            {
              "name": "appearance",
              "description": "The visual appearance of the tab group.",
              "value": {
                "type": "'plain' | 'outlined' | 'filled'",
                "default": "'plain'"
              }
            },
            {
              "name": "activation",
              "description": "When set to auto, navigating tabs with the arrow keys will instantly show the corresponding tab panel. When set to\nmanual, the tab will receive focus but will not show until the user presses spacebar or enter.",
              "value": { "type": "'auto' | 'manual'", "default": "'auto'" }
            },
            {
              "name": "stretch",
              "description": "Makes all tabs equal width, stretching to fill the available space.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "without-scroll-controls",
              "description": "Disables the scroll arrows that appear when tabs overflow.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "Used for grouping tab panels in the tab group. Must be `<ed-tab-panel>` elements."
            },
            {
              "name": "nav",
              "description": "Used for grouping tabs in the tab group. Must be `<ed-tab>` elements. Note that `<ed-tab>` will set this slot on itself automatically."
            }
          ],
          "events": [
            {
              "name": "ed-tab-show",
              "type": "{ name: String }",
              "description": "Emitted when a tab is shown."
            },
            {
              "name": "ed-tab-hide",
              "type": "{ name: String }",
              "description": "Emitted when a tab is hidden."
            }
          ],
          "js": {
            "properties": [
              { "name": "tabGroup", "type": "HTMLElement" },
              { "name": "body", "type": "HTMLSlotElement" },
              { "name": "nav", "type": "HTMLElement" },
              {
                "name": "active",
                "description": "Sets the active tab.",
                "type": "string"
              },
              {
                "name": "placement",
                "description": "The placement of the tabs.",
                "type": "'top' | 'bottom' | 'left' | 'right'"
              },
              {
                "name": "appearance",
                "description": "The visual appearance of the tab group.",
                "type": "'plain' | 'outlined' | 'filled'"
              },
              {
                "name": "activation",
                "description": "When set to auto, navigating tabs with the arrow keys will instantly show the corresponding tab panel. When set to\nmanual, the tab will receive focus but will not show until the user presses spacebar or enter.",
                "type": "'auto' | 'manual'"
              },
              {
                "name": "stretch",
                "description": "Makes all tabs equal width, stretching to fill the available space.",
                "type": "boolean"
              },
              {
                "name": "withoutScrollControls",
                "description": "Disables the scroll arrows that appear when tabs overflow.",
                "type": "boolean"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-tab-show",
                "type": "{ name: String }",
                "description": "Emitted when a tab is shown."
              },
              {
                "name": "ed-tab-hide",
                "type": "{ name: String }",
                "description": "Emitted when a tab is hidden."
              }
            ]
          }
        },
        {
          "name": "ed-table-body",
          "description": "Groups body rows in an ed-table.\n---\n\n\n### **Slots:**\n - _default_ - The body rows. Must be `<ed-table-row>` elements.",
          "doc-url": "",
          "attributes": [
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "The body rows. Must be `<ed-table-row>` elements."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-table-head",
          "description": "Groups header rows in an ed-table. Marks child rows as header rows.\n---\n\n\n### **Slots:**\n - _default_ - The header rows. Must be `<ed-table-row>` elements.",
          "doc-url": "",
          "attributes": [
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "The header rows. Must be `<ed-table-row>` elements."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-table",
          "description": "A composable DOM-driven table component with sorting, selection, and column resizing.\n---\n\n\n### **Events:**\n - **ed-sort** - Emitted when a sortable column header is activated. Consumers handle sorting.\n- **ed-selection-change** - Emitted when row selection changes.\n- **ed-column-resize** - Emitted when a column is resized via drag handle.\n- **ed-row-dblclick** - Emitted on row double-click.\n- **ed-scroll-start** - Emitted when scrolling begins.\n- **ed-scroll-end** - Emitted when scrolling ends.\n\n### **Methods:**\n - **getSelectedRows(): _EdTableRow[]_** - Returns the currently selected rows.\n- **clearSelection()** - Deselects all rows.\n- **selectAll()** - Selects all body rows (multi-select mode only).\n\n### **Slots:**\n - _default_ - Table sections. Must be `<ed-table-head>` and/or `<ed-table-body>` elements.\n\n### **CSS Properties:**\n - **--row-height** - Overwrites the density attribute for manual row height adjustment. _(default: var(--ed-space-2xl))_",
          "doc-url": "",
          "attributes": [
            {
              "name": "sortable",
              "description": "Enables column sorting. `'single'` allows one column at a time; `'multi'` allows Shift+click for multi-column sort.",
              "value": { "type": "'single' | 'multi' | undefined" }
            },
            {
              "name": "selectable",
              "description": "Enables row selection mode.",
              "value": { "type": "'single' | 'multi' | undefined" }
            },
            {
              "name": "density",
              "description": "Controls row density (padding).",
              "value": {
                "type": "'compact' | 'default' | 'spacious'",
                "default": "'default'"
              }
            },
            {
              "name": "resizable",
              "description": "Makes all columns resizable. For per-column control, omit this and set `resizable` on individual `ed-table-cell` elements.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "Table sections. Must be `<ed-table-head>` and/or `<ed-table-body>` elements."
            }
          ],
          "events": [
            {
              "name": "ed-sort",
              "type": "{ sorts: Array<{column: string, ordering: string}>, added?: {column: string, ordering: string} }",
              "description": "Emitted when a sortable column header is activated. Consumers handle sorting."
            },
            {
              "name": "ed-selection-change",
              "type": "{ selection: EdTableRow[] }",
              "description": "Emitted when row selection changes."
            },
            {
              "name": "ed-column-resize",
              "type": "{ column: string, width: number }",
              "description": "Emitted when a column is resized via drag handle."
            },
            {
              "name": "ed-row-dblclick",
              "type": "{ row: HTMLElement, rowIndex: number }",
              "description": "Emitted on row double-click."
            },
            {
              "name": "ed-scroll-start",
              "type": "{ scrollTop: number, scrollLeft: number }",
              "description": "Emitted when scrolling begins."
            },
            {
              "name": "ed-scroll-end",
              "type": "{ scrollTop: number, scrollLeft: number }",
              "description": "Emitted when scrolling ends."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "sortable",
                "description": "Enables column sorting. `'single'` allows one column at a time; `'multi'` allows Shift+click for multi-column sort.",
                "type": "'single' | 'multi' | undefined"
              },
              {
                "name": "selectable",
                "description": "Enables row selection mode.",
                "type": "'single' | 'multi' | undefined"
              },
              {
                "name": "density",
                "description": "Controls row density (padding).",
                "type": "'compact' | 'default' | 'spacious'"
              },
              {
                "name": "resizable",
                "description": "Makes all columns resizable. For per-column control, omit this and set `resizable` on individual `ed-table-cell` elements.",
                "type": "boolean"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-sort",
                "type": "{ sorts: Array<{column: string, ordering: string}>, added?: {column: string, ordering: string} }",
                "description": "Emitted when a sortable column header is activated. Consumers handle sorting."
              },
              {
                "name": "ed-selection-change",
                "type": "{ selection: EdTableRow[] }",
                "description": "Emitted when row selection changes."
              },
              {
                "name": "ed-column-resize",
                "type": "{ column: string, width: number }",
                "description": "Emitted when a column is resized via drag handle."
              },
              {
                "name": "ed-row-dblclick",
                "type": "{ row: HTMLElement, rowIndex: number }",
                "description": "Emitted on row double-click."
              },
              {
                "name": "ed-scroll-start",
                "type": "{ scrollTop: number, scrollLeft: number }",
                "description": "Emitted when scrolling begins."
              },
              {
                "name": "ed-scroll-end",
                "type": "{ scrollTop: number, scrollLeft: number }",
                "description": "Emitted when scrolling ends."
              }
            ]
          }
        },
        {
          "name": "ed-textarea",
          "description": "Textareas collect data from the user and allow multiple lines of text.\n---\n\n\n### **Events:**\n - **blur** - Emitted when the control loses focus.\n- **change** - Emitted when an alteration to the control's value is committed by the user.\n- **focus** - Emitted when the control gains focus.\n- **input** - Emitted when the control receives input.\n- **ed-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **focus(options: _FocusOptions_)** - Sets focus on the textarea.\n- **blur()** - Removes focus from the textarea.\n- **select()** - Selects all the text in the textarea.\n- **scrollPosition(position: _{ top?: number; left?: number }_): _{ top: number; left: number } | undefined_** - Gets or sets the textarea's scroll position.\n- **setSelectionRange(selectionStart: _number_, selectionEnd: _number_, selectionDirection: _'forward' | 'backward' | 'none'_)** - Sets the start and end positions of the text selection (0-based).\n- **setRangeText(replacement: _string_, start: _number_, end: _number_, selectMode: _'select' | 'start' | 'end' | 'preserve'_)** - Replaces a range of text with a new string.\n- **setCustomValidity(message: _string_)** - Do not use this when creating a \"Validator\". This is intended for end users of components.\nWe track manually defined custom errors so we don't clear them on accident in our validators.\n- **formStateRestoreCallback(state: _string | File | FormData | null_, reason: _'autocomplete' | 'restore'_)** - Called when the browser is trying to restore element’s state to state in which case reason is \"restore\", or when\nthe browser is trying to fulfill autofill on behalf of user in which case reason is \"autocomplete\". In the case of\n\"restore\", state is a string, File, or FormData object previously set as the second argument to setFormValue.\n- **resetValidity()** - Reset validity is a way of removing manual custom errors and native validation.\n\n### **Slots:**\n - **label** - The textarea's label. Alternatively, you can use the `label` attribute.\n- **hint** - Text that describes how to use the input. Alternatively, you can use the `hint` attribute.\n\n### **CSS Parts:**\n - **label** - The label\n- **form-control-input** - The input's wrapper.\n- **hint** - The hint's wrapper.\n- **textarea** - The internal `<textarea>` control.\n- **base** - The wrapper around the `<textarea>` control.\n- **count** - The character count element, rendered when the `with-count` attribute is present.",
          "doc-url": "",
          "attributes": [
            { "name": "title", "value": { "type": "string", "default": "''" } },
            {
              "name": "name",
              "description": "The name of the textarea, submitted as a name/value pair with form data.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "value",
              "description": "The default value of the form control. Primarily used for resetting the form control.",
              "value": { "type": "string" }
            },
            {
              "name": "density",
              "description": "Controls the component's spacing density without affecting font-size.",
              "value": {
                "type": "'compact' | 'default' | 'spacious'",
                "default": "'default'"
              }
            },
            {
              "name": "label",
              "description": "The textarea's label. If you need to display HTML, use the `label` slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "placeholder",
              "description": "Placeholder text to show as a hint when the input is empty.",
              "value": { "type": "string", "default": "''" }
            },
            {
              "name": "rows",
              "description": "The number of rows to display by default.",
              "value": { "type": "number", "default": "4" }
            },
            {
              "name": "resize",
              "description": "Controls how the textarea can be resized.",
              "value": {
                "type": "'none' | 'vertical' | 'horizontal' | 'both' | 'auto'",
                "default": "'vertical'"
              }
            },
            {
              "name": "disabled",
              "description": "Disables the textarea.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "readonly",
              "description": "Makes the textarea readonly.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "required",
              "description": "Makes the textarea a required field.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "minlength",
              "description": "The minimum length of input that will be considered valid.",
              "value": { "type": "number" }
            },
            {
              "name": "maxlength",
              "description": "The maximum length of input that will be considered valid.",
              "value": { "type": "number" }
            },
            {
              "name": "autocapitalize",
              "description": "Controls whether and how text input is automatically capitalized as it is entered by the user.",
              "value": {
                "type": "'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters'"
              }
            },
            {
              "name": "autocorrect",
              "description": "Indicates whether the browser's autocorrect feature is on or off. When set as an attribute, use `\"off\"` or `\"on\"`.\nWhen set as a property, use `true` or `false`.",
              "value": { "type": "boolean" }
            },
            {
              "name": "autocomplete",
              "description": "Specifies what permission the browser has to provide assistance in filling out form field values. Refer to\n[this page on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for available values.",
              "value": { "type": "string" }
            },
            {
              "name": "autofocus",
              "description": "Indicates that the input should receive focus on page load.",
              "value": { "type": "boolean" }
            },
            {
              "name": "enterkeyhint",
              "description": "Used to customize the label or icon of the Enter key on virtual keyboards.",
              "value": {
                "type": "'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'"
              }
            },
            {
              "name": "spellcheck",
              "description": "Enables spell checking on the textarea.",
              "value": { "type": "boolean", "default": "true" }
            },
            {
              "name": "inputmode",
              "description": "Tells the browser what type of data will be entered by the user, allowing it to display the appropriate virtual\nkeyboard on supportive devices.",
              "value": {
                "type": "'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'"
              }
            },
            {
              "name": "with-label",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element so the server-rendered markup includes the label before the component hydrates on the client.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "with-hint",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup includes the hint before the component hydrates on the client.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "with-count",
              "description": "Shows a character count below the textarea. When `maxlength` is set, shows remaining characters instead.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "error",
              "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "warning",
              "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
              "value": { "type": "string | null", "default": "null" }
            },
            {
              "name": "ai",
              "description": "Draws an ai-style input with AI colored border and icon.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "hint",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "label",
              "description": "The textarea's label. Alternatively, you can use the `label` attribute."
            },
            {
              "name": "hint",
              "description": "Text that describes how to use the input. Alternatively, you can use the `hint` attribute."
            }
          ],
          "events": [
            {
              "name": "blur",
              "description": "Emitted when the control loses focus."
            },
            {
              "name": "change",
              "description": "Emitted when an alteration to the control's value is committed by the user."
            },
            {
              "name": "focus",
              "description": "Emitted when the control gains focus."
            },
            {
              "name": "input",
              "description": "Emitted when the control receives input."
            },
            {
              "name": "ed-invalid",
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied."
            }
          ],
          "js": {
            "properties": [
              { "name": "assumeInteractionOn", "type": "string[]" },
              {
                "name": "input",
                "type": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              { "name": "base", "type": "HTMLDivElement" },
              { "name": "sizeAdjuster", "type": "HTMLTextAreaElement" },
              { "name": "title", "type": "string" },
              {
                "name": "name",
                "description": "The name of the textarea, submitted as a name/value pair with form data.",
                "type": "string | null"
              },
              {
                "name": "value",
                "description": "The current value of the input, submitted as a name/value pair with form data."
              },
              {
                "name": "defaultValue",
                "description": "The default value of the form control. Primarily used for resetting the form control.",
                "type": "string"
              },
              {
                "name": "density",
                "description": "Controls the component's spacing density without affecting font-size.",
                "type": "'compact' | 'default' | 'spacious'"
              },
              {
                "name": "label",
                "description": "The textarea's label. If you need to display HTML, use the `label` slot instead.",
                "type": "string"
              },
              {
                "name": "placeholder",
                "description": "Placeholder text to show as a hint when the input is empty.",
                "type": "string"
              },
              {
                "name": "rows",
                "description": "The number of rows to display by default.",
                "type": "number"
              },
              {
                "name": "resize",
                "description": "Controls how the textarea can be resized.",
                "type": "'none' | 'vertical' | 'horizontal' | 'both' | 'auto'"
              },
              {
                "name": "disabled",
                "description": "Disables the textarea.",
                "type": "boolean"
              },
              {
                "name": "readonly",
                "description": "Makes the textarea readonly.",
                "type": "boolean"
              },
              {
                "name": "required",
                "description": "Makes the textarea a required field.",
                "type": "boolean"
              },
              {
                "name": "minlength",
                "description": "The minimum length of input that will be considered valid.",
                "type": "number"
              },
              {
                "name": "maxlength",
                "description": "The maximum length of input that will be considered valid.",
                "type": "number"
              },
              {
                "name": "autocapitalize",
                "description": "Controls whether and how text input is automatically capitalized as it is entered by the user.",
                "type": "'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters'"
              },
              {
                "name": "autocorrect",
                "description": "Indicates whether the browser's autocorrect feature is on or off. When set as an attribute, use `\"off\"` or `\"on\"`.\nWhen set as a property, use `true` or `false`.",
                "type": "boolean"
              },
              {
                "name": "autocomplete",
                "description": "Specifies what permission the browser has to provide assistance in filling out form field values. Refer to\n[this page on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for available values.",
                "type": "string"
              },
              {
                "name": "autofocus",
                "description": "Indicates that the input should receive focus on page load.",
                "type": "boolean"
              },
              {
                "name": "enterkeyhint",
                "description": "Used to customize the label or icon of the Enter key on virtual keyboards.",
                "type": "'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'"
              },
              {
                "name": "spellcheck",
                "description": "Enables spell checking on the textarea.",
                "type": "boolean"
              },
              {
                "name": "inputmode",
                "description": "Tells the browser what type of data will be entered by the user, allowing it to display the appropriate virtual\nkeyboard on supportive devices.",
                "type": "'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'"
              },
              {
                "name": "withLabel",
                "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element so the server-rendered markup includes the label before the component hydrates on the client.",
                "type": "boolean"
              },
              {
                "name": "withHint",
                "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup includes the hint before the component hydrates on the client.",
                "type": "boolean"
              },
              {
                "name": "withCount",
                "description": "Shows a character count below the textarea. When `maxlength` is set, shows remaining characters instead.",
                "type": "boolean"
              },
              {
                "name": "error",
                "description": "Draws an error-style input with danger colored border and icon. Set to an empty string (or use the bare attribute `<ed-input error>`) to render error styling without a visible message; submission is still blocked with a localized fallback validation message. Set to a non-empty string to additionally display that message in the hint area and use it as the validation message. Set to `null` (the default) or remove the attribute to clear the error.",
                "type": "string | null"
              },
              {
                "name": "warning",
                "description": "Draws a warning-style input with warning colored border and icon. Set to an empty string (or use the bare attribute `<ed-input warning>`) to render warning styling without a visible message. Set to a non-empty string to additionally display that message in the hint area. Warnings do not block form submission. Set to `null` (the default) or remove the attribute to clear the warning.",
                "type": "string | null"
              },
              {
                "name": "ai",
                "description": "Draws an ai-style input with AI colored border and icon.",
                "type": "boolean"
              },
              {
                "name": "hint",
                "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
                "type": "string"
              },
              {
                "name": "assumeInteractionOnMode",
                "type": "'combined' | 'separated' | string"
              },
              { "name": "valueHasChanged", "type": "boolean" },
              { "name": "hasInteracted", "type": "boolean" },
              { "name": "states", "type": "CustomStateSet" },
              { "name": "emitInvalid" },
              { "name": "labels" },
              {
                "name": "form",
                "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
                "type": "HTMLFormElement | null"
              },
              { "name": "validity" },
              { "name": "willValidate" },
              { "name": "validationMessage" },
              {
                "name": "validationTarget",
                "description": "Override this to change where constraint validation popups are anchored.",
                "type": "undefined | HTMLElement"
              },
              { "name": "allValidators" },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "blur",
                "description": "Emitted when the control loses focus."
              },
              {
                "name": "change",
                "description": "Emitted when an alteration to the control's value is committed by the user."
              },
              {
                "name": "focus",
                "description": "Emitted when the control gains focus."
              },
              {
                "name": "input",
                "description": "Emitted when the control receives input."
              },
              {
                "name": "ed-invalid",
                "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied."
              }
            ]
          }
        },
        {
          "name": "ed-wizard-step",
          "description": "A wizard step represents the label, an optional icon and the content of a step within a wizard.\n---\n\n\n### **Events:**\n \n\n### **Methods:**\n - **getFocusTarget(): _HTMLElement | null_** - Used by ed-wizard to move focus into the active panel. (do not use - just an internal helper.)\n\n### **Slots:**\n - _default_ - The wizard step's content.\n- **label** - The label of the Step. The label will be shown on the stepper. Alternatively, you can use the `label` attribute.\n- **icon** - Place an `<ed-icon>` here to show an icon instead of the default numeric value.\n\n### **CSS Parts:**\n - **base** - The wrapper of the step.",
          "doc-url": "",
          "attributes": [
            {
              "name": "label",
              "description": "The wizard step's label. If you need to display HTML, use the label slot instead.",
              "value": { "type": "string", "default": "''" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            { "name": "", "description": "The wizard step's content." },
            {
              "name": "label",
              "description": "The label of the Step. The label will be shown on the stepper. Alternatively, you can use the `label` attribute."
            },
            {
              "name": "icon",
              "description": "Place an `<ed-icon>` here to show an icon instead of the default numeric value."
            }
          ],
          "events": [],
          "js": {
            "properties": [
              {
                "name": "label",
                "description": "The wizard step's label. If you need to display HTML, use the label slot instead.",
                "type": "string"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": []
          }
        },
        {
          "name": "ed-wizard",
          "description": "Guides users through a step-by-step process to complete a task.\n---\n\n\n### **Events:**\n - **ed-step-change** - Emitted when the active step changes.\n- **ed-finish** - Emitted when the last step is finished.\n\n### **Methods:**\n - **goToStep(index: _number_)** - Set the active step to the given number\n- **previous()** - Go to the previous step if possible\n- **next()** - Go to the next step if possible\n- **reset()** - Resets the wizard to the first step\n\n### **Slots:**\n - _default_ - Place `<ed-wizard-step>` elements inside.\n- **nav** - Slot for the navigation, acts like a footer.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **progress-panel** - The wrapper of all steps.\n- **step** - The wrapper of a single step inside the progress panel.\n- **step-top** - The wrapper of the upper part of the step, contains connectors and the button but not the label.\n- **button** - The step button .\n- **connector-before** - The connector before the button.\n- **connector-after** - The connector after the button.\n- **label** - The wrapper of the label.\n- **content** - The wrapper of the content.\n- **nav** - The wrapper of Navigation.\n- **reset** - The reset button\n- **previous** - The previous button\n- **next** - The next button",
          "doc-url": "",
          "attributes": [
            {
              "name": "active-step",
              "description": "Index of the active step (0-based).",
              "value": { "type": "number", "default": "0" }
            },
            {
              "name": "scroll-to-top",
              "description": "Scroll to top after step changing.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "step-navigation",
              "description": "Controls whether users can jump to steps via the step indicators.\n\n- `none`: step indicators are not interactive\n- `seen`: users may jump only to steps with index <= maxSeenStep\n- `all`: users may jump to any step",
              "value": {
                "type": "'none' | 'seen' | 'all'",
                "default": "'seen'"
              }
            },
            {
              "name": "navigation",
              "description": "When set, show the default navigation in the nav slot",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "allow-reset",
              "description": "When set, shows the default reset button inside the navigation. Navigation must be enabled to make this button work",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "next-disabled",
              "description": "When set, disables the next button. Use this to prevent advancing until consumer validation passes.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "previous-disabled",
              "description": "When set, disables the previous button. Use this to prevent going back while an async operation is in progress.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "orientation",
              "description": "Defines the orientation of the wizard",
              "value": {
                "type": "'horizontal' | 'vertical'",
                "default": "'horizontal'"
              }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "",
              "description": "Place `<ed-wizard-step>` elements inside."
            },
            {
              "name": "nav",
              "description": "Slot for the navigation, acts like a footer."
            }
          ],
          "events": [
            {
              "name": "ed-step-change",
              "description": "Emitted when the active step changes."
            },
            {
              "name": "ed-finish",
              "description": "Emitted when the last step is finished."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "activeStep",
                "description": "Index of the active step (0-based).",
                "type": "number"
              },
              {
                "name": "scrollToTop",
                "description": "Scroll to top after step changing.",
                "type": "boolean"
              },
              {
                "name": "stepNavigation",
                "description": "Controls whether users can jump to steps via the step indicators.\n\n- `none`: step indicators are not interactive\n- `seen`: users may jump only to steps with index <= maxSeenStep\n- `all`: users may jump to any step",
                "type": "'none' | 'seen' | 'all'"
              },
              {
                "name": "navigation",
                "description": "When set, show the default navigation in the nav slot",
                "type": "boolean"
              },
              {
                "name": "allowReset",
                "description": "When set, shows the default reset button inside the navigation. Navigation must be enabled to make this button work",
                "type": "boolean"
              },
              {
                "name": "nextDisabled",
                "description": "When set, disables the next button. Use this to prevent advancing until consumer validation passes.",
                "type": "boolean"
              },
              {
                "name": "previousDisabled",
                "description": "When set, disables the previous button. Use this to prevent going back while an async operation is in progress.",
                "type": "boolean"
              },
              {
                "name": "orientation",
                "description": "Defines the orientation of the wizard",
                "type": "'horizontal' | 'vertical'"
              },
              { "name": "localize" },
              { "name": "stepCount", "description": "Total number of steps" },
              {
                "name": "isFinished",
                "description": "True if the wizard is finished"
              },
              {
                "name": "isFirstStep",
                "description": "True if the first step is active"
              },
              {
                "name": "isLastStep",
                "description": "True if the last step is active"
              },
              {
                "name": "canGoPrevious",
                "description": "True if there is a previous step and it is not disabled by the consumer"
              },
              {
                "name": "canGoNext",
                "description": "True if there is a next step and it is not disabled by the consumer"
              },
              {
                "name": "canReset",
                "description": "True if the wizard can reset"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-step-change",
                "description": "Emitted when the active step changes."
              },
              {
                "name": "ed-finish",
                "description": "Emitted when the last step is finished."
              }
            ]
          }
        },
        {
          "name": "ed-zoomable-frame",
          "description": "Zoomable frames render iframe content with zoom and interaction controls.\n---\n\n\n### **Events:**\n - **load** - Emitted when the internal iframe when it finishes loading.\n- **error** - Emitted from the internal iframe when it fails to load.\n\n### **Methods:**\n - **zoomIn()** - Zooms in to the next available zoom level.\n- **zoomOut()** - Zooms out to the previous available zoom level.\n\n### **Slots:**\n - **zoom-in-icon** - The slot that contains the zoom in icon.\n- **zoom-out-icon** - The slot that contains the zoom out icon.\n\n### **CSS Parts:**\n - **iframe** - The internal `<iframe>` element.\n- **controls** - The container that surrounds zoom control buttons.\n- **zoom-in-button** - The zoom in button.\n- **zoom-out-button** - The zoom out button.",
          "doc-url": "",
          "attributes": [
            {
              "name": "src",
              "description": "The URL of the content to display.",
              "value": { "type": "string" }
            },
            {
              "name": "srcdoc",
              "description": "Inline HTML to display.",
              "value": { "type": "string" }
            },
            {
              "name": "allowfullscreen",
              "description": "Allows fullscreen mode.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "loading",
              "description": "Controls iframe loading behavior.",
              "value": { "type": "'eager' | 'lazy'", "default": "'eager'" }
            },
            {
              "name": "referrerpolicy",
              "description": "Controls referrer information.",
              "value": { "type": "string" }
            },
            {
              "name": "label",
              "description": "An accessible label for the iframe. Recommended for screen readers.",
              "value": { "type": "string" }
            },
            {
              "name": "sandbox",
              "description": "Security restrictions for the iframe. Defaults to `allow-same-origin allow-scripts` for defense-in-depth. Set to an empty string to remove all restrictions.",
              "value": {
                "type": "string",
                "default": "'allow-same-origin allow-scripts'"
              }
            },
            {
              "name": "zoom",
              "description": "The current zoom of the frame, e.g. 0 = 0% and 1 = 100%.",
              "value": { "type": "number", "default": "1" }
            },
            {
              "name": "zoom-levels",
              "description": "The zoom levels to step through when using zoom controls. This does not restrict programmatic changes to the zoom.",
              "value": {
                "type": "string",
                "default": "'25% 50% 75% 100% 125% 150% 175% 200%'"
              }
            },
            {
              "name": "without-controls",
              "description": "Removes the zoom controls.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "without-interaction",
              "description": "Disables interaction when present.",
              "value": { "type": "boolean", "default": "false" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [
            {
              "name": "zoom-in-icon",
              "description": "The slot that contains the zoom in icon."
            },
            {
              "name": "zoom-out-icon",
              "description": "The slot that contains the zoom out icon."
            }
          ],
          "events": [
            {
              "name": "load",
              "type": "Event",
              "description": "Emitted when the internal iframe when it finishes loading."
            },
            {
              "name": "error",
              "type": "Event",
              "description": "Emitted from the internal iframe when it fails to load."
            }
          ],
          "js": {
            "properties": [
              { "name": "iframe", "type": "HTMLIFrameElement" },
              {
                "name": "src",
                "description": "The URL of the content to display.",
                "type": "string"
              },
              {
                "name": "srcdoc",
                "description": "Inline HTML to display.",
                "type": "string"
              },
              {
                "name": "allowfullscreen",
                "description": "Allows fullscreen mode.",
                "type": "boolean"
              },
              {
                "name": "loading",
                "description": "Controls iframe loading behavior.",
                "type": "'eager' | 'lazy'"
              },
              {
                "name": "referrerpolicy",
                "description": "Controls referrer information.",
                "type": "string"
              },
              {
                "name": "label",
                "description": "An accessible label for the iframe. Recommended for screen readers.",
                "type": "string"
              },
              {
                "name": "sandbox",
                "description": "Security restrictions for the iframe. Defaults to `allow-same-origin allow-scripts` for defense-in-depth. Set to an empty string to remove all restrictions.",
                "type": "string"
              },
              {
                "name": "zoom",
                "description": "The current zoom of the frame, e.g. 0 = 0% and 1 = 100%.",
                "type": "number"
              },
              {
                "name": "zoomLevels",
                "description": "The zoom levels to step through when using zoom controls. This does not restrict programmatic changes to the zoom.",
                "type": "string"
              },
              {
                "name": "withoutControls",
                "description": "Removes the zoom controls.",
                "type": "boolean"
              },
              {
                "name": "withoutInteraction",
                "description": "Disables interaction when present.",
                "type": "boolean"
              },
              {
                "name": "contentWindow",
                "description": "Returns the internal iframe's `window` object. (Readonly property)",
                "type": "Window | null"
              },
              {
                "name": "contentDocument",
                "description": "Returns the internal iframe's `document` object. (Readonly property)",
                "type": "Document | null"
              },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "load",
                "type": "Event",
                "description": "Emitted when the internal iframe when it finishes loading."
              },
              {
                "name": "error",
                "type": "Event",
                "description": "Emitted from the internal iframe when it fails to load."
              }
            ]
          }
        },
        {
          "name": "ed-widget-news",
          "description": "News widget to display release news or use-full information to user.\n---\n\n\n### **Events:**\n - **ed-session-expiring** - The event fires 1 minute before the session actual expires.\n- **ed-session-expired** - The event fires if the session is expired.\n- **ed-news-count-changed** - This event fires when the total number of news items is determined and returns the exact number. It fires when the session changes (that also means initially). You can get the amount with `event.detail.count`. Use this to hide or disable your trigger button when the count is 0.\n- **ed-unread-news-count-changed** - This event fires when the amount of unread news items for the user is changed and returns the exact number. The amount of unread news is calculated when the session changes (that also means initially), when the open attribute is set to true or when the user selects an unseen news object and thus reducing the count by one. You can get the amount with `event.detail.count`.\n\n### **CSS Parts:**\n - **base** - The components base wrapper, an ed-dialog element\n- **aside** - The components aside that holds the navigation\n- **sidebar** - The navigation wrapper\n- **sidebar-entry** - The items inside the navigation wrapper\n- **external-button** - External button, that shows depending on the news object\n- **close-button** - The close button that closes the dialog",
          "doc-url": "",
          "attributes": [
            {
              "name": "open",
              "description": "Indicates whether the dialog is open. Toggle this attribute to show and hide the dialog. Open can never be initially be true since the session must be internally validated before allowing open to be true.",
              "value": { "type": "boolean", "default": "false" }
            },
            {
              "name": "label",
              "description": "The dialog's label as displayed in the header.",
              "value": { "type": "string" }
            },
            {
              "name": "base-url",
              "description": "The base url for the news service",
              "value": { "type": "string" }
            },
            {
              "name": "session",
              "description": "The session token for the news service",
              "value": { "type": "string" }
            },
            { "name": "dir", "value": { "type": "string" } },
            { "name": "lang", "value": { "type": "string" } },
            { "name": "did-ssr", "value": { "type": "string" } }
          ],
          "slots": [],
          "events": [
            {
              "name": "ed-session-expiring",
              "description": "The event fires 1 minute before the session actual expires."
            },
            {
              "name": "ed-session-expired",
              "description": "The event fires if the session is expired."
            },
            {
              "name": "ed-news-count-changed",
              "description": "This event fires when the total number of news items is determined and returns the exact number. It fires when the session changes (that also means initially). You can get the amount with `event.detail.count`. Use this to hide or disable your trigger button when the count is 0."
            },
            {
              "name": "ed-unread-news-count-changed",
              "description": "This event fires when the amount of unread news items for the user is changed and returns the exact number. The amount of unread news is calculated when the session changes (that also means initially), when the open attribute is set to true or when the user selects an unseen news object and thus reducing the count by one. You can get the amount with `event.detail.count`."
            }
          ],
          "js": {
            "properties": [
              {
                "name": "open",
                "description": "Indicates whether the dialog is open. Toggle this attribute to show and hide the dialog. Open can never be initially be true since the session must be internally validated before allowing open to be true.",
                "type": "boolean"
              },
              {
                "name": "label",
                "description": "The dialog's label as displayed in the header.",
                "type": "string"
              },
              {
                "name": "baseUrl",
                "description": "The base url for the news service",
                "type": "string"
              },
              {
                "name": "session",
                "description": "The session token for the news service",
                "type": "string"
              },
              { "name": "unreadNewsCount", "type": "number" },
              { "name": "news", "type": "News[]" },
              { "name": "sessionIsValid", "type": "boolean" },
              { "name": "selectedNewsIndex", "type": "number" },
              {
                "name": "initialReflectedProperties",
                "type": "Map<string, unknown>"
              },
              { "name": "internals", "type": "ElementInternals" },
              { "name": "dir", "type": "string" },
              { "name": "lang", "type": "string" },
              { "name": "didSSR" }
            ],
            "events": [
              {
                "name": "ed-session-expiring",
                "description": "The event fires 1 minute before the session actual expires."
              },
              {
                "name": "ed-session-expired",
                "description": "The event fires if the session is expired."
              },
              {
                "name": "ed-news-count-changed",
                "description": "This event fires when the total number of news items is determined and returns the exact number. It fires when the session changes (that also means initially). You can get the amount with `event.detail.count`. Use this to hide or disable your trigger button when the count is 0."
              },
              {
                "name": "ed-unread-news-count-changed",
                "description": "This event fires when the amount of unread news items for the user is changed and returns the exact number. The amount of unread news is calculated when the session changes (that also means initially), when the open attribute is set to true or when the user selects an unseen news object and thus reducing the count by one. You can get the amount with `event.detail.count`."
              }
            ]
          }
        }
      ]
    }
  }
}
