{
  "schemaVersion": "1.0.0",
  "readme": "",
  "modules": [
    {
      "kind": "javascript-module",
      "path": "events/error.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdErrorEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/error.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdErrorEvent",
          "declaration": {
            "name": "EdErrorEvent",
            "module": "events/error.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/icon-load.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdIconLoadEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/icon-load.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdIconLoadEvent",
          "declaration": {
            "name": "EdIconLoadEvent",
            "module": "events/icon-load.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/log.js",
      "declarations": [],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "module": "internal/log.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/custom-element.js",
      "declarations": [
        {
          "kind": "function",
          "name": "customElement",
          "parameters": [
            {
              "name": "tagName"
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "customElement",
          "declaration": {
            "name": "customElement",
            "module": "internal/custom-element.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "tagName",
          "declaration": {
            "name": "anonymous_0",
            "module": "internal/custom-element.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/ed-element.js",
      "declarations": [
        {
          "kind": "class",
          "description": "The base of every eurodata-ui element. Beyond Lit it prepends the shared host styles, attaches\n`ElementInternals` and its custom states, and holds reflected properties to the contract of\nnative reflected IDL attributes: a property that declares `useDefault` keeps its default out of\nthe DOM and returns to it when the attribute is removed or it is set to `null` or `undefined`, and\na reflected Boolean is never anything but `true` or `false` (see `getPropertyDescriptor`).",
          "name": "EdElement",
          "members": [
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`."
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir"
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang"
            }
          ],
          "attributes": [
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir"
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang"
            }
          ],
          "superclass": {
            "name": "LitElement",
            "package": "lit"
          },
          "jsDoc": "/**\n * The base of every eurodata-ui element. Beyond Lit it prepends the shared host styles, attaches\n * `ElementInternals` and its custom states, and holds reflected properties to the contract of\n * native reflected IDL attributes: a property that declares `useDefault` keeps its default out of\n * the DOM and returns to it when the attribute is removed or it is set to `null` or `undefined`, and\n * a reflected Boolean is never anything but `true` or `false` (see `getPropertyDescriptor`).\n */",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdElement",
            "module": "internal/ed-element.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/sanitize/sanitize-css-length.js",
      "declarations": [
        {
          "kind": "function",
          "name": "sanitizeCssLength",
          "return": {
            "type": {
              "text": "string"
            }
          },
          "parameters": [
            {
              "name": "value",
              "type": {
                "text": "string | number"
              }
            },
            {
              "name": "fallback",
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "Validates a CSS length expression for safe interpolation into `unsafeHTML` / `<style>` text.\n\nBare numbers (or numeric strings) are coerced to `${n}px`. Strings matching the allow-listed\nunit set are returned as-is. Anything else (including expressions like `100px}body{…}` that\ncould break out of the surrounding declaration) returns `fallback`."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "sanitizeCssLength",
          "declaration": {
            "name": "sanitizeCssLength",
            "module": "internal/sanitize/sanitize-css-length.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/sanitize/sanitize-navigation-href.js",
      "declarations": [
        {
          "kind": "function",
          "name": "sanitizeNavigationHref",
          "return": {
            "type": {
              "text": "string | undefined"
            }
          },
          "parameters": [
            {
              "name": "href",
              "type": {
                "text": "string | undefined"
              }
            }
          ],
          "description": "Returns the href if it is safe to use as a navigation target (`<a href>`), otherwise undefined.\n\nParses the value with the WHATWG `URL` parser — the same normalization a browser applies before\nit resolves a scheme, so leading control characters (e.g. `javascript:…`) can no longer\nsmuggle a dangerous scheme past the check — and accepts only an allowlist of navigation schemes\n(http, https, mailto, tel) plus relative, fragment and query URLs. Every other scheme, including\n`javascript:`, `vbscript:`, `data:` and `blob:`, is rejected.\n\nA safe href is returned unchanged (never the parsed/normalized form). For a resource reference\nsuch as an SVG href or a sprite-sheet `<use href>`, use sanitizeResourceUrl instead — it must\nallow `data:image/*` / `blob:`, which navigation must not."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "sanitizeNavigationHref",
          "declaration": {
            "name": "sanitizeNavigationHref",
            "module": "internal/sanitize/sanitize-navigation-href.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/sanitize/sanitize-resource-url.js",
      "declarations": [
        {
          "kind": "function",
          "name": "isImageDataUrl",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "href",
              "type": {
                "text": "string | undefined"
              }
            }
          ],
          "description": "Returns true for a `data:` URL that can only decode to a raster image.\n\nShared with `ed-markdown`, which needs the same answer for image sources: two copies of \"which\ndata URL is safe\" would eventually disagree, and the stricter one would not be the one that ran."
        },
        {
          "kind": "function",
          "name": "sanitizeResourceUrl",
          "return": {
            "type": {
              "text": "string | undefined"
            }
          },
          "parameters": [
            {
              "name": "href",
              "type": {
                "text": "string | undefined"
              }
            }
          ],
          "description": "Returns the href if it is safe to use as a resource reference — an SVG `href` / `xlink:href`, or\na sprite-sheet `<use href>` — otherwise undefined.\n\nParses with the WHATWG `URL` parser and matches an **allowlist**: `http`, `https`, `blob`, plus\nrelative, fragment and query references, plus `data:` URLs carrying a raster image. Using the\nreal parser is what closes control-character smuggling — it strips embedded TAB / LF / CR and\nleading C0 bytes before resolving the scheme, exactly as a browser does, so `java\\tscript:` and\n`\\x01javascript:` cannot slip past. Every other scheme is rejected, including the ones a denylist\nwould have to enumerate.\n\nNote that this drops `mailto:` and `tel:` too. They are navigation targets, not resources, and a\nfetched icon has no business linking to one — use sanitizeNavigationHref where a link is meant.\n\nThis guards the *scheme* only; element-level SVG vectors are the job of sanitizeSvg, which keeps\nan allowlist of elements and drops `foreignObject`, embedded frames and SMIL setters outright."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "isImageDataUrl",
          "declaration": {
            "name": "isImageDataUrl",
            "module": "internal/sanitize/sanitize-resource-url.js"
          }
        },
        {
          "kind": "js",
          "name": "sanitizeResourceUrl",
          "declaration": {
            "name": "sanitizeResourceUrl",
            "module": "internal/sanitize/sanitize-resource-url.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/sanitize/sanitize-svg.js",
      "declarations": [
        {
          "kind": "function",
          "name": "sanitizeSvg",
          "return": {
            "type": {
              "text": "void"
            }
          },
          "parameters": [
            {
              "name": "svg",
              "type": {
                "text": "SVGElement"
              }
            }
          ],
          "description": "Sanitizes an SVG element in-place before it is adopted into the host document (icon library\nfetches). Keeps only allowlisted vector-graphic elements — every other element, including\n`<script>`, `<foreignObject>`, `<iframe>`/`<object>`/`<embed>`, `<style>` and SMIL setters\n(`<animate>`/`<set>`), is removed with its subtree — then strips `on*` event-handler attributes\nand any `href` / `xlink:href` whose scheme fails `sanitizeResourceUrl`.\n\nAllowlisting is deliberate: the failure mode is dropping an unrecognized element (a visual\nglitch), never letting an executable vector through. Lit-rendered SVGs do not need this — they\ncannot carry attacker payload through Lit's auto-escaping."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "sanitizeSvg",
          "declaration": {
            "name": "sanitizeSvg",
            "module": "internal/sanitize/sanitize-svg.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/sanitize/sanitize-tag-name.js",
      "declarations": [
        {
          "kind": "function",
          "name": "sanitizeEdTagName",
          "return": {
            "type": {
              "text": "string | undefined"
            }
          },
          "parameters": [
            {
              "name": "tagName",
              "type": {
                "text": "string | undefined"
              }
            }
          ],
          "description": "Returns the tag name if it matches the `ed-*` custom-element grammar, otherwise undefined.\nUsed by the autoloader before concatenating into a dynamic-import path."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "sanitizeEdTagName",
          "declaration": {
            "name": "sanitizeEdTagName",
            "module": "internal/sanitize/sanitize-tag-name.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/sanitize/index.js",
      "declarations": [],
      "exports": [
        {
          "kind": "js",
          "name": "sanitizeCssLength",
          "declaration": {
            "name": "sanitizeCssLength",
            "module": "sanitize-css-length.js"
          }
        },
        {
          "kind": "js",
          "name": "sanitizeNavigationHref",
          "declaration": {
            "name": "sanitizeNavigationHref",
            "module": "sanitize-navigation-href.js"
          }
        },
        {
          "kind": "js",
          "name": "isImageDataUrl",
          "declaration": {
            "name": "isImageDataUrl",
            "module": "sanitize-resource-url.js"
          }
        },
        {
          "kind": "js",
          "name": "sanitizeResourceUrl",
          "declaration": {
            "name": "sanitizeResourceUrl",
            "module": "sanitize-resource-url.js"
          }
        },
        {
          "kind": "js",
          "name": "sanitizeSvg",
          "declaration": {
            "name": "sanitizeSvg",
            "module": "sanitize-svg.js"
          }
        },
        {
          "kind": "js",
          "name": "sanitizeEdTagName",
          "declaration": {
            "name": "sanitizeEdTagName",
            "module": "sanitize-tag-name.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/watch.js",
      "declarations": [
        {
          "kind": "function",
          "name": "watch",
          "parameters": [
            {
              "name": "propertyName",
              "type": {
                "text": "string | string[]"
              }
            },
            {
              "name": "options",
              "optional": true,
              "type": {
                "text": "WatchOptions"
              }
            }
          ],
          "description": "Runs when observed properties change, e.g."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "watch",
          "declaration": {
            "name": "watch",
            "module": "internal/watch.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/icon/icon-name.js",
      "declarations": [],
      "exports": []
    },
    {
      "kind": "javascript-module",
      "path": "components/icon/icon.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdIcon",
          "cssParts": [
            {
              "description": "The internal SVG element.",
              "name": "svg"
            },
            {
              "description": "The `<use>` element generated when using `spriteSheet: true`",
              "name": "use"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "svg",
              "type": {
                "text": "SVGElement | HTMLTemplateResult | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | { _$litType$: 1, strings: { raw: string[], length: number, toString: {  }, toLocaleString: {  }, concat: {  }, join: {  }, slice: {  }, indexOf: {  }, lastIndexOf: {  }, every: {  }, some: {  }, forEach: {  }, map: {  }, filter: {  }, reduce: {  }, reduceRight: {  }, find: {  }, findIndex: {  }, entries: {  }, keys: {  }, values: {  }, includes: {  }, flatMap: {  }, flat: {  }, at: {  }, findLast: {  }, findLastIndex: {  }, toReversed: {  }, toSorted: {  }, toSpliced: {  }, with: {  }, __@iterator@156: {  }, __@unscopables@158: { length?: false | true, toString?: false | true, toLocaleString?: false | true, concat?: false | true, join?: false | true, slice?: false | true, indexOf?: false | true, lastIndexOf?: false | true, every?: false | true, some?: false | true, forEach?: false | true, map?: false | true, filter?: false | true, reduce?: false | true, reduceRight?: false | true, find?: false | true, findIndex?: false | true, entries?: false | true, keys?: false | true, values?: false | true, includes?: false | true, flatMap?: false | true, flat?: false | true, at?: false | true, findLast?: false | true, findLastIndex?: false | true, toReversed?: false | true, toSorted?: false | true, toSpliced?: false | true, with?: false | true, __@iterator@156?: false | true, __@unscopables@158?: false | true } }, values: unknown[] } | SVGElement"
              }
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "IconName | EmptyStateIconName | undefined"
              },
              "description": "The name of the icon to draw. Typed against the first-party libraries (`IconName` for\nthe default library, `EmptyStateIconName` for `emptyState`). When using a custom\nregistered library, cast the value (e.g. `name=${value as IconName}`).",
              "attribute": "name",
              "reflects": true,
              "parsedType": {
                "text": "'number' | 'function' | 'absence-wft' | 'account' | 'account_class' | 'account_plan' | 'active' | 'add_circle' | 'add_one' | 'add_two' | 'admin' | 'admin_filled' | 'admin_filled_crossed' | 'alarm_clock' | 'align_center' | 'align_justify' | 'align_left' | 'align_right' | 'anchor' | 'android' | 'apple' | 'apple_logo' | 'apple_logo_filled' | 'approximately' | 'aral' | 'archive' | 'attachment' | 'average' | 'average_filled' | 'baby' | 'backspace' | 'backspace_filled' | 'badge_check' | 'badge_close' | 'bag' | 'bag_euro' | 'balance_sheet' | 'band_aid' | 'band_aid_filled' | 'bank_note' | 'bank_notes' | 'bank_notes_stack' | 'bar_chart' | 'bar_chart_10j' | 'bar_chart_12m' | 'bar_chart_13m' | 'bar_chart_1j' | 'battery' | 'battery_0' | 'battery_1' | 'battery_2' | 'battery_crossed' | 'bed' | 'beer' | 'bird' | 'birthday_cake' | 'blocked' | 'bluetooth' | 'bold' | 'book' | 'book_open' | 'bookmark' | 'bookmark_filled' | 'books' | 'box' | 'break-conflict' | 'brush' | 'building' | 'building_bank' | 'building_church' | 'building_company' | 'building_company_disabled' | 'building_company_group' | 'building_company_k' | 'building_company_m' | 'building_flag' | 'building_shield_hero' | 'building_store' | 'building_water' | 'business_card' | 'cactus' | 'cal' | 'cal_1' | 'cal_12' | 'cal_1y' | 'cal_31' | 'cal_365' | 'cal_7' | 'cal_add_one' | 'cal_average' | 'cal_check' | 'cal_clock' | 'cal_close' | 'cal_paragraph' | 'cal_return' | 'cal_select' | 'calculate' | 'camera' | 'camera_video' | 'canvas' | 'car' | 'car_filled' | 'car_side' | 'car_trade' | 'car_wash' | 'cash_register' | 'cat' | 'category' | 'chart_pie' | 'check' | 'check_auto' | 'check_circle' | 'check_circle_filled' | 'check_shield' | 'check_shield_filled' | 'checkbox' | 'checkbox_active' | 'checkbox_active_filled' | 'checkbox_tristate' | 'checklist' | 'chick' | 'christmas_star' | 'cigarette' | 'cigarette_crossed' | 'circle_back' | 'circle_dollar' | 'circle_e' | 'circle_euro' | 'circle_euro_add' | 'circle_euro_minus' | 'circle_f' | 'circle_k' | 'circle_k_filled' | 'circle_next' | 'circle_r' | 'circle_u' | 'circle_u_filled' | 'clear' | 'clipboard_paper' | 'clock' | 'clock_add' | 'clock_average' | 'clock_filled' | 'clock_hand' | 'clock_pie' | 'close' | 'close_circle' | 'close_circle_filled' | 'close_fullscreen' | 'cloud' | 'cloud_download' | 'cloud_filled' | 'cloud_upload' | 'cocktail' | 'coffee' | 'coffee_crossed' | 'coffee_togo' | 'coins' | 'coins_euro' | 'collapse' | 'collapse_all' | 'collect' | 'compare' | 'computer' | 'conifer' | 'construction' | 'construction_worker' | 'contacts' | 'content_bottom_in' | 'content_bottom_out' | 'content_right_in' | 'content_right_out' | 'coocking_pot' | 'cook' | 'copy' | 'copy_to_clipboard' | 'couch' | 'creditcard' | 'crown-o' | 'cut' | 'cut_left' | 'cut_up' | 'cyclist' | 'dashboard' | 'debug' | 'deer' | 'delete' | 'delete_permanent' | 'delete_row' | 'delete_undo' | 'desk_bell' | 'detailed-view' | 'diamond' | 'disc' | 'divide' | 'doctor_case' | 'doctor_case_filled' | 'dog' | 'dollar' | 'dove' | 'down' | 'down_end' | 'down_left' | 'down_right' | 'download' | 'download_filled_thick' | 'download_thick' | 'dragdrop' | 'dragger' | 'dumbbell' | 'e_invoice' | 'ed_arrow' | 'edit' | 'edit_filled' | 'edit_list' | 'eiffel_tower' | 'elephant' | 'elephant_2' | 'employee-data' | 'equal_boxed' | 'eraser' | 'etl_chatbot' | 'euro' | 'euro_user' | 'evening' | 'excel' | 'exchange' | 'expand' | 'expand_all' | 'export' | 'external_link' | 'eye' | 'eye_crossed' | 'favorite' | 'favorite_filled' | 'fax' | 'ferris_wheel' | 'field' | 'file' | 'filter' | 'filter_filled' | 'filter_remove' | 'finish_flag' | 'first' | 'fish' | 'fit_to_height' | 'fit_to_width' | 'flag' | 'flag_filled' | 'flame' | 'flower' | 'folder' | 'folder_export' | 'folder_open' | 'form' | 'forward' | 'forward_filled' | 'fullscreen' | 'gamepad' | 'gas_pump' | 'gas_pump_add' | 'gastronomy' | 'ghost' | 'ghost_filled' | 'gift' | 'glasses_antique' | 'global' | 'globe' | 'gorilla' | 'gps' | 'grid' | 'gripper_hor' | 'gripper_vert' | 'hand' | 'hand_coins' | 'hand_open' | 'hand_shake' | 'handles' | 'hanger' | 'headset' | 'heart' | 'heart_filled' | 'help_circle' | 'help_circle_filled' | 'history' | 'home' | 'home_euro' | 'home_filled' | 'hospital' | 'hot_air_balloon' | 'hourglass' | 'hourglass_bottom' | 'hourglass_lock' | 'hourglass_top' | 'ice_creme' | 'image' | 'image_portrait' | 'import' | 'inbox' | 'inbox_checked' | 'inbox_in' | 'inbox_out' | 'inbox_page' | 'info_circle' | 'info_circle_filled' | 'injection' | 'invoice' | 'invoice_edit' | 'invoice_euro' | 'invoice_filled' | 'italic' | 'java' | 'jet' | 'justice_hammer' | 'kettle_grill' | 'key' | 'keyboard' | 'last' | 'layer' | 'layer_1' | 'layer_2' | 'layer_3' | 'left' | 'left_end' | 'left_right' | 'lightbulb' | 'lightning' | 'line_chart' | 'link' | 'link_broken' | 'linux' | 'list_add' | 'list_download' | 'list_indented' | 'local_community' | 'locate' | 'located_filled' | 'location_circle' | 'lock' | 'login' | 'logout' | 'magic' | 'mail' | 'mail_forward' | 'mail_new' | 'mail_open' | 'mail_question' | 'mail_read' | 'marker' | 'marker_crossed' | 'markers' | 'maximise' | 'megaphone' | 'memory' | 'menu' | 'merge' | 'message' | 'message_dialog' | 'message_edit' | 'message_filled' | 'message_question' | 'message_warning' | 'microphone' | 'midday' | 'miniature-view' | 'minus' | 'missing-employee-data' | 'monitor' | 'monochrome' | 'moped' | 'more' | 'more_vert' | 'morning' | 'multiply' | 'musical_notes' | 'newsletter' | 'next' | 'next_entry' | 'night' | 'no_access' | 'note' | 'note_filled' | 'notification' | 'numbers' | 'nurse' | 'nut' | 'office_chair' | 'offline' | 'online' | 'open_in_window' | 'page' | 'page_1' | 'page_2' | 'page_add' | 'page_chart_pie' | 'page_check' | 'page_check_addon' | 'page_clock' | 'page_contract' | 'page_cover' | 'page_crossed' | 'page_csv' | 'page_doc' | 'page_document' | 'page_document_filled' | 'page_double' | 'page_edit' | 'page_eps' | 'page_euro' | 'page_exe' | 'page_exlamation' | 'page_image' | 'page_lock' | 'page_mp3' | 'page_pdf' | 'page_pdf_logo' | 'page_png' | 'page_rar' | 'page_scroll' | 'page_search' | 'page_sepa' | 'page_stack_check' | 'page_tif' | 'page_ttf' | 'page_txt' | 'page_xls' | 'page_xml' | 'paint_bucket' | 'palm_tree' | 'palm_tree_check' | 'palm_tree_filled' | 'paragraph' | 'paragraph_lock' | 'passive-time-recording-o' | 'paste' | 'pause' | 'paypal' | 'pending' | 'pendulum' | 'percent' | 'personnel' | 'phone' | 'piggy_bank' | 'pin' | 'pin_filled' | 'pizza' | 'placeholder' | 'play' | 'plus' | 'plus_minus' | 'power' | 'presentation' | 'pretzel' | 'previous' | 'print' | 'priority' | 'profit' | 'progress_seg' | 'progress_seg_0' | 'progress_seg_1' | 'progress_seg_2' | 'progress_seg_crossed' | 'pumpkin' | 'puzzle' | 'quote' | 'rabbit' | 'radio' | 'radio_active' | 'record' | 'rectangle_edit' | 'red_cross' | 'redo' | 'refresh' | 'repeat' | 'repeat_square' | 'report_euro' | 'reset' | 'restore' | 'restore_square' | 'results' | 'return' | 'return_right' | 'right' | 'right_end' | 'road_closure' | 'rocket' | 'rotate_display' | 'rotate_left' | 'rotate_right' | 'ruler' | 'safe' | 'sailboat' | 'sale' | 'satchel' | 'satchel_filled' | 'save' | 'save_as' | 'scale_justice' | 'scan' | 'scan_page' | 'scanner' | 'school_holiday' | 'screw_nut' | 'screw_nut_edit' | 'screwdriver' | 'screwer' | 'script' | 'search' | 'send' | 'server' | 'settings' | 'settings_auto' | 'settings_gears' | 'settings_slider' | 'settings_square' | 'share' | 'shell' | 'shield_hero' | 'shift-overtime' | 'shower' | 'slot_maschine' | 'smartphone_landscape' | 'smartphone_portrait' | 'snowflake' | 'sort_alphabetical_ascending' | 'sort_alphabetical_descending' | 'sort_ascending' | 'sort_descending' | 'sort_numerical_ascending' | 'sort_numerical_descending' | 'sort_tree' | 'sort_up' | 'spartan' | 'speedometer' | 'split' | 'split_button_arrow_down' | 'split_vert' | 'spy' | 'square_1' | 'square_2' | 'stamp' | 'star_double' | 'stars' | 'start' | 'stethoscope' | 'stop' | 'stop_sign' | 'stopwatch' | 'stroller' | 'structure' | 'suitcase' | 'sum' | 'switch_vertical' | 'table' | 'table_add' | 'table_remove' | 'tablet_landscape' | 'tablet_portrait' | 'tag' | 'tag_crossed' | 'tag_euro' | 'task-unassigned-o' | 'tax_o' | 'template' | 'tennis_racket' | 'test_tube' | 'test_tube_liquid' | 'text' | 'thermostat_minus' | 'thermostat_plus' | 'thick_arrow_down' | 'thick_arrow_left' | 'thick_arrow_right' | 'thick_arrow_up' | 'thumbnails' | 'ticket' | 'tie' | 'time_left' | 'timeline' | 'timeline-o' | 'toilet' | 'tools' | 'tooth' | 'trade' | 'transfer' | 'trolley' | 'trolley_down' | 'trolley_transport' | 'truck' | 'truck_clock' | 'tv' | 'tv_play' | 'umbrella' | 'underline' | 'undo' | 'unlock' | 'unordered_list' | 'unpaid' | 'up' | 'up_down' | 'up_down_arrow' | 'up_end' | 'up_left' | 'up_right' | 'upload' | 'user' | 'user_add' | 'user_add_circle' | 'user_bag' | 'user_check' | 'user_circle' | 'user_circle_filled' | 'user_clock' | 'user_disabled' | 'user_edit' | 'user_euro' | 'user_filled' | 'user_group' | 'user_house' | 'user_id' | 'user_k' | 'user_list' | 'user_m' | 'user_message' | 'user_remove' | 'user_square_filled' | 'user_tie' | 'variable' | 'vase' | 'warehouse' | 'warning' | 'warning_auto' | 'warning_clock' | 'warning_clock_filled' | 'warning_filled' | 'warning_shield' | 'warning_shield_filled' | 'way_sign' | 'wedding_rings' | 'westfalen' | 'wheelchair' | 'whole_day' | 'windows' | 'word' | 'world' | 'wrench' | 'zoom_in' | 'zoom_out' | 'zzz' | 'bell' | 'bell_mono' | 'building_mono' | 'calendar' | 'calendar_mono' | 'calendar25' | 'calendar25_mono' | 'cart' | 'cart_mono' | 'clipboard' | 'clipboard_mono' | 'clock_mono' | 'code' | 'coffee_mono' | 'comment' | 'comment_mono' | 'construction_mono' | 'creditcard_mono' | 'document' | 'document_mono' | 'document_edit' | 'document_edit_mono' | 'documents' | 'documents_mono' | 'done' | 'done_mono' | 'dragndrop' | 'dragndrop_mono' | 'edit_mono' | 'error' | 'error_mono' | 'folder_mono' | 'gas_pump_mono' | 'inbox_mono' | 'location' | 'location_mono' | 'lock_mono' | 'mail_mono' | 'money' | 'money_mono' | 'news' | 'news_mono' | 'note_mono' | 'photos' | 'photos_mono' | 'placeholder_mono' | 'price' | 'price_mono' | 'question' | 'question_mono' | 'sandclock' | 'sandclock_mono' | 'scan_mono' | 'search_mono' | 'shield' | 'shield_mono' | 'snooze' | 'snooze_mono' | 'star' | 'star_mono' | 'stop_mono' | 'support' | 'support_mono' | 'tag_mono' | 'thumbsup' | 'thumbsup_mono' | 'trash' | 'trash_mono' | 'user_mono' | 'user_group_mono' | 'vacation' | 'vacation_mono' | 'warning_mono' | undefined"
              }
            },
            {
              "kind": "field",
              "name": "family",
              "type": {
                "text": "string"
              },
              "description": "The family of icons to choose from. When using empty state icons you can add the mono to get the mono-colored icons.",
              "attribute": "family",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "variant",
              "type": {
                "text": "string"
              },
              "description": "The name of the icon's variant. Our Libraries do not use any variants, but it is useful for some custom added libraries.",
              "attribute": "variant",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "autoWidth",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Sets the width of the icon to match the cropped SVG viewBox. This operates like the Font `fa-width-auto` class.",
              "attribute": "auto-width",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "swapOpacity",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Swaps the opacity of duotone icons.",
              "attribute": "swap-opacity",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "src",
              "type": {
                "text": "string | undefined"
              },
              "description": "An external URL of an SVG file. Ignored while `name` is set — a library icon wins, and a resolver that fails\nclears the icon rather than falling back here.\n\nThe response is sanitized before it enters the page. Only vector-graphic elements survive, so `<script>`,\n`<foreignObject>`, embedded frames, `<style>` and the animation setters are dropped with their subtrees; every\n`on*` attribute is removed, and every `href` attribute is checked against a scheme allowlist.\n\nTrust in the source still matters. What survives can still pull external resources — an `<image>`, or a `url()`\nin a `style` attribute or a paint attribute such as `fill`, none of which are inspected — and it can carry links.\nNothing checks that it draws what you expect.",
              "attribute": "src"
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "An alternate description to use for assistive devices. If omitted, the icon will be considered presentational and\nignored by assistive devices.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "library",
              "type": {
                "text": "string"
              },
              "default": "'default'",
              "description": "The name of a registered custom icon library.",
              "attribute": "library",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "noRecolor",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the recoloring of the icon with currentColor and instead keeps the initial fill color for each path",
              "attribute": "no-recolor",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "rotate",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "Sets the rotation degree of the icon",
              "attribute": "rotate",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "flip",
              "type": {
                "text": "'x' | 'y' | 'both' | undefined"
              },
              "description": "Sets the flip direction of the icon along the 'x' (horizontal), 'y' (vertical), or 'both' axes.",
              "attribute": "flip",
              "reflects": true,
              "parsedType": {
                "text": "'x' | 'y' | 'both' | undefined"
              }
            },
            {
              "kind": "method",
              "name": "getIconSource",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<IconSource>"
                }
              }
            },
            {
              "kind": "field",
              "name": "resolveIcon",
              "privacy": "private",
              "description": "Given a URL, this function returns the resulting SVG element or an appropriate error symbol."
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "Emitted when the icon has loaded. When using `spriteSheet: true` this will not emit.",
              "name": "ed-icon-load",
              "reactName": "onEdIconLoad",
              "eventName": "EdIconLoadEvent"
            },
            {
              "description": "Emitted when the icon fails to load due to an error. When using `spriteSheet: true` this will not emit.",
              "name": "ed-error",
              "reactName": "onEdError",
              "eventName": "EdErrorEvent"
            }
          ],
          "attributes": [
            {
              "name": "name",
              "type": {
                "text": "IconName | EmptyStateIconName | undefined"
              },
              "description": "The name of the icon to draw. Typed against the first-party libraries (`IconName` for\nthe default library, `EmptyStateIconName` for `emptyState`). When using a custom\nregistered library, cast the value (e.g. `name=${value as IconName}`).",
              "fieldName": "name",
              "parsedType": {
                "text": "'number' | 'function' | 'absence-wft' | 'account' | 'account_class' | 'account_plan' | 'active' | 'add_circle' | 'add_one' | 'add_two' | 'admin' | 'admin_filled' | 'admin_filled_crossed' | 'alarm_clock' | 'align_center' | 'align_justify' | 'align_left' | 'align_right' | 'anchor' | 'android' | 'apple' | 'apple_logo' | 'apple_logo_filled' | 'approximately' | 'aral' | 'archive' | 'attachment' | 'average' | 'average_filled' | 'baby' | 'backspace' | 'backspace_filled' | 'badge_check' | 'badge_close' | 'bag' | 'bag_euro' | 'balance_sheet' | 'band_aid' | 'band_aid_filled' | 'bank_note' | 'bank_notes' | 'bank_notes_stack' | 'bar_chart' | 'bar_chart_10j' | 'bar_chart_12m' | 'bar_chart_13m' | 'bar_chart_1j' | 'battery' | 'battery_0' | 'battery_1' | 'battery_2' | 'battery_crossed' | 'bed' | 'beer' | 'bird' | 'birthday_cake' | 'blocked' | 'bluetooth' | 'bold' | 'book' | 'book_open' | 'bookmark' | 'bookmark_filled' | 'books' | 'box' | 'break-conflict' | 'brush' | 'building' | 'building_bank' | 'building_church' | 'building_company' | 'building_company_disabled' | 'building_company_group' | 'building_company_k' | 'building_company_m' | 'building_flag' | 'building_shield_hero' | 'building_store' | 'building_water' | 'business_card' | 'cactus' | 'cal' | 'cal_1' | 'cal_12' | 'cal_1y' | 'cal_31' | 'cal_365' | 'cal_7' | 'cal_add_one' | 'cal_average' | 'cal_check' | 'cal_clock' | 'cal_close' | 'cal_paragraph' | 'cal_return' | 'cal_select' | 'calculate' | 'camera' | 'camera_video' | 'canvas' | 'car' | 'car_filled' | 'car_side' | 'car_trade' | 'car_wash' | 'cash_register' | 'cat' | 'category' | 'chart_pie' | 'check' | 'check_auto' | 'check_circle' | 'check_circle_filled' | 'check_shield' | 'check_shield_filled' | 'checkbox' | 'checkbox_active' | 'checkbox_active_filled' | 'checkbox_tristate' | 'checklist' | 'chick' | 'christmas_star' | 'cigarette' | 'cigarette_crossed' | 'circle_back' | 'circle_dollar' | 'circle_e' | 'circle_euro' | 'circle_euro_add' | 'circle_euro_minus' | 'circle_f' | 'circle_k' | 'circle_k_filled' | 'circle_next' | 'circle_r' | 'circle_u' | 'circle_u_filled' | 'clear' | 'clipboard_paper' | 'clock' | 'clock_add' | 'clock_average' | 'clock_filled' | 'clock_hand' | 'clock_pie' | 'close' | 'close_circle' | 'close_circle_filled' | 'close_fullscreen' | 'cloud' | 'cloud_download' | 'cloud_filled' | 'cloud_upload' | 'cocktail' | 'coffee' | 'coffee_crossed' | 'coffee_togo' | 'coins' | 'coins_euro' | 'collapse' | 'collapse_all' | 'collect' | 'compare' | 'computer' | 'conifer' | 'construction' | 'construction_worker' | 'contacts' | 'content_bottom_in' | 'content_bottom_out' | 'content_right_in' | 'content_right_out' | 'coocking_pot' | 'cook' | 'copy' | 'copy_to_clipboard' | 'couch' | 'creditcard' | 'crown-o' | 'cut' | 'cut_left' | 'cut_up' | 'cyclist' | 'dashboard' | 'debug' | 'deer' | 'delete' | 'delete_permanent' | 'delete_row' | 'delete_undo' | 'desk_bell' | 'detailed-view' | 'diamond' | 'disc' | 'divide' | 'doctor_case' | 'doctor_case_filled' | 'dog' | 'dollar' | 'dove' | 'down' | 'down_end' | 'down_left' | 'down_right' | 'download' | 'download_filled_thick' | 'download_thick' | 'dragdrop' | 'dragger' | 'dumbbell' | 'e_invoice' | 'ed_arrow' | 'edit' | 'edit_filled' | 'edit_list' | 'eiffel_tower' | 'elephant' | 'elephant_2' | 'employee-data' | 'equal_boxed' | 'eraser' | 'etl_chatbot' | 'euro' | 'euro_user' | 'evening' | 'excel' | 'exchange' | 'expand' | 'expand_all' | 'export' | 'external_link' | 'eye' | 'eye_crossed' | 'favorite' | 'favorite_filled' | 'fax' | 'ferris_wheel' | 'field' | 'file' | 'filter' | 'filter_filled' | 'filter_remove' | 'finish_flag' | 'first' | 'fish' | 'fit_to_height' | 'fit_to_width' | 'flag' | 'flag_filled' | 'flame' | 'flower' | 'folder' | 'folder_export' | 'folder_open' | 'form' | 'forward' | 'forward_filled' | 'fullscreen' | 'gamepad' | 'gas_pump' | 'gas_pump_add' | 'gastronomy' | 'ghost' | 'ghost_filled' | 'gift' | 'glasses_antique' | 'global' | 'globe' | 'gorilla' | 'gps' | 'grid' | 'gripper_hor' | 'gripper_vert' | 'hand' | 'hand_coins' | 'hand_open' | 'hand_shake' | 'handles' | 'hanger' | 'headset' | 'heart' | 'heart_filled' | 'help_circle' | 'help_circle_filled' | 'history' | 'home' | 'home_euro' | 'home_filled' | 'hospital' | 'hot_air_balloon' | 'hourglass' | 'hourglass_bottom' | 'hourglass_lock' | 'hourglass_top' | 'ice_creme' | 'image' | 'image_portrait' | 'import' | 'inbox' | 'inbox_checked' | 'inbox_in' | 'inbox_out' | 'inbox_page' | 'info_circle' | 'info_circle_filled' | 'injection' | 'invoice' | 'invoice_edit' | 'invoice_euro' | 'invoice_filled' | 'italic' | 'java' | 'jet' | 'justice_hammer' | 'kettle_grill' | 'key' | 'keyboard' | 'last' | 'layer' | 'layer_1' | 'layer_2' | 'layer_3' | 'left' | 'left_end' | 'left_right' | 'lightbulb' | 'lightning' | 'line_chart' | 'link' | 'link_broken' | 'linux' | 'list_add' | 'list_download' | 'list_indented' | 'local_community' | 'locate' | 'located_filled' | 'location_circle' | 'lock' | 'login' | 'logout' | 'magic' | 'mail' | 'mail_forward' | 'mail_new' | 'mail_open' | 'mail_question' | 'mail_read' | 'marker' | 'marker_crossed' | 'markers' | 'maximise' | 'megaphone' | 'memory' | 'menu' | 'merge' | 'message' | 'message_dialog' | 'message_edit' | 'message_filled' | 'message_question' | 'message_warning' | 'microphone' | 'midday' | 'miniature-view' | 'minus' | 'missing-employee-data' | 'monitor' | 'monochrome' | 'moped' | 'more' | 'more_vert' | 'morning' | 'multiply' | 'musical_notes' | 'newsletter' | 'next' | 'next_entry' | 'night' | 'no_access' | 'note' | 'note_filled' | 'notification' | 'numbers' | 'nurse' | 'nut' | 'office_chair' | 'offline' | 'online' | 'open_in_window' | 'page' | 'page_1' | 'page_2' | 'page_add' | 'page_chart_pie' | 'page_check' | 'page_check_addon' | 'page_clock' | 'page_contract' | 'page_cover' | 'page_crossed' | 'page_csv' | 'page_doc' | 'page_document' | 'page_document_filled' | 'page_double' | 'page_edit' | 'page_eps' | 'page_euro' | 'page_exe' | 'page_exlamation' | 'page_image' | 'page_lock' | 'page_mp3' | 'page_pdf' | 'page_pdf_logo' | 'page_png' | 'page_rar' | 'page_scroll' | 'page_search' | 'page_sepa' | 'page_stack_check' | 'page_tif' | 'page_ttf' | 'page_txt' | 'page_xls' | 'page_xml' | 'paint_bucket' | 'palm_tree' | 'palm_tree_check' | 'palm_tree_filled' | 'paragraph' | 'paragraph_lock' | 'passive-time-recording-o' | 'paste' | 'pause' | 'paypal' | 'pending' | 'pendulum' | 'percent' | 'personnel' | 'phone' | 'piggy_bank' | 'pin' | 'pin_filled' | 'pizza' | 'placeholder' | 'play' | 'plus' | 'plus_minus' | 'power' | 'presentation' | 'pretzel' | 'previous' | 'print' | 'priority' | 'profit' | 'progress_seg' | 'progress_seg_0' | 'progress_seg_1' | 'progress_seg_2' | 'progress_seg_crossed' | 'pumpkin' | 'puzzle' | 'quote' | 'rabbit' | 'radio' | 'radio_active' | 'record' | 'rectangle_edit' | 'red_cross' | 'redo' | 'refresh' | 'repeat' | 'repeat_square' | 'report_euro' | 'reset' | 'restore' | 'restore_square' | 'results' | 'return' | 'return_right' | 'right' | 'right_end' | 'road_closure' | 'rocket' | 'rotate_display' | 'rotate_left' | 'rotate_right' | 'ruler' | 'safe' | 'sailboat' | 'sale' | 'satchel' | 'satchel_filled' | 'save' | 'save_as' | 'scale_justice' | 'scan' | 'scan_page' | 'scanner' | 'school_holiday' | 'screw_nut' | 'screw_nut_edit' | 'screwdriver' | 'screwer' | 'script' | 'search' | 'send' | 'server' | 'settings' | 'settings_auto' | 'settings_gears' | 'settings_slider' | 'settings_square' | 'share' | 'shell' | 'shield_hero' | 'shift-overtime' | 'shower' | 'slot_maschine' | 'smartphone_landscape' | 'smartphone_portrait' | 'snowflake' | 'sort_alphabetical_ascending' | 'sort_alphabetical_descending' | 'sort_ascending' | 'sort_descending' | 'sort_numerical_ascending' | 'sort_numerical_descending' | 'sort_tree' | 'sort_up' | 'spartan' | 'speedometer' | 'split' | 'split_button_arrow_down' | 'split_vert' | 'spy' | 'square_1' | 'square_2' | 'stamp' | 'star_double' | 'stars' | 'start' | 'stethoscope' | 'stop' | 'stop_sign' | 'stopwatch' | 'stroller' | 'structure' | 'suitcase' | 'sum' | 'switch_vertical' | 'table' | 'table_add' | 'table_remove' | 'tablet_landscape' | 'tablet_portrait' | 'tag' | 'tag_crossed' | 'tag_euro' | 'task-unassigned-o' | 'tax_o' | 'template' | 'tennis_racket' | 'test_tube' | 'test_tube_liquid' | 'text' | 'thermostat_minus' | 'thermostat_plus' | 'thick_arrow_down' | 'thick_arrow_left' | 'thick_arrow_right' | 'thick_arrow_up' | 'thumbnails' | 'ticket' | 'tie' | 'time_left' | 'timeline' | 'timeline-o' | 'toilet' | 'tools' | 'tooth' | 'trade' | 'transfer' | 'trolley' | 'trolley_down' | 'trolley_transport' | 'truck' | 'truck_clock' | 'tv' | 'tv_play' | 'umbrella' | 'underline' | 'undo' | 'unlock' | 'unordered_list' | 'unpaid' | 'up' | 'up_down' | 'up_down_arrow' | 'up_end' | 'up_left' | 'up_right' | 'upload' | 'user' | 'user_add' | 'user_add_circle' | 'user_bag' | 'user_check' | 'user_circle' | 'user_circle_filled' | 'user_clock' | 'user_disabled' | 'user_edit' | 'user_euro' | 'user_filled' | 'user_group' | 'user_house' | 'user_id' | 'user_k' | 'user_list' | 'user_m' | 'user_message' | 'user_remove' | 'user_square_filled' | 'user_tie' | 'variable' | 'vase' | 'warehouse' | 'warning' | 'warning_auto' | 'warning_clock' | 'warning_clock_filled' | 'warning_filled' | 'warning_shield' | 'warning_shield_filled' | 'way_sign' | 'wedding_rings' | 'westfalen' | 'wheelchair' | 'whole_day' | 'windows' | 'word' | 'world' | 'wrench' | 'zoom_in' | 'zoom_out' | 'zzz' | 'bell' | 'bell_mono' | 'building_mono' | 'calendar' | 'calendar_mono' | 'calendar25' | 'calendar25_mono' | 'cart' | 'cart_mono' | 'clipboard' | 'clipboard_mono' | 'clock_mono' | 'code' | 'coffee_mono' | 'comment' | 'comment_mono' | 'construction_mono' | 'creditcard_mono' | 'document' | 'document_mono' | 'document_edit' | 'document_edit_mono' | 'documents' | 'documents_mono' | 'done' | 'done_mono' | 'dragndrop' | 'dragndrop_mono' | 'edit_mono' | 'error' | 'error_mono' | 'folder_mono' | 'gas_pump_mono' | 'inbox_mono' | 'location' | 'location_mono' | 'lock_mono' | 'mail_mono' | 'money' | 'money_mono' | 'news' | 'news_mono' | 'note_mono' | 'photos' | 'photos_mono' | 'placeholder_mono' | 'price' | 'price_mono' | 'question' | 'question_mono' | 'sandclock' | 'sandclock_mono' | 'scan_mono' | 'search_mono' | 'shield' | 'shield_mono' | 'snooze' | 'snooze_mono' | 'star' | 'star_mono' | 'stop_mono' | 'support' | 'support_mono' | 'tag_mono' | 'thumbsup' | 'thumbsup_mono' | 'trash' | 'trash_mono' | 'user_mono' | 'user_group_mono' | 'vacation' | 'vacation_mono' | 'warning_mono' | undefined"
              }
            },
            {
              "name": "family",
              "type": {
                "text": "string"
              },
              "description": "The family of icons to choose from. When using empty state icons you can add the mono to get the mono-colored icons.",
              "fieldName": "family"
            },
            {
              "name": "variant",
              "type": {
                "text": "string"
              },
              "description": "The name of the icon's variant. Our Libraries do not use any variants, but it is useful for some custom added libraries.",
              "fieldName": "variant"
            },
            {
              "name": "auto-width",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Sets the width of the icon to match the cropped SVG viewBox. This operates like the Font `fa-width-auto` class.",
              "fieldName": "autoWidth"
            },
            {
              "name": "swap-opacity",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Swaps the opacity of duotone icons.",
              "fieldName": "swapOpacity"
            },
            {
              "name": "src",
              "type": {
                "text": "string | undefined"
              },
              "description": "An external URL of an SVG file. Ignored while `name` is set — a library icon wins, and a resolver that fails\nclears the icon rather than falling back here.\n\nThe response is sanitized before it enters the page. Only vector-graphic elements survive, so `<script>`,\n`<foreignObject>`, embedded frames, `<style>` and the animation setters are dropped with their subtrees; every\n`on*` attribute is removed, and every `href` attribute is checked against a scheme allowlist.\n\nTrust in the source still matters. What survives can still pull external resources — an `<image>`, or a `url()`\nin a `style` attribute or a paint attribute such as `fill`, none of which are inspected — and it can carry links.\nNothing checks that it draws what you expect.",
              "fieldName": "src"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "An alternate description to use for assistive devices. If omitted, the icon will be considered presentational and\nignored by assistive devices.",
              "fieldName": "label"
            },
            {
              "name": "library",
              "type": {
                "text": "string"
              },
              "default": "'default'",
              "description": "The name of a registered custom icon library.",
              "fieldName": "library"
            },
            {
              "name": "no-recolor",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the recoloring of the icon with currentColor and instead keeps the initial fill color for each path",
              "fieldName": "noRecolor"
            },
            {
              "name": "rotate",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "Sets the rotation degree of the icon",
              "fieldName": "rotate"
            },
            {
              "name": "flip",
              "type": {
                "text": "'x' | 'y' | 'both' | undefined"
              },
              "description": "Sets the flip direction of the icon along the 'x' (horizontal), 'y' (vertical), or 'both' axes.",
              "fieldName": "flip",
              "parsedType": {
                "text": "'x' | 'y' | 'both' | undefined"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Icons are symbols that can be used to represent various options within an application.",
          "jsDoc": "/**\n * @summary Icons are symbols that can be used to represent various options within an application.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/icon\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @event ed-icon-load - Emitted when the icon has loaded. When using `spriteSheet: true` this will not emit.\n * @event ed-error - Emitted when the icon fails to load due to an error. When using `spriteSheet: true` this will not emit.\n *\n * @csspart svg - The internal SVG element.\n * @csspart use - The `<use>` element generated when using `spriteSheet: true`\n *\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/icon",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-icon",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdIcon",
            "module": "components/icon/icon.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-icon",
          "declaration": {
            "name": "EdIcon",
            "module": "components/icon/icon.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/icon/library.js",
      "declarations": [
        {
          "kind": "function",
          "name": "watchIcon",
          "parameters": [
            {
              "name": "icon",
              "type": {
                "text": "EdIcon"
              }
            }
          ],
          "description": "Adds an icon to the list of watched icons."
        },
        {
          "kind": "function",
          "name": "unwatchIcon",
          "parameters": [
            {
              "name": "icon",
              "type": {
                "text": "EdIcon"
              }
            }
          ],
          "description": "Removes an icon from the list of watched icons."
        },
        {
          "kind": "function",
          "name": "getIconLibrary",
          "parameters": [
            {
              "name": "name",
              "optional": true,
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "Returns a library from the registry."
        },
        {
          "kind": "function",
          "name": "registerIconLibrary",
          "parameters": [
            {
              "name": "name",
              "type": {
                "text": "string"
              }
            },
            {
              "name": "options",
              "type": {
                "text": "Omit<IconLibrary, 'name'>"
              }
            }
          ],
          "description": "Adds an icon library to the registry, or overrides an existing one."
        },
        {
          "kind": "function",
          "name": "unregisterIconLibrary",
          "parameters": [
            {
              "name": "name",
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "Removes an icon library from the registry."
        },
        {
          "kind": "function",
          "name": "setDefaultIconFamily",
          "parameters": [
            {
              "name": "family",
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "Sets the default icon family."
        },
        {
          "kind": "function",
          "name": "getDefaultIconFamily",
          "description": "Gets the default icon family."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "watchIcon",
          "declaration": {
            "name": "watchIcon",
            "module": "components/icon/library.js"
          }
        },
        {
          "kind": "js",
          "name": "unwatchIcon",
          "declaration": {
            "name": "unwatchIcon",
            "module": "components/icon/library.js"
          }
        },
        {
          "kind": "js",
          "name": "getIconLibrary",
          "declaration": {
            "name": "getIconLibrary",
            "module": "components/icon/library.js"
          }
        },
        {
          "kind": "js",
          "name": "registerIconLibrary",
          "declaration": {
            "name": "registerIconLibrary",
            "module": "components/icon/library.js"
          }
        },
        {
          "kind": "js",
          "name": "unregisterIconLibrary",
          "declaration": {
            "name": "unregisterIconLibrary",
            "module": "components/icon/library.js"
          }
        },
        {
          "kind": "js",
          "name": "setDefaultIconFamily",
          "declaration": {
            "name": "setDefaultIconFamily",
            "module": "components/icon/library.js"
          }
        },
        {
          "kind": "js",
          "name": "getDefaultIconFamily",
          "declaration": {
            "name": "getDefaultIconFamily",
            "module": "components/icon/library.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/base-path.js",
      "declarations": [
        {
          "kind": "function",
          "name": "setBasePath",
          "parameters": [
            {
              "name": "path",
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "Overrides the auto-derived base path. Called by the loader entry, which knows its own location."
        },
        {
          "kind": "function",
          "name": "getBasePath",
          "parameters": [
            {
              "name": "subpath",
              "default": "''"
            }
          ],
          "description": "Returns the library base path, with `subpath` appended when given."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "setBasePath",
          "declaration": {
            "name": "setBasePath",
            "module": "internal/base-path.js"
          }
        },
        {
          "kind": "js",
          "name": "getBasePath",
          "declaration": {
            "name": "getBasePath",
            "module": "internal/base-path.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "utilities/autoloader.js",
      "declarations": [
        {
          "kind": "function",
          "name": "startLoader",
          "description": "Starts the autoloader."
        },
        {
          "kind": "function",
          "name": "stopLoader",
          "description": "Stops the autoloader"
        },
        {
          "kind": "function",
          "name": "discover",
          "parameters": [
            {
              "name": "root",
              "type": {
                "text": "Document | Element | ShadowRoot"
              }
            }
          ],
          "description": "Checks a node for undefined elements and attempts to register them."
        },
        {
          "kind": "function",
          "name": "preventTurboFouce",
          "parameters": [
            {
              "name": "timeout",
              "default": "2000"
            }
          ],
          "description": "Acts as a middleware for Turbo's `turbo:before-render` event to ensure components are auto-loaded before showing the\nnext page, eliminating page-to-page FOUCE in a Turbo environment."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "startLoader",
          "declaration": {
            "name": "startLoader",
            "module": "utilities/autoloader.js"
          }
        },
        {
          "kind": "js",
          "name": "stopLoader",
          "declaration": {
            "name": "stopLoader",
            "module": "utilities/autoloader.js"
          }
        },
        {
          "kind": "js",
          "name": "discover",
          "declaration": {
            "name": "discover",
            "module": "utilities/autoloader.js"
          }
        },
        {
          "kind": "js",
          "name": "preventTurboFouce",
          "declaration": {
            "name": "preventTurboFouce",
            "module": "utilities/autoloader.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "utilities/defined.js",
      "declarations": [
        {
          "kind": "function",
          "name": "allDefined",
          "parameters": [
            {
              "name": "options",
              "optional": true,
              "type": {
                "text": "Partial<AllDefinedOptions>"
              }
            }
          ],
          "description": "Waits for custom elements that are currently on the page to be registered before resolving. This is sugar for\nawaiting `customElements.whenDefined()` multiple times. By default, the function waits for all undefined eurodata-ui\nelements, but you can pass a custom match function to wait for other custom elements instead.\n\nThe function returns with `Promise.all()`, so any loading errors will cause it to reject. Make sure you handle errors\naccordingly using a try/catch block or a `.catch()`."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "allDefined",
          "declaration": {
            "name": "allDefined",
            "module": "utilities/defined.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/intl-locale.js",
      "declarations": [
        {
          "kind": "function",
          "name": "toIntlLocale",
          "return": {
            "type": {
              "text": "string"
            }
          },
          "parameters": [
            {
              "name": "lang",
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "A language tag as Intl reads it. The POSIX underscore form (\"de_DE\") is the mistake a consumer makes, and\nIntl throws a RangeError for it; its BCP 47 spelling (\"de-DE\") is what was meant."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "toIntlLocale",
          "declaration": {
            "name": "toIntlLocale",
            "module": "internal/intl-locale.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/en.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'This content was generated by AI', allTagsRemoved: 'All tags removed', appearance: 'Appearance', appearanceClassic: 'Classic', appearanceModern: 'Modern', autosizeColumn: 'Fit column to content', back: 'Back', cancel: 'Cancel', carousel: 'Carousel', chooseDate: 'Choose a date', chooseDateAndTime: 'Choose a date and time', chooseTime: 'Choose a time', clearEntry: 'Clear entry', clearFilter: 'Clear filter', close: 'Close', collapse: 'Collapse', columnMenu: 'Column options', columnMovedToPosition: (label, position, total) => `${label}, Position ${position} of ${total}`, columns: 'Columns', completed: 'Completed', copied: 'Copied', copy: 'Copy', currentValue: 'Current value', dateInputBadInput: 'Please enter a valid date.', dateInputRangeOverflow: 'Date is too late.', dateInputRangeUnderflow: 'Date is too early.', dateInputValueMissing: 'Please fill in this field.', dateNotSelectable: 'This date is not selectable.', datePlaceholderDay: 'dd', datePlaceholderHalfyear: 'h', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 'q', datePlaceholderWeek: 'ww', datePlaceholderYear: 'yyyy', // Date input dateRangeEndBeforeStart: 'The end of the period must be after its start.', dateSegmentDay: 'Day', dateSegmentHalfyear: 'Half-year', dateSegmentMonth: 'Month', dateSegmentQuarter: 'Quarter', dateSegmentWeek: 'Week', dateSegmentYear: 'Year', datetimeInputBadInput: 'Please enter a valid date and time.', datetimeInputRangeOverflow: 'Date and time is too late.', datetimeInputRangeUnderflow: 'Date and time is too early.', datetimeInputValueMissing: 'Please fill in this field.', decrement: 'Decrement', density: 'Density', densityCompact: 'Compact', densityDefault: 'Default', densitySpacious: 'Spacious', disabled: 'Disabled', dragToReorder: 'Drag to reorder', dropFileHere: 'Drop file here or click to browse', dropFilesHere: 'Drop files here or click to browse', entriesPerPage: 'Entries per page', error: 'Error', expand: 'Expand', filter: 'Filter', filterByColumn: label => `Filter ${label}`, filterFrom: 'From', filterMax: 'Maximum', filterMin: 'Minimum', filterTo: 'To', finish: 'Finish', from: 'from', goToSlide: (slide, count) => `Go to slide ${slide} of ${count}`, halfyear: 'Half-year', hideColumn: 'Hide column', hidePassword: 'Hide password', increment: 'Increment', loadFailed: 'The rows could not be loaded.', loading: 'Loading', loadMoreFailed: 'More rows could not be loaded.', locked: 'Locked', mainMenu: 'Main menu', maximumValue: label => (label ? `${label} (maximum value)` : 'Maximum value'), minimumValue: label => (label ? `${label} (minimum value)` : 'Minimum value'), month: 'Month', more: 'More', multipleValues: 'Multiple values', newsMenu: 'News menu', newsToggleMenu: 'Toggle news menu', next: 'Next', nextPage: 'Next page', nextSlide: 'Next slide', noData: 'No data', noDataDescription: 'There are no entries to show yet.', noOptions: 'No options', noResults: 'No results', noResultsDescription: 'No entry matches the search or the filters.', notCompleted: 'Not completed', notificationsRegion: hotkey => `Notifications, press ${hotkey} to focus`, numCharacters: num => { if (num === 1) return '1 character'; return `${num} characters`; }, numCharactersRemaining: num => { if (num === 1) return '1 character remaining'; return `${num} characters remaining`; }, numEntries: (num, format) => { if (num === 0) return 'No entries'; if (num === 1) return `${formatCount(1, format)} entry`; return `${formatCount(num, format)} entries`; }, numEntriesLoaded: (num, format) => { if (num === 0) return 'No entries loaded'; if (num === 1) return `${formatCount(1, format)} entry loaded`; return `${formatCount(num, format)} entries loaded`; }, numEntriesOfTotal: (shown, total, format) => total === 1 ? `${formatCount(shown, format)} of ${formatCount(1, format)} entry` : `${formatCount(shown, format)} of ${formatCount(total, format)} entries`, numOfTotalSelected: (num, total, format) => `${formatCount(num, format)} of ${formatCount(total, format)} selected`, numOptionsAvailable: num => { if (num === 0) return 'No options available'; if (num === 1) return '1 option available'; return `${num} options available`; }, numOptionsSelected: num => { if (num === 0) return 'No options selected'; if (num === 1) return '1 option selected'; return `${num} options selected`; }, numSelected: (num, format) => { if (num === 0) return 'None selected'; return `${formatCount(num, format)} selected`; }, numTotal: num => `${num} total`, ok: 'OK', onThisPage: 'On this page', optionPosition: (label, position, total) => `${label}, ${position} of ${total}`, optionsLoadError: 'Options could not be loaded', page: 'Page', pauseAnimation: 'Pause animation', pinToEnd: 'Pin to the end', pinToStart: 'Pin to the start', playAnimation: 'Play animation', previousPage: 'Previous page', previousSlide: 'Previous slide', progress: 'Progress', quarter: 'Quarter', rangeSelected: (start, end) => `Selected ${start} to ${end}`, // Calendar range selection rangeSelectingFrom: date => `Selecting range from ${date}…`, remove: 'Remove', reset: 'Reset', resetColumns: 'Reset columns', resetFilters: 'Reset all filters', resize: 'Resize', resizeColumn: 'Resize column', scrollableRegion: 'Scrollable region', scrollToEnd: 'Scroll to end', scrollToStart: 'Scroll to start', search: 'Search', sectionPages: 'Section pages', sections: 'Sections', selectAColorFromTheScreen: 'Select a color from the screen', numRowsCopied: num => { if (num === 0) return 'No rows copied'; if (num === 1) return '1 row copied'; return `${num} rows copied`; }, numRowsSelected: num => { if (num === 0) return 'No rows selected'; if (num === 1) return '1 row selected'; return `${num} rows selected`; }, rowLifted: (position, total) => `Row lifted, position ${position} of ${total}. Use ArrowUp and ArrowDown to move it, Space to drop, Escape to cancel.`, rowMoved: (position, total) => `Position ${position} of ${total}`, rowReorderCanceled: 'Reorder canceled', selectAllEntries: 'Select all entries', selectAllRows: 'Select all rows', selectDate: 'Select date', selectDateTime: 'Select date and time', selectGroup: 'Select group', selectRow: 'Select row', selectRowNamed: name => `Select ${name}`, showingNofMRows: (shown, total) => `Showing ${shown} of ${total} ${total === 1 ? 'row' : 'rows'}`, showingRangeOfMore: (first, last) => `${first}–${last} of more than ${last}`, showingRangeOfTotal: (first, last, total) => `${first}–${last} of ${total}`, sortAscending: 'Sort ascending', sortDescending: 'Sort descending', sortedByColumn: (column, direction) => `Sorted by ${column}, ${direction === 'ascending' ? 'ascending' : 'descending'}`, sortingCleared: 'Sorting removed', // Date picker selectTime: 'Select time', // Calendar multi-panel showingPanelSpan: (first, last) => `Showing ${first} – ${last}`, showingSinglePanel: month => `Showing ${month}`, showLess: 'Show less', showMore: 'Show more', showPassword: 'Show password', skipToContent: 'Skip to content', slideNum: slide => `Slide ${slide}`, steps: 'Steps', stepXOfY: (step, total) => `Step ${step} of ${total}`, tagAdded: tag => `${tag} added`, tagAlreadyAdded: tag => `${tag} is already added`, tagInputKeyboardHelp: 'Press Backspace or Delete to remove this tag.', tagRemoved: tag => `${tag} removed`, timeInputBadInput: 'Please enter a valid time.', timeInputRangeOverflow: 'Time is too late.', timeInputRangeUnderflow: 'Time is too early.', timeInputValueMissing: 'Please fill in this field.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'Day period', timeSegmentHour: 'Hour', timeSegmentMinute: 'Minute', timeSegmentSecond: 'Second', toggleColorFormat: 'Toggle color format', toggleNavigationDrawer: 'Toggle navigation drawer', tooFewTags: min => (min === 1 ? 'Add at least 1 tag' : `Add at least ${min} tags`), tooManyTags: max => (max === 1 ? 'Add no more than 1 tag' : `Add no more than ${max} tags`), tryAgain: 'Try again', unpinColumn: 'Unpin column', unread: 'Unread', unsort: 'Unsort', until: 'until', view: 'View', weekInputRangeOverflow: 'Week is too late.', weekInputRangeUnderflow: 'Week is too early.', weekInputValueMissing: 'Please select a week.', // Calendar week mode weekLabel: week => `CW ${week}`, year: 'Year', zoomIn: 'Zoom in', zoomOut: 'Zoom out', documentViewerCanvas: 'Document', documentViewerContinuous: 'Continuous', documentViewerFitHeight: 'Fit to height', documentViewerFitWidth: 'Fit to width', documentViewerLoadError: 'Page could not be loaded', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Rotate left', documentViewerRotateRight: 'Rotate right', documentViewerSinglePage: 'Single page', documentViewerZoom: 'Zoom', editorAi: 'AI', editorAiSuggestions: 'AI suggestions', editorDelete: 'Delete', editorHideDeletedPages: 'Hide deleted pages', editorPage: page => `Page ${page}`, editorRotate: 'Rotate 90°', editorSelectAll: (selected, total) => `Select all (${selected} of ${total})`, editorSplit: 'Split', editorUser: 'User', editorZoom: 'Zoom', editorZoomIn: 'Zoom in', previewPage: page => `Page ${page}`, save: 'Save', scanCancelBack: 'Back to editing', scanCancelConfirm: 'Cancel upload', scanCancelMessage: 'If you cancel, the file will not be uploaded and changes will be lost. This action cannot be undone.', scanCancelTitle: 'Cancel upload?', scanFilesDisplayError: 'The file(s) cannot be displayed', scanFilesLoading: 'Loading files...', scanInvalidSession: 'The session is invalid. Please restart the process.', scanSaveErrorBack: 'Back to editing', scanSaveErrorMessage: 'An error occurred while saving. You can try again or return to editing.', scanSaveErrorRetry: 'Try again', scanSaveErrorTitle: 'Error while saving', scanSaving: 'Creating file(s)', scanSessionLoading: 'Loading edScan session...', scanTitle: 'AI-assisted page editing', uploadDragAndDropDescription: 'You can drag & drop a file here or choose one using the button.', uploadDragAndDropTitle: 'Upload file', uploadDropFile: 'Drop file', uploadDropFiles: 'Drop files', uploadDuplicateFile: name => `${name} is already in the list`, uploadFailed: 'File(s) could not be uploaded successfully', uploadFileCountSummary: (count, size) => `${count} file(s) · ${size}`, uploadFileTooLarge: (name, size) => `File ${name} is too large. Maximum size is ${size} MB.`, uploadFileTypeNotAllowed: type => `File type is not allowed: ${type}`, uploadLimitExceeded: size => `The file exceeds the upload limit of ${size} MB`, uploadLimitsExceeded: size => `The files exceed the upload limit of ${size} MB`, uploadOr: 'or', uploadPreviewFile: name => `Preview: ${name}`, uploadProgress: 'File(s) are being uploaded...', uploadRemoveFile: name => `Remove: ${name}`, uploadRetryFile: name => `Try again: ${name}`, uploadSelectFile: 'Choose file', uploadSelectFiles: 'Choose files', uploadSuccess: (done, total) => `${done} of ${total} file(s) uploaded`, uploadTitle: 'Upload file', uploadTooManyFiles: max => `You can upload at most ${max} file(s)`, valueMissing: 'Please fill out this field.', valueMissingCheckbox: 'Please check this box if you want to proceed.', valueMissingRadio: 'Please select one of these options.', valueMissingSelect: 'Please select an item in the list.', typeMismatchEmail: 'Please enter an email address.', typeMismatchUrl: 'Please enter a URL.', patternMismatch: 'Please match the requested format.', badInputNumber: 'Please enter a number.', rangeUnderflow: min => `Value must be greater than or equal to ${min}.`, rangeOverflow: max => `Value must be less than or equal to ${max}.`, stepMismatch: (lower, upper) => `Please enter a valid value. The two nearest valid values are ${lower} and ${upper}.`, stepMismatchNearest: nearest => `Please enter a valid value. The nearest valid value is ${nearest}.`, tooShort: (minimum, current) => `Please lengthen this text to ${minimum} characters or more (you are currently using ${current} characters).`, $code: 'en', $dir: 'ltr', $name: 'English' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/en.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "utilities/localize.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "LocalizeController",
          "members": [
            {
              "kind": "method",
              "name": "lang",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "description": "The host's language in the spelling Intl reads: every element hands this to Intl, directly or through\nthe formatters below, and Intl throws a RangeError for \"de_de\", the POSIX form a consumer writes. The\nvendored translation lookup reads that form the same way."
            },
            {
              "kind": "method",
              "name": "withLocale",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "T"
                }
              },
              "parameters": [
                {
                  "name": "format",
                  "type": {
                    "text": "(locale: string) => T"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "date",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "dateToFormat",
                  "type": {
                    "text": "Date | string"
                  }
                },
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "Intl.DateTimeFormatOptions"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "number",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "numberToFormat",
                  "type": {
                    "text": "number | string"
                  }
                },
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "Intl.NumberFormatOptions"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "relativeTime",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "unit",
                  "type": {
                    "text": "Intl.RelativeTimeFormatUnit"
                  }
                },
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "Intl.RelativeTimeFormatOptions"
                  }
                }
              ]
            }
          ],
          "superclass": {
            "name": "DefaultLocalizationController",
            "module": "/src/internal/vendor/localize/localize.js"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "LocalizeController",
          "declaration": {
            "name": "LocalizeController",
            "module": "utilities/localize.js"
          }
        },
        {
          "kind": "js",
          "name": "registerTranslation",
          "declaration": {
            "name": "registerTranslation",
            "module": "../internal/vendor/localize/localize.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/animation/animations.js",
      "declarations": [
        {
          "kind": "function",
          "name": "getAnimationNames",
          "description": "Gets a list of all supported animation names."
        },
        {
          "kind": "function",
          "name": "getEasingNames",
          "description": "Gets a list of all supported easing function names."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "animations",
          "declaration": {
            "name": "animations",
            "module": "components/animation/animations.js"
          }
        },
        {
          "kind": "js",
          "name": "getAnimationNames",
          "declaration": {
            "name": "getAnimationNames",
            "module": "components/animation/animations.js"
          }
        },
        {
          "kind": "js",
          "name": "getEasingNames",
          "declaration": {
            "name": "getEasingNames",
            "module": "components/animation/animations.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "utilities/animation.js",
      "declarations": [],
      "exports": [
        {
          "kind": "js",
          "name": "getAnimationNames",
          "declaration": {
            "name": "getAnimationNames",
            "module": "../components/animation/animations.js"
          }
        },
        {
          "kind": "js",
          "name": "getEasingNames",
          "declaration": {
            "name": "getEasingNames",
            "module": "../components/animation/animations.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "utilities/form.js",
      "declarations": [
        {
          "kind": "function",
          "name": "serialize",
          "parameters": [
            {
              "name": "form",
              "type": {
                "text": "HTMLFormElement"
              }
            }
          ],
          "description": "Serializes a form and returns a plain object. If a form control with the same name appears more than once, the\nproperty will be converted to an array."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "serialize",
          "declaration": {
            "name": "serialize",
            "module": "utilities/form.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "utilities/html.js",
      "declarations": [],
      "exports": [
        {
          "kind": "js",
          "name": "html",
          "declaration": {
            "name": "html",
            "package": "lit"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "utilities/jsx-to-html.js",
      "declarations": [
        {
          "kind": "function",
          "name": "createJsxToHtml",
          "return": {
            "type": {
              "text": ""
            }
          },
          "parameters": [
            {
              "name": "createRoot",
              "type": {
                "text": "(container: Element) => { render: (element: T) => void }"
              },
              "description": "`createRoot` from `react-dom/client`."
            },
            {
              "name": "flushSync",
              "type": {
                "text": "(fn: () => void) => void"
              },
              "description": "`flushSync` from `react-dom`."
            }
          ],
          "description": "Creates a `jsxToHtml` helper bound to the consumer's React DOM installation.\n\nCall `createJsxToHtml()` once at app startup, then use the returned function wherever a component\nasks for rendered cell content — a data grid's column renderer is the case it exists for. This\navoids bundling or importing `react-dom` inside the library.\n\n```tsx\nimport { createJsxToHtml } from '@eurodata/eurodata-ui/dist/utilities/jsx-to-html.js';\nimport { flushSync } from 'react-dom';\nimport { createRoot } from 'react-dom/client';\n\nconst jsxToHtml = createJsxToHtml(createRoot, flushSync);\n\n// In a cell renderer, turn a React element into the DOM node the component expects:\nconst renderStatus = (value: string) => jsxToHtml(<StatusBadge status={value} />);\n```\n\nThe renderable type `T` is inferred from the `createRoot` you pass, so with\nReact's `createRoot` the returned helper accepts `ReactNode` directly — no cast\nneeded — while the library itself stays free of any React type dependency."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "createJsxToHtml",
          "declaration": {
            "name": "createJsxToHtml",
            "module": "utilities/jsx-to-html.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/after-hide.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdAfterHideEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/after-hide.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdAfterHideEvent",
          "declaration": {
            "name": "EdAfterHideEvent",
            "module": "events/after-hide.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/after-show.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdAfterShowEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/after-show.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdAfterShowEvent",
          "declaration": {
            "name": "EdAfterShowEvent",
            "module": "events/after-show.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/hide.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdHideEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdHideEventDetails | undefined"
              },
              "readonly": true,
              "default": "detail",
              "parsedType": {
                "text": "{ source: Element } | undefined"
              }
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/hide.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdHideEvent",
          "declaration": {
            "name": "EdHideEvent",
            "module": "events/hide.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/show.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdShowEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/show.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdShowEvent",
          "declaration": {
            "name": "EdShowEvent",
            "module": "events/show.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/animate.js",
      "declarations": [
        {
          "kind": "function",
          "name": "animate",
          "parameters": [
            {
              "name": "el",
              "type": {
                "text": "Element"
              }
            },
            {
              "name": "keyframes",
              "type": {
                "text": "Keyframe[]"
              }
            },
            {
              "name": "options",
              "optional": true,
              "type": {
                "text": "KeyframeAnimationOptions"
              }
            }
          ],
          "description": "Same as `el.animate()`, except returns a promise that doesn't throw an error when the animation is canceled."
        },
        {
          "kind": "function",
          "name": "animateWithClass",
          "parameters": [
            {
              "name": "el",
              "type": {
                "text": "Element"
              }
            },
            {
              "name": "className",
              "type": {
                "text": "string"
              }
            },
            {
              "name": "options",
              "optional": true,
              "type": {
                "text": "AnimateWithClassOptions"
              }
            }
          ],
          "description": "Applies a class to an element, waits for the animations it starts, then removes it again and\nresolves.\n\nApplying a *different* class first cancels whatever is still running: two overlay directions\nplaying at once look wrong, and a new state supersedes the old one. The superseded caller settles\nthrough its own animations' rejected `finished`, so its `await` always ends.\n\nThe waiting runs on the `Animation` objects rather than on `animationend`, because that event\ncannot be attributed to a caller. Two things defeat attribution by name here: overlays reuse one\nset of keyframes for both directions (`hide` is `show` in `reverse`), and a single class routinely\nstarts several differently-named animations — a dialog animates its panel and its `::backdrop`.\nAn `Animation` object *is* the animation, so it is the only handle that identifies one."
        },
        {
          "kind": "function",
          "name": "parseDuration",
          "parameters": [
            {
              "name": "duration",
              "type": {
                "text": "number | string"
              }
            }
          ],
          "description": "Parses a CSS duration and returns the number of milliseconds."
        },
        {
          "kind": "function",
          "name": "prefersReducedMotion",
          "description": "Tells if the user has enabled the \"reduced motion\" setting in their browser or OS."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "animate",
          "declaration": {
            "name": "animate",
            "module": "internal/animate.js"
          }
        },
        {
          "kind": "js",
          "name": "animateWithClass",
          "declaration": {
            "name": "animateWithClass",
            "module": "internal/animate.js"
          }
        },
        {
          "kind": "js",
          "name": "parseDuration",
          "declaration": {
            "name": "parseDuration",
            "module": "internal/animate.js"
          }
        },
        {
          "kind": "js",
          "name": "prefersReducedMotion",
          "declaration": {
            "name": "prefersReducedMotion",
            "module": "internal/animate.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/dismissible-stack.js",
      "declarations": [
        {
          "kind": "function",
          "name": "registerDismissible",
          "return": {
            "type": {
              "text": "void"
            }
          },
          "parameters": [
            {
              "name": "key",
              "type": {
                "text": "object"
              }
            }
          ],
          "description": "Registers a dismissible as open. Call this when the dismissible becomes visible.\nThe most recently registered dismissible is at the top."
        },
        {
          "kind": "function",
          "name": "unregisterDismissible",
          "return": {
            "type": {
              "text": "void"
            }
          },
          "parameters": [
            {
              "name": "key",
              "type": {
                "text": "object"
              }
            }
          ],
          "description": "Unregisters a dismissible. Call this when the dismissible closes or is removed from the DOM.\nOne call removes one registration: a key that registered twice stays in the stack once."
        },
        {
          "kind": "function",
          "name": "isTopDismissible",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "key",
              "type": {
                "text": "object"
              }
            }
          ],
          "description": "Returns true if the given key is the topmost registered dismissible.\nUse this to guard Escape key handling so only the topmost dismissible responds."
        },
        {
          "kind": "function",
          "name": "isEscapeForNativeControl",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "event",
              "type": {
                "text": "KeyboardEvent"
              }
            }
          ],
          "description": "Returns true when a native control at the press's origin takes Escape as its own default action, so a dismissible\nholding it must leave the press alone: a search field that holds text empties itself, and a native `<dialog>` with\nthe same field stays open (measured in Chromium and Firefox). The platform does not cancel the press for this, so\n`defaultPrevented` does not tell; a readonly or disabled field has nothing to empty and lets the dialog close."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "registerDismissible",
          "declaration": {
            "name": "registerDismissible",
            "module": "internal/dismissible-stack.js"
          }
        },
        {
          "kind": "js",
          "name": "unregisterDismissible",
          "declaration": {
            "name": "unregisterDismissible",
            "module": "internal/dismissible-stack.js"
          }
        },
        {
          "kind": "js",
          "name": "isTopDismissible",
          "declaration": {
            "name": "isTopDismissible",
            "module": "internal/dismissible-stack.js"
          }
        },
        {
          "kind": "js",
          "name": "isEscapeForNativeControl",
          "declaration": {
            "name": "isEscapeForNativeControl",
            "module": "internal/dismissible-stack.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/event.js",
      "declarations": [
        {
          "kind": "function",
          "name": "waitForEvent",
          "parameters": [
            {
              "name": "el",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "name": "eventName",
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "Waits for a specific event to be emitted from an element. Ignores events that bubble up from child elements."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "waitForEvent",
          "declaration": {
            "name": "waitForEvent",
            "module": "internal/event.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/modal-state.js",
      "declarations": [
        {
          "kind": "function",
          "name": "registerModalDialog",
          "return": {
            "type": {
              "text": "void"
            }
          },
          "parameters": [
            {
              "name": "host",
              "type": {
                "text": "HTMLElement"
              }
            }
          ],
          "description": "Call after every `showModal()` on the native dialog `host` owns."
        },
        {
          "kind": "function",
          "name": "unregisterModalDialog",
          "return": {
            "type": {
              "text": "void"
            }
          },
          "parameters": [
            {
              "name": "host",
              "type": {
                "text": "HTMLElement"
              }
            }
          ],
          "description": "Call when the native dialog `host` owns stops being modal — closed, suspended or disconnected."
        },
        {
          "kind": "function",
          "name": "notifyTopLayerEntry",
          "return": {
            "type": {
              "text": "void"
            }
          },
          "parameters": [
            {
              "name": "host",
              "type": {
                "text": "HTMLElement"
              }
            }
          ],
          "description": "Call after a non-modal element enters the top layer — a `non-modal` dialog's `showPopover()`. It\nmakes nothing inert and joins no list, but it paints above everything shown before it, the toast\nstack included, so the listeners hear about it too."
        },
        {
          "kind": "function",
          "name": "isModalOpen",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "description": "Returns `true` while at least one modal dialog is open."
        },
        {
          "kind": "function",
          "name": "topModalDialog",
          "return": {
            "type": {
              "text": "HTMLElement | null"
            }
          },
          "description": "The element holding the modal that entered the top layer last, or `null` while none is open."
        },
        {
          "kind": "function",
          "name": "modalsAbove",
          "return": {
            "type": {
              "text": "HTMLElement[]"
            }
          },
          "parameters": [
            {
              "name": "host",
              "type": {
                "text": "HTMLElement"
              }
            }
          ],
          "description": "The modals that entered the top layer after `host`'s, which paint above it."
        },
        {
          "kind": "function",
          "name": "isModalListed",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "host",
              "type": {
                "text": "HTMLElement"
              }
            }
          ],
          "description": "Whether `host` holds a modal that is listed as open."
        },
        {
          "kind": "function",
          "name": "afterModalsClose",
          "return": {
            "type": {
              "text": "() => void"
            }
          },
          "parameters": [
            {
              "name": "modals",
              "type": {
                "text": "HTMLElement[]"
              }
            },
            {
              "name": "run",
              "type": {
                "text": "() => void"
              }
            },
            {
              "name": "self",
              "optional": true,
              "type": {
                "text": "HTMLElement"
              }
            }
          ],
          "description": "Runs `run` once none of `modals` is open any more — at once when none is. A modal that reopens\nafter a move (`showModal()` again) enters the top layer at the top; one that was beneath others\nwaits for them this way rather than jumping above them. A modal that opens during the wait paints\nabove the waiting one too, so it joins the wait — added to `modals` itself, which the caller keeps\nso a wait started over after a second move still knows it. `self`, the waiting modal, never joins:\nit registers again when it resumes from a suspend. Returns a function that cancels the wait."
        },
        {
          "kind": "function",
          "name": "onModalStateChange",
          "return": {
            "type": {
              "text": "() => void"
            }
          },
          "parameters": [
            {
              "name": "l",
              "type": {
                "text": "(entered: HTMLElement | null) => void"
              }
            }
          ],
          "description": "Subscribe to modal-state changes. The listener is called synchronously after any\n`registerModalDialog`, `unregisterModalDialog` or `notifyTopLayerEntry` call, with the element\nthat entered the top layer, or `null` when one left. Returns an unsubscribe function."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "registerModalDialog",
          "declaration": {
            "name": "registerModalDialog",
            "module": "internal/modal-state.js"
          }
        },
        {
          "kind": "js",
          "name": "unregisterModalDialog",
          "declaration": {
            "name": "unregisterModalDialog",
            "module": "internal/modal-state.js"
          }
        },
        {
          "kind": "js",
          "name": "notifyTopLayerEntry",
          "declaration": {
            "name": "notifyTopLayerEntry",
            "module": "internal/modal-state.js"
          }
        },
        {
          "kind": "js",
          "name": "isModalOpen",
          "declaration": {
            "name": "isModalOpen",
            "module": "internal/modal-state.js"
          }
        },
        {
          "kind": "js",
          "name": "topModalDialog",
          "declaration": {
            "name": "topModalDialog",
            "module": "internal/modal-state.js"
          }
        },
        {
          "kind": "js",
          "name": "modalsAbove",
          "declaration": {
            "name": "modalsAbove",
            "module": "internal/modal-state.js"
          }
        },
        {
          "kind": "js",
          "name": "isModalListed",
          "declaration": {
            "name": "isModalListed",
            "module": "internal/modal-state.js"
          }
        },
        {
          "kind": "js",
          "name": "afterModalsClose",
          "declaration": {
            "name": "afterModalsClose",
            "module": "internal/modal-state.js"
          }
        },
        {
          "kind": "js",
          "name": "onModalStateChange",
          "declaration": {
            "name": "onModalStateChange",
            "module": "internal/modal-state.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/slot.js",
      "declarations": [
        {
          "kind": "class",
          "description": "A reactive controller that determines when slots exist.",
          "name": "HasSlotController",
          "members": [
            {
              "kind": "field",
              "name": "host",
              "type": {
                "text": "ReactiveControllerHost & Element"
              },
              "parsedType": {
                "text": "{ addController: {  }, removeController: {  }, requestUpdate: {  }, updateComplete: { then: {  }, catch: {  }, finally: {  }, __@toStringTag@537: string } } & Element"
              }
            },
            {
              "kind": "field",
              "name": "slotNames",
              "type": {
                "text": "string[]"
              },
              "default": "slotNames"
            },
            {
              "kind": "method",
              "name": "hasDefaultSlot",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "hasNamedSlot",
              "privacy": "private",
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "mode",
                  "type": {
                    "text": "SlotTestMode"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "test",
              "parameters": [
                {
                  "name": "slotName",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "mode",
                  "default": "'exists'",
                  "type": {
                    "text": "SlotTestMode"
                  },
                  "description": "`'exists'` asks whether a child claims the slot — right for a slot a consumer fills\ndirectly. `'content'` asks whether anything would be rendered, which is what a component needs\nwhen another component may compose it and forward an empty slot into it.\n\n`'content'` only sees through a forward that is a bare `<slot slot=\"…\">`. Wrap one in an\nelement and the wrapper counts as content again, because only the element itself can say\nwhether it renders anything. It is also ignored for `'[default]'`, which has no forward to see\nthrough: an unnamed forwarded slot is indistinguishable from ordinary default-slot content."
                }
              ]
            },
            {
              "kind": "method",
              "name": "hostConnected"
            },
            {
              "kind": "method",
              "name": "hostDisconnected"
            },
            {
              "kind": "field",
              "name": "handleSlotChange",
              "privacy": "private"
            }
          ],
          "jsDoc": "/** A reactive controller that determines when slots exist. */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "HasSlotController",
          "declaration": {
            "name": "HasSlotController",
            "module": "internal/slot.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/toast-text.js",
      "declarations": [
        {
          "kind": "function",
          "name": "collectSlotText",
          "return": {
            "type": {
              "text": "string"
            }
          },
          "parameters": [
            {
              "name": "host",
              "type": {
                "text": "Element"
              },
              "description": "The toast element whose light DOM is read."
            },
            {
              "name": "slotName",
              "type": {
                "text": "string"
              },
              "description": "The slot to collect; the empty string means the default slot (the title)."
            }
          ],
          "description": "Reads the text a consumer put into one slot of a toast, as a single normalized string.\n\nShared by `<ed-toast-stack>`, which announces a toast through its live region, and by\n`<ed-toast-item>`, which names its focus group — the two have to agree on what a toast \"says\".\nReaching for `host.textContent` instead pulls in every slot at once, so the label of a slotted\naction button ends up inside the announcement, run together with the description because the\nmarkup's own indentation is all that separates them."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "collectSlotText",
          "declaration": {
            "name": "collectSlotText",
            "module": "internal/toast-text.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/invalid.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdInvalidEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/invalid.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdInvalidEvent",
          "declaration": {
            "name": "EdInvalidEvent",
            "module": "events/invalid.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/submit-on-enter.js",
      "declarations": [
        {
          "kind": "function",
          "name": "submitOnEnter",
          "parameters": [
            {
              "name": "event",
              "type": {
                "text": "KeyboardEvent"
              }
            },
            {
              "name": "el",
              "type": {
                "text": "T"
              }
            }
          ]
        },
        {
          "kind": "function",
          "name": "submitForm",
          "parameters": [
            {
              "name": "el",
              "type": {
                "text": "HTMLElement | EdFormAssociatedElement"
              }
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "submitOnEnter",
          "declaration": {
            "name": "submitOnEnter",
            "module": "internal/submit-on-enter.js"
          }
        },
        {
          "kind": "js",
          "name": "submitForm",
          "declaration": {
            "name": "submitForm",
            "module": "internal/submit-on-enter.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/ed-form-associated-element.js",
      "declarations": [
        {
          "kind": "class",
          "description": "The custom states below are set on every form control by `setCustomStates()`, so they reach each\ncomponent's manifest entry through inheritance. A component that re-documents one keeps its own\nwording; the rest arrive from here.",
          "name": "EdFormAssociatedElement",
          "members": [
            {
              "kind": "field",
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "attribute": "error",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "attribute": "warning",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "attribute": "ai",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "attribute": "hint"
            },
            {
              "kind": "field",
              "name": "validators",
              "type": {
                "text": "Validator[]"
              },
              "static": true,
              "description": "Validators are static because they have `observedAttributes`, essentially attributes to \"watch\"\nfor changes. Whenever these attributes change, we want to be notified and update the validator.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "attribute": "name",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "#fieldsetDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set by `formDisabledCallback`, i.e. an ancestor `<fieldset>`. Never written by a consumer."
            },
            {
              "kind": "field",
              "name": "#ownDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The disabled state this element was given directly, via its property or its attribute."
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "attribute": "disabled"
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "assumeInteractionOn",
              "type": {
                "text": "string[]"
              },
              "default": "['input']"
            },
            {
              "kind": "field",
              "name": "assumeInteractionOnMode",
              "type": {
                "text": "'combined' | 'separated' | string"
              },
              "default": "'combined'",
              "parsedType": {
                "text": "string"
              }
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "text": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "parsedType": {
                "text": "HTMLElement & { value: unknown } | HTMLInputElement | HTMLTextAreaElement | undefined"
              }
            },
            {
              "kind": "field",
              "name": "validators",
              "type": {
                "text": "Validator[]"
              },
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "valueHasChanged",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "hasInteracted",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "_customValidityMessage",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "_isCheckingValidity",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set while `checkValidity()` is executing so the `invalid` event handler can distinguish\na programmatic check (no UI side-effects per spec) from `reportValidity()` / native form\nsubmission (which should surface the error UI and focus the first invalid control)."
            },
            {
              "kind": "field",
              "name": "emittedEvents",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "states",
              "type": {
                "text": "CustomStateSet"
              },
              "parsedType": {
                "text": "any"
              }
            },
            {
              "kind": "field",
              "name": "handleSubmitOnEnter",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleClearOnEscape",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "emitInvalid"
            },
            {
              "kind": "field",
              "name": "handleInteraction",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "labels",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "getForm"
            },
            {
              "kind": "field",
              "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": {
                "text": "HTMLFormElement | null"
              },
              "parsedType": {
                "text": "null | HTMLFormElement"
              }
            },
            {
              "kind": "field",
              "name": "validity",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "willValidate",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "validationMessage",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "checkValidity"
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public"
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Override this to change where constraint validation popups are anchored.",
              "readonly": true,
              "parsedType": {
                "text": "HTMLElement | undefined"
              }
            },
            {
              "kind": "method",
              "name": "setValidity",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setValidity>"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "setCustomStates"
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "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."
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setFormValue>"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "allValidators",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "resetValidity",
              "description": "Reset validity is a way of removing manual custom errors and native validation."
            },
            {
              "kind": "method",
              "name": "updateValidity"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "fieldName": "error",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "fieldName": "warning",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "fieldName": "ai"
            },
            {
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "fieldName": "hint"
            },
            {
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "fieldName": "name",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "fieldName": "disabled"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "The control is disabled, by its own attribute or by an ancestor fieldset.",
              "name": "disabled"
            },
            {
              "description": "The control is required.",
              "name": "required"
            },
            {
              "description": "The control is not required.",
              "name": "optional"
            },
            {
              "description": "The value fails constraint validation, whether or not the user has touched the control yet.",
              "name": "invalid"
            },
            {
              "description": "The value passes constraint validation.",
              "name": "valid"
            },
            {
              "description": "Invalid, and the user has interacted with the control. This is the one to style for an error: it behaves like the platform's `:user-invalid`, so an untouched field is not marked wrong before the user has had a chance to fill it in.",
              "name": "user-invalid"
            },
            {
              "description": "Valid, and the user has interacted with the control.",
              "name": "user-valid"
            },
            {
              "description": "The user has interacted with the control.",
              "name": "dirty"
            },
            {
              "description": "The `error` property is set, or the control is `user-invalid`.",
              "name": "error"
            },
            {
              "description": "The `warning` property is set.",
              "name": "warning"
            },
            {
              "description": "The `ai` property is set and the user has not interacted with the control yet.",
              "name": "ai"
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "jsDoc": "/**\n * The custom states below are set on every form control by `setCustomStates()`, so they reach each\n * component's manifest entry through inheritance. A component that re-documents one keeps its own\n * wording; the rest arrive from here.\n *\n * @cssstate disabled - The control is disabled, by its own attribute or by an ancestor fieldset.\n * @cssstate required - The control is required.\n * @cssstate optional - The control is not required.\n * @cssstate invalid - The value fails constraint validation, whether or not the user has touched the\n *   control yet.\n * @cssstate valid - The value passes constraint validation.\n * @cssstate user-invalid - Invalid, and the user has interacted with the control. This is the one to\n *   style for an error: it behaves like the platform's `:user-invalid`, so an untouched field is not\n *   marked wrong before the user has had a chance to fill it in.\n * @cssstate user-valid - Valid, and the user has interacted with the control.\n * @cssstate dirty - The user has interacted with the control.\n * @cssstate error - The `error` property is set, or the control is `user-invalid`.\n * @cssstate warning - The `warning` property is set.\n * @cssstate ai - The `ai` property is set and the user has not interacted with the control yet.\n */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdFormAssociatedElement",
          "declaration": {
            "name": "EdFormAssociatedElement",
            "module": "internal/ed-form-associated-element.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/validators/validity-messages.js",
      "declarations": [
        {
          "kind": "function",
          "name": "localizerOf",
          "return": {
            "type": {
              "text": "Localizing['localize']"
            }
          },
          "parameters": [
            {
              "name": "host",
              "type": {
                "text": "unknown"
              }
            }
          ],
          "description": "The controller, or nothing when the host does not carry one."
        },
        {
          "kind": "function",
          "name": "valueMissingKey",
          "return": {
            "type": {
              "text": "keyof Translation"
            }
          },
          "parameters": [
            {
              "name": "probe",
              "type": {
                "text": "Element"
              }
            }
          ],
          "description": "Which of the four \"value missing\" messages applies, from the native element the control stands in\nfor. The platform words them differently and a checkbox told to \"fill out this field\" reads as\nthe wrong instruction, so the distinction is worth keeping."
        },
        {
          "kind": "function",
          "name": "stepMismatchMessage",
          "return": {
            "type": {
              "text": "string | null"
            }
          },
          "parameters": [
            {
              "name": "localize",
              "type": {
                "text": "Localizing['localize']"
              }
            },
            {
              "name": "bounds",
              "type": {
                "text": "{ value: number; min: number; step: number; max?: number | null }"
              }
            }
          ],
          "description": "What to say about a value that misses the step grid: the two valid values around it, or the one\nbelow it when `max` puts the other out of reach. That second form is the platform's — measured,\n`min=\"0\" max=\"8\" step=\"5\" value=\"7\"` gives \"The nearest valid value is 5.\"\n\n`null` when the numbers cannot carry a sentence, which leaves the caller to fall back rather than\nput \"NaN\" in front of a user."
        },
        {
          "kind": "function",
          "name": "localizedValidationMessage",
          "return": {
            "type": {
              "text": "string | null"
            }
          },
          "parameters": [
            {
              "name": "host",
              "type": {
                "text": "unknown"
              }
            },
            {
              "name": "control",
              "type": {
                "text": "Element"
              }
            }
          ],
          "description": "The message for the constraint a mirrored native control reports, in the language of the element\nrather than of the browser.\n\nReturns `null` for anything this does not word, which leaves the platform's own message in place:\na host without a localize controller, a `typeMismatch` on an input type nothing here words, a\nbound or a grid that is a date rather than a number, and `customError`. `tooLong` has no branch\nbecause `maxlength` stops the input at the limit, so the constraint cannot be violated by typing.\n\nThe order is the platform's, measured rather than assumed: a number field holding \"e\" reports\nboth `valueMissing` (the value is empty) and `badInput`, and the platform says \"Please enter a\nnumber.\"; a value below `min` that is also off the grid reports both `rangeUnderflow` and\n`stepMismatch`, and the platform states the bound."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "localizerOf",
          "declaration": {
            "name": "localizerOf",
            "module": "internal/validators/validity-messages.js"
          }
        },
        {
          "kind": "js",
          "name": "valueMissingKey",
          "declaration": {
            "name": "valueMissingKey",
            "module": "internal/validators/validity-messages.js"
          }
        },
        {
          "kind": "js",
          "name": "stepMismatchMessage",
          "declaration": {
            "name": "stepMismatchMessage",
            "module": "internal/validators/validity-messages.js"
          }
        },
        {
          "kind": "js",
          "name": "localizedValidationMessage",
          "declaration": {
            "name": "localizedValidationMessage",
            "module": "internal/validators/validity-messages.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/validators/mirror-validator.js",
      "declarations": [
        {
          "kind": "function",
          "name": "MirrorValidator",
          "return": {
            "type": {
              "text": "Validator"
            }
          },
          "description": "This validator is for if you have an exact copy of your element in the shadow DOM: the mirrored\ncontrol decides which constraints are violated, so a host using this one states none of them\nitself.\n\nThe wording is this library's where it has one, because a native `validationMessage` follows the\nbrowser's UI language and ignores `lang` — see `validity-messages.ts`."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "MirrorValidator",
          "declaration": {
            "name": "MirrorValidator",
            "module": "internal/validators/mirror-validator.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/math.js",
      "declarations": [
        {
          "kind": "function",
          "name": "clamp",
          "parameters": [
            {
              "name": "value",
              "type": {
                "text": "number"
              }
            },
            {
              "name": "min",
              "type": {
                "text": "number"
              }
            },
            {
              "name": "max",
              "type": {
                "text": "number"
              }
            }
          ],
          "description": "Ensures a number stays within a minimum and maximum value. A `max` below `min` collapses the\nrange onto `min`."
        },
        {
          "kind": "function",
          "name": "uniqueId",
          "parameters": [
            {
              "name": "prefix",
              "default": "''"
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "clamp",
          "declaration": {
            "name": "clamp",
            "module": "internal/math.js"
          }
        },
        {
          "kind": "js",
          "name": "uniqueId",
          "declaration": {
            "name": "uniqueId",
            "module": "internal/math.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/progress-ring/progress-ring.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdProgressRing",
          "cssProperties": [
            {
              "description": "The diameter of the ring.",
              "name": "--ed-progress-ring-size",
              "default": "3rem"
            },
            {
              "description": "The width of the track stroke (SVG user units).",
              "name": "--ed-progress-ring-track-width",
              "default": "4"
            },
            {
              "description": "The color of the track. Transparent by default, so a ring draws only its indicator; set a color to show the part of a determinate ring that is still missing.",
              "name": "--ed-progress-ring-track-color",
              "default": "transparent"
            },
            {
              "description": "The width of the indicator stroke.",
              "name": "--ed-progress-ring-indicator-width",
              "default": "var(--ed-progress-ring-track-width)"
            },
            {
              "description": "The color of the indicator.",
              "name": "--ed-progress-ring-indicator-color",
              "default": "var(--ed-color-brand-fill-normal)"
            },
            {
              "description": "The transition duration for determinate value changes.",
              "name": "--ed-progress-ring-indicator-transition-duration",
              "default": "0.35s"
            }
          ],
          "cssParts": [
            {
              "description": "The label element below the ring.",
              "name": "form-control-label"
            },
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The SVG track circle.",
              "name": "track"
            },
            {
              "description": "The SVG indicator circle.",
              "name": "indicator"
            }
          ],
          "slots": [
            {
              "description": "The progress ring's label. Alternatively, you can use the `label` attribute.",
              "name": "label"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'label')"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The current progress as a percentage, 0 to 100. A value outside the range is drawn and reported\nat the nearer end of it; a value that is no number at all counts as 0.",
              "attribute": "value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "indeterminate",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, percentage is ignored and a loading spinner animation is shown.",
              "attribute": "indeterminate",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The progress ring's label. If you need to display HTML, use the `label` slot instead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "ariaLabel",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The progress ring's accessible name for when no visible label is wanted. Mirrored onto the\ninternal progressbar node, where the role lives — an aria-label left on the host alone would\nsit on a role-less element and be ignored by assistive tech (house pattern: ed-checkbox).",
              "attribute": "aria-label",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "usableValue",
              "privacy": "private",
              "description": "The progress this ring draws and announces: inside 0–100, and 0 for a value that is no number\nat all. Lit's Number converter hands an unreadable attribute over as `NaN`, and a percentage\ncomputed from a division by zero arrives the same way; `NaN` fails both of `clamp()`'s\ncomparisons, so it would reach `aria-valuenow` verbatim and leave the CSSOM to reject the\nstroke offset it computes. A native `<progress value=\"abc\" max=\"100\">` reports 0 and stays\ndeterminate — measured in Chromium: `.value` 0, `.position` 0.\n\nCoercing first is what keeps an untyped caller working: `Number.isNaN` does not coerce, and a\npercentage that arrives as the string `'50'` — from JSON, from a template, from plain JS — is a\nvalue the platform reads as a number.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "value",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The current progress as a percentage, 0 to 100. A value outside the range is drawn and reported\nat the nearer end of it; a value that is no number at all counts as 0.",
              "fieldName": "value"
            },
            {
              "name": "indeterminate",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, percentage is ignored and a loading spinner animation is shown.",
              "fieldName": "indeterminate"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The progress ring's label. If you need to display HTML, use the `label` slot instead.",
              "fieldName": "label"
            },
            {
              "name": "aria-label",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The progress ring's accessible name for when no visible label is wanted. Mirrored onto the\ninternal progressbar node, where the role lives — an aria-label left on the host alone would\nsit on a role-less element and be ignored by assistive tech (house pattern: ed-checkbox).",
              "fieldName": "ariaLabel",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Progress rings show the progress of an operation in a circular fashion. Set `indeterminate` for a loading spinner.",
          "jsDoc": "/**\n * @summary Progress rings show the progress of an operation in a circular fashion. Set `indeterminate` for a loading spinner.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/progress-ring\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…').getByRole('progressbar')\n *\n * @slot label - The progress ring's label. Alternatively, you can use the `label` attribute.\n *\n * @csspart form-control-label - The label element below the ring.\n * @csspart base - The component's base wrapper.\n * @csspart track - The SVG track circle.\n * @csspart indicator - The SVG indicator circle.\n *\n * @cssproperty [--ed-progress-ring-size=3rem] - The diameter of the ring.\n * @cssproperty [--ed-progress-ring-track-width=4] - The width of the track stroke (SVG user units).\n * @cssproperty [--ed-progress-ring-track-color=transparent] - The color of the track. Transparent by\n *   default, so a ring draws only its indicator; set a color to show the part of a determinate ring\n *   that is still missing.\n * @cssproperty [--ed-progress-ring-indicator-width=var(--ed-progress-ring-track-width)] - The width of the indicator stroke.\n * @cssproperty [--ed-progress-ring-indicator-color=var(--ed-color-brand-fill-normal)] - The color of the indicator.\n * @cssproperty [--ed-progress-ring-indicator-transition-duration=0.35s] - The transition duration for determinate value changes.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/progress-ring",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('progressbar')",
          "tagName": "ed-progress-ring",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdProgressRing",
            "module": "components/progress-ring/progress-ring.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-progress-ring",
          "declaration": {
            "name": "EdProgressRing",
            "module": "components/progress-ring/progress-ring.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/button/button.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdButton",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The container that wraps the `start` slot.",
              "name": "start"
            },
            {
              "description": "The button's label.",
              "name": "label"
            },
            {
              "description": "The container that wraps the `end` slot.",
              "name": "end"
            },
            {
              "description": "The button's caret icon, a `<ed-icon>` element.",
              "name": "caret"
            },
            {
              "description": "The spinner that shows when the button is in the loading state.",
              "name": "spinner"
            }
          ],
          "slots": [
            {
              "description": "The button's label.",
              "name": ""
            },
            {
              "description": "An element, such as `<ed-icon>`, placed before the label.",
              "name": "start"
            },
            {
              "description": "An element, such as `<ed-icon>`, placed after the label.",
              "name": "end"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "validators",
              "type": {
                "text": "Validator[]"
              },
              "default": "[]",
              "static": true,
              "description": "Validators are static because they have `observedAttributes`, essentially attributes to \"watch\"\nfor changes. Whenever these attributes change, we want to be notified and update the validator.",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOn",
              "type": {
                "text": "string[]"
              },
              "default": "['click']",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, '[default]', 'start', 'end')"
            },
            {
              "kind": "field",
              "name": "button",
              "type": {
                "text": "HTMLButtonElement | HTMLLinkElement"
              }
            },
            {
              "kind": "field",
              "name": "labelSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "isIconButton",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "attribute": "title"
            },
            {
              "kind": "field",
              "name": "variant",
              "type": {
                "text": "'brand' | 'ai' | 'info' | 'neutral' | 'success' | 'warning' | 'danger' | 'new'"
              },
              "default": "'brand'",
              "description": "The button's theme variant. Defaults to `brand` if not within another element with a variant.",
              "attribute": "variant",
              "reflects": true,
              "parsedType": {
                "text": "'new' | 'warning' | 'brand' | 'ai' | 'info' | 'neutral' | 'success' | 'danger'"
              }
            },
            {
              "kind": "field",
              "name": "navbar",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Flags the buttons as a navbar button. This is for convenience to make a full-height, at least squared, header-colored button.",
              "attribute": "navbar",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "appearance",
              "type": {
                "text": "'accent' | 'filled-outlined' | 'filled' | 'outlined' | 'plain'"
              },
              "default": "'accent'",
              "description": "The button's visual appearance.",
              "attribute": "appearance",
              "reflects": true,
              "parsedType": {
                "text": "'accent' | 'filled-outlined' | 'filled' | 'outlined' | 'plain'"
              }
            },
            {
              "kind": "field",
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "Controls the component's spacing density without affecting font-size.",
              "attribute": "density",
              "reflects": true,
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "kind": "field",
              "name": "withCaret",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the button with a caret. Used to indicate that the button triggers a dropdown menu or similar behavior.",
              "attribute": "with-caret",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "withStart",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "with-start"
            },
            {
              "kind": "field",
              "name": "withEnd",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "with-end"
            },
            {
              "kind": "field",
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the button in a loading state.",
              "attribute": "loading",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "ariaLabel",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The button's accessible name for when the visible content isn't the desired name (e.g.\nicon-only buttons). Mirrored onto the internal button/anchor, where the role lives — an\naria-label left on the host alone would sit on a role-less element and be ignored by\nassistive tech.",
              "attribute": "aria-label",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style button with rounded edges.",
              "attribute": "pill",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "type",
              "type": {
                "text": "'button' | 'submit' | 'reset'"
              },
              "default": "'button'",
              "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.",
              "attribute": "type",
              "parsedType": {
                "text": "'reset' | 'button' | 'submit'"
              }
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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.",
              "attribute": "name",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "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.",
              "attribute": "value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "href",
              "type": {
                "text": "string"
              },
              "description": "When set, the underlying button will be rendered as an `<a>` with this `href` instead of a `<button>`.",
              "attribute": "href",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "target",
              "type": {
                "text": "string"
              },
              "description": "Tells the browser where to open the link. Only used when `href` is present.\n\nTakes the `_blank`, `_self`, `_parent` and `_top` keywords, or the name of a window: a link\nwhose target names an already open window navigates that window instead of opening another one.\nNote that `rel=\"noopener\"` suppresses the lookup, so a named target then opens a new window\nevery time.\n\nThe implicit opener isolation browsers apply covers `_blank` only. A named target leaves\n`window.opener` set on the opened page, so a link pointing at untrusted content needs\n`rel=\"noopener\"` spelled out.",
              "attribute": "target"
            },
            {
              "kind": "field",
              "name": "rel",
              "type": {
                "text": "string | undefined"
              },
              "description": "When using `href`, this attribute will map to the underlying link's `rel` attribute.",
              "attribute": "rel"
            },
            {
              "kind": "field",
              "name": "download",
              "type": {
                "text": "string | undefined"
              },
              "description": "Tells the browser to download the linked file as this filename. Only used when `href` is present.",
              "attribute": "download"
            },
            {
              "kind": "field",
              "name": "formAction",
              "type": {
                "text": "string"
              },
              "description": "Used to override the form owner's `action` attribute.",
              "attribute": "formaction",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "formEnctype",
              "type": {
                "text": "'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain'"
              },
              "description": "Used to override the form owner's `enctype` attribute.",
              "attribute": "formenctype",
              "reflects": true,
              "parsedType": {
                "text": "'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain'"
              }
            },
            {
              "kind": "field",
              "name": "formMethod",
              "type": {
                "text": "'post' | 'get' | 'dialog'"
              },
              "description": "Used to override the form owner's `method` attribute.\n\n`dialog` is the third keyword HTML defines here: inside a `<dialog>` it closes the dialog and\nsubmits nothing, with the button's value becoming the dialog's return value.",
              "attribute": "formmethod",
              "reflects": true,
              "parsedType": {
                "text": "'post' | 'get' | 'dialog'"
              }
            },
            {
              "kind": "field",
              "name": "formNoValidate",
              "type": {
                "text": "boolean"
              },
              "description": "Used to override the form owner's `novalidate` attribute.",
              "attribute": "formnovalidate",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "formTarget",
              "type": {
                "text": "string"
              },
              "description": "Used to override the form owner's `target` attribute. Takes the same values as `target`: the four keywords or a\nwindow name.",
              "attribute": "formtarget",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "constructLightDOMButton",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "PointerEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleInvalid",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "hasSlottedIcon",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "hasSlottedIconLabel",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "hasSlottedText",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "hasOtherSlottedElements",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "method",
              "name": "handleLabelSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "updateIconButtonState",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "isButton",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "isLink",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "_args",
                  "type": {
                    "text": "Parameters<EdFormAssociatedElement['setValue']>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "click",
              "description": "Simulates a click on the button."
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the button."
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the button."
            },
            {
              "kind": "field",
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "attribute": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "attribute": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "attribute": "ai",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "attribute": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#fieldsetDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set by `formDisabledCallback`, i.e. an ancestor `<fieldset>`. Never written by a consumer.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#ownDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The disabled state this element was given directly, via its property or its attribute.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "attribute": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOnMode",
              "type": {
                "text": "'combined' | 'separated' | string"
              },
              "default": "'combined'",
              "parsedType": {
                "text": "string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "text": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "parsedType": {
                "text": "HTMLElement & { value: unknown } | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "valueHasChanged",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasInteracted",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_customValidityMessage",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_isCheckingValidity",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set while `checkValidity()` is executing so the `invalid` event handler can distinguish\na programmatic check (no UI side-effects per spec) from `reportValidity()` / native form\nsubmission (which should surface the error UI and focus the first invalid control).",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emittedEvents",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "states",
              "type": {
                "text": "CustomStateSet"
              },
              "parsedType": {
                "text": "any"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleSubmitOnEnter",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleClearOnEscape",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emitInvalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleInteraction",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "labels",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getForm",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "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": {
                "text": "HTMLFormElement | null"
              },
              "parsedType": {
                "text": "null | HTMLFormElement"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validity",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "willValidate",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationMessage",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "checkValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Override this to change where constraint validation popups are anchored.",
              "readonly": true,
              "parsedType": {
                "text": "HTMLElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValidity",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setValidity>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "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.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "allValidators",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "resetValidity",
              "description": "Reset validity is a way of removing manual custom errors and native validation.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "Emitted when the button loses focus.",
              "name": "blur",
              "reactName": "onBlur",
              "eventName": "BlurEvent"
            },
            {
              "description": "Emitted when the button gains focus.",
              "name": "focus",
              "reactName": "onFocus",
              "eventName": "FocusEvent"
            },
            {
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied.",
              "name": "ed-invalid",
              "reactName": "onEdInvalid",
              "eventName": "EdInvalidEvent"
            }
          ],
          "attributes": [
            {
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "fieldName": "title"
            },
            {
              "name": "variant",
              "type": {
                "text": "'brand' | 'ai' | 'info' | 'neutral' | 'success' | 'warning' | 'danger' | 'new'"
              },
              "default": "'brand'",
              "description": "The button's theme variant. Defaults to `brand` if not within another element with a variant.",
              "fieldName": "variant",
              "parsedType": {
                "text": "'new' | 'warning' | 'brand' | 'ai' | 'info' | 'neutral' | 'success' | 'danger'"
              }
            },
            {
              "name": "navbar",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Flags the buttons as a navbar button. This is for convenience to make a full-height, at least squared, header-colored button.",
              "fieldName": "navbar"
            },
            {
              "name": "appearance",
              "type": {
                "text": "'accent' | 'filled-outlined' | 'filled' | 'outlined' | 'plain'"
              },
              "default": "'accent'",
              "description": "The button's visual appearance.",
              "fieldName": "appearance",
              "parsedType": {
                "text": "'accent' | 'filled-outlined' | 'filled' | 'outlined' | 'plain'"
              }
            },
            {
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "Controls the component's spacing density without affecting font-size.",
              "fieldName": "density",
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "name": "with-caret",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the button with a caret. Used to indicate that the button triggers a dropdown menu or similar behavior.",
              "fieldName": "withCaret"
            },
            {
              "name": "with-start",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "withStart"
            },
            {
              "name": "with-end",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "withEnd"
            },
            {
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the button in a loading state.",
              "fieldName": "loading"
            },
            {
              "name": "aria-label",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The button's accessible name for when the visible content isn't the desired name (e.g.\nicon-only buttons). Mirrored onto the internal button/anchor, where the role lives — an\naria-label left on the host alone would sit on a role-less element and be ignored by\nassistive tech.",
              "fieldName": "ariaLabel",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style button with rounded edges.",
              "fieldName": "pill"
            },
            {
              "name": "type",
              "type": {
                "text": "'button' | 'submit' | 'reset'"
              },
              "default": "'button'",
              "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.",
              "fieldName": "type",
              "parsedType": {
                "text": "'reset' | 'button' | 'submit'"
              }
            },
            {
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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.",
              "fieldName": "name",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "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.",
              "fieldName": "value"
            },
            {
              "name": "href",
              "type": {
                "text": "string"
              },
              "description": "When set, the underlying button will be rendered as an `<a>` with this `href` instead of a `<button>`.",
              "fieldName": "href"
            },
            {
              "name": "target",
              "type": {
                "text": "string"
              },
              "description": "Tells the browser where to open the link. Only used when `href` is present.\n\nTakes the `_blank`, `_self`, `_parent` and `_top` keywords, or the name of a window: a link\nwhose target names an already open window navigates that window instead of opening another one.\nNote that `rel=\"noopener\"` suppresses the lookup, so a named target then opens a new window\nevery time.\n\nThe implicit opener isolation browsers apply covers `_blank` only. A named target leaves\n`window.opener` set on the opened page, so a link pointing at untrusted content needs\n`rel=\"noopener\"` spelled out.",
              "fieldName": "target"
            },
            {
              "name": "rel",
              "type": {
                "text": "string | undefined"
              },
              "description": "When using `href`, this attribute will map to the underlying link's `rel` attribute.",
              "fieldName": "rel"
            },
            {
              "name": "download",
              "type": {
                "text": "string | undefined"
              },
              "description": "Tells the browser to download the linked file as this filename. Only used when `href` is present.",
              "fieldName": "download"
            },
            {
              "name": "formaction",
              "type": {
                "text": "string"
              },
              "description": "Used to override the form owner's `action` attribute.",
              "fieldName": "formAction"
            },
            {
              "name": "formenctype",
              "type": {
                "text": "'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain'"
              },
              "description": "Used to override the form owner's `enctype` attribute.",
              "fieldName": "formEnctype",
              "parsedType": {
                "text": "'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain'"
              }
            },
            {
              "name": "formmethod",
              "type": {
                "text": "'post' | 'get' | 'dialog'"
              },
              "description": "Used to override the form owner's `method` attribute.\n\n`dialog` is the third keyword HTML defines here: inside a `<dialog>` it closes the dialog and\nsubmits nothing, with the button's value becoming the dialog's return value.",
              "fieldName": "formMethod",
              "parsedType": {
                "text": "'post' | 'get' | 'dialog'"
              }
            },
            {
              "name": "formnovalidate",
              "type": {
                "text": "boolean"
              },
              "description": "Used to override the form owner's `novalidate` attribute.",
              "fieldName": "formNoValidate"
            },
            {
              "name": "formtarget",
              "type": {
                "text": "string"
              },
              "description": "Used to override the form owner's `target` attribute. Takes the same values as `target`: the four keywords or a\nwindow name.",
              "fieldName": "formTarget"
            },
            {
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "fieldName": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "fieldName": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "fieldName": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "fieldName": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "fieldName": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "Applied when the button is disabled.",
              "name": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Applied when the button contains only a `<ed-icon>` with no other content.",
              "name": "icon-button"
            },
            {
              "description": "Applied when the button is rendered as a link (i.e. `href` is set).",
              "name": "link"
            },
            {
              "description": "Applied when the button is in the loading state.",
              "name": "loading"
            },
            {
              "description": "The control is required.",
              "name": "required",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is not required.",
              "name": "optional",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value fails constraint validation, whether or not the user has touched the control yet.",
              "name": "invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value passes constraint validation.",
              "name": "valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Invalid, and the user has interacted with the control. This is the one to style for an error: it behaves like the platform's `:user-invalid`, so an untouched field is not marked wrong before the user has had a chance to fill it in.",
              "name": "user-invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Valid, and the user has interacted with the control.",
              "name": "user-valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The user has interacted with the control.",
              "name": "dirty",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `error` property is set, or the control is `user-invalid`.",
              "name": "error",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `warning` property is set.",
              "name": "warning",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `ai` property is set and the user has not interacted with the control yet.",
              "name": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdFormAssociatedElement",
            "module": "/src/internal/ed-form-associated-element.js"
          },
          "summary": "Buttons represent actions that are available to the user.",
          "jsDoc": "/**\n * @summary Buttons represent actions that are available to the user.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/button\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-icon\n * @dependency ed-progress-ring\n *\n * @event blur - Emitted when the button loses focus.\n * @event focus - Emitted when the button gains focus.\n * @event ed-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n *\n * @slot - The button's label.\n * @slot start - An element, such as `<ed-icon>`, placed before the label.\n * @slot end - An element, such as `<ed-icon>`, placed after the label.\n *\n * @csspart base - The component's base wrapper.\n * @csspart start - The container that wraps the `start` slot.\n * @csspart label - The button's label.\n * @csspart end - The container that wraps the `end` slot.\n * @csspart caret - The button's caret icon, a `<ed-icon>` element.\n * @csspart spinner - The spinner that shows when the button is in the loading state.\n *\n * @cssstate disabled - Applied when the button is disabled.\n * @cssstate icon-button - Applied when the button contains only a `<ed-icon>` with no other content.\n * @cssstate link - Applied when the button is rendered as a link (i.e. `href` is set).\n * @cssstate loading - Applied when the button is in the loading state.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/button",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-icon",
            "ed-progress-ring"
          ],
          "tagName": "ed-button",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdButton",
            "module": "components/button/button.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-button",
          "declaration": {
            "name": "EdButton",
            "module": "components/button/button.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/notification/notification.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdNotification",
          "cssParts": [
            {
              "description": "The container that wraps the whole notification.",
              "name": "base"
            },
            {
              "description": "The icon cell.",
              "name": "icon"
            },
            {
              "description": "The title cell.",
              "name": "title"
            },
            {
              "description": "The collapse toggle button (rendered only when `collapsible`).",
              "name": "toggle"
            },
            {
              "description": "The description cell. Always in the DOM, and hidden while the slot is empty or while `collapsible` is collapsed.",
              "name": "description"
            },
            {
              "description": "The action slot wrapper.",
              "name": "action"
            },
            {
              "description": "The close button (rendered only when `closable`).",
              "name": "close-button"
            }
          ],
          "slots": [
            {
              "description": "The notification's title (required, vertically centered against the icon).",
              "name": ""
            },
            {
              "description": "Optional description content shown below the title row. When `collapsible` is set, this content is hidden until the user expands the toggle.",
              "name": "description"
            },
            {
              "description": "Override the default variant icon.",
              "name": "icon"
            },
            {
              "description": "Action buttons placed in the title row toolbar. One button is recommended.",
              "name": "action"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'description', 'action')"
            },
            {
              "kind": "field",
              "name": "resizeObserver",
              "type": {
                "text": "ResizeObserver | undefined"
              },
              "privacy": "private",
              "parsedType": {
                "text": "{ disconnect: {  }, observe: {  }, unobserve: {  } } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "base",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "detailsOpen",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "hideToggleText",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "variant",
              "type": {
                "text": "'brand' | 'ai' | 'info' | 'neutral' | 'success' | 'warning' | 'danger' | 'new'"
              },
              "default": "'info'",
              "description": "The notification's theme variant.",
              "attribute": "variant",
              "reflects": true,
              "parsedType": {
                "text": "'new' | 'warning' | 'brand' | 'ai' | 'info' | 'neutral' | 'success' | 'danger'"
              }
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether the notification is open. Toggle to show/hide; reflects to the attribute.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "closable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, renders a close button that hides the notification on click.",
              "attribute": "closable",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "collapsible",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, the description is hidden behind a toggle in the title row. Only meaningful when a `description` slot is provided.",
              "attribute": "collapsible",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "staticOpen",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Internal escape hatch for components (e.g. `<ed-toast-item>`) that own animation at a higher level.\nWhen `true`, `connectedCallback` skips the first-paint re-trigger workaround, and the `open`\nwatcher toggles `base.hidden` synchronously without running animations or emitting show/hide\nevents. The notification renders fully open immediately when `open` is `true`.",
              "attribute": "static-open"
            },
            {
              "kind": "field",
              "name": "withoutLiveRegion",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Renders without the live-region role, for a host that owns announcements itself.\n`<ed-toast-item>` sets it: the toast stack announces every toast through one shared region, and\na second live region on the composed notification makes a screen reader read the toast twice.",
              "attribute": "without-live-region"
            },
            {
              "kind": "method",
              "name": "observeBase",
              "privacy": "private",
              "description": "Measures the base, and keeps measuring it — `disconnect()` leaves the observer reusable."
            },
            {
              "kind": "method",
              "name": "show",
              "description": "Shows the notification."
            },
            {
              "kind": "method",
              "name": "hide",
              "description": "Hides the notification."
            },
            {
              "kind": "method",
              "name": "handleCloseClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleToggleClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "measureHideToggleText",
              "privacy": "private",
              "parameters": [
                {
                  "name": "width",
                  "optional": true,
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getDefaultIcon",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderToggle",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderDescription",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "Emitted before the notification opens. Cancelable; calling `preventDefault()` keeps it closed.",
              "name": "ed-show",
              "reactName": "onEdShow",
              "eventName": "EdShowEvent"
            },
            {
              "description": "Emitted after the notification opens and all animations are complete.",
              "name": "ed-after-show",
              "reactName": "onEdAfterShow",
              "eventName": "EdAfterShowEvent"
            },
            {
              "description": "Emitted before the notification closes. Cancelable; calling `preventDefault()` keeps it open.",
              "name": "ed-hide",
              "reactName": "onEdHide",
              "eventName": "EdHideEvent"
            },
            {
              "description": "Emitted after the notification closes and all animations are complete.",
              "name": "ed-after-hide",
              "reactName": "onEdAfterHide",
              "eventName": "EdAfterHideEvent"
            }
          ],
          "attributes": [
            {
              "name": "variant",
              "type": {
                "text": "'brand' | 'ai' | 'info' | 'neutral' | 'success' | 'warning' | 'danger' | 'new'"
              },
              "default": "'info'",
              "description": "The notification's theme variant.",
              "fieldName": "variant",
              "parsedType": {
                "text": "'new' | 'warning' | 'brand' | 'ai' | 'info' | 'neutral' | 'success' | 'danger'"
              }
            },
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether the notification is open. Toggle to show/hide; reflects to the attribute.",
              "fieldName": "open"
            },
            {
              "name": "closable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, renders a close button that hides the notification on click.",
              "fieldName": "closable"
            },
            {
              "name": "collapsible",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, the description is hidden behind a toggle in the title row. Only meaningful when a `description` slot is provided.",
              "fieldName": "collapsible"
            },
            {
              "name": "static-open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Internal escape hatch for components (e.g. `<ed-toast-item>`) that own animation at a higher level.\nWhen `true`, `connectedCallback` skips the first-paint re-trigger workaround, and the `open`\nwatcher toggles `base.hidden` synchronously without running animations or emitting show/hide\nevents. The notification renders fully open immediately when `open` is `true`.",
              "fieldName": "staticOpen"
            },
            {
              "name": "without-live-region",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Renders without the live-region role, for a host that owns announcements itself.\n`<ed-toast-item>` sets it: the toast stack announces every toast through one shared region, and\na second live region on the composed notification makes a screen reader read the toast twice.",
              "fieldName": "withoutLiveRegion"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Notifications display important inline messages with a title, optional description, and optional action / close.",
          "jsDoc": "/**\n * @summary Notifications display important inline messages with a title, optional description, and optional action / close.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/notification\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-button\n * @dependency ed-icon\n *\n * @slot - The notification's title (required, vertically centered against the icon).\n * @slot description - Optional description content shown below the title row. When `collapsible` is set, this content is hidden until the user expands the toggle.\n * @slot icon - Override the default variant icon.\n * @slot action - Action buttons placed in the title row toolbar. One button is recommended.\n *\n * @event ed-show - Emitted before the notification opens. Cancelable; calling `preventDefault()` keeps it closed.\n * @event ed-after-show - Emitted after the notification opens and all animations are complete.\n * @event ed-hide - Emitted before the notification closes. Cancelable; calling `preventDefault()` keeps it open.\n * @event ed-after-hide - Emitted after the notification closes and all animations are complete.\n *\n * @csspart base - The container that wraps the whole notification.\n * @csspart icon - The icon cell.\n * @csspart title - The title cell.\n * @csspart toggle - The collapse toggle button (rendered only when `collapsible`).\n * @csspart description - The description cell. Always in the DOM, and hidden while the slot is empty or while `collapsible` is collapsed.\n * @csspart action - The action slot wrapper.\n * @csspart close-button - The close button (rendered only when `closable`).\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/notification",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-button",
            "ed-icon"
          ],
          "tagName": "ed-notification",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdNotification",
            "module": "components/notification/notification.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-notification",
          "declaration": {
            "name": "EdNotification",
            "module": "components/notification/notification.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/toast-item/toast-item.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdToastItem",
          "cssParts": [
            {
              "description": "The host wrapper that owns the entrance/exit motion.",
              "name": "base"
            },
            {
              "description": "The inner `<ed-notification>` element.",
              "name": "notification"
            }
          ],
          "slots": [
            {
              "description": "The toast title (required).",
              "name": ""
            },
            {
              "description": "Optional description content shown below the title.",
              "name": "description"
            },
            {
              "description": "Action buttons (typically one `<ed-button>`).",
              "name": "action"
            },
            {
              "description": "Override the default variant icon.",
              "name": "icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'description', 'action', 'icon')"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "base",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "notificationEl",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "variant",
              "type": {
                "text": "'brand' | 'ai' | 'info' | 'neutral' | 'success' | 'warning' | 'danger' | 'new'"
              },
              "default": "'info'",
              "description": "The toast's theme variant.",
              "attribute": "variant",
              "reflects": true,
              "parsedType": {
                "text": "'new' | 'warning' | 'brand' | 'ai' | 'info' | 'neutral' | 'success' | 'danger'"
              }
            },
            {
              "kind": "field",
              "name": "sensitivity",
              "type": {
                "text": "'polite' | 'assertive' | undefined"
              },
              "description": "Announcement urgency for assistive tech, mirroring `aria-live`. When unset it is derived\nfrom `variant`: `danger`/`warning` → `assertive`, everything else → `polite`.",
              "attribute": "sensitivity",
              "parsedType": {
                "text": "'polite' | 'assertive' | undefined"
              }
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the toast is open. Toggle to show/hide; reflects to the attribute.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "duration",
              "type": {
                "text": "number | 'infinity' | undefined"
              },
              "description": "Auto-dismiss duration in milliseconds. The string `'infinity'` (case-insensitive) disables the\ntimer. When left unset, the duration is resolved at show time: `Infinity` for `danger`/`warning`\nvariants or when an `action` slot is filled, `5000` for all other variants. An explicit value\nalways wins regardless of variant or slot content.",
              "attribute": "duration",
              "parsedType": {
                "text": "number | 'infinity' | undefined"
              }
            },
            {
              "kind": "field",
              "name": "#openPending",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set while `open` is off only for the first update, so the watcher sees it turn on afterwards."
            },
            {
              "kind": "field",
              "name": "#hasShown",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set once a show got past `ed-show`; a toast that never showed has nothing to hide."
            },
            {
              "kind": "method",
              "name": "#openAfterUpdate",
              "privacy": "private",
              "description": "Opens once the pending update is done, unless `hide()` called the open off meanwhile."
            },
            {
              "kind": "method",
              "name": "connectedMoveCallback",
              "description": "An atomic move (`moveBefore`) keeps the toast as it is; defining this is what stops the browser\nfrom running the disconnect/connect pair for it, which would restart the show and the timer."
            },
            {
              "kind": "field",
              "name": "#teardownPending",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set while a disconnect waits to see whether the toast comes straight back."
            },
            {
              "kind": "method",
              "name": "show",
              "description": "Shows the toast. Returns a promise that resolves when the opening animation completes, or when\nthe show is called off by `hide()` or a cancelled `ed-show`."
            },
            {
              "kind": "field",
              "name": "#pendingShows",
              "privacy": "private",
              "type": {
                "text": "(() => void)[]"
              },
              "default": "[]",
              "description": "What `show()` waits on. It settles once the toast has shown, or when the show is called off —\nby `hide()`, which in the same task leaves `open` unchanged and runs no watcher at all, or by a\ncancelled `ed-show`. Waiting for `ed-after-show` alone would never end in those cases."
            },
            {
              "kind": "method",
              "name": "#settleShows",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "hide",
              "description": "Hides the toast. Returns a promise that resolves when the closing animation completes — at once\nfor a toast still waiting for its first update, whose open this calls off."
            },
            {
              "kind": "field",
              "name": "#onKeydown",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "#resolveDuration",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              }
            },
            {
              "kind": "method",
              "name": "#startTimer",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "#clearTimer",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "#hasFocus",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether focus is inside this toast."
            },
            {
              "kind": "field",
              "name": "#onFocusIn",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "#onFocusOut",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "#onPointerDownOutside",
              "privacy": "private",
              "readonly": true,
              "description": "A focused toast claims Escape above the modal, not the pointer: a press outside it — on the\nmodal's backdrop, which light-dismisses the modal only when the modal is on top — steps the\ntoast out of the stack before the modal checks, in the capture phase on document. Not every\npress moves focus (a dialog's drag handle, a scrollbar); once the press is handled, a toast that\nstill has focus steps back in."
            },
            {
              "kind": "method",
              "name": "#leaveFocus",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "#syncDismissibleRegistration",
              "privacy": "private",
              "description": "Synchronizes this toast's presence in the dismissible stack. The toast is registered when it is\nopen, unless a modal dialog is open and focus is elsewhere: Escape pressed in the modal belongs\nto the modal, and Escape pressed in a focused toast belongs to the toast. Focusing it under a\nmodal re-registers it, which puts it above the modal.\n\nAlways unregisters before potentially re-registering to prevent duplicate stack entries when\nthe modal state changes while the toast is already in the stack."
            },
            {
              "kind": "field",
              "name": "#isRegistered",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether this toast is in the dismissible stack; every register and unregister goes through it."
            },
            {
              "kind": "method",
              "name": "#leaveDismissibleStack",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "#addDocEscListener",
              "privacy": "private",
              "description": "Adds a document-level keydown listener that closes this toast when Escape is pressed and\nthis toast is the topmost dismissible. This is the \"no toast has keyboard focus\" path: the\nuser presses Escape from any other location and the most-recently-opened toast closes.\n\nThe host keydown listener (`#onKeydown`) handles the focused-toast case and calls\n`stopPropagation()`, which stops the event from bubbling further up the DOM. Because the\ndocument listener runs in the bubble phase (not capture), it does NOT see events that were\nstopped mid-bubble — so the focused-toast case closes exactly one toast, not two."
            },
            {
              "kind": "method",
              "name": "#removeDocEscListener",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "#onDocKeydown",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "#onNotificationClick",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "#rootLabel",
              "privacy": "private",
              "type": {
                "text": "string | undefined"
              },
              "description": "Accessible name for the focus-root group, read at render time and omitted when empty.\n\nTitle and description only, and the same two the stack announces — `textContent` would fold in\nevery other slot, so the label of an action button became part of the toast's name.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "#order",
              "default": "toastCounter++"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "name": "OWN_EVENT",
              "type": {
                "text": "EdAfterShowEvent"
              },
              "reactName": "onOwnEvent",
              "eventName": "OwnEventEvent"
            },
            {
              "description": "Emitted before the toast opens. Cancelable; calling `preventDefault()` keeps it closed. Like all four, not composed: it stops at the shadow root the toast sits in.",
              "name": "ed-show",
              "reactName": "onEdShow",
              "eventName": "EdShowEvent"
            },
            {
              "description": "Emitted after the toast has fully opened and all animations are complete. Not composed.",
              "name": "ed-after-show",
              "reactName": "onEdAfterShow",
              "eventName": "EdAfterShowEvent"
            },
            {
              "description": "Emitted before the toast closes. Cancelable; calling `preventDefault()` keeps it open, with its dismiss timer still running. Not composed.",
              "name": "ed-hide",
              "reactName": "onEdHide",
              "eventName": "EdHideEvent"
            },
            {
              "description": "Emitted after the toast has fully closed and all animations are complete. Not composed.",
              "name": "ed-after-hide",
              "reactName": "onEdAfterHide",
              "eventName": "EdAfterHideEvent"
            }
          ],
          "attributes": [
            {
              "name": "variant",
              "type": {
                "text": "'brand' | 'ai' | 'info' | 'neutral' | 'success' | 'warning' | 'danger' | 'new'"
              },
              "default": "'info'",
              "description": "The toast's theme variant.",
              "fieldName": "variant",
              "parsedType": {
                "text": "'new' | 'warning' | 'brand' | 'ai' | 'info' | 'neutral' | 'success' | 'danger'"
              }
            },
            {
              "name": "sensitivity",
              "type": {
                "text": "'polite' | 'assertive' | undefined"
              },
              "description": "Announcement urgency for assistive tech, mirroring `aria-live`. When unset it is derived\nfrom `variant`: `danger`/`warning` → `assertive`, everything else → `polite`.",
              "fieldName": "sensitivity",
              "parsedType": {
                "text": "'polite' | 'assertive' | undefined"
              }
            },
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the toast is open. Toggle to show/hide; reflects to the attribute.",
              "fieldName": "open"
            },
            {
              "name": "duration",
              "type": {
                "text": "number | 'infinity' | undefined"
              },
              "description": "Auto-dismiss duration in milliseconds. The string `'infinity'` (case-insensitive) disables the\ntimer. When left unset, the duration is resolved at show time: `Infinity` for `danger`/`warning`\nvariants or when an `action` slot is filled, `5000` for all other variants. An explicit value\nalways wins regardless of variant or slot content.",
              "fieldName": "duration",
              "parsedType": {
                "text": "number | 'infinity' | undefined"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "A transient, floating notification that auto-dismisses after a configurable duration. Wraps\n`<ed-notification>` for consistent visuals and pairs with `<ed-toast-stack>` for positioned stacking\nand screen-reader announcements via the stack's shared live region.",
          "jsDoc": "/**\n * @summary A transient, floating notification that auto-dismisses after a configurable duration. Wraps\n *   `<ed-notification>` for consistent visuals and pairs with `<ed-toast-stack>` for positioned stacking\n *   and screen-reader announcements via the stack's shared live region.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/toast-item\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-notification\n *\n * @slot - The toast title (required).\n * @slot description - Optional description content shown below the title.\n * @slot action - Action buttons (typically one `<ed-button>`).\n * @slot icon - Override the default variant icon.\n *\n * @event ed-show - Emitted before the toast opens. Cancelable; calling `preventDefault()` keeps it closed. Like all four,\n *  not composed: it stops at the shadow root the toast sits in.\n * @event ed-after-show - Emitted after the toast has fully opened and all animations are complete. Not composed.\n * @event ed-hide - Emitted before the toast closes. Cancelable; calling `preventDefault()` keeps it open, with its\n *  dismiss timer still running. Not composed.\n * @event ed-after-hide - Emitted after the toast has fully closed and all animations are complete. Not composed.\n *\n * @csspart base - The host wrapper that owns the entrance/exit motion.\n * @csspart notification - The inner `<ed-notification>` element.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/toast-item",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-notification"
          ],
          "tagName": "ed-toast-item",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdToastItem",
            "module": "components/toast-item/toast-item.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-toast-item",
          "declaration": {
            "name": "EdToastItem",
            "module": "components/toast-item/toast-item.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/toast-hosts.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "TOAST_STACK_CONTAINER",
          "description": "Implemented by a host with a built-in stack: returns the node the stack is appended to."
        },
        {
          "kind": "function",
          "name": "builtInToastStack",
          "return": {
            "type": {
              "text": "HTMLElement | null"
            }
          },
          "parameters": [
            {
              "name": "host",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "name": "create",
              "default": "true"
            }
          ],
          "description": "`host`'s built-in stack. With `create`, it is made on the first call and put back into the host's\ncontainer when that was re-rendered; without, only an existing one is returned."
        },
        {
          "kind": "function",
          "name": "builtInToastStacks",
          "return": {
            "type": {
              "text": "HTMLElement[]"
            }
          },
          "description": "Every built-in stack made so far, connected or not."
        },
        {
          "kind": "function",
          "name": "forgetBuiltInToastStack",
          "return": {
            "type": {
              "text": "void"
            }
          },
          "parameters": [
            {
              "name": "stack",
              "type": {
                "text": "HTMLElement"
              }
            }
          ],
          "description": "Forgets a built-in stack that is empty and whose host is gone, so the set does not grow."
        },
        {
          "kind": "function",
          "name": "isBuiltInToastStack",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "stack",
              "type": {
                "text": "Element"
              }
            }
          ]
        },
        {
          "kind": "function",
          "name": "registerPageToastHost",
          "return": {
            "type": {
              "text": "void"
            }
          },
          "parameters": [
            {
              "name": "host",
              "type": {
                "text": "HTMLElement"
              }
            }
          ],
          "description": "Call from `<ed-app>`'s connectedCallback. Toasts shown before it connected — into the stack the\nlibrary appends to body, or left there by a shell that went before — move into its stack."
        },
        {
          "kind": "function",
          "name": "unregisterPageToastHost",
          "return": {
            "type": {
              "text": "void"
            }
          },
          "parameters": [
            {
              "name": "host",
              "type": {
                "text": "HTMLElement"
              }
            }
          ],
          "description": "Call from `<ed-app>`'s disconnectedCallback. A host that is not back once the current task's\nmicrotasks run was removed, not moved: a page change that swaps the shell takes its stack with it,\nand the listeners hand the open toasts on. Queued here, ahead of the disconnect of the toasts\ninside — descendants disconnect after their host — so the toasts move before they tear down."
        },
        {
          "kind": "function",
          "name": "onPageToastHostChange",
          "return": {
            "type": {
              "text": "void"
            }
          },
          "parameters": [
            {
              "name": "listener",
              "type": {
                "text": "() => void"
              }
            }
          ],
          "description": "Runs `listener` whenever a page host arrived or left the page for good."
        },
        {
          "kind": "function",
          "name": "pageToastHost",
          "return": {
            "type": {
              "text": "HTMLElement | null"
            }
          },
          "description": "The first connected page host, or `null`."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "TOAST_STACK_CONTAINER",
          "declaration": {
            "name": "TOAST_STACK_CONTAINER",
            "module": "internal/toast-hosts.js"
          }
        },
        {
          "kind": "js",
          "name": "builtInToastStack",
          "declaration": {
            "name": "builtInToastStack",
            "module": "internal/toast-hosts.js"
          }
        },
        {
          "kind": "js",
          "name": "builtInToastStacks",
          "declaration": {
            "name": "builtInToastStacks",
            "module": "internal/toast-hosts.js"
          }
        },
        {
          "kind": "js",
          "name": "forgetBuiltInToastStack",
          "declaration": {
            "name": "forgetBuiltInToastStack",
            "module": "internal/toast-hosts.js"
          }
        },
        {
          "kind": "js",
          "name": "isBuiltInToastStack",
          "declaration": {
            "name": "isBuiltInToastStack",
            "module": "internal/toast-hosts.js"
          }
        },
        {
          "kind": "js",
          "name": "registerPageToastHost",
          "declaration": {
            "name": "registerPageToastHost",
            "module": "internal/toast-hosts.js"
          }
        },
        {
          "kind": "js",
          "name": "unregisterPageToastHost",
          "declaration": {
            "name": "unregisterPageToastHost",
            "module": "internal/toast-hosts.js"
          }
        },
        {
          "kind": "js",
          "name": "onPageToastHostChange",
          "declaration": {
            "name": "onPageToastHostChange",
            "module": "internal/toast-hosts.js"
          }
        },
        {
          "kind": "js",
          "name": "pageToastHost",
          "declaration": {
            "name": "pageToastHost",
            "module": "internal/toast-hosts.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/toast-stack/toast-stack.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdToastStack",
          "cssProperties": [
            {
              "description": "Gap between stacked toast items.",
              "name": "--ed-toast-stack-gap",
              "default": "var(--ed-space-3)"
            },
            {
              "description": "Distance from the top/bottom viewport edge.",
              "name": "--ed-toast-stack-offset-block",
              "default": "var(--ed-space-4)"
            },
            {
              "description": "Distance from the inline-start/inline-end viewport edge. On a centered placement it is kept on both edges, so it also caps how wide the stack can grow.",
              "name": "--ed-toast-stack-offset-inline",
              "default": "var(--ed-space-4)"
            },
            {
              "description": "Maximum width of the stack column; child toasts inherit this.",
              "name": "--ed-toast-stack-max-width",
              "default": "25rem"
            }
          ],
          "cssParts": [
            {
              "description": "Visually-hidden, persistent `aria-live=\"polite\"` region that receives announcements for toasts whose resolved `sensitivity` is `polite`.",
              "name": "live-region-polite"
            },
            {
              "description": "Visually-hidden, persistent `aria-live=\"assertive\"` region that receives announcements for toasts whose resolved `sensitivity` is `assertive`.",
              "name": "live-region-assertive"
            }
          ],
          "slots": [
            {
              "description": "`<ed-toast-item>` items. Other content is allowed but discouraged.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "liveRegionPolite",
              "type": {
                "text": "HTMLElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "liveRegionAssertive",
              "type": {
                "text": "HTMLElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "#hasToasts",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the slot currently contains at least one `<ed-toast-item>` element (drives proxy rendering).\nUses manual requestUpdate() instead of"
            },
            {
              "kind": "method",
              "name": "#setHasToasts",
              "privacy": "private",
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "#returnFocusTo",
              "privacy": "private",
              "type": {
                "text": "Element | null"
              },
              "default": "null",
              "description": "The element that held focus before the user entered the region — restored when all toasts\nclose while focus was still inside the region.",
              "parsedType": {
                "text": "null | Element"
              }
            },
            {
              "kind": "field",
              "name": "#toastThatHadFocus",
              "privacy": "private",
              "type": {
                "text": "EdToastItem | null"
              },
              "default": "null",
              "description": "The toast that had focus when it began hiding (set on `ed-hide`, before the animation\nruns and `base.hidden = true` causes the browser to drop focus to body). Used by\n`#onToastAfterHide` to decide whether to redirect focus after dismiss.",
              "parsedType": {
                "text": "null | default"
              }
            },
            {
              "kind": "field",
              "name": "#unsubscribeModalState",
              "privacy": "private",
              "type": {
                "text": "(() => void) | null"
              },
              "default": "null",
              "parsedType": {
                "text": "null | {  }"
              }
            },
            {
              "kind": "field",
              "name": "#hostObserver",
              "privacy": "private",
              "type": {
                "text": "MutationObserver | null"
              },
              "default": "null",
              "description": "A modal of another library hides the rest of the page from assistive technology — MUI's\n`ModalManager` sets `aria-hidden=\"true\"` on every other child of `body`, the stack `toast()`\nappends there among them — and a hidden live region announces nothing. The toasts stay above\nthat modal, so the region stays exposed. Only the stack's own attribute is taken back: a stack\nplaced inside a hidden ancestor stays hidden with it. `inert` is left alone: a contained\n`ed-drawer` sets it on its siblings on purpose.\n\nThe same observer watches `style`: custom properties set inline on the page stack reach the\nbuilt-in stacks only by being copied (`adoptPageSettings`).",
              "parsedType": {
                "text": "null | { disconnect: {  }, observe: {  }, takeRecords: {  } }"
              }
            },
            {
              "kind": "method",
              "name": "#passOnSettings",
              "privacy": "private",
              "description": "A built-in stack takes the page stack's settings as they change, not only at its next toast."
            },
            {
              "kind": "method",
              "name": "#takeBackAriaHidden",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "#onModalStateChange",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "placement",
              "type": {
                "text": "Placement"
              },
              "default": "'top-end'",
              "description": "The placement of the stack relative to the viewport.\nLogical values (`-start` / `-end`) respect the document writing direction.",
              "attribute": "placement",
              "reflects": true,
              "parsedType": {
                "text": "'top-start' | 'top-center' | 'top-end' | 'bottom-start' | 'bottom-center' | 'bottom-end'"
              }
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "description": "The accessible label for the region, used as `aria-label`.\nWhen not set by the consumer, defaults to the localized string for \"Notifications\".",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "hotkey",
              "type": {
                "text": "string"
              },
              "default": "'F8'",
              "description": "Keyboard shortcut (`KeyboardEvent.code`) that moves focus into the notifications region\nby focusing the newest open toast. Defaults to `'F8'` (the Radix convention).\nThe value is announced as part of the region's `aria-label` so screen-reader users\nknow the shortcut is available.",
              "attribute": "hotkey"
            },
            {
              "kind": "field",
              "name": "resolvedLabel",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "description": "Resolved label — falls back to the localized term when the property has not been set.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "connectedMoveCallback",
              "description": "An atomic move (`moveBefore`) runs this instead of the disconnect/connect pair. Firefox 151 takes\na popover inside a shadow root out of the top layer on the move — every built-in stack sits in\none — where Chromium 149 keeps it: bring it back when it holds toasts."
            },
            {
              "kind": "method",
              "name": "#toastsByRecency",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdToastItem[]"
                }
              },
              "description": "Returns the open child `<ed-toast-item>` elements sorted by creation index descending\n(newest first). Used to determine which toast receives focus when the hotkey fires."
            },
            {
              "kind": "method",
              "name": "#isInsideRegion",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "node",
                  "type": {
                    "text": "EventTarget | null"
                  }
                }
              ],
              "description": "Returns true when `node` is inside this stack's light-DOM subtree or shadow root.\nUsed to distinguish \"focus is moving within the region\" from \"focus arrives from outside\"."
            },
            {
              "kind": "field",
              "name": "#onHeadProxyFocus",
              "privacy": "private",
              "readonly": true,
              "description": "Head proxy focus handler: called when focus enters the head proxy (the span before the slot).\nIf focus arrived from outside the region (i.e. Tab forward into the region), direct it to the\nnewest toast. If focus is moving backward from inside (Shift+Tab past the first toast back to\nthe head proxy), let focus leave naturally — do not bounce it back in."
            },
            {
              "kind": "field",
              "name": "#onTailProxyFocus",
              "privacy": "private",
              "readonly": true,
              "description": "Tail proxy focus handler: called when focus enters the tail proxy (the span after the slot).\nIf focus arrived from outside the region (Tab backward into the region from something after\nthe stack), direct it to the oldest toast. If focus is moving forward out of the region\n(Tab past the last toast), let it leave — do not bounce back in."
            },
            {
              "kind": "field",
              "name": "#onToastHide",
              "privacy": "private",
              "readonly": true,
              "description": "Capture-phase `ed-hide` listener. Records which toast had focus when it began hiding,\nBEFORE the animation runs and `base.hidden = true` causes the browser to move focus to body.\n`#onToastAfterHide` uses this snapshot to decide whether to restore focus."
            },
            {
              "kind": "field",
              "name": "#onToastAfterHide",
              "privacy": "private",
              "readonly": true,
              "description": "Capture-phase `ed-after-hide` listener. When a toast fully closes while focus was inside it\n(tracked by `#toastThatHadFocus`), move focus to an adjacent remaining toast by recency.\nIf no toasts remain, restore focus to `#returnFocusTo` if it is still connected.\nNever strands focus on body."
            },
            {
              "kind": "field",
              "name": "#onHotkey",
              "privacy": "private",
              "readonly": true,
              "description": "Document-level keydown handler that moves focus into the region when the configured\nhotkey is pressed without any modifier keys.\n\nWhen focus is currently OUTSIDE the region, capture the active element as the\nreturn-focus target before moving focus in — mirrors the proxy handlers so that\nEsc/close while no toasts remain restores focus to the element that was focused\nbefore the hotkey was pressed, rather than dropping it to body."
            },
            {
              "kind": "field",
              "name": "#onToastShow",
              "privacy": "private",
              "readonly": true,
              "description": "Listens (in the capture phase) for `ed-show` from child `<ed-toast-item>` elements and pushes the\ntoast's textual content into the appropriate shared live region. This is the Radix\npattern: a persistent, visually-hidden live region announces each toast as a fresh\nchild node, sidestepping the unreliable per-element `role=\"alert\"` pattern (Firefox +\nNVDA in particular drops those announcements when the host animates in)."
            },
            {
              "kind": "field",
              "name": "#slottedToasts",
              "privacy": "private",
              "default": "new Set<Element>()",
              "description": "The toasts at the last `slotchange`, so the next one can tell an arrival from a departure."
            },
            {
              "kind": "field",
              "name": "#handleSlotChange",
              "privacy": "private",
              "readonly": true,
              "description": "Keeps the stack's top-layer membership in sync with its contents: promote it (showPopover) when\na toast arrives and demote it (hidePopover) when it empties. The top layer paints in insertion\norder, so a stack that is already showing is promoted again on every arrival — otherwise a\ndialog opened after the first toast covers every later one. Driven by `slotchange`, so it also\ncovers declaratively-added toasts.\n\nAlso maintains `#hasToasts` so that the head/tail focus proxies are rendered only while toasts\nexist, keeping them out of the tab order when the region is empty."
            },
            {
              "kind": "method",
              "name": "#supportsPopover",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              }
            },
            {
              "kind": "method",
              "name": "#showStack",
              "privacy": "private",
              "description": "Puts the stack at the top of the top layer, above everything shown before it."
            },
            {
              "kind": "method",
              "name": "#hideStack",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "#announce",
              "privacy": "private",
              "parameters": [
                {
                  "name": "toast",
                  "type": {
                    "text": "EdToastItem"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "create",
              "return": {
                "type": {
                  "text": ""
                }
              },
              "parameters": [
                {
                  "name": "messageOrOptions",
                  "type": {
                    "text": "string | ToastOptions"
                  },
                  "description": "A title string or a full `ToastOptions` object."
                },
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "ToastOptions"
                  },
                  "description": "Additional options (merged with `messageOrOptions` when both are objects;\nignored when `messageOrOptions` is a string and this argument is absent)."
                }
              ],
              "description": "Creates a new `<ed-toast-item>`, populates it from `messageOrOptions`, adds it to the stack,\nand opens it. The toast will auto-remove itself from the DOM after it hides.\n\nString form is shorthand for `{ title: <string> }`."
            },
            {
              "kind": "method",
              "name": "getOrCreate",
              "static": true,
              "return": {
                "type": {
                  "text": "EdToastStack"
                }
              },
              "parameters": [
                {
                  "name": "placement",
                  "optional": true,
                  "type": {
                    "text": "Placement"
                  }
                }
              ],
              "description": "Returns the page stack — a stack the consumer placed, else `<ed-app>`'s, else one appended to\n`document.body`, created on the first call. There is one per page: `placement` applies only when\nthe stack is created here, and then wins over `toast.configure()`.\n\nEnables the one-liner:\n```ts\nEdToastStack.getOrCreate().create({ variant: 'success', title: 'Saved' });\n```"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "placement",
              "type": {
                "text": "Placement"
              },
              "default": "'top-end'",
              "description": "The placement of the stack relative to the viewport.\nLogical values (`-start` / `-end`) respect the document writing direction.",
              "fieldName": "placement",
              "parsedType": {
                "text": "'top-start' | 'top-center' | 'top-end' | 'bottom-start' | 'bottom-center' | 'bottom-end'"
              }
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "description": "The accessible label for the region, used as `aria-label`.\nWhen not set by the consumer, defaults to the localized string for \"Notifications\".",
              "fieldName": "label"
            },
            {
              "name": "hotkey",
              "type": {
                "text": "string"
              },
              "default": "'F8'",
              "description": "Keyboard shortcut (`KeyboardEvent.code`) that moves focus into the notifications region\nby focusing the newest open toast. Defaults to `'F8'` (the Radix convention).\nThe value is announced as part of the region's `aria-label` so screen-reader users\nknow the shortcut is available.",
              "fieldName": "hotkey"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "A fixed-position region that stacks and manages `<ed-toast-item>` notifications. Handles placement,\nordering, and convenience creation of toast items via the imperative `create()` API.",
          "jsDoc": "/**\n * @summary A fixed-position region that stacks and manages `<ed-toast-item>` notifications. Handles placement,\n *   ordering, and convenience creation of toast items via the imperative `create()` API.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/toast-stack\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-toast-item\n *\n * @slot - `<ed-toast-item>` items. Other content is allowed but discouraged.\n *\n * @csspart live-region-polite - Visually-hidden, persistent `aria-live=\"polite\"` region that\n *   receives announcements for toasts whose resolved `sensitivity` is `polite`.\n * @csspart live-region-assertive - Visually-hidden, persistent `aria-live=\"assertive\"` region\n *   that receives announcements for toasts whose resolved `sensitivity` is `assertive`.\n *\n * @cssproperty [--ed-toast-stack-gap=var(--ed-space-3)] - Gap between stacked toast items.\n * @cssproperty [--ed-toast-stack-offset-block=var(--ed-space-4)] - Distance from the top/bottom viewport edge.\n * @cssproperty [--ed-toast-stack-offset-inline=var(--ed-space-4)] - Distance from the inline-start/inline-end viewport\n *   edge. On a centered placement it is kept on both edges, so it also caps how wide the stack can grow.\n * @cssproperty [--ed-toast-stack-max-width=25rem] - Maximum width of the stack column; child toasts inherit this.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/toast-stack",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-toast-item"
          ],
          "tagName": "ed-toast-stack",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdToastStack",
            "module": "components/toast-stack/toast-stack.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-toast-stack",
          "declaration": {
            "name": "EdToastStack",
            "module": "components/toast-stack/toast-stack.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "utilities/toast.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "toast",
          "default": "Object.assign(toastFn, variantMethods, { configure })",
          "description": "Shows a toast notification: in the topmost open modal's built-in stack, else in the page's\n`<ed-toast-stack>` — a stack the consumer placed, else `<ed-app>`'s, else one appended to\n`document.body` on the first call.\n\nAccepts either a plain title string or a `ToastOptions` object.\nReturns `undefined` in SSR environments.\n\nPer-variant convenience methods (`toast.success`, `toast.danger`, etc.) set `variant`\nand accept the same string-or-options argument."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdToastVariant",
          "declaration": {
            "name": "EdToastVariant",
            "module": "utilities/toast.js"
          }
        },
        {
          "kind": "js",
          "name": "ToastOptions",
          "declaration": {
            "name": "ToastOptions",
            "module": "utilities/toast.js"
          }
        },
        {
          "kind": "js",
          "name": "ToastStackSettings",
          "declaration": {
            "name": "ToastStackSettings",
            "module": "utilities/toast.js"
          }
        },
        {
          "kind": "js",
          "name": "toast",
          "declaration": {
            "name": "toast",
            "module": "utilities/toast.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/after-collapse.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdAfterCollapseEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/after-collapse.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdAfterCollapseEvent",
          "declaration": {
            "name": "EdAfterCollapseEvent",
            "module": "events/after-collapse.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/after-expand.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdAfterExpandEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/after-expand.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdAfterExpandEvent",
          "declaration": {
            "name": "EdAfterExpandEvent",
            "module": "events/after-expand.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/alert-dialog-cancel.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdAlertDialogCancelEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/alert-dialog-cancel.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdAlertDialogCancelEvent",
          "declaration": {
            "name": "EdAlertDialogCancelEvent",
            "module": "events/alert-dialog-cancel.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/alert-dialog-confirm.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdAlertDialogConfirmEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/alert-dialog-confirm.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdAlertDialogConfirmEvent",
          "declaration": {
            "name": "EdAlertDialogConfirmEvent",
            "module": "events/alert-dialog-confirm.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/animation-cancel.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdAnimationCancelEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/animation-cancel.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdAnimationCancelEvent",
          "declaration": {
            "name": "EdAnimationCancelEvent",
            "module": "events/animation-cancel.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/animation-finish.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdAnimationFinishEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/animation-finish.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdAnimationFinishEvent",
          "declaration": {
            "name": "EdAnimationFinishEvent",
            "module": "events/animation-finish.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/animation-start.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdAnimationStartEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/animation-start.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdAnimationStartEvent",
          "declaration": {
            "name": "EdAnimationStartEvent",
            "module": "events/animation-start.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/calendar-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdCalendarChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdCalendarChangeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/calendar-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdCalendarChangeEvent",
          "declaration": {
            "name": "EdCalendarChangeEvent",
            "module": "events/calendar-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/calendar-page-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdCalendarPageChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdCalendarPageChangeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/calendar-page-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdCalendarPageChangeEvent",
          "declaration": {
            "name": "EdCalendarPageChangeEvent",
            "module": "events/calendar-page-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/clear.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdClearEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/clear.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdClearEvent",
          "declaration": {
            "name": "EdClearEvent",
            "module": "events/clear.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/collapse.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdCollapseEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/collapse.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdCollapseEvent",
          "declaration": {
            "name": "EdCollapseEvent",
            "module": "events/collapse.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/combobox-options-request.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Emitted by `<ed-combobox>` in server mode whenever it asks for options: when the list opens, when the\ntyping rests, and on `reload()`. A combobox with a `dataSource` hands the same request to it; one with\n`server` alone waits for the consumer to swap its `<ed-option>` children and set `loading` to false.",
          "name": "EdComboboxOptionsRequestEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdComboboxOptionsRequest"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/combobox-options-request.ts"
          },
          "jsDoc": "/**\n * Emitted by `<ed-combobox>` in server mode whenever it asks for options: when the list opens, when the\n * typing rests, and on `reload()`. A combobox with a `dataSource` hands the same request to it; one with\n * `server` alone waits for the consumer to swap its `<ed-option>` children and set `loading` to false.\n */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdComboboxOptionsRequestEvent",
          "declaration": {
            "name": "EdComboboxOptionsRequestEvent",
            "module": "events/combobox-options-request.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/combobox-options-error.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdComboboxOptionsErrorEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdComboboxOptionsErrorEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/combobox-options-error.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdComboboxOptionsErrorEvent",
          "declaration": {
            "name": "EdComboboxOptionsErrorEvent",
            "module": "events/combobox-options-error.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/content-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdContentChangeEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/content-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdContentChangeEvent",
          "declaration": {
            "name": "EdContentChangeEvent",
            "module": "events/content-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/copy.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdCopyEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdCopyEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/copy.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdCopyEvent",
          "declaration": {
            "name": "EdCopyEvent",
            "module": "events/copy.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/data-grid/data-grid.types.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "dataGridFeatures",
          "description": "The engine's feature set, and with it the shape of everything below.\n\n`tableFeatures()` carries a value **and** a type: the features registered here decide which options\nthe engine accepts, which state slices exist, and which functions can be named by string. A\nregistered function is bundled code, so this list is also the grid's bundle: a feature earns its\nplace here by something the grid offers."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "dataGridFeatures",
          "declaration": {
            "name": "dataGridFeatures",
            "module": "components/data-grid/data-grid.types.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/data-grid-cell-click.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDataGridCellClickEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdDataGridCellClickEventDetail<TData>"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/data-grid-cell-click.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdDataGridCellClickEvent",
          "declaration": {
            "name": "EdDataGridCellClickEvent",
            "module": "events/data-grid-cell-click.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/data-grid-cell-contextmenu.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDataGridCellContextmenuEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdDataGridCellContextmenuEventDetail<TData>"
              },
              "readonly": true,
              "default": "detail",
              "parsedType": {
                "text": "{ column: string, row: TData, value: unknown, rowIndex: number, originalEvent: { bubbles: boolean, cancelBubble: boolean, cancelable: boolean, composed: boolean, currentTarget: null | { addEventListener: {  }, dispatchEvent: {  }, removeEventListener: {  } }, defaultPrevented: boolean, eventPhase: number, isTrusted: boolean, returnValue: boolean, srcElement: null | { addEventListener: {  }, dispatchEvent: {  }, removeEventListener: {  } }, target: null | { addEventListener: {  }, dispatchEvent: {  }, removeEventListener: {  } }, timeStamp: number, type: string, composedPath: {  }, initEvent: {  }, preventDefault: {  }, stopImmediatePropagation: {  }, stopPropagation: {  }, NONE: 0, CAPTURING_PHASE: 1, AT_TARGET: 2, BUBBLING_PHASE: 3 } }"
              }
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/data-grid-cell-contextmenu.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdDataGridCellContextmenuEvent",
          "declaration": {
            "name": "EdDataGridCellContextmenuEvent",
            "module": "events/data-grid-cell-contextmenu.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/data-grid-column-move.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDataGridColumnMoveEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdDataGridColumnMoveEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/data-grid-column-move.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdDataGridColumnMoveEvent",
          "declaration": {
            "name": "EdDataGridColumnMoveEvent",
            "module": "events/data-grid-column-move.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/data-grid-column-pin.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDataGridColumnPinEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdDataGridColumnPinEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/data-grid-column-pin.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdDataGridColumnPinEvent",
          "declaration": {
            "name": "EdDataGridColumnPinEvent",
            "module": "events/data-grid-column-pin.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/data-grid-column-resize.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDataGridColumnResizeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdDataGridColumnResizeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/data-grid-column-resize.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdDataGridColumnResizeEvent",
          "declaration": {
            "name": "EdDataGridColumnResizeEvent",
            "module": "events/data-grid-column-resize.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/data-grid-column-visibility-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDataGridColumnVisibilityChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdDataGridColumnVisibilityChangeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/data-grid-column-visibility-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdDataGridColumnVisibilityChangeEvent",
          "declaration": {
            "name": "EdDataGridColumnVisibilityChangeEvent",
            "module": "events/data-grid-column-visibility-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/data-grid-data-error.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDataGridDataErrorEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdDataGridDataErrorEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/data-grid-data-error.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdDataGridDataErrorEvent",
          "declaration": {
            "name": "EdDataGridDataErrorEvent",
            "module": "events/data-grid-data-error.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/data-grid-data-request.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Detail payload for `ed-data-grid-data-request`, emitted by `<ed-data-grid>` in server mode when it\nneeds rows: first, and again whenever the sort, the filters, the search, the page or the page size\nchange, or `reload()` is called. The detail is the request, with an `AbortSignal` that aborts once a\nnewer request overtakes it. A grid with a `dataSource` hands the same request to it; one without\none waits for the consumer to set `data`, `total` and `loading` in answer.",
          "name": "EdDataGridDataRequestEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdDataGridDataRequest"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/data-grid-data-request.ts"
          },
          "jsDoc": "/**\n * Detail payload for `ed-data-grid-data-request`, emitted by `<ed-data-grid>` in server mode when it\n * needs rows: first, and again whenever the sort, the filters, the search, the page or the page size\n * change, or `reload()` is called. The detail is the request, with an `AbortSignal` that aborts once a\n * newer request overtakes it. A grid with a `dataSource` hands the same request to it; one without\n * one waits for the consumer to set `data`, `total` and `loading` in answer.\n */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdDataGridDataRequestEvent",
          "declaration": {
            "name": "EdDataGridDataRequestEvent",
            "module": "events/data-grid-data-request.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/data-grid-filter-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDataGridFilterChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdDataGridFilterChangeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/data-grid-filter-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdDataGridFilterChangeEvent",
          "declaration": {
            "name": "EdDataGridFilterChangeEvent",
            "module": "events/data-grid-filter-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/data-grid-page-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDataGridPageChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdDataGridPageChangeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/data-grid-page-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdDataGridPageChangeEvent",
          "declaration": {
            "name": "EdDataGridPageChangeEvent",
            "module": "events/data-grid-page-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/data-grid-row-expand.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDataGridRowExpandEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdDataGridRowExpandEventDetail<TData>"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/data-grid-row-expand.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdDataGridRowExpandEvent",
          "declaration": {
            "name": "EdDataGridRowExpandEvent",
            "module": "events/data-grid-row-expand.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/data-grid-row-collapse.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDataGridRowCollapseEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdDataGridRowCollapseEventDetail<TData>"
              },
              "readonly": true,
              "default": "detail",
              "parsedType": {
                "text": "{ row: TData }"
              }
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/data-grid-row-collapse.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdDataGridRowCollapseEvent",
          "declaration": {
            "name": "EdDataGridRowCollapseEvent",
            "module": "events/data-grid-row-collapse.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/data-grid-row-select.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDataGridRowSelectEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdDataGridRowSelectEventDetail<TData>"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/data-grid-row-select.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdDataGridRowSelectEvent",
          "declaration": {
            "name": "EdDataGridRowSelectEvent",
            "module": "events/data-grid-row-select.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/data-grid-sort-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDataGridSortChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdDataGridSortChangeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/data-grid-sort-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdDataGridSortChangeEvent",
          "declaration": {
            "name": "EdDataGridSortChangeEvent",
            "module": "events/data-grid-sort-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/data-grid-view-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDataGridViewChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdDataGridViewChangeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/data-grid-view-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdDataGridViewChangeEvent",
          "declaration": {
            "name": "EdDataGridViewChangeEvent",
            "module": "events/data-grid-view-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/dropdown-select.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDropdownSelectEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/dropdown-select.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdDropdownSelectEvent",
          "declaration": {
            "name": "EdDropdownSelectEvent",
            "module": "events/dropdown-select.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/page-editor/page-editor.types.js",
      "declarations": [],
      "exports": []
    },
    {
      "kind": "javascript-module",
      "path": "events/edit.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdEditEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdEditEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/edit.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdEditEvent",
          "declaration": {
            "name": "EdEditEvent",
            "module": "events/edit.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/expand.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdExpandEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/expand.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdExpandEvent",
          "declaration": {
            "name": "EdExpandEvent",
            "module": "events/expand.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/file-input-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdFileInputChangeEvent",
          "superclass": {
            "name": "CustomEvent",
            "module": "src/events/file-input-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdFileInputChangeEvent",
          "declaration": {
            "name": "EdFileInputChangeEvent",
            "module": "events/file-input-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/file-preview.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdFilePreviewEvent",
          "superclass": {
            "name": "CustomEvent",
            "module": "src/events/file-preview.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdFilePreviewEvent",
          "declaration": {
            "name": "EdFilePreviewEvent",
            "module": "events/file-preview.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/filter.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdFilterEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdFilterEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/filter.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdFilterEvent",
          "declaration": {
            "name": "EdFilterEvent",
            "module": "events/filter.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/hover.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdHoverEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdHoverEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/hover.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdHoverEvent",
          "declaration": {
            "name": "EdHoverEvent",
            "module": "events/hover.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/include-error.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdIncludeErrorEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdIncludeErrorDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/include-error.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdIncludeErrorEvent",
          "declaration": {
            "name": "EdIncludeErrorEvent",
            "module": "events/include-error.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/intersect.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Emitted when an element's intersection state changes.",
          "name": "EdIntersectEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdIntersectEventDetail | undefined"
              },
              "readonly": true,
              "default": "detail",
              "parsedType": {
                "text": "{ entry?: { boundingClientRect: { bottom: number, height: number, left: number, right: number, top: number, width: number, x: number, y: number, toJSON: {  } }, intersectionRatio: number, intersectionRect: { bottom: number, height: number, left: number, right: number, top: number, width: number, x: number, y: number, toJSON: {  } }, isIntersecting: boolean, rootBounds: null | { bottom: number, height: number, left: number, right: number, top: number, width: number, x: number, y: number, toJSON: {  } }, target: Element, time: number } } | undefined"
              }
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/intersect.ts"
          },
          "jsDoc": "/** Emitted when an element's intersection state changes. */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdIntersectEvent",
          "declaration": {
            "name": "EdIntersectEvent",
            "module": "events/intersect.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/lazy-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdLazyChangeEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/lazy-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdLazyChangeEvent",
          "declaration": {
            "name": "EdLazyChangeEvent",
            "module": "events/lazy-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/lazy-load.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdLazyLoadEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/lazy-load.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdLazyLoadEvent",
          "declaration": {
            "name": "EdLazyLoadEvent",
            "module": "events/lazy-load.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/validators/required-validator.js",
      "declarations": [
        {
          "kind": "function",
          "name": "RequiredValidator",
          "return": {
            "type": {
              "text": "Validator"
            }
          },
          "parameters": [
            {
              "name": "options",
              "default": "{}",
              "type": {
                "text": "RequiredValidatorOptions"
              }
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "RequiredValidator",
          "declaration": {
            "name": "RequiredValidator",
            "module": "internal/validators/required-validator.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/checkbox/checkbox.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdCheckbox",
          "cssProperties": [
            {
              "description": "The fill of the control box when checked or indeterminate, and its border color while focused. The glyph is drawn in the form control background color — except with `alternative`, where this property colors the glyph itself.",
              "name": "--ed-checkbox-checked-icon-color"
            },
            {
              "description": "The size of the visible control box, and the host's line height with it. The box around it follows --ed-form-control-toggle-size, so raising this alone can push the box past the label.",
              "name": "--ed-checkbox-checked-icon-size"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The square container that wraps the checkbox's checked state.",
              "name": "control"
            },
            {
              "description": "The icon element inside the control box, carrying the box fill and the glyph.",
              "name": "icon"
            },
            {
              "description": "The checked icon, a `<ed-icon>` element.",
              "name": "checked-icon"
            },
            {
              "description": "The indeterminate icon, a `<ed-icon>` element.",
              "name": "indeterminate-icon"
            },
            {
              "description": "The container that wraps the checkbox's label.",
              "name": "label"
            },
            {
              "description": "The state message: an error, a warning, or the AI note.",
              "name": "message"
            },
            {
              "description": "The hint's wrapper.",
              "name": "hint"
            }
          ],
          "slots": [
            {
              "description": "The checkbox's label.",
              "name": ""
            },
            {
              "description": "Text that describes how to use the checkbox. Alternatively, you can use the `hint` attribute.",
              "name": "hint"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "validators",
              "type": {
                "text": "Validator[]"
              },
              "default": "[]",
              "static": true,
              "description": "Validators are static because they have `observedAttributes`, essentially attributes to \"watch\"\nfor changes. Whenever these attributes change, we want to be notified and update the validator.",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, '[default]')"
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "text": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "parsedType": {
                "text": "HTMLElement & { value: unknown } | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "attribute": "title"
            },
            {
              "kind": "field",
              "name": "ariaLabel",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The checkbox's accessible name for when no visible label is slotted (e.g. table selection\ncells). Mirrored onto the internal input, where the checkbox role lives — an aria-label\nleft on the host alone would sit on a role-less element and be ignored by assistive tech.",
              "attribute": "aria-label",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "_value",
              "type": {
                "text": "string | undefined"
              },
              "privacy": "private",
              "description": "`undefined` marks \"never written\", which is what makes the `'on'` default apply; it is never\nobservable from outside, because `value` is always a string. A native checkbox does the same behind\nan always-string IDL attribute: an absent `value` content attribute reads as `'on'`."
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "Removing the attribute has to be told apart from assigning `null`, and Lit hands the setter\n`null` for both. The converter marks the attribute path with a sentinel, so removing it restores\nthe `'on'` default the way a native checkbox does, while the property path keeps its own rule.",
              "attribute": "value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the checkbox readonly.",
              "attribute": "readonly",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "indeterminate",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "indeterminate",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "alternative",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables alternative styling",
              "attribute": "alternative",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "_checked",
              "type": {
                "text": "boolean | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | false | true"
              }
            },
            {
              "kind": "field",
              "name": "checked",
              "description": "Draws the checkbox in a checked state."
            },
            {
              "kind": "field",
              "name": "defaultChecked",
              "type": {
                "text": "boolean"
              },
              "description": "The default value of the form control. Primarily used for resetting the form control.",
              "attribute": "checked",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the checkbox a required field.",
              "attribute": "required",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleInput",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleValueOrCheckedChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "formStateRestoreCallback",
              "parameters": [
                {
                  "name": "state",
                  "type": {
                    "text": "string | File | FormData | null"
                  }
                },
                {
                  "name": "reason",
                  "type": {
                    "text": "'autocomplete' | 'restore'"
                  }
                }
              ],
              "description": "The restorable state is the checkedness, because that is what the user entered — `value` comes\nback from the markup on its own, and the base class would otherwise write the restored state\nthere and leave the checkedness untouched. A native checkbox restores exactly the checkedness."
            },
            {
              "kind": "method",
              "name": "formResetCallback"
            },
            {
              "kind": "method",
              "name": "click",
              "description": "Simulates a click on the checkbox."
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the checkbox."
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the checkbox."
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<EdFormAssociatedElement['setValue']>"
                  }
                }
              ],
              "description": "A checkbox submits its value only while it is checked, so the guard belongs where the value is\nwritten rather than at each caller. The base class re-runs `setValue` whenever `disabled`\nchanges — right for a text field, whose value stands on its own — and a checkbox enabled while\nunchecked would otherwise put its value into the form with nothing behind it.\n\nShaped after `ed-radio-group`, which guards the same way: through `super` rather than\n`internals.setFormValue`, so anything the base adds to that seam still applies. The restore\nstate is decided here rather than taken from the caller — see below.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "attribute": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "attribute": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "attribute": "ai",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "attribute": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "attribute": "name",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#fieldsetDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set by `formDisabledCallback`, i.e. an ancestor `<fieldset>`. Never written by a consumer.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#ownDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The disabled state this element was given directly, via its property or its attribute.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "attribute": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOn",
              "type": {
                "text": "string[]"
              },
              "default": "['input']",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOnMode",
              "type": {
                "text": "'combined' | 'separated' | string"
              },
              "default": "'combined'",
              "parsedType": {
                "text": "string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "valueHasChanged",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasInteracted",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_customValidityMessage",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_isCheckingValidity",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set while `checkValidity()` is executing so the `invalid` event handler can distinguish\na programmatic check (no UI side-effects per spec) from `reportValidity()` / native form\nsubmission (which should surface the error UI and focus the first invalid control).",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emittedEvents",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "states",
              "type": {
                "text": "CustomStateSet"
              },
              "parsedType": {
                "text": "any"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleSubmitOnEnter",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleClearOnEscape",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emitInvalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleInteraction",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "labels",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getForm",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "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": {
                "text": "HTMLFormElement | null"
              },
              "parsedType": {
                "text": "null | HTMLFormElement"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validity",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "willValidate",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationMessage",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "checkValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Override this to change where constraint validation popups are anchored.",
              "readonly": true,
              "parsedType": {
                "text": "HTMLElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValidity",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setValidity>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "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.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "allValidators",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "resetValidity",
              "description": "Reset validity is a way of removing manual custom errors and native validation.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "name": "change",
              "type": {
                "text": "Event"
              },
              "description": "Emitted when the checked state changes.",
              "reactName": "onChange",
              "eventName": "ChangeEvent"
            },
            {
              "description": "Emitted when the checkbox loses focus.",
              "name": "blur",
              "reactName": "onBlur",
              "eventName": "BlurEvent"
            },
            {
              "description": "Emitted when the checkbox gains focus.",
              "name": "focus",
              "reactName": "onFocus",
              "eventName": "FocusEvent"
            },
            {
              "description": "Emitted when the checkbox receives input.",
              "name": "input",
              "reactName": "onInput",
              "eventName": "InputEvent"
            },
            {
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied.",
              "name": "ed-invalid",
              "reactName": "onEdInvalid",
              "eventName": "EdInvalidEvent"
            }
          ],
          "attributes": [
            {
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "fieldName": "title"
            },
            {
              "name": "aria-label",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The checkbox's accessible name for when no visible label is slotted (e.g. table selection\ncells). Mirrored onto the internal input, where the checkbox role lives — an aria-label\nleft on the host alone would sit on a role-less element and be ignored by assistive tech.",
              "fieldName": "ariaLabel",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "Removing the attribute has to be told apart from assigning `null`, and Lit hands the setter\n`null` for both. The converter marks the attribute path with a sentinel, so removing it restores\nthe `'on'` default the way a native checkbox does, while the property path keeps its own rule.",
              "fieldName": "value"
            },
            {
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the checkbox readonly.",
              "fieldName": "readonly"
            },
            {
              "name": "indeterminate",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "indeterminate"
            },
            {
              "name": "alternative",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables alternative styling",
              "fieldName": "alternative"
            },
            {
              "name": "checked",
              "type": {
                "text": "boolean"
              },
              "description": "The default value of the form control. Primarily used for resetting the form control.",
              "fieldName": "defaultChecked"
            },
            {
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the checkbox a required field.",
              "fieldName": "required"
            },
            {
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "fieldName": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "fieldName": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "fieldName": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "fieldName": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "fieldName": "name",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "fieldName": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "Applied when the checkbox is checked.",
              "name": "checked"
            },
            {
              "description": "Applied when the checkbox is disabled.",
              "name": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Applied when the checkbox is in an indeterminate state.",
              "name": "indeterminate"
            },
            {
              "description": "Applied when the checkbox carries the warning hint state.",
              "name": "warning",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Applied when the checkbox carries the AI hint state.",
              "name": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Applied when the checkbox carries the error hint state.",
              "name": "error",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is required.",
              "name": "required",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is not required.",
              "name": "optional",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value fails constraint validation, whether or not the user has touched the control yet.",
              "name": "invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value passes constraint validation.",
              "name": "valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Invalid, and the user has interacted with the control. This is the one to style for an error: it behaves like the platform's `:user-invalid`, so an untouched field is not marked wrong before the user has had a chance to fill it in.",
              "name": "user-invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Valid, and the user has interacted with the control.",
              "name": "user-valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The user has interacted with the control.",
              "name": "dirty",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdFormAssociatedElement",
            "module": "/src/internal/ed-form-associated-element.js"
          },
          "summary": "Checkboxes allow the user to toggle an option on or off.",
          "jsDoc": "/**\n * @summary Checkboxes allow the user to toggle an option on or off.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/checkbox\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…').getByRole('checkbox')\n *\n * @dependency ed-icon\n *\n * @slot - The checkbox's label.\n * @slot hint - Text that describes how to use the checkbox. Alternatively, you can use the `hint` attribute.\n *\n * @event blur - Emitted when the checkbox loses focus.\n * @event change - Emitted when the checked state changes.\n * @event focus - Emitted when the checkbox gains focus.\n * @event input - Emitted when the checkbox receives input.\n * @event ed-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n *\n * @csspart base - The component's base wrapper.\n * @csspart control - The square container that wraps the checkbox's checked state.\n * @csspart icon - The icon element inside the control box, carrying the box fill and the glyph.\n * @csspart checked-icon - The checked icon, a `<ed-icon>` element.\n * @csspart indeterminate-icon - The indeterminate icon, a `<ed-icon>` element.\n * @csspart label - The container that wraps the checkbox's label.\n * @csspart message - The state message: an error, a warning, or the AI note.\n * @csspart hint - The hint's wrapper.\n *\n * @cssproperty --ed-checkbox-checked-icon-color - The fill of the control box when checked or indeterminate,\n *  and its border color while focused. The glyph is drawn in the form control background color — except with\n *  `alternative`, where this property colors the glyph itself.\n * @cssproperty --ed-checkbox-checked-icon-size - The size of the visible control box, and the host's line height\n *  with it. The box around it follows --ed-form-control-toggle-size, so raising this alone can push the box past\n *  the label.\n *\n * @cssstate checked - Applied when the checkbox is checked.\n * @cssstate disabled - Applied when the checkbox is disabled.\n * @cssstate indeterminate - Applied when the checkbox is in an indeterminate state.\n * @cssstate warning - Applied when the checkbox carries the warning hint state.\n * @cssstate ai - Applied when the checkbox carries the AI hint state.\n * @cssstate error - Applied when the checkbox carries the error hint state.\n *\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/checkbox",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('checkbox')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-checkbox",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdCheckbox",
            "module": "components/checkbox/checkbox.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-checkbox",
          "declaration": {
            "name": "EdCheckbox",
            "module": "components/checkbox/checkbox.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/list-group/list-group.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdListGroup",
          "cssParts": [
            {
              "description": "The head.",
              "name": "header"
            },
            {
              "description": "The button the head becomes when the group is collapsible.",
              "name": "toggle"
            },
            {
              "description": "The chevron in the toggle.",
              "name": "toggle-icon"
            },
            {
              "description": "The wrapper of the name.",
              "name": "label"
            },
            {
              "description": "The number of entries.",
              "name": "count"
            },
            {
              "description": "The element carrying the nested list role.",
              "name": "items"
            }
          ],
          "slots": [
            {
              "description": "`<ed-list-item>` elements.",
              "name": ""
            },
            {
              "description": "The group's name. Alternatively, use the `label` attribute.",
              "name": "label"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "count",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The group's name. For markup, use the `label` slot instead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "collapsible",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Turns the head into a button that expands and collapses the group.",
              "attribute": "collapsible",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "expanded",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether a collapsible group shows its entries. Ignored without `collapsible`, where the entries always show.",
              "attribute": "expanded",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "vetoed",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set when ed-expand or ed-collapse was cancelled in this update, so no after-event follows."
            },
            {
              "kind": "method",
              "name": "togglesVisibly",
              "privacy": "private",
              "parameters": [
                {
                  "name": "changed",
                  "type": {
                    "text": "PropertyValues<this>"
                  }
                }
              ],
              "description": "Whether this update expands or collapses the group in a way anyone can see. Without\n`collapsible` the entries always show, so `expanded` changes nothing and nothing fires. The old\nvalue is undefined on the first update: the initial state is not a change anyone asked about."
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleToggleClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "Before a collapsible group expands. Cancelable; calling `preventDefault()` keeps it collapsed.",
              "name": "ed-expand",
              "reactName": "onEdExpand",
              "eventName": "EdExpandEvent"
            },
            {
              "description": "After the group expanded.",
              "name": "ed-after-expand",
              "reactName": "onEdAfterExpand",
              "eventName": "EdAfterExpandEvent"
            },
            {
              "description": "Before a collapsible group collapses. Cancelable; calling `preventDefault()` keeps it expanded.",
              "name": "ed-collapse",
              "reactName": "onEdCollapse",
              "eventName": "EdCollapseEvent"
            },
            {
              "description": "After the group collapsed.",
              "name": "ed-after-collapse",
              "reactName": "onEdAfterCollapse",
              "eventName": "EdAfterCollapseEvent"
            }
          ],
          "attributes": [
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The group's name. For markup, use the `label` slot instead.",
              "fieldName": "label"
            },
            {
              "name": "collapsible",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Turns the head into a button that expands and collapses the group.",
              "fieldName": "collapsible"
            },
            {
              "name": "expanded",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether a collapsible group shows its entries. Ignored without `collapsible`, where the entries always show.",
              "fieldName": "expanded"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "A labelled group of entries inside an `<ed-list>`, whose head stays in view while the group scrolls.",
          "jsDoc": "/**\n * @summary A labelled group of entries inside an `<ed-list>`, whose head stays in view while the group scrolls.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/list-group\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-icon\n *\n * @slot - `<ed-list-item>` elements.\n * @slot label - The group's name. Alternatively, use the `label` attribute.\n *\n * @event ed-expand - Before a collapsible group expands. Cancelable; calling `preventDefault()` keeps it collapsed.\n * @event ed-after-expand - After the group expanded.\n * @event ed-collapse - Before a collapsible group collapses. Cancelable; calling `preventDefault()` keeps it\n *  expanded.\n * @event ed-after-collapse - After the group collapsed.\n *\n * @csspart header - The head.\n * @csspart toggle - The button the head becomes when the group is collapsible.\n * @csspart toggle-icon - The chevron in the toggle.\n * @csspart label - The wrapper of the name.\n * @csspart count - The number of entries.\n * @csspart items - The element carrying the nested list role.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/list-group",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-list-group",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdListGroup",
            "module": "components/list-group/list-group.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-list-group",
          "declaration": {
            "name": "EdListGroup",
            "module": "components/list-group/list-group.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/list/list.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdList",
          "cssParts": [
            {
              "description": "The frame.",
              "name": "base"
            },
            {
              "description": "The head.",
              "name": "header"
            },
            {
              "description": "The select-all box in a selectable list.",
              "name": "select-all"
            },
            {
              "description": "The wrapper of the title and the count line in a selectable list.",
              "name": "heading"
            },
            {
              "description": "The wrapper of the title.",
              "name": "label"
            },
            {
              "description": "The count line of a selectable list, \"0 of n selected\" included.",
              "name": "count"
            },
            {
              "description": "The wrapper of the `actions` slot.",
              "name": "actions"
            },
            {
              "description": "The element carrying the list role. It scrolls while the head stays, once the list's height is limited.",
              "name": "items"
            },
            {
              "description": "Where the list announces the count after a change. Visually hidden.",
              "name": "live-region"
            }
          ],
          "slots": [
            {
              "description": "`<ed-list-item>` and `<ed-list-group>` elements.",
              "name": ""
            },
            {
              "description": "The title, which also names the list. Slot a heading when it is a section heading. Alternatively, use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "Buttons in the head; in a selectable list, the bulk actions.",
              "name": "actions"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'label', 'actions')"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "liveRegion",
              "type": {
                "text": "HTMLElement | null"
              },
              "privacy": "private",
              "parsedType": {
                "text": "null | HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "announcementTimers",
              "privacy": "private",
              "readonly": true,
              "default": "new Set<ReturnType<typeof setTimeout>>()"
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The title, which also names the list. For a heading element, use the `label` slot instead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "appearance",
              "type": {
                "text": "'outlined' | 'plain'"
              },
              "default": "'outlined'",
              "description": "`outlined` draws the frame; `plain` has none, for a list inside a card, drawer or side panel.",
              "attribute": "appearance",
              "reflects": true,
              "parsedType": {
                "text": "'outlined' | 'plain'"
              }
            },
            {
              "kind": "field",
              "name": "selectable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Gives every entry a checkbox and the head a select-all box and a count.",
              "attribute": "selectable",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "selectedItems",
              "type": {
                "text": "EdListItem[]"
              },
              "description": "The selected, enabled entries, in document order — hidden ones included: a filter that hides an\nentry leaves its selection alone.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "hiddenObserver",
              "type": {
                "text": "MutationObserver | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "An entry's or a group's `hidden` changes nothing the list renders from, so the count and the\nselect-all box would go stale without being told.",
              "parsedType": {
                "text": "null | { disconnect: {  }, observe: {  }, takeRecords: {  } }"
              }
            },
            {
              "kind": "method",
              "name": "items",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdListItem[]"
                }
              }
            },
            {
              "kind": "method",
              "name": "selectableItems",
              "privacy": "private",
              "description": "Entries that can be selected now: not disabled, and neither hidden themselves nor in a hidden\ngroup. The count line counts these; a hidden entry keeps its selection and counts again once it\nis shown."
            },
            {
              "kind": "method",
              "name": "countTerm",
              "privacy": "private",
              "description": "\"n of m selected\", over the entries that can be selected now."
            },
            {
              "kind": "method",
              "name": "openItems",
              "privacy": "private",
              "description": "Selectable entries outside collapsed groups — what select-all acts on."
            },
            {
              "kind": "method",
              "name": "commitUserSelection",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleSelectAllInput",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleSelectAllChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "announce",
              "privacy": "private",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Hands a reader one sentence. A node put in rather than text swapped out, as on ed-data-grid: a\nregion is read when its content changes, and \"1 of 6 selected\" twice in a row is no change."
            },
            {
              "kind": "method",
              "name": "renderLabel",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderHeaderStart",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ selection: EdListItem[] }"
              },
              "description": "After the user changed the selection, through an entry or the select-all box. `selection` holds every selected, enabled entry, hidden ones included. Not fired when `selected` or `hidden` is set in code.",
              "name": "ed-list-selection-change",
              "reactName": "onEdListSelectionChange",
              "eventName": "EdListSelectionChangeEvent"
            }
          ],
          "attributes": [
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The title, which also names the list. For a heading element, use the `label` slot instead.",
              "fieldName": "label"
            },
            {
              "name": "appearance",
              "type": {
                "text": "'outlined' | 'plain'"
              },
              "default": "'outlined'",
              "description": "`outlined` draws the frame; `plain` has none, for a list inside a card, drawer or side panel.",
              "fieldName": "appearance",
              "parsedType": {
                "text": "'outlined' | 'plain'"
              }
            },
            {
              "name": "selectable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Gives every entry a checkbox and the head a select-all box and a count.",
              "fieldName": "selectable"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "A list of entries that are read rather than compared, with an optional title and actions.",
          "jsDoc": "/**\n * @summary A list of entries that are read rather than compared, with an optional title and actions.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/list\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-checkbox\n *\n * @slot - `<ed-list-item>` and `<ed-list-group>` elements.\n * @slot label - The title, which also names the list. Slot a heading when it is a section heading. Alternatively, use the `label` attribute.\n * @slot actions - Buttons in the head; in a selectable list, the bulk actions.\n *\n * @event {{ selection: EdListItem[] }} ed-list-selection-change - After the user changed the selection, through an entry or the select-all box. `selection` holds every selected, enabled entry, hidden ones included. Not fired when `selected` or `hidden` is set in code.\n *\n * @csspart base - The frame.\n * @csspart header - The head.\n * @csspart select-all - The select-all box in a selectable list.\n * @csspart heading - The wrapper of the title and the count line in a selectable list.\n * @csspart label - The wrapper of the title.\n * @csspart count - The count line of a selectable list, \"0 of n selected\" included.\n * @csspart actions - The wrapper of the `actions` slot.\n * @csspart items - The element carrying the list role. It scrolls while the head stays, once the list's height is limited.\n * @csspart live-region - Where the list announces the count after a change. Visually hidden.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/list",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-checkbox"
          ],
          "tagName": "ed-list",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdList",
            "module": "components/list/list.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-list",
          "declaration": {
            "name": "EdList",
            "module": "components/list/list.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/list-item/list-item.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdListItem",
          "cssParts": [
            {
              "description": "The row.",
              "name": "base"
            },
            {
              "description": "The entry's checkbox in a selectable list.",
              "name": "checkbox"
            },
            {
              "description": "The click surface: an `<a>` with `href`, a `<div>` without.",
              "name": "content"
            },
            {
              "description": "The wrapper of the `start` slot.",
              "name": "start"
            },
            {
              "description": "The wrapper of the primary and secondary line.",
              "name": "text"
            },
            {
              "description": "The wrapper of the primary line.",
              "name": "label"
            },
            {
              "description": "The wrapper of the secondary line.",
              "name": "description"
            },
            {
              "description": "The wrapper of the `end` slot.",
              "name": "end"
            },
            {
              "description": "The wrapper of the navigation icon.",
              "name": "navigation-icon"
            },
            {
              "description": "The wrapper of the `actions` slot.",
              "name": "actions"
            }
          ],
          "slots": [
            {
              "description": "The primary line.",
              "name": ""
            },
            {
              "description": "An icon or avatar before the text. Part of the click surface.",
              "name": "start"
            },
            {
              "description": "The secondary line. Part of the click surface.",
              "name": "description"
            },
            {
              "description": "Information after the text, such as a badge, an amount or a date. Part of the click surface — put nothing interactive here.",
              "name": "end"
            },
            {
              "description": "Buttons or a dropdown for this entry, beside the click surface. Not rendered when the item has an `href`.",
              "name": "actions"
            },
            {
              "description": "The sign that the entry leads on. Defaults to the `next` icon; only rendered with `href`.",
              "name": "navigation-icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'start', 'description', 'end', 'actions')"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "href",
              "type": {
                "text": "string | undefined"
              },
              "description": "The URL the entry leads to. With it, the whole entry is a link and `actions` is not rendered.",
              "attribute": "href"
            },
            {
              "kind": "field",
              "name": "target",
              "type": {
                "text": "string | undefined"
              },
              "description": "Where to open the link. Only used with `href`.",
              "attribute": "target"
            },
            {
              "kind": "field",
              "name": "rel",
              "type": {
                "text": "string | undefined"
              },
              "description": "The link's `rel`. Only used with `href`; unset by default, like a plain `<a>`.",
              "attribute": "rel"
            },
            {
              "kind": "field",
              "name": "download",
              "type": {
                "text": "string | undefined"
              },
              "description": "Downloads the link's target instead of navigating, under this file name. Only used with `href`.",
              "attribute": "download"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables an entry that leads somewhere or can be selected: it does not navigate, cannot be\nselected, and its link or checkbox leaves the tab order. Its actions keep their own state — a\nstatic entry has nothing of its own to disable, so an action is disabled on the slotted action\nitself, in a selectable list too.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "selected",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the entry is selected. Shown only in a selectable list.",
              "attribute": "selected",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Identifies the entry in a selection.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "primaryText",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "description": "The primary line's text, which names the checkbox."
            },
            {
              "kind": "field",
              "name": "list",
              "type": {
                "text": "EdList | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | default"
              }
            },
            {
              "kind": "field",
              "name": "textObserver",
              "type": {
                "text": "MutationObserver | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Text that changes in place — React and Lit update an existing text node — fires no slotchange,\nso the checkbox's name follows the primary line through this observer.",
              "parsedType": {
                "text": "null | { disconnect: {  }, observe: {  }, takeRecords: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "warnedAboutActions",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "warnedAboutHref",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "listIsKnown",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "warnAboutConflicts",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "requestListUpdate",
              "privacy": "private",
              "description": "The list may not be upgraded yet: the autoloader defines elements in no fixed order, so an item\ncan connect inside an ed-list that has no Lit methods. It reads as not selectable until then, and\nthe list's own first update asks its items to render again."
            },
            {
              "kind": "field",
              "name": "inSelectableList",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "isLink",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "handleDefaultSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "toggleByUser",
              "privacy": "private",
              "parameters": [
                {
                  "name": "selected",
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleCheckboxChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleCheckboxInput",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleContentClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderContent",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "href",
              "type": {
                "text": "string | undefined"
              },
              "description": "The URL the entry leads to. With it, the whole entry is a link and `actions` is not rendered.",
              "fieldName": "href"
            },
            {
              "name": "target",
              "type": {
                "text": "string | undefined"
              },
              "description": "Where to open the link. Only used with `href`.",
              "fieldName": "target"
            },
            {
              "name": "rel",
              "type": {
                "text": "string | undefined"
              },
              "description": "The link's `rel`. Only used with `href`; unset by default, like a plain `<a>`.",
              "fieldName": "rel"
            },
            {
              "name": "download",
              "type": {
                "text": "string | undefined"
              },
              "description": "Downloads the link's target instead of navigating, under this file name. Only used with `href`.",
              "fieldName": "download"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables an entry that leads somewhere or can be selected: it does not navigate, cannot be\nselected, and its link or checkbox leaves the tab order. Its actions keep their own state — a\nstatic entry has nothing of its own to disable, so an action is disabled on the slotted action\nitself, in a selectable list too.",
              "fieldName": "disabled"
            },
            {
              "name": "selected",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the entry is selected. Shown only in a selectable list.",
              "fieldName": "selected"
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Identifies the entry in a selection.",
              "fieldName": "value"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "The item has an `href`, is not disabled and is not in a selectable list.",
              "name": "navigating"
            },
            {
              "description": "The item is disabled and leads somewhere or sits in a selectable list.",
              "name": "disabled"
            },
            {
              "description": "The item is in a selectable list.",
              "name": "selectable"
            },
            {
              "description": "The item is selected in a selectable list.",
              "name": "selected"
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "One entry of an `<ed-list>`: static, or leading to its record when it has an `href`.",
          "jsDoc": "/**\n * @summary One entry of an `<ed-list>`: static, or leading to its record when it has an `href`.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/list-item\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-checkbox\n * @dependency ed-icon\n *\n * @slot - The primary line.\n * @slot start - An icon or avatar before the text. Part of the click surface.\n * @slot description - The secondary line. Part of the click surface.\n * @slot end - Information after the text, such as a badge, an amount or a date. Part of the click surface — put nothing interactive here.\n * @slot actions - Buttons or a dropdown for this entry, beside the click surface. Not rendered when the item has an `href`.\n * @slot navigation-icon - The sign that the entry leads on. Defaults to the `next` icon; only rendered with `href`.\n *\n * @csspart base - The row.\n * @csspart checkbox - The entry's checkbox in a selectable list.\n * @csspart content - The click surface: an `<a>` with `href`, a `<div>` without.\n * @csspart start - The wrapper of the `start` slot.\n * @csspart text - The wrapper of the primary and secondary line.\n * @csspart label - The wrapper of the primary line.\n * @csspart description - The wrapper of the secondary line.\n * @csspart end - The wrapper of the `end` slot.\n * @csspart navigation-icon - The wrapper of the navigation icon.\n * @csspart actions - The wrapper of the `actions` slot.\n *\n * @cssstate navigating - The item has an `href`, is not disabled and is not in a selectable list.\n * @cssstate disabled - The item is disabled and leads somewhere or sits in a selectable list.\n * @cssstate selectable - The item is in a selectable list.\n * @cssstate selected - The item is selected in a selectable list.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/list-item",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-checkbox",
            "ed-icon"
          ],
          "tagName": "ed-list-item",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdListItem",
            "module": "components/list-item/list-item.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-list-item",
          "declaration": {
            "name": "EdListItem",
            "module": "components/list-item/list-item.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/list-selection-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdListSelectionChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdListSelectionChangeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/list-selection-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdListSelectionChangeEvent",
          "declaration": {
            "name": "EdListSelectionChangeEvent",
            "module": "events/list-selection-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/mutation.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Emitted when a mutation is observed in a watched element.",
          "name": "EdMutationEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdMutationEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/mutation.ts"
          },
          "jsDoc": "/** Emitted when a mutation is observed in a watched element. */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdMutationEvent",
          "declaration": {
            "name": "EdMutationEvent",
            "module": "events/mutation.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/expandable-item.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Abstract base for hierarchical, expandable list items (`ed-tree-item`, `ed-side-menu-item`).\n\nOwns ONLY the structure shared by every expandable item: expand/collapse state and animation\n(via `internal/animate`), nesting detection, indentation depth, the children container, and the\nleaf computation. It deliberately does NOT own `role`, `tabindex`, focus, selection, or keyboard\nbehavior — those are semantics each concrete subclass layers on top (a tree item is a roving\n`role=treeitem`; a side-menu item is a disclosure-nav link). It is never registered as a custom\nelement and has no docs page.\n\nSubclass extension points:\n- `computeIsLeaf()` — override to factor in subclass-specific child sources (e.g. tree-item's `lazy`).\n- `handleExpandAnimation()` — override the body (NOT the `@watch`) to insert extra branches; the\n  decorator stays here so the watcher registers exactly once (re-decorating an override would\n  double-wrap `update` and fire it twice — see `internal/watch.ts`).\n- `handleChildrenSlotChange()` — call `super` after subclass-specific work (e.g. clearing `loading`).",
          "name": "EdExpandableItem",
          "members": [
            {
              "kind": "method",
              "name": "isExpandableItem",
              "static": true,
              "return": {
                "type": {
                  "text": "node is EdExpandableItem"
                }
              },
              "parameters": [
                {
                  "name": "node",
                  "type": {
                    "text": "Node"
                  }
                }
              ],
              "description": "Determines whether a node is an expandable item — replaces brittle `role=`/tag sniffing."
            },
            {
              "kind": "field",
              "name": "isLeaf",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "expanded",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Expands the item.",
              "attribute": "expanded",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the item.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "childrenSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "childrenContainer",
              "type": {
                "text": "HTMLDivElement"
              }
            },
            {
              "kind": "method",
              "name": "isNestedItem",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              }
            },
            {
              "kind": "method",
              "name": "updateIndentation",
              "privacy": "private",
              "description": "Counts the nesting depth and sets the private --_indent property on the host for indentation."
            },
            {
              "kind": "method",
              "name": "getChildrenItems",
              "return": {
                "type": {
                  "text": "EdExpandableItem[]"
                }
              },
              "parameters": [
                {
                  "name": "{ includeDisabled = true }",
                  "default": "{}",
                  "type": {
                    "text": "{ includeDisabled?: boolean }"
                  }
                }
              ],
              "description": "Gets all the nested expandable items in this node."
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [],
          "attributes": [
            {
              "name": "expanded",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Expands the item.",
              "fieldName": "expanded"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the item.",
              "fieldName": "disabled"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "jsDoc": "/**\n * Abstract base for hierarchical, expandable list items (`ed-tree-item`, `ed-side-menu-item`).\n *\n * Owns ONLY the structure shared by every expandable item: expand/collapse state and animation\n * (via `internal/animate`), nesting detection, indentation depth, the children container, and the\n * leaf computation. It deliberately does NOT own `role`, `tabindex`, focus, selection, or keyboard\n * behavior — those are semantics each concrete subclass layers on top (a tree item is a roving\n * `role=treeitem`; a side-menu item is a disclosure-nav link). It is never registered as a custom\n * element and has no docs page.\n *\n * Subclass extension points:\n * - `computeIsLeaf()` — override to factor in subclass-specific child sources (e.g. tree-item's `lazy`).\n * - `handleExpandAnimation()` — override the body (NOT the `@watch`) to insert extra branches; the\n *   decorator stays here so the watcher registers exactly once (re-decorating an override would\n *   double-wrap `update` and fire it twice — see `internal/watch.ts`).\n * - `handleChildrenSlotChange()` — call `super` after subclass-specific work (e.g. clearing `loading`).\n */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdExpandableItem",
            "module": "internal/expandable-item.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/get-text.js",
      "declarations": [
        {
          "kind": "function",
          "name": "getText",
          "return": {
            "type": {
              "text": ""
            }
          },
          "parameters": [
            {
              "name": "root",
              "type": {
                "text": "Node | Iterable<Node>"
              },
              "description": "One or more nodes to get text content from."
            },
            {
              "name": "depth",
              "default": "0",
              "description": "By default, will just return element.textContent for any child elements instead of calling the function recursively.\n  Set to a positive integer to recurse that many levels. Generally a tradeoff between performance and accuracy."
            }
          ],
          "description": "Like textContent, but better:\n- Uses assignedNodes to get text content from slots (and falls back to content if nothing is slotted)\n- Ignores script and style elements"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "getText",
            "module": "internal/get-text.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/reposition.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdRepositionEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/reposition.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdRepositionEvent",
          "declaration": {
            "name": "EdRepositionEvent",
            "module": "events/reposition.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/popup/popup.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdPopup",
          "cssProperties": [
            {
              "description": "The size of the arrow. Note that an arrow won't be shown unless the `arrow` attribute is used.",
              "name": "--ed-popup-arrow-size",
              "default": "6px"
            },
            {
              "description": "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.",
              "name": "--ed-popup-border-width"
            },
            {
              "description": "The color of the arrow.",
              "name": "--ed-popup-arrow-color",
              "default": "black"
            },
            {
              "description": "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`.",
              "name": "--ed-popup-auto-size-available-width"
            },
            {
              "description": "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`.",
              "name": "--ed-popup-auto-size-available-height"
            },
            {
              "description": "The show duration to use when applying built-in animation classes.",
              "name": "--ed-show-duration",
              "default": "var(--ed-transition-fast)"
            },
            {
              "description": "The hide duration to use when applying built-in animation classes.",
              "name": "--ed-hide-duration",
              "default": "var(--ed-transition-fast)"
            }
          ],
          "cssParts": [
            {
              "description": "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.",
              "name": "arrow"
            },
            {
              "description": "The popup's container. Useful for setting a background color, box shadow, etc.",
              "name": "popup"
            },
            {
              "description": "The hover bridge element. Only available when the `hover-bridge` option is enabled.",
              "name": "hover-bridge"
            }
          ],
          "slots": [
            {
              "description": "The popup's content.",
              "name": ""
            },
            {
              "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.",
              "name": "anchor"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "anchorEl",
              "type": {
                "text": "Element | VirtualElement | null"
              },
              "privacy": "private",
              "parsedType": {
                "text": "null | Element | { getBoundingClientRect: {  }, contextElement?: Element }"
              }
            },
            {
              "kind": "field",
              "name": "cleanup",
              "type": {
                "text": "ReturnType<typeof autoUpdate> | undefined"
              },
              "privacy": "private",
              "parsedType": {
                "text": "{  } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "popup",
              "type": {
                "text": "HTMLElement"
              },
              "description": "A reference to the internal popup container. Useful for animating and styling the popup with JavaScript."
            },
            {
              "kind": "field",
              "name": "arrowEl",
              "type": {
                "text": "HTMLElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "anchor",
              "type": {
                "text": "Element | string | VirtualElement"
              },
              "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.",
              "attribute": "anchor",
              "parsedType": {
                "text": "string | Element | { getBoundingClientRect: {  }, contextElement?: Element }"
              }
            },
            {
              "kind": "field",
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "active",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "placement",
              "type": {
                "text": "| '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'",
              "description": "The preferred placement of the popup. Note that the actual placement will vary as configured to keep the\npanel inside of the viewport.",
              "attribute": "placement",
              "reflects": true,
              "parsedType": {
                "text": "'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'top' | 'bottom' | 'right-start' | 'right-end' | 'left-start' | 'left-end'"
              }
            },
            {
              "kind": "field",
              "name": "boundary",
              "type": {
                "text": "'viewport' | 'scroll'"
              },
              "default": "'viewport'",
              "description": "The bounding box to use for flipping, shifting, and auto-sizing.",
              "attribute": "boundary",
              "parsedType": {
                "text": "'viewport' | 'scroll'"
              }
            },
            {
              "kind": "field",
              "name": "distance",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The distance in pixels from which to offset the panel away from its anchor.",
              "attribute": "distance"
            },
            {
              "kind": "field",
              "name": "skidding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The distance in pixels from which to offset the panel along its anchor.",
              "attribute": "skidding"
            },
            {
              "kind": "field",
              "name": "arrow",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Attaches an arrow to the popup. The arrow's size and color can be customized using the `--ed-popup-arrow-size` and\n`--ed-popup-arrow-color` custom properties. For additional customizations, you can also target the arrow using\n`::part(arrow)` in your stylesheet.",
              "attribute": "arrow"
            },
            {
              "kind": "field",
              "name": "arrowPlacement",
              "type": {
                "text": "'start' | 'end' | 'center' | 'anchor'"
              },
              "default": "'anchor'",
              "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.",
              "attribute": "arrow-placement",
              "parsedType": {
                "text": "'anchor' | 'start' | 'end' | 'center'"
              }
            },
            {
              "kind": "field",
              "name": "arrowPadding",
              "type": {
                "text": "number"
              },
              "default": "10",
              "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.",
              "attribute": "arrow-padding"
            },
            {
              "kind": "field",
              "name": "flip",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "flip"
            },
            {
              "kind": "field",
              "name": "flipFallbackPlacements",
              "type": {
                "text": "string"
              },
              "default": "''",
              "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.",
              "attribute": "flip-fallback-placements"
            },
            {
              "kind": "field",
              "name": "flipFallbackStrategy",
              "type": {
                "text": "'best-fit' | 'initial'"
              },
              "default": "'best-fit'",
              "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.",
              "attribute": "flip-fallback-strategy",
              "parsedType": {
                "text": "'best-fit' | 'initial'"
              }
            },
            {
              "kind": "field",
              "name": "flipBoundary",
              "type": {
                "text": "Element | Element[]"
              },
              "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.",
              "attribute": "flipBoundary"
            },
            {
              "kind": "field",
              "name": "flipPadding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The amount of padding, in pixels, to exceed before the flip behavior will occur.",
              "attribute": "flip-padding"
            },
            {
              "kind": "field",
              "name": "shift",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Moves the popup along the axis to keep it in view when clipped.",
              "attribute": "shift"
            },
            {
              "kind": "field",
              "name": "shiftBoundary",
              "type": {
                "text": "Element | Element[]"
              },
              "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.",
              "attribute": "shiftBoundary"
            },
            {
              "kind": "field",
              "name": "shiftPadding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The amount of padding, in pixels, to exceed before the shift behavior will occur.",
              "attribute": "shift-padding"
            },
            {
              "kind": "field",
              "name": "autoSize",
              "type": {
                "text": "'horizontal' | 'vertical' | 'both'"
              },
              "description": "When set, this will cause the popup to automatically resize itself to prevent it from overflowing.",
              "attribute": "auto-size",
              "parsedType": {
                "text": "'both' | 'horizontal' | 'vertical'"
              }
            },
            {
              "kind": "field",
              "name": "sync",
              "type": {
                "text": "'width' | 'height' | 'both'"
              },
              "description": "Syncs the popup's width or height to that of the anchor element.",
              "attribute": "sync",
              "parsedType": {
                "text": "'width' | 'height' | 'both'"
              }
            },
            {
              "kind": "field",
              "name": "autoSizeBoundary",
              "type": {
                "text": "Element | Element[]"
              },
              "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.",
              "attribute": "autoSizeBoundary"
            },
            {
              "kind": "field",
              "name": "autoSizePadding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The amount of padding, in pixels, to exceed before the auto-size behavior will occur.",
              "attribute": "auto-size-padding"
            },
            {
              "kind": "field",
              "name": "hoverBridge",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "hover-bridge"
            },
            {
              "kind": "method",
              "name": "handleAnchorChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "start",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "stop",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              }
            },
            {
              "kind": "method",
              "name": "reposition",
              "description": "Forces the popup to recalculate and reposition itself."
            },
            {
              "kind": "field",
              "name": "updateHoverBridge",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "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-reposition",
              "reactName": "onEdReposition",
              "eventName": "EdRepositionEvent"
            }
          ],
          "attributes": [
            {
              "name": "anchor",
              "type": {
                "text": "Element | string | VirtualElement"
              },
              "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.",
              "fieldName": "anchor",
              "parsedType": {
                "text": "string | Element | { getBoundingClientRect: {  }, contextElement?: Element }"
              }
            },
            {
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "active"
            },
            {
              "name": "placement",
              "type": {
                "text": "| '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'",
              "description": "The preferred placement of the popup. Note that the actual placement will vary as configured to keep the\npanel inside of the viewport.",
              "fieldName": "placement",
              "parsedType": {
                "text": "'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'top' | 'bottom' | 'right-start' | 'right-end' | 'left-start' | 'left-end'"
              }
            },
            {
              "name": "boundary",
              "type": {
                "text": "'viewport' | 'scroll'"
              },
              "default": "'viewport'",
              "description": "The bounding box to use for flipping, shifting, and auto-sizing.",
              "fieldName": "boundary",
              "parsedType": {
                "text": "'viewport' | 'scroll'"
              }
            },
            {
              "name": "distance",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The distance in pixels from which to offset the panel away from its anchor.",
              "fieldName": "distance"
            },
            {
              "name": "skidding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The distance in pixels from which to offset the panel along its anchor.",
              "fieldName": "skidding"
            },
            {
              "name": "arrow",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Attaches an arrow to the popup. The arrow's size and color can be customized using the `--ed-popup-arrow-size` and\n`--ed-popup-arrow-color` custom properties. For additional customizations, you can also target the arrow using\n`::part(arrow)` in your stylesheet.",
              "fieldName": "arrow"
            },
            {
              "name": "arrow-placement",
              "type": {
                "text": "'start' | 'end' | 'center' | 'anchor'"
              },
              "default": "'anchor'",
              "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.",
              "fieldName": "arrowPlacement",
              "parsedType": {
                "text": "'anchor' | 'start' | 'end' | 'center'"
              }
            },
            {
              "name": "arrow-padding",
              "type": {
                "text": "number"
              },
              "default": "10",
              "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.",
              "fieldName": "arrowPadding"
            },
            {
              "name": "flip",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "flip"
            },
            {
              "name": "flip-fallback-placements",
              "type": {
                "text": "string"
              },
              "default": "''",
              "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.",
              "fieldName": "flipFallbackPlacements"
            },
            {
              "name": "flip-fallback-strategy",
              "type": {
                "text": "'best-fit' | 'initial'"
              },
              "default": "'best-fit'",
              "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.",
              "fieldName": "flipFallbackStrategy",
              "parsedType": {
                "text": "'best-fit' | 'initial'"
              }
            },
            {
              "name": "flipBoundary",
              "type": {
                "text": "Element | Element[]"
              },
              "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.",
              "fieldName": "flipBoundary"
            },
            {
              "name": "flip-padding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The amount of padding, in pixels, to exceed before the flip behavior will occur.",
              "fieldName": "flipPadding"
            },
            {
              "name": "shift",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Moves the popup along the axis to keep it in view when clipped.",
              "fieldName": "shift"
            },
            {
              "name": "shiftBoundary",
              "type": {
                "text": "Element | Element[]"
              },
              "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.",
              "fieldName": "shiftBoundary"
            },
            {
              "name": "shift-padding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The amount of padding, in pixels, to exceed before the shift behavior will occur.",
              "fieldName": "shiftPadding"
            },
            {
              "name": "auto-size",
              "type": {
                "text": "'horizontal' | 'vertical' | 'both'"
              },
              "description": "When set, this will cause the popup to automatically resize itself to prevent it from overflowing.",
              "fieldName": "autoSize",
              "parsedType": {
                "text": "'both' | 'horizontal' | 'vertical'"
              }
            },
            {
              "name": "sync",
              "type": {
                "text": "'width' | 'height' | 'both'"
              },
              "description": "Syncs the popup's width or height to that of the anchor element.",
              "fieldName": "sync",
              "parsedType": {
                "text": "'width' | 'height' | 'both'"
              }
            },
            {
              "name": "autoSizeBoundary",
              "type": {
                "text": "Element | Element[]"
              },
              "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.",
              "fieldName": "autoSizeBoundary"
            },
            {
              "name": "auto-size-padding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The amount of padding, in pixels, to exceed before the auto-size behavior will occur.",
              "fieldName": "autoSizePadding"
            },
            {
              "name": "hover-bridge",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "hoverBridge"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Positions a floating box next to an anchor element and keeps it in view; the base other floating components\nsuch as dropdown, select and tooltip are built on.",
          "jsDoc": "/**\n * @summary Positions a floating box next to an anchor element and keeps it in view; the base other floating components\n *  such as dropdown, select and tooltip are built on.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/popup\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @event ed-reposition - Emitted when the popup is repositioned. This event can fire a lot, so avoid putting expensive\n *  operations in your listener or consider debouncing it.\n *\n * @slot - The popup's content.\n * @slot anchor - The element the popup will be anchored to. If the anchor lives outside the popup, you can use the\n *  `anchor` attribute or property instead.\n *\n * @csspart arrow - The arrow's container. Avoid setting `top|bottom|left|right` properties, as these values are\n *  assigned dynamically as the popup moves. This is most useful for applying a background color to match the popup, and\n *  maybe a border or box shadow.\n * @csspart popup - The popup's container. Useful for setting a background color, box shadow, etc.\n * @csspart hover-bridge - The hover bridge element. Only available when the `hover-bridge` option is enabled.\n *\n * @cssproperty [--ed-popup-arrow-size=6px] - The size of the arrow. Note that an arrow won't be shown unless the `arrow`\n *  attribute is used.\n * @cssproperty [--ed-popup-border-width] - The width of any custom border applied to the popup. This is used to reposition\n *  the arrow to overlap to the inside edge of the popup border.\n * @cssproperty [--ed-popup-arrow-color=black] - The color of the arrow.\n * @cssproperty [--ed-popup-auto-size-available-width] - A read-only custom property that determines the amount of width the\n *  popup can be before overflowing. Useful for positioning child elements that need to overflow. This property is only\n *  available when using `auto-size`.\n * @cssproperty [--ed-popup-auto-size-available-height] - A read-only custom property that determines the amount of height the\n *  popup can be before overflowing. Useful for positioning child elements that need to overflow. This property is only\n *  available when using `auto-size`.\n * @cssproperty [--ed-show-duration=var(--ed-transition-fast)] - The show duration to use when applying built-in animation classes.\n * @cssproperty [--ed-hide-duration=var(--ed-transition-fast)] - The hide duration to use when applying built-in animation classes.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/popup",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-popup",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdPopup",
            "module": "components/popup/popup.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-popup",
          "declaration": {
            "name": "EdPopup",
            "module": "components/popup/popup.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/tooltip/tooltip.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdTooltip",
          "cssProperties": [
            {
              "description": "The maximum width of the tooltip before its content will wrap.",
              "name": "--ed-tooltip-max-width"
            },
            {
              "description": "The size of the arrow pointing at the anchor. Set to 0 to remove it.",
              "name": "--ed-tooltip-arrow-size",
              "default": "0.375rem"
            },
            {
              "description": "The border style of the tooltip's surface.",
              "name": "--ed-tooltip-border-style",
              "default": "none"
            },
            {
              "description": "The border width of the tooltip's surface. Always give it a unit: a unitless 0 breaks the `calc()` that sizes the arrow.",
              "name": "--ed-tooltip-border-width",
              "default": "0px"
            },
            {
              "description": "The corner radius of the tooltip's surface.",
              "name": "--ed-tooltip-border-radius",
              "default": "var(--ed-border-radius-2x)"
            },
            {
              "description": "The font size of the tooltip's content.",
              "name": "--ed-tooltip-font-size",
              "default": "var(--ed-font-size-m)"
            },
            {
              "description": "The line height of the tooltip's content.",
              "name": "--ed-tooltip-line-height",
              "default": "var(--ed-line-height-expanded)"
            }
          ],
          "cssParts": [
            {
              "description": "The floating surface holding the content. Carries the frame, background and shadow.",
              "name": "panel"
            },
            {
              "description": "The internal `<ed-popup>` element that positions the tooltip.",
              "name": "popup"
            },
            {
              "description": "The popup's exported `popup` part. Use this to target the tooltip's popup container.",
              "name": "popup__popup"
            },
            {
              "description": "The popup's exported `arrow` part. Use this to target the tooltip's arrow.",
              "name": "popup__arrow"
            }
          ],
          "slots": [
            {
              "description": "The tooltip's default slot where any content should live. HTML and a simple link are fine; buttons and form controls belong in ed-popover instead.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "hoverTimeout",
              "type": {
                "text": "number"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "body",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "popup",
              "type": {
                "text": "EdPopup"
              }
            },
            {
              "kind": "field",
              "name": "placement",
              "type": {
                "text": "| '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'",
              "description": "The preferred placement of the tooltip. Note that the actual placement may vary as needed to keep the tooltip\ninside of the viewport.",
              "attribute": "placement",
              "reflects": true,
              "parsedType": {
                "text": "'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'top' | 'bottom' | 'right-start' | 'right-end' | 'left-start' | 'left-end'"
              }
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the tooltip so it won't show when triggered.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "distance",
              "type": {
                "text": "number"
              },
              "default": "8",
              "description": "The distance in pixels from which to offset the tooltip away from its target.",
              "attribute": "distance"
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the tooltip is open. You can use this in lieu of the show/hide methods.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "skidding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The distance in pixels from which to offset the tooltip along its target.",
              "attribute": "skidding"
            },
            {
              "kind": "field",
              "name": "showDelay",
              "type": {
                "text": "number"
              },
              "default": "150",
              "description": "The amount of time to wait before showing the tooltip when the user mouses in.",
              "attribute": "show-delay"
            },
            {
              "kind": "field",
              "name": "hideDelay",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The amount of time to wait before hiding the tooltip when the user mouses out.",
              "attribute": "hide-delay"
            },
            {
              "kind": "field",
              "name": "trigger",
              "type": {
                "text": "string"
              },
              "default": "'hover focus'",
              "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.",
              "attribute": "trigger"
            },
            {
              "kind": "field",
              "name": "withoutArrow",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Removes the arrow from the tooltip.",
              "attribute": "without-arrow",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "for",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The ID of the tooltip's anchor element, looked up in the tooltip's own root node. This should be\nan interactive/focusable element such as a button, so that the `focus` trigger can reach it.",
              "attribute": "for",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "anchor",
              "type": {
                "text": "null | Element"
              },
              "default": "null"
            },
            {
              "kind": "field",
              "name": "eventController",
              "privacy": "private",
              "default": "new AbortController()"
            },
            {
              "kind": "field",
              "name": "#resolvingOnConnect",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "method",
              "name": "wireDismissal",
              "privacy": "private",
              "description": "Escape handling and stack membership, live for as long as the tooltip is open.\n\nShared with the open watcher rather than duplicated: that watcher is gated on\n`waitUntilFirstUpdate`, so a tooltip that arrives already open — plain markup, SSR — never\njoined the stack. It still closed on Escape through its anchor's blur handler, which is why\nthe gap is easy to miss; what was missing is the coordination that keeps one keystroke from\ndismissing an enclosing dialog in the same breath."
            },
            {
              "kind": "field",
              "name": "handleBlur",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleClick",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleFocus",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDocumentKeyDown",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleMouseOver",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleMouseOut",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "hasTrigger",
              "privacy": "private",
              "parameters": [
                {
                  "name": "triggerType",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "anchorHasOwnName",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "element",
                  "type": {
                    "text": "Element"
                  }
                }
              ],
              "description": "Whether the anchor already exposes its own accessible name, so the tooltip is a description — not the label."
            },
            {
              "kind": "method",
              "name": "addTooltipReference",
              "privacy": "private",
              "parameters": [
                {
                  "name": "element",
                  "type": {
                    "text": "Element"
                  }
                },
                {
                  "name": "id",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Points the anchor at the tooltip. If the anchor already has its own accessible name, the tooltip\nis a description (`aria-describedby`); otherwise it is promoted to the name (`aria-labelledby`).\nThat names an anchor that carries its role itself. On an element whose role sits inside it, such\nas `ed-button`, the reference names nothing, which is why the usage page asks for an `aria-label`."
            },
            {
              "kind": "method",
              "name": "removeTooltipReference",
              "privacy": "private",
              "parameters": [
                {
                  "name": "element",
                  "type": {
                    "text": "Element"
                  }
                },
                {
                  "name": "id",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Removes the tooltip ID from whichever aria relationship attribute carries it."
            },
            {
              "kind": "method",
              "name": "show",
              "description": "Shows the tooltip."
            },
            {
              "kind": "method",
              "name": "hide",
              "description": "Hides the tooltip"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "Emitted when the tooltip begins to show. Cancelable; calling `preventDefault()` keeps it closed.",
              "name": "ed-show",
              "reactName": "onEdShow",
              "eventName": "EdShowEvent"
            },
            {
              "description": "Emitted after the tooltip has shown and all animations are complete.",
              "name": "ed-after-show",
              "reactName": "onEdAfterShow",
              "eventName": "EdAfterShowEvent"
            },
            {
              "description": "Emitted when the tooltip begins to hide. Cancelable; calling `preventDefault()` keeps it open.",
              "name": "ed-hide",
              "reactName": "onEdHide",
              "eventName": "EdHideEvent"
            },
            {
              "description": "Emitted after the tooltip has hidden and all animations are complete.",
              "name": "ed-after-hide",
              "reactName": "onEdAfterHide",
              "eventName": "EdAfterHideEvent"
            }
          ],
          "attributes": [
            {
              "name": "placement",
              "type": {
                "text": "| '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'",
              "description": "The preferred placement of the tooltip. Note that the actual placement may vary as needed to keep the tooltip\ninside of the viewport.",
              "fieldName": "placement",
              "parsedType": {
                "text": "'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'top' | 'bottom' | 'right-start' | 'right-end' | 'left-start' | 'left-end'"
              }
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the tooltip so it won't show when triggered.",
              "fieldName": "disabled"
            },
            {
              "name": "distance",
              "type": {
                "text": "number"
              },
              "default": "8",
              "description": "The distance in pixels from which to offset the tooltip away from its target.",
              "fieldName": "distance"
            },
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the tooltip is open. You can use this in lieu of the show/hide methods.",
              "fieldName": "open"
            },
            {
              "name": "skidding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The distance in pixels from which to offset the tooltip along its target.",
              "fieldName": "skidding"
            },
            {
              "name": "show-delay",
              "type": {
                "text": "number"
              },
              "default": "150",
              "description": "The amount of time to wait before showing the tooltip when the user mouses in.",
              "fieldName": "showDelay"
            },
            {
              "name": "hide-delay",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The amount of time to wait before hiding the tooltip when the user mouses out.",
              "fieldName": "hideDelay"
            },
            {
              "name": "trigger",
              "type": {
                "text": "string"
              },
              "default": "'hover focus'",
              "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.",
              "fieldName": "trigger"
            },
            {
              "name": "without-arrow",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Removes the arrow from the tooltip.",
              "fieldName": "withoutArrow"
            },
            {
              "name": "for",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The ID of the tooltip's anchor element, looked up in the tooltip's own root node. This should be\nan interactive/focusable element such as a button, so that the `focus` trigger can reach it.",
              "fieldName": "for",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Shows a short, non-essential hint next to an element on hover or keyboard focus, such as the meaning of an\nicon.",
          "jsDoc": "/**\n * @summary Shows a short, non-essential hint next to an element on hover or keyboard focus, such as the meaning of an\n *  icon.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/tooltip\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-popup\n *\n * @slot - The tooltip's default slot where any content should live. HTML and a simple link are fine; buttons and form controls belong in ed-popover instead.\n *\n * @event ed-show - Emitted when the tooltip begins to show.\n *  Cancelable; calling `preventDefault()` keeps it closed.\n * @event ed-after-show - Emitted after the tooltip has shown and all animations are complete.\n * @event ed-hide - Emitted when the tooltip begins to hide.\n *  Cancelable; calling `preventDefault()` keeps it open.\n * @event ed-after-hide - Emitted after the tooltip has hidden and all animations are complete.\n *\n * @csspart panel - The floating surface holding the content. Carries the frame, background and shadow.\n * @csspart popup - The internal `<ed-popup>` element that positions the tooltip.\n * @csspart popup__popup - The popup's exported `popup` part. Use this to target the tooltip's popup container.\n * @csspart popup__arrow - The popup's exported `arrow` part. Use this to target the tooltip's arrow.\n *\n * @cssproperty --ed-tooltip-max-width - The maximum width of the tooltip before its content will wrap.\n * @cssproperty [--ed-tooltip-arrow-size=0.375rem] - The size of the arrow pointing at the anchor. Set to 0 to remove it.\n * @cssproperty [--ed-tooltip-border-style=none] - The border style of the tooltip's surface.\n * @cssproperty [--ed-tooltip-border-width=0px] - The border width of the tooltip's surface. Always give it a unit: a\n *   unitless 0 breaks the `calc()` that sizes the arrow.\n * @cssproperty [--ed-tooltip-border-radius=var(--ed-border-radius-2x)] - The corner radius of the tooltip's surface.\n * @cssproperty [--ed-tooltip-font-size=var(--ed-font-size-m)] - The font size of the tooltip's content.\n * @cssproperty [--ed-tooltip-line-height=var(--ed-line-height-expanded)] - The line height of the tooltip's content.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/tooltip",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-popup"
          ],
          "tagName": "ed-tooltip",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdTooltip",
            "module": "components/tooltip/tooltip.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-tooltip",
          "declaration": {
            "name": "EdTooltip",
            "module": "components/tooltip/tooltip.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/side-menu-item/side-menu-item.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Items carry a `value` — defaulting to `href` — matched by the parent menu's `current`. An href-less row\nwith a `value` (including a pinned parent) becomes a focusable `role=\"button\"` row. An identity-less leaf\n(no children, not `pinned`) instead becomes a plain \"fake button\": a focusable `role=\"button\"` row whose\nEnter/Space fire a `click` that bubbles like a native button — e.g. a search trigger placed inside a rail.\nA label too long for two lines is clamped with an ellipsis and revealed in full by a tooltip on hover or focus.",
          "name": "EdSideMenuItem",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The wrapper around indentation, row, and the disclosure button.",
              "name": "item-wrapper"
            },
            {
              "description": "The flex row holding the clickable link and the disclosure button.",
              "name": "row"
            },
            {
              "description": "The clickable row. Renders as `<a>` when `href` is set. Otherwise a `<div>`: a focusable `role=\"button\"` disclosure control for an href-less parent, or — for an href-less row with a `value` (including a pinned parent, which carries no `aria-expanded`) or an identity-less leaf (no children, not `pinned`) — a focusable `role=\"button\"` row that fires `click` on Enter/Space. A disabled href-less leaf stays a plain, non-focusable `<div>`; a disabled href-less non-pinned parent keeps its disclosure row (`role=\"button\"`, `tabindex=\"0\"`) focusable but inoperative — both handlers bail on `disabled`.",
              "name": "item"
            },
            {
              "description": "The item's indentation container.",
              "name": "indentation"
            },
            {
              "description": "The focusable disclosure button (sibling of the link — toggling it does not navigate).",
              "name": "expand-button"
            },
            {
              "description": "Container for the start slot.",
              "name": "start"
            },
            {
              "description": "Wrapper for label and description.",
              "name": "text"
            },
            {
              "description": "The item's label.",
              "name": "label"
            },
            {
              "description": "Container for the description slot.",
              "name": "description"
            },
            {
              "description": "Container for the end slot.",
              "name": "end"
            },
            {
              "description": "Container for nested child items.",
              "name": "children"
            },
            {
              "description": "The `<ed-tooltip>` that reveals the full label. Only rendered once a hover or focus finds the label clamped, so it is absent on items whose label fits.",
              "name": "tooltip"
            }
          ],
          "slots": [
            {
              "description": "The default slot for the item label.",
              "name": ""
            },
            {
              "description": "Content placed before the label, e.g. an icon.",
              "name": "start"
            },
            {
              "description": "Content placed after the label, e.g. a badge or an overflow menu. Treated as an action area: clicks and keystrokes inside it never activate the row, so a control placed here neither navigates nor toggles the item.",
              "name": "end"
            },
            {
              "description": "Secondary text rendered below the label.",
              "name": "description"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "href",
              "type": {
                "text": "string"
              },
              "description": "The URL the item navigates to. When set, the item renders as an `<a>` element with proper link semantics.",
              "attribute": "href"
            },
            {
              "kind": "field",
              "name": "target",
              "type": {
                "text": "string"
              },
              "description": "Tells the browser where to open the link. Only used when `href` is set.\n\nTakes the `_blank`, `_self`, `_parent` and `_top` keywords, or the name of a window: a link\nwhose target names an already open window navigates that window instead of opening another one.\nNote that `rel=\"noopener\"` suppresses the lookup, so a named target then opens a new window\nevery time.\n\nThe implicit opener isolation browsers apply covers `_blank` only. A named target leaves\n`window.opener` set on the opened page, so a link pointing at untrusted content needs\n`rel=\"noopener\"` spelled out.",
              "attribute": "target"
            },
            {
              "kind": "field",
              "name": "rel",
              "type": {
                "text": "string | undefined"
              },
              "description": "The `rel` attribute to use on the link. Only used when `href` is set.\n\nUnset by default, like a plain `<a>`. Browsers already imply `noopener` for `target=\"_blank\"`,\nso the remaining effect of a `rel` value is suppressing the `Referer` header — a decision about\nthe link's destination that belongs to the application, not to the component.",
              "attribute": "rel"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The item's identity for selection. Matched exactly against the parent side-menu's `current`\nand reported in `ed-navigate`. Falls back to `href` when omitted (like a native option's\nvalue falls back to its text), so plain link items don't repeat their URL.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "effectiveValue",
              "type": {
                "text": "string"
              },
              "description": "The identity used for `current` matching and `ed-navigate`: `value`, falling back to `href`.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "True when this item's effective value matches the parent side-menu's `current`. Set by the parent; do not write directly.",
              "attribute": "active",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "pinned",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Marks the item as a permanently expanded parent. The disclosure button is not rendered, attempts to collapse are\nignored, and no `aria-expanded` is exposed (no disclosure semantics). Use for top-level navigation groups whose\nchildren should always be visible. Implies `expanded = true` on connect.",
              "attribute": "pinned",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "slim",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set by the parent `<ed-side-menu>` when its variant is `slim`. Do not\nwrite directly — assign `variant` on the parent instead. When set,\nthe item renders as an 80px-column rail item (icon over centered label,\nno description, no end slot, no chevron).",
              "attribute": "slim",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "density",
              "type": {
                "text": "'spacious' | 'default' | 'compact'"
              },
              "default": "'default'",
              "description": "Set by the parent `<ed-side-menu>` from its own `density`. Do not write directly — assign\n`density` on the parent instead. Drives the item's row height and icon size.",
              "attribute": "density",
              "reflects": true,
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'end')"
            },
            {
              "kind": "field",
              "name": "endSlot",
              "type": {
                "text": "HTMLSlotElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "labelSlot",
              "type": {
                "text": "HTMLSlotElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "itemElement",
              "type": {
                "text": "HTMLElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "rowElement",
              "type": {
                "text": "HTMLElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "truncationTooltip",
              "type": {
                "text": "EdTooltip"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "truncatedLabel",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "description": "The full label text, set once a reveal found the label clamped. Doubles as the flag that renders the\ntooltip — which then stays in the DOM for subsequent reveals — and is refreshed on every reveal so a\nlabel edited after the first one still reads correctly."
            },
            {
              "kind": "field",
              "name": "truncationTooltipTimeout",
              "type": {
                "text": "number"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "truncationTooltipWanted",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "True while the hover or focus that asked for the tooltip is still in effect."
            },
            {
              "kind": "method",
              "name": "isFromEndSlot",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ],
              "description": "True when the event came out of the end slot, which makes it an action on the item rather than an\nactivation of the row. The slot renders inside the row's link (inherited tree-item structure), so\na control placed there shares the row's event path — and a consumer cannot fix that from outside:\na link's activation behavior is decided from the event path, not from propagation, so\n`stopPropagation()` on the control still navigates, while blanket-stopping keydown would cut the\ncontrol off from its own document-level key handling (e.g. ed-dropdown's typeahead). The row opts\nout instead. This covers the whole slot, not just interactive content: a click on a plain badge\ndoes not activate the row either, keeping the rule predictable."
            },
            {
              "kind": "method",
              "name": "handleChevronClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleRowKeydown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleRowClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleRowPointerEnter",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "PointerEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleRowFocusIn",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleRowFocusOut",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "FocusEvent"
                  }
                }
              ],
              "description": "focusin and focusout bubble (focus and blur do not), so every focus move *within* the row fires\nboth — moving between a trigger and its menu item in the end slot, for instance. Closing on that\nand reopening at delay 0 is a visible flicker reachable without touching the mouse.\n\nrelatedTarget is checked against the host as well as the shadow root: end-slot content is light\nDOM and is therefore not inside renderRoot, while the link and the chevron are."
            },
            {
              "kind": "method",
              "name": "handleRowLeave",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "requestTruncationTooltip",
              "privacy": "private",
              "parameters": [
                {
                  "name": "delay",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "isLabelTruncated",
              "privacy": "private",
              "description": "True while the label's text exceeds the two lines the clamp renders."
            },
            {
              "kind": "method",
              "name": "showTruncationTooltip",
              "privacy": "private",
              "description": "Reveals the full label of a clamped item. Measured per reveal rather than observed: a ResizeObserver\nper item would reflow-check every row of a 100+ item nav, while the answer is only ever needed for\nthe one row under the pointer — and re-measuring also drops the tooltip again once a widened menu\nun-clamps the label."
            },
            {
              "kind": "method",
              "name": "isExpandableItem",
              "static": true,
              "return": {
                "type": {
                  "text": "node is EdExpandableItem"
                }
              },
              "parameters": [
                {
                  "name": "node",
                  "type": {
                    "text": "Node"
                  }
                }
              ],
              "description": "Determines whether a node is an expandable item — replaces brittle `role=`/tag sniffing.",
              "inheritedFrom": {
                "name": "EdExpandableItem",
                "module": "internal/expandable-item.js"
              }
            },
            {
              "kind": "field",
              "name": "isLeaf",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdExpandableItem",
                "module": "internal/expandable-item.js"
              }
            },
            {
              "kind": "field",
              "name": "expanded",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Expands the item.",
              "attribute": "expanded",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdExpandableItem",
                "module": "internal/expandable-item.js"
              }
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the item.",
              "attribute": "disabled",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdExpandableItem",
                "module": "internal/expandable-item.js"
              }
            },
            {
              "kind": "field",
              "name": "childrenSlot",
              "type": {
                "text": "HTMLSlotElement"
              },
              "inheritedFrom": {
                "name": "EdExpandableItem",
                "module": "internal/expandable-item.js"
              }
            },
            {
              "kind": "field",
              "name": "childrenContainer",
              "type": {
                "text": "HTMLDivElement"
              },
              "inheritedFrom": {
                "name": "EdExpandableItem",
                "module": "internal/expandable-item.js"
              }
            },
            {
              "kind": "method",
              "name": "isNestedItem",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "inheritedFrom": {
                "name": "EdExpandableItem",
                "module": "internal/expandable-item.js"
              }
            },
            {
              "kind": "method",
              "name": "updateIndentation",
              "privacy": "private",
              "description": "Counts the nesting depth and sets the private --_indent property on the host for indentation.",
              "inheritedFrom": {
                "name": "EdExpandableItem",
                "module": "internal/expandable-item.js"
              }
            },
            {
              "kind": "method",
              "name": "getChildrenItems",
              "return": {
                "type": {
                  "text": "EdExpandableItem[]"
                }
              },
              "parameters": [
                {
                  "name": "{ includeDisabled = true }",
                  "default": "{}",
                  "type": {
                    "text": "{ includeDisabled?: boolean }"
                  }
                }
              ],
              "description": "Gets all the nested expandable items in this node.",
              "inheritedFrom": {
                "name": "EdExpandableItem",
                "module": "internal/expandable-item.js"
              }
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ item: EdSideMenuItem, value: string, href?: string }"
              },
              "description": "Emitted when an item with an identity (value or href) is activated. Cancelable; calling `preventDefault()` cancels the selection commit and any native navigation — e.g. for SPA routing. Detail: `{ item, value, href? }`. Cancelable; calling `preventDefault()` cancels the navigation.",
              "name": "ed-navigate",
              "reactName": "onEdNavigate",
              "eventName": "EdNavigateEvent"
            },
            {
              "description": "Emitted before the item expands. Cancelable; calling `preventDefault()` keeps it collapsed.",
              "name": "ed-expand",
              "reactName": "onEdExpand",
              "eventName": "EdExpandEvent"
            },
            {
              "description": "Emitted after the item expands and all animations are complete.",
              "name": "ed-after-expand",
              "reactName": "onEdAfterExpand",
              "eventName": "EdAfterExpandEvent"
            },
            {
              "description": "Emitted before the item collapses. Cancelable; calling `preventDefault()` keeps it expanded.",
              "name": "ed-collapse",
              "reactName": "onEdCollapse",
              "eventName": "EdCollapseEvent"
            },
            {
              "description": "Emitted after the item collapses and all animations are complete.",
              "name": "ed-after-collapse",
              "reactName": "onEdAfterCollapse",
              "eventName": "EdAfterCollapseEvent"
            }
          ],
          "attributes": [
            {
              "type": {
                "text": "boolean"
              },
              "description": "Marks the item as a permanently expanded parent. The disclosure button is not rendered, attempts to collapse are\nignored, and no `aria-expanded` is exposed (no disclosure semantics). Use for top-level navigation groups whose\nchildren should always be visible. Implies `expanded = true` on connect.",
              "name": "pinned",
              "default": "false",
              "fieldName": "pinned"
            },
            {
              "name": "href",
              "type": {
                "text": "string"
              },
              "description": "The URL the item navigates to. When set, the item renders as an `<a>` element with proper link semantics.",
              "fieldName": "href"
            },
            {
              "name": "target",
              "type": {
                "text": "string"
              },
              "description": "Tells the browser where to open the link. Only used when `href` is set.\n\nTakes the `_blank`, `_self`, `_parent` and `_top` keywords, or the name of a window: a link\nwhose target names an already open window navigates that window instead of opening another one.\nNote that `rel=\"noopener\"` suppresses the lookup, so a named target then opens a new window\nevery time.\n\nThe implicit opener isolation browsers apply covers `_blank` only. A named target leaves\n`window.opener` set on the opened page, so a link pointing at untrusted content needs\n`rel=\"noopener\"` spelled out.",
              "fieldName": "target"
            },
            {
              "name": "rel",
              "type": {
                "text": "string | undefined"
              },
              "description": "The `rel` attribute to use on the link. Only used when `href` is set.\n\nUnset by default, like a plain `<a>`. Browsers already imply `noopener` for `target=\"_blank\"`,\nso the remaining effect of a `rel` value is suppressing the `Referer` header — a decision about\nthe link's destination that belongs to the application, not to the component.",
              "fieldName": "rel"
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The item's identity for selection. Matched exactly against the parent side-menu's `current`\nand reported in `ed-navigate`. Falls back to `href` when omitted (like a native option's\nvalue falls back to its text), so plain link items don't repeat their URL.",
              "fieldName": "value"
            },
            {
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "True when this item's effective value matches the parent side-menu's `current`. Set by the parent; do not write directly.",
              "fieldName": "active"
            },
            {
              "name": "slim",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set by the parent `<ed-side-menu>` when its variant is `slim`. Do not\nwrite directly — assign `variant` on the parent instead. When set,\nthe item renders as an 80px-column rail item (icon over centered label,\nno description, no end slot, no chevron).",
              "fieldName": "slim"
            },
            {
              "name": "density",
              "type": {
                "text": "'spacious' | 'default' | 'compact'"
              },
              "default": "'default'",
              "description": "Set by the parent `<ed-side-menu>` from its own `density`. Do not write directly — assign\n`density` on the parent instead. Drives the item's row height and icon size.",
              "fieldName": "density",
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "name": "expanded",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Expands the item.",
              "fieldName": "expanded",
              "inheritedFrom": {
                "name": "EdExpandableItem",
                "module": "src/internal/expandable-item.ts"
              }
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the item.",
              "fieldName": "disabled",
              "inheritedFrom": {
                "name": "EdExpandableItem",
                "module": "src/internal/expandable-item.ts"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "Applied when this item's effective value matches the parent side-menu's `current`.",
              "name": "active"
            },
            {
              "description": "Applied when the item is expanded.",
              "name": "expanded"
            },
            {
              "description": "Applied when the item is disabled.",
              "name": "disabled"
            }
          ],
          "superclass": {
            "name": "EdExpandableItem",
            "module": "/src/internal/expandable-item.js"
          },
          "summary": "A hierarchical navigation item for use inside [ed-side-menu](/a/eurodata-ui/docs/components/side-menu).\nRenders as a link (WAI-ARIA Disclosure Navigation), with a focusable disclosure button for expandable parents.",
          "jsDoc": "/**\n * Items carry a `value` — defaulting to `href` — matched by the parent menu's `current`. An href-less row\n * with a `value` (including a pinned parent) becomes a focusable `role=\"button\"` row. An identity-less leaf\n * (no children, not `pinned`) instead becomes a plain \"fake button\": a focusable `role=\"button\"` row whose\n * Enter/Space fire a `click` that bubbles like a native button — e.g. a search trigger placed inside a rail.\n * A label too long for two lines is clamped with an ellipsis and revealed in full by a tooltip on hover or focus.\n *\n * @summary A hierarchical navigation item for use inside [ed-side-menu](/a/eurodata-ui/docs/components/side-menu).\n *  Renders as a link (WAI-ARIA Disclosure Navigation), with a focusable disclosure button for expandable parents.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/side-menu-item\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-icon\n * @dependency ed-tooltip\n *\n * @event {{ item: EdSideMenuItem, value: string, href?: string }} ed-navigate - Emitted when an item with an identity (value or href) is activated. Cancelable; calling\n *  `preventDefault()` cancels the selection commit and any native navigation — e.g. for SPA routing. Detail: `{ item, value, href? }`.\n *  Cancelable; calling `preventDefault()` cancels the navigation.\n * @event ed-expand - Emitted before the item expands. Cancelable; calling `preventDefault()` keeps it collapsed.\n * @event ed-after-expand - Emitted after the item expands and all animations are complete.\n * @event ed-collapse - Emitted before the item collapses. Cancelable; calling `preventDefault()` keeps it\n *  expanded.\n * @event ed-after-collapse - Emitted after the item collapses and all animations are complete.\n *\n * @attr {boolean} pinned - Marks the item as a permanently expanded parent. The disclosure button is not rendered,\n *  attempts to set `expanded = false` (programmatic, attribute removal, or keyboard) are ignored, and no `aria-expanded`\n *  is exposed because the item no longer represents a disclosure widget. Use for top-level navigation groups whose\n *  children should always be visible. Implies `expanded = true` on connect.\n *\n * @slot - The default slot for the item label.\n * @slot start - Content placed before the label, e.g. an icon.\n * @slot end - Content placed after the label, e.g. a badge or an overflow menu. Treated as an action area: clicks and\n *  keystrokes inside it never activate the row, so a control placed here neither navigates nor toggles the item.\n * @slot description - Secondary text rendered below the label.\n *\n * @csspart base - The component's base wrapper.\n * @csspart item-wrapper - The wrapper around indentation, row, and the disclosure button.\n * @csspart row - The flex row holding the clickable link and the disclosure button.\n * @csspart item - The clickable row. Renders as `<a>` when `href` is set. Otherwise a `<div>`: a focusable\n *  `role=\"button\"` disclosure control for an href-less parent, or — for an href-less row with a `value`\n *  (including a pinned parent, which carries no `aria-expanded`) or an identity-less leaf (no children, not\n *  `pinned`) — a focusable `role=\"button\"` row that fires `click` on Enter/Space. A disabled href-less leaf\n *  stays a plain, non-focusable `<div>`; a disabled href-less non-pinned parent keeps its disclosure row\n *  (`role=\"button\"`, `tabindex=\"0\"`) focusable but inoperative — both handlers bail on `disabled`.\n * @csspart indentation - The item's indentation container.\n * @csspart expand-button - The focusable disclosure button (sibling of the link — toggling it does not navigate).\n * @csspart start - Container for the start slot.\n * @csspart text - Wrapper for label and description.\n * @csspart label - The item's label.\n * @csspart description - Container for the description slot.\n * @csspart end - Container for the end slot.\n * @csspart children - Container for nested child items.\n * @csspart tooltip - The `<ed-tooltip>` that reveals the full label. Only rendered once a hover or focus\n *  finds the label clamped, so it is absent on items whose label fits.\n *\n * @cssstate active - Applied when this item's effective value matches the parent side-menu's `current`.\n * @cssstate expanded - Applied when the item is expanded.\n * @cssstate disabled - Applied when the item is disabled.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/side-menu-item",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-icon",
            "ed-tooltip"
          ],
          "tagName": "ed-side-menu-item",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdSideMenuItem",
            "module": "components/side-menu-item/side-menu-item.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-side-menu-item",
          "declaration": {
            "name": "EdSideMenuItem",
            "module": "components/side-menu-item/side-menu-item.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/navigate.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdNavigateEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdNavigateEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/navigate.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdNavigateEvent",
          "declaration": {
            "name": "EdNavigateEvent",
            "module": "events/navigate.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/news-count-changed.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdNewsCountChangedEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdNewsCountChangedEventDetails | undefined"
              },
              "readonly": true,
              "default": "detail",
              "parsedType": {
                "text": "{ count: number } | undefined"
              }
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/news-count-changed.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdNewsCountChangedEvent",
          "declaration": {
            "name": "EdNewsCountChangedEvent",
            "module": "events/news-count-changed.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/page-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdPageChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdPageChangeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/page-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdPageChangeEvent",
          "declaration": {
            "name": "EdPageChangeEvent",
            "module": "events/page-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/page-size-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdPageSizeChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdPageSizeChangeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/page-size-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdPageSizeChangeEvent",
          "declaration": {
            "name": "EdPageSizeChangeEvent",
            "module": "events/page-size-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/remove.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdRemoveEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/remove.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdRemoveEvent",
          "declaration": {
            "name": "EdRemoveEvent",
            "module": "events/remove.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/request-preview.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdRequestPreviewEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdRequestPreviewEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/request-preview.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdRequestPreviewEvent",
          "declaration": {
            "name": "EdRequestPreviewEvent",
            "module": "events/request-preview.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/resize.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdResizeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdResizeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/resize.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdResizeEvent",
          "declaration": {
            "name": "EdResizeEvent",
            "module": "events/resize.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/document-viewer/document-viewer.types.js",
      "declarations": [],
      "exports": []
    },
    {
      "kind": "javascript-module",
      "path": "events/rotate.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdRotateEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdRotateEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/rotate.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdRotateEvent",
          "declaration": {
            "name": "EdRotateEvent",
            "module": "events/rotate.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/scan-cancel.js",
      "declarations": [
        {
          "kind": "class",
          "description": "The scan session was discarded. Not cancelable: the session is already gone when this fires, so\nthere is nothing left for a listener to prevent.",
          "name": "EdScanCancelEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/scan-cancel.ts"
          },
          "jsDoc": "/**\n * The scan session was discarded. Not cancelable: the session is already gone when this fires, so\n * there is nothing left for a listener to prevent.\n */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdScanCancelEvent",
          "declaration": {
            "name": "EdScanCancelEvent",
            "module": "events/scan-cancel.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "widgets/ed-scan/ed-scan.types.js",
      "declarations": [],
      "exports": []
    },
    {
      "kind": "javascript-module",
      "path": "events/scan-finish.js",
      "declarations": [
        {
          "kind": "class",
          "description": "The scan session ended and its files were saved. Not cancelable: the session is already closed\nwhen this fires.",
          "name": "EdScanFinishEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "SavedFile[]"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/scan-finish.ts"
          },
          "jsDoc": "/**\n * The scan session ended and its files were saved. Not cancelable: the session is already closed\n * when this fires.\n */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdScanFinishEvent",
          "declaration": {
            "name": "EdScanFinishEvent",
            "module": "events/scan-finish.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/scrollspy-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdScrollspyChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdScrollspyChangeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/scrollspy-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdScrollspyChangeEvent",
          "declaration": {
            "name": "EdScrollspyChangeEvent",
            "module": "events/scrollspy-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/section-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdSectionChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdSectionChangeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/section-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdSectionChangeEvent",
          "declaration": {
            "name": "EdSectionChangeEvent",
            "module": "events/section-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/tree-item/tree-item.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdTreeItem",
          "cssProperties": [
            {
              "description": "The animation duration when expanding tree items.",
              "name": "--ed-show-duration",
              "default": "var(--ed-transition-normal)"
            },
            {
              "description": "The animation duration when collapsing tree items.",
              "name": "--ed-hide-duration",
              "default": "var(--ed-transition-normal)"
            },
            {
              "description": "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.",
              "name": "--ed-tree-item-background",
              "default": "var(--ed-color-surface-default)"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The row as a whole: the indentation and the item side by side.",
              "name": "item-wrapper"
            },
            {
              "description": "The tree item's container. This element wraps everything except slotted tree item children.",
              "name": "item"
            },
            {
              "description": "The tree item's indentation container.",
              "name": "indentation"
            },
            {
              "description": "The container that wraps the tree item's expand button and spinner.",
              "name": "expand-button"
            },
            {
              "description": "The spinner that shows when a lazy tree item is in the loading state.",
              "name": "spinner"
            },
            {
              "description": "The spinner's base part.",
              "name": "spinner__base"
            },
            {
              "description": "The container for the `start` slot, rendered before the label.",
              "name": "start"
            },
            {
              "description": "The vertical container that wraps the label and the description.",
              "name": "text"
            },
            {
              "description": "The tree item's label.",
              "name": "label"
            },
            {
              "description": "The container for the `description` slot, rendered below the label.",
              "name": "description"
            },
            {
              "description": "The container for the `end` slot, rendered after the label.",
              "name": "end"
            },
            {
              "description": "The container that wraps the tree item's nested children.",
              "name": "children"
            },
            {
              "description": "The checkbox that shows when using multiselect.",
              "name": "checkbox"
            },
            {
              "description": "The checkbox's exported `base` part.",
              "name": "checkbox__base"
            },
            {
              "description": "The checkbox's exported `control` part.",
              "name": "checkbox__control"
            },
            {
              "description": "The checkbox's exported `checked-icon` part.",
              "name": "checkbox__checked-icon"
            },
            {
              "description": "The checkbox's exported `indeterminate-icon` part.",
              "name": "checkbox__indeterminate-icon"
            },
            {
              "description": "The checkbox's exported `label` part.",
              "name": "checkbox__label"
            }
          ],
          "slots": [
            {
              "description": "The default slot.",
              "name": ""
            },
            {
              "description": "Content placed before the label, e.g. an icon.",
              "name": "start"
            },
            {
              "description": "Content placed after the label, e.g. an action button or badge.",
              "name": "end"
            },
            {
              "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": "description"
            },
            {
              "description": "The icon to show when the tree item is expanded.",
              "name": "expand-icon"
            },
            {
              "description": "The icon to show when the tree item is collapsed.",
              "name": "collapse-icon"
            }
          ],
          "members": [
            {
              "kind": "method",
              "name": "isTreeItem",
              "static": true,
              "parameters": [
                {
                  "name": "node",
                  "type": {
                    "text": "Node"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "indeterminate",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "selectable",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "selected",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the tree item in a selected state.",
              "attribute": "selected",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "lazy",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables lazy loading behavior.",
              "attribute": "lazy",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "itemElement",
              "type": {
                "text": "HTMLDivElement"
              }
            },
            {
              "kind": "field",
              "name": "expandButtonSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "method",
              "name": "syncSelectionState",
              "privacy": "private",
              "description": "Announces selection through exactly one vocabulary. Where the state is carried by\n`aria-checked`, `aria-selected` is not specified on any node, and the other way round — both at\nonce is the case the tree pattern tells authors to avoid. The split follows the tree's own\nmodes: only the multi-select mode renders checkboxes, and only `aria-checked` can say \"partly\",\nwhich the rendered checkbox cannot report because it is `inert`."
            },
            {
              "kind": "method",
              "name": "getChildrenItems",
              "return": {
                "type": {
                  "text": "EdTreeItem[]"
                }
              },
              "parameters": [
                {
                  "name": "{ includeDisabled = true }",
                  "default": "{}",
                  "type": {
                    "text": "{ includeDisabled?: boolean }"
                  }
                }
              ],
              "description": "Gets all the nested tree items in this node.",
              "inheritedFrom": {
                "name": "EdExpandableItem",
                "module": "internal/expandable-item.js"
              }
            },
            {
              "kind": "method",
              "name": "isExpandableItem",
              "static": true,
              "return": {
                "type": {
                  "text": "node is EdExpandableItem"
                }
              },
              "parameters": [
                {
                  "name": "node",
                  "type": {
                    "text": "Node"
                  }
                }
              ],
              "description": "Determines whether a node is an expandable item — replaces brittle `role=`/tag sniffing.",
              "inheritedFrom": {
                "name": "EdExpandableItem",
                "module": "internal/expandable-item.js"
              }
            },
            {
              "kind": "field",
              "name": "isLeaf",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdExpandableItem",
                "module": "internal/expandable-item.js"
              }
            },
            {
              "kind": "field",
              "name": "expanded",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Expands the item.",
              "attribute": "expanded",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdExpandableItem",
                "module": "internal/expandable-item.js"
              }
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the item.",
              "attribute": "disabled",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdExpandableItem",
                "module": "internal/expandable-item.js"
              }
            },
            {
              "kind": "field",
              "name": "childrenSlot",
              "type": {
                "text": "HTMLSlotElement"
              },
              "inheritedFrom": {
                "name": "EdExpandableItem",
                "module": "internal/expandable-item.js"
              }
            },
            {
              "kind": "field",
              "name": "childrenContainer",
              "type": {
                "text": "HTMLDivElement"
              },
              "inheritedFrom": {
                "name": "EdExpandableItem",
                "module": "internal/expandable-item.js"
              }
            },
            {
              "kind": "method",
              "name": "isNestedItem",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "inheritedFrom": {
                "name": "EdExpandableItem",
                "module": "internal/expandable-item.js"
              }
            },
            {
              "kind": "method",
              "name": "updateIndentation",
              "privacy": "private",
              "description": "Counts the nesting depth and sets the private --_indent property on the host for indentation.",
              "inheritedFrom": {
                "name": "EdExpandableItem",
                "module": "internal/expandable-item.js"
              }
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "Emitted before the tree item expands. Cancelable; calling `preventDefault()` keeps it collapsed — useful when a lazy load fails.",
              "name": "ed-expand",
              "reactName": "onEdExpand",
              "eventName": "EdExpandEvent"
            },
            {
              "description": "Emitted after the tree item expands and all animations are complete.",
              "name": "ed-after-expand",
              "reactName": "onEdAfterExpand",
              "eventName": "EdAfterExpandEvent"
            },
            {
              "description": "Emitted before the tree item collapses. Cancelable; calling `preventDefault()` keeps it expanded.",
              "name": "ed-collapse",
              "reactName": "onEdCollapse",
              "eventName": "EdCollapseEvent"
            },
            {
              "description": "Emitted after the tree item collapses and all animations are complete.",
              "name": "ed-after-collapse",
              "reactName": "onEdAfterCollapse",
              "eventName": "EdAfterCollapseEvent"
            },
            {
              "description": "Emitted when the tree item's lazy state changes.",
              "name": "ed-lazy-change",
              "reactName": "onEdLazyChange",
              "eventName": "EdLazyChangeEvent"
            },
            {
              "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-lazy-load",
              "reactName": "onEdLazyLoad",
              "eventName": "EdLazyLoadEvent"
            }
          ],
          "attributes": [
            {
              "name": "selected",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the tree item in a selected state.",
              "fieldName": "selected"
            },
            {
              "name": "lazy",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables lazy loading behavior.",
              "fieldName": "lazy"
            },
            {
              "name": "expanded",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Expands the item.",
              "fieldName": "expanded",
              "inheritedFrom": {
                "name": "EdExpandableItem",
                "module": "src/internal/expandable-item.ts"
              }
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the item.",
              "fieldName": "disabled",
              "inheritedFrom": {
                "name": "EdExpandableItem",
                "module": "src/internal/expandable-item.ts"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "Applied when the tree item is disabled.",
              "name": "disabled"
            },
            {
              "description": "Applied when the tree item is expanded.",
              "name": "expanded"
            },
            {
              "description": "Applied when the selection is indeterminate.",
              "name": "indeterminate"
            },
            {
              "description": "Applied when the tree item is selected.",
              "name": "selected"
            }
          ],
          "superclass": {
            "name": "EdExpandableItem",
            "module": "/src/internal/expandable-item.js"
          },
          "summary": "A tree item serves as a hierarchical node that lives inside a [tree](/a/eurodata-ui/docs/components/tree).",
          "jsDoc": "/**\n * @summary A tree item serves as a hierarchical node that lives inside a [tree](/a/eurodata-ui/docs/components/tree).\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/tree-item\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-checkbox\n * @dependency ed-icon\n * @dependency ed-progress-ring\n *\n * @event ed-expand - Emitted before the tree item expands. Cancelable; calling `preventDefault()` keeps it\n *  collapsed — useful when a lazy load fails.\n * @event ed-after-expand - Emitted after the tree item expands and all animations are complete.\n * @event ed-collapse - Emitted before the tree item collapses. Cancelable; calling `preventDefault()` keeps it\n *  expanded.\n * @event ed-after-collapse - Emitted after the tree item collapses and all animations are complete.\n * @event ed-lazy-change - Emitted when the tree item's lazy state changes.\n * @event ed-lazy-load - Emitted when a lazy item is selected. Use this event to asynchronously load data and append\n *  items to the tree before expanding. After appending new items, remove the `lazy` attribute to remove the loading\n *  state and update the tree.\n *\n * @slot - The default slot.\n * @slot start - Content placed before the label, e.g. an icon.\n * @slot end - Content placed after the label, e.g. an action button or badge.\n * @slot description - Secondary text rendered below the label. Stays at default styling regardless of\n *  selection state (does not adopt the active or path-highlight color/weight).\n * @slot expand-icon - The icon to show when the tree item is expanded.\n * @slot collapse-icon - The icon to show when the tree item is collapsed.\n *\n * @csspart base - The component's base wrapper.\n * @csspart item-wrapper - The row as a whole: the indentation and the item side by side.\n * @csspart item - The tree item's container. This element wraps everything except slotted tree item children.\n * @csspart indentation - The tree item's indentation container.\n * @csspart expand-button - The container that wraps the tree item's expand button and spinner.\n * @csspart spinner - The spinner that shows when a lazy tree item is in the loading state.\n * @csspart spinner__base - The spinner's base part.\n * @csspart start - The container for the `start` slot, rendered before the label.\n * @csspart text - The vertical container that wraps the label and the description.\n * @csspart label - The tree item's label.\n * @csspart description - The container for the `description` slot, rendered below the label.\n * @csspart end - The container for the `end` slot, rendered after the label.\n * @csspart children - The container that wraps the tree item's nested children.\n * @csspart checkbox - The checkbox that shows when using multiselect.\n * @csspart checkbox__base - The checkbox's exported `base` part.\n * @csspart checkbox__control - The checkbox's exported `control` part.\n * @csspart checkbox__checked-icon - The checkbox's exported `checked-icon` part.\n * @csspart checkbox__indeterminate-icon - The checkbox's exported `indeterminate-icon` part.\n * @csspart checkbox__label - The checkbox's exported `label` part.\n *\n * @cssproperty [--ed-show-duration=var(--ed-transition-normal)] - The animation duration when expanding tree items.\n * @cssproperty [--ed-hide-duration=var(--ed-transition-normal)] - The animation duration when collapsing tree items.\n * @cssproperty [--ed-tree-item-background=var(--ed-color-surface-default)] - The background color the tree item sits on. Hover and\n *  active states are mixed on top of this value, so override it when placing the tree on a non-default surface\n *  (e.g. a raised panel or card) to keep hover/active feedback coherent.\n *\n * @cssstate disabled - Applied when the tree item is disabled.\n * @cssstate expanded - Applied when the tree item is expanded.\n * @cssstate indeterminate - Applied when the selection is indeterminate.\n * @cssstate selected - Applied when the tree item is selected.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/tree-item",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-checkbox",
            "ed-icon",
            "ed-progress-ring"
          ],
          "tagName": "ed-tree-item",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdTreeItem",
            "module": "components/tree-item/tree-item.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-tree-item",
          "declaration": {
            "name": "EdTreeItem",
            "module": "components/tree-item/tree-item.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/selection-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdSelectionChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdSelectionChangeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/selection-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdSelectionChangeEvent",
          "declaration": {
            "name": "EdSelectionChangeEvent",
            "module": "events/selection-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/session-expired.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdSessionExpiredEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdSessionExpiredEventDetails | undefined"
              },
              "readonly": true,
              "default": "detail",
              "parsedType": {
                "text": "{ remainingTime: number, cause: 'error' | 'expired' | 'invalid' } | undefined"
              }
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/session-expired.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdSessionExpiredEvent",
          "declaration": {
            "name": "EdSessionExpiredEvent",
            "module": "events/session-expired.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/session-expiring.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdSessionExpiringEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdSessionExpiringEventDetails | undefined"
              },
              "readonly": true,
              "default": "detail",
              "parsedType": {
                "text": "{ remainingTime: number, cause: 'scheduled' | 'immediate' } | undefined"
              }
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/session-expiring.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdSessionExpiringEvent",
          "declaration": {
            "name": "EdSessionExpiringEvent",
            "module": "events/session-expiring.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/carousel-item/carousel-item.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdCarouselItem",
          "cssProperties": [
            {
              "description": "The slide's aspect ratio. Inherited from the carousel by default.",
              "name": "--ed-carousel-aspect-ratio"
            }
          ],
          "slots": [
            {
              "description": "The carousel item's content.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "One slide inside a carousel, holding an image or a short block of content.",
          "jsDoc": "/**\n * @summary One slide inside a carousel, holding an image or a short block of content.\n *\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/carousel-item\n * @since 1.0\n * @playwright getByTestId('…')\n * @status experimental\n * @level atom\n *\n * @slot - The carousel item's content.\n *\n * @cssproperty --ed-carousel-aspect-ratio - The slide's aspect ratio. Inherited from the carousel by default.\n *\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/carousel-item",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "status": "experimental",
          "level": "atom",
          "tagName": "ed-carousel-item",
          "customElement": true,
          "attributes": [
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdCarouselItem",
            "module": "components/carousel-item/carousel-item.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-carousel-item",
          "declaration": {
            "name": "EdCarouselItem",
            "module": "components/carousel-item/carousel-item.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/slide-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdSlideChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdSlideChangeEventDetails"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/slide-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdSlideChangeEvent",
          "declaration": {
            "name": "EdSlideChangeEvent",
            "module": "events/slide-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/step/step.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdStep",
          "cssProperties": [
            {
              "description": "The color of the marker's pulse effect when using `attention=\"pulse\"`. Defaults to the step's accent color.",
              "name": "--ed-step-pulse-color"
            }
          ],
          "cssParts": [
            {
              "description": "The component's outer wrapper.",
              "name": "step"
            },
            {
              "description": "The line connecting this step to its neighbors. Each step draws the half leading in and the half leading out, and both carry this part name.",
              "name": "connector"
            },
            {
              "description": "The `<button>` wrapping the marker and content. Only rendered when the parent stepper is `clickable`; otherwise the same wrapper is a plain, non-focusable element.",
              "name": "button"
            },
            {
              "description": "The circular marker that shows the step's number, checkmark or loading indicator.",
              "name": "marker"
            },
            {
              "description": "The progress ring shown in the marker while the step is `loading`.",
              "name": "spinner"
            },
            {
              "description": "The wrapper around the label, status text and description.",
              "name": "content"
            },
            {
              "description": "The step's label.",
              "name": "label"
            },
            {
              "description": "Visually hidden text that tells assistive technology whether the step is completed, not completed, disabled or locked.",
              "name": "status"
            },
            {
              "description": "The step's description.",
              "name": "description"
            }
          ],
          "slots": [
            {
              "description": "The step's label.",
              "name": ""
            },
            {
              "description": "Optional text shown under the label.",
              "name": "description"
            },
            {
              "description": "An element, such as `<ed-icon>`, that replaces the step number, checkmark or loading indicator.",
              "name": "icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'description')"
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Identifies the step. Matched against the stepper's `active` attribute and used in events.",
              "attribute": "name",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "completed",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Marks the step done. Shows a checkmark instead of the step number.",
              "attribute": "completed",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows a loading indicator instead of the step number, e.g. while an async transition is in progress.",
              "attribute": "loading",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the step non-interactive. It can't be clicked or reached with `next()`/`goTo()`, and it renders as a\ndisabled button when the stepper is `clickable`.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "variant",
              "type": {
                "text": "'neutral' | 'brand' | 'success' | 'warning' | 'danger'"
              },
              "default": "'brand'",
              "description": "Colors the step's marker with a semantic color. Upcoming steps keep a neutral outline in every variant, so a\ndefault stepper reads quietly. The color is cosmetic; pair it with an icon in the `icon` slot and a clear label when a\nstep needs to read as failed or flagged.",
              "attribute": "variant",
              "reflects": true,
              "parsedType": {
                "text": "'warning' | 'brand' | 'neutral' | 'success' | 'danger'"
              }
            },
            {
              "kind": "field",
              "name": "attention",
              "type": {
                "text": "'none' | 'pulse' | 'bounce'"
              },
              "default": "'none'",
              "description": "Adds an animation to the step's marker to draw attention to it, e.g. the step the user should do next.",
              "attribute": "attention",
              "reflects": true,
              "parsedType": {
                "text": "'none' | 'pulse' | 'bounce'"
              }
            },
            {
              "kind": "field",
              "name": "withDescription",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `description` element, so the server-rendered\nmarkup includes it before the component hydrates on the client.",
              "attribute": "with-description"
            },
            {
              "kind": "field",
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the step as the stepper's current step. The parent `<ed-stepper>` sets this from its own `active`\nattribute, so you only need to set it yourself for SSR.",
              "attribute": "active",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "syncAriaCurrent",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getStatusText",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderIcon",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Identifies the step. Matched against the stepper's `active` attribute and used in events.",
              "fieldName": "name"
            },
            {
              "name": "completed",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Marks the step done. Shows a checkmark instead of the step number.",
              "fieldName": "completed"
            },
            {
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows a loading indicator instead of the step number, e.g. while an async transition is in progress.",
              "fieldName": "loading"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the step non-interactive. It can't be clicked or reached with `next()`/`goTo()`, and it renders as a\ndisabled button when the stepper is `clickable`.",
              "fieldName": "disabled"
            },
            {
              "name": "variant",
              "type": {
                "text": "'neutral' | 'brand' | 'success' | 'warning' | 'danger'"
              },
              "default": "'brand'",
              "description": "Colors the step's marker with a semantic color. Upcoming steps keep a neutral outline in every variant, so a\ndefault stepper reads quietly. The color is cosmetic; pair it with an icon in the `icon` slot and a clear label when a\nstep needs to read as failed or flagged.",
              "fieldName": "variant",
              "parsedType": {
                "text": "'warning' | 'brand' | 'neutral' | 'success' | 'danger'"
              }
            },
            {
              "name": "attention",
              "type": {
                "text": "'none' | 'pulse' | 'bounce'"
              },
              "default": "'none'",
              "description": "Adds an animation to the step's marker to draw attention to it, e.g. the step the user should do next.",
              "fieldName": "attention",
              "parsedType": {
                "text": "'none' | 'pulse' | 'bounce'"
              }
            },
            {
              "name": "with-description",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `description` element, so the server-rendered\nmarkup includes it before the component hydrates on the client.",
              "fieldName": "withDescription"
            },
            {
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the step as the stepper's current step. The parent `<ed-stepper>` sets this from its own `active`\nattribute, so you only need to set it yourself for SSR.",
              "fieldName": "active"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "Applied when this is the parent stepper's current step.",
              "name": "active"
            },
            {
              "description": "Mirrors the `completed` attribute.",
              "name": "completed"
            },
            {
              "description": "Mirrors the `loading` attribute.",
              "name": "loading"
            },
            {
              "description": "Mirrors the `disabled` attribute.",
              "name": "disabled"
            },
            {
              "description": "Applied by the parent stepper when `linear` is set and this step can't be reached yet, i.e. it comes after the first incomplete step. Never applied to the active step.",
              "name": "locked"
            },
            {
              "description": "Applied by the parent stepper when its `clickable` attribute is set, allowing this step to be clicked or activated (Enter/Space) directly.",
              "name": "clickable"
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "A single stage inside an `<ed-stepper>`, showing its position, label and status.",
          "jsDoc": "/**\n * @summary A single stage inside an `<ed-stepper>`, showing its position, label and status.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/step/\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-icon\n * @dependency ed-progress-ring\n *\n * @slot - The step's label.\n * @slot description - Optional text shown under the label.\n * @slot icon - An element, such as `<ed-icon>`, that replaces the step number, checkmark or loading indicator.\n *\n * @csspart step - The component's outer wrapper.\n * @csspart connector - The line connecting this step to its neighbors. Each step draws the half leading in and the\n *  half leading out, and both carry this part name.\n * @csspart button - The `<button>` wrapping the marker and content. Only rendered when the parent stepper is\n *  `clickable`; otherwise the same wrapper is a plain, non-focusable element.\n * @csspart marker - The circular marker that shows the step's number, checkmark or loading indicator.\n * @csspart spinner - The progress ring shown in the marker while the step is `loading`.\n * @csspart content - The wrapper around the label, status text and description.\n * @csspart label - The step's label.\n * @csspart status - Visually hidden text that tells assistive technology whether the step is completed, not\n *  completed, disabled or locked.\n * @csspart description - The step's description.\n *\n * @cssproperty --ed-step-pulse-color - The color of the marker's pulse effect when using `attention=\"pulse\"`.\n *  Defaults to the step's accent color.\n *\n * @cssstate active - Applied when this is the parent stepper's current step.\n * @cssstate completed - Mirrors the `completed` attribute.\n * @cssstate loading - Mirrors the `loading` attribute.\n * @cssstate disabled - Mirrors the `disabled` attribute.\n * @cssstate locked - Applied by the parent stepper when `linear` is set and this step can't be reached yet, i.e. it\n *  comes after the first incomplete step. Never applied to the active step.\n * @cssstate clickable - Applied by the parent stepper when its `clickable` attribute is set, allowing this step to\n *  be clicked or activated (Enter/Space) directly.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/step/",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-icon",
            "ed-progress-ring"
          ],
          "tagName": "ed-step",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdStep",
            "module": "components/step/step.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-step",
          "declaration": {
            "name": "EdStep",
            "module": "components/step/step.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/stepper-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdStepperChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdStepperChangeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/stepper-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdStepperChangeEvent",
          "declaration": {
            "name": "EdStepperChangeEvent",
            "module": "events/stepper-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/stepper-before-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Cancelable: `preventDefault()` keeps the current step active.",
          "name": "EdStepperBeforeChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdStepperChangeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/stepper-before-change.ts"
          },
          "jsDoc": "/** Cancelable: `preventDefault()` keeps the current step active. */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdStepperBeforeChangeEvent",
          "declaration": {
            "name": "EdStepperBeforeChangeEvent",
            "module": "events/stepper-before-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/super-tab-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdSuperTabChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdSuperTabChangeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/super-tab-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdSuperTabChangeEvent",
          "declaration": {
            "name": "EdSuperTabChangeEvent",
            "module": "events/super-tab-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/tab-close.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdTabCloseEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdTabCloseEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/tab-close.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdTabCloseEvent",
          "declaration": {
            "name": "EdTabCloseEvent",
            "module": "events/tab-close.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/tab-hide.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdTabHideEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdTabHideEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/tab-hide.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdTabHideEvent",
          "declaration": {
            "name": "EdTabHideEvent",
            "module": "events/tab-hide.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/tab-show.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdTabShowEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdTabShowEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/tab-show.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdTabShowEvent",
          "declaration": {
            "name": "EdTabShowEvent",
            "module": "events/tab-show.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/tag-input-create.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdTagInputCreateEvent",
          "superclass": {
            "name": "CustomEvent",
            "module": "src/events/tag-input-create.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdTagInputCreateEvent",
          "declaration": {
            "name": "EdTagInputCreateEvent",
            "module": "events/tag-input-create.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/unread-news-count-changed.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdUnreadNewsCountChangedEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdUnreadNewsCountChangedEventDetails | undefined"
              },
              "readonly": true,
              "default": "detail",
              "parsedType": {
                "text": "{ count: number } | undefined"
              }
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/unread-news-count-changed.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdUnreadNewsCountChangedEvent",
          "declaration": {
            "name": "EdUnreadNewsCountChangedEvent",
            "module": "events/unread-news-count-changed.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/upload/upload.types.js",
      "declarations": [],
      "exports": []
    },
    {
      "kind": "javascript-module",
      "path": "events/upload-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdUploadChangeEvent",
          "superclass": {
            "name": "CustomEvent",
            "module": "src/events/upload-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdUploadChangeEvent",
          "declaration": {
            "name": "EdUploadChangeEvent",
            "module": "events/upload-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/upload-error.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdUploadErrorEvent",
          "superclass": {
            "name": "CustomEvent",
            "module": "src/events/upload-error.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdUploadErrorEvent",
          "declaration": {
            "name": "EdUploadErrorEvent",
            "module": "events/upload-error.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/upload-finished.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdUploadFinishedEvent",
          "superclass": {
            "name": "CustomEvent",
            "module": "src/events/upload-finished.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdUploadFinishedEvent",
          "declaration": {
            "name": "EdUploadFinishedEvent",
            "module": "events/upload-finished.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/upload-progress.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdUploadProgressEvent",
          "superclass": {
            "name": "CustomEvent",
            "module": "src/events/upload-progress.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdUploadProgressEvent",
          "declaration": {
            "name": "EdUploadProgressEvent",
            "module": "events/upload-progress.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/video-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdVideoChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdVideoChangeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/video-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdVideoChangeEvent",
          "declaration": {
            "name": "EdVideoChangeEvent",
            "module": "events/video-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/view-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdViewChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdViewChangeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/view-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdViewChangeEvent",
          "declaration": {
            "name": "EdViewChangeEvent",
            "module": "events/view-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/wizard-step-meta-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdWizardStepMetaChangeEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/wizard-step-meta-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdWizardStepMetaChangeEvent",
          "declaration": {
            "name": "EdWizardStepMetaChangeEvent",
            "module": "events/wizard-step-meta-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/wizard-step/wizard-step.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdWizardStep",
          "cssParts": [
            {
              "description": "The wrapper of the step's content.",
              "name": "base"
            }
          ],
          "slots": [
            {
              "description": "The step's content, shown while the step is active. Add the `autofocus` attribute to a control here to move focus to it when the user or a method makes the step active.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Identifies the step. Matched against the wizard's `active` attribute and used in its events. A step without a\nname is addressed as `step-<n>`, its 1-based position.",
              "attribute": "name",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The step's label, shown in the wizard's stepper. An attribute rather than a slot: the stepper lives in the\nwizard's shadow root, where a step's light-DOM content cannot be projected.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "description",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Optional text shown under the label in the wizard's stepper.",
              "attribute": "description"
            },
            {
              "kind": "field",
              "name": "icon",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of an icon shown in the step's marker instead of its number or checkmark.",
              "attribute": "icon"
            },
            {
              "kind": "field",
              "name": "completed",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Marks the step done. With the wizard's `linear` attribute, Next stays disabled until the active step is\ncompleted.",
              "attribute": "completed",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the step unreachable. Next and Previous skip it, and it cannot be clicked in the stepper.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows a loading indicator in the step's marker, e.g. while an async check runs.",
              "attribute": "loading",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [],
          "attributes": [
            {
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Identifies the step. Matched against the wizard's `active` attribute and used in its events. A step without a\nname is addressed as `step-<n>`, its 1-based position.",
              "fieldName": "name"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The step's label, shown in the wizard's stepper. An attribute rather than a slot: the stepper lives in the\nwizard's shadow root, where a step's light-DOM content cannot be projected.",
              "fieldName": "label"
            },
            {
              "name": "description",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Optional text shown under the label in the wizard's stepper.",
              "fieldName": "description"
            },
            {
              "name": "icon",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of an icon shown in the step's marker instead of its number or checkmark.",
              "fieldName": "icon"
            },
            {
              "name": "completed",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Marks the step done. With the wizard's `linear` attribute, Next stays disabled until the active step is\ncompleted.",
              "fieldName": "completed"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the step unreachable. Next and Previous skip it, and it cannot be clicked in the stepper.",
              "fieldName": "disabled"
            },
            {
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows a loading indicator in the step's marker, e.g. while an async check runs.",
              "fieldName": "loading"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "One step of an `<ed-wizard>`: its entry in the wizard's stepper and the content shown while it is active.",
          "jsDoc": "/**\n * @summary One step of an `<ed-wizard>`: its entry in the wizard's stepper and the content shown while it is active.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/wizard-step\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @slot - The step's content, shown while the step is active. Add the `autofocus` attribute to a control here to\n *  move focus to it when the user or a method makes the step active.\n *\n * @csspart base - The wrapper of the step's content.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/wizard-step",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-wizard-step",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdWizardStep",
            "module": "components/wizard-step/wizard-step.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-wizard-step",
          "declaration": {
            "name": "EdWizardStep",
            "module": "components/wizard-step/wizard-step.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/wizard-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdWizardChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdWizardChangeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/wizard-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdWizardChangeEvent",
          "declaration": {
            "name": "EdWizardChangeEvent",
            "module": "events/wizard-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/wizard-before-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Cancelable: `preventDefault()` keeps the current step active.",
          "name": "EdWizardBeforeChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdWizardChangeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/wizard-before-change.ts"
          },
          "jsDoc": "/** Cancelable: `preventDefault()` keeps the current step active. */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdWizardBeforeChangeEvent",
          "declaration": {
            "name": "EdWizardBeforeChangeEvent",
            "module": "events/wizard-before-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/wizard-cancel.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdWizardCancelEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/wizard-cancel.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdWizardCancelEvent",
          "declaration": {
            "name": "EdWizardCancelEvent",
            "module": "events/wizard-cancel.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/wizard-finish.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdWizardFinishEvent",
          "superclass": {
            "name": "Event",
            "module": "src/events/wizard-finish.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdWizardFinishEvent",
          "declaration": {
            "name": "EdWizardFinishEvent",
            "module": "events/wizard-finish.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/zoom-change.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdZoomChangeEvent",
          "members": [
            {
              "kind": "field",
              "name": "detail",
              "type": {
                "text": "EdZoomChangeEventDetail"
              },
              "readonly": true,
              "default": "detail"
            }
          ],
          "superclass": {
            "name": "Event",
            "module": "src/events/zoom-change.ts"
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdZoomChangeEvent",
          "declaration": {
            "name": "EdZoomChangeEvent",
            "module": "events/zoom-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "events/events.js",
      "declarations": [],
      "exports": [
        {
          "kind": "js",
          "name": "EdAfterCollapseEvent",
          "declaration": {
            "name": "EdAfterCollapseEvent",
            "module": "after-collapse.js"
          }
        },
        {
          "kind": "js",
          "name": "EdAfterExpandEvent",
          "declaration": {
            "name": "EdAfterExpandEvent",
            "module": "after-expand.js"
          }
        },
        {
          "kind": "js",
          "name": "EdAfterHideEvent",
          "declaration": {
            "name": "EdAfterHideEvent",
            "module": "after-hide.js"
          }
        },
        {
          "kind": "js",
          "name": "EdAfterShowEvent",
          "declaration": {
            "name": "EdAfterShowEvent",
            "module": "after-show.js"
          }
        },
        {
          "kind": "js",
          "name": "EdAlertDialogCancelEvent",
          "declaration": {
            "name": "EdAlertDialogCancelEvent",
            "module": "alert-dialog-cancel.js"
          }
        },
        {
          "kind": "js",
          "name": "EdAlertDialogConfirmEvent",
          "declaration": {
            "name": "EdAlertDialogConfirmEvent",
            "module": "alert-dialog-confirm.js"
          }
        },
        {
          "kind": "js",
          "name": "EdAnimationCancelEvent",
          "declaration": {
            "name": "EdAnimationCancelEvent",
            "module": "animation-cancel.js"
          }
        },
        {
          "kind": "js",
          "name": "EdAnimationFinishEvent",
          "declaration": {
            "name": "EdAnimationFinishEvent",
            "module": "animation-finish.js"
          }
        },
        {
          "kind": "js",
          "name": "EdAnimationStartEvent",
          "declaration": {
            "name": "EdAnimationStartEvent",
            "module": "animation-start.js"
          }
        },
        {
          "kind": "js",
          "name": "EdCalendarChangeEvent",
          "declaration": {
            "name": "EdCalendarChangeEvent",
            "module": "calendar-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdCalendarPageChangeEvent",
          "declaration": {
            "name": "EdCalendarPageChangeEvent",
            "module": "calendar-page-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdClearEvent",
          "declaration": {
            "name": "EdClearEvent",
            "module": "clear.js"
          }
        },
        {
          "kind": "js",
          "name": "EdCollapseEvent",
          "declaration": {
            "name": "EdCollapseEvent",
            "module": "collapse.js"
          }
        },
        {
          "kind": "js",
          "name": "EdComboboxOptionsErrorEvent",
          "declaration": {
            "name": "EdComboboxOptionsErrorEvent",
            "module": "combobox-options-error.js"
          }
        },
        {
          "kind": "js",
          "name": "EdComboboxOptionsErrorEventDetail",
          "declaration": {
            "name": "EdComboboxOptionsErrorEventDetail",
            "module": "combobox-options-error.js"
          }
        },
        {
          "kind": "js",
          "name": "EdComboboxOptionsRequest",
          "declaration": {
            "name": "EdComboboxOptionsRequest",
            "module": "combobox-options-request.js"
          }
        },
        {
          "kind": "js",
          "name": "EdComboboxOptionsRequestEvent",
          "declaration": {
            "name": "EdComboboxOptionsRequestEvent",
            "module": "combobox-options-request.js"
          }
        },
        {
          "kind": "js",
          "name": "EdContentChangeEvent",
          "declaration": {
            "name": "EdContentChangeEvent",
            "module": "content-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdCopyEvent",
          "declaration": {
            "name": "EdCopyEvent",
            "module": "copy.js"
          }
        },
        {
          "kind": "js",
          "name": "EdDataGridCellClickEvent",
          "declaration": {
            "name": "EdDataGridCellClickEvent",
            "module": "data-grid-cell-click.js"
          }
        },
        {
          "kind": "js",
          "name": "EdDataGridCellContextmenuEvent",
          "declaration": {
            "name": "EdDataGridCellContextmenuEvent",
            "module": "data-grid-cell-contextmenu.js"
          }
        },
        {
          "kind": "js",
          "name": "EdDataGridColumnMoveEvent",
          "declaration": {
            "name": "EdDataGridColumnMoveEvent",
            "module": "data-grid-column-move.js"
          }
        },
        {
          "kind": "js",
          "name": "EdDataGridColumnPinEvent",
          "declaration": {
            "name": "EdDataGridColumnPinEvent",
            "module": "data-grid-column-pin.js"
          }
        },
        {
          "kind": "js",
          "name": "EdDataGridColumnResizeEvent",
          "declaration": {
            "name": "EdDataGridColumnResizeEvent",
            "module": "data-grid-column-resize.js"
          }
        },
        {
          "kind": "js",
          "name": "EdDataGridColumnVisibilityChangeEvent",
          "declaration": {
            "name": "EdDataGridColumnVisibilityChangeEvent",
            "module": "data-grid-column-visibility-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdDataGridDataErrorEvent",
          "declaration": {
            "name": "EdDataGridDataErrorEvent",
            "module": "data-grid-data-error.js"
          }
        },
        {
          "kind": "js",
          "name": "EdDataGridDataRequestEvent",
          "declaration": {
            "name": "EdDataGridDataRequestEvent",
            "module": "data-grid-data-request.js"
          }
        },
        {
          "kind": "js",
          "name": "EdDataGridFilterChangeEvent",
          "declaration": {
            "name": "EdDataGridFilterChangeEvent",
            "module": "data-grid-filter-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdDataGridPageChangeEvent",
          "declaration": {
            "name": "EdDataGridPageChangeEvent",
            "module": "data-grid-page-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdDataGridRowCollapseEvent",
          "declaration": {
            "name": "EdDataGridRowCollapseEvent",
            "module": "data-grid-row-collapse.js"
          }
        },
        {
          "kind": "js",
          "name": "EdDataGridRowExpandEvent",
          "declaration": {
            "name": "EdDataGridRowExpandEvent",
            "module": "data-grid-row-expand.js"
          }
        },
        {
          "kind": "js",
          "name": "EdDataGridRowSelectEvent",
          "declaration": {
            "name": "EdDataGridRowSelectEvent",
            "module": "data-grid-row-select.js"
          }
        },
        {
          "kind": "js",
          "name": "EdDataGridSortChangeEvent",
          "declaration": {
            "name": "EdDataGridSortChangeEvent",
            "module": "data-grid-sort-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdDataGridViewChangeEvent",
          "declaration": {
            "name": "EdDataGridViewChangeEvent",
            "module": "data-grid-view-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdDropdownSelectEvent",
          "declaration": {
            "name": "EdDropdownSelectEvent",
            "module": "dropdown-select.js"
          }
        },
        {
          "kind": "js",
          "name": "EdEditEvent",
          "declaration": {
            "name": "EdEditEvent",
            "module": "edit.js"
          }
        },
        {
          "kind": "js",
          "name": "EdErrorEvent",
          "declaration": {
            "name": "EdErrorEvent",
            "module": "error.js"
          }
        },
        {
          "kind": "js",
          "name": "EdExpandEvent",
          "declaration": {
            "name": "EdExpandEvent",
            "module": "expand.js"
          }
        },
        {
          "kind": "js",
          "name": "EdFileInputChangeEvent",
          "declaration": {
            "name": "EdFileInputChangeEvent",
            "module": "file-input-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdFilePreviewEvent",
          "declaration": {
            "name": "EdFilePreviewEvent",
            "module": "file-preview.js"
          }
        },
        {
          "kind": "js",
          "name": "EdFilterEvent",
          "declaration": {
            "name": "EdFilterEvent",
            "module": "filter.js"
          }
        },
        {
          "kind": "js",
          "name": "EdHideEvent",
          "declaration": {
            "name": "EdHideEvent",
            "module": "hide.js"
          }
        },
        {
          "kind": "js",
          "name": "EdHoverEvent",
          "declaration": {
            "name": "EdHoverEvent",
            "module": "hover.js"
          }
        },
        {
          "kind": "js",
          "name": "EdIconLoadEvent",
          "declaration": {
            "name": "EdIconLoadEvent",
            "module": "icon-load.js"
          }
        },
        {
          "kind": "js",
          "name": "EdIncludeErrorEvent",
          "declaration": {
            "name": "EdIncludeErrorEvent",
            "module": "include-error.js"
          }
        },
        {
          "kind": "js",
          "name": "EdIntersectEvent",
          "declaration": {
            "name": "EdIntersectEvent",
            "module": "intersect.js"
          }
        },
        {
          "kind": "js",
          "name": "EdInvalidEvent",
          "declaration": {
            "name": "EdInvalidEvent",
            "module": "invalid.js"
          }
        },
        {
          "kind": "js",
          "name": "EdLazyChangeEvent",
          "declaration": {
            "name": "EdLazyChangeEvent",
            "module": "lazy-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdLazyLoadEvent",
          "declaration": {
            "name": "EdLazyLoadEvent",
            "module": "lazy-load.js"
          }
        },
        {
          "kind": "js",
          "name": "EdListSelectionChangeEvent",
          "declaration": {
            "name": "EdListSelectionChangeEvent",
            "module": "list-selection-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdMutationEvent",
          "declaration": {
            "name": "EdMutationEvent",
            "module": "mutation.js"
          }
        },
        {
          "kind": "js",
          "name": "EdNavigateEvent",
          "declaration": {
            "name": "EdNavigateEvent",
            "module": "navigate.js"
          }
        },
        {
          "kind": "js",
          "name": "EdNewsCountChangedEvent",
          "declaration": {
            "name": "EdNewsCountChangedEvent",
            "module": "news-count-changed.js"
          }
        },
        {
          "kind": "js",
          "name": "EdPageChangeEvent",
          "declaration": {
            "name": "EdPageChangeEvent",
            "module": "page-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdPageSizeChangeEvent",
          "declaration": {
            "name": "EdPageSizeChangeEvent",
            "module": "page-size-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdRemoveEvent",
          "declaration": {
            "name": "EdRemoveEvent",
            "module": "remove.js"
          }
        },
        {
          "kind": "js",
          "name": "EdRepositionEvent",
          "declaration": {
            "name": "EdRepositionEvent",
            "module": "reposition.js"
          }
        },
        {
          "kind": "js",
          "name": "EdRequestPreviewEvent",
          "declaration": {
            "name": "EdRequestPreviewEvent",
            "module": "request-preview.js"
          }
        },
        {
          "kind": "js",
          "name": "EdResizeEvent",
          "declaration": {
            "name": "EdResizeEvent",
            "module": "resize.js"
          }
        },
        {
          "kind": "js",
          "name": "EdRotateEvent",
          "declaration": {
            "name": "EdRotateEvent",
            "module": "rotate.js"
          }
        },
        {
          "kind": "js",
          "name": "EdScanCancelEvent",
          "declaration": {
            "name": "EdScanCancelEvent",
            "module": "scan-cancel.js"
          }
        },
        {
          "kind": "js",
          "name": "EdScanFinishEvent",
          "declaration": {
            "name": "EdScanFinishEvent",
            "module": "scan-finish.js"
          }
        },
        {
          "kind": "js",
          "name": "EdScrollspyChangeEvent",
          "declaration": {
            "name": "EdScrollspyChangeEvent",
            "module": "scrollspy-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdSectionChangeEvent",
          "declaration": {
            "name": "EdSectionChangeEvent",
            "module": "section-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdSelectionChangeEvent",
          "declaration": {
            "name": "EdSelectionChangeEvent",
            "module": "selection-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdSessionExpiredEvent",
          "declaration": {
            "name": "EdSessionExpiredEvent",
            "module": "session-expired.js"
          }
        },
        {
          "kind": "js",
          "name": "SessionExpiredCause",
          "declaration": {
            "name": "SessionExpiredCause",
            "module": "session-expired.js"
          }
        },
        {
          "kind": "js",
          "name": "EdSessionExpiringEvent",
          "declaration": {
            "name": "EdSessionExpiringEvent",
            "module": "session-expiring.js"
          }
        },
        {
          "kind": "js",
          "name": "SessionExpiringCause",
          "declaration": {
            "name": "SessionExpiringCause",
            "module": "session-expiring.js"
          }
        },
        {
          "kind": "js",
          "name": "EdShowEvent",
          "declaration": {
            "name": "EdShowEvent",
            "module": "show.js"
          }
        },
        {
          "kind": "js",
          "name": "EdSlideChangeEvent",
          "declaration": {
            "name": "EdSlideChangeEvent",
            "module": "slide-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdStepperBeforeChangeEvent",
          "declaration": {
            "name": "EdStepperBeforeChangeEvent",
            "module": "stepper-before-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdStepperChangeEvent",
          "declaration": {
            "name": "EdStepperChangeEvent",
            "module": "stepper-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdStepperChangeEventDetail",
          "declaration": {
            "name": "EdStepperChangeEventDetail",
            "module": "stepper-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdSuperTabChangeEvent",
          "declaration": {
            "name": "EdSuperTabChangeEvent",
            "module": "super-tab-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdTabCloseEvent",
          "declaration": {
            "name": "EdTabCloseEvent",
            "module": "tab-close.js"
          }
        },
        {
          "kind": "js",
          "name": "EdTabHideEvent",
          "declaration": {
            "name": "EdTabHideEvent",
            "module": "tab-hide.js"
          }
        },
        {
          "kind": "js",
          "name": "EdTabShowEvent",
          "declaration": {
            "name": "EdTabShowEvent",
            "module": "tab-show.js"
          }
        },
        {
          "kind": "js",
          "name": "EdTagInputCreateEvent",
          "declaration": {
            "name": "EdTagInputCreateEvent",
            "module": "tag-input-create.js"
          }
        },
        {
          "kind": "js",
          "name": "EdTagInputCreateEventDetail",
          "declaration": {
            "name": "EdTagInputCreateEventDetail",
            "module": "tag-input-create.js"
          }
        },
        {
          "kind": "js",
          "name": "EdUnreadNewsCountChangedEvent",
          "declaration": {
            "name": "EdUnreadNewsCountChangedEvent",
            "module": "unread-news-count-changed.js"
          }
        },
        {
          "kind": "js",
          "name": "EdUploadChangeEvent",
          "declaration": {
            "name": "EdUploadChangeEvent",
            "module": "upload-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdUploadErrorEvent",
          "declaration": {
            "name": "EdUploadErrorEvent",
            "module": "upload-error.js"
          }
        },
        {
          "kind": "js",
          "name": "EdUploadFinishedEvent",
          "declaration": {
            "name": "EdUploadFinishedEvent",
            "module": "upload-finished.js"
          }
        },
        {
          "kind": "js",
          "name": "EdUploadProgressEvent",
          "declaration": {
            "name": "EdUploadProgressEvent",
            "module": "upload-progress.js"
          }
        },
        {
          "kind": "js",
          "name": "EdVideoChangeEvent",
          "declaration": {
            "name": "EdVideoChangeEvent",
            "module": "video-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdViewChangeEvent",
          "declaration": {
            "name": "EdViewChangeEvent",
            "module": "view-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdWizardBeforeChangeEvent",
          "declaration": {
            "name": "EdWizardBeforeChangeEvent",
            "module": "wizard-before-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdWizardCancelEvent",
          "declaration": {
            "name": "EdWizardCancelEvent",
            "module": "wizard-cancel.js"
          }
        },
        {
          "kind": "js",
          "name": "EdWizardChangeEvent",
          "declaration": {
            "name": "EdWizardChangeEvent",
            "module": "wizard-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdWizardChangeEventDetail",
          "declaration": {
            "name": "EdWizardChangeEventDetail",
            "module": "wizard-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdWizardFinishEvent",
          "declaration": {
            "name": "EdWizardFinishEvent",
            "module": "wizard-finish.js"
          }
        },
        {
          "kind": "js",
          "name": "EdWizardStepMetaChangeEvent",
          "declaration": {
            "name": "EdWizardStepMetaChangeEvent",
            "module": "wizard-step-meta-change.js"
          }
        },
        {
          "kind": "js",
          "name": "EdZoomChangeEvent",
          "declaration": {
            "name": "EdZoomChangeEvent",
            "module": "zoom-change.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "eurodata.js",
      "declarations": [],
      "exports": [
        {
          "kind": "js",
          "name": "getDefaultIconFamily",
          "declaration": {
            "name": "getDefaultIconFamily",
            "module": "components/icon/library.js"
          }
        },
        {
          "kind": "js",
          "name": "registerIconLibrary",
          "declaration": {
            "name": "registerIconLibrary",
            "module": "components/icon/library.js"
          }
        },
        {
          "kind": "js",
          "name": "setDefaultIconFamily",
          "declaration": {
            "name": "setDefaultIconFamily",
            "module": "components/icon/library.js"
          }
        },
        {
          "kind": "js",
          "name": "unregisterIconLibrary",
          "declaration": {
            "name": "unregisterIconLibrary",
            "module": "components/icon/library.js"
          }
        },
        {
          "kind": "js",
          "name": "discover",
          "declaration": {
            "name": "discover",
            "module": "utilities/autoloader.js"
          }
        },
        {
          "kind": "js",
          "name": "preventTurboFouce",
          "declaration": {
            "name": "preventTurboFouce",
            "module": "utilities/autoloader.js"
          }
        },
        {
          "kind": "js",
          "name": "startLoader",
          "declaration": {
            "name": "startLoader",
            "module": "utilities/autoloader.js"
          }
        },
        {
          "kind": "js",
          "name": "stopLoader",
          "declaration": {
            "name": "stopLoader",
            "module": "utilities/autoloader.js"
          }
        },
        {
          "kind": "js",
          "name": "allDefined",
          "declaration": {
            "name": "allDefined",
            "module": "utilities/defined.js"
          }
        },
        {
          "kind": "js",
          "name": "registerTranslation",
          "declaration": {
            "name": "registerTranslation",
            "module": "utilities/localize.js"
          }
        },
        {
          "kind": "js",
          "name": "*",
          "declaration": {
            "name": "*",
            "module": "utilities/animation.js"
          }
        },
        {
          "kind": "js",
          "name": "*",
          "declaration": {
            "name": "*",
            "module": "utilities/form.js"
          }
        },
        {
          "kind": "js",
          "name": "html",
          "declaration": {
            "name": "html",
            "module": "utilities/html.js"
          }
        },
        {
          "kind": "js",
          "name": "createJsxToHtml",
          "declaration": {
            "name": "createJsxToHtml",
            "module": "utilities/jsx-to-html.js"
          }
        },
        {
          "kind": "js",
          "name": "toast",
          "declaration": {
            "name": "toast",
            "module": "utilities/toast.js"
          }
        },
        {
          "kind": "js",
          "name": "*",
          "declaration": {
            "name": "*",
            "module": "events/events.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "eurodata.loader.js",
      "declarations": [],
      "exports": [
        {
          "kind": "js",
          "name": "*",
          "declaration": {
            "name": "*",
            "module": "eurodata.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/test/fixture.js",
      "declarations": [
        {
          "kind": "function",
          "name": "clientFixture",
          "parameters": [
            {
              "name": "template",
              "type": {
                "text": "TemplateResult | string"
              }
            }
          ],
          "description": "Loads up a fixture and loads all client components"
        },
        {
          "kind": "function",
          "name": "hydratedFixture",
          "parameters": [
            {
              "name": "template",
              "type": {
                "text": "TemplateResult"
              }
            }
          ],
          "description": "Loads up a fixture with SSR, using all unbundled modules, then when it finishes, calls hydration scripts, and then when hydration completes, returns the element."
        },
        {
          "kind": "variable",
          "name": "fixtures"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "clientFixture",
          "declaration": {
            "name": "clientFixture",
            "module": "internal/test/fixture.js"
          }
        },
        {
          "kind": "js",
          "name": "hydratedFixture",
          "declaration": {
            "name": "hydratedFixture",
            "module": "internal/test/fixture.js"
          }
        },
        {
          "kind": "js",
          "name": "fixtures",
          "declaration": {
            "name": "fixtures",
            "module": "internal/test/fixture.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/parse.js",
      "declarations": [
        {
          "kind": "function",
          "name": "parseSpaceDelimitedTokens",
          "return": {
            "type": {
              "text": "string[]"
            }
          },
          "parameters": [
            {
              "name": "input",
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "Parses a space-delimited set of tokens and returns an array with all whitespace removed."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "parseSpaceDelimitedTokens",
          "declaration": {
            "name": "parseSpaceDelimitedTokens",
            "module": "internal/parse.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/rendered-watcher.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Reports when an element stops or starts generating layout boxes — what happens when third-party\nCSS puts `display: none` on it or on an ancestor. An ad blocker or a cookie-banner blocker doing\nthat to an open modal leaves the page scroll-locked and inert behind an element nobody can see.\n\nA `ResizeObserver` signals that something changed and `getClientRects()` decides the state: it\ntells \"not rendered\" apart from \"rendered at zero size\", which a zero content rect cannot.\n`visibility` and `opacity` never count as hidden — those still generate boxes, and an element\nhidden that way is still in the layout the modal state belongs to.",
          "name": "RenderedWatcher",
          "members": [
            {
              "kind": "field",
              "name": "observer",
              "type": {
                "text": "ResizeObserver | undefined"
              },
              "privacy": "private",
              "parsedType": {
                "text": "{ disconnect: {  }, observe: {  }, unobserve: {  } } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "initialCheckHandle",
              "type": {
                "text": "number | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "lastReported",
              "type": {
                "text": "boolean | undefined"
              },
              "privacy": "private",
              "parsedType": {
                "text": "false | true | undefined"
              }
            },
            {
              "kind": "method",
              "name": "start",
              "parameters": [
                {
                  "name": "targets",
                  "type": {
                    "text": "Element[]"
                  }
                }
              ],
              "description": "Starts watching and reports the current state on the next frame."
            },
            {
              "kind": "method",
              "name": "stop",
              "description": "Stops watching. The next `start()` reports the state it finds, whatever was last reported."
            },
            {
              "kind": "method",
              "name": "check",
              "privacy": "private"
            }
          ],
          "jsDoc": "/**\n * Reports when an element stops or starts generating layout boxes — what happens when third-party\n * CSS puts `display: none` on it or on an ancestor. An ad blocker or a cookie-banner blocker doing\n * that to an open modal leaves the page scroll-locked and inert behind an element nobody can see.\n *\n * A `ResizeObserver` signals that something changed and `getClientRects()` decides the state: it\n * tells \"not rendered\" apart from \"rendered at zero size\", which a zero content rect cannot.\n * `visibility` and `opacity` never count as hidden — those still generate boxes, and an element\n * hidden that way is still in the layout the modal state belongs to.\n */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "RenderedWatcher",
          "declaration": {
            "name": "RenderedWatcher",
            "module": "internal/rendered-watcher.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/offset.js",
      "declarations": [
        {
          "kind": "function",
          "name": "getOffset",
          "parameters": [
            {
              "name": "element",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "name": "parent",
              "type": {
                "text": "HTMLElement"
              }
            }
          ],
          "description": "Returns an element's offset relative to its parent. Similar to element.offsetTop and element.offsetLeft, except the\nparent doesn't have to be positioned relative or absolute.\n\nNOTE: This was created to work around what appears to be a bug in Chrome where a slotted element's offsetParent seems\nto ignore elements inside the surrounding shadow DOM: https://bugs.chromium.org/p/chromium/issues/detail?id=920069"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "getOffset",
          "declaration": {
            "name": "getOffset",
            "module": "internal/offset.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/scroll.js",
      "declarations": [
        {
          "kind": "function",
          "name": "lockBodyScrolling",
          "parameters": [
            {
              "name": "lockingEl",
              "type": {
                "text": "HTMLElement"
              }
            }
          ],
          "description": "Prevents body scrolling. Keeps track of which elements requested a lock so multiple levels of locking are possible\nwithout premature unlocking."
        },
        {
          "kind": "function",
          "name": "unlockBodyScrolling",
          "parameters": [
            {
              "name": "lockingEl",
              "type": {
                "text": "HTMLElement"
              }
            }
          ],
          "description": "Unlocks body scrolling. Scrolling will only be unlocked once all elements that requested a lock call this method."
        },
        {
          "kind": "function",
          "name": "scrollIntoView",
          "parameters": [
            {
              "name": "element",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "name": "container",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "name": "direction",
              "default": "'vertical'",
              "type": {
                "text": "'horizontal' | 'vertical' | 'both'"
              }
            },
            {
              "name": "behavior",
              "default": "'smooth'",
              "type": {
                "text": "'smooth' | 'auto'"
              }
            }
          ],
          "description": "Scrolls an element into view of its container. If the element is already in view, nothing will happen."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "lockBodyScrolling",
          "declaration": {
            "name": "lockBodyScrolling",
            "module": "internal/scroll.js"
          }
        },
        {
          "kind": "js",
          "name": "unlockBodyScrolling",
          "declaration": {
            "name": "unlockBodyScrolling",
            "module": "internal/scroll.js"
          }
        },
        {
          "kind": "js",
          "name": "scrollIntoView",
          "declaration": {
            "name": "scrollIntoView",
            "module": "internal/scroll.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/dialog/dialog.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDialog",
          "cssProperties": [
            {
              "description": "The amount of space around and between the dialog's content.",
              "name": "--ed-dialog-spacing",
              "default": "var(--ed-panel-spacing)"
            },
            {
              "description": "The preferred width of the dialog. Note that the dialog will shrink to accommodate smaller screens.",
              "name": "--ed-dialog-width"
            },
            {
              "description": "The width the dialog does not shrink below, resized or on a small screen; never wider than the screen minus its margin.",
              "name": "--ed-dialog-min-width",
              "default": "15rem"
            },
            {
              "description": "The animation duration when showing the dialog.",
              "name": "--ed-show-duration",
              "default": "var(--ed-transition-normal)"
            },
            {
              "description": "The animation duration when hiding the dialog.",
              "name": "--ed-hide-duration",
              "default": "var(--ed-transition-normal)"
            },
            {
              "description": "A CSS filter, e.g. `blur(4px)`, applied to the backdrop element behind the dialog.",
              "name": "--ed-dialog-backdrop-filter"
            }
          ],
          "cssParts": [
            {
              "description": "The dialog's surface, its native `<dialog>` element. Carries the frame, background and shadow.",
              "name": "panel"
            },
            {
              "description": "The dialog's header. This element wraps the title and header actions.",
              "name": "header"
            },
            {
              "description": "Optional actions to add to the header. Works best with `<ed-button>`.",
              "name": "header-actions"
            },
            {
              "description": "The dialog's title.",
              "name": "title"
            },
            {
              "description": "The dialog's subtitle.",
              "name": "subtitle"
            },
            {
              "description": "The close button, a `<ed-button>`.",
              "name": "close-button"
            },
            {
              "description": "The close button's exported `base` part.",
              "name": "close-button__base"
            },
            {
              "description": "The dialog's body.",
              "name": "body"
            },
            {
              "description": "The dialog's footer.",
              "name": "footer"
            }
          ],
          "slots": [
            {
              "description": "The dialog's main content.",
              "name": ""
            },
            {
              "description": "The dialog's title. Alternatively, you can use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "The dialog's subtitle. Alternatively, you can use the `sublabel` attribute.",
              "name": "sublabel"
            },
            {
              "description": "Optional actions to add to the header. Works best with `<ed-button>`.",
              "name": "header-actions"
            },
            {
              "description": "The dialog's footer, usually one or more buttons representing various options.",
              "name": "footer"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'footer', 'header-actions', 'label', 'sublabel')"
            },
            {
              "kind": "field",
              "name": "originalTrigger",
              "type": {
                "text": "HTMLElement | null"
              },
              "privacy": "private",
              "parsedType": {
                "text": "null | HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "#isClosing",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "True while the hide animation runs, so a second close request can't tear down twice."
            },
            {
              "kind": "field",
              "name": "#isSuspended",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "True while the modal is held back because the dialog does not render. See handleRenderedChange."
            },
            {
              "kind": "field",
              "name": "dialog",
              "type": {
                "text": "HTMLDialogElement"
              }
            },
            {
              "kind": "field",
              "name": "header",
              "type": {
                "text": "HTMLElement | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether the dialog is open. Toggle this attribute to show and hide the dialog.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "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 `label` slot instead. Not `title`: that global\nattribute shows a browser tooltip over the whole dialog.",
              "attribute": "label",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "sublabel",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The dialog's subtitle. If you need to display HTML, use the `sublabel` slot instead.",
              "attribute": "sublabel",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "ariaLabel",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The dialog's accessible name, overriding the visible title. Mirrored onto the internal\nnative `<dialog>`, where the dialog role lives — an aria-label left on the host alone would\nsit on a role-less element and be ignored by assistive tech (house pattern: ed-checkbox).",
              "attribute": "aria-label",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "dialogRole",
              "type": {
                "text": "'alertdialog' | null"
              },
              "default": "null",
              "description": "The role of the internal native `<dialog>`, overriding its implicit `dialog` role — set\n`alertdialog` for an interruption the user has to answer before continuing. It lands on the\nnative element rather than the host, where a second role would announce the dialog twice\n(`rules/api-design.md`), and it is applied in render(), so it is in place before showModal()\nruns — a role stamped afterwards can miss the announcement.",
              "attribute": "dialog-role",
              "parsedType": {
                "text": "null | 'alertdialog'"
              }
            },
            {
              "kind": "field",
              "name": "dialogDescription",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "A description announced when the dialog opens, wired to the native `<dialog>` through\n`aria-describedby`. Use it when the describing text sits outside this element's shadow root,\nwhere an ID reference cannot reach it — a wrapper composing ed-dialog is the case. A dialog\nwhose own body carries the text needs nothing here.",
              "attribute": "dialog-description",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "withoutHeader",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the header. This will also remove the default close button.",
              "attribute": "without-header",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "withoutClose",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables default close button.",
              "attribute": "without-close",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "lightDismiss",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When enabled, the dialog will be closed when the user clicks outside of it. Has no effect on a\n`non-modal` dialog: the click lands on the page, which has no backdrop to catch it.",
              "attribute": "light-dismiss"
            },
            {
              "kind": "field",
              "name": "nonModal",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Opens the dialog without blocking the page: no backdrop, no scroll lock, no focus trap, and the\ncontent behind it keeps taking clicks and keyboard focus. Use it for something the user works\n*with* the page on — a tool palette, a running log — rather than something they have to answer.\n\nThe dialog still lives in the top layer, so it is never covered by page content. `fullscreen`\nignores this: a dialog filling the viewport leaves nothing behind it to reach. `light-dismiss`\nstops working, because the UA sheet gives a popover's backdrop `pointer-events: none !important`\n(HTML Rendering, `:popover-open::backdrop`) and a click outside therefore reaches the page, not\nthe dialog.",
              "attribute": "non-modal",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "headerAlignment",
              "type": {
                "text": "'stacked' | 'inline'"
              },
              "default": "'stacked'",
              "description": "This is for convenience to switch between stacked and inline headers when using a sublabel",
              "attribute": "header-alignment",
              "reflects": true,
              "parsedType": {
                "text": "'stacked' | 'inline'"
              }
            },
            {
              "kind": "field",
              "name": "resizable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether the dialog is resizable",
              "attribute": "resizable",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "draggable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether the dialog is draggable. The drag-handle is the header, so make sure to add one if draggable is used",
              "attribute": "draggable",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "fullscreen",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "fullscreen",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "isDragging",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "dragStartX",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "dragStartY",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "dialogInitialX",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "dialogInitialY",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "isNativeOpen",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether the underlying native dialog is currently open — as either a modal dialog or a (draggable) popover.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "renderedWatcher",
              "privacy": "private",
              "readonly": true,
              "default": "new RenderedWatcher( () => this.dialog, isRendered => this.handleRenderedChange(isRendered) )"
            },
            {
              "kind": "method",
              "name": "handleRenderedChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "isRendered",
                  "type": {
                    "text": "boolean"
                  }
                }
              ],
              "description": "Third-party CSS — an ad blocker, a cookie-banner blocker — putting `display: none` on an open\ndialog takes the dialog away and leaves everything `showModal()` did behind it: the page\nscroll-locked and inert, with nothing on screen to explain it. Suspend the modal while the\ndialog does not render, and resume it when it does. `open` stays true throughout: the dialog is\nlogically open the whole time, it just has no boxes.\n\nResuming depends on `[part~='panel'] { display: grid }` in `dialog.styles.ts` applying\nunconditionally: it beats the UA's `dialog:not([open]) { display: none }`, so the suspended —\nand therefore natively closed — dialog still generates boxes as soon as the host renders again.\nMake that rule conditional on `[open]` and the watcher never reports its way back."
            },
            {
              "kind": "method",
              "name": "openNativeDialog",
              "privacy": "private",
              "description": "Opens the native dialog in the mode matching the current state. A `non-modal` (non-fullscreen) dialog opens as a\n`popover=\"manual\"`, so it lives in the top layer — no backdrop, no scroll lock, no focus trap — without portaling\nthe element into `<body>` (which would sever a wrapper's forwarded slots). Everything else opens modally and\nlocks body scrolling.\n\nUnlocking in the popover branch covers the switch between the two on an open dialog: the lock is taken out by\nwhichever open ran before, and only the element that took it can give it back."
            },
            {
              "kind": "method",
              "name": "closeNativeDialog",
              "privacy": "private",
              "description": "Closes the native dialog, matching how it was opened (popover vs. modal)."
            },
            {
              "kind": "method",
              "name": "connectedMoveCallback",
              "description": "An atomic move (`moveBefore`) runs this instead of the disconnect/reconnect pair. Engines\ndisagree on what it does to a modal `<dialog>` inside a shadow root, which this one always is:\nChromium 149 keeps it `:modal`, Firefox 151 leaves it `open` but no longer modal, with no\n`close` event — the page behind it live again, Escape and the toast stack gone with it. A\npopover survives the move in both. Reopen only what the move broke: reopening an intact dialog\nemits a native `close` and drops it out of the top layer for a frame."
            },
            {
              "kind": "field",
              "name": "#cancelReopen",
              "privacy": "private",
              "type": {
                "text": "(() => void) | null"
              },
              "default": "null",
              "description": "Cancels a reopen that waits for the modals above this one to close.",
              "parsedType": {
                "text": "null | {  }"
              }
            },
            {
              "kind": "field",
              "name": "#coveredBy",
              "privacy": "private",
              "type": {
                "text": "HTMLElement[]"
              },
              "default": "[]",
              "description": "The modals that painted above this one when it last left the DOM while listed. A dialog moved a\nsecond time before it reopened is no longer listed, and keeps the first snapshot."
            },
            {
              "kind": "method",
              "name": "#waitForModals",
              "privacy": "private",
              "parameters": [
                {
                  "name": "above",
                  "type": {
                    "text": "HTMLElement[]"
                  }
                },
                {
                  "name": "reopen",
                  "type": {
                    "text": "() => void"
                  }
                }
              ],
              "description": "Runs `reopen` once `above` have closed, and keeps what cancels the wait while it lasts."
            },
            {
              "kind": "method",
              "name": "#lostModality",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "description": "Open as a modal, yet no longer one — what Firefox 151 leaves after a move with `moveBefore`."
            },
            {
              "kind": "method",
              "name": "#reopenModal",
              "privacy": "private",
              "description": "close() hands focus back to the opener and showModal() moves it to the dialog; keep it where it was."
            },
            {
              "kind": "field",
              "name": "#lastFocused",
              "privacy": "private",
              "type": {
                "text": "HTMLElement | SVGElement | null"
              },
              "default": "null",
              "description": "The element inside that last held focus. A move by insertion takes focus away before the\ndisconnect runs, so nothing can be read then; this is what the reopen gives focus back to.\nForgotten only when focus demonstrably went elsewhere: a removal names no new target.",
              "parsedType": {
                "text": "null | HTMLElement | SVGElement"
              }
            },
            {
              "kind": "field",
              "name": "#rememberFocus",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "#forgetFocus",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "#holdsInFlatTree",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "node",
                  "type": {
                    "text": "Node"
                  }
                }
              ],
              "description": "Whether `node` sits inside this element, through slots and shadow roots on the way up."
            },
            {
              "kind": "method",
              "name": "#inContent",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "node",
                  "type": {
                    "text": "Node"
                  }
                }
              ],
              "description": "Whether `node` is slotted content of this dialog rather than its own chrome — the close button,\nthe header, the native `<dialog>` — counting a slot of this dialog anywhere on the way up, so\ncontent that reaches it through a composing element's slot counts too."
            },
            {
              "kind": "method",
              "name": "#encloses",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "element",
                  "type": {
                    "text": "Element"
                  }
                }
              ],
              "description": "Whether `element` encloses this dialog: an ancestor, or a composing element whose shadow root\nholds it. Focus that lands there after a move names no target inside this dialog."
            },
            {
              "kind": "method",
              "name": "#focusLostInside",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLElement | SVGElement | null"
                }
              },
              "description": "The element focus sat on inside before a move dropped it, if it is still inside and focus is\nlost — to the document, to an element enclosing this dialog, or to the dialog's own chrome,\nwhere showModal() puts it. On the chrome, the element last focused may be the chrome itself."
            },
            {
              "kind": "method",
              "name": "#reopenAfterReconnect",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "focusInitialElement",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "findSlottedAutofocus",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLElement | null"
                }
              }
            },
            {
              "kind": "method",
              "name": "requestClose",
              "privacy": "private",
              "parameters": [
                {
                  "name": "source",
                  "type": {
                    "text": "Element"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "addOpenListeners",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "removeOpenListeners",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleDialogCancel",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDialogClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDialogPointerDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "PointerEvent"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleDocumentKeyDown",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "#reapplyNativeMode",
              "privacy": "private",
              "description": "Brings the native element into the mode the current properties ask for. The mode is picked when\nthe dialog opens, so an open one has to be closed and reopened to change it — which is why this\ncompares against the state the element is actually in rather than against the previous property\nvalue: `nonModal` and `fullscreen` both feed the same decision, and either may have moved.\n\nFocus is taken back afterwards because neither native call leaves it where it was: closing a\nmodal hands focus to whatever opened it, and `showModal()` places it on the dialog itself. Both\nwould pull the caret out of a field the user is typing in. Focus that sits outside the dialog is\nleft alone — a non-modal dialog allows that, and on the way to modal the page becomes inert."
            },
            {
              "kind": "method",
              "name": "#focusedDescendant",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLElement | SVGElement | null"
                }
              },
              "description": "The focused element inside this dialog, or null when focus is elsewhere. Both walks cross shadow\nboundaries: an `ed-*` control delegates focus into its own shadow root, so `document.activeElement`\nstops at the custom element, and `contains()` would then miss the node it stopped at.\n\nThe way up is the flat tree, not the node tree: a wrapper composing this dialog passes the\nconsumer's node through a `<slot>`, so the node sits in the *wrapper's* light DOM and no chain of\n`parentNode` from it ever reaches this element. `assignedSlot` is the step that crosses it."
            },
            {
              "kind": "method",
              "name": "show",
              "privacy": "private",
              "description": "Shows the dialog."
            },
            {
              "kind": "field",
              "name": "#isPinned",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the panel carries an inline position. Set by dragging, cleared by `center()`. While it\nis false the CSS centers the panel, which is why nothing measures the panel on open."
            },
            {
              "kind": "method",
              "name": "center",
              "description": "Returns the dialog to the middle of the viewport, where the CSS keeps it centered until it is\ndragged again — including while its content is still growing. A dialog that has not been dragged\nis already there, and a modal one is centered by the same rules, so this is a no-op for both."
            },
            {
              "kind": "method",
              "name": "#pin",
              "privacy": "private",
              "parameters": [
                {
                  "name": "x",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "y",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Fixes the panel at a viewport position, taking it out of the centering the CSS would otherwise\ndo. `inset: auto` clears the base rule's `top/right/bottom/left: 0`, and `margin: 0` its\n`margin: auto` — with either left standing, a fixed panel with a set width stays centered and\n`left` is ignored."
            },
            {
              "kind": "method",
              "name": "#clampToViewport",
              "privacy": "private",
              "parameters": [
                {
                  "name": "x",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "y",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Holds a position inside the viewport: 50 px of the panel horizontally, the whole header\nvertically, so there is always something left to grab it by. Sizes come from `offsetWidth` and\nthe header's `offsetHeight` rather than `getBoundingClientRect()`, which reports the panel's\nanimated scale while the open or pulse keyframes run."
            },
            {
              "kind": "field",
              "name": "handleDragStart",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDrag",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleWindowResize",
              "privacy": "private",
              "description": "A shrinking viewport leaves a pinned dialog at coordinates that are now outside it — including\nfully outside, with nothing left to drag it back by. One that carries no pin needs nothing: the CSS\nre-centers it."
            },
            {
              "kind": "field",
              "name": "handleDragStop",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "Emitted when the dialog opens. Cancelable; calling `preventDefault()` keeps it closed.",
              "name": "ed-show",
              "reactName": "onEdShow",
              "eventName": "EdShowEvent"
            },
            {
              "description": "Emitted after the dialog opens and all animations are complete.",
              "name": "ed-after-show",
              "reactName": "onEdAfterShow",
              "eventName": "EdAfterShowEvent"
            },
            {
              "type": {
                "text": "{ source: Element }"
              },
              "description": "Emitted before the dialog closes. 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. Cancelable; calling `preventDefault()` keeps it open.",
              "name": "ed-hide",
              "reactName": "onEdHide",
              "eventName": "EdHideEvent"
            },
            {
              "description": "Emitted after the dialog closes and all animations are complete.",
              "name": "ed-after-hide",
              "reactName": "onEdAfterHide",
              "eventName": "EdAfterHideEvent"
            }
          ],
          "attributes": [
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether the dialog is open. Toggle this attribute to show and hide the dialog.",
              "fieldName": "open"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "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 `label` slot instead. Not `title`: that global\nattribute shows a browser tooltip over the whole dialog.",
              "fieldName": "label"
            },
            {
              "name": "sublabel",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The dialog's subtitle. If you need to display HTML, use the `sublabel` slot instead.",
              "fieldName": "sublabel"
            },
            {
              "name": "aria-label",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The dialog's accessible name, overriding the visible title. Mirrored onto the internal\nnative `<dialog>`, where the dialog role lives — an aria-label left on the host alone would\nsit on a role-less element and be ignored by assistive tech (house pattern: ed-checkbox).",
              "fieldName": "ariaLabel",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "dialog-role",
              "type": {
                "text": "'alertdialog' | null"
              },
              "default": "null",
              "description": "The role of the internal native `<dialog>`, overriding its implicit `dialog` role — set\n`alertdialog` for an interruption the user has to answer before continuing. It lands on the\nnative element rather than the host, where a second role would announce the dialog twice\n(`rules/api-design.md`), and it is applied in render(), so it is in place before showModal()\nruns — a role stamped afterwards can miss the announcement.",
              "fieldName": "dialogRole",
              "parsedType": {
                "text": "null | 'alertdialog'"
              }
            },
            {
              "name": "dialog-description",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "A description announced when the dialog opens, wired to the native `<dialog>` through\n`aria-describedby`. Use it when the describing text sits outside this element's shadow root,\nwhere an ID reference cannot reach it — a wrapper composing ed-dialog is the case. A dialog\nwhose own body carries the text needs nothing here.",
              "fieldName": "dialogDescription",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "without-header",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the header. This will also remove the default close button.",
              "fieldName": "withoutHeader"
            },
            {
              "name": "without-close",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables default close button.",
              "fieldName": "withoutClose"
            },
            {
              "name": "light-dismiss",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When enabled, the dialog will be closed when the user clicks outside of it. Has no effect on a\n`non-modal` dialog: the click lands on the page, which has no backdrop to catch it.",
              "fieldName": "lightDismiss"
            },
            {
              "name": "non-modal",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Opens the dialog without blocking the page: no backdrop, no scroll lock, no focus trap, and the\ncontent behind it keeps taking clicks and keyboard focus. Use it for something the user works\n*with* the page on — a tool palette, a running log — rather than something they have to answer.\n\nThe dialog still lives in the top layer, so it is never covered by page content. `fullscreen`\nignores this: a dialog filling the viewport leaves nothing behind it to reach. `light-dismiss`\nstops working, because the UA sheet gives a popover's backdrop `pointer-events: none !important`\n(HTML Rendering, `:popover-open::backdrop`) and a click outside therefore reaches the page, not\nthe dialog.",
              "fieldName": "nonModal"
            },
            {
              "name": "header-alignment",
              "type": {
                "text": "'stacked' | 'inline'"
              },
              "default": "'stacked'",
              "description": "This is for convenience to switch between stacked and inline headers when using a sublabel",
              "fieldName": "headerAlignment",
              "parsedType": {
                "text": "'stacked' | 'inline'"
              }
            },
            {
              "name": "resizable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether the dialog is resizable",
              "fieldName": "resizable"
            },
            {
              "name": "draggable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether the dialog is draggable. The drag-handle is the header, so make sure to add one if draggable is used",
              "fieldName": "draggable"
            },
            {
              "name": "fullscreen",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "fullscreen"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Dialogs, sometimes called \"modals\", appear above the page and block it until they are answered — or,\nwith `non-modal`, sit above it while the page keeps working.",
          "jsDoc": "/**\n * @summary Dialogs, sometimes called \"modals\", appear above the page and block it until they are answered — or,\n *  with `non-modal`, sit above it while the page keeps working.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/dialog\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-button\n * @dependency ed-icon\n *\n * @slot - The dialog's main content.\n * @slot label - The dialog's title. Alternatively, you can use the `label` attribute.\n * @slot sublabel - The dialog's subtitle. Alternatively, you can use the `sublabel` attribute.\n * @slot header-actions - Optional actions to add to the header. Works best with `<ed-button>`.\n * @slot footer - The dialog's footer, usually one or more buttons representing various options.\n *\n * @event ed-show - Emitted when the dialog opens.\n *  Cancelable; calling `preventDefault()` keeps it closed.\n * @event ed-after-show - Emitted after the dialog opens and all animations are complete.\n * @event {{ source: Element }} ed-hide - Emitted before the dialog closes. You can inspect `event.detail.source` to see which\n *  element caused the dialog to close. If the source is the dialog element itself, the user has pressed [[Escape]] or\n *  the dialog has been closed programmatically. Avoid using this unless closing the dialog will result in destructive\n *  behavior such as data loss.\n *  Cancelable; calling `preventDefault()` keeps it open.\n * @event ed-after-hide - Emitted after the dialog closes and all animations are complete.\n *\n * @csspart panel - The dialog's surface, its native `<dialog>` element. Carries the frame, background and shadow.\n * @csspart header - The dialog's header. This element wraps the title and header actions.\n * @csspart header-actions - Optional actions to add to the header. Works best with `<ed-button>`.\n * @csspart title - The dialog's title.\n * @csspart subtitle - The dialog's subtitle.\n * @csspart close-button - The close button, a `<ed-button>`.\n * @csspart close-button__base - The close button's exported `base` part.\n * @csspart body - The dialog's body.\n * @csspart footer - The dialog's footer.\n *\n * @cssproperty [--ed-dialog-spacing=var(--ed-panel-spacing)] - The amount of space around and between the dialog's content.\n * @cssproperty --ed-dialog-width - The preferred width of the dialog. Note that the dialog will shrink to accommodate smaller screens.\n * @cssproperty [--ed-dialog-min-width=15rem] - The width the dialog does not shrink below, resized or on a small screen; never wider than the screen minus its margin.\n * @cssproperty [--ed-show-duration=var(--ed-transition-normal)] - The animation duration when showing the dialog.\n * @cssproperty [--ed-hide-duration=var(--ed-transition-normal)] - The animation duration when hiding the dialog.\n * @cssproperty --ed-dialog-backdrop-filter - A CSS filter, e.g. `blur(4px)`, applied to the backdrop element behind the dialog.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/dialog",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-button",
            "ed-icon"
          ],
          "tagName": "ed-dialog",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdDialog",
            "module": "components/dialog/dialog.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-dialog",
          "declaration": {
            "name": "EdDialog",
            "module": "components/dialog/dialog.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/alert-dialog/alert-dialog.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdAlertDialog",
          "cssParts": [
            {
              "description": "The dialog's surface, its native `<dialog>` element, forwarded from the inner `<ed-dialog>`. Carries the frame, background and shadow.",
              "name": "panel"
            },
            {
              "description": "The icon + content grid container.",
              "name": "body"
            },
            {
              "description": "The icon wrapper.",
              "name": "icon"
            },
            {
              "description": "The title + message wrapper.",
              "name": "content"
            },
            {
              "description": "The title element.",
              "name": "title"
            },
            {
              "description": "The message wrapper.",
              "name": "message"
            },
            {
              "description": "The footer wrapper.",
              "name": "footer"
            }
          ],
          "slots": [
            {
              "description": "The message body.",
              "name": ""
            },
            {
              "description": "Override the title (HTML). Its plain text becomes the dialog's accessible name when no `label` attribute is set.",
              "name": "label"
            },
            {
              "description": "Override the default icon (HTML).",
              "name": "icon"
            },
            {
              "description": "Full override of footer buttons. When provided, `confirm-text` and `cancel-text` are ignored.",
              "name": "footer"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether the alert dialog is open. Toggle this attribute to show or hide the dialog.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "type",
              "type": {
                "text": "'warning' | 'error' | 'info' | 'help'"
              },
              "default": "'info'",
              "description": "The severity. Selects the icon and accent color.",
              "attribute": "type",
              "reflects": true,
              "parsedType": {
                "text": "'warning' | 'error' | 'info' | 'help'"
              }
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The heading text. If you need HTML, use the `label` slot. Not `title`: that global attribute shows a browser\ntooltip over the whole dialog.",
              "attribute": "label",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "confirmText",
              "type": {
                "text": "string | undefined"
              },
              "description": "If set, renders a primary confirm button with this label.",
              "attribute": "confirm-text"
            },
            {
              "kind": "field",
              "name": "cancelText",
              "type": {
                "text": "string | undefined"
              },
              "description": "If set, renders a secondary cancel button with this label.",
              "attribute": "cancel-text"
            },
            {
              "kind": "field",
              "name": "lightDismiss",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Closes the alert when the user clicks outside it, as [[Escape]] does — a way back, not an answer, so it\nemits `ed-hide` and no `ed-alert-dialog-cancel`. Leave it off where the alert asks for a decision between\ntwo paths that both lead on.",
              "attribute": "light-dismiss"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "messageText",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "labelText",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement | null"
              },
              "privacy": "private",
              "parsedType": {
                "text": "null | HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "labelSlot",
              "type": {
                "text": "HTMLSlotElement | null"
              },
              "privacy": "private",
              "parsedType": {
                "text": "null | HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "textObserver",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "accessibleName",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "hasConfirm",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "hasCancel",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "handleInnerShow",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleInnerHide",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleInnerAfterShow",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleInnerAfterHide",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleLabelSlotChange",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDefaultSlotChange",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "readSlotText",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleCloseClick",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleConfirmClick",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleCancelClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderDefaultFooter",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "Emitted when the alert opens. Forwarded from the inner ed-dialog. Cancelable; calling `preventDefault()` keeps it closed.",
              "name": "ed-show",
              "reactName": "onEdShow",
              "eventName": "EdShowEvent"
            },
            {
              "description": "Emitted after the alert opens and all animations complete. Forwarded from the inner ed-dialog.",
              "name": "ed-after-show",
              "reactName": "onEdAfterShow",
              "eventName": "EdAfterShowEvent"
            },
            {
              "type": {
                "text": "{ source: Element }"
              },
              "description": "Emitted before the alert closes. Forwarded from the inner ed-dialog; `event.detail.source` names the element that caused the close, and the dialog itself means [[Escape]], a click outside with `light-dismiss`, or a programmatic close. Cancelable; calling `preventDefault()` keeps it open.",
              "name": "ed-hide",
              "reactName": "onEdHide",
              "eventName": "EdHideEvent"
            },
            {
              "description": "Emitted after the alert closes and all animations complete. Forwarded from the inner ed-dialog.",
              "name": "ed-after-hide",
              "reactName": "onEdAfterHide",
              "eventName": "EdAfterHideEvent"
            },
            {
              "description": "Emitted when the default-rendered confirm button is clicked. Cancelable; calling `preventDefault()` keeps the dialog open.",
              "name": "ed-alert-dialog-confirm",
              "reactName": "onEdAlertDialogConfirm",
              "eventName": "EdAlertDialogConfirmEvent"
            },
            {
              "description": "Emitted when the default-rendered cancel button is clicked. Cancelable; calling `preventDefault()` keeps the dialog open.",
              "name": "ed-alert-dialog-cancel",
              "reactName": "onEdAlertDialogCancel",
              "eventName": "EdAlertDialogCancelEvent"
            }
          ],
          "attributes": [
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether the alert dialog is open. Toggle this attribute to show or hide the dialog.",
              "fieldName": "open"
            },
            {
              "name": "type",
              "type": {
                "text": "'warning' | 'error' | 'info' | 'help'"
              },
              "default": "'info'",
              "description": "The severity. Selects the icon and accent color.",
              "fieldName": "type",
              "parsedType": {
                "text": "'warning' | 'error' | 'info' | 'help'"
              }
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The heading text. If you need HTML, use the `label` slot. Not `title`: that global attribute shows a browser\ntooltip over the whole dialog.",
              "fieldName": "label"
            },
            {
              "name": "confirm-text",
              "type": {
                "text": "string | undefined"
              },
              "description": "If set, renders a primary confirm button with this label.",
              "fieldName": "confirmText"
            },
            {
              "name": "cancel-text",
              "type": {
                "text": "string | undefined"
              },
              "description": "If set, renders a secondary cancel button with this label.",
              "fieldName": "cancelText"
            },
            {
              "name": "light-dismiss",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Closes the alert when the user clicks outside it, as [[Escape]] does — a way back, not an answer, so it\nemits `ed-hide` and no `ed-alert-dialog-cancel`. Leave it off where the alert asks for a decision between\ntwo paths that both lead on.",
              "fieldName": "lightDismiss"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Alert dialogs interrupt the user with a brief, severity-coded message and at most a confirm/cancel choice.",
          "jsDoc": "/**\n * @summary Alert dialogs interrupt the user with a brief, severity-coded message and at most a confirm/cancel choice.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/alert-dialog\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-dialog\n * @dependency ed-button\n * @dependency ed-icon\n *\n * @slot - The message body.\n * @slot label - Override the title (HTML). Its plain text becomes the dialog's accessible name when no\n *  `label` attribute is set.\n * @slot icon - Override the default icon (HTML).\n * @slot footer - Full override of footer buttons. When provided, `confirm-text` and `cancel-text` are ignored.\n *\n * @event ed-show - Emitted when the alert opens. Forwarded from the inner ed-dialog.\n *  Cancelable; calling `preventDefault()` keeps it closed.\n * @event ed-after-show - Emitted after the alert opens and all animations complete. Forwarded from the inner ed-dialog.\n * @event {{ source: Element }} ed-hide - Emitted before the alert closes. Forwarded from the inner ed-dialog;\n *  `event.detail.source` names the element that caused the close, and the dialog itself means [[Escape]], a click\n *  outside with `light-dismiss`, or a programmatic close. Cancelable; calling `preventDefault()` keeps it open.\n * @event ed-after-hide - Emitted after the alert closes and all animations complete. Forwarded from the inner ed-dialog.\n * @event ed-alert-dialog-confirm - Emitted when the default-rendered confirm button is clicked. Cancelable; calling\n *  `preventDefault()` keeps the dialog open.\n * @event ed-alert-dialog-cancel - Emitted when the default-rendered cancel button is clicked. Cancelable; calling\n *  `preventDefault()` keeps the dialog open.\n *\n * @csspart panel - The dialog's surface, its native `<dialog>` element, forwarded from the inner `<ed-dialog>`.\n *   Carries the frame, background and shadow.\n * @csspart body - The icon + content grid container.\n * @csspart icon - The icon wrapper.\n * @csspart content - The title + message wrapper.\n * @csspart title - The title element.\n * @csspart message - The message wrapper.\n * @csspart footer - The footer wrapper.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/alert-dialog",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-dialog",
            "ed-button",
            "ed-icon"
          ],
          "tagName": "ed-alert-dialog",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdAlertDialog",
            "module": "components/alert-dialog/alert-dialog.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-alert-dialog",
          "declaration": {
            "name": "EdAlertDialog",
            "module": "components/alert-dialog/alert-dialog.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/animation/animation.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdAnimation",
          "slots": [
            {
              "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.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "animation",
              "type": {
                "text": "Animation | undefined"
              },
              "privacy": "private",
              "parsedType": {
                "text": "{ currentTime: null | number | { add: {  }, div: {  }, equals: {  }, max: {  }, min: {  }, mul: {  }, sub: {  }, to: {  }, toSum: {  }, type: {  }, toString: {  } }, effect: null | { getComputedTiming: {  }, getTiming: {  }, updateTiming: {  } }, finished: { then: {  }, catch: {  }, finally: {  }, __@toStringTag@537: string }, id: string, oncancel: null | {  }, onfinish: null | {  }, onremove: null | {  }, pending: boolean, playState: 'idle' | 'finished' | 'paused' | 'running', playbackRate: number, ready: { then: {  }, catch: {  }, finally: {  }, __@toStringTag@537: string }, replaceState: 'active' | 'persisted' | 'removed', startTime: null | number | { add: {  }, div: {  }, equals: {  }, max: {  }, min: {  }, mul: {  }, sub: {  }, to: {  }, toSum: {  }, type: {  }, toString: {  } }, timeline: null | { currentTime: null | number | { add: {  }, div: {  }, equals: {  }, max: {  }, min: {  }, mul: {  }, sub: {  }, to: {  }, toSum: {  }, type: {  }, toString: {  } } }, cancel: {  }, commitStyles: {  }, finish: {  }, pause: {  }, persist: {  }, play: {  }, reverse: {  }, updatePlaybackRate: {  }, addEventListener: {  }, removeEventListener: {  }, dispatchEvent: {  } } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "hasStarted",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "Promise<HTMLSlotElement>"
              }
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "'none'",
              "description": "The name of the built-in animation to use. For custom animations, use the `keyframes` prop.",
              "attribute": "name"
            },
            {
              "kind": "field",
              "name": "play",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Plays the animation. When omitted, the animation will be paused. This attribute will be automatically removed when\nthe animation finishes or gets canceled.\n\nFor a viewer who has asked their system for reduced motion, the run is squeezed into about a\nmillisecond and an endless animation is capped at one iteration, so nothing is seen to move and\nthe animation does reach an end. `delay`, `end-delay` and `playback-rate` are left alone, so\nthose still decide when the end arrives. One consequence has no counterpart without the\npreference: the default endless animation now finishes, which clears `play` — code that expects\n`play` to stay set should set it again rather than assume it.",
              "attribute": "play",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "delay",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The number of milliseconds to delay the start of the animation.",
              "attribute": "delay"
            },
            {
              "kind": "field",
              "name": "direction",
              "type": {
                "text": "PlaybackDirection"
              },
              "default": "'normal'",
              "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)",
              "attribute": "direction",
              "parsedType": {
                "text": "'alternate' | 'alternate-reverse' | 'normal' | 'reverse'"
              }
            },
            {
              "kind": "field",
              "name": "duration",
              "type": {
                "text": "number"
              },
              "default": "1000",
              "description": "The number of milliseconds each iteration of the animation takes to complete.",
              "attribute": "duration"
            },
            {
              "kind": "field",
              "name": "easing",
              "type": {
                "text": "string"
              },
              "default": "'linear'",
              "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)`.",
              "attribute": "easing"
            },
            {
              "kind": "field",
              "name": "endDelay",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The number of milliseconds to delay after the active period of an animation sequence.",
              "attribute": "end-delay"
            },
            {
              "kind": "field",
              "name": "fill",
              "type": {
                "text": "FillMode"
              },
              "default": "'auto'",
              "description": "Sets how the animation applies styles to its target before and after its execution.",
              "attribute": "fill",
              "parsedType": {
                "text": "'auto' | 'both' | 'none' | 'backwards' | 'forwards'"
              }
            },
            {
              "kind": "field",
              "name": "iterations",
              "default": "Infinity",
              "description": "The number of iterations to run before the animation completes. Defaults to `Infinity`, which loops.",
              "attribute": "iterations"
            },
            {
              "kind": "field",
              "name": "iterationStart",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The offset at which to start the animation, usually between 0 (start) and 1 (end).",
              "attribute": "iteration-start"
            },
            {
              "kind": "field",
              "name": "keyframes",
              "type": {
                "text": "Keyframe[] | undefined"
              },
              "description": "The keyframes to use for the animation. If this is set, `name` will be ignored.",
              "parsedType": {
                "text": "{ composite?: 'replace' | 'auto' | 'accumulate' | 'add', easing?: string, offset?: null | number }[] | undefined"
              }
            },
            {
              "kind": "field",
              "name": "playbackRate",
              "type": {
                "text": "number"
              },
              "default": "1",
              "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.",
              "attribute": "playback-rate"
            },
            {
              "kind": "field",
              "name": "currentTime",
              "type": {
                "text": "CSSNumberish"
              },
              "description": "Gets and sets the current animation time.",
              "parsedType": {
                "text": "number | { add: {  }, div: {  }, equals: {  }, max: {  }, min: {  }, mul: {  }, sub: {  }, to: {  }, toSum: {  }, type: {  }, toString: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "handleAnimationFinish",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleAnimationCancel",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "createAnimation",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "destroyAnimation",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "cancel",
              "description": "Clears all keyframe effects caused by this animation and aborts its playback."
            },
            {
              "kind": "method",
              "name": "finish",
              "description": "Sets the playback time to the end of the animation corresponding to the current playback\ndirection.\n\nThrows `InvalidStateError` where there is no end to seek to: a playback rate of zero, or a\nplayback rate above zero with an effect end of infinity. Both reachable here, through\n`playback-rate=\"0\"` and through the default `iterations` of `Infinity`. The two conditions are\none rule, not two — `playback-rate=\"-1\"` with endless `iterations` seeks to the start and does\nnot throw. Measured in Chromium and Firefox. Under a reduced-motion preference the default is\nno longer endless, so the same call succeeds there.\n\nIt does nothing at all when there is no animation yet — before the first render, and while the\nelement is out of the document, which is also true of `cancel()`."
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "Emitted when the animation is canceled. Reports what already happened, so it is not cancelable.",
              "name": "ed-animation-cancel",
              "reactName": "onEdAnimationCancel",
              "eventName": "EdAnimationCancelEvent"
            },
            {
              "description": "Emitted when the animation finishes. Reports what already happened, so it is not cancelable.",
              "name": "ed-animation-finish",
              "reactName": "onEdAnimationFinish",
              "eventName": "EdAnimationFinishEvent"
            },
            {
              "description": "Emitted when the animation starts or restarts.",
              "name": "ed-animation-start",
              "reactName": "onEdAnimationStart",
              "eventName": "EdAnimationStartEvent"
            }
          ],
          "attributes": [
            {
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "'none'",
              "description": "The name of the built-in animation to use. For custom animations, use the `keyframes` prop.",
              "fieldName": "name"
            },
            {
              "name": "play",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Plays the animation. When omitted, the animation will be paused. This attribute will be automatically removed when\nthe animation finishes or gets canceled.\n\nFor a viewer who has asked their system for reduced motion, the run is squeezed into about a\nmillisecond and an endless animation is capped at one iteration, so nothing is seen to move and\nthe animation does reach an end. `delay`, `end-delay` and `playback-rate` are left alone, so\nthose still decide when the end arrives. One consequence has no counterpart without the\npreference: the default endless animation now finishes, which clears `play` — code that expects\n`play` to stay set should set it again rather than assume it.",
              "fieldName": "play"
            },
            {
              "name": "delay",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The number of milliseconds to delay the start of the animation.",
              "fieldName": "delay"
            },
            {
              "name": "direction",
              "type": {
                "text": "PlaybackDirection"
              },
              "default": "'normal'",
              "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)",
              "fieldName": "direction",
              "parsedType": {
                "text": "'alternate' | 'alternate-reverse' | 'normal' | 'reverse'"
              }
            },
            {
              "name": "duration",
              "type": {
                "text": "number"
              },
              "default": "1000",
              "description": "The number of milliseconds each iteration of the animation takes to complete.",
              "fieldName": "duration"
            },
            {
              "name": "easing",
              "type": {
                "text": "string"
              },
              "default": "'linear'",
              "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)`.",
              "fieldName": "easing"
            },
            {
              "name": "end-delay",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The number of milliseconds to delay after the active period of an animation sequence.",
              "fieldName": "endDelay"
            },
            {
              "name": "fill",
              "type": {
                "text": "FillMode"
              },
              "default": "'auto'",
              "description": "Sets how the animation applies styles to its target before and after its execution.",
              "fieldName": "fill",
              "parsedType": {
                "text": "'auto' | 'both' | 'none' | 'backwards' | 'forwards'"
              }
            },
            {
              "name": "iterations",
              "default": "Infinity",
              "description": "The number of iterations to run before the animation completes. Defaults to `Infinity`, which loops.",
              "fieldName": "iterations"
            },
            {
              "name": "iteration-start",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The offset at which to start the animation, usually between 0 (start) and 1 (end).",
              "fieldName": "iterationStart"
            },
            {
              "name": "playback-rate",
              "type": {
                "text": "number"
              },
              "default": "1",
              "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.",
              "fieldName": "playbackRate"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "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).",
          "jsDoc": "/**\n * @summary 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 * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/animation\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @event ed-animation-cancel - Emitted when the animation is canceled. Reports what already happened, so it is not\n *  cancelable.\n * @event ed-animation-finish - Emitted when the animation finishes. Reports what already happened, so it is not\n *  cancelable.\n * @event ed-animation-start - Emitted when the animation starts or restarts.\n *\n * @slot - The element to animate. Avoid slotting in more than one element, as subsequent ones will be ignored. To\n *  animate multiple elements, either wrap them in a single container or use multiple `<ed-animation>` elements.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/animation",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-animation",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdAnimation",
            "module": "components/animation/animation.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-animation",
          "declaration": {
            "name": "EdAnimation",
            "module": "components/animation/animation.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/test/pointer-utilities.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "isSafari"
        },
        {
          "kind": "function",
          "name": "clickOnElement",
          "parameters": [
            {
              "name": "el",
              "type": {
                "text": "Element"
              }
            },
            {
              "name": "position",
              "default": "'center'",
              "type": {
                "text": "'top' | 'right' | 'bottom' | 'left' | 'center'"
              }
            },
            {
              "name": "offsetX",
              "default": "0"
            },
            {
              "name": "offsetY",
              "default": "0"
            }
          ],
          "description": "A testing utility that measures an element's position and clicks on it."
        },
        {
          "kind": "function",
          "name": "moveMouseOnElement",
          "parameters": [
            {
              "name": "el",
              "type": {
                "text": "Element"
              }
            },
            {
              "name": "position",
              "default": "'center'",
              "type": {
                "text": "'top' | 'right' | 'bottom' | 'left' | 'center'"
              }
            },
            {
              "name": "offsetX",
              "default": "0"
            },
            {
              "name": "offsetY",
              "default": "0"
            }
          ],
          "description": "A testing utility that moves the mouse onto an element."
        },
        {
          "kind": "function",
          "name": "dragElement",
          "return": {
            "type": {
              "text": "Promise<void>"
            }
          },
          "parameters": [
            {
              "name": "el",
              "type": {
                "text": "Element"
              }
            },
            {
              "name": "deltaX",
              "default": "0"
            },
            {
              "name": "deltaY",
              "default": "0"
            },
            {
              "name": "callbacks",
              "default": "{}",
              "type": {
                "text": "{\n    afterMouseDown?: () => void | Promise<void>;\n    afterMouseMove?: () => void | Promise<void>;\n  }"
              }
            }
          ],
          "description": "A testing utility that drags an element with the mouse."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "isSafari",
          "declaration": {
            "name": "isSafari",
            "module": "internal/test/pointer-utilities.js"
          }
        },
        {
          "kind": "js",
          "name": "clickOnElement",
          "declaration": {
            "name": "clickOnElement",
            "module": "internal/test/pointer-utilities.js"
          }
        },
        {
          "kind": "js",
          "name": "moveMouseOnElement",
          "declaration": {
            "name": "moveMouseOnElement",
            "module": "internal/test/pointer-utilities.js"
          }
        },
        {
          "kind": "js",
          "name": "dragElement",
          "declaration": {
            "name": "dragElement",
            "module": "internal/test/pointer-utilities.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/anchor-aria.js",
      "declarations": [
        {
          "kind": "function",
          "name": "resolveAnchorAriaTarget",
          "return": {
            "type": {
              "text": "Promise<HTMLElement | null>"
            }
          },
          "parameters": [
            {
              "name": "anchor",
              "type": {
                "text": "Element | null"
              }
            }
          ],
          "description": "Resolves the node that actually carries a trigger's ARIA semantics. eurodata-ui hosts are\nintentionally role-less, so for an `<ed-button>` the semantic node is its internal native\nbutton/anchor (`[part~=\"base\"]`); any other element carries its own semantics. Returns null\ninstead of throwing when the internal node isn't available (e.g. before upgrade) — callers\nshould skip their sync then and retry on the next state change."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "resolveAnchorAriaTarget",
          "declaration": {
            "name": "resolveAnchorAriaTarget",
            "module": "internal/anchor-aria.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/to-px.js",
      "declarations": [
        {
          "kind": "function",
          "name": "toPx",
          "return": {
            "type": {
              "text": "number"
            }
          },
          "parameters": [
            {
              "name": "value",
              "type": {
                "text": "string | number"
              }
            },
            {
              "name": "element",
              "default": "document.documentElement",
              "type": {
                "text": "HTMLElement | SVGElement"
              }
            }
          ],
          "description": "Resolves a CSS length expression to a pixel number, evaluating relative units\n(`em`, `rem`, `%`, viewport units, …) against the given element. A bare number\n— or numeric string — is returned as-is.\n\nFalls back to a best-effort parse on engines without `CSS.registerProperty`."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "toPx",
          "declaration": {
            "name": "toPx",
            "module": "internal/to-px.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/drawer/drawer.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDrawer",
          "cssProperties": [
            {
              "description": "The amount of space around and between the drawer's content.",
              "name": "--ed-drawer-spacing"
            },
            {
              "description": "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.",
              "name": "--ed-drawer-size"
            },
            {
              "description": "The animation duration when showing the drawer.",
              "name": "--ed-show-duration",
              "default": "var(--ed-transition-normal)"
            },
            {
              "description": "The animation duration when hiding the drawer.",
              "name": "--ed-hide-duration",
              "default": "var(--ed-transition-normal)"
            },
            {
              "description": "A CSS filter, e.g. `blur(4px)`, applied to the backdrop element behind the drawer.",
              "name": "--ed-drawer-backdrop-filter"
            }
          ],
          "cssParts": [
            {
              "description": "The drawer's sliding surface, the element the header, body and footer sit in. Carries the frame, background and shadow. At the viewport edge it is a native `<dialog>`, a `contained` drawer renders a `<div>` instead — the part is the same in both, so one selector reaches either.",
              "name": "panel"
            },
            {
              "description": "The backdrop a `contained` drawer draws over its siblings. `contained` only.",
              "name": "overlay"
            },
            {
              "description": "The drawer's header. This element wraps the title and header actions.",
              "name": "header"
            },
            {
              "description": "Optional actions to add to the header. Works best with `<ed-button>`.",
              "name": "header-actions"
            },
            {
              "description": "The drawer's title.",
              "name": "title"
            },
            {
              "description": "The close button, a `<ed-button>`.",
              "name": "close-button"
            },
            {
              "description": "The close button's exported `base` part.",
              "name": "close-button__base"
            },
            {
              "description": "The drawer's body.",
              "name": "body"
            },
            {
              "description": "The drawer's footer.",
              "name": "footer"
            }
          ],
          "slots": [
            {
              "description": "The drawer's main content.",
              "name": ""
            },
            {
              "description": "The drawer's label. Alternatively, you can use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "Optional actions to add to the header. Works best with `<ed-button>`.",
              "name": "header-actions"
            },
            {
              "description": "The drawer's footer, usually one or more buttons representing various options.",
              "name": "footer"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'footer', 'header-actions', 'label')"
            },
            {
              "kind": "field",
              "name": "originalTrigger",
              "type": {
                "text": "HTMLElement | null"
              },
              "privacy": "private",
              "parsedType": {
                "text": "null | HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "#isClosing",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "True while the hide animation runs, so a second close request can't tear down twice."
            },
            {
              "kind": "field",
              "name": "#isSuspended",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "True while what the drawer blocks is held back because it does not render."
            },
            {
              "kind": "field",
              "name": "drawer",
              "type": {
                "text": "HTMLDialogElement"
              }
            },
            {
              "kind": "field",
              "name": "panel",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "overlay",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the drawer is open. Toggle this attribute to show and hide the drawer.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "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.",
              "attribute": "label",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "ariaLabel",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The drawer's accessible name, overriding the visible label. Mirrored onto the internal\ndialog node, where the dialog role lives — an aria-label left on the host alone would sit\non a role-less element and be ignored by assistive tech (house pattern: ed-checkbox).",
              "attribute": "aria-label",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "placement",
              "type": {
                "text": "'top' | 'end' | 'bottom' | 'start'"
              },
              "default": "'end'",
              "description": "The direction from which the drawer will open.",
              "attribute": "placement",
              "reflects": true,
              "parsedType": {
                "text": "'start' | 'end' | 'top' | 'bottom'"
              }
            },
            {
              "kind": "field",
              "name": "withoutHeader",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the header. This will also remove the default close button.",
              "attribute": "without-header",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "withoutClose",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the default close button while keeping the header visible.",
              "attribute": "without-close",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "lightDismiss",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When enabled, the drawer will be closed when the user clicks outside of it.",
              "attribute": "light-dismiss"
            },
            {
              "kind": "field",
              "name": "withFooter",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "with-footer"
            },
            {
              "kind": "field",
              "name": "contained",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "contained",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "push",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When used with `contained`, the drawer pushes adjacent content aside instead of overlaying it. The parent element must be a flex container.",
              "attribute": "push",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "withoutModality",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Opens the drawer without blocking what it covers: no backdrop, and the content behind it stays\noperable. Use it for a panel the user works alongside rather than instead of.\n\nRequires `contained`. A drawer at the viewport edge relies on the top layer for its position and\nstacking, and only a modal dialog is put there — so this is ignored, with a warning, on a drawer\nthat is not contained.\n\nInverted because a boolean attribute cannot express `false`: its absence is the only way to\nspell the default, so the default has to be the unset state.\n\n`push` implies it — a drawer that moves content aside rather than covering it blocks nothing.",
              "attribute": "without-modality",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "isModal",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether this drawer blocks what it covers. Scoped to the viewport when it sits there, and to the\nparent element under `contained` — which is why the contained branch never sets `aria-modal`:\nthat attribute tells assistive technology the whole document is unavailable, and it is not.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "isPushing",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether the drawer pushes content aside rather than covering it. `push` means that only inside a\ncontainer; at the viewport edge the drawer is modal, and takes Escape and focus like any other.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "#showModal",
              "privacy": "private",
              "description": "Opens the native dialog modally. Every call puts it at the top of the top layer."
            },
            {
              "kind": "method",
              "name": "#closeModal",
              "privacy": "private",
              "description": "After close(), not before: see `ed-dialog`'s closeNativeDialog."
            },
            {
              "kind": "field",
              "name": "#blockedSiblings",
              "privacy": "private",
              "type": {
                "text": "HTMLElement[]"
              },
              "default": "[]",
              "description": "Siblings this drawer made inert, so it releases exactly those and not someone else's."
            },
            {
              "kind": "field",
              "name": "#lastFocused",
              "privacy": "private",
              "type": {
                "text": "HTMLElement | null"
              },
              "default": "null",
              "description": "The element inside that last held focus. A move by insertion takes focus away before the\ndisconnect runs, so nothing can be read then; this is what the reopen gives focus back to.\nForgotten only when focus demonstrably went elsewhere: a removal names no new target.",
              "parsedType": {
                "text": "null | HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "#rememberFocus",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "#forgetFocus",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "#holdsInFlatTree",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "node",
                  "type": {
                    "text": "Node"
                  }
                }
              ],
              "description": "Whether `node` sits inside this element, through slots and shadow roots on the way up."
            },
            {
              "kind": "method",
              "name": "#focusLostInside",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLElement | null"
                }
              },
              "description": "The element focus sat on inside before a move dropped it, if it is still inside and focus is lost."
            },
            {
              "kind": "method",
              "name": "#reopenAfterReconnect",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "connectedMoveCallback",
              "description": "An atomic move (`moveBefore`) runs this instead of the disconnect/reconnect pair. Firefox 151\nleaves a modal `<dialog>` in a shadow root open but no longer modal after it; Chromium 149 keeps\nit modal. Reopen only what the move broke."
            },
            {
              "kind": "field",
              "name": "#cancelReopen",
              "privacy": "private",
              "type": {
                "text": "(() => void) | null"
              },
              "default": "null",
              "description": "Cancels a reopen that waits for the modals above this one to close.",
              "parsedType": {
                "text": "null | {  }"
              }
            },
            {
              "kind": "method",
              "name": "#waitForModals",
              "privacy": "private",
              "parameters": [
                {
                  "name": "above",
                  "type": {
                    "text": "HTMLElement[]"
                  }
                },
                {
                  "name": "reopen",
                  "type": {
                    "text": "() => void"
                  }
                }
              ],
              "description": "Runs `reopen` once `above` have closed, and keeps what cancels the wait while it lasts."
            },
            {
              "kind": "field",
              "name": "#isShown",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether an open has set the drawer up: from its show until its close starts."
            },
            {
              "kind": "field",
              "name": "#coveredBy",
              "privacy": "private",
              "type": {
                "text": "HTMLElement[]"
              },
              "default": "[]",
              "description": "The modals that painted above this one when it left the DOM, so its reopen can wait for them."
            },
            {
              "kind": "method",
              "name": "#focusedDescendant",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLElement | null"
                }
              },
              "description": "The element holding focus inside this drawer, through any shadow roots, or `null`."
            },
            {
              "kind": "method",
              "name": "#focusInitialElement",
              "privacy": "private",
              "description": "Where an open puts focus: the `[autofocus]` element, else the panel or the native dialog."
            },
            {
              "kind": "field",
              "name": "renderedWatcher",
              "privacy": "private",
              "readonly": true,
              "default": "new RenderedWatcher( () => this, isRendered => this.handleRenderedChange(isRendered) )"
            },
            {
              "kind": "method",
              "name": "handleRenderedChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "isRendered",
                  "type": {
                    "text": "boolean"
                  }
                }
              ],
              "description": "Third-party CSS — an ad blocker, a cookie-banner blocker — putting `display: none` on an open\ndrawer takes the drawer away and leaves what it did to the page behind it: scroll-locked and\ninert behind the top layer, or with its siblings unreachable under `contained`, and nothing on\nscreen to explain either. Suspend that while the drawer does not render, resume it when it does.\n`open` stays true throughout: the drawer is logically open the whole time, it just has no boxes.\n\nThe host is what is measured, not the panel: it is `display: block` while open, so it has a box\nof its own, and a blocker hiding it or any ancestor takes that box away."
            },
            {
              "kind": "method",
              "name": "applyContainedInert",
              "privacy": "private",
              "description": "Makes the siblings this drawer covers unreachable, matching what the backdrop already does to\nthe pointer. Without it the barrier is visual only and a keyboard or screen-reader user walks\nstraight into content everyone else sees as blocked."
            },
            {
              "kind": "method",
              "name": "releaseContainedInert",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "requestClose",
              "privacy": "private",
              "parameters": [
                {
                  "name": "source",
                  "type": {
                    "text": "Element"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "#hasOpenListeners",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "method",
              "name": "addOpenListeners",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "removeOpenListeners",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleDialogCancel",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDrawerClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDialogPointerDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "PointerEvent"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleDocumentKeyDown",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "show",
              "privacy": "private",
              "description": "Shows the drawer."
            },
            {
              "kind": "method",
              "name": "awaitTransition",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              }
            },
            {
              "kind": "method",
              "name": "setupContainedParent",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderContent",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleOverlayClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderDialog",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderContained",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "Emitted when the drawer opens. Cancelable; calling `preventDefault()` keeps it closed.",
              "name": "ed-show",
              "reactName": "onEdShow",
              "eventName": "EdShowEvent"
            },
            {
              "description": "Emitted after the drawer opens and all animations are complete.",
              "name": "ed-after-show",
              "reactName": "onEdAfterShow",
              "eventName": "EdAfterShowEvent"
            },
            {
              "type": {
                "text": "{ source: Element }"
              },
              "description": "Emitted before the drawer closes. 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. Cancelable; calling `preventDefault()` keeps it open.",
              "name": "ed-hide",
              "reactName": "onEdHide",
              "eventName": "EdHideEvent"
            },
            {
              "description": "Emitted after the drawer closes and all animations are complete.",
              "name": "ed-after-hide",
              "reactName": "onEdAfterHide",
              "eventName": "EdAfterHideEvent"
            }
          ],
          "attributes": [
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the drawer is open. Toggle this attribute to show and hide the drawer.",
              "fieldName": "open"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "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.",
              "fieldName": "label"
            },
            {
              "name": "aria-label",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The drawer's accessible name, overriding the visible label. Mirrored onto the internal\ndialog node, where the dialog role lives — an aria-label left on the host alone would sit\non a role-less element and be ignored by assistive tech (house pattern: ed-checkbox).",
              "fieldName": "ariaLabel",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "placement",
              "type": {
                "text": "'top' | 'end' | 'bottom' | 'start'"
              },
              "default": "'end'",
              "description": "The direction from which the drawer will open.",
              "fieldName": "placement",
              "parsedType": {
                "text": "'start' | 'end' | 'top' | 'bottom'"
              }
            },
            {
              "name": "without-header",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the header. This will also remove the default close button.",
              "fieldName": "withoutHeader"
            },
            {
              "name": "without-close",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the default close button while keeping the header visible.",
              "fieldName": "withoutClose"
            },
            {
              "name": "light-dismiss",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When enabled, the drawer will be closed when the user clicks outside of it.",
              "fieldName": "lightDismiss"
            },
            {
              "name": "with-footer",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "withFooter"
            },
            {
              "name": "contained",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "contained"
            },
            {
              "name": "push",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When used with `contained`, the drawer pushes adjacent content aside instead of overlaying it. The parent element must be a flex container.",
              "fieldName": "push"
            },
            {
              "name": "without-modality",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Opens the drawer without blocking what it covers: no backdrop, and the content behind it stays\noperable. Use it for a panel the user works alongside rather than instead of.\n\nRequires `contained`. A drawer at the viewport edge relies on the top layer for its position and\nstacking, and only a modal dialog is put there — so this is ignored, with a warning, on a drawer\nthat is not contained.\n\nInverted because a boolean attribute cannot express `false`: its absence is the only way to\nspell the default, so the default has to be the unset state.\n\n`push` implies it — a drawer that moves content aside rather than covering it blocks nothing.",
              "fieldName": "withoutModality"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Drawers slide in from a container to expose additional options and information.",
          "jsDoc": "/**\n * @summary Drawers slide in from a container to expose additional options and information.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/drawer\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-button\n * @dependency ed-icon\n *\n * @slot - The drawer's main content.\n * @slot label - The drawer's label. Alternatively, you can use the `label` attribute.\n * @slot header-actions - Optional actions to add to the header. Works best with `<ed-button>`.\n * @slot footer - The drawer's footer, usually one or more buttons representing various options.\n *\n * @event ed-show - Emitted when the drawer opens.\n *  Cancelable; calling `preventDefault()` keeps it closed.\n * @event ed-after-show - Emitted after the drawer opens and all animations are complete.\n * @event {{ source: Element }} ed-hide - Emitted before the drawer closes. You can inspect `event.detail.source` to see which\n *  element caused the drawer to close. If the source is the drawer element itself, the user has pressed [[Escape]] or\n *  the drawer has been closed programmatically. Avoid using this unless closing the drawer will result in destructive\n *  behavior such as data loss.\n *  Cancelable; calling `preventDefault()` keeps it open.\n * @event ed-after-hide - Emitted after the drawer closes and all animations are complete.\n *\n * @csspart panel - The drawer's sliding surface, the element the header, body and footer sit in. Carries the\n *   frame, background and shadow. At the viewport edge it is a native `<dialog>`, a `contained` drawer renders a\n *   `<div>` instead — the part is the same in both, so one selector reaches either.\n * @csspart overlay - The backdrop a `contained` drawer draws over its siblings. `contained` only.\n * @csspart header - The drawer's header. This element wraps the title and header actions.\n * @csspart header-actions - Optional actions to add to the header. Works best with `<ed-button>`.\n * @csspart title - The drawer's title.\n * @csspart close-button - The close button, a `<ed-button>`.\n * @csspart close-button__base - The close button's exported `base` part.\n * @csspart body - The drawer's body.\n * @csspart footer - The drawer's footer.\n *\n * @cssproperty --ed-drawer-spacing - The amount of space around and between the drawer's content.\n * @cssproperty --ed-drawer-size - The preferred size of the drawer. This will be applied to the drawer's width or height\n *   depending on its `placement`. Note that the drawer will shrink to accommodate smaller screens.\n * @cssproperty [--ed-show-duration=var(--ed-transition-normal)] - The animation duration when showing the drawer.\n * @cssproperty [--ed-hide-duration=var(--ed-transition-normal)] - The animation duration when hiding the drawer.\n * @cssproperty --ed-drawer-backdrop-filter - A CSS filter, e.g. `blur(4px)`, applied to the backdrop element behind the drawer.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/drawer",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-button",
            "ed-icon"
          ],
          "tagName": "ed-drawer",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdDrawer",
            "module": "components/drawer/drawer.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-drawer",
          "declaration": {
            "name": "EdDrawer",
            "module": "components/drawer/drawer.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/app/app.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdApp",
          "cssProperties": [
            {
              "description": "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.",
              "name": "--ed-app-banner-height",
              "default": "0px"
            },
            {
              "description": "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.",
              "name": "--ed-app-header-height",
              "default": "0px"
            },
            {
              "description": "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.",
              "name": "--ed-app-subheader-height",
              "default": "0px"
            },
            {
              "description": "The height of the footer. This gets calculated when the page initializes. The shell itself does not read it — it is published for layouts that need the footer's height, and the measurement replaces whatever you set here.",
              "name": "--ed-app-footer-height",
              "default": "0px"
            },
            {
              "description": "How much the banner contributes to the sticky stack: its measured height, or `0px` while `disable-sticky` exempts it. It is one term, not a finished offset — to sit clear of everything sticky above your content, add all three together, as the shell's own rules do.",
              "name": "--ed-app-banner-top"
            },
            {
              "description": "The header's term in that same sum. On its own it clears the header but not the banner above it.",
              "name": "--ed-app-header-top"
            },
            {
              "description": "The subheader's term in that same sum.",
              "name": "--ed-app-subheader-top"
            },
            {
              "description": "The scroll margin that keeps a scrolled-to target clear of the sticky banner, header and subheader, plus a small gap. A section exempted through `disable-sticky` drops out of the sum. The shell computes it; read it as `scroll-margin-top` on your own anchors, or set it on the shell to extend the offset by chrome of your own.",
              "name": "--ed-app-scroll-margin-top"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The banner to show above header.",
              "name": "banner"
            },
            {
              "description": "The header, usually for top level navigation / branding.",
              "name": "header"
            },
            {
              "description": "Shown below the header.",
              "name": "subheader"
            },
            {
              "description": "The wrapper around menu, main, and aside.",
              "name": "body"
            },
            {
              "description": "The left hand side of the page. Generally intended for navigation.",
              "name": "menu"
            },
            {
              "description": "The `<nav>` that wraps the navigation slots on desktop viewports.",
              "name": "navigation"
            },
            {
              "description": "A second name carried by that same `<nav>`.",
              "name": "navigation-desktop"
            },
            {
              "description": "The slot that projects the navigation header into the mobile `<ed-drawer>`'s label. The desktop `<nav>` has no counterpart.",
              "name": "navigation-header"
            },
            {
              "description": "The default `<ed-button>` that toggles the navigation.",
              "name": "navigation-toggle"
            },
            {
              "description": "The default `<ed-icon>` displayed inside the navigation-toggle button.",
              "name": "navigation-toggle-icon"
            },
            {
              "description": "The center column of the body, holding the main header, content and footer.",
              "name": "main"
            },
            {
              "description": "The header above main content.",
              "name": "main-header"
            },
            {
              "description": "The main content.",
              "name": "main-content"
            },
            {
              "description": "The footer below main content.",
              "name": "main-footer"
            },
            {
              "description": "The right hand side of the page. Used for things like table of contents, ads, etc.",
              "name": "aside"
            },
            {
              "description": "The \"skip to main content\" link.",
              "name": "skip-to-content"
            },
            {
              "description": "The footer of the page. This is always below the initial viewport size.",
              "name": "footer"
            },
            {
              "description": "The mobile navigation `<ed-drawer>`.",
              "name": "drawer"
            },
            {
              "description": "The mobile navigation drawer's exported `panel` part, its sliding surface.",
              "name": "drawer__panel"
            },
            {
              "description": "The mobile navigation drawer's exported `header` part, wrapping the title and header actions.",
              "name": "drawer__header"
            },
            {
              "description": "The mobile navigation drawer's exported `header-actions` part.",
              "name": "drawer__header-actions"
            },
            {
              "description": "The mobile navigation drawer's exported `title` part, filled from the `mobile-navigation-header` slot.",
              "name": "drawer__title"
            },
            {
              "description": "The mobile navigation drawer's exported `close-button` part, an `<ed-button>`.",
              "name": "drawer__close-button"
            },
            {
              "description": "The mobile navigation drawer's exported `close-button__base` part, that button's own `base`.",
              "name": "drawer__close-button__base"
            },
            {
              "description": "The mobile navigation drawer's exported `body` part, holding the navigation itself.",
              "name": "drawer__body"
            },
            {
              "description": "The mobile navigation drawer's exported `footer` part.",
              "name": "drawer__footer"
            }
          ],
          "slots": [
            {
              "description": "The page's main content, in one `<main>`: the shell sets no main landmark of its own.",
              "name": ""
            },
            {
              "description": "The banner that gets display above the header. The banner will not be shown if no content is provided.",
              "name": "banner"
            },
            {
              "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": "header"
            },
            {
              "description": "A subheader to display below the `header`.",
              "name": "subheader"
            },
            {
              "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": "menu"
            },
            {
              "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-header"
            },
            {
              "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"
            },
            {
              "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-footer"
            },
            {
              "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"
            },
            {
              "description": "Use this to slot in your own icon for toggling the navigation. By default it is a menu `<ed-icon>`.",
              "name": "navigation-toggle-icon"
            },
            {
              "description": "Breadcrumbs above the main content. The page title is not part of it: the `<h1>` opens the `<main>`, inside the main landmark.",
              "name": "main-header"
            },
            {
              "description": "Footer to display inline below the main content.",
              "name": "main-footer"
            },
            {
              "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": "aside"
            },
            {
              "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": "skip-to-content"
            },
            {
              "description": "The content to display in the footer. This is always displayed underneath the viewport so will always make the page \"scrollable\".",
              "name": "footer"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "headerResizeObserver",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "subheaderResizeObserver",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "bannerResizeObserver",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "footerResizeObserver",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "menuResizeObserver",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController( this, 'aside', 'menu', 'navigation', 'navigation-header', 'navigation-footer' )"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "method",
              "name": "slotResizeObserver",
              "privacy": "private",
              "parameters": [
                {
                  "name": "slot",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleNavigationToggle",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "header",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "menu",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "navigation",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "main",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "aside",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "subheader",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "footer",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "banner",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "navigationDrawer",
              "type": {
                "text": "EdDrawer"
              }
            },
            {
              "kind": "field",
              "name": "navigationToggleSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "defaultNavigationToggle",
              "type": {
                "text": "EdButton | null"
              },
              "privacy": "private",
              "parsedType": {
                "text": "null | default"
              }
            },
            {
              "kind": "field",
              "name": "view",
              "type": {
                "text": "'mobile' | 'desktop'"
              },
              "default": "'desktop'",
              "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.\nThe default is not written to the DOM, so match the desktop view as `ed-app:not([view='mobile'])`.",
              "attribute": "view",
              "reflects": true,
              "parsedType": {
                "text": "'mobile' | 'desktop'"
              }
            },
            {
              "kind": "field",
              "name": "desktopNavOpen",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the desktop navigation is open.",
              "attribute": "desktop-nav-open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "mobileNavOpen",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the mobile navigation drawer is open.",
              "attribute": "mobile-nav-open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "mobileBreakpoint",
              "type": {
                "text": "string"
              },
              "default": "'768px'",
              "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.",
              "attribute": "mobile-breakpoint"
            },
            {
              "kind": "field",
              "name": "navigationPlacement",
              "type": {
                "text": "'start' | 'end'"
              },
              "default": "'start'",
              "description": "Where to place the navigation when in the mobile viewport.",
              "attribute": "navigation-placement",
              "reflects": true,
              "parsedType": {
                "text": "'start' | 'end'"
              }
            },
            {
              "kind": "field",
              "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,\nand to \"false\" when there is navigation content. Setting it to \"true\" yourself, by attribute or property, stops the\nautomatic detection and hides the button for good — for a toggle it cannot see, such as one inside another\ncomponent's shadow root, and for SSR's initial page load. Setting it back to \"false\" hands the decision to the\ndetection again.",
              "default": "false",
              "type": {
                "text": "boolean"
              },
              "attribute": "disable-navigation-toggle",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "_disableNavigationToggle",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "navigationToggleIsExplicit",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "True while the consumer holds `disableNavigationToggle` at true; the detection then leaves it alone."
            },
            {
              "kind": "field",
              "name": "detectingNavigationToggle",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set while the detection itself writes the property, so the setter can tell the two writers apart."
            },
            {
              "kind": "field",
              "name": "hideDesktopNavigationToggle",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Hides the header navigation toggle outside the mobile view. Use together with `ed-rail-menu`,\nwhose panel follows the active section on desktop — the header hamburger then only serves the mobile drawer.",
              "attribute": "hide-desktop-navigation-toggle",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disableSticky",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Space-delimited list of the sections that should not stick as the page scrolls: `banner`,\n`header`, `subheader`, `menu`, `aside`. An exempted section also drops out of the sum in\n`--ed-app-scroll-margin-top`. The property and the attribute are interchangeable — the styles\nmatch on the attribute, so assigning the property writes it — and a shell that never sets either\ncarries no `disable-sticky` attribute at all.",
              "attribute": "disable-sticky",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "pageResizeObserver"
            },
            {
              "kind": "field",
              "name": "updateNavigationToggleState",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "mobileSheet",
              "type": {
                "text": "CSSStyleSheet | undefined"
              },
              "privacy": "private",
              "description": "Holds the breakpoint media query. Adopted, not inlined — see syncMobileStyles().",
              "parsedType": {
                "text": "{ cssRules: { length: number, item: {  }, __@iterator@156: {  } }, ownerRule: null | { cssText: string, parentRule: null | CSSRule, parentStyleSheet: null | CSSStyleSheet, type: number, STYLE_RULE: 1, CHARSET_RULE: 2, IMPORT_RULE: 3, MEDIA_RULE: 4, FONT_FACE_RULE: 5, PAGE_RULE: 6, NAMESPACE_RULE: 10, KEYFRAMES_RULE: 7, KEYFRAME_RULE: 8, SUPPORTS_RULE: 12, COUNTER_STYLE_RULE: 11, FONT_FEATURE_VALUES_RULE: 14 }, rules: { length: number, item: {  }, __@iterator@156: {  } }, addRule: {  }, deleteRule: {  }, insertRule: {  }, removeRule: {  }, replace: {  }, replaceSync: {  }, disabled: boolean, href: null | string, media: { length: number, mediaText: string, toString: {  }, appendMedium: {  }, deleteMedium: {  }, item: {  }, __@iterator@156: {  } }, ownerNode: null | Element | ProcessingInstruction, parentStyleSheet: null | CSSStyleSheet, title: null | string, type: string } | undefined"
              }
            },
            {
              "kind": "method",
              "name": "syncNavigationToggleAria",
              "privacy": "private",
              "description": "Exposes the navigation's state on the default toggle (APG disclosure): `aria-expanded` and the\nnavigation it controls, the desktop column or the mobile drawer, whichever the view shows. Set on\nthe toggle's native button, where the role is: `ed-button` passes neither attribute through.\nThe controlled element goes in as an element reference, not an `aria-controls` IDREF — the button\nis in `ed-button`'s shadow root and the navigation in this one, and an IDREF resolves only inside\nits own tree. A slotted `navigation-toggle` is the consumer's to label."
            },
            {
              "kind": "method",
              "name": "syncMobileStyles",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Publishes the breakpoint media query as a constructable stylesheet.\n\nThe rules cannot live in the static stylesheet because the breakpoint is a public property,\nand `@media` conditions cannot read a custom property. An inline `<style>` element would work\nbut is rejected under a strict `style-src`; adopted stylesheets are built through CSSOM and are\nnot subject to it. Keying off the media query rather than the reflected `view` attribute keeps\nthe layout correct without waiting for the ResizeObserver's first callback."
            },
            {
              "kind": "method",
              "name": "showNavigation",
              "description": "Shows the navigation"
            },
            {
              "kind": "method",
              "name": "hideNavigation",
              "description": "Hides the navigation"
            },
            {
              "kind": "method",
              "name": "toggleNavigation",
              "description": "Toggles the navigation"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "view",
              "type": {
                "text": "'mobile' | 'desktop'"
              },
              "default": "'desktop'",
              "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.\nThe default is not written to the DOM, so match the desktop view as `ed-app:not([view='mobile'])`.",
              "fieldName": "view",
              "parsedType": {
                "text": "'mobile' | 'desktop'"
              }
            },
            {
              "name": "desktop-nav-open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the desktop navigation is open.",
              "fieldName": "desktopNavOpen"
            },
            {
              "name": "mobile-nav-open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the mobile navigation drawer is open.",
              "fieldName": "mobileNavOpen"
            },
            {
              "name": "mobile-breakpoint",
              "type": {
                "text": "string"
              },
              "default": "'768px'",
              "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.",
              "fieldName": "mobileBreakpoint"
            },
            {
              "name": "navigation-placement",
              "type": {
                "text": "'start' | 'end'"
              },
              "default": "'start'",
              "description": "Where to place the navigation when in the mobile viewport.",
              "fieldName": "navigationPlacement",
              "parsedType": {
                "text": "'start' | 'end'"
              }
            },
            {
              "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,\nand to \"false\" when there is navigation content. Setting it to \"true\" yourself, by attribute or property, stops the\nautomatic detection and hides the button for good — for a toggle it cannot see, such as one inside another\ncomponent's shadow root, and for SSR's initial page load. Setting it back to \"false\" hands the decision to the\ndetection again.",
              "default": "false",
              "type": {
                "text": "boolean"
              },
              "fieldName": "disableNavigationToggle"
            },
            {
              "name": "hide-desktop-navigation-toggle",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Hides the header navigation toggle outside the mobile view. Use together with `ed-rail-menu`,\nwhose panel follows the active section on desktop — the header hamburger then only serves the mobile drawer.",
              "fieldName": "hideDesktopNavigationToggle"
            },
            {
              "name": "disable-sticky",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Space-delimited list of the sections that should not stick as the page scrolls: `banner`,\n`header`, `subheader`, `menu`, `aside`. An exempted section also drops out of the sum in\n`--ed-app-scroll-margin-top`. The property and the attribute are interchangeable — the styles\nmatch on the attribute, so assigning the property writes it — and a shell that never sets either\ncarries no `disable-sticky` attribute at all.",
              "fieldName": "disableSticky"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Application shell with header, navigation, content and footer regions.",
          "jsDoc": "/**\n * @summary Application shell with header, navigation, content and footer regions.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/app\n * @status experimental\n * @level organism\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-button\n * @dependency ed-icon\n * @dependency ed-drawer\n * @dependency ed-toast-stack\n *\n * @slot - The page's main content, in one `<main>`: the shell sets no main landmark of its own.\n * @slot banner - The banner that gets display above the header. The banner will not be shown if no content is provided.\n * @slot 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 * @slot subheader - A subheader to display below the `header`.\n * @slot 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 * @slot 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 * @slot 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 * @slot 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 * @slot 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 * @slot navigation-toggle-icon - Use this to slot in your own icon for toggling the navigation. By default it is a menu `<ed-icon>`.\n * @slot main-header - Breadcrumbs above the main content. The page title is not part of it: the `<h1>` opens the `<main>`, inside the main landmark.\n * @slot main-footer - Footer to display inline below the main content.\n * @slot 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 * @slot 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 * @slot footer - The content to display in the footer. This is always displayed underneath the viewport so will always make the page \"scrollable\".\n *\n * @csspart base - The component's base wrapper.\n * @csspart banner - The banner to show above header.\n * @csspart header - The header, usually for top level navigation / branding.\n * @csspart subheader - Shown below the header.\n * @csspart body - The wrapper around menu, main, and aside.\n * @csspart menu - The left hand side of the page. Generally intended for navigation.\n * @csspart navigation - The `<nav>` that wraps the navigation slots on desktop viewports.\n * @csspart navigation-desktop - A second name carried by that same `<nav>`.\n * @csspart navigation-header - The slot that projects the navigation header into the mobile `<ed-drawer>`'s label. The desktop `<nav>` has no counterpart.\n * @csspart navigation-toggle - The default `<ed-button>` that toggles the navigation.\n * @csspart navigation-toggle-icon - The default `<ed-icon>` displayed inside the navigation-toggle button.\n * @csspart main - The center column of the body, holding the main header, content and footer.\n * @csspart main-header - The header above main content.\n * @csspart main-content - The main content.\n * @csspart main-footer - The footer below main content.\n * @csspart aside - The right hand side of the page. Used for things like table of contents, ads, etc.\n * @csspart skip-to-content - The \"skip to main content\" link.\n * @csspart footer - The footer of the page. This is always below the initial viewport size.\n * @csspart drawer - The mobile navigation `<ed-drawer>`.\n * @csspart drawer__panel - The mobile navigation drawer's exported `panel` part, its sliding surface.\n * @csspart drawer__header - The mobile navigation drawer's exported `header` part, wrapping the title and header actions.\n * @csspart drawer__header-actions - The mobile navigation drawer's exported `header-actions` part.\n * @csspart drawer__title - The mobile navigation drawer's exported `title` part, filled from the `mobile-navigation-header` slot.\n * @csspart drawer__close-button - The mobile navigation drawer's exported `close-button` part, an `<ed-button>`.\n * @csspart drawer__close-button__base - The mobile navigation drawer's exported `close-button__base` part, that button's own `base`.\n * @csspart drawer__body - The mobile navigation drawer's exported `body` part, holding the navigation itself.\n * @csspart drawer__footer - The mobile navigation drawer's exported `footer` part.\n *\n * @cssproperty [--ed-app-banner-height=0px] - 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.\n * @cssproperty [--ed-app-header-height=0px] - 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.\n * @cssproperty [--ed-app-subheader-height=0px] - 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.\n * @cssproperty [--ed-app-footer-height=0px] - The height of the footer. This gets calculated when the page initializes. The shell itself does not read it — it is published for layouts that need the footer's height, and the measurement replaces whatever you set here.\n * @cssproperty [--ed-app-banner-top] - How much the banner contributes to the sticky stack: its measured height, or `0px` while `disable-sticky` exempts it. It is one term, not a finished offset — to sit clear of everything sticky above your content, add all three together, as the shell's own rules do.\n * @cssproperty [--ed-app-header-top] - The header's term in that same sum. On its own it clears the header but not the banner above it.\n * @cssproperty [--ed-app-subheader-top] - The subheader's term in that same sum.\n * @cssproperty [--ed-app-scroll-margin-top] - The scroll margin that keeps a scrolled-to target clear\n *   of the sticky banner, header and subheader, plus a small gap. A section exempted through\n *   `disable-sticky` drops out of the sum. The shell computes it; read it as `scroll-margin-top` on\n *   your own anchors, or set it on the shell to extend the offset by chrome of your own.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/app",
          "status": "experimental",
          "level": "organism",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-button",
            "ed-icon",
            "ed-drawer",
            "ed-toast-stack"
          ],
          "tagName": "ed-app",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdApp",
            "module": "components/app/app.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-app",
          "declaration": {
            "name": "EdApp",
            "module": "components/app/app.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/avatar/avatar.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdAvatar",
          "cssProperties": [
            {
              "description": "The size of the avatar.",
              "name": "--ed-avatar-size"
            }
          ],
          "cssParts": [
            {
              "description": "The container that wraps the avatar's icon.",
              "name": "icon"
            },
            {
              "description": "The container that wraps the avatar's initials.",
              "name": "initials"
            },
            {
              "description": "The avatar image. Only shown when the `image` attribute is set.",
              "name": "image"
            }
          ],
          "slots": [
            {
              "description": "The default icon to use when no image or initials are present. Works best with `<ed-icon>`.",
              "name": "icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "hasError",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "image",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The image source to use for the avatar.",
              "attribute": "image"
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A label to use to describe the avatar to assistive devices.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "initials",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Initials to use as a fallback when no image is available (1-2 characters max recommended).",
              "attribute": "initials"
            },
            {
              "kind": "field",
              "name": "loading",
              "type": {
                "text": "'eager' | 'lazy'"
              },
              "default": "'eager'",
              "description": "Indicates how the browser should load the image.",
              "attribute": "loading",
              "parsedType": {
                "text": "'eager' | 'lazy'"
              }
            },
            {
              "kind": "field",
              "name": "variant",
              "type": {
                "text": "'brand' | 'ai' | 'info' | 'neutral' | 'success' | 'warning' | 'danger' | 'new'"
              },
              "default": "'brand'",
              "description": "The avatar's theme variant. It tints the background and the initials or icon.",
              "attribute": "variant",
              "reflects": true,
              "parsedType": {
                "text": "'new' | 'warning' | 'brand' | 'ai' | 'info' | 'neutral' | 'success' | 'danger'"
              }
            },
            {
              "kind": "field",
              "name": "shape",
              "type": {
                "text": "'circle' | 'square' | 'rounded'"
              },
              "default": "'circle'",
              "description": "The shape of the avatar.",
              "attribute": "shape",
              "reflects": true,
              "parsedType": {
                "text": "'circle' | 'square' | 'rounded'"
              }
            },
            {
              "kind": "method",
              "name": "handleImageLoadError",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "The image could not be loaded. This may because of an invalid URL, a temporary network condition, or some unknown cause.",
              "name": "ed-error",
              "reactName": "onEdError",
              "eventName": "EdErrorEvent"
            }
          ],
          "attributes": [
            {
              "name": "image",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The image source to use for the avatar.",
              "fieldName": "image"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A label to use to describe the avatar to assistive devices.",
              "fieldName": "label"
            },
            {
              "name": "initials",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Initials to use as a fallback when no image is available (1-2 characters max recommended).",
              "fieldName": "initials"
            },
            {
              "name": "loading",
              "type": {
                "text": "'eager' | 'lazy'"
              },
              "default": "'eager'",
              "description": "Indicates how the browser should load the image.",
              "fieldName": "loading",
              "parsedType": {
                "text": "'eager' | 'lazy'"
              }
            },
            {
              "name": "variant",
              "type": {
                "text": "'brand' | 'ai' | 'info' | 'neutral' | 'success' | 'warning' | 'danger' | 'new'"
              },
              "default": "'brand'",
              "description": "The avatar's theme variant. It tints the background and the initials or icon.",
              "fieldName": "variant",
              "parsedType": {
                "text": "'new' | 'warning' | 'brand' | 'ai' | 'info' | 'neutral' | 'success' | 'danger'"
              }
            },
            {
              "name": "shape",
              "type": {
                "text": "'circle' | 'square' | 'rounded'"
              },
              "default": "'circle'",
              "description": "The shape of the avatar.",
              "fieldName": "shape",
              "parsedType": {
                "text": "'circle' | 'square' | 'rounded'"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Shows a person or entity as a photo, initials or icon, so users recognize at a glance who is meant.",
          "jsDoc": "/**\n * @summary Shows a person or entity as a photo, initials or icon, so users recognize at a glance who is meant.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/avatar\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-icon\n *\n * @slot icon - The default icon to use when no image or initials are present. Works best with `<ed-icon>`.\n *\n * @event ed-error - The image could not be loaded. This may because of an invalid URL, a temporary network condition, or some\n * unknown cause.\n *\n * @csspart icon - The container that wraps the avatar's icon.\n * @csspart initials - The container that wraps the avatar's initials.\n * @csspart image - The avatar image. Only shown when the `image` attribute is set.\n *\n * @cssproperty --ed-avatar-size - The size of the avatar.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/avatar",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-avatar",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdAvatar",
            "module": "components/avatar/avatar.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-avatar",
          "declaration": {
            "name": "EdAvatar",
            "module": "components/avatar/avatar.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/test/contrast.js",
      "declarations": [
        {
          "kind": "function",
          "name": "paint",
          "return": {
            "type": {
              "text": "Rgb"
            }
          },
          "parameters": [
            {
              "name": "colors",
              "type": {
                "text": "string[]"
              }
            }
          ],
          "description": "Paints computed colors bottom-up onto one pixel and returns the result, so a translucent or\ntransparent layer composites over what is beneath it the way the page does."
        },
        {
          "kind": "function",
          "name": "luminance",
          "return": {
            "type": {
              "text": "number"
            }
          },
          "parameters": [
            {
              "name": "rgb",
              "type": {
                "text": "Rgb"
              }
            }
          ],
          "description": "WCAG 2.x relative luminance."
        },
        {
          "kind": "function",
          "name": "contrast",
          "return": {
            "type": {
              "text": "number"
            }
          },
          "parameters": [
            {
              "name": "a",
              "type": {
                "text": "Rgb"
              }
            },
            {
              "name": "b",
              "type": {
                "text": "Rgb"
              }
            }
          ],
          "description": "WCAG 2.x contrast ratio."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "paint",
          "declaration": {
            "name": "paint",
            "module": "internal/test/contrast.js"
          }
        },
        {
          "kind": "js",
          "name": "luminance",
          "declaration": {
            "name": "luminance",
            "module": "internal/test/contrast.js"
          }
        },
        {
          "kind": "js",
          "name": "contrast",
          "declaration": {
            "name": "contrast",
            "module": "internal/test/contrast.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/test/icon-size-tests.js",
      "declarations": [
        {
          "kind": "function",
          "name": "runIconSizeTests",
          "parameters": [
            {
              "name": "tagName",
              "type": {
                "text": "string"
              }
            },
            {
              "name": "config",
              "default": "{}",
              "type": {
                "text": "IconSizeTestConfig"
              }
            }
          ],
          "description": "Shared icon sizing tests. Verifies that ed-icon elements inside a component\ncompute to the expected \"one step larger\" size (16px in 13px / font-size-m context).\n\nAll tests run inside a 13px container to ensure a consistent baseline,\nregardless of whether the component sets its own font-size."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "runIconSizeTests",
          "declaration": {
            "name": "runIconSizeTests",
            "module": "internal/test/icon-size-tests.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/badge/badge.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdBadge",
          "cssProperties": [
            {
              "description": "The color of the badge's pulse effect when using `attention=\"pulse\"`.",
              "name": "--ed-badge-pulse-color"
            },
            {
              "description": "The `color-scheme` inside a notification badge, so its colors stay put when the badge sits on a surface of the other scheme.",
              "name": "--ed-badge-notification-color-scheme",
              "default": "light"
            },
            {
              "description": "The same for the alternate notification badge.",
              "name": "--ed-badge-notification-alt-color-scheme",
              "default": "light"
            }
          ],
          "cssParts": [
            {
              "description": "The remove button shown when `with-remove` is set.",
              "name": "remove-icon"
            },
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The container that wraps the `start` slot.",
              "name": "start"
            },
            {
              "description": "The container that wraps the `end` slot.",
              "name": "end"
            }
          ],
          "slots": [
            {
              "description": "The badge's content.",
              "name": ""
            },
            {
              "description": "Content placed before the badge's main content. Typically used for icons.",
              "name": "start"
            },
            {
              "description": "Content placed after the badge's main content. Typically used for icons. When `with-remove` is set, the default content is a remove button that emits `ed-remove` when activated by click, Enter or Space.",
              "name": "end"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "variant",
              "type": {
                "text": "| 'brand'\n    | 'neutral'\n    | 'info'\n    | 'success'\n    | 'danger'\n    | 'warning'\n    | 'new'\n    | 'expired'\n    | 'ai'\n    | 'notification'\n    | 'notification-alt'"
              },
              "default": "'info'",
              "description": "The badge's theme variant.",
              "attribute": "variant",
              "reflects": true,
              "parsedType": {
                "text": "'new' | 'notification' | 'warning' | 'brand' | 'ai' | 'info' | 'neutral' | 'success' | 'danger' | 'expired' | 'notification-alt'"
              }
            },
            {
              "kind": "field",
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style badge with rounded edges. Mainly used to display filters",
              "attribute": "pill",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "attention",
              "type": {
                "text": "'none' | 'pulse' | 'bounce'"
              },
              "default": "'none'",
              "description": "Adds an animation to draw attention to the badge.",
              "attribute": "attention",
              "reflects": true,
              "parsedType": {
                "text": "'none' | 'pulse' | 'bounce'"
              }
            },
            {
              "kind": "field",
              "name": "withRemove",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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",
              "attribute": "with-remove"
            },
            {
              "kind": "field",
              "name": "ariaLabel",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The badge's accessible name. The only way to name a badge with no content, which renders as a dot. Mirrored onto the internal status node, where the role lives — an aria-label left on the host\nalone would sit on a role-less element and be ignored by assistive tech.",
              "attribute": "aria-label",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "method",
              "name": "handleRemoveClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "checkEmpty",
              "privacy": "private",
              "parameters": [
                {
                  "name": "slot",
                  "type": {
                    "text": "HTMLSlotElement"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "Emitted when the remove button shown by `with-remove` is activated by click, Enter or Space. The badge does not remove itself — react to this event to take it out.",
              "name": "ed-remove",
              "reactName": "onEdRemove",
              "eventName": "EdRemoveEvent"
            }
          ],
          "attributes": [
            {
              "name": "variant",
              "type": {
                "text": "| 'brand'\n    | 'neutral'\n    | 'info'\n    | 'success'\n    | 'danger'\n    | 'warning'\n    | 'new'\n    | 'expired'\n    | 'ai'\n    | 'notification'\n    | 'notification-alt'"
              },
              "default": "'info'",
              "description": "The badge's theme variant.",
              "fieldName": "variant",
              "parsedType": {
                "text": "'new' | 'notification' | 'warning' | 'brand' | 'ai' | 'info' | 'neutral' | 'success' | 'danger' | 'expired' | 'notification-alt'"
              }
            },
            {
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style badge with rounded edges. Mainly used to display filters",
              "fieldName": "pill"
            },
            {
              "name": "attention",
              "type": {
                "text": "'none' | 'pulse' | 'bounce'"
              },
              "default": "'none'",
              "description": "Adds an animation to draw attention to the badge.",
              "fieldName": "attention",
              "parsedType": {
                "text": "'none' | 'pulse' | 'bounce'"
              }
            },
            {
              "name": "with-remove",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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",
              "fieldName": "withRemove"
            },
            {
              "name": "aria-label",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The badge's accessible name. The only way to name a badge with no content, which renders as a dot. Mirrored onto the internal status node, where the role lives — an aria-label left on the host\nalone would sit on a role-less element and be ignored by assistive tech.",
              "fieldName": "ariaLabel",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "Applied when the badge has no content. It then renders as a plain dot the size of the font: the padding is dropped, the box becomes a circle, and the `start` and `end` parts are hidden. A dot has no content to announce — give it an `aria-label`.",
              "name": "empty"
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Badges are used to draw attention and display statuses, counts or filters.",
          "jsDoc": "/**\n * @summary Badges are used to draw attention and display statuses, counts or filters.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/badge\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-icon\n *\n * @event ed-remove - Emitted when the remove button shown by `with-remove` is activated by click,\n *   Enter or Space. The badge does not remove itself — react to this event to take it out.\n *\n * @slot - The badge's content.\n * @slot start - Content placed before the badge's main content. Typically used for icons.\n * @slot end - Content placed after the badge's main content. Typically used for icons. When `with-remove` is set, the default content is a remove button that emits `ed-remove` when activated by click, Enter or Space.\n *\n * @csspart remove-icon - The remove button shown when `with-remove` is set.\n * @csspart base - The component's base wrapper.\n * @csspart start - The container that wraps the `start` slot.\n * @csspart end - The container that wraps the `end` slot.\n *\n * @cssstate empty - Applied when the badge has no content. It then renders as a plain dot the size of\n *   the font: the padding is dropped, the box becomes a circle, and the `start` and `end` parts are\n *   hidden. A dot has no content to announce — give it an `aria-label`.\n *\n * @cssproperty --ed-badge-pulse-color - The color of the badge's pulse effect when using `attention=\"pulse\"`.\n * @cssproperty [--ed-badge-notification-color-scheme=light] - The `color-scheme` inside a notification badge, so its\n *   colors stay put when the badge sits on a surface of the other scheme.\n * @cssproperty [--ed-badge-notification-alt-color-scheme=light] - The same for the alternate notification badge.\n *\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/badge",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-badge",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdBadge",
            "module": "components/badge/badge.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-badge",
          "declaration": {
            "name": "EdBadge",
            "module": "components/badge/badge.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/breadcrumb-item/breadcrumb-item.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdBreadcrumbItem",
          "cssParts": [
            {
              "description": "The breadcrumb item's label.",
              "name": "label"
            },
            {
              "description": "The container that wraps the `start` slot.",
              "name": "start"
            },
            {
              "description": "The container that wraps the `end` slot.",
              "name": "end"
            },
            {
              "description": "The container that wraps the separator.",
              "name": "separator"
            }
          ],
          "slots": [
            {
              "description": "The breadcrumb item's label.",
              "name": ""
            },
            {
              "description": "An element, such as `<ed-icon>`, placed before the label.",
              "name": "start"
            },
            {
              "description": "An element, such as `<ed-icon>`, placed after the label.",
              "name": "end"
            },
            {
              "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.",
              "name": "separator"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'start', 'end')"
            },
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "renderType",
              "type": {
                "text": "'button' | 'link' | 'dropdown' | 'heading'"
              },
              "privacy": "private",
              "default": "'button'",
              "parsedType": {
                "text": "'link' | 'button' | 'dropdown' | 'heading'"
              }
            },
            {
              "kind": "field",
              "name": "href",
              "type": {
                "text": "string | undefined"
              },
              "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. To follow the [WAI-ARIA breadcrumb\npattern](https://www.w3.org/WAI/ARIA/apg/patterns/breadcrumb/) on the current-page item, set `href=\"\"` — the\nbrowser resolves it to the current URL, and `<ed-breadcrumb>` already applies `aria-current=\"page\"` to the last\nitem.",
              "attribute": "href"
            },
            {
              "kind": "field",
              "name": "target",
              "type": {
                "text": "string | undefined"
              },
              "description": "Tells the browser where to open the link. Only used when `href` is set.\n\nTakes the `_blank`, `_self`, `_parent` and `_top` keywords, or the name of a window: a link\nwhose target names an already open window navigates that window instead of opening another one.\nNote that `rel=\"noopener\"` suppresses the lookup, so a named target then opens a new window\nevery time.\n\nThe implicit opener isolation browsers apply covers `_blank` only. A named target leaves\n`window.opener` set on the opened page, so a link pointing at untrusted content needs\n`rel=\"noopener\"` spelled out.",
              "attribute": "target"
            },
            {
              "kind": "field",
              "name": "rel",
              "type": {
                "text": "string | undefined"
              },
              "description": "The `rel` attribute to use on the link. Only used when `href` is set.\n\nUnset by default, like a plain `<a>`. Browsers already imply `noopener` for `target=\"_blank\"`,\nso the remaining effect of a `rel` value is suppressing the `Referer` header — a decision about\nthe link's destination that belongs to the application, not to the component. A link leading\nfrom one product into another typically needs that header, and `rel=\"opener\"` stays available\nwhere the back-channel is wanted.",
              "attribute": "rel"
            },
            {
              "kind": "method",
              "name": "setRenderType",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleSlotChange"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "href",
              "type": {
                "text": "string | undefined"
              },
              "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. To follow the [WAI-ARIA breadcrumb\npattern](https://www.w3.org/WAI/ARIA/apg/patterns/breadcrumb/) on the current-page item, set `href=\"\"` — the\nbrowser resolves it to the current URL, and `<ed-breadcrumb>` already applies `aria-current=\"page\"` to the last\nitem.",
              "fieldName": "href"
            },
            {
              "name": "target",
              "type": {
                "text": "string | undefined"
              },
              "description": "Tells the browser where to open the link. Only used when `href` is set.\n\nTakes the `_blank`, `_self`, `_parent` and `_top` keywords, or the name of a window: a link\nwhose target names an already open window navigates that window instead of opening another one.\nNote that `rel=\"noopener\"` suppresses the lookup, so a named target then opens a new window\nevery time.\n\nThe implicit opener isolation browsers apply covers `_blank` only. A named target leaves\n`window.opener` set on the opened page, so a link pointing at untrusted content needs\n`rel=\"noopener\"` spelled out.",
              "fieldName": "target"
            },
            {
              "name": "rel",
              "type": {
                "text": "string | undefined"
              },
              "description": "The `rel` attribute to use on the link. Only used when `href` is set.\n\nUnset by default, like a plain `<a>`. Browsers already imply `noopener` for `target=\"_blank\"`,\nso the remaining effect of a `rel` value is suppressing the `Referer` header — a decision about\nthe link's destination that belongs to the application, not to the component. A link leading\nfrom one product into another typically needs that header, and `rel=\"opener\"` stays available\nwhere the back-channel is wanted.",
              "fieldName": "rel"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "One link in a breadcrumb trail that points to a level of the page hierarchy.",
          "jsDoc": "/**\n * @summary One link in a breadcrumb trail that points to a level of the page hierarchy.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/breadcrumb-item\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @slot - The breadcrumb item's label.\n * @slot start - An element, such as `<ed-icon>`, placed before the label.\n * @slot end - An element, such as `<ed-icon>`, placed after the label.\n * @slot separator - The separator to use for the breadcrumb item. This will only change the separator for this item. If\n * you want to change it for all items in the group, set the separator on `<ed-breadcrumb>` instead.\n *\n * @csspart label - The breadcrumb item's label.\n * @csspart start - The container that wraps the `start` slot.\n * @csspart end - The container that wraps the `end` slot.\n * @csspart separator - The container that wraps the separator.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/breadcrumb-item",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-breadcrumb-item",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdBreadcrumbItem",
            "module": "components/breadcrumb-item/breadcrumb-item.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-breadcrumb-item",
          "declaration": {
            "name": "EdBreadcrumbItem",
            "module": "components/breadcrumb-item/breadcrumb-item.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/breadcrumb/breadcrumb.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdBreadcrumb",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            }
          ],
          "slots": [
            {
              "description": "One or more breadcrumb items to display.",
              "name": ""
            },
            {
              "description": "The separator to use between breadcrumb items. Works best with `<ed-icon>`.",
              "name": "separator"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "separatorDir",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "separatorSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "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.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "variant",
              "type": {
                "text": "'inline' | 'inline-title' | 'title'"
              },
              "default": "'inline'",
              "description": "The breadcrumb's visual variant.",
              "attribute": "variant",
              "reflects": true,
              "parsedType": {
                "text": "'inline' | 'inline-title' | 'title'"
              }
            },
            {
              "kind": "method",
              "name": "getSeparator",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "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.",
              "fieldName": "label"
            },
            {
              "name": "variant",
              "type": {
                "text": "'inline' | 'inline-title' | 'title'"
              },
              "default": "'inline'",
              "description": "The breadcrumb's visual variant.",
              "fieldName": "variant",
              "parsedType": {
                "text": "'inline' | 'inline-title' | 'title'"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "A trail of links showing where the current page sits in a hierarchy, so users can jump back up to a parent\nlevel.",
          "jsDoc": "/**\n * @summary A trail of links showing where the current page sits in a hierarchy, so users can jump back up to a parent\n *  level.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/breadcrumb\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @slot - One or more breadcrumb items to display.\n * @slot separator - The separator to use between breadcrumb items. Works best with `<ed-icon>`.\n *\n * @dependency ed-breadcrumb-item\n * @dependency ed-icon\n *\n * @csspart base - The component's base wrapper.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/breadcrumb",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-breadcrumb-item",
            "ed-icon"
          ],
          "tagName": "ed-breadcrumb",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdBreadcrumb",
            "module": "components/breadcrumb/breadcrumb.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-breadcrumb",
          "declaration": {
            "name": "EdBreadcrumb",
            "module": "components/breadcrumb/breadcrumb.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/test/expect-event.js",
      "declarations": [
        {
          "kind": "function",
          "name": "expectEvent",
          "return": {
            "type": {
              "text": "Promise<Event[]>"
            }
          },
          "parameters": [
            {
              "name": "el",
              "type": {
                "text": "Element"
              }
            },
            {
              "name": "events",
              "type": {
                "text": "string | string[]"
              }
            },
            {
              "name": "action",
              "type": {
                "text": "() => void | Promise<void>"
              }
            },
            {
              "name": "options",
              "default": "{}",
              "type": {
                "text": "{ timeout?: number; count?: number }"
              }
            }
          ],
          "description": "Verifies that the specified events fire on an element during an action.\n\nUsage:\n  await expectEvent(el, ['input', 'ed-input'], () => clickOnElement(el));\n  const events = await expectEvent(el, 'change', () => el.click());\n\nOptions:\n  - timeout: max ms to wait for events (default 1000)\n  - count: expected number of times each event fires (default 1)"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "expectEvent",
          "declaration": {
            "name": "expectEvent",
            "module": "internal/test/expect-event.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/test/form-control-base-tests.js",
      "declarations": [
        {
          "kind": "function",
          "name": "runFormControlBaseTests",
          "parameters": [
            {
              "name": "tagNameOrConfig",
              "type": {
                "text": "| string\n    | {\n        tagName: string;\n        init?: (control: T) => void;\n        variantName: string;\n      }"
              }
            }
          ],
          "description": "Runs a set of generic tests for eurodata-ui form controls"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "runFormControlBaseTests",
          "declaration": {
            "name": "runFormControlBaseTests",
            "module": "internal/test/form-control-base-tests.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/button-group/button-group.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdButtonGroup",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            }
          ],
          "slots": [
            {
              "description": "One or more `<ed-button>` elements to display in the button group.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "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.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'horizontal'",
              "description": "The button group's orientation.",
              "attribute": "orientation",
              "reflects": true,
              "parsedType": {
                "text": "'horizontal' | 'vertical'"
              }
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "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.",
              "fieldName": "label"
            },
            {
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'horizontal'",
              "description": "The button group's orientation.",
              "fieldName": "orientation",
              "parsedType": {
                "text": "'horizontal' | 'vertical'"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Button groups can be used to group related buttons into sections.",
          "jsDoc": "/**\n * @summary Button groups can be used to group related buttons into sections.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/button-group\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-button\n *\n * @slot - One or more `<ed-button>` elements to display in the button group.\n *\n * @csspart base - The component's base wrapper.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/button-group",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-button"
          ],
          "tagName": "ed-button-group",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdButtonGroup",
            "module": "components/button-group/button-group.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-button-group",
          "declaration": {
            "name": "EdButtonGroup",
            "module": "components/button-group/button-group.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/date-utils.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "WIRE_FORMATS",
          "type": {
            "text": "{ pattern: RegExp; fields: (keyof WallClock)[] }[]"
          },
          "default": "[ { // A space instead of the `T` is read as well, and written back as `T` — measured in Chromium and // Firefox, where `datetime-local` accepts `2026-05-27 14:30` and reports it with the `T`. pattern: /^(\\d{4})-(\\d{2})-(\\d{2})[T ](\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{1,3}))?)?$/, fields: ['year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond'] }, { pattern: /^(\\d{4})-(\\d{2})-(\\d{2})$/, fields: ['year', 'month', 'day'] }, { pattern: /^(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{1,3}))?)?$/, fields: ['hour', 'minute', 'second', 'millisecond'] }, // The periods. `YYYY-MM` and `YYYY-Www` are ISO and what `<input type=\"month\">` and `type=\"week\"` // report; `YYYY-Qn` and `YYYY-Hn` are ours, because ISO 8601 has no notation for either. { pattern: /^(\\d{4})-W(\\d{2})$/, fields: ['year', 'week'] }, { pattern: /^(\\d{4})-Q([1-4])$/, fields: ['year', 'quarter'] }, { pattern: /^(\\d{4})-H([1-2])$/, fields: ['year', 'halfYear'] }, { pattern: /^(\\d{4})-(\\d{2})$/, fields: ['year', 'month'] }, { pattern: /^(\\d{4})$/, fields: ['year'] } ]",
          "description": "The wire formats, as data. Each pattern's capture groups map onto the named fields in order, so\nanother format is a row rather than a function. Strict throughout: no whitespace, no partial\nforms.\n\nEvery pattern is anchored at both ends, so no two of them can claim the same string and the rows\nmay be reordered freely. Matching only says the string is shaped right — isRealWallClock\ndecides whether it names anything."
        },
        {
          "kind": "function",
          "name": "isRealDate",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "{ year, month, day }",
              "type": {
                "text": "WallClockDate"
              }
            }
          ],
          "description": "True when the fields name a day the calendar has. February 30 does not; February 29 depends."
        },
        {
          "kind": "function",
          "name": "periodOf",
          "return": {
            "type": {
              "text": "Period | null"
            }
          },
          "parameters": [
            {
              "name": "w",
              "type": {
                "text": "WallClock"
              }
            }
          ],
          "description": "Which **kind** of value a set of fields is — not whether it is a good one. `{ year, quarter: 5 }`\nis a quarter, a broken one; a segmented quarter field needs to know it is holding a quarter while\nthe user is still typing it. Ask isRealWallClock for the other question.\n\n`null` when there is no year at all, which is a bare time or nothing — a quarter still being\ntyped answers `null` until its year segment is filled. Where the fields do name a value, at most\none branch can apply, because `isRealWallClock` refuses a set that fills two."
        },
        {
          "kind": "function",
          "name": "isRealWallClock",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "w",
              "type": {
                "text": "WallClock"
              }
            }
          ],
          "description": "True when the fields name one real value — the single gate every writer goes through.\n\nwallClockToWire and periodStart are two readings of the same fields, and a set\nthat one accepts and the other refuses is the divergence this module exists to prevent. Both ask\nthis."
        },
        {
          "kind": "function",
          "name": "weeksInYear",
          "return": {
            "type": {
              "text": "number"
            }
          },
          "parameters": [
            {
              "name": "year",
              "type": {
                "text": "number"
              }
            }
          ],
          "description": "How many ISO weeks a year has — 52, or 53 when it starts on a Thursday or is a leap year starting\non a Wednesday. Counted rather than looked up: the last week is the one holding 28 December, a day\nISO 8601 puts in the final week of its year by definition."
        },
        {
          "kind": "function",
          "name": "isoWeekOf",
          "return": {
            "type": {
              "text": "number"
            }
          },
          "parameters": [
            {
              "name": "d",
              "type": {
                "text": "Date"
              }
            }
          ],
          "description": "The ISO week number a UTC instant falls in. The week holding the Thursday decides the year, which\nis why the probe is shifted to its own Thursday before counting."
        },
        {
          "kind": "function",
          "name": "isRealTime",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "{ hour = 0, minute = 0, second = 0, millisecond = 0 }",
              "type": {
                "text": "Partial<WallClockTime>"
              }
            }
          ],
          "description": "True when the fields name a time the clock has."
        },
        {
          "kind": "function",
          "name": "hasDate",
          "return": {
            "type": {
              "text": "w is WallClock & WallClockDate"
            }
          },
          "parameters": [
            {
              "name": "w",
              "type": {
                "text": "WallClock"
              }
            }
          ],
          "description": "Narrows a WallClock to one that carries a full calendar day."
        },
        {
          "kind": "function",
          "name": "hasTime",
          "return": {
            "type": {
              "text": "w is WallClock & Pick<WallClockTime, 'hour' | 'minute'>"
            }
          },
          "parameters": [
            {
              "name": "w",
              "type": {
                "text": "WallClock"
              }
            }
          ],
          "description": "Narrows a WallClock to one that carries a time of day — hour and minute only, because\nthat is all a wire string has to name. Seconds and milliseconds stay optional, so the type says\nwhat the check actually proved."
        },
        {
          "kind": "function",
          "name": "to12Hour",
          "return": {
            "type": {
              "text": "ClockFace"
            }
          },
          "parameters": [
            {
              "name": "hour24",
              "type": {
                "text": "number"
              }
            }
          ],
          "description": "A 24-hour hour as a clock face reads it. Midnight is 12 AM, noon is 12 PM."
        },
        {
          "kind": "function",
          "name": "to24Hour",
          "return": {
            "type": {
              "text": "number"
            }
          },
          "parameters": [
            {
              "name": "{ hour, dayPeriod }",
              "type": {
                "text": "ClockFace"
              }
            }
          ],
          "description": "The inverse of to12Hour."
        },
        {
          "kind": "function",
          "name": "isUsableDate",
          "return": {
            "type": {
              "text": "value is Date"
            }
          },
          "parameters": [
            {
              "name": "value",
              "type": {
                "text": "unknown"
              }
            }
          ],
          "description": "A `Date` carrying a real instant. An `Invalid Date` has `NaN` for its time and passes `instanceof`."
        },
        {
          "kind": "function",
          "name": "wireToWallClock",
          "return": {
            "type": {
              "text": "WallClock | null"
            }
          },
          "parameters": [
            {
              "name": "wire",
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "A wire string as the fields it names, in any of the eight formats listed at the top of this file.\n`null` when it matches none of them, or matches one and names no real day, time or period."
        },
        {
          "kind": "function",
          "name": "wallClockToWire",
          "return": {
            "type": {
              "text": "string"
            }
          },
          "parameters": [
            {
              "name": "w",
              "type": {
                "text": "WallClock"
              }
            }
          ],
          "description": "The fields as a wire string, in the format their contents call for. `''` when they name no real\nday or time — the writers below rely on that, so a bad value can never reach a form."
        },
        {
          "kind": "function",
          "name": "wallClockToIso",
          "return": {
            "type": {
              "text": "string"
            }
          },
          "parameters": [
            {
              "name": "fields",
              "type": {
                "text": "WallClockDate"
              }
            }
          ],
          "description": "`''` when the fields name no real day."
        },
        {
          "kind": "function",
          "name": "wallClockToTime",
          "return": {
            "type": {
              "text": "string"
            }
          },
          "parameters": [
            {
              "name": "fields",
              "type": {
                "text": "Partial<WallClockTime>"
              }
            }
          ],
          "description": "`HH:mm`, or `HH:mm:ss` when there are seconds — what a native time input holds. `''` when the\nfields name no time.\n\nHour and minute must be present: `isRealTime` defaults absent fields to zero, which is right when\nasking \"is this a real time\" of a date-only value, and wrong here — it would write midnight for a\ncontrol that holds nothing."
        },
        {
          "kind": "function",
          "name": "wallClockToUtcDate",
          "return": {
            "type": {
              "text": "Date"
            }
          },
          "parameters": [
            {
              "name": "fields",
              "type": {
                "text": "WallClockDate & Partial<WallClockTime>"
              }
            }
          ],
          "description": "The same instant a native `<input type=\"date\">` reports for the day it holds.\n\nThe price: on the result, `getFullYear()` may name the neighboring day — `getUTCFullYear()` and its\nsiblings give back what went in.\n\n**Converts without judging.** Unlike the writers, it does not consult isRealDate: February\n30 rolls to March 2 rather than being refused, because a caller that already holds fields has\nusually checked them. Anything reading unvalidated input goes through wireToUtcDate."
        },
        {
          "kind": "function",
          "name": "utcDateToWallClock",
          "return": {
            "type": {
              "text": "WallClockDate & WallClockTime"
            }
          },
          "parameters": [
            {
              "name": "d",
              "type": {
                "text": "Date"
              }
            }
          ],
          "description": "The inverse of wallClockToUtcDate."
        },
        {
          "kind": "function",
          "name": "wireToUtcDate",
          "return": {
            "type": {
              "text": "Date | null"
            }
          },
          "parameters": [
            {
              "name": "wire",
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "A wire string as a UTC instant, `null` when it names none.\n\nA period answers with the day it begins — the first of the month, the Monday of the week, 1\nJanuary for a year — which is what a native `<input type=\"month\">` and `type=\"week\"` report for\n`valueAsDate`. A time-only string lands on the epoch day, likewise following `type=\"time\"`.\nperiodEnd gives the other end."
        },
        {
          "kind": "function",
          "name": "periodStart",
          "return": {
            "type": {
              "text": "Date | null"
            }
          },
          "parameters": [
            {
              "name": "w",
              "type": {
                "text": "WallClock"
              }
            }
          ],
          "description": "The first day of the stretch these fields name, as a UTC instant. `null` when they name none.\n\nA period is stored as itself — `2026-Q3`, not `2026-07-01` — so this is derived on demand rather\nthan kept. For a plain date it is that date."
        },
        {
          "kind": "function",
          "name": "periodEnd",
          "return": {
            "type": {
              "text": "Date | null"
            }
          },
          "parameters": [
            {
              "name": "w",
              "type": {
                "text": "WallClock"
              }
            }
          ],
          "description": "The last day of the stretch, **inclusive** — 31 July for `2026-07`, not 1 August. That is how a\nperson reads \"the period runs to\", and how SQL's `BETWEEN` matches.\n\nA day and a timestamp are not stretches, so they end where they begin: `periodEnd` equals\nperiodStart for both, and for a timestamp that is the instant itself rather than the end\nof its day."
        },
        {
          "kind": "function",
          "name": "isoWeekToMonday",
          "return": {
            "type": {
              "text": "Date"
            }
          },
          "parameters": [
            {
              "name": "year",
              "type": {
                "text": "number"
              }
            },
            {
              "name": "week",
              "type": {
                "text": "number"
              }
            }
          ],
          "description": "The Monday an ISO week starts on, as a UTC instant."
        },
        {
          "kind": "function",
          "name": "daysInMonth",
          "return": {
            "type": {
              "text": "number"
            }
          },
          "parameters": [
            {
              "name": "year",
              "type": {
                "text": "number"
              }
            },
            {
              "name": "month",
              "type": {
                "text": "number"
              }
            }
          ],
          "description": "How many days a month has. February answers 28 or 29 by the Gregorian leap rule.\n\nConverts without judging, like wallClockToUtcDate: a month outside 1–12 is normalized into\na neighboring year rather than refused, and `NaN` in gives `NaN` out. A caller holding a month it\nhas not checked asks isRealDate of the first of that month before believing the length."
        },
        {
          "kind": "function",
          "name": "addMonths",
          "return": {
            "type": {
              "text": "WallClockDate | null"
            }
          },
          "parameters": [
            {
              "name": "w",
              "type": {
                "text": "WallClockDate"
              }
            },
            {
              "name": "n",
              "type": {
                "text": "number"
              }
            }
          ],
          "description": "A day `n` months on, clamped to the last day the target month has.\n\n`null` for three reasons: the day given does not exist, `n` is not a whole number of months, or\nthe result leaves the year range this module can write down. Time fields are neither read nor\ncarried — the answer is a day."
        },
        {
          "kind": "function",
          "name": "addDays",
          "return": {
            "type": {
              "text": "WallClockDate | null"
            }
          },
          "parameters": [
            {
              "name": "w",
              "type": {
                "text": "WallClockDate"
              }
            },
            {
              "name": "n",
              "type": {
                "text": "number"
              }
            }
          ],
          "description": "A day `n` days on. `null` on the same three grounds as addMonths: an impossible day, a\nstep that is not a whole number of days, or a result outside the year range."
        },
        {
          "kind": "function",
          "name": "isoDayOfWeek",
          "return": {
            "type": {
              "text": "number"
            }
          },
          "parameters": [
            {
              "name": "w",
              "type": {
                "text": "WallClockDate"
              }
            }
          ],
          "description": "The weekday, ISO-numbered: 1 is Monday, 7 is Sunday.\n\nConverts without judging, as daysInMonth does — a day the calendar lacks answers for the\nday it rolls into, and a field that is `NaN` gives `NaN` back."
        },
        {
          "kind": "function",
          "name": "utcDateToIso",
          "return": {
            "type": {
              "text": "string"
            }
          },
          "parameters": [
            {
              "name": "d",
              "type": {
                "text": "Date"
              }
            }
          ],
          "description": "The calendar day a UTC instant names, as a wire string."
        },
        {
          "kind": "function",
          "name": "utcDateToTime",
          "return": {
            "type": {
              "text": "string"
            }
          },
          "parameters": [
            {
              "name": "d",
              "type": {
                "text": "Date"
              }
            },
            {
              "name": "precision",
              "default": "'minute'",
              "type": {
                "text": "'minute' | 'second' | 'millisecond'"
              }
            }
          ],
          "description": "The time of day a UTC instant names, at the precision asked for — `'minute'` by default, as a\nnative time input holds it.\n\nThe counterpart to utcDateToIso, and the reason it exists: `utcDateToWallClock` always\nemits all seven fields, so composing it with wallClockToWire would turn every instant into\na full `HH:mm:ss.mmm`, and `14:30` would come back as `1970-01-01T14:30:00.000`."
        },
        {
          "kind": "function",
          "name": "isDateOnlyString",
          "return": {
            "type": {
              "text": "value is string"
            }
          },
          "parameters": [
            {
              "name": "value",
              "type": {
                "text": "unknown"
              }
            }
          ],
          "description": "True when `value` names a calendar day with no time of day. All three forms are valid HTML\n`datetime` values, so such a string can be passed through instead of narrowed to an instant."
        },
        {
          "kind": "function",
          "name": "dateOnlyPeriod",
          "return": {
            "type": {
              "text": "Period | null"
            }
          },
          "parameters": [
            {
              "name": "value",
              "type": {
                "text": "unknown"
              }
            }
          ],
          "description": "Which stretch a date-only string names — `'date'`, `'month'` or `'year'` in periodOf's\nwording. `null` for everything else, a value carrying a time included.\n\nA display element needs the distinction that isDateOnlyString flattens: `2026-08` is a\ndate-only string that names no day, and formatting it with the locale's own defaults prints one."
        },
        {
          "kind": "function",
          "name": "namesNothing",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "input",
              "type": {
                "text": "Date | string | null | undefined"
              }
            }
          ],
          "description": "True when `input` asks for **nothing to be shown**, as opposed to naming something the parser\ncannot read. parseDisplayDate answers `null` to both, and a display element has to tell\nthem apart: the first is what a consumer writes for an empty field, the second is a mistake worth\nreporting.\n\nAnything not nullish is measured by what it prints, not by its type. A caller reaching past the\ndeclared type with `[]` or a boxed empty string has written nothing down either, and reporting\nthat as unreadable would name the value in the message as `\"\"`."
        },
        {
          "kind": "function",
          "name": "localDate",
          "return": {
            "type": {
              "text": "Date"
            }
          },
          "parameters": [
            {
              "name": "year",
              "type": {
                "text": "number"
              }
            },
            {
              "name": "month",
              "type": {
                "text": "number"
              }
            },
            {
              "name": "day",
              "type": {
                "text": "number"
              }
            }
          ],
          "description": "Local midnight of the given calendar fields — the one way a local `Date` is built, here and in\nthe calendar. **`month` is 0-based**, the way `setFullYear` takes it and unlike everything above.\n\nThe constructor cannot be used for it: `new Date(y, m, d)` reads any year below 100 as 19xx, so\nyear 50 arrives as 1950 and no caller can tell. `setFullYear` on an epoch date has no such\nmapping, and the floor is needed because that epoch date is midnight *UTC* while `setFullYear`\nleaves the time of day where it found it — without it the result carries the local offset as a\ntime, 01:00 in Berlin and 21:00 the day before in São Paulo.\n\nMonth and day are taken **unnormalized**, the way the constructor takes them: month 12 is January\nof the next year, day 0 the last of the previous month, day 32 rolls forward. The calendar's\narithmetic leans on that — a month step is `month + 1`, a week is `day + 7`."
        },
        {
          "kind": "function",
          "name": "parseDisplayDate",
          "return": {
            "type": {
              "text": "Date | null"
            }
          },
          "parameters": [
            {
              "name": "input",
              "type": {
                "text": "Date | string | null | undefined"
              }
            }
          ],
          "description": "Free-form input as a `Date`, or `null` when nothing is usable. Sidesteps all three `Date` traps above."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "WIRE_FORMATS",
          "declaration": {
            "name": "WIRE_FORMATS",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "isRealDate",
          "declaration": {
            "name": "isRealDate",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "periodOf",
          "declaration": {
            "name": "periodOf",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "isRealWallClock",
          "declaration": {
            "name": "isRealWallClock",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "weeksInYear",
          "declaration": {
            "name": "weeksInYear",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "isoWeekOf",
          "declaration": {
            "name": "isoWeekOf",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "isRealTime",
          "declaration": {
            "name": "isRealTime",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "hasDate",
          "declaration": {
            "name": "hasDate",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "hasTime",
          "declaration": {
            "name": "hasTime",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "to12Hour",
          "declaration": {
            "name": "to12Hour",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "to24Hour",
          "declaration": {
            "name": "to24Hour",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "isUsableDate",
          "declaration": {
            "name": "isUsableDate",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "wireToWallClock",
          "declaration": {
            "name": "wireToWallClock",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "wallClockToWire",
          "declaration": {
            "name": "wallClockToWire",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "wallClockToIso",
          "declaration": {
            "name": "wallClockToIso",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "wallClockToTime",
          "declaration": {
            "name": "wallClockToTime",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "wallClockToUtcDate",
          "declaration": {
            "name": "wallClockToUtcDate",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "utcDateToWallClock",
          "declaration": {
            "name": "utcDateToWallClock",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "wireToUtcDate",
          "declaration": {
            "name": "wireToUtcDate",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "periodStart",
          "declaration": {
            "name": "periodStart",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "periodEnd",
          "declaration": {
            "name": "periodEnd",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "isoWeekToMonday",
          "declaration": {
            "name": "isoWeekToMonday",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "daysInMonth",
          "declaration": {
            "name": "daysInMonth",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "addMonths",
          "declaration": {
            "name": "addMonths",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "addDays",
          "declaration": {
            "name": "addDays",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "isoDayOfWeek",
          "declaration": {
            "name": "isoDayOfWeek",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "utcDateToIso",
          "declaration": {
            "name": "utcDateToIso",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "utcDateToTime",
          "declaration": {
            "name": "utcDateToTime",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "isDateOnlyString",
          "declaration": {
            "name": "isDateOnlyString",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "dateOnlyPeriod",
          "declaration": {
            "name": "dateOnlyPeriod",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "namesNothing",
          "declaration": {
            "name": "namesNothing",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "localDate",
          "declaration": {
            "name": "localDate",
            "module": "internal/date-utils.js"
          }
        },
        {
          "kind": "js",
          "name": "parseDisplayDate",
          "declaration": {
            "name": "parseDisplayDate",
            "module": "internal/date-utils.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/grid-host.js",
      "declarations": [],
      "exports": []
    },
    {
      "kind": "javascript-module",
      "path": "internal/grid-focus.js",
      "declarations": [
        {
          "kind": "function",
          "name": "isInteractiveWidget",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "el",
              "type": {
                "text": "Element"
              }
            }
          ],
          "description": "Whether the element is an interactive widget by the same rules cell navigation uses.\n\nExposed so pointer handling and keyboard handling classify the same elements: a row click has to\nleave the row selection alone wherever the keyboard would hand the element control."
        },
        {
          "kind": "function",
          "name": "hasCellAction",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "cell",
              "type": {
                "text": "Element"
              }
            }
          ],
          "description": "Whether a cell has an action of its own, which a host declares with `data-cell-action`.\n\nSuch a cell keeps focus and Enter even where it holds a single widget, because the widget is then\nthe second of two things the cell does rather than the only one."
        },
        {
          "kind": "function",
          "name": "getCellWidgets",
          "return": {
            "type": {
              "text": "CellWidget[]"
            }
          },
          "parameters": [
            {
              "name": "cell",
              "type": {
                "text": "HTMLElement"
              }
            }
          ],
          "description": "Returns interactive widgets within a cell, classified by whether they consume\narrow keys. Walks the cell subtree but stops descending once an element is\nitself classified, so wrapping a widget in a layout `<div>` (e.g. for sizing)\ndoes not hide it from keyboard navigation."
        },
        {
          "kind": "class",
          "description": "Manages focused cell tracking and roving tabindex for grid components.\nOne cell has `tabindex=\"0\"` at a time; all others have `tabindex=\"-1\"`.\n\nPer WAI-ARIA grid pattern: if a cell contains a single atomic widget\n(button, link, checkbox, switch, …) focus is delegated directly to it —\nunless the cell has an action of its own (`data-cell-action`), which makes\nthe widget the second of two things the cell does. Cells with such an\naction, with arrow-consuming widgets (inputs, selects, sliders) or with\nmultiple widgets keep focus on the cell itself; actions mode (see\ngrid-keyboard-nav) is the entry point into those widgets.",
          "name": "GridFocusController",
          "members": [
            {
              "kind": "field",
              "name": "host",
              "type": {
                "text": "GridControllerHost"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "focusedCell",
              "type": {
                "text": "HTMLElement | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "focusedWidget",
              "type": {
                "text": "HTMLElement | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "isGridNavigationDisabled",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "focusSyncTarget",
              "type": {
                "text": "EventTarget"
              },
              "privacy": "private",
              "description": "Where the focusin sync listens. Must be the shadow root, not the host: when\nfocus moves between two cells of the same shadow tree, the event path is\nclipped at the host (target and relatedTarget both retarget to the host, so\nper the DOM spec the event is not dispatched there) — a host-level listener\nonly ever sees focus *entering* the component. Falls back to the host for\nsynthetic hosts without a shadow root (calendar's PanelGridHost, which runs\nits own renderRoot-level sync).",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "hostConnected"
            },
            {
              "kind": "method",
              "name": "hostDisconnected"
            },
            {
              "kind": "field",
              "name": "handleFocusIn",
              "privacy": "private",
              "description": "Re-anchors the roving tabindex when focus enters a cell by any means the\nkeyboard controller didn't initiate (mouse click, programmatic focus).\nWithout this, arrow keys keep operating from the stale tracked cell until\nthe user tabs back to it. Walks composedPath() because focusin retargets\nacross shadow boundaries (e.g. focus landing inside an ed-checkbox)."
            },
            {
              "kind": "method",
              "name": "syncFromActiveElement",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Re-anchors the tab stop to whatever holds the focus now.\n\nFor a move `handleFocusIn` was not allowed to act on: while a cell is being operated the sync\nstands down, so a click into another cell is seen and ignored. By the time the mode has been\nended in reaction to that same click, the `focusin` is long past — and without this the tab stop\nstays on the cell the user left, which makes every later key be dropped by the guard that\nexpects focus to be on or inside it."
            },
            {
              "kind": "method",
              "name": "getFocusedCell",
              "return": {
                "type": {
                  "text": "HTMLElement | null"
                }
              },
              "description": "Returns the currently tracked cell (grid position), or null if none."
            },
            {
              "kind": "method",
              "name": "getFocusedWidget",
              "return": {
                "type": {
                  "text": "HTMLElement | null"
                }
              }
            },
            {
              "kind": "method",
              "name": "setFocusedWidget",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "focusedWidget",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getIsGridNavigationDisabled",
              "return": {
                "type": {
                  "text": "boolean"
                }
              }
            },
            {
              "kind": "method",
              "name": "setIsGridNavigationDisabled",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "isDisabled",
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "applyTabStop",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "isActive",
                  "type": {
                    "text": "boolean"
                  }
                }
              ],
              "description": "Marks a cell (and its widgets) as the active tab stop.\n\nPer WAI-ARIA grid pattern (\"Only one of the focusable elements contained by\nthe grid is included in the page tab sequence\"):\n- Single atomic widget cell: widget gets `tabindex=0`, cell gets `tabindex=-1`.\n- All other compositions: cell gets `tabindex=0`, widgets get `tabindex=-1`.\n\n`isActive=false` resets both the cell and its widgets to `tabindex=-1`."
            },
            {
              "kind": "method",
              "name": "setFocusedCell",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "options",
                  "default": "{}",
                  "type": {
                    "text": "SetFocusedCellOptions"
                  }
                }
              ],
              "description": "Updates the focused cell. Moves the page tab stop from the old cell (or its\ndelegated widget) to the new cell (or its delegated widget) and optionally\ncalls `focus()` on it.\n\nIf the cell contains a single atomic widget and no action of its own, focus\nis delegated to that widget (per WAI-ARIA grid pattern). While in actions\nmode (grid navigation disabled) focus is delegated to the first widget\nregardless of kind. In all other cases (no widgets, a cell action, single\narrow-consuming, or multiple widgets) focus stays on the cell and\n`focusedWidget` is reset to `null`."
            },
            {
              "kind": "method",
              "name": "scrollCellIntoView",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "Scrolls a cell into the scroll container's optimal viewing region — the area\ninside its scroll-padding, which the host derives from sticky regions (pinned\ncolumn bands, sticky header/totals rows).\n\nThe controller owns this scroll instead of the UA (focus() is always called\nwith preventScroll) because engines disagree about scroll-padding during\nscroll-on-focus: Safari ignores it entirely, and Firefox misjudges it around\nsticky cells. Axes on which the cell (or an ancestor inside the scroller)\nis sticky are skipped — sticky elements are permanently visible on that axis,\nand scrolling toward their static position would just yank the viewport."
            },
            {
              "kind": "method",
              "name": "setupRovingTabindex",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Initializes roving tabindex across all cells. The first cell in the first\nrow gets the page tab stop (on the cell itself, or on its widget if that\ncell has a single atomic widget); all other cells and their widgets are\nmarked `tabindex=-1`.\nShould be called after `firstUpdated()`."
            },
            {
              "kind": "method",
              "name": "refresh",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Re-initializes roving tabindex if the currently tracked focused cell is no\nlonger in the DOM, or if it was never set (e.g. initial setup ran before\nany cells existed because data/columns were assigned after first render).\nAlso resets any newly-rendered widgets to `tabindex=-1` so they don't\nleak into the page tab sequence. Call this after rows are added or removed."
            }
          ],
          "jsDoc": "/**\n * Manages focused cell tracking and roving tabindex for grid components.\n * One cell has `tabindex=\"0\"` at a time; all others have `tabindex=\"-1\"`.\n *\n * Per WAI-ARIA grid pattern: if a cell contains a single atomic widget\n * (button, link, checkbox, switch, …) focus is delegated directly to it —\n * unless the cell has an action of its own (`data-cell-action`), which makes\n * the widget the second of two things the cell does. Cells with such an\n * action, with arrow-consuming widgets (inputs, selects, sliders) or with\n * multiple widgets keep focus on the cell itself; actions mode (see\n * grid-keyboard-nav) is the entry point into those widgets.\n */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "isInteractiveWidget",
          "declaration": {
            "name": "isInteractiveWidget",
            "module": "internal/grid-focus.js"
          }
        },
        {
          "kind": "js",
          "name": "hasCellAction",
          "declaration": {
            "name": "hasCellAction",
            "module": "internal/grid-focus.js"
          }
        },
        {
          "kind": "js",
          "name": "getCellWidgets",
          "declaration": {
            "name": "getCellWidgets",
            "module": "internal/grid-focus.js"
          }
        },
        {
          "kind": "js",
          "name": "GridFocusController",
          "declaration": {
            "name": "GridFocusController",
            "module": "internal/grid-focus.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/platform.js",
      "declarations": [
        {
          "kind": "function",
          "name": "isMac",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "description": "True on macOS and iOS.\n\n`navigator.platform` carries a deprecation warning on MDN and is read here anyway, because the\nreplacement does not reach the browsers this library supports: MDN files\n`navigator.userAgentData` as \"Limited availability … not Baseline because it does not work in\nsome of the most widely-used browsers\", experimental, and secure-context only — while Firefox ESR\nis a hard requirement here and nothing else in the library needs a secure context. WHATWG HTML\nstill defines `platform` normatively and marks it neither deprecated nor obsolete: \"return a\nstring representing the platform on which the browser is executing (e.g. `MacIntel`, `Win32`,\n`Linux x86_64` …)\".\n\n`MacIntel` is also what an iPad reports from iPadOS 13 on, which is why the pattern matches it\nrather than testing for a touch screen."
        },
        {
          "kind": "function",
          "name": "isModKeyPressed",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "event",
              "type": {
                "text": "KeyboardEvent | MouseEvent"
              }
            }
          ],
          "description": "True when the platform's primary shortcut modifier is held — Cmd on Mac, Ctrl elsewhere.\n\nUse this in keyboard handlers that need to mirror native shortcuts (e.g. Ctrl/Cmd+A select-all).\nOn Mac, Ctrl is reserved for system emacs caret bindings inside text fields — accepting both\nmodifiers would trample those (Ctrl+A = move caret to start of line)."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "isMac",
          "declaration": {
            "name": "isMac",
            "module": "internal/platform.js"
          }
        },
        {
          "kind": "js",
          "name": "isModKeyPressed",
          "declaration": {
            "name": "isModKeyPressed",
            "module": "internal/platform.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/grid-keyboard-nav.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Listens for `keydown` on the host and implements 2D grid navigation\n(arrow keys, Home/End, Ctrl+Home/End) per the WAI-ARIA grid pattern.\nManages an actions mode entered with Enter or F2 on cells whose widgets\nconsume arrows or whose cell holds more than one widget; inside actions\nmode Tab / Shift+Tab cycle through the cell's widgets, and Escape or a\nsecond F2 returns to grid navigation.",
          "name": "GridKeyboardNavController",
          "members": [
            {
              "kind": "field",
              "name": "host",
              "type": {
                "text": "GridControllerHost"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "options",
              "type": {
                "text": "GridKeyboardNavOptions"
              },
              "privacy": "private",
              "default": "options"
            },
            {
              "kind": "field",
              "name": "grid",
              "type": {
                "text": "(HTMLElement | undefined)[][]"
              },
              "privacy": "private",
              "default": "[]",
              "description": "The navigable rows, each laid out **by column**: the index is the column, and a cell that spans\ncolumns appears once per column it covers. Navigating by the cells' position in the row instead\nwould drift by the width of every span to its left.\n\nA row may have holes when the host declares column indices that skip one, so every read goes\nthrough `cellNearColumn`."
            },
            {
              "kind": "field",
              "name": "gridDirty",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "true"
            },
            {
              "kind": "field",
              "name": "actionsCell",
              "type": {
                "text": "HTMLElement | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Cell currently in actions mode, or null.",
              "parsedType": {
                "text": "null | HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "virtualNavPending",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Guards the async scroll-then-focus path against overlapping virtual jumps."
            },
            {
              "kind": "field",
              "name": "queuedPages",
              "type": {
                "text": "(1 | -1)[]"
              },
              "privacy": "private",
              "default": "[]",
              "description": "The pages asked for by PageUp and PageDown while a jump was under way, one entry per press, gone\none at a time once it lands — each held to the rows there are, as presses one after the other are."
            },
            {
              "kind": "field",
              "name": "focusOutTarget",
              "type": {
                "text": "EventTarget | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Where `focusout` is listened for.\n\nThe shadow root, not the host, and for the reason `grid-focus.ts` gives for its twin: focus\nmoving between two nodes of the **same** shadow tree retargets both sides to the host, so per the\nDOM spec the event is not dispatched there at all. On the host this listener would only ever see\nfocus leaving the whole component — and a user stepping out of a cell they were operating into\nanother cell of the same grid is exactly the move it has to see.\n\nResolved once and kept, so the listener is removed from the target it was added to.",
              "parsedType": {
                "text": "null | { addEventListener: {  }, dispatchEvent: {  }, removeEventListener: {  } }"
              }
            },
            {
              "kind": "method",
              "name": "hostConnected"
            },
            {
              "kind": "method",
              "name": "hostDisconnected"
            },
            {
              "kind": "method",
              "name": "invalidateGrid",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "buildGrid",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "rowByColumn",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "(HTMLElement | undefined)[]"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "reaching",
                  "default": "[]",
                  "type": {
                    "text": "({ cell: HTMLElement; rows: number } | undefined)[]"
                  }
                }
              ],
              "description": "Lays a row's cells out by column.\n\n`aria-colindex`, `aria-colspan` and `aria-rowspan` are where a cell says which column it starts\nat and how far it reaches — the same attributes a screen reader uses to say the position out\nloud, so a grid that announces itself correctly navigates correctly too. A host that sets none\nof them gets the cells' own order, which is what a grid without spans has anyway.\n\n`reaching` carries what the rows above still cover and is updated in place, so the caller walks\nthe rows once."
            },
            {
              "kind": "method",
              "name": "cellInColumn",
              "return": {
                "type": {
                  "text": "HTMLElement | undefined"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "column",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "The cell covering a column in one row, or the nearest one before it.\n\nA host that has to place the tab stop itself — because the row holding it was taken away — asks\nthis rather than matching `aria-colindex` by hand: the column it is looking for may be covered by\na cell that starts further left and has no index of its own.\n\nIt reads the one row and nothing above it, so a column covered from a row further up answers as\na hole here. That is right for the row a stranded tab stop is moved to — the first of its region —\nand would be wrong for any later one."
            },
            {
              "kind": "method",
              "name": "freeColumnFrom",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "(HTMLElement | undefined)[]"
                  }
                },
                {
                  "name": "from",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "The first column at or after `from` that a cell reaching down from an earlier row has not taken."
            },
            {
              "kind": "method",
              "name": "cellNearColumn",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLElement | undefined"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "(HTMLElement | undefined)[]"
                  }
                },
                {
                  "name": "column",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "The cell at a column, or the nearest one before it — a row that is shorter than the column asked\nfor still has to answer, which is what an arrow leaving a wide row into a narrow one needs."
            },
            {
              "kind": "method",
              "name": "lastColumnOf",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "(HTMLElement | undefined)[]"
                  }
                }
              ],
              "description": "The last column a row actually fills."
            },
            {
              "kind": "method",
              "name": "stepHorizontal",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLElement | undefined"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "(HTMLElement | undefined)[]"
                  }
                },
                {
                  "name": "column",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "delta",
                  "type": {
                    "text": "1 | -1"
                  }
                }
              ],
              "description": "The next cell in a row, counting cells rather than columns: stepping out of a cell that spans\ntwo columns has to reach the cell beyond it, not the second column it still covers."
            },
            {
              "kind": "method",
              "name": "getGrid",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "(HTMLElement | undefined)[][]"
                }
              }
            },
            {
              "kind": "method",
              "name": "findCellPosition",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "{ row: number; col: number } | null"
                }
              },
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "focusCell",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "spanEdge",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "col",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "delta",
                  "type": {
                    "text": "1 | -1"
                  }
                }
              ],
              "description": "The last row a cell occupies in the given direction — its own row when it occupies only one."
            },
            {
              "kind": "method",
              "name": "focusGridCell",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "gridRow",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "col",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "moveVertical",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "col",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "delta",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "skipAttached",
                  "default": "false"
                }
              ],
              "description": "ArrowUp and ArrowDown, keeping the column a run of them started in.\n\nA cell that reaches across several columns — a detail panel, a spanned cell — sits in the grid\nmap at every one of them and is found at the first, so leaving it would drop the focus into the\nleading column. The column the focus came down or up in is kept for the cell it landed on and\ntaken up again when it moves on."
            },
            {
              "kind": "field",
              "name": "verticalRun",
              "type": {
                "text": "{ cell: HTMLElement; col: number } | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Where a vertical run of arrow keys started, and the cell it last landed on.",
              "parsedType": {
                "text": "null | { cell: HTMLElement, col: number }"
              }
            },
            {
              "kind": "method",
              "name": "moveVerticalFrom",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<unknown> | undefined"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "col",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "delta",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "skipAttached",
                  "default": "false"
                }
              ],
              "description": "One step up or down. `skipAttached` passes over the rows attached to body rows — a selection\nextended with Shift runs from row to row, and a detail panel is none."
            },
            {
              "kind": "method",
              "name": "focusBodyRowByAbsoluteIndex",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<boolean>"
                }
              },
              "parameters": [
                {
                  "name": "targetIndex",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "col",
                  "type": {
                    "text": "number | 'last'"
                  }
                }
              ],
              "description": "Scrolls the body row at an absolute data index into view and focuses one of\nits cells. `col` is a column index, or `'last'` for the row's final cell\n(Ctrl+End). Returns true when focus moved. Serialized by `virtualNavPending`\nso a burst of keydown events can't launch overlapping scroll-focus operations."
            },
            {
              "kind": "method",
              "name": "flushQueuedPage",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Goes the next page pressed during the jump that just landed, from the cell it landed on."
            },
            {
              "kind": "method",
              "name": "movePage",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "col",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "direction",
                  "type": {
                    "text": "1 | -1"
                  }
                }
              ],
              "description": "PageUp/PageDown: jump one viewport page of body rows in absolute data space,\nclamped to the dataset edges. Returns true when the key was consumed (the\nfocused cell is a body row and the host provides the page hooks)."
            },
            {
              "kind": "method",
              "name": "focusLastDataCell",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "parameters": [
                {
                  "name": "lastRow",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Ctrl+End: focus the last cell of the last row — APG, Grid Pattern: \"moves focus to the last cell\nin the last row\". That is the footer's where there is one, which is always rendered. Otherwise it\nis the last *data* row, which under virtual scroll usually isn't rendered, so it is scrolled in\nfirst; falls back to the last cell of the last rendered row for fully-rendered hosts or when no\nhooks exist."
            },
            {
              "kind": "method",
              "name": "inActionsMode",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "description": "True while the user is editing/operating a widget inside a cell."
            },
            {
              "kind": "method",
              "name": "enterActionsMode",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "exitActionsMode",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "restoreFocus",
                  "default": "false"
                }
              ],
              "description": "Leaves actions mode.\n\n`restoreFocus` is for the two deliberate ways out — Escape and a second F2 — where the user is\nstill in the cell and expects to land on it. Every other caller is reacting to focus that has\nalready gone somewhere else, and pulling it back would undo the user's own move: it is what\nmakes a cell impossible to Tab out of."
            },
            {
              "kind": "method",
              "name": "releaseActionsCell",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Ends actions mode when there is nothing left to operate.\n\nTwo ways that happens, and a host that re-renders has to be asked after every one of them. The\ncell can leave the DOM — a window into a long list takes rows away under the user. Or the cell\ncan stay and lose its control, which a formatter that renders a field only while a row is being\nedited does on the row's next render. Either way the mode would otherwise stay on: navigation\ndisabled, no widget to reach, and every key dropped by the guard that expects focus to be inside\nthe cell. Escape would be the only way out."
            },
            {
              "kind": "field",
              "name": "handleEscapeCapture",
              "privacy": "private",
              "description": "Capture-phase Escape listener. Runs before child widgets like `ed-select` /\n`ed-combobox` get a chance to `stopPropagation()` on the event in their own\nkeydown handlers (they do this on purpose to isolate their internal\nkeystrokes from ancestor components).\n\nCoordinates with `dismissible-stack`: the grid only exits actions mode if\nit is the top dismissible. When a child overlay (e.g. an open `ed-select`\ndropdown) is above us in the stack, we leave the Escape for that overlay\nto consume — the user's first Escape closes the overlay, a second Escape\n(with the grid now top of the stack) exits actions mode."
            },
            {
              "kind": "field",
              "name": "handleFocusOut",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "cellInViewFrom",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLElement"
                }
              },
              "parameters": [
                {
                  "name": "stop",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "scroller",
                  "type": {
                    "text": "HTMLElement | null"
                  }
                }
              ],
              "description": "The cell to go on from when the focus sits on the scroll container: the one holding the tab stop\nwhere it is in view, else the cell in its column of the first body row fully below the header."
            },
            {
              "kind": "field",
              "name": "handleKeyDown",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleActionsModeKey",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                },
                {
                  "name": "cell",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "Handles keys while the grid is in actions mode."
            },
            {
              "kind": "method",
              "name": "cycleWidgets",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "widgets",
                  "type": {
                    "text": "ReturnType<typeof getCellWidgets>"
                  }
                },
                {
                  "name": "delta",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ],
              "description": "Moves focus to the widget `delta` steps from the currently focused widget,\nwrapping at the edges. Uses `event.composedPath()` to identify the current\nwidget so shadow-DOM retargeting (which would otherwise rewrite\n`event.target` to the grid host) doesn't break the lookup. Falls back to\nthe focus controller's tracked widget when the path matches nothing.\nReturns `true` when focus moved."
            }
          ],
          "jsDoc": "/**\n * Listens for `keydown` on the host and implements 2D grid navigation\n * (arrow keys, Home/End, Ctrl+Home/End) per the WAI-ARIA grid pattern.\n * Manages an actions mode entered with Enter or F2 on cells whose widgets\n * consume arrows or whose cell holds more than one widget; inside actions\n * mode Tab / Shift+Tab cycle through the cell's widgets, and Escape or a\n * second F2 returns to grid navigation.\n */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "GridKeyboardNavController",
          "declaration": {
            "name": "GridKeyboardNavController",
            "module": "internal/grid-keyboard-nav.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/divider/divider.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDivider",
          "cssProperties": [
            {
              "description": "The color of the divider.",
              "name": "--ed-divider-color",
              "default": "var(--ed-color-border)"
            },
            {
              "description": "The width of the divider.",
              "name": "--ed-divider-width",
              "default": "var(--ed-border-width-1)"
            },
            {
              "description": "The spacing of the divider.",
              "name": "--ed-divider-spacing",
              "default": "var(--ed-space-4)"
            },
            {
              "description": "The space between the label and the lines beside it.",
              "name": "--ed-divider-label-spacing",
              "default": "var(--ed-space-3)"
            },
            {
              "description": "The length of the line between the divider's edge and a label placed at the start or the end.",
              "name": "--ed-divider-label-offset",
              "default": "0"
            }
          ],
          "cssParts": [
            {
              "description": "The container that wraps the label.",
              "name": "label"
            }
          ],
          "slots": [
            {
              "description": "An optional label shown on the divider, such as \"or\" between two ways to sign in.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, '[default]')"
            },
            {
              "kind": "field",
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'horizontal'",
              "description": "Sets the divider's orientation.",
              "attribute": "orientation",
              "reflects": true,
              "parsedType": {
                "text": "'horizontal' | 'vertical'"
              }
            },
            {
              "kind": "field",
              "name": "withLabel",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Only needed for server-side rendering: set it when a label is slotted in, so the server-rendered markup lays\nthe label out before the component hydrates. On the client the divider detects the label itself.",
              "attribute": "with-label",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "labelPlacement",
              "type": {
                "text": "'start' | 'center' | 'end'"
              },
              "default": "'center'",
              "description": "Where the label sits along the divider.",
              "attribute": "label-placement",
              "reflects": true,
              "parsedType": {
                "text": "'start' | 'end' | 'center'"
              }
            },
            {
              "kind": "field",
              "name": "textObserver",
              "type": {
                "text": "MutationObserver | undefined"
              },
              "privacy": "private",
              "description": "Watches the label's text, which frameworks edit in place without a slotchange.",
              "parsedType": {
                "text": "{ disconnect: {  }, observe: {  }, takeRecords: {  } } | undefined"
              }
            },
            {
              "kind": "method",
              "name": "updateAccessibleName",
              "privacy": "private",
              "description": "A separator's children are presentational, so the label's text reaches assistive technology as the accessible\nname instead. A label without text, such as an icon, needs an aria-label on the divider."
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'horizontal'",
              "description": "Sets the divider's orientation.",
              "fieldName": "orientation",
              "parsedType": {
                "text": "'horizontal' | 'vertical'"
              }
            },
            {
              "name": "with-label",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Only needed for server-side rendering: set it when a label is slotted in, so the server-rendered markup lays\nthe label out before the component hydrates. On the client the divider detects the label itself.",
              "fieldName": "withLabel"
            },
            {
              "name": "label-placement",
              "type": {
                "text": "'start' | 'center' | 'end'"
              },
              "default": "'center'",
              "description": "Where the label sits along the divider.",
              "fieldName": "labelPlacement",
              "parsedType": {
                "text": "'start' | 'end' | 'center'"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Dividers are used to visually separate or group elements.",
          "jsDoc": "/**\n * @summary Dividers are used to visually separate or group elements.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/divider\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @slot - An optional label shown on the divider, such as \"or\" between two ways to sign in.\n *\n * @csspart label - The container that wraps the label.\n *\n * @cssproperty [--ed-divider-color=var(--ed-color-border)] - The color of the divider.\n * @cssproperty [--ed-divider-width=var(--ed-border-width-1)] - The width of the divider.\n * @cssproperty [--ed-divider-spacing=var(--ed-space-4)] - The spacing of the divider.\n * @cssproperty [--ed-divider-label-spacing=var(--ed-space-3)] - The space between the label and the lines beside it.\n * @cssproperty [--ed-divider-label-offset=0] - The length of the line between the divider's edge and a label\n *  placed at the start or the end.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/divider",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-divider",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdDivider",
            "module": "components/divider/divider.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-divider",
          "declaration": {
            "name": "EdDivider",
            "module": "components/divider/divider.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/calendar/internal/local-dates.js",
      "declarations": [
        {
          "kind": "function",
          "name": "clipForLog",
          "return": {
            "type": {
              "text": "string"
            }
          },
          "parameters": [
            {
              "name": "s",
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "Clip a consumer-supplied string before it reaches the logger, bounding console output so a\ndeliberately huge attribute value cannot flood the console. 64 chars is comfortably longer\nthan any well-formed date/time/datetime wire string."
        },
        {
          "kind": "function",
          "name": "addLocalDays",
          "return": {
            "type": {
              "text": "Date"
            }
          },
          "parameters": [
            {
              "name": "date",
              "type": {
                "text": "Date"
              }
            },
            {
              "name": "days",
              "type": {
                "text": "number"
              }
            }
          ],
          "description": "`date` shifted by whole days, staying on local midnight."
        },
        {
          "kind": "function",
          "name": "isoWeekNumber",
          "return": {
            "type": {
              "text": "number"
            }
          },
          "parameters": [
            {
              "name": "d",
              "type": {
                "text": "Date"
              }
            }
          ],
          "description": "Compute the ISO 8601 week number for a given local date.\n\nAlgorithm: the ISO week that contains Thursday is always the week of the year that Thursday\nfalls in. We shift the date to the Thursday of its ISO week, then count how many full weeks\nhave elapsed since Jan 1 of that Thursday's year.\n\nYear-boundary cases handled correctly:\n- Dec 28–31 may belong to the NEXT year's W01 when their Thursday falls in January.\n- Jan 1–3 may belong to the PREVIOUS year's W52/W53 when their Thursday falls in December."
        },
        {
          "kind": "function",
          "name": "isoWeekYear",
          "return": {
            "type": {
              "text": "number"
            }
          },
          "parameters": [
            {
              "name": "d",
              "type": {
                "text": "Date"
              }
            }
          ],
          "description": "Returns the ISO 8601 year that contains the ISO week of `d`.\n\nThis differs from `d.getFullYear()` for days near year boundaries — e.g. Monday 2025-12-29\nbelongs to 2026-W01, so its ISO year is 2026."
        },
        {
          "kind": "function",
          "name": "parseIsoWeek",
          "return": {
            "type": {
              "text": "{ year: number; week: number } | null"
            }
          },
          "parameters": [
            {
              "name": "s",
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "Parse a `'YYYY-Www'` string (e.g. `'2026-W22'`) and return `{ year, week }`.\nReturns `null` when the string is malformed or the week number is outside 1–53.\n\nAny year from 0001 works, which is the same line `isRealPeriod` draws on the field's side of the\nfamily — the two parsers read the same wire form and have to agree, or the field shows and submits\na value its own panel refuses to draw. This one used to stop at 100 because\nlocalIsoWeekMonday built its dates with `new Date(y, m, d)`, where a year below 100 maps\nonto 19xx; it builds through localDate now, which is what that mapping cannot reach.\n\nNote: this does NOT validate that week 53 actually exists in the given year — that\nvalidation belongs to the picker's constraint-validation layer."
        },
        {
          "kind": "function",
          "name": "localIsoWeekMonday",
          "return": {
            "type": {
              "text": "Date"
            }
          },
          "parameters": [
            {
              "name": "year",
              "type": {
                "text": "number"
              }
            },
            {
              "name": "week",
              "type": {
                "text": "number"
              }
            }
          ],
          "description": "Return the **local** `Date` of the Monday that starts ISO week `week` of `year`.\n\n`local` is in the name on purpose: `src/internal/date-utils.ts` exports an `isoWeekToMonday` that\nanswers the same question with a **UTC instant**. Both return a `Date`, so nothing at the call\nsite would show which one was imported — and a UTC instant fed to this file's local comparisons\nis off by a day for half the world. The name is the only guard there is.\n\nAlgorithm (ISO 8601 §4.3.2):\n1. Find Jan 4 of `year` — Jan 4 is always in W01 (because the ISO week containing\n   Thursday is W01, and Jan 4 is guaranteed to be in that week for any year).\n2. Find the Monday of that week (W01 Monday).\n3. Add `(week - 1) * 7` days."
        },
        {
          "kind": "function",
          "name": "parseLocalDateString",
          "return": {
            "type": {
              "text": "Date | null"
            }
          },
          "parameters": [
            {
              "name": "str",
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "Parse a `'YYYY-MM-DD'` string as a local date. Returns `null` for anything else."
        },
        {
          "kind": "function",
          "name": "toDateString",
          "return": {
            "type": {
              "text": "string"
            }
          },
          "parameters": [
            {
              "name": "d",
              "type": {
                "text": "Date"
              }
            }
          ],
          "description": "Format a date as `'YYYY-MM-DD'` (local)."
        },
        {
          "kind": "function",
          "name": "isSameLocalDay",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "a",
              "type": {
                "text": "Date"
              }
            },
            {
              "name": "b",
              "type": {
                "text": "Date"
              }
            }
          ],
          "description": "True when `a` and `b` are the same local calendar day."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "clipForLog",
          "declaration": {
            "name": "clipForLog",
            "module": "components/calendar/internal/local-dates.js"
          }
        },
        {
          "kind": "js",
          "name": "addLocalDays",
          "declaration": {
            "name": "addLocalDays",
            "module": "components/calendar/internal/local-dates.js"
          }
        },
        {
          "kind": "js",
          "name": "isoWeekNumber",
          "declaration": {
            "name": "isoWeekNumber",
            "module": "components/calendar/internal/local-dates.js"
          }
        },
        {
          "kind": "js",
          "name": "isoWeekYear",
          "declaration": {
            "name": "isoWeekYear",
            "module": "components/calendar/internal/local-dates.js"
          }
        },
        {
          "kind": "js",
          "name": "parseIsoWeek",
          "declaration": {
            "name": "parseIsoWeek",
            "module": "components/calendar/internal/local-dates.js"
          }
        },
        {
          "kind": "js",
          "name": "localIsoWeekMonday",
          "declaration": {
            "name": "localIsoWeekMonday",
            "module": "components/calendar/internal/local-dates.js"
          }
        },
        {
          "kind": "js",
          "name": "parseLocalDateString",
          "declaration": {
            "name": "parseLocalDateString",
            "module": "components/calendar/internal/local-dates.js"
          }
        },
        {
          "kind": "js",
          "name": "toDateString",
          "declaration": {
            "name": "toDateString",
            "module": "components/calendar/internal/local-dates.js"
          }
        },
        {
          "kind": "js",
          "name": "isSameLocalDay",
          "declaration": {
            "name": "isSameLocalDay",
            "module": "components/calendar/internal/local-dates.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/calendar/internal/wire.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "CALENDAR_TYPES",
          "type": {
            "text": "readonly EdCalendarType[]"
          },
          "default": "['date', 'week', 'month', 'quarter', 'halfyear', 'year']"
        },
        {
          "kind": "variable",
          "name": "WIRE_SHAPES",
          "type": {
            "text": "Record<EdCalendarType, string>"
          },
          "default": "{ date: 'YYYY-MM-DD', week: 'YYYY-Www', month: 'YYYY-MM', quarter: 'YYYY-Qq', halfyear: 'YYYY-Hh', year: 'YYYY' }",
          "description": "The shape each type writes, for the message a rejected value produces."
        },
        {
          "kind": "function",
          "name": "isWireString",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "wire",
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "True when the string is a wire value of **some** type.\n\nFor the bounds, which keep their string and resolve it against `type` on read: a value that fits\nno type at all is wrong whatever the type turns out to be, and worth saying so at the point the\nconsumer set it. One that fits the wrong type cannot be judged yet — the attribute may well\narrive before the `type` it belongs to."
        },
        {
          "kind": "function",
          "name": "wireToLocalDate",
          "return": {
            "type": {
              "text": "Date | null"
            }
          },
          "parameters": [
            {
              "name": "wire",
              "type": {
                "text": "string"
              }
            },
            {
              "name": "type",
              "type": {
                "text": "EdCalendarType"
              }
            }
          ],
          "description": "A wire string as **local midnight of the first day of what it names** — a day for `date`, the\nMonday for `week`, the first of the month for `month`, 1 July for `2026-Q3`.\n\n`null` for anything the string cannot name, which includes a value of the wrong kind: a\n`2026-08-15` handed to a month calendar is refused rather than truncated, the way a native\n`<input type=\"month\">` refuses it — measured in Chromium."
        },
        {
          "kind": "function",
          "name": "localDateToWire",
          "return": {
            "type": {
              "text": "string"
            }
          },
          "parameters": [
            {
              "name": "date",
              "type": {
                "text": "Date"
              }
            },
            {
              "name": "type",
              "type": {
                "text": "EdCalendarType"
              }
            }
          ],
          "description": "A local `Date` as the wire string this type writes.\n\nThe date is read by its **local** fields, so a grid cell built as `new Date(2026, 6, 1)` writes\n`2026-07-01` in every time zone — which is the whole reason the calendar holds local dates."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "CALENDAR_TYPES",
          "declaration": {
            "name": "CALENDAR_TYPES",
            "module": "components/calendar/internal/wire.js"
          }
        },
        {
          "kind": "js",
          "name": "WIRE_SHAPES",
          "declaration": {
            "name": "WIRE_SHAPES",
            "module": "components/calendar/internal/wire.js"
          }
        },
        {
          "kind": "js",
          "name": "isWireString",
          "declaration": {
            "name": "isWireString",
            "module": "components/calendar/internal/wire.js"
          }
        },
        {
          "kind": "js",
          "name": "wireToLocalDate",
          "declaration": {
            "name": "wireToLocalDate",
            "module": "components/calendar/internal/wire.js"
          }
        },
        {
          "kind": "js",
          "name": "localDateToWire",
          "declaration": {
            "name": "localDateToWire",
            "module": "components/calendar/internal/wire.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/calendar/selection/strategy.js",
      "declarations": [],
      "exports": []
    },
    {
      "kind": "javascript-module",
      "path": "components/calendar/selection/single.js",
      "declarations": [
        {
          "kind": "function",
          "name": "floorToPeriod",
          "return": {
            "type": {
              "text": "Date"
            }
          },
          "parameters": [
            {
              "name": "date",
              "type": {
                "text": "Date"
              }
            },
            {
              "name": "granularity",
              "type": {
                "text": "SelectionGranularity"
              }
            }
          ],
          "description": "Return the first day of the period containing `date` under `granularity`.\n\nBuilt through `localDate` rather than the `Date` constructor, which reads a year below 100 as\n19xx. Every value the calendar holds passes through here, so that mapping reached the element's\nown `value` and not just an edge of the arithmetic."
        },
        {
          "kind": "function",
          "name": "isSamePeriod",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "a",
              "type": {
                "text": "Date"
              }
            },
            {
              "name": "b",
              "type": {
                "text": "Date"
              }
            },
            {
              "name": "granularity",
              "type": {
                "text": "SelectionGranularity"
              }
            }
          ],
          "description": "True when `a` and `b` fall in the same period under `granularity`."
        },
        {
          "kind": "class",
          "description": "",
          "name": "SingleDateStrategy",
          "members": [
            {
              "kind": "field",
              "name": "selectedDate",
              "type": {
                "text": "Date | null"
              },
              "privacy": "private",
              "parsedType": {
                "text": "null | { toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@535: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "granularity",
              "type": {
                "text": "SelectionGranularity"
              },
              "privacy": "private",
              "readonly": true,
              "default": "granularity",
              "parsedType": {
                "text": "'year' | 'month' | 'day' | 'quarter' | 'halfyear'"
              }
            },
            {
              "kind": "method",
              "name": "getDayCellState",
              "return": {
                "type": {
                  "text": "DayCellState"
                }
              },
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "selectDay",
              "return": {
                "type": {
                  "text": "SelectionResult"
                }
              },
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "setSelection",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "Date | DateRange | null"
                  }
                }
              ]
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "floorToPeriod",
          "declaration": {
            "name": "floorToPeriod",
            "module": "components/calendar/selection/single.js"
          }
        },
        {
          "kind": "js",
          "name": "isSamePeriod",
          "declaration": {
            "name": "isSamePeriod",
            "module": "components/calendar/selection/single.js"
          }
        },
        {
          "kind": "js",
          "name": "SingleDateStrategy",
          "declaration": {
            "name": "SingleDateStrategy",
            "module": "components/calendar/selection/single.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/calendar/selection/range.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Two-click range selection strategy for `type=\"date\"` calendars.\n\n- First `selectDay` → sets anchor; returns incomplete result.\n- Second `selectDay` → normalizes to start <= end; returns complete result.\n- Third `selectDay` → starts a new range (MUI semantics).\n- Same-day twice = valid single-day range.\n- `previewDay` stores the hover/roving-focus target for preview rendering.\n- `setSelection` seeds a committed range (or null); never leaves mid-gesture.",
          "name": "RangeStrategy",
          "members": [
            {
              "kind": "field",
              "name": "committedRange",
              "type": {
                "text": "DateRange | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The committed range (both non-null) or null for no selection.",
              "parsedType": {
                "text": "null | { start: null | { toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@535: {  } }, end: null | { toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@535: {  } } }"
              }
            },
            {
              "kind": "field",
              "name": "anchor",
              "type": {
                "text": "Date | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The anchor date when a gesture is in progress (first click done, awaiting second).",
              "parsedType": {
                "text": "null | { toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@535: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "previewTarget",
              "type": {
                "text": "Date | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Current hover/focus preview target. Only meaningful while `anchor` is set.",
              "parsedType": {
                "text": "null | { toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@535: {  } }"
              }
            },
            {
              "kind": "method",
              "name": "getDayCellState",
              "return": {
                "type": {
                  "text": "DayCellState"
                }
              },
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "selectDay",
              "return": {
                "type": {
                  "text": "SelectionResult"
                }
              },
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "setSelection",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "Date | DateRange | null"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "previewDay",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date | null"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "seedAnchor",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date"
                  }
                }
              ],
              "description": "Seed a placed range anchor (start) without a live click gesture.\nMirrors the post-first-click state so `getDayCellState` returns `'preview-start'`\nfor the anchor via the existing anchor-without-preview path.\nThe next `selectDay` call completes the range as a normal second click."
            }
          ],
          "jsDoc": "/**\n * Two-click range selection strategy for `type=\"date\"` calendars.\n *\n * - First `selectDay` → sets anchor; returns incomplete result.\n * - Second `selectDay` → normalizes to start <= end; returns complete result.\n * - Third `selectDay` → starts a new range (MUI semantics).\n * - Same-day twice = valid single-day range.\n * - `previewDay` stores the hover/roving-focus target for preview rendering.\n * - `setSelection` seeds a committed range (or null); never leaves mid-gesture.\n */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "RangeStrategy",
          "declaration": {
            "name": "RangeStrategy",
            "module": "components/calendar/selection/range.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/calendar/selection/week.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Whole-ISO-week selection strategy for `selection-mode=\"week\"` calendars.\n\nSelecting any day in a week selects the entire Mon–Sun band.  The committed\nvalue is always the ISO-week Monday (consistent with `<input type=\"week\">` and\nthe `2026-W22` wire format).  A single `Date` is returned (not a `DateRange`),\nkeeping the calendar on the single-value side of the `Date | DateRange` union.\n\nVisual band: uses `start` (Monday), `in-range` (Tue–Sat), and `end` (Sunday)\nstates — exactly the parts the day-cell template already maps for range mode.\nPreview states are emitted while the user hovers.",
          "name": "WeekStrategy",
          "members": [
            {
              "kind": "field",
              "name": "committedMonday",
              "type": {
                "text": "Date | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Monday of the committed week, or `null` for no selection.",
              "parsedType": {
                "text": "null | { toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@535: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "previewMonday",
              "type": {
                "text": "Date | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Monday of the currently previewed week (hover / roving focus), or `null`.",
              "parsedType": {
                "text": "null | { toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@535: {  } }"
              }
            },
            {
              "kind": "method",
              "name": "getDayCellState",
              "return": {
                "type": {
                  "text": "DayCellState"
                }
              },
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_bandState",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "'start' | 'in-range' | 'end' | 'idle'"
                }
              },
              "parameters": [
                {
                  "name": "t",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "monday",
                  "type": {
                    "text": "Date"
                  }
                }
              ],
              "description": "Band position of `t` (epoch ms, local midnight) within the ISO week starting at `monday`."
            },
            {
              "kind": "method",
              "name": "selectDay",
              "return": {
                "type": {
                  "text": "SelectionResult"
                }
              },
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date"
                  }
                }
              ],
              "description": "Activating any day in a week selects that week.\nReturns `{ value: monday, complete: true }` — week selection is single-gesture."
            },
            {
              "kind": "method",
              "name": "previewDay",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date | null"
                  }
                }
              ],
              "description": "Update the hover/focus preview for the week containing `date`.\nPass `null` to clear the preview (e.g. on mouseleave)."
            },
            {
              "kind": "method",
              "name": "setSelection",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "Date | DateRange | null"
                  }
                }
              ],
              "description": "Programmatic hydration of a committed selection.  Accepts a `Date` (floors to that\nweek's Monday), a `DateRange` (uses `start`, matching the RangeStrategy convention),\nor `null` for no selection.  Never leaves the strategy in a partial state."
            },
            {
              "kind": "method",
              "name": "getCommittedMonday",
              "return": {
                "type": {
                  "text": "Date | null"
                }
              },
              "description": "The ISO-week Monday of the committed selection, or `null`.\nExposed so `buildDayGrid` can compute week-level disable bounds."
            }
          ],
          "jsDoc": "/**\n * Whole-ISO-week selection strategy for `selection-mode=\"week\"` calendars.\n *\n * Selecting any day in a week selects the entire Mon–Sun band.  The committed\n * value is always the ISO-week Monday (consistent with `<input type=\"week\">` and\n * the `2026-W22` wire format).  A single `Date` is returned (not a `DateRange`),\n * keeping the calendar on the single-value side of the `Date | DateRange` union.\n *\n * Visual band: uses `start` (Monday), `in-range` (Tue–Sat), and `end` (Sunday)\n * states — exactly the parts the day-cell template already maps for range mode.\n * Preview states are emitted while the user hovers.\n */"
        },
        {
          "kind": "function",
          "name": "isWeekOutOfBounds",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "date",
              "type": {
                "text": "Date"
              }
            },
            {
              "name": "min",
              "type": {
                "text": "Date | null"
              }
            },
            {
              "name": "max",
              "type": {
                "text": "Date | null"
              }
            }
          ],
          "description": "Return `true` when the entire ISO week containing `date` lies outside `[min, max]`.\nBoth `min` and `max` are day-precision.  A week is disabled only when it is\ncompletely out of bounds — if even one day overlaps the allowed range the week\nstays enabled (the user can select it and the picker will floor to Monday).\n\n`null` for either bound means unbounded on that side."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "WeekStrategy",
          "declaration": {
            "name": "WeekStrategy",
            "module": "components/calendar/selection/week.js"
          }
        },
        {
          "kind": "js",
          "name": "isWeekOutOfBounds",
          "declaration": {
            "name": "isWeekOutOfBounds",
            "module": "components/calendar/selection/week.js"
          }
        },
        {
          "kind": "js",
          "name": "localIsoWeekMonday",
          "declaration": {
            "name": "localIsoWeekMonday",
            "module": "components/calendar/selection/week.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/calendar/calendar.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdCalendar",
          "cssParts": [
            {
              "description": "The outer wrapper element.",
              "name": "base"
            },
            {
              "description": "The row of page controls above the body. Not rendered for `type=\"year\"`, whose list is a single page.",
              "name": "header"
            },
            {
              "description": "The flexible gap between the month and year cyclers.",
              "name": "header-spacer"
            },
            {
              "description": "Each cycler block: the month cycler for `type=\"date\"` and `type=\"week\"`, the year cycler for every type that has pages.",
              "name": "cycler"
            },
            {
              "description": "The month cycler block.",
              "name": "cycler-month"
            },
            {
              "description": "The year cycler block.",
              "name": "cycler-year"
            },
            {
              "description": "A cycler's previous-page button.",
              "name": "cycler-prev"
            },
            {
              "description": "A cycler's next-page button.",
              "name": "cycler-next"
            },
            {
              "description": "A cycler's menu trigger (shows the current month or year, opens the in-surface menu).",
              "name": "cycler-trigger"
            },
            {
              "description": "A read-only \"Month Year\" label shown above each calendar in two-panel range mode (one per panel).",
              "name": "range-month-label"
            },
            {
              "description": "The body area below the header. Contains the day grid or the active picker menu.",
              "name": "body"
            },
            {
              "description": "Any in-surface list of periods: the body's own list for `type=\"month\"` and up, and the month or year menu a cycler trigger opens.",
              "name": "picker-menu"
            },
            {
              "description": "Only the list a click selects from, as opposed to a cycler's navigation menu.",
              "name": "picker-menu-primary"
            },
            {
              "description": "Each menu item in the picker menu.",
              "name": "picker-item"
            },
            {
              "description": "The currently-selected menu item.",
              "name": "picker-item-selected"
            },
            {
              "description": "The divider between the panel content and the footer. Only visible when the footer is.",
              "name": "footer-divider"
            },
            {
              "description": "The footer wrapper. Only visible when at least one footer slot has content.",
              "name": "footer"
            },
            {
              "description": "Each row inside the footer (first row = `footer` slot, second row = `footer-controls` slot).",
              "name": "footer-row"
            },
            {
              "description": "The first footer row (the `footer` slot).",
              "name": "footer-row-custom"
            },
            {
              "description": "The second footer row (the `footer-controls` slot).",
              "name": "footer-row-controls"
            },
            {
              "description": "The day grid container.",
              "name": "grid"
            },
            {
              "description": "The row of weekday column headers.",
              "name": "weekday-header-row"
            },
            {
              "description": "Each weekday column header cell.",
              "name": "weekday-header-cell"
            },
            {
              "description": "Each body row of day cells.",
              "name": "day-row"
            },
            {
              "description": "Each day cell button.",
              "name": "day-cell"
            },
            {
              "description": "The inner state layer of a day cell (holds the digit; carries the selected/endpoint circle and the today ring).",
              "name": "day-cell-label"
            },
            {
              "description": "The day cell for today.",
              "name": "day-cell-today"
            },
            {
              "description": "A selected day cell (single-selection strategy).",
              "name": "day-cell-selected"
            },
            {
              "description": "The first cell of a span: the range start, or the Monday of the picked week.",
              "name": "day-cell-start"
            },
            {
              "description": "A cell inside a span.",
              "name": "day-cell-in-range"
            },
            {
              "description": "The last cell of a span: the range end, or the Sunday of the picked week.",
              "name": "day-cell-end"
            },
            {
              "description": "The preview start cell while a range is being built.",
              "name": "day-cell-preview-start"
            },
            {
              "description": "A cell inside the in-progress preview range.",
              "name": "day-cell-preview-in-range"
            },
            {
              "description": "The preview end cell while a range is being built.",
              "name": "day-cell-preview-end"
            },
            {
              "description": "Wrapper around each panel (header + body). Two are rendered while a range is live, one otherwise.",
              "name": "panel"
            },
            {
              "description": "The week-number cell (rendered when `show-week-numbers` is set, and always for `type=\"week\"`). For `type=\"week\"` the cell is a clickable `<div role=\"rowheader\">` that selects the whole week.",
              "name": "week-number"
            }
          ],
          "slots": [
            {
              "description": "Custom footer content (e.g. a \"Today\" jump button). Rendered as the first row of the footer.",
              "name": "footer"
            },
            {
              "description": "Action controls for the footer's second row, e.g. an OK/Cancel pair. Nothing is rendered by default, and nothing is wired: what a control does is the consumer's.",
              "name": "footer-controls"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "_titleId",
              "privacy": "private",
              "readonly": true,
              "default": "`ed-calendar-title-${++_idCounter}`",
              "description": "Stable id for the title element, used by aria-labelledby on the grid."
            },
            {
              "kind": "field",
              "name": "_value",
              "type": {
                "text": "Date | DateRange | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | { toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@535: {  } } | { start: null | { toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@535: {  } }, end: null | { toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@535: {  } } }"
              }
            },
            {
              "kind": "field",
              "name": "_minWire",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "_maxWire",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "_defaultMonthWire",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "_type",
              "type": {
                "text": "EdCalendarType"
              },
              "privacy": "private",
              "default": "'date'",
              "parsedType": {
                "text": "'year' | 'month' | 'quarter' | 'week' | 'date' | 'halfyear'"
              }
            },
            {
              "kind": "field",
              "name": "_range",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "_panels",
              "type": {
                "text": "1 | 2"
              },
              "privacy": "private",
              "default": "2"
            },
            {
              "kind": "field",
              "name": "_selectionStrategy",
              "type": {
                "text": "SelectionStrategy"
              },
              "privacy": "private",
              "default": "new SingleDateStrategy()"
            },
            {
              "kind": "field",
              "name": "_externalStrategy",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "True after a consumer assigned `selectionStrategy` externally; suppresses internal recreation on type/mode change."
            },
            {
              "kind": "field",
              "name": "_today",
              "type": {
                "text": "Date | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Today's local date. Set in firstUpdated() — never in render().",
              "parsedType": {
                "text": "null | { toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@535: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "_displayedMonth",
              "type": {
                "text": "Date | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The month currently shown in the day grid. Set in firstUpdated() and by nav actions.",
              "parsedType": {
                "text": "null | { toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@535: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "_liveText",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "description": "Text for the aria-live region. Updated when _displayedMonth changes."
            },
            {
              "kind": "field",
              "name": "_hasNavigated",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether the user has navigated the calendar since mount. Gates the polite live region so\nthe initial render does not announce its own period to screen readers."
            },
            {
              "kind": "field",
              "name": "_pendingKeyboardFocus",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set by keyboard nav callbacks before they mutate the displayed month. Tells the post-render\nhook to move DOM focus to the newly-rendered cell instead of leaving focus orphaned on a\nnode that's about to be unmounted."
            },
            {
              "kind": "field",
              "name": "_rangeGestureActive",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "True while a range gesture is in progress (anchor placed, end pending).\nDrives preview hover/focus wiring and the aria-live announcement."
            },
            {
              "kind": "field",
              "name": "_isDragging",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "True while the user is actively dragging (pointerdown on a day cell + pointermove\nbefore pointerup). Distinct from _rangeGestureActive so drag and two-click flows\ncan share the same preview/commit paths.\nDrives the `.drag-active` class on the base element for `touch-action: none` (T7)."
            },
            {
              "kind": "field",
              "name": "_pendingGestureAnnouncement",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set to true in _activateDayCell when a range gesture announcement has been written to\n_liveText in the same synchronous call that also changes _displayedMonth (outside-month\ncell clicks). The updated() hook reads and clears this to avoid clobbering the\ngesture announcement with the navigation \"Showing…\" text."
            },
            {
              "kind": "field",
              "name": "_monthMenuOpen",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether the month dropdown is open. The two drill-downs are mutually exclusive: opening this\none closes the year dropdown, so the other trigger switches straight over in one click."
            },
            {
              "kind": "field",
              "name": "_yearMenuOpen",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether the year dropdown is open. Closes the month dropdown when it opens; see above."
            },
            {
              "kind": "field",
              "name": "_hasFooterSlot",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether the `footer` slot has assigned content. Drives the visibility of the first footer row."
            },
            {
              "kind": "field",
              "name": "_hasFooterControlsSlot",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether the `footer-controls` slot has assigned content. Drives the visibility of the second footer row."
            },
            {
              "kind": "field",
              "name": "_panelHosts",
              "type": {
                "text": "PanelGridHost[]"
              },
              "privacy": "private",
              "default": "[]",
              "description": "Per-panel facade + controller pairs. Initialized lazily in `_reconcilePanelControllers()`.\nEach entry corresponds to one rendered panel (index 0 = leftmost).\n\nThe facade is what lets `GridFocusController` and `GridKeyboardNavController` stay\nshared: they are written against one grid-shaped host, and a calendar has several\npanels, so each panel gets a narrow facade rather than the element itself."
            },
            {
              "kind": "field",
              "name": "_panelFocusControllers",
              "type": {
                "text": "GridFocusController[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "_panelKeyboardNavControllers",
              "type": {
                "text": "GridKeyboardNavController[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "_pendingFocusPanelIndex",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0",
              "description": "Index of the panel whose key event triggered the most recent paging action.\nUsed to restore focus to the originating panel after re-render."
            },
            {
              "kind": "method",
              "name": "_reconcilePanelControllers",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Reconcile the panel controller arrays to match `this._panelCount`.\nSafe to call multiple times — no-ops if count unchanged.\nMust be called after `connectedCallback` (or later) so addController fires\n`hostConnected` on newly created controllers."
            },
            {
              "kind": "method",
              "name": "_focusControllerForCell",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "GridFocusController | null"
                }
              },
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "Return the focus controller that owns the given cell (by panel containment)."
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The selected value, in the wire form this `type` writes — `2026-07-01` for `date`, `2026-W27`\nfor `week`, then `2026-07`, `2026-Q3`, `2026-H2`, `2026`. Empty when nothing is selected.\n\nA string of another kind is ignored rather than reinterpreted, the way a native\n`<input type=\"month\">` ignores `2026-08-15` (measured in Chromium) — the value stays as it was.\n\nWith `range` set, a range has two ends and one string cannot carry both: `value` reads the\nstart, and writing it is ignored — except for `''`, which clears, since emptying means the same\nfor one value and for two. start and end are the way in and out.\n\nThe attribute is a **starting** value and is not reflected, the way `<input value>` is: what the\nuser picks afterwards does not rewrite it, so the markup keeps saying what the calendar opened\nwith.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "start",
              "type": {
                "text": "string"
              },
              "description": "The start of the selected range, in the same wire form as value. Empty when no range is\nselected, and inert unless `range` is set.\n\nSetting `start` alone places the anchor without committing a range — which is both what the\nfirst click of the gesture does and what \"from X, indefinitely\" means. The calendar cannot tell\nthose apart and does not try to; whether a one-ended range counts as a value is the consumer's\nquestion, and a picker answers it by keeping its panel open.",
              "attribute": "start"
            },
            {
              "kind": "field",
              "name": "end",
              "type": {
                "text": "string"
              },
              "description": "The end of the selected range, in the same wire form as value.",
              "attribute": "end"
            },
            {
              "kind": "method",
              "name": "_setRangeEnd",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "which",
                  "type": {
                    "text": "'start' | 'end'"
                  }
                },
                {
                  "name": "input",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Write one end of the range, keeping the other.\n\nBoth ends arrive as separate property assignments — Lit sets `.start` and `.end` one after the\nother — so each has to read what the other left behind rather than replace the whole selection.\nThe strategy is told only about a range that has both ends: a half-made one is an anchor plus an\nopen gesture, which is what the second click completes."
            },
            {
              "kind": "field",
              "name": "_pendingEnds",
              "type": {
                "text": "{ start: string; end: string }"
              },
              "privacy": "private",
              "default": "{ start: '', end: '' }",
              "description": "Ends written while `range` was still off, replayed when it comes on.\n\nKept as the raw strings rather than as dates: `type` may not have arrived either, and the two\nare read against it. Cleared by the replay, so a later switch does not resurrect them."
            },
            {
              "kind": "method",
              "name": "_replayPendingEnds",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Apply whatever `start`/`end` arrived before `range` did."
            },
            {
              "kind": "field",
              "name": "min",
              "type": {
                "text": "string"
              },
              "description": "The earliest selectable value: the wire form this `type` writes, or a `YYYY-MM-DD` day to bound\nthe range more finely than the type's own unit. Empty for no bound.\n\nAnything else means no bound rather than an approximation of one — a native field ignores a\n`min` it cannot read, and a bound guessed from a value of the wrong kind would disable days the\nconsumer never excluded.",
              "attribute": "min",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "max",
              "type": {
                "text": "string"
              },
              "description": "The latest selectable value, in the same forms as min. Empty for no bound.",
              "attribute": "max",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "defaultMonth",
              "type": {
                "text": "string"
              },
              "description": "Which page to open on when nothing is selected: `2026-11` or `2026-11-01`, both opening\nNovember 2026. Only the part the page needs is read — a day grid pages by month, a period list\nby year.\n\nUnlike min and max this is **not** in the type's wire form, because a page is\nnot a value: `type=\"month\"` selects a month and pages by year, so neither `2026-11` nor `2026`\nwould mean the same thing for both jobs. A month names a page for every type.",
              "attribute": "default-month",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "_keepBound",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "input",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "propName",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Store a bound, saying so when the string is a wire value of no type at all.\n\nUnlike _readWire this cannot check the value against the current `type`: the bound is\nheld as a string precisely because the attribute may arrive first, and judging it against a\n`type` that has not been set yet would reject the correct value. So the check is the weaker one\nthat holds whatever the type turns out to be — and the string is kept either way, since a later\n`type` may be the one that reads it."
            },
            {
              "kind": "method",
              "name": "_readWire",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Date | null"
                }
              },
              "parameters": [
                {
                  "name": "input",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "propName",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "A wire string as a local date, saying so when it cannot be read.\n\nThe message is the point: a value the calendar drops silently is impossible to find from the outside —\nnothing renders, nothing throws, and the property reads back empty as though it had never been\nset. Naming the shape the current `type` expects turns that into one line in the console."
            },
            {
              "kind": "method",
              "name": "_resolveBound",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Date | null"
                }
              },
              "parameters": [
                {
                  "name": "wire",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "A bound as a local date: the type's own form first, then a plain day.\n\nMDN gives the type's form as what a native field takes — `<input type=\"week\">` reads `min` as\n`yyyy-Www`, `type=\"month\"` as `yyyy-mm`. A day is accepted on top of that, because it says\nsomething the coarse form cannot: `min=\"2026-05-27\"` on a week calendar bounds the range\nmid-week, and the week holding the 27th stays selectable while the one before it does not.\nRounding that up to `2026-W22` would move the boundary by up to six days."
            },
            {
              "kind": "field",
              "name": "_min",
              "type": {
                "text": "Date | null"
              },
              "privacy": "private",
              "readonly": true,
              "parsedType": {
                "text": "null | { toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@535: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "_max",
              "type": {
                "text": "Date | null"
              },
              "privacy": "private",
              "readonly": true,
              "parsedType": {
                "text": "null | { toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@535: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "_defaultMonth",
              "type": {
                "text": "Date | null"
              },
              "privacy": "private",
              "readonly": true,
              "parsedType": {
                "text": "null | { toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@535: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "isDisabled",
              "type": {
                "text": "(value: string) => boolean"
              },
              "description": "Answers whether one value is selectable, on top of `min`, `max` and the type's own rules.\nReceives the value in the same wire form as value, so a consumer's rule is written\nagainst the string it already holds rather than against a `Date` it has to build."
            },
            {
              "kind": "field",
              "name": "_isValueDisabled",
              "privacy": "private",
              "readonly": true,
              "description": "`isDisabled` as the grid and the period list want it — a predicate on a local date.\n\nThe translation belongs here rather than in the consumer's rule or inside the grid builder: the\nbuilder works in calendar days and knows nothing of wire forms, and the rule is written against\nthe string. An arrow property rather than a method, so it can be passed as a callback without\nlosing `this`.\n\nThe optional call is the guard: a template binding can hand over `undefined` — which is what\n`.isDisabled=${this.isDisabled}` does wherever the wrapper declares its own predicate optional —\nand that replaces the default rather than falling back to it. Calling it unguarded throws inside\n`render()`, which takes the whole element down over a rule the consumer never set."
            },
            {
              "kind": "field",
              "name": "showWeekNumbers",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, a week-number column is shown in the day grid.",
              "attribute": "show-week-numbers",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "firstDayOfWeek",
              "type": {
                "text": "EdCalendarFirstDay"
              },
              "default": "'auto'",
              "description": "The first day of the week as an **ISO 8601 weekday**: `1` for Monday through `7` for Sunday, or\n`'auto'` to read it from the locale via `Intl.Locale`, falling back to Monday.\n\n`0` is not a weekday here — see EdCalendarFirstDay for why the numbering is ISO rather\nthan `getDay()`'s.\n\nIgnored for `type=\"week\"`: an ISO week starts on Monday by definition, so that grid renders\nMonday-first whatever this says.",
              "attribute": "first-day-of-week",
              "parsedType": {
                "text": "1 | 2 | 3 | 4 | 5 | 6 | 7 | 'auto'"
              }
            },
            {
              "kind": "field",
              "name": "_panelCount",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "description": "How many panels to render. A live range implies the two-panel linked layout, so the two ends of\na range that spans a month boundary are both reachable without paging; everything else renders\none panel.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "selectionStrategy",
              "type": {
                "text": "SelectionStrategy"
              },
              "description": "The selection strategy controlling how day cells are highlighted and what value is emitted.\nReassigning this property triggers a re-render so cell states reflect the new strategy.\nSetting this externally opts out of the internal `type`-driven strategy recreation —\nthe consumer becomes responsible for keeping its strategy consistent with `type`."
            },
            {
              "kind": "field",
              "name": "range",
              "type": {
                "text": "boolean"
              },
              "description": "Pick a span of two values instead of one: the first click sets the anchor, the second closes\nthe range, and dragging from the anchor marks the span as the pointer moves. start and\nend carry the two ends.\n\nA range is orthogonal to `type` in this API, but only `type=\"date\"` spans one today; the other\ntypes pick a single value regardless.",
              "attribute": "range",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "_reshapeValueForMode",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Reshape the held value for whichever mode is now live, and rebuild the strategy from it.\n\nThe shape follows what the accessors read: `value` is the start of a range, so one day becomes\na range anchored on it, and a range becomes its start. Dropping the selection instead would make\nthe property order matter — Lit assigns `.value`, `.range` and `.type` one after the other, and\nwhichever landed first would lose.\n\nCalled from **both** the `range` and the `type` setter, because `_rangeApplies` reads both: a\nrange only spans days, so switching `type` away from `date` ends the range just as surely as\nclearing `range` does. Only the first of the two used to reshape, and a `DateRange` that\nsurvived into `SingleDateStrategy` left `value` reporting a month with nothing marked."
            },
            {
              "kind": "field",
              "name": "panels",
              "type": {
                "text": "number"
              },
              "description": "Number of month panels rendered while a range is live: `1` or `2` (default `2`). Every other\ncombination renders a single panel. `panels=\"1\"` shows one month with the month/year\ndrill-down (matching the single date pickers); `panels=\"2\"` shows two linked months.\nInvalid values fall back to `2`.",
              "attribute": "panels",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "type",
              "type": {
                "text": "EdCalendarType"
              },
              "description": "What the calendar lets the user pick, which is also the wire form value takes:\n\n- `date` (default) — a day grid; `2026-07-01`.\n- `week` — the same grid, with a clickable week-number column that takes the whole week;\n  `2026-W27`.\n- `month` — a list of months; `2026-07`.\n- `quarter` — four quarters; `2026-Q3`.\n- `halfyear` — two halves; `2026-H2`.\n- `year` — a list of years; `2026`.\n\nInvalid values fall back to `'date'` with a `logger.warn`.",
              "attribute": "type",
              "reflects": true,
              "parsedType": {
                "text": "'year' | 'month' | 'quarter' | 'week' | 'date' | 'halfyear'"
              }
            },
            {
              "kind": "method",
              "name": "_granularity",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "SelectionGranularity"
                }
              }
            },
            {
              "kind": "field",
              "name": "_isDayGrid",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "True for the types drawn as a grid of days. Every other type draws a list of periods, and the\ntwo shapes differ in more than markup: only the grid has a roving tabindex to keep, overflow\ndays to suppress, and a week-number column.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "_isWeekMode",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "True when a whole ISO week is the unit being picked.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "_showWeekColumn",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "True when the week-number column should be rendered.\nRoutes all `showWeekNumbers ?` sites so `type=\"week\"` implicitly shows the column\n(needed for the clickable week-number cell) without requiring `show-week-numbers`.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "_recreateStrategy",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Recreate the internal selection strategy from `_type` and `_range`.\nAlways a no-op when `_externalStrategy` is true (consumer owns the strategy).\n\nA range is orthogonal to the type in the API, but not yet in the strategies: `RangeStrategy`\nspans days, so `range` currently combines with `type=\"date\"` only. Every other type falls back\nto picking one value, which is what the type does on its own — `_rangeApplies` is the one place\nthat answers whether the combination is live, so nothing downstream has to repeat the pairing."
            },
            {
              "kind": "field",
              "name": "_rangeApplies",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "True when `range` is set **and** the type supports it — see _recreateStrategy.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "_hasPages",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "True when the type has more than one page to show, which is what the header is for.\n\nThe header holds only what navigates: the arrows that page, and the triggers that jump to\nanother page. `type=\"year\"` has neither, because `_buildYearWindow` puts every year between the\nbounds into one scrolling list — there is no second page to reach. Arrows over a single page\nwould not navigate; they would step the value while looking like they page, which is the one\nthing a pair of arrows must not do.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "focus",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Move focus into the calendar. Delegates to whichever element currently holds the roving\ntabindex so popup wrappers (`<ed-date-picker>`) can hand focus over through the standard\nHTMLElement.focus() contract.\n\nBoth shapes have to be covered: the `date` type renders a grid of day cells, every other type\nrenders a listbox of period options. Looking only for the grid made this a no-op for four of\nthe five types."
            },
            {
              "kind": "method",
              "name": "_formatMonthYear",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "d",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_getEffectiveFirstDayOfWeek",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              }
            },
            {
              "kind": "method",
              "name": "_buildLiveText",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              }
            },
            {
              "kind": "method",
              "name": "_formatDateFull",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "d",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_stepMonth",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "delta",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Navigate displayed month by delta months."
            },
            {
              "kind": "method",
              "name": "_stepYear",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "delta",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Navigate displayed year by delta years."
            },
            {
              "kind": "method",
              "name": "_pagePrev",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "_pageNext",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "_setInitialFocusedCell",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "shouldFocus",
                  "default": "false"
                }
              ],
              "description": "Set the initial focused day cell per panel:\nday matching value > today > first non-disabled non-outside cell > first cell.\nWhen `shouldFocus` is true, only the panel that initiated the keyboard paging\naction moves DOM focus; other panels just update their roving tabindex."
            },
            {
              "kind": "method",
              "name": "_activateDayCell",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "Activate a day cell (click or keyboard). Commits the selection."
            },
            {
              "kind": "method",
              "name": "_commitSelection",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "next",
                  "type": {
                    "text": "Date | DateRange | null"
                  }
                }
              ],
              "description": "Store a selection the user just made and announce it.\n\n`_value` is written directly rather than through the setter — the setter's job is to translate a\nconsumer's string, and routing an already-made selection back through it would re-parse what the\nstrategy just decided. That bypasses the reactive plumbing, hence the explicit `requestUpdate`:\nwithout it the new `aria-selected` waits for an incidental `@state` mutation to carry it."
            },
            {
              "kind": "method",
              "name": "_buildWeekdayLabels",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Array<{ short: string; long: string }>"
                }
              },
              "description": "Build ordered weekday labels starting from firstDayOfWeek. Returns [{short, long}]."
            },
            {
              "kind": "method",
              "name": "handleMonthPrevClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleMonthNextClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleYearPrevClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleYearNextClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleMonthTriggerClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleYearTriggerClick",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handlePeriodItemClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_periodStart",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Date"
                }
              },
              "parameters": [
                {
                  "name": "kind",
                  "type": {
                    "text": "PeriodKind"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "First day of the period referenced by `kind` + `key`. `key` is the month/quarter/halfyear index, or the year for `'year'`."
            },
            {
              "kind": "method",
              "name": "_isPeriodOutOfBounds",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "start",
                  "type": {
                    "text": "Date"
                  }
                },
                {
                  "name": "end",
                  "type": {
                    "text": "Date"
                  }
                }
              ],
              "description": "True when the period [start, end] sits entirely outside `[_min, _max]`."
            },
            {
              "kind": "method",
              "name": "_isPeriodBarred",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "start",
                  "type": {
                    "text": "Date"
                  }
                },
                {
                  "name": "end",
                  "type": {
                    "text": "Date"
                  }
                },
                {
                  "name": "role",
                  "type": {
                    "text": "PeriodRole"
                  }
                }
              ],
              "description": "True when a period option cannot be picked: out of bounds, or barred by `isDisabled`.\n\nThe consumer's rule is asked only for the **primary** list, the one a click selects from. A\ndrill-down menu navigates — it decides which page is shown — so barring an entry there would\ntake away the route to a value the consumer never excluded. Bounds do apply to both, because a\npage holding nothing selectable is nothing to navigate to either."
            },
            {
              "kind": "field",
              "name": "handleBaseKeydown",
              "privacy": "private",
              "description": "Escape closes any open picker menu."
            },
            {
              "kind": "field",
              "name": "handleListboxKeydown",
              "privacy": "private",
              "description": "WAI-ARIA listbox keyboard pattern for period lists (drill-down or primary)."
            },
            {
              "kind": "field",
              "name": "handleDocumentClick",
              "privacy": "private",
              "description": "Click outside the open menu (within the surface) closes it."
            },
            {
              "kind": "method",
              "name": "handleDayCellClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_handleWeekNumberClick",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "DayCellMeta[]"
                  }
                }
              ],
              "description": "Click handler for the week-number cell, which for `type=\"week\"` selects the whole row.\nResolves the first non-disabled, non-suppressed day cell in the row and activates it,\nwhich routes through `_activateDayCell` → `WeekStrategy.selectDay` → `ed-change`.\nKeyboard week-select (Enter/Space on any day cell) already flows through `onBodyActivate`\nwithout any extra wiring."
            },
            {
              "kind": "method",
              "name": "_handleWeekNumberPointerEnter",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "DayCellMeta[]"
                  }
                }
              ],
              "description": "pointerenter on the week-number cell (week mode): preview that row's week so\nhovering the number shows the same neutral hover band as hovering a day cell.\nCleared by the panel's pointerleave handler, like the day-cell hover."
            },
            {
              "kind": "method",
              "name": "handleDayCellPointerEnter",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_dragAnchorCellFor",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLElement | null"
                }
              },
              "parameters": [
                {
                  "name": "origin",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "If `origin` is the start or end of the current committed range, return the cell of the\nOPPOSITE endpoint — so a drag that grabs an endpoint anchors the other end and moves the\ngrabbed date, instead of starting a fresh range. Returns null when `origin` is not an\nendpoint, the range is single-day, or the opposite endpoint is not currently rendered."
            },
            {
              "kind": "field",
              "name": "handleDayCellPointerDown",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "_dragOriginCell",
              "type": {
                "text": "HTMLElement | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The day-cell button the user pressed to start a potential drag gesture.",
              "parsedType": {
                "text": "null | HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "_handleDragMove",
              "privacy": "private",
              "readonly": true,
              "description": "pointermove on the host during a potential/active drag — hit-tests the element\nunder the pointer with elementFromPoint (T7). On first move to a DIFFERENT cell,\nplaces the anchor at the origin cell (beginning the range gesture) and marks the\ndrag as active. Works across panels because elementFromPoint queries the shadow root."
            },
            {
              "kind": "field",
              "name": "_handleDragEnd",
              "privacy": "private",
              "readonly": true,
              "description": "pointerup / pointercancel on the host — commits the drag range or cancels (T7)."
            },
            {
              "kind": "method",
              "name": "_restoreGestureAnchor",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "End a drag without committing, leaving the anchor drawn.\n\n`setSelection` is the wrong call here: a `{ start, end: null }` handed to it is stored as a\n*committed* range, and `RangeStrategy.getDayCellState` answers `'idle'` for a range with no end.\nSo the anchor vanished from the grid while `start` still held it and the anchor event had\nalready gone out — the picker had taken the half range, and the calendar showed nothing.\n\nThe gesture also stays open: the anchor is still the anchor, and the next click is still the\none that closes the span."
            },
            {
              "kind": "method",
              "name": "_cleanupDrag",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Remove drag event listeners and reset drag state flags."
            },
            {
              "kind": "field",
              "name": "_handleGridPointerLeave",
              "privacy": "private",
              "readonly": true,
              "description": "pointerleave on the grid container in week mode: clears the week hover band so the\nselection preview does not linger after the pointer exits the calendar entirely.\nNo-op in all other modes."
            },
            {
              "kind": "field",
              "name": "_handleGridFocusIn",
              "privacy": "private",
              "readonly": true,
              "description": "Bound focusin handler on the grid, for roving-focus preview during a range gesture or week mode."
            },
            {
              "kind": "method",
              "name": "handleFooterSlotChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_buildYearWindow",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number[]"
                }
              },
              "description": "Build the year window for the year picker menu. Clamps to min/max year when set;\notherwise renders the *current* year ± 100 (201-year window). The menu scrolls,\nso the size is generous on purpose.\n\nThe default window is anchored to today, not the displayed year: anchoring to the\ndisplayed year would let each reopen re-center on whichever edge year was just\nnavigated to, so the cycler could walk arbitrarily far into the past or future."
            },
            {
              "kind": "method",
              "name": "_renderMonthCycler",
              "privacy": "private",
              "parameters": [
                {
                  "name": "panelMonth",
                  "type": {
                    "text": "Date"
                  }
                }
              ],
              "description": "Render the month cycler: the paging arrows around the trigger that opens the month menu.\n\nReached only from a single-panel header. The two-panel range layout renders one shared header\nabove both grids, with its own arrows and read-only month labels, so no panel of it comes\nthrough here."
            },
            {
              "kind": "method",
              "name": "_renderYearCycler",
              "privacy": "private",
              "parameters": [
                {
                  "name": "panelMonth",
                  "type": {
                    "text": "Date"
                  }
                }
              ],
              "description": "Render the year cycler: the paging arrows around the trigger that opens the year menu.\n\nSame single-panel restriction as _renderMonthCycler."
            },
            {
              "kind": "method",
              "name": "_valueAsDate",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Date | null"
                }
              },
              "description": "Extracts the Date from _value for period-list builders. Period types always have a Date value (not DateRange)."
            },
            {
              "kind": "method",
              "name": "_buildMonthItems",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "PeriodItem[]"
                }
              },
              "parameters": [
                {
                  "name": "role",
                  "type": {
                    "text": "PeriodRole"
                  }
                },
                {
                  "name": "panelMonth",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_buildQuarterItems",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "PeriodItem[]"
                }
              },
              "parameters": [
                {
                  "name": "panelMonth",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_buildHalfyearItems",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "PeriodItem[]"
                }
              },
              "parameters": [
                {
                  "name": "panelMonth",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_buildYearItems",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "PeriodItem[]"
                }
              },
              "parameters": [
                {
                  "name": "role",
                  "type": {
                    "text": "PeriodRole"
                  }
                },
                {
                  "name": "panelMonth",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_renderPeriodList",
              "privacy": "private",
              "parameters": [
                {
                  "name": "opts",
                  "type": {
                    "text": "{ items: PeriodItem[]; kind: PeriodKind; role: PeriodRole; ariaLabel: string }"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_renderPrimaryPeriodList",
              "privacy": "private",
              "parameters": [
                {
                  "name": "panelMonth",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_renderDrillDownMenu",
              "privacy": "private",
              "description": "Drill-down overlay menus always use _displayedMonth (they're panel-0 overlays)."
            },
            {
              "kind": "method",
              "name": "_renderDayGrid",
              "privacy": "private",
              "parameters": [
                {
                  "name": "panelMonth",
                  "type": {
                    "text": "Date"
                  }
                },
                {
                  "name": "panelIndex",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_panelMonth",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Date | null"
                }
              },
              "parameters": [
                {
                  "name": "panelIndex",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Compute the displayed month for panel i (0-based). Derives from _displayedMonth\nso that SSR renders are deterministic (no new Date() in render)."
            },
            {
              "kind": "method",
              "name": "_renderSharedRangeHeader",
              "privacy": "private",
              "parameters": [
                {
                  "name": "leftMonth",
                  "type": {
                    "text": "Date"
                  }
                }
              ],
              "description": "Render the shared header for the two-panel range layout (T2).\nOne month spinner on the far left (prev arrow + month trigger + no next arrow),\none year spinner on the far right (no prev arrow + year trigger + next arrow).\nThe month label shows the left panel's month; the year shows the shared year.\nBoth prev and next page by one month (not one year), keeping the panels in sync."
            },
            {
              "kind": "method",
              "name": "_renderPanel",
              "privacy": "private",
              "parameters": [
                {
                  "name": "panelMonth",
                  "type": {
                    "text": "Date"
                  }
                },
                {
                  "name": "panelIndex",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Render a single month panel (header + body). Used for type=\"date\" multi-panel."
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "type": {
                "text": "EdCalendarPageChangeEvent"
              },
              "description": "Emitted when the page on screen moves, whichever way it was moved. The detail carries `page`: `YYYY-MM` for the types that page by month, `YYYY` for those that page by year. `type=\"year\"` has one page and never fires. Settling on the first page is not a move and says nothing.",
              "name": "ed-calendar-page-change",
              "reactName": "onEdCalendarPageChange",
              "eventName": "EdCalendarPageChangeEvent"
            },
            {
              "type": {
                "text": "EdCalendarChangeEvent"
              },
              "description": "Emitted when the user picks a value. The detail carries `value`, `start` and `end` as wire strings, in the form the current `type` writes. With `range` set it fires twice per gesture — once when the anchor is placed, once when the span closes — and `end` is what tells the two apart.",
              "name": "ed-calendar-change",
              "reactName": "onEdCalendarChange",
              "eventName": "EdCalendarChangeEvent"
            }
          ],
          "attributes": [
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The selected value, in the wire form this `type` writes — `2026-07-01` for `date`, `2026-W27`\nfor `week`, then `2026-07`, `2026-Q3`, `2026-H2`, `2026`. Empty when nothing is selected.\n\nA string of another kind is ignored rather than reinterpreted, the way a native\n`<input type=\"month\">` ignores `2026-08-15` (measured in Chromium) — the value stays as it was.\n\nWith `range` set, a range has two ends and one string cannot carry both: `value` reads the\nstart, and writing it is ignored — except for `''`, which clears, since emptying means the same\nfor one value and for two. start and end are the way in and out.\n\nThe attribute is a **starting** value and is not reflected, the way `<input value>` is: what the\nuser picks afterwards does not rewrite it, so the markup keeps saying what the calendar opened\nwith.",
              "fieldName": "value"
            },
            {
              "name": "start",
              "type": {
                "text": "string"
              },
              "description": "The start of the selected range, in the same wire form as value. Empty when no range is\nselected, and inert unless `range` is set.\n\nSetting `start` alone places the anchor without committing a range — which is both what the\nfirst click of the gesture does and what \"from X, indefinitely\" means. The calendar cannot tell\nthose apart and does not try to; whether a one-ended range counts as a value is the consumer's\nquestion, and a picker answers it by keeping its panel open.",
              "fieldName": "start"
            },
            {
              "name": "end",
              "type": {
                "text": "string"
              },
              "description": "The end of the selected range, in the same wire form as value.",
              "fieldName": "end"
            },
            {
              "name": "min",
              "type": {
                "text": "string"
              },
              "description": "The earliest selectable value: the wire form this `type` writes, or a `YYYY-MM-DD` day to bound\nthe range more finely than the type's own unit. Empty for no bound.\n\nAnything else means no bound rather than an approximation of one — a native field ignores a\n`min` it cannot read, and a bound guessed from a value of the wrong kind would disable days the\nconsumer never excluded.",
              "fieldName": "min"
            },
            {
              "name": "max",
              "type": {
                "text": "string"
              },
              "description": "The latest selectable value, in the same forms as min. Empty for no bound.",
              "fieldName": "max"
            },
            {
              "name": "default-month",
              "type": {
                "text": "string"
              },
              "description": "Which page to open on when nothing is selected: `2026-11` or `2026-11-01`, both opening\nNovember 2026. Only the part the page needs is read — a day grid pages by month, a period list\nby year.\n\nUnlike min and max this is **not** in the type's wire form, because a page is\nnot a value: `type=\"month\"` selects a month and pages by year, so neither `2026-11` nor `2026`\nwould mean the same thing for both jobs. A month names a page for every type.",
              "fieldName": "defaultMonth"
            },
            {
              "name": "show-week-numbers",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, a week-number column is shown in the day grid.",
              "fieldName": "showWeekNumbers"
            },
            {
              "name": "first-day-of-week",
              "type": {
                "text": "EdCalendarFirstDay"
              },
              "default": "'auto'",
              "description": "The first day of the week as an **ISO 8601 weekday**: `1` for Monday through `7` for Sunday, or\n`'auto'` to read it from the locale via `Intl.Locale`, falling back to Monday.\n\n`0` is not a weekday here — see EdCalendarFirstDay for why the numbering is ISO rather\nthan `getDay()`'s.\n\nIgnored for `type=\"week\"`: an ISO week starts on Monday by definition, so that grid renders\nMonday-first whatever this says.",
              "fieldName": "firstDayOfWeek",
              "parsedType": {
                "text": "1 | 2 | 3 | 4 | 5 | 6 | 7 | 'auto'"
              }
            },
            {
              "name": "range",
              "type": {
                "text": "boolean"
              },
              "description": "Pick a span of two values instead of one: the first click sets the anchor, the second closes\nthe range, and dragging from the anchor marks the span as the pointer moves. start and\nend carry the two ends.\n\nA range is orthogonal to `type` in this API, but only `type=\"date\"` spans one today; the other\ntypes pick a single value regardless.",
              "fieldName": "range"
            },
            {
              "name": "panels",
              "type": {
                "text": "number"
              },
              "description": "Number of month panels rendered while a range is live: `1` or `2` (default `2`). Every other\ncombination renders a single panel. `panels=\"1\"` shows one month with the month/year\ndrill-down (matching the single date pickers); `panels=\"2\"` shows two linked months.\nInvalid values fall back to `2`.",
              "fieldName": "panels"
            },
            {
              "name": "type",
              "type": {
                "text": "EdCalendarType"
              },
              "description": "What the calendar lets the user pick, which is also the wire form value takes:\n\n- `date` (default) — a day grid; `2026-07-01`.\n- `week` — the same grid, with a clickable week-number column that takes the whole week;\n  `2026-W27`.\n- `month` — a list of months; `2026-07`.\n- `quarter` — four quarters; `2026-Q3`.\n- `halfyear` — two halves; `2026-H2`.\n- `year` — a list of years; `2026`.\n\nInvalid values fall back to `'date'` with a `logger.warn`.",
              "fieldName": "type",
              "parsedType": {
                "text": "'year' | 'month' | 'quarter' | 'week' | 'date' | 'halfyear'"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "An always-visible day grid for picking a date, a range, or a whole week, month, quarter or year.",
          "jsDoc": "/**\n * @summary An always-visible day grid for picking a date, a range, or a whole week, month, quarter or year.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/calendar\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-divider\n * @dependency ed-icon\n *\n * @slot footer - Custom footer content (e.g. a \"Today\" jump button). Rendered as the first row of the footer.\n * @slot footer-controls - Action controls for the footer's second row, e.g. an OK/Cancel pair. Nothing is rendered by default, and nothing is wired: what a control does is the consumer's.\n *\n * @event {EdCalendarPageChangeEvent} ed-calendar-page-change - Emitted when the page on screen moves, whichever way it was moved. The detail carries `page`: `YYYY-MM` for the types that page by month, `YYYY` for those that page by year. `type=\"year\"` has one page and never fires. Settling on the first page is not a move and says nothing.\n * @event {EdCalendarChangeEvent} ed-calendar-change - Emitted when the user picks a value. The detail carries `value`, `start` and `end` as wire strings, in the form the current `type` writes. With `range` set it fires twice per gesture — once when the anchor is placed, once when the span closes — and `end` is what tells the two apart.\n *\n * @csspart base - The outer wrapper element.\n * @csspart header - The row of page controls above the body. Not rendered for `type=\"year\"`, whose list is a single page.\n * @csspart header-spacer - The flexible gap between the month and year cyclers.\n * @csspart cycler - Each cycler block: the month cycler for `type=\"date\"` and `type=\"week\"`, the year cycler for every type that has pages.\n * @csspart cycler-month - The month cycler block.\n * @csspart cycler-year - The year cycler block.\n * @csspart cycler-prev - A cycler's previous-page button.\n * @csspart cycler-next - A cycler's next-page button.\n * @csspart cycler-trigger - A cycler's menu trigger (shows the current month or year, opens the in-surface menu).\n * @csspart range-month-label - A read-only \"Month Year\" label shown above each calendar in two-panel range mode (one per panel).\n * @csspart body - The body area below the header. Contains the day grid or the active picker menu.\n * @csspart picker-menu - Any in-surface list of periods: the body's own list for `type=\"month\"` and up, and the month or year menu a cycler trigger opens.\n * @csspart picker-menu-primary - Only the list a click selects from, as opposed to a cycler's navigation menu.\n * @csspart picker-item - Each menu item in the picker menu.\n * @csspart picker-item-selected - The currently-selected menu item.\n * @csspart footer-divider - The divider between the panel content and the footer. Only visible when the footer is.\n * @csspart footer - The footer wrapper. Only visible when at least one footer slot has content.\n * @csspart footer-row - Each row inside the footer (first row = `footer` slot, second row = `footer-controls` slot).\n * @csspart footer-row-custom - The first footer row (the `footer` slot).\n * @csspart footer-row-controls - The second footer row (the `footer-controls` slot).\n * @csspart grid - The day grid container.\n * @csspart weekday-header-row - The row of weekday column headers.\n * @csspart weekday-header-cell - Each weekday column header cell.\n * @csspart day-row - Each body row of day cells.\n * @csspart day-cell - Each day cell button.\n * @csspart day-cell-label - The inner state layer of a day cell (holds the digit; carries the selected/endpoint circle and the today ring).\n * @csspart day-cell-today - The day cell for today.\n * @csspart day-cell-selected - A selected day cell (single-selection strategy).\n * @csspart day-cell-start - The first cell of a span: the range start, or the Monday of the picked week.\n * @csspart day-cell-in-range - A cell inside a span.\n * @csspart day-cell-end - The last cell of a span: the range end, or the Sunday of the picked week.\n * @csspart day-cell-preview-start - The preview start cell while a range is being built.\n * @csspart day-cell-preview-in-range - A cell inside the in-progress preview range.\n * @csspart day-cell-preview-end - The preview end cell while a range is being built.\n * @csspart panel - Wrapper around each panel (header + body). Two are rendered while a range is live, one otherwise.\n * @csspart week-number - The week-number cell (rendered when `show-week-numbers` is set, and always for `type=\"week\"`). For `type=\"week\"` the cell is a clickable `<div role=\"rowheader\">` that selects the whole week.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/calendar",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-divider",
            "ed-icon"
          ],
          "tagName": "ed-calendar",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EdCalendarType",
          "declaration": {
            "name": "EdCalendarType",
            "module": "components/calendar/calendar.js"
          }
        },
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdCalendar",
            "module": "components/calendar/calendar.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-calendar",
          "declaration": {
            "name": "EdCalendar",
            "module": "components/calendar/calendar.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/card/card.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdCard",
          "cssProperties": [
            {
              "description": "The space between the card's border and its content. Expects a single value.",
              "name": "--ed-card-spacing",
              "default": "var(--ed-space-4)"
            }
          ],
          "cssParts": [
            {
              "description": "The container that wraps the card's header.",
              "name": "header"
            },
            {
              "description": "The container that wraps the `header` slot. It takes the space `header-start` and `header-end` leave.",
              "name": "title"
            },
            {
              "description": "The container that wraps the card's main content. It takes the free space of a card stretched taller than its content, so the footer sits at the bottom edge.",
              "name": "body"
            },
            {
              "description": "The container that wraps the card's footer.",
              "name": "footer"
            }
          ],
          "slots": [
            {
              "description": "The card's main content.",
              "name": ""
            },
            {
              "description": "The card's title. Any element works; an `<h3>` gives the card a place in the page outline and looks the same as plain text there, while another heading level keeps its own size.",
              "name": "header"
            },
            {
              "description": "An optional icon before the title.",
              "name": "header-start"
            },
            {
              "description": "An optional badge or action at the end of the header. Shown alongside a title, not instead of one: without `header` (or `with-header`) the card draws no header, and content placed in `header-start` or `header-end` stays hidden.",
              "name": "header-end"
            },
            {
              "description": "An optional footer for the card, typically a link or an action.",
              "name": "footer"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'footer', 'header')"
            },
            {
              "kind": "field",
              "name": "appearance",
              "type": {
                "text": "'filled' | 'filled-outlined' | 'outlined' | 'plain'"
              },
              "default": "'outlined'",
              "description": "The card's visual appearance.",
              "attribute": "appearance",
              "reflects": true,
              "parsedType": {
                "text": "'filled-outlined' | 'filled' | 'outlined' | 'plain'"
              }
            },
            {
              "kind": "field",
              "name": "withHeader",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "with-header",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "withFooter",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "with-footer",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "interactive",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Turns the card into a button: it gains hover/pressed styling, becomes focusable (`role=\"button\"`,\n`tabindex=\"0\"`) and is activated by pointer or keyboard (Enter or Space), which emits a `click`.\nThe card owns no state — react to `click` to drive navigation, opening a detail view, etc.\n\nDo not combine this with controls in the `header-end` / `footer` slots.\nThe card takes its accessible name from its content, so a slotted button's label becomes part of\nthe card's own name, and the control is then announced twice — once inside the name of the\nbutton that contains it. Measured in Chromium and Firefox; `stopPropagation` addresses only the\nclick bubbling, not this. Keep the card non-interactive when it carries actions.",
              "attribute": "interactive",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "selectable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Turns the card into a checkbox: it becomes focusable (`role=\"checkbox\"`, `tabindex=\"0\"`) and\ntoggles its own `checked` state on pointer click or Space, emitting a `change` event. Implies\n`interactive` (hover/pressed styling) and takes precedence over it for the ARIA role. The same\n`stopPropagation` caveat for interactive slot content applies.",
              "attribute": "selectable",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "checked",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The checked state of a `selectable` card. Reflected to `aria-checked`. No effect without `selectable`.",
              "attribute": "checked",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "handleKeyDown",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "handleClick",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "Standard click event. When the card is `interactive`, it is also emitted on keyboard activation (Enter or Space).",
              "name": "click",
              "reactName": "onClick",
              "eventName": "ClickEvent"
            },
            {
              "description": "Emitted when a `selectable` card toggles its `checked` state, by pointer click or Space.",
              "name": "change",
              "reactName": "onChange",
              "eventName": "ChangeEvent"
            }
          ],
          "attributes": [
            {
              "name": "appearance",
              "type": {
                "text": "'filled' | 'filled-outlined' | 'outlined' | 'plain'"
              },
              "default": "'outlined'",
              "description": "The card's visual appearance.",
              "fieldName": "appearance",
              "parsedType": {
                "text": "'filled-outlined' | 'filled' | 'outlined' | 'plain'"
              }
            },
            {
              "name": "with-header",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "withHeader"
            },
            {
              "name": "with-footer",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "withFooter"
            },
            {
              "name": "interactive",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Turns the card into a button: it gains hover/pressed styling, becomes focusable (`role=\"button\"`,\n`tabindex=\"0\"`) and is activated by pointer or keyboard (Enter or Space), which emits a `click`.\nThe card owns no state — react to `click` to drive navigation, opening a detail view, etc.\n\nDo not combine this with controls in the `header-end` / `footer` slots.\nThe card takes its accessible name from its content, so a slotted button's label becomes part of\nthe card's own name, and the control is then announced twice — once inside the name of the\nbutton that contains it. Measured in Chromium and Firefox; `stopPropagation` addresses only the\nclick bubbling, not this. Keep the card non-interactive when it carries actions.",
              "fieldName": "interactive"
            },
            {
              "name": "selectable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Turns the card into a checkbox: it becomes focusable (`role=\"checkbox\"`, `tabindex=\"0\"`) and\ntoggles its own `checked` state on pointer click or Space, emitting a `change` event. Implies\n`interactive` (hover/pressed styling) and takes precedence over it for the ARIA role. The same\n`stopPropagation` caveat for interactive slot content applies.",
              "fieldName": "selectable"
            },
            {
              "name": "checked",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The checked state of a `selectable` card. Reflected to `aria-checked`. No effect without `selectable`.",
              "fieldName": "checked"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "A framed container that previews one or more items — a project, an article, a KPI — so users can scan it and\nopen it.",
          "jsDoc": "/**\n * @summary A framed container that previews one or more items — a project, an article, a KPI — so users can scan it and\n *  open it.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/card\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @slot - The card's main content.\n * @slot header - The card's title. Any element works; an `<h3>` gives the card a place in the page outline\n *  and looks the same as plain text there, while another heading level keeps its own size.\n * @slot header-start - An optional icon before the title.\n * @slot header-end - An optional badge or action at the end of the header.\n *  Shown alongside a title, not instead of one: without `header` (or `with-header`) the card draws\n *  no header, and content placed in `header-start` or `header-end` stays hidden.\n * @slot footer - An optional footer for the card, typically a link or an action.\n *\n * @event click - Standard click event. When the card is `interactive`, it is also emitted on keyboard\n *   activation (Enter or Space).\n * @event change - Emitted when a `selectable` card toggles its `checked` state, by pointer click or Space.\n *\n * @csspart header - The container that wraps the card's header.\n * @csspart title - The container that wraps the `header` slot. It takes the space `header-start` and `header-end` leave.\n * @csspart body - The container that wraps the card's main content. It takes the free space of a card stretched\n *  taller than its content, so the footer sits at the bottom edge.\n * @csspart footer - The container that wraps the card's footer.\n *\n * @cssproperty [--ed-card-spacing=var(--ed-space-4)] - The space between the card's border and its content. Expects a single value.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/card",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-card",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdCard",
            "module": "components/card/card.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-card",
          "declaration": {
            "name": "EdCard",
            "module": "components/card/card.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/carousel/autoplay-controller.js",
      "declarations": [
        {
          "kind": "class",
          "description": "A controller that repeatedly calls the specified callback with the provided interval time.\nThe timer is automatically paused while the user is interacting with the component.",
          "name": "AutoplayController",
          "members": [
            {
              "kind": "field",
              "name": "host",
              "type": {
                "text": "ReactiveElement"
              },
              "privacy": "private",
              "default": "host"
            },
            {
              "kind": "field",
              "name": "timerId",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "tickCallback",
              "type": {
                "text": "() => void"
              },
              "privacy": "private",
              "default": "tickCallback"
            },
            {
              "kind": "field",
              "name": "activeInteractions",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "paused",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "stopped",
              "type": {
                "text": "boolean"
              },
              "default": "true"
            },
            {
              "kind": "method",
              "name": "hostConnected",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "hostDisconnected",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "start",
              "parameters": [
                {
                  "name": "interval",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "stop"
            },
            {
              "kind": "field",
              "name": "pause"
            },
            {
              "kind": "field",
              "name": "resume"
            }
          ],
          "jsDoc": "/**\n * A controller that repeatedly calls the specified callback with the provided interval time.\n * The timer is automatically paused while the user is interacting with the component.\n */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "AutoplayController",
          "declaration": {
            "name": "AutoplayController",
            "module": "components/carousel/autoplay-controller.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/carousel/carousel.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdCarousel",
          "cssProperties": [
            {
              "description": "The aspect ratio of each slide.",
              "name": "--ed-carousel-aspect-ratio",
              "default": "16/9"
            },
            {
              "description": "The amount of padding to apply to the scroll area, allowing adjacent slides to become partially visible as a scroll hint.",
              "name": "--ed-carousel-scroll-hint"
            },
            {
              "description": "The space between each slide.",
              "name": "--ed-carousel-slide-gap",
              "default": "var(--ed-space-4)"
            }
          ],
          "cssParts": [
            {
              "description": "The carousel's internal wrapper.",
              "name": "base"
            },
            {
              "description": "The scroll container that wraps the slides.",
              "name": "scroll-container"
            },
            {
              "description": "The pagination indicators wrapper.",
              "name": "pagination"
            },
            {
              "description": "The pagination indicator.",
              "name": "pagination-item"
            },
            {
              "description": "Applied when the item is active.",
              "name": "pagination-item-active"
            },
            {
              "description": "The navigation wrapper.",
              "name": "navigation"
            },
            {
              "description": "The navigation button.",
              "name": "navigation-button"
            },
            {
              "description": "Applied to the previous button.",
              "name": "navigation-button-previous"
            },
            {
              "description": "Applied to the next button.",
              "name": "navigation-button-next"
            }
          ],
          "slots": [
            {
              "description": "The carousel's main content, one or more `<ed-carousel-item>` elements.",
              "name": ""
            },
            {
              "description": "Optional next icon to use instead of the default. Works best with `<ed-icon>`.",
              "name": "next-icon"
            },
            {
              "description": "Optional previous icon to use instead of the default. Works best with `<ed-icon>`.",
              "name": "previous-icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "loop",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, allows the user to navigate the carousel in the same direction indefinitely.",
              "attribute": "loop",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "navigation",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, show the previous/next navigation arrows beside the carousel. Ignored in vertical orientation.",
              "attribute": "navigation",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "pagination",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, show the carousel's pagination indicators.",
              "attribute": "pagination",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "paginationVariant",
              "type": {
                "text": "'dots' | 'buttons'"
              },
              "default": "'dots'",
              "description": "The pagination variant. `dots` shows dot indicators; `buttons` shows numbered page buttons\nwith their own previous/next arrows inside the pagination bar (independent of `navigation`).\nForced to `dots` in vertical orientation.",
              "attribute": "pagination-variant",
              "reflects": true,
              "parsedType": {
                "text": "'dots' | 'buttons'"
              }
            },
            {
              "kind": "field",
              "name": "autoplay",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, the slides will scroll automatically when the user is not interacting with them.",
              "attribute": "autoplay",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "autoplayInterval",
              "type": {
                "text": "number"
              },
              "default": "3000",
              "description": "Specifies the amount of time, in milliseconds, between each automatic scroll.",
              "attribute": "autoplay-interval"
            },
            {
              "kind": "field",
              "name": "slidesPerPage",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "Specifies how many slides should be shown at a given time.",
              "attribute": "slides-per-page"
            },
            {
              "kind": "field",
              "name": "slidesPerMove",
              "type": {
                "text": "number"
              },
              "default": "1",
              "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`.",
              "attribute": "slides-per-move"
            },
            {
              "kind": "field",
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'horizontal'",
              "description": "Specifies the orientation in which the carousel will lay out.",
              "attribute": "orientation",
              "parsedType": {
                "text": "'horizontal' | 'vertical'"
              }
            },
            {
              "kind": "field",
              "name": "mouseDragging",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, it is possible to scroll through the slides by dragging them with the mouse.",
              "attribute": "mouse-dragging",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "scrollContainer",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "paginationContainer",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "activeSlide",
              "type": {
                "text": "number"
              },
              "default": "0"
            },
            {
              "kind": "field",
              "name": "scrolling",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "dragging",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "awaitingInitialPosition",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "autoplayController",
              "privacy": "private",
              "default": "new AutoplayController(this, () => this.next())"
            },
            {
              "kind": "field",
              "name": "dragStartPosition",
              "type": {
                "text": "[number, number]"
              },
              "privacy": "private",
              "default": "[-1, -1]"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "mutationObserver",
              "type": {
                "text": "MutationObserver"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "resizeObserver",
              "type": {
                "text": "ResizeObserver | undefined"
              },
              "privacy": "private",
              "parsedType": {
                "text": "{ disconnect: {  }, observe: {  }, unobserve: {  } } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "pendingSlideChange",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "method",
              "name": "observeChildren",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "stopDragListening",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "field",
              "name": "pageStep",
              "privacy": "private",
              "description": "A step of 0 divides to Infinity, and render() feeds the page count straight into range(), whose\ngenerator never terminates — the tab dies on the second render. Only exactly 0 is substituted,\nand the property keeps whatever the consumer set: NaN from an unparseable attribute and a\nnegative step both already terminate range(), so they stay as they are, the way the platform\nignores an attribute it cannot use. getCurrentPage() shares the substitution because the two\nhalves of the same arithmetic feed the navigation buttons and the pagination together.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "getPageCount",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getCurrentPage",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "canScrollNext",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              }
            },
            {
              "kind": "method",
              "name": "canScrollPrev",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              }
            },
            {
              "kind": "method",
              "name": "getSlides",
              "privacy": "private",
              "parameters": [
                {
                  "name": "{ excludeClones = true }",
                  "default": "{}",
                  "type": {
                    "text": "{ excludeClones?: boolean }"
                  }
                }
              ],
              "description": "The carousel's slides, by default without the clones that make looping seamless."
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleMouseDragStart",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "PointerEvent"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleMouseDrag",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleMouseDragEnd",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleScroll",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "synchronizeSlides",
              "privacy": "private",
              "description": "Tracks which slide is in view, so the active index follows scrolling."
            },
            {
              "kind": "method",
              "name": "handleScrollEnd",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "isCarouselItem",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "node is EdCarouselItem"
                }
              },
              "parameters": [
                {
                  "name": "node",
                  "type": {
                    "text": "Node"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "createClones",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "previous",
              "parameters": [
                {
                  "name": "behavior",
                  "default": "'smooth'",
                  "type": {
                    "text": "ScrollBehavior"
                  },
                  "description": "The behavior used for scrolling."
                }
              ],
              "description": "Move the carousel backward by `slides-per-move` slides."
            },
            {
              "kind": "method",
              "name": "next",
              "parameters": [
                {
                  "name": "behavior",
                  "default": "'smooth'",
                  "type": {
                    "text": "ScrollBehavior"
                  },
                  "description": "The behavior used for scrolling."
                }
              ],
              "description": "Move the carousel forward by `slides-per-move` slides."
            },
            {
              "kind": "method",
              "name": "goToSlide",
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  },
                  "description": "The slide index."
                },
                {
                  "name": "behavior",
                  "default": "'smooth'",
                  "type": {
                    "text": "ScrollBehavior"
                  },
                  "description": "The behavior used for scrolling."
                }
              ],
              "description": "Scrolls the carousel to the slide specified by `index`."
            },
            {
              "kind": "method",
              "name": "scrollToSlide",
              "privacy": "private",
              "parameters": [
                {
                  "name": "slide",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "behavior",
                  "default": "'smooth'",
                  "type": {
                    "text": "ScrollBehavior"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ index: number, slide: EdCarouselItem }"
              },
              "description": "Emitted when the active slide changes.",
              "name": "ed-slide-change",
              "reactName": "onEdSlideChange",
              "eventName": "EdSlideChangeEvent"
            }
          ],
          "attributes": [
            {
              "name": "loop",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, allows the user to navigate the carousel in the same direction indefinitely.",
              "fieldName": "loop"
            },
            {
              "name": "navigation",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, show the previous/next navigation arrows beside the carousel. Ignored in vertical orientation.",
              "fieldName": "navigation"
            },
            {
              "name": "pagination",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, show the carousel's pagination indicators.",
              "fieldName": "pagination"
            },
            {
              "name": "pagination-variant",
              "type": {
                "text": "'dots' | 'buttons'"
              },
              "default": "'dots'",
              "description": "The pagination variant. `dots` shows dot indicators; `buttons` shows numbered page buttons\nwith their own previous/next arrows inside the pagination bar (independent of `navigation`).\nForced to `dots` in vertical orientation.",
              "fieldName": "paginationVariant",
              "parsedType": {
                "text": "'dots' | 'buttons'"
              }
            },
            {
              "name": "autoplay",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, the slides will scroll automatically when the user is not interacting with them.",
              "fieldName": "autoplay"
            },
            {
              "name": "autoplay-interval",
              "type": {
                "text": "number"
              },
              "default": "3000",
              "description": "Specifies the amount of time, in milliseconds, between each automatic scroll.",
              "fieldName": "autoplayInterval"
            },
            {
              "name": "slides-per-page",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "Specifies how many slides should be shown at a given time.",
              "fieldName": "slidesPerPage"
            },
            {
              "name": "slides-per-move",
              "type": {
                "text": "number"
              },
              "default": "1",
              "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`.",
              "fieldName": "slidesPerMove"
            },
            {
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'horizontal'",
              "description": "Specifies the orientation in which the carousel will lay out.",
              "fieldName": "orientation",
              "parsedType": {
                "text": "'horizontal' | 'vertical'"
              }
            },
            {
              "name": "mouse-dragging",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, it is possible to scroll through the slides by dragging them with the mouse.",
              "fieldName": "mouseDragging"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Carousels display an arbitrary number of content slides along a horizontal or vertical axis.",
          "jsDoc": "/**\n * @summary Carousels display an arbitrary number of content slides along a horizontal or vertical axis.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/carousel\n * @since 1.0\n * @playwright getByTestId('…')\n * @status experimental\n * @level molecule\n *\n * @dependency ed-icon\n * @dependency ed-button\n *\n * @event {{ index: number, slide: EdCarouselItem }} ed-slide-change - Emitted when the active slide changes.\n *\n * @slot - The carousel's main content, one or more `<ed-carousel-item>` elements.\n * @slot next-icon - Optional next icon to use instead of the default. Works best with `<ed-icon>`.\n * @slot previous-icon - Optional previous icon to use instead of the default. Works best with `<ed-icon>`.\n *\n * @csspart base - The carousel's internal wrapper.\n * @csspart scroll-container - The scroll container that wraps the slides.\n * @csspart pagination - The pagination indicators wrapper.\n * @csspart pagination-item - The pagination indicator.\n * @csspart pagination-item-active - Applied when the item is active.\n * @csspart navigation - The navigation wrapper.\n * @csspart navigation-button - The navigation button.\n * @csspart navigation-button-previous - Applied to the previous button.\n * @csspart navigation-button-next - Applied to the next button.\n *\n * @cssproperty [--ed-carousel-aspect-ratio=16/9] - The aspect ratio of each slide.\n * @cssproperty --ed-carousel-scroll-hint - The amount of padding to apply to the scroll area, allowing adjacent slides to become\n *  partially visible as a scroll hint.\n * @cssproperty [--ed-carousel-slide-gap=var(--ed-space-4)] - The space between each slide.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/carousel",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "status": "experimental",
          "level": "molecule",
          "dependencies": [
            "ed-icon",
            "ed-button"
          ],
          "tagName": "ed-carousel",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdCarousel",
            "module": "components/carousel/carousel.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-carousel",
          "declaration": {
            "name": "EdCarousel",
            "module": "components/carousel/carousel.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/carousel/scroll-controller.js",
      "declarations": [
        {
          "kind": "class",
          "description": "A controller for handling scrolling and mouse dragging.",
          "name": "ScrollController",
          "members": [
            {
              "kind": "field",
              "name": "host",
              "type": {
                "text": "T"
              },
              "privacy": "private",
              "default": "host"
            },
            {
              "kind": "field",
              "name": "dragging",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "scrolling",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "mouseDragging",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "method",
              "name": "hostConnected"
            },
            {
              "kind": "method",
              "name": "hostDisconnected",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "field",
              "name": "handleScroll"
            },
            {
              "kind": "field",
              "name": "handleScrollEnd"
            },
            {
              "kind": "field",
              "name": "handlePointerDown"
            },
            {
              "kind": "field",
              "name": "handlePointerMove"
            },
            {
              "kind": "field",
              "name": "handlePointerUp"
            },
            {
              "kind": "method",
              "name": "handleDragStart"
            },
            {
              "kind": "method",
              "name": "handleDrag",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "PointerEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDragEnd"
            }
          ],
          "jsDoc": "/**\n * A controller for handling scrolling and mouse dragging.\n */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "ScrollController",
          "declaration": {
            "name": "ScrollController",
            "module": "components/carousel/scroll-controller.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/test/label-naming-tests.js",
      "declarations": [
        {
          "kind": "function",
          "name": "runLabelNamingTests",
          "parameters": [
            {
              "name": "{ tagName, named, listbox, children = '', labelId = 'label' }",
              "type": {
                "text": "LabelNamingConfig"
              }
            }
          ],
          "description": "A control's visible label names it while there is one — set as an attribute or slotted, before or\nafter the first render — and its aria-label names it otherwise: an empty label is never referenced.\nThese cases pin the wiring on every path; the names themselves are checked end to end by each\ncomponent's G2 case in `tests/e2e`. Referencing the label unconditionally turns the aria-label cases\nred; dropping the reference unconditionally turns the label cases red."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "runLabelNamingTests",
          "declaration": {
            "name": "runLabelNamingTests",
            "module": "internal/test/label-naming-tests.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/checkbox-group/checkbox-group.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdCheckboxGroup",
          "cssParts": [
            {
              "description": "The fieldset that wraps the label, the checkboxes, and the hint — the group assistive technology and `getByRole('group')` find.",
              "name": "form-control"
            },
            {
              "description": "The label's wrapper.",
              "name": "form-control-label"
            },
            {
              "description": "The element that wraps the grouped checkboxes.",
              "name": "base"
            },
            {
              "description": "The hint's wrapper.",
              "name": "hint"
            }
          ],
          "slots": [
            {
              "description": "The default slot where `<ed-checkbox>` or `<ed-switch>` elements are placed.",
              "name": ""
            },
            {
              "description": "The checkbox group's label. Required for proper accessibility. Alternatively, you can use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "Text that describes how to use the checkbox group. Alternatively, you can use the `hint` attribute.",
              "name": "hint"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'label', 'hint')"
            },
            {
              "kind": "field",
              "name": "ariaLabel",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "Accessible name for when no visible label is given. Mirrored onto the internal fieldset, which\nis the group — the host is deliberately role-less, so a consumer's aria-label would otherwise\nsit on an element assistive technology ignores.\n\nA visible label wins: the node references it with `aria-labelledby` while there is one, and\nonly then — accessible-name computation consults aria-labelledby first.",
              "attribute": "aria-label",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The checkbox group's hint. If you need to display HTML, use the `hint` slot instead.",
              "attribute": "hint"
            },
            {
              "kind": "field",
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'vertical'",
              "description": "The orientation in which to show grouped checkboxes.",
              "attribute": "orientation",
              "reflects": true,
              "parsedType": {
                "text": "'horizontal' | 'vertical'"
              }
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Adds a required indicator to the group's label. This is a visual cue only — unlike radios, checkboxes are\nindependent form controls, so enforce the requirement with the `required` attribute and/or `setCustomValidity()`\non the individual checkboxes.",
              "attribute": "required",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "withLabel",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element so the server-rendered markup includes\nthe label before the component hydrates on the client.",
              "attribute": "with-label"
            },
            {
              "kind": "field",
              "name": "withHint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup includes\nthe hint before the component hydrates on the client.",
              "attribute": "with-hint"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "aria-label",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "Accessible name for when no visible label is given. Mirrored onto the internal fieldset, which\nis the group — the host is deliberately role-less, so a consumer's aria-label would otherwise\nsit on an element assistive technology ignores.\n\nA visible label wins: the node references it with `aria-labelledby` while there is one, and\nonly then — accessible-name computation consults aria-labelledby first.",
              "fieldName": "ariaLabel",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "fieldName": "label"
            },
            {
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The checkbox group's hint. If you need to display HTML, use the `hint` slot instead.",
              "fieldName": "hint"
            },
            {
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'vertical'",
              "description": "The orientation in which to show grouped checkboxes.",
              "fieldName": "orientation",
              "parsedType": {
                "text": "'horizontal' | 'vertical'"
              }
            },
            {
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Adds a required indicator to the group's label. This is a visual cue only — unlike radios, checkboxes are\nindependent form controls, so enforce the requirement with the `required` attribute and/or `setCustomValidity()`\non the individual checkboxes.",
              "fieldName": "required"
            },
            {
              "name": "with-label",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element so the server-rendered markup includes\nthe label before the component hydrates on the client.",
              "fieldName": "withLabel"
            },
            {
              "name": "with-hint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element so the server-rendered markup includes\nthe hint before the component hydrates on the client.",
              "fieldName": "withHint"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Checkbox groups wrap a set of related checkboxes or switches so they share a label, hint, and grouping\nsemantics.",
          "jsDoc": "/**\n * @summary Checkbox groups wrap a set of related checkboxes or switches so they share a label, hint, and grouping\n *  semantics.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/checkbox-group\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-checkbox\n *\n * @slot - The default slot where `<ed-checkbox>` or `<ed-switch>` elements are placed.\n * @slot label - The checkbox group's label. Required for proper accessibility. Alternatively, you can use the `label`\n *  attribute.\n * @slot hint - Text that describes how to use the checkbox group. Alternatively, you can use the `hint` attribute.\n *\n * @csspart form-control - The fieldset that wraps the label, the checkboxes, and the hint — the group assistive\n *  technology and `getByRole('group')` find.\n * @csspart form-control-label - The label's wrapper.\n * @csspart base - The element that wraps the grouped checkboxes.\n * @csspart hint - The hint's wrapper.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/checkbox-group",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-checkbox"
          ],
          "tagName": "ed-checkbox-group",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdCheckboxGroup",
            "module": "components/checkbox-group/checkbox-group.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-checkbox-group",
          "declaration": {
            "name": "EdCheckboxGroup",
            "module": "components/checkbox-group/checkbox-group.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/test/dismissible-contract-tests.js",
      "declarations": [
        {
          "kind": "function",
          "name": "runDismissibleContractTests",
          "parameters": [
            {
              "name": "displayName",
              "type": {
                "text": "string"
              }
            },
            {
              "name": "config",
              "type": {
                "text": "DismissibleContractConfig"
              }
            }
          ],
          "description": "The Escape contract every dismissible upholds.\n\nEscape is a close request, and dismissibles stack: one press dismisses exactly the topmost one,\nand a component that does not act on the press must let it reach whatever encloses it. The second\nhalf is the one that breaks silently — a component that swallows every key through\n`stopPropagation()` on an internal handler keeps working on its own while trapping its\nsurroundings open, and no test of that component alone would notice.\n\nCoordination runs through `src/internal/dismissible-stack.ts`, not through propagation: every\nmember listens on `document` and acts only while `isTopDismissible()` holds."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "runDismissibleContractTests",
          "declaration": {
            "name": "runDismissibleContractTests",
            "module": "internal/test/dismissible-contract-tests.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/select/select.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdSelect",
          "cssProperties": [
            {
              "description": "The duration of the show animation.",
              "name": "--ed-show-duration",
              "default": "var(--ed-transition-fast)"
            },
            {
              "description": "The duration of the hide animation.",
              "name": "--ed-hide-duration",
              "default": "var(--ed-transition-fast)"
            },
            {
              "description": "When using `multiple`, the max size of tags before their content is truncated.",
              "name": "--ed-select-tag-max-size",
              "default": "10ch"
            },
            {
              "description": "The width of the control. Defaults to filling its container.",
              "name": "--ed-select-width",
              "default": "100%"
            }
          ],
          "cssParts": [
            {
              "description": "The form control that wraps the label, input, and hint.",
              "name": "form-control"
            },
            {
              "description": "The label's wrapper.",
              "name": "form-control-label"
            },
            {
              "description": "The select's wrapper.",
              "name": "form-control-input"
            },
            {
              "description": "The state message: an error, a warning, or the AI note.",
              "name": "message"
            },
            {
              "description": "The hint's wrapper.",
              "name": "hint"
            },
            {
              "description": "The bordered field box. An alias for `combobox`, so a selector written against another form control reaches the same element here.",
              "name": "base"
            },
            {
              "description": "The container the wraps the start, end, value, clear icon, and expand button.",
              "name": "combobox"
            },
            {
              "description": "The container that wraps the `start` slot.",
              "name": "start"
            },
            {
              "description": "The container that wraps the `end` slot.",
              "name": "end"
            },
            {
              "description": "The element that displays the selected option's label, an `<input>` element.",
              "name": "display-input"
            },
            {
              "description": "The floating surface holding the options. Carries the frame, background and shadow.",
              "name": "panel"
            },
            {
              "description": "The container that houses option tags when `multiselect` is used.",
              "name": "tags"
            },
            {
              "description": "The individual tags that represent each multiselect option.",
              "name": "tag"
            },
            {
              "description": "The tag's exported `base` part, the badge's surface.",
              "name": "tag__base"
            },
            {
              "description": "The tag's exported `remove-icon` part, the `<button>` that removes the option.",
              "name": "tag__remove-icon"
            },
            {
              "description": "The clear button.",
              "name": "clear-button"
            },
            {
              "description": "The container that wraps the expand icon.",
              "name": "expand-icon"
            }
          ],
          "slots": [
            {
              "description": "The listbox options. Must be `<ed-option>` elements. You can use `<ed-divider>` to group items visually.",
              "name": ""
            },
            {
              "description": "The input's label. Alternatively, you can use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "An element, such as `<ed-icon>`, placed at the start of the combobox.",
              "name": "start"
            },
            {
              "description": "An element, such as `<ed-icon>`, placed at the end of the combobox.",
              "name": "end"
            },
            {
              "description": "An icon to use in lieu of the default clear icon.",
              "name": "clear-icon"
            },
            {
              "description": "The icon to show when the control is expanded and collapsed. Rotates on open and close.",
              "name": "expand-icon"
            },
            {
              "description": "Text that describes how to use the input. Alternatively, you can use the `hint` attribute.",
              "name": "hint"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "validators",
              "type": {
                "text": "Validator[]"
              },
              "default": "[]",
              "static": true,
              "description": "Validators are static because they have `observedAttributes`, essentially attributes to \"watch\"\nfor changes. Whenever these attributes change, we want to be notified and update the validator.",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOn",
              "type": {
                "text": "string[]"
              },
              "default": "['blur', 'input']",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "cachedOptions",
              "type": {
                "text": "EdOption[] | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | default[]"
              }
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'label')"
            },
            {
              "kind": "field",
              "name": "selectionOrder",
              "type": {
                "text": "Map<string, number>"
              },
              "privacy": "private",
              "default": "new Map()"
            },
            {
              "kind": "field",
              "name": "typeToSelectString",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "typeToSelectTimeout",
              "type": {
                "text": "number"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "slotChangePending",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "popup",
              "type": {
                "text": "EdPopup"
              }
            },
            {
              "kind": "field",
              "name": "combobox",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "displayInput",
              "type": {
                "text": "HTMLInputElement"
              }
            },
            {
              "kind": "field",
              "name": "valueInput",
              "type": {
                "text": "HTMLInputElement"
              }
            },
            {
              "kind": "field",
              "name": "listbox",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Where to anchor native constraint validation",
              "readonly": true,
              "parsedType": {
                "text": "HTMLElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "displayLabel",
              "type": {
                "text": "string"
              },
              "default": "''"
            },
            {
              "kind": "field",
              "name": "currentOption",
              "type": {
                "text": "EdOption"
              }
            },
            {
              "kind": "field",
              "name": "selectedOptions",
              "type": {
                "text": "EdOption[]"
              },
              "default": "[]"
            },
            {
              "kind": "method",
              "name": "getOptionValues",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Set<string | null>"
                }
              },
              "description": "Non-disabled option values currently in the DOM. Computed fresh on every call rather than\ncached, because caching created stale-state bugs when the value was set before options\nexisted in the DOM. The underlying getAllOptions() is already cached, so this is cheap."
            },
            {
              "kind": "field",
              "name": "_defaultValue",
              "type": {
                "text": "null | string | string[]"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "defaultValue"
            },
            {
              "kind": "method",
              "name": "rawValuesEqual",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "a",
                  "type": {
                    "text": "string[] | null | undefined"
                  }
                },
                {
                  "name": "b",
                  "type": {
                    "text": "string[] | null | undefined"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "convertDefaultValue",
              "privacy": "private",
              "parameters": [
                {
                  "name": "val",
                  "type": {
                    "text": "typeof this.defaultValue"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "_value",
              "type": {
                "text": "string[] | undefined | null"
              },
              "privacy": "private",
              "parsedType": {
                "text": "null | string[] | undefined"
              }
            },
            {
              "kind": "field",
              "name": "value",
              "description": "The select's value. This will be a string for single select or an array for multi-select.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "Controls the component's spacing density without affecting font-size.",
              "attribute": "density",
              "reflects": true,
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "kind": "field",
              "name": "placeholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder text to show as a hint when the select is empty.",
              "attribute": "placeholder"
            },
            {
              "kind": "field",
              "name": "multiple",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allows more than one option to be selected.",
              "attribute": "multiple",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "maxOptionsVisible",
              "type": {
                "text": "number"
              },
              "default": "3",
              "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.",
              "attribute": "max-options-visible"
            },
            {
              "kind": "field",
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows a value the user cannot change. Unlike `disabled`, the control stays focusable and its value is still\nsubmitted with the form; the listbox does not open, and nothing empties the value.",
              "attribute": "readonly",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "withClear",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Adds a clear button when the select is not empty.",
              "attribute": "with-clear"
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style select with rounded edges.",
              "attribute": "pill",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The select's label. If you need to display HTML, use the `label` slot instead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "ariaLabel",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The select's accessible name for when no visible label is set. Mirrored onto the internal\ndisplay input, where the combobox role lives — an aria-label left on the host alone would\nsit on a role-less element and be ignored by assistive tech. A visible label wins when both\nare present (aria-labelledby precedes aria-label in accessible-name computation).",
              "attribute": "aria-label",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "placement",
              "type": {
                "text": "'top' | 'bottom'"
              },
              "default": "'bottom'",
              "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.",
              "attribute": "placement",
              "reflects": true,
              "parsedType": {
                "text": "'top' | 'bottom'"
              }
            },
            {
              "kind": "field",
              "name": "withLabel",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "with-label"
            },
            {
              "kind": "field",
              "name": "withHint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "with-hint"
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The select's required attribute.",
              "attribute": "required",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "getTag",
              "type": {
                "text": "(option: EdOption, index: number) => TemplateResult | string | HTMLElement"
              },
              "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. Return a Lit `TemplateResult`, an `HTMLElement`, or a string (strings render as text and\nare auto-escaped — to render rich content, return a `TemplateResult` or build an `HTMLElement` yourself). For React,\nwrap JSX with the `jsxToHtml()` helper. For non-Lit vanilla JS, use the re-exported `html` tag."
            },
            {
              "kind": "method",
              "name": "updateDefaultValue",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "addOpenListeners",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "removeOpenListeners",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleFocus",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDocumentFocusIn",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDocumentKeyDown",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDocumentMouseDown",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleLabelClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleComboboxClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "#openAtPointerDown",
              "privacy": "private",
              "type": {
                "text": "boolean | null"
              },
              "default": "null",
              "description": "`open` as the pointer went down. The toggle runs on mouseup, and something else can close the\nlistbox in between: a focus trap that pulls focus onto an element of its own reaches\n`handleDocumentFocusIn`, which hides. Toggling the live value then reopens what the click was\nmeant to close.",
              "parsedType": {
                "text": "null | false | true"
              }
            },
            {
              "kind": "method",
              "name": "handleComboboxMouseDown",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleComboboxMouseUp",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleComboboxKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "mutable",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether a user gesture may change the value. WHATWG HTML: a readonly control is \"not mutable\",\nand the platform holds to it — Escape empties an `<input type=\"search\">` and leaves the same\nfield alone once it is readonly, in Chromium and Firefox. Every keyboard write answers to this.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "handleClearClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleClearMouseDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleOptionHover",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ],
              "description": "The pointer takes over the highlight while it is over the list, so hover and keyboard-current are\none state rather than two that share a visual treatment. Side by side those read as two selected\noptions with no way to tell which one Enter would take.\n\nThe event is `mousemove`: `mouseenter` does not bubble, and `mouseover` fires whenever the element\nunder a *stationary* cursor changes — on open, on scroll, on re-render — which would hand the\nhighlight to whatever option the pointer happens to rest over and undo keyboard navigation.\n\nUnlike ed-combobox this deliberately has no mouseleave counterpart: `current` here carries real DOM\nfocus, and dropping it on the way out would leave focus on an option with no visible marker, or\nforce focus back to the trigger on every pointer exit. The highlight stays where the pointer left\nit, which is also what the platform selects do."
            },
            {
              "kind": "method",
              "name": "handleOptionClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDefaultSlotChange",
              "privacy": "public"
            },
            {
              "kind": "method",
              "name": "processSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleTagRemove",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "EdRemoveEvent"
                  }
                },
                {
                  "name": "directOption",
                  "optional": true,
                  "type": {
                    "text": "EdOption"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getAllOptions",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getFirstOption",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "setCurrentOption",
              "privacy": "private",
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "EdOption | null"
                  }
                },
                {
                  "name": "{ scroll = true }",
                  "default": "{}",
                  "type": {
                    "text": "{ scroll?: boolean }"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "setSelectedOptions",
              "privacy": "private",
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "EdOption | EdOption[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "toggleOptionSelection",
              "privacy": "private",
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "EdOption"
                  }
                },
                {
                  "name": "force",
                  "optional": true,
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "selectionChanged",
              "privacy": "public"
            },
            {
              "kind": "method",
              "name": "show",
              "description": "Shows the listbox."
            },
            {
              "kind": "method",
              "name": "hide",
              "description": "Hides the listbox."
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the control."
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the control."
            },
            {
              "kind": "method",
              "name": "formResetCallback"
            },
            {
              "kind": "field",
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "attribute": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "attribute": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "attribute": "ai",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "attribute": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "attribute": "name",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#fieldsetDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set by `formDisabledCallback`, i.e. an ancestor `<fieldset>`. Never written by a consumer.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#ownDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The disabled state this element was given directly, via its property or its attribute.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "attribute": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOnMode",
              "type": {
                "text": "'combined' | 'separated' | string"
              },
              "default": "'combined'",
              "parsedType": {
                "text": "string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "text": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "parsedType": {
                "text": "HTMLElement & { value: unknown } | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "valueHasChanged",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasInteracted",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_customValidityMessage",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_isCheckingValidity",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set while `checkValidity()` is executing so the `invalid` event handler can distinguish\na programmatic check (no UI side-effects per spec) from `reportValidity()` / native form\nsubmission (which should surface the error UI and focus the first invalid control).",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emittedEvents",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "states",
              "type": {
                "text": "CustomStateSet"
              },
              "parsedType": {
                "text": "any"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleSubmitOnEnter",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleClearOnEscape",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emitInvalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleInteraction",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "labels",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getForm",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "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": {
                "text": "HTMLFormElement | null"
              },
              "parsedType": {
                "text": "null | HTMLFormElement"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validity",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "willValidate",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationMessage",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "checkValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValidity",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setValidity>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "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.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setFormValue>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "allValidators",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "resetValidity",
              "description": "Reset validity is a way of removing manual custom errors and native validation.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "name": "input",
              "type": {
                "text": "InputEvent"
              },
              "description": "Emitted when the control receives input.",
              "reactName": "onInput",
              "eventName": "InputEvent"
            },
            {
              "name": "change",
              "type": {
                "text": "Event"
              },
              "description": "Emitted when the control's value changes.",
              "reactName": "onChange",
              "eventName": "ChangeEvent"
            },
            {
              "description": "Emitted when the control gains focus.",
              "name": "focus",
              "reactName": "onFocus",
              "eventName": "FocusEvent"
            },
            {
              "description": "Emitted when the control loses focus.",
              "name": "blur",
              "reactName": "onBlur",
              "eventName": "BlurEvent"
            },
            {
              "description": "Emitted when the control's value is cleared.",
              "name": "ed-clear",
              "reactName": "onEdClear",
              "eventName": "EdClearEvent"
            },
            {
              "description": "Emitted when the select's menu opens. Cancelable; calling `preventDefault()` keeps it closed.",
              "name": "ed-show",
              "reactName": "onEdShow",
              "eventName": "EdShowEvent"
            },
            {
              "description": "Emitted after the select's menu opens and all animations are complete.",
              "name": "ed-after-show",
              "reactName": "onEdAfterShow",
              "eventName": "EdAfterShowEvent"
            },
            {
              "description": "Emitted when the select's menu closes. Cancelable; calling `preventDefault()` keeps it open.",
              "name": "ed-hide",
              "reactName": "onEdHide",
              "eventName": "EdHideEvent"
            },
            {
              "description": "Emitted after the select's menu closes and all animations are complete.",
              "name": "ed-after-hide",
              "reactName": "onEdAfterHide",
              "eventName": "EdAfterHideEvent"
            },
            {
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied.",
              "name": "ed-invalid",
              "reactName": "onEdInvalid",
              "eventName": "EdInvalidEvent"
            }
          ],
          "attributes": [
            {
              "name": "value",
              "description": "The select's value. This will be a string for single select or an array for multi-select.",
              "fieldName": "value"
            },
            {
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "Controls the component's spacing density without affecting font-size.",
              "fieldName": "density",
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "name": "placeholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder text to show as a hint when the select is empty.",
              "fieldName": "placeholder"
            },
            {
              "name": "multiple",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allows more than one option to be selected.",
              "fieldName": "multiple"
            },
            {
              "name": "max-options-visible",
              "type": {
                "text": "number"
              },
              "default": "3",
              "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.",
              "fieldName": "maxOptionsVisible"
            },
            {
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows a value the user cannot change. Unlike `disabled`, the control stays focusable and its value is still\nsubmitted with the form; the listbox does not open, and nothing empties the value.",
              "fieldName": "readonly"
            },
            {
              "name": "with-clear",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Adds a clear button when the select is not empty.",
              "fieldName": "withClear"
            },
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "open"
            },
            {
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style select with rounded edges.",
              "fieldName": "pill"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The select's label. If you need to display HTML, use the `label` slot instead.",
              "fieldName": "label"
            },
            {
              "name": "aria-label",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The select's accessible name for when no visible label is set. Mirrored onto the internal\ndisplay input, where the combobox role lives — an aria-label left on the host alone would\nsit on a role-less element and be ignored by assistive tech. A visible label wins when both\nare present (aria-labelledby precedes aria-label in accessible-name computation).",
              "fieldName": "ariaLabel",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "placement",
              "type": {
                "text": "'top' | 'bottom'"
              },
              "default": "'bottom'",
              "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.",
              "fieldName": "placement",
              "parsedType": {
                "text": "'top' | 'bottom'"
              }
            },
            {
              "name": "with-label",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "withLabel"
            },
            {
              "name": "with-hint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "withHint"
            },
            {
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The select's required attribute.",
              "fieldName": "required"
            },
            {
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "fieldName": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "fieldName": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "fieldName": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "fieldName": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "fieldName": "name",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "fieldName": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "The select is empty.",
              "name": "blank"
            },
            {
              "description": "The control is disabled, by its own attribute or by an ancestor fieldset.",
              "name": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is required.",
              "name": "required",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is not required.",
              "name": "optional",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value fails constraint validation, whether or not the user has touched the control yet.",
              "name": "invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value passes constraint validation.",
              "name": "valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Invalid, and the user has interacted with the control. This is the one to style for an error: it behaves like the platform's `:user-invalid`, so an untouched field is not marked wrong before the user has had a chance to fill it in.",
              "name": "user-invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Valid, and the user has interacted with the control.",
              "name": "user-valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The user has interacted with the control.",
              "name": "dirty",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `error` property is set, or the control is `user-invalid`.",
              "name": "error",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `warning` property is set.",
              "name": "warning",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `ai` property is set and the user has not interacted with the control yet.",
              "name": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdFormAssociatedElement",
            "module": "/src/internal/ed-form-associated-element.js"
          },
          "summary": "Lets the user pick one value, or several, from a dropdown list of predefined options in a form or filter.",
          "jsDoc": "/**\n * @summary Lets the user pick one value, or several, from a dropdown list of predefined options in a form or filter.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/select\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…').getByRole('combobox')\n *\n * @dependency ed-icon\n * @dependency ed-popup\n * @dependency ed-badge\n * @dependency ed-option\n *\n * @slot - The listbox options. Must be `<ed-option>` elements. You can use `<ed-divider>` to group items visually.\n * @slot label - The input's label. Alternatively, you can use the `label` attribute.\n * @slot start - An element, such as `<ed-icon>`, placed at the start of the combobox.\n * @slot end - An element, such as `<ed-icon>`, placed at the end of the combobox.\n * @slot clear-icon - An icon to use in lieu of the default clear icon.\n * @slot expand-icon - The icon to show when the control is expanded and collapsed. Rotates on open and close.\n * @slot hint - Text that describes how to use the input. Alternatively, you can use the `hint` attribute.\n *\n * @event change - Emitted when the control's value changes.\n * @event input - Emitted when the control receives input.\n * @event focus - Emitted when the control gains focus.\n * @event blur - Emitted when the control loses focus.\n * @event ed-clear - Emitted when the control's value is cleared.\n * @event ed-show - Emitted when the select's menu opens.\n *  Cancelable; calling `preventDefault()` keeps it closed.\n * @event ed-after-show - Emitted after the select's menu opens and all animations are complete.\n * @event ed-hide - Emitted when the select's menu closes.\n *  Cancelable; calling `preventDefault()` keeps it open.\n * @event ed-after-hide - Emitted after the select's menu closes and all animations are complete.\n * @event ed-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n *\n * @csspart form-control - The form control that wraps the label, input, and hint.\n * @csspart form-control-label - The label's wrapper.\n * @csspart form-control-input - The select's wrapper.\n * @csspart message - The state message: an error, a warning, or the AI note.\n * @csspart hint - The hint's wrapper.\n * @csspart base - The bordered field box. An alias for `combobox`, so a selector written against\n *   another form control reaches the same element here.\n * @csspart combobox - The container the wraps the start, end, value, clear icon, and expand button.\n * @csspart start - The container that wraps the `start` slot.\n * @csspart end - The container that wraps the `end` slot.\n * @csspart display-input - The element that displays the selected option's label, an `<input>` element.\n * @csspart panel - The floating surface holding the options. Carries the frame, background and shadow.\n * @csspart tags - The container that houses option tags when `multiselect` is used.\n * @csspart tag - The individual tags that represent each multiselect option.\n * @csspart tag__base - The tag's exported `base` part, the badge's surface.\n * @csspart tag__remove-icon - The tag's exported `remove-icon` part, the `<button>` that removes the option.\n * @csspart clear-button - The clear button.\n * @csspart expand-icon - The container that wraps the expand icon.\n *\n * @cssproperty [--ed-show-duration=var(--ed-transition-fast)] - The duration of the show animation.\n * @cssproperty [--ed-hide-duration=var(--ed-transition-fast)] - The duration of the hide animation.\n * @cssproperty [--ed-select-tag-max-size=10ch] - When using `multiple`, the max size of tags before their content is truncated.\n * @cssproperty [--ed-select-width=100%] - The width of the control. Defaults to filling its container.\n *\n * @cssstate blank - The select is empty.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/select",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('combobox')",
          "dependencies": [
            "ed-icon",
            "ed-popup",
            "ed-badge",
            "ed-option"
          ],
          "tagName": "ed-select",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdSelect",
            "module": "components/select/select.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-select",
          "declaration": {
            "name": "EdSelect",
            "module": "components/select/select.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/option/option.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdOption",
          "cssParts": [
            {
              "description": "The checkbox that shows the selection in a multi-select control, an `<ed-checkbox>` element.",
              "name": "checkbox"
            },
            {
              "description": "The checkbox's exported `base` part.",
              "name": "checkbox__base"
            },
            {
              "description": "The checkbox's exported `control` part.",
              "name": "checkbox__control"
            },
            {
              "description": "The checkbox's exported `checked-icon` part.",
              "name": "checkbox__checked-icon"
            },
            {
              "description": "The checkbox's exported `label` part.",
              "name": "checkbox__label"
            },
            {
              "description": "The checked icon, a `<ed-icon>` element. Single-select controls only.",
              "name": "checked-icon"
            },
            {
              "description": "The row itself, in tree mode. Carries the padding, background and selection styling.",
              "name": "row"
            },
            {
              "description": "The spacer that indents the row by its depth, in tree mode.",
              "name": "indentation"
            },
            {
              "description": "The chevron that expands and collapses a branch, in tree mode.",
              "name": "expand-button"
            },
            {
              "description": "The container holding nested options, in tree mode.",
              "name": "children"
            },
            {
              "description": "The option's label.",
              "name": "label"
            },
            {
              "description": "The container that wraps the `start` slot.",
              "name": "start"
            },
            {
              "description": "The container that wraps the `end` slot.",
              "name": "end"
            }
          ],
          "slots": [
            {
              "description": "The option's label.",
              "name": ""
            },
            {
              "description": "Nested options, projected automatically. Only rendered inside a combobox with `tree`; do not assign this slot yourself.",
              "name": "children"
            },
            {
              "description": "An element, such as `<ed-icon>`, placed before the label.",
              "name": "start"
            },
            {
              "description": "An element, such as `<ed-icon>`, placed after the label.",
              "name": "end"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "cachedDefaultLabel",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "isInitialized",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "isDefaultLabelDirty",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "true"
            },
            {
              "kind": "field",
              "name": "textObserver",
              "type": {
                "text": "MutationObserver | undefined"
              },
              "privacy": "private",
              "parsedType": {
                "text": "{ disconnect: {  }, observe: {  }, takeRecords: {  } } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "childrenSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "current",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "isLeaf",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Whether this option has nested options. Derived from the children slot, so it only settles after\nthe first render — which is why leaf-vs-branch is expressed through `aria-expanded` (a state)\nrather than a different role."
            },
            {
              "kind": "field",
              "name": "expanded",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether nested options are shown. Only meaningful on a branch in tree mode.",
              "attribute": "expanded",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "depth",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0",
              "description": "Nesting depth, counted in `ed-option` ancestors. Fixed at connect time — an option does not move\nbetween parents — so it needs no reactivity. Drives the indentation through a private custom\nproperty; consumers indent by nesting their markup, not by styling."
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "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; spaces are allowed, since a multi-select submits one entry per option\nrather than a single delimited string.",
              "attribute": "value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the option in a disabled state, preventing selection.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "defaultSelected",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Selects an option initially.",
              "attribute": "selected"
            },
            {
              "kind": "field",
              "name": "_label",
              "type": {
                "text": "string"
              },
              "default": "''"
            },
            {
              "kind": "field",
              "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": {
                "text": "string"
              },
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "defaultLabel",
              "type": {
                "text": "string"
              },
              "description": "The default label, generated from the element contents. Will be equal to `label` in most cases.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "handleDefaultSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleChildrenSlotChange",
              "privacy": "private",
              "description": "Recomputes `isLeaf` from the children slot. Nested options arrive asynchronously via slotchange."
            },
            {
              "kind": "method",
              "name": "getChildOptions",
              "return": {
                "type": {
                  "text": "EdOption[]"
                }
              },
              "description": "Returns the nested options one level down."
            },
            {
              "kind": "method",
              "name": "handleChevronMouseDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ],
              "description": "Clicking a button focuses it in every browser. Here that pulls DOM focus out of the combobox's\ninput — which is where it stays while aria-activedescendant points at the current row — so typing\nstops working, and it lights up the global button focus ring (styles/base/elements.css) on a\ncontrol that is aria-hidden and never meant to hold focus. Nothing hands the focus back either,\nbecause the combobox's surface handler returns early for the chevron.\n\nPreventing the default leaves focus untouched; click still fires."
            },
            {
              "kind": "method",
              "name": "handleChevronClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleHover",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "updateDefaultLabel",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "expanded",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether nested options are shown. Only meaningful on a branch in tree mode.",
              "fieldName": "expanded"
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "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; spaces are allowed, since a multi-select submits one entry per option\nrather than a single delimited string.",
              "fieldName": "value"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the option in a disabled state, preventing selection.",
              "fieldName": "disabled"
            },
            {
              "name": "selected",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Selects an option initially.",
              "fieldName": "defaultSelected"
            },
            {
              "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": {
                "text": "string"
              },
              "fieldName": "label"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "The user has keyed into the option, but hasn't selected it yet (shows a highlight)",
              "name": "current"
            },
            {
              "description": "The option is selected and has aria-selected=\"true\"",
              "name": "selected"
            },
            {
              "description": "Applied when the option is disabled",
              "name": "disabled"
            },
            {
              "description": "Applied while a branch's nested options are shown",
              "name": "expanded"
            },
            {
              "description": "Like `:hover` but works while dragging in Safari",
              "name": "hover"
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "One selectable entry of an ed-select or ed-combobox, with a value, a label and optional start and end\ncontent.",
          "jsDoc": "/**\n * @summary One selectable entry of an ed-select or ed-combobox, with a value, a label and optional start and end\n *  content.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/option\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-checkbox\n * @dependency ed-icon\n *\n * @slot - The option's label.\n * @slot children - Nested options, projected automatically. Only rendered inside a combobox with `tree`; do not assign this slot yourself.\n * @slot start - An element, such as `<ed-icon>`, placed before the label.\n * @slot end - An element, such as `<ed-icon>`, placed after the label.\n *\n * @csspart checkbox - The checkbox that shows the selection in a multi-select control, an `<ed-checkbox>` element.\n * @csspart checkbox__base - The checkbox's exported `base` part.\n * @csspart checkbox__control - The checkbox's exported `control` part.\n * @csspart checkbox__checked-icon - The checkbox's exported `checked-icon` part.\n * @csspart checkbox__label - The checkbox's exported `label` part.\n * @csspart checked-icon - The checked icon, a `<ed-icon>` element. Single-select controls only.\n * @csspart row - The row itself, in tree mode. Carries the padding, background and selection styling.\n * @csspart indentation - The spacer that indents the row by its depth, in tree mode.\n * @csspart expand-button - The chevron that expands and collapses a branch, in tree mode.\n * @csspart children - The container holding nested options, in tree mode.\n * @csspart label - The option's label.\n * @csspart start - The container that wraps the `start` slot.\n * @csspart end - The container that wraps the `end` slot.\n *\n * @cssstate current - The user has keyed into the option, but hasn't selected it yet (shows a highlight)\n * @cssstate selected - The option is selected and has aria-selected=\"true\"\n * @cssstate disabled - Applied when the option is disabled\n * @cssstate expanded - Applied while a branch's nested options are shown\n * @cssstate hover - Like `:hover` but works while dragging in Safari\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/option",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-checkbox",
            "ed-icon"
          ],
          "tagName": "ed-option",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdOption",
            "module": "components/option/option.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-option",
          "declaration": {
            "name": "EdOption",
            "module": "components/option/option.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/combobox/combobox.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdCombobox",
          "cssProperties": [
            {
              "description": "The duration of the show animation.",
              "name": "--ed-show-duration",
              "default": "var(--ed-transition-fast)"
            },
            {
              "description": "The duration of the hide animation.",
              "name": "--ed-hide-duration",
              "default": "var(--ed-transition-fast)"
            },
            {
              "description": "When using `multiple`, the max size of tags before their content is truncated.",
              "name": "--ed-combobox-tag-max-size",
              "default": "10ch"
            }
          ],
          "cssParts": [
            {
              "description": "The form control that wraps the label, input, and hint.",
              "name": "form-control"
            },
            {
              "description": "The label's wrapper.",
              "name": "form-control-label"
            },
            {
              "description": "The select's wrapper.",
              "name": "form-control-input"
            },
            {
              "description": "The state message: an error, a warning, or the AI note.",
              "name": "message"
            },
            {
              "description": "The hint's wrapper.",
              "name": "hint"
            },
            {
              "description": "The container the wraps the start, end, value, clear icon, and expand button.",
              "name": "combobox"
            },
            {
              "description": "The bordered field box. An alias for `input`, so a selector written against another form control reaches the same element here.",
              "name": "base"
            },
            {
              "description": "The element carrying the field's border and background.",
              "name": "input"
            },
            {
              "description": "The slot holding the expand icon.",
              "name": "expand-icon-slot"
            },
            {
              "description": "The container that wraps the `start` slot.",
              "name": "start"
            },
            {
              "description": "The container that wraps the `end` slot.",
              "name": "end"
            },
            {
              "description": "The element that displays the selected option's label, an `<input>` element.",
              "name": "display-input"
            },
            {
              "description": "The floating surface, carrying the frame, background and shadow. It holds the option list while something matches and the no-match message once nothing does, so one selector reaches the dropdown in either state. Sizing it past the field's own width is not corrected when the field sits near a viewport edge: the popup is positioned on its own box, which `sync=\"width\"` pins to the field, so collision handling never sees the wider child.",
              "name": "panel"
            },
            {
              "description": "The scrolling list of options inside the panel. Use it for the list itself — its height, or how far it scrolls — rather than for the dropdown's framing. A height belongs here and not on `panel`: the panel clips to its own corners, so limiting its height cuts options off instead of scrolling them.",
              "name": "listbox"
            },
            {
              "description": "Added to the list when `tree` is set and it carries role=\"tree\".",
              "name": "listbox-tree"
            },
            {
              "description": "The message sitting in the panel in place of the list, whichever it is. Also carries the part of its kind.",
              "name": "status"
            },
            {
              "description": "The message shown when nothing matches, sitting in the panel in place of the list.",
              "name": "no-results"
            },
            {
              "description": "The message shown in server mode when there are no options for an empty query.",
              "name": "empty"
            },
            {
              "description": "The message shown in server mode while options load and none are showing.",
              "name": "loading"
            },
            {
              "description": "The message shown in server mode when the last request for options failed.",
              "name": "error"
            },
            {
              "description": "The container that houses option tags when `multiselect` is used.",
              "name": "tags"
            },
            {
              "description": "The individual tags that represent each multiselect option.",
              "name": "tag"
            },
            {
              "description": "The tag's exported `base` part, the badge's surface.",
              "name": "tag__base"
            },
            {
              "description": "The tag's exported `remove-icon` part, the `<button>` that removes the option.",
              "name": "tag__remove-icon"
            },
            {
              "description": "The clear button.",
              "name": "clear-button"
            },
            {
              "description": "The container that wraps the expand icon.",
              "name": "expand-icon"
            }
          ],
          "slots": [
            {
              "description": "The listbox options. Must be `<ed-option>` elements. You can use `<ed-divider>` to group items visually. With `tree`, options may be nested to any depth to form a hierarchy.",
              "name": ""
            },
            {
              "description": "The input's label. Alternatively, you can use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "An element, such as `<ed-icon>`, placed at the start of the combobox.",
              "name": "start"
            },
            {
              "description": "An element, such as `<ed-icon>`, placed at the end of the combobox.",
              "name": "end"
            },
            {
              "description": "An icon to use in lieu of the default clear icon.",
              "name": "clear-icon"
            },
            {
              "description": "Content shown when no option matches the current input. Rendered outside the listbox, because an inert hint is not a selectable option. Alternatively, use the no-results-label attribute for plain text.",
              "name": "no-results"
            },
            {
              "description": "Content shown in server mode when the server has no options for an empty query. Its text is announced.",
              "name": "empty"
            },
            {
              "description": "Content shown in server mode while options are being requested and none are showing. Its text is announced.",
              "name": "loading"
            },
            {
              "description": "Content shown in server mode when the last request for options failed, in place of the list. Its text is announced.",
              "name": "error"
            },
            {
              "description": "The icon to show when the control is expanded and collapsed. Rotates on open and close.",
              "name": "expand-icon"
            },
            {
              "description": "Text that describes how to use the input. Alternatively, you can use the `hint` attribute.",
              "name": "hint"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "validators",
              "type": {
                "text": "Validator[]"
              },
              "default": "[]",
              "static": true,
              "description": "Validators are static because they have `observedAttributes`, essentially attributes to \"watch\"\nfor changes. Whenever these attributes change, we want to be notified and update the validator.",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOn",
              "type": {
                "text": "string[]"
              },
              "default": "['blur', 'input']",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'label')"
            },
            {
              "kind": "field",
              "name": "hasInputSinceOpening",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "typedSinceFocus",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set by typing, cleared on leaving the field, by a pick and by clearing: the field holds text the user typed, so\nan option change — a server answer, a consumer swapping the options or setting `value` — does not write the\nselection's label over it. Kept apart from `hasInteracted`, which would show a required field's error mid-word\n(see `handleBlur`)."
            },
            {
              "kind": "field",
              "name": "openingFromInput",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set when a keystroke opens the list, so that opening keeps the input it was caused by."
            },
            {
              "kind": "field",
              "name": "selectionOrder",
              "type": {
                "text": "Map<string, number>"
              },
              "privacy": "private",
              "default": "new Map()"
            },
            {
              "kind": "field",
              "name": "cachedOptions",
              "type": {
                "text": "EdOption[] | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | default[]"
              }
            },
            {
              "kind": "field",
              "name": "slotChangePending",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "optionIdCounter",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "listboxId",
              "privacy": "private",
              "default": "`ed-combobox-listbox`"
            },
            {
              "kind": "field",
              "name": "expansionSnapshot",
              "type": {
                "text": "Map<EdOption, boolean> | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The user's expansion state before filtering force-opened the ancestors of matches. Null while no\nquery session is active. Without this, typing and then clearing a query would silently leave the\nwhole tree expanded.",
              "parsedType": {
                "text": "null | { clear: {  }, delete: {  }, forEach: {  }, get: {  }, has: {  }, set: {  }, size: number, entries: {  }, keys: {  }, values: {  }, __@iterator@156: {  }, __@toStringTag@537: string }"
              }
            },
            {
              "kind": "method",
              "name": "generateOptionId",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "popup",
              "type": {
                "text": "EdPopup"
              }
            },
            {
              "kind": "field",
              "name": "combobox",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "displayInput",
              "type": {
                "text": "HTMLInputElement"
              }
            },
            {
              "kind": "field",
              "name": "valueInput",
              "type": {
                "text": "HTMLInputElement"
              }
            },
            {
              "kind": "field",
              "name": "listbox",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "panel",
              "type": {
                "text": "HTMLElement"
              },
              "description": "The surface, and the element that scrolls — which is not the list, so keyboard navigation\nhas to scroll this one to bring an option into view."
            },
            {
              "kind": "field",
              "name": "liveRegion",
              "type": {
                "text": "HTMLDivElement"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Where to anchor native constraint validation",
              "readonly": true,
              "parsedType": {
                "text": "HTMLElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "comboboxLabel",
              "type": {
                "text": "string"
              },
              "default": "''"
            },
            {
              "kind": "field",
              "name": "currentOption",
              "type": {
                "text": "EdOption | null"
              },
              "default": "null",
              "parsedType": {
                "text": "null | default"
              }
            },
            {
              "kind": "field",
              "name": "selectedOptions",
              "type": {
                "text": "EdOption[]"
              },
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "filteredOptions",
              "type": {
                "text": "EdOption[]"
              },
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "optionValues",
              "type": {
                "text": "Set<string | null> | undefined"
              },
              "parsedType": {
                "text": "{ add: {  }, clear: {  }, delete: {  }, forEach: {  }, has: {  }, size: number, entries: {  }, keys: {  }, values: {  }, __@iterator@156: {  }, __@toStringTag@537: string } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "_value",
              "type": {
                "text": "string[] | undefined | null"
              },
              "privacy": "private",
              "parsedType": {
                "text": "null | string[] | undefined"
              }
            },
            {
              "kind": "method",
              "name": "rawValuesEqual",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "a",
                  "type": {
                    "text": "string[] | null | undefined"
                  }
                },
                {
                  "name": "b",
                  "type": {
                    "text": "string[] | null | undefined"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "value",
              "description": "The select's value. This will be a string for single select or an array for multi-select.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "_defaultValue",
              "type": {
                "text": "null | string | string[]"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "defaultValue"
            },
            {
              "kind": "method",
              "name": "convertDefaultValue",
              "privacy": "private",
              "parameters": [
                {
                  "name": "val",
                  "type": {
                    "text": "typeof this.defaultValue"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "Controls the component's spacing density without affecting font-size.",
              "attribute": "density",
              "reflects": true,
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "kind": "field",
              "name": "placeholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder text to show as a hint when the select is empty.",
              "attribute": "placeholder"
            },
            {
              "kind": "field",
              "name": "multiple",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allows more than one option to be selected.",
              "attribute": "multiple",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "maxOptionsVisible",
              "type": {
                "text": "number"
              },
              "default": "3",
              "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.",
              "attribute": "max-options-visible"
            },
            {
              "kind": "field",
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows a value the user cannot change. Unlike `disabled`, the control stays focusable and its value is still\nsubmitted with the form; the listbox does not open, and nothing empties the value.",
              "attribute": "readonly",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "withClear",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Adds a clear button when the select is not empty.",
              "attribute": "with-clear"
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style select with rounded edges.",
              "attribute": "pill",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The select's label. If you need to display HTML, use the `label` slot instead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "ariaLabel",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The combobox's accessible name for when no visible label is set. Mirrored onto the internal\ndisplay input, where the combobox role lives — an aria-label left on the host alone would\nsit on a role-less element and be ignored by assistive tech. A visible label wins when both\nare present (aria-labelledby precedes aria-label in accessible-name computation).",
              "attribute": "aria-label",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "placement",
              "type": {
                "text": "'top' | 'bottom'"
              },
              "default": "'bottom'",
              "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.",
              "attribute": "placement",
              "reflects": true,
              "parsedType": {
                "text": "'top' | 'bottom'"
              }
            },
            {
              "kind": "field",
              "name": "withLabel",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Used for SSR purposes when a label is slotted in. Will show the label on first render.",
              "attribute": "with-label"
            },
            {
              "kind": "field",
              "name": "withHint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Used for SSR purposes when hint is slotted in. Will show the hint on first render.",
              "attribute": "with-hint"
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The select's required attribute.",
              "attribute": "required",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "noResultsLabel",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The text shown in the listbox when no option matches the current input. Defaults to a localized label.\nTo render custom markup instead, use the `no-results` slot.",
              "attribute": "no-results-label"
            },
            {
              "kind": "field",
              "name": "allowCustomValue",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, allows the user to enter a value that doesn't match any of the options. In single mode the typed\nvalue is committed with Enter or when the field loses focus. When `multiple` is set, Enter turns the typed\ntext into a tag (backed by a generated light-DOM option marked `data-custom-option`). When false, the\ncombobox only accepts values that match an option.",
              "attribute": "allow-custom-value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "tree",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Renders the popup as a hierarchy instead of a flat list. Nest `<ed-option>` elements to any depth;\nparents expand and collapse, and every node stays selectable.\n\nNesting is only supported with this attribute set — without it there is no children slot for\nnested options to project into. Typing filters the tree in place: a parent stays visible while any\ndescendant matches.\n\nNot combinable with `allow-custom-value` (a typed string has no position in a hierarchy) or\n`autocomplete=\"none\"`; both are ignored with a warning.",
              "attribute": "tree",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "autocomplete",
              "type": {
                "text": "'list' | 'none'"
              },
              "default": "'list'",
              "description": "The autocomplete behavior of the combobox. Each value is also the `aria-autocomplete` the input\nannounces.\n- `list` (default): typing filters the listbox to options that match the entered characters;\n  the typed string becomes the value unless the user selects an option.\n- `none`: the combobox is editable, but the listbox always shows all options regardless of\n  the characters typed.",
              "attribute": "autocomplete",
              "reflects": true,
              "parsedType": {
                "text": "'none' | 'list'"
              }
            },
            {
              "kind": "field",
              "name": "inputValue",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The current text value in the input field.",
              "attribute": "inputValue"
            },
            {
              "kind": "field",
              "name": "filter",
              "type": {
                "text": "((option: EdOption, query: string) => boolean) | null"
              },
              "default": "null",
              "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). Ignored in server mode, where the server decides what matches.",
              "parsedType": {
                "text": "null | {  }"
              }
            },
            {
              "kind": "field",
              "name": "server",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Puts the combobox in server mode without a `dataSource`: it filters nothing itself and asks for options\nthrough `ed-combobox-options-request`, answered by swapping the `<ed-option>` children and setting `loading`\nto false. A `dataSource` switches server mode on as well.",
              "attribute": "server",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "dataSource",
              "type": {
                "text": "EdComboboxDataSource | null"
              },
              "default": "null",
              "description": "Where a combobox in server mode gets its options from. Handed the query and an `AbortSignal`, it answers with\n`{ value, label, disabled? }` objects or `<ed-option>` elements, which replace the options shown. An answer a\nnewer request overtook is dropped; a failure is reported through `ed-combobox-options-error`.",
              "parsedType": {
                "text": "null | {  }"
              }
            },
            {
              "kind": "field",
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether options are being requested. Set as soon as a request is scheduled, the typing pause included; a\n`dataSource` clears it when its answer is in. With `server` alone, set it back to false once the options are\nswapped.",
              "attribute": "loading",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "optionsError",
              "type": {
                "text": "unknown"
              },
              "default": "null",
              "description": "Why the last request for options failed, or null; the panel then shows the `error` slot in place of the list.\nSet when a `dataSource` fails; with `server` alone, set it yourself. The next request sets it back to null.\nNot `error`, which every form control already uses for its validation message."
            },
            {
              "kind": "field",
              "name": "filterDebounce",
              "type": {
                "text": "number"
              },
              "default": "250",
              "description": "How long the typing rests before a server is asked for matching options, in milliseconds.",
              "attribute": "filter-debounce"
            },
            {
              "kind": "field",
              "name": "requestController",
              "type": {
                "text": "AbortController | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | { signal: { aborted: boolean, onabort: null | {  }, reason: any, throwIfAborted: {  }, addEventListener: {  }, removeEventListener: {  }, dispatchEvent: {  } }, abort: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "requestToken",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "requestTimer",
              "type": {
                "text": "ReturnType<typeof setTimeout> | undefined"
              },
              "privacy": "private",
              "parsedType": {
                "text": "{ close: {  }, hasRef: {  }, ref: {  }, refresh: {  }, unref: {  }, _onTimeout: {  }, __@toPrimitive@535: {  }, __@dispose@4064: {  } } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "requestedQuery",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "description": "The query of the request sent last, which tells the empty list from the one nothing matched."
            },
            {
              "kind": "field",
              "name": "requestFailed",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether the last `dataSource` request failed; `optionsError` alone cannot say so when a source rejects with nothing."
            },
            {
              "kind": "field",
              "name": "announcedStatus",
              "type": {
                "text": "ComboboxStatus | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "What the live region last said about the list, so that a status is not read out twice.",
              "parsedType": {
                "text": "null | 'error' | 'empty' | 'loading' | 'no-results'"
              }
            },
            {
              "kind": "field",
              "name": "answerPending",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether a request is out whose answer has not been announced. A flag rather than the `loading` transition: an\nevent-mode consumer answering inside the dispatch turns `loading` on and off within one update, which then\nreports no change at all."
            },
            {
              "kind": "field",
              "name": "settleWaiters",
              "type": {
                "text": "(() => void)[]"
              },
              "privacy": "private",
              "default": "[]",
              "description": "`reload()` calls waiting for the newest request to settle — its answer applied, or its failure."
            },
            {
              "kind": "field",
              "name": "defaultLabels",
              "privacy": "private",
              "default": "new Map<string, string>()",
              "description": "The labels of the default options, so that a form reset finds one an answer took out of the DOM."
            },
            {
              "kind": "field",
              "name": "scheduledQuery",
              "type": {
                "text": "string | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The query of a request waiting out the typing pause.",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "interruptedQuery",
              "type": {
                "text": "string | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The query of a request a removal cut off, sent again on reconnecting.",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "isServerMode",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether the combobox is in server mode. Not with `tree`, which a server answer has no hierarchy for.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "hasFailed",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "getTag",
              "type": {
                "text": "(option: EdOption, index: number) => TemplateResult | string | HTMLElement"
              },
              "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. Return a Lit `TemplateResult`, an `HTMLElement`, or a string (strings render as text and\nare auto-escaped — to render rich content, return a `TemplateResult` or build an `HTMLElement` yourself). For React,\nwrap JSX with the `jsxToHtml()` helper. For non-Lit vanilla JS, use the re-exported `html` tag."
            },
            {
              "kind": "method",
              "name": "updateDefaultValue",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "addOpenListeners",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "removeOpenListeners",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDocumentFocusIn",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleInputChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "any"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleDocumentKeyDown",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDocumentMouseDown",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleLabelClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleComboboxClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "#openAtPointerDown",
              "privacy": "private",
              "type": {
                "text": "boolean | null"
              },
              "default": "null",
              "description": "`open` as the pointer went down. The toggle runs on mouseup — `preventDefault()` on mousedown\nwould take text selection in the display input with it — and something else can close the\nlistbox in between: a focus trap that pulls focus onto an element of its own reaches\n`handleDocumentFocusIn`, which hides. Toggling the live value then reopens what the click was\nmeant to close.",
              "parsedType": {
                "text": "null | false | true"
              }
            },
            {
              "kind": "method",
              "name": "handleComboboxMouseDown",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleComboboxMouseUp",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleBlur",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "FocusEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleClearClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleClearMouseDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleOptionHover",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ],
              "description": "The pointer takes over the highlight while it is over the list. Hover and keyboard-current share\none state instead of being two independent ones, because they also share one visual treatment —\nside by side they read as two selected rows, and only one of them is what Enter would take.\nMatches the behavior of Windows, macOS, MUI, shadcn and Headless UI.\n\nDelegated on the surface rather than bound per option. The event is `mousemove`: `mouseenter` does\nnot bubble, and `mouseover` fires whenever the element under a *stationary* cursor changes — on\nopen, on scroll, on re-render — which would hand the highlight to whatever row the pointer happens\nto rest over and undo keyboard navigation. `mousemove` only fires on real pointer movement.\n\nRetargeting makes a hover anywhere in an option's own shadow root — the tree row, the chevron —\nresolve to that option, while a nested option resolves to itself."
            },
            {
              "kind": "method",
              "name": "handleSurfaceMouseLeave",
              "privacy": "private",
              "description": "Leaving the list drops the highlight, so the next arrow key starts from the top rather than from\nwherever the pointer happened to come to rest — which the user has no reason to remember."
            },
            {
              "kind": "method",
              "name": "handleOptionClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleFocus"
            },
            {
              "kind": "method",
              "name": "handleDefaultSlotChange",
              "privacy": "public"
            },
            {
              "kind": "method",
              "name": "processSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "keepSelectionAcrossAnswers",
              "privacy": "private",
              "description": "Server mode only: a selected option an answer left out stays selected, in the value and as its label, but\nnot in the list. With a `dataSource` the option itself is kept, hidden; where a consumer swapped the options,\na hidden stand-in takes its place, since putting their element back would fight their rendering. Once an\nanswer carries the value again, its option takes the selection over."
            },
            {
              "kind": "method",
              "name": "createStandIn",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdOption"
                }
              },
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "label",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "selected",
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "defaultValues",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string[]"
                }
              },
              "description": "The values a form reset returns to."
            },
            {
              "kind": "method",
              "name": "isKeptDefault",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "EdOption"
                  }
                }
              ],
              "description": "Server mode: whether a stand-in has to stay although nothing selects it, because a form reset returns to it."
            },
            {
              "kind": "method",
              "name": "rememberDefaultLabels",
              "privacy": "private",
              "description": "Records the labels of the default options while they are in the DOM."
            },
            {
              "kind": "method",
              "name": "dropUnusableCurrentOption",
              "privacy": "private",
              "description": "Typing can filter the highlighted option out, and a server answer can take it away: `aria-activedescendant` must\nnot point at a row the user cannot see (APG combobox), and Enter must not act on it."
            },
            {
              "kind": "method",
              "name": "handleTagRemove",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "EdRemoveEvent"
                  }
                },
                {
                  "name": "directOption",
                  "optional": true,
                  "type": {
                    "text": "EdOption"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getAllOptions",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getVisibleOptions"
            },
            {
              "kind": "method",
              "name": "handleTreeArrow",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ],
              "description": "Expansion and level movement for the horizontal arrows in tree mode. Returns false when the key\nis none of its business, so the caller can fall back to caret movement.\n\nDirection resolves through `:dir()` rather than the localize controller: an ancestor `dir=\"rtl\"`\nis invisible to `this.dir` and `<html dir>`, a trap already documented in ed-tree."
            },
            {
              "kind": "field",
              "name": "hasVisibleOptions",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether any option is on screen. Drives both the surface and the no-match message.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "getShownOptions",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdOption[]"
                }
              },
              "description": "Server mode: the options the list shows, disabled ones included. The answer is the list, so nothing is\nfiltered out — but a failed request puts its message in the list's place, and what an answer left out of a\nselection is never in it."
            },
            {
              "kind": "field",
              "name": "status",
              "type": {
                "text": "ComboboxStatus | null"
              },
              "privacy": "private",
              "description": "The message the panel shows in place of the list, or null while the list shows.",
              "readonly": true,
              "parsedType": {
                "text": "null | 'error' | 'empty' | 'loading' | 'no-results'"
              }
            },
            {
              "kind": "method",
              "name": "isRevealed",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "EdOption"
                  }
                }
              ],
              "description": "True when no ancestor option is collapsed or filtered out. Tree mode only."
            },
            {
              "kind": "method",
              "name": "ancestorsOf",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdOption[]"
                }
              },
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "EdOption"
                  }
                }
              ],
              "description": "The chain of option ancestors, nearest first."
            },
            {
              "kind": "method",
              "name": "getFirstVisibleOption"
            },
            {
              "kind": "method",
              "name": "updateFilteredOptions"
            },
            {
              "kind": "method",
              "name": "filterTree",
              "privacy": "private",
              "parameters": [
                {
                  "name": "allOptions",
                  "type": {
                    "text": "EdOption[]"
                  }
                }
              ],
              "description": "Filters the hierarchy in place. A node is visible when it matches itself or when any descendant\ndoes, so the path to a match stays on screen.\n\nVisibility is composite rather than per-node: a hidden ancestor hides its subtree by containment,\nwhich is why matches are collected first and the ancestor chain is opened afterwards."
            },
            {
              "kind": "method",
              "name": "snapshotExpansion",
              "privacy": "private",
              "description": "Records every option's expanded state once per query session. Filtering force-opens the ancestors\nof matches, which overwrites the user's own expansion — so it has to be remembered here rather\nthan read back off the elements."
            },
            {
              "kind": "method",
              "name": "revealSelectedNode",
              "privacy": "private",
              "description": "Opens the path to the picked node when the list opens on its label. That label no longer filters, so\nthe tree shows the user's own expansion, and the node would otherwise sit behind a collapsed parent.\nOnly on opening: the user may collapse the path again while the list is open."
            },
            {
              "kind": "method",
              "name": "restoreExpansion",
              "privacy": "private",
              "description": "Puts the user's expansion back after the query clears."
            },
            {
              "kind": "method",
              "name": "setCurrentOption",
              "privacy": "private",
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "EdOption | null"
                  }
                },
                {
                  "name": "{ scroll = true }",
                  "default": "{}",
                  "type": {
                    "text": "{ scroll?: boolean }"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "setSelectedOptions",
              "privacy": "private",
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "EdOption | EdOption[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "toggleOptionSelection",
              "privacy": "private",
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "EdOption"
                  }
                },
                {
                  "name": "force",
                  "optional": true,
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "commitCustomValue",
              "privacy": "private",
              "description": "Commits the typed text as a custom value: in multiple mode as a tag (backed by a generated\noption), in single mode as the value. Used by the Enter handler."
            },
            {
              "kind": "method",
              "name": "getOrCreateCustomOption",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdOption"
                }
              },
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Returns the option matching the given value. For custom values (allow-custom-value) a light-DOM\noption marked `data-custom-option` is generated so tags, Backspace removal, filtering and value\naggregation run through the regular option paths. Generated options are removed on deselection."
            },
            {
              "kind": "method",
              "name": "announceOption",
              "privacy": "private",
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "EdOption"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "announceFilterResults",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "selectionChanged",
              "privacy": "public"
            },
            {
              "kind": "method",
              "name": "announceServerState",
              "privacy": "private",
              "description": "Server mode: the live region reads out an answer once it is in — the count, or the message shown in place\nof the list — and a message that appears on its own, as the loading one does while nothing is shown yet."
            },
            {
              "kind": "method",
              "name": "statusText",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "status",
                  "type": {
                    "text": "ComboboxStatus"
                  }
                }
              ],
              "description": "The text a status reads out: what its slot holds, else the default."
            },
            {
              "kind": "method",
              "name": "defaultStatusText",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "status",
                  "type": {
                    "text": "ComboboxStatus"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "mutable",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether a user gesture may change the value. WHATWG HTML: a readonly control is \"not mutable\".\nEvery keyboard write answers to this rather than to `this.open` alone — `open` is public API\nand can be set past the readonly guard in `show()`, which leaves those branches reachable.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "show",
              "description": "Shows the listbox."
            },
            {
              "kind": "method",
              "name": "hide",
              "description": "Hides the listbox."
            },
            {
              "kind": "method",
              "name": "reload",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "description": "Asks the server again for the options, with the text typed since the list opened, or an empty query. With a\n`dataSource` it resolves once the newest answer is applied — where typing overtakes this request, that is the\nanswer to the typing — or once that request fails, which is reported through `ed-combobox-options-error`\ninstead of rejecting. With `server` alone it resolves right after `ed-combobox-options-request`. Removing the\ncombobox resolves it as well. Outside server mode it resolves at once."
            },
            {
              "kind": "method",
              "name": "settleRequests",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "requestAfterInputCleared",
              "privacy": "private",
              "description": "Requests options for a field the combobox emptied itself while the list is open, as a pick in `multiple` mode\nor the clear button does. Without it the list would go on showing what the text it no longer holds matched."
            },
            {
              "kind": "method",
              "name": "scheduleRequest",
              "privacy": "private",
              "parameters": [
                {
                  "name": "query",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "{ debounce = false }",
                  "default": "{}",
                  "type": {
                    "text": "{ debounce?: boolean }"
                  }
                }
              ],
              "description": "Sends a request for options at once, or once the typing rests."
            },
            {
              "kind": "method",
              "name": "sendRequest",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "parameters": [
                {
                  "name": "query",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Sends one request for options, overtaking whichever is out. Never rejects: a failure is what `optionsError`, the\n`error` slot and `ed-combobox-options-error` are for."
            },
            {
              "kind": "method",
              "name": "applyAnswer",
              "privacy": "private",
              "parameters": [
                {
                  "name": "answer",
                  "type": {
                    "text": "EdComboboxDataSourceResult | null | undefined"
                  }
                }
              ],
              "description": "Replaces the options with a `dataSource` answer. Only `ed-option` children are touched: the label, hint and\nstatus slots are filled from the same light DOM."
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the control."
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the control."
            },
            {
              "kind": "method",
              "name": "formResetCallback"
            },
            {
              "kind": "method",
              "name": "renderStatus",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "attribute": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "attribute": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "attribute": "ai",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "attribute": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "attribute": "name",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#fieldsetDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set by `formDisabledCallback`, i.e. an ancestor `<fieldset>`. Never written by a consumer.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#ownDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The disabled state this element was given directly, via its property or its attribute.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "attribute": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOnMode",
              "type": {
                "text": "'combined' | 'separated' | string"
              },
              "default": "'combined'",
              "parsedType": {
                "text": "string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "text": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "parsedType": {
                "text": "HTMLElement & { value: unknown } | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "valueHasChanged",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasInteracted",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_customValidityMessage",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_isCheckingValidity",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set while `checkValidity()` is executing so the `invalid` event handler can distinguish\na programmatic check (no UI side-effects per spec) from `reportValidity()` / native form\nsubmission (which should surface the error UI and focus the first invalid control).",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emittedEvents",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "states",
              "type": {
                "text": "CustomStateSet"
              },
              "parsedType": {
                "text": "any"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleSubmitOnEnter",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleClearOnEscape",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emitInvalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleInteraction",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "labels",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getForm",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "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": {
                "text": "HTMLFormElement | null"
              },
              "parsedType": {
                "text": "null | HTMLFormElement"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validity",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "willValidate",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationMessage",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "checkValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValidity",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setValidity>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "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.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setFormValue>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "allValidators",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "resetValidity",
              "description": "Reset validity is a way of removing manual custom errors and native validation.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "name": "input",
              "type": {
                "text": "InputEvent"
              },
              "description": "Emitted when the control receives input.",
              "reactName": "onInput",
              "eventName": "InputEvent"
            },
            {
              "name": "change",
              "type": {
                "text": "Event"
              },
              "description": "Emitted when the control's value changes.",
              "reactName": "onChange",
              "eventName": "ChangeEvent"
            },
            {
              "description": "Emitted when the control gains focus.",
              "name": "focus",
              "reactName": "onFocus",
              "eventName": "FocusEvent"
            },
            {
              "description": "Emitted when the control loses focus.",
              "name": "blur",
              "reactName": "onBlur",
              "eventName": "BlurEvent"
            },
            {
              "description": "Emitted when the control's value is cleared.",
              "name": "ed-clear",
              "reactName": "onEdClear",
              "eventName": "EdClearEvent"
            },
            {
              "description": "Emitted when the select's menu opens. Cancelable; calling `preventDefault()` keeps it closed.",
              "name": "ed-show",
              "reactName": "onEdShow",
              "eventName": "EdShowEvent"
            },
            {
              "description": "Emitted after the select's menu opens and all animations are complete.",
              "name": "ed-after-show",
              "reactName": "onEdAfterShow",
              "eventName": "EdAfterShowEvent"
            },
            {
              "description": "Emitted when the select's menu closes. Cancelable; calling `preventDefault()` keeps it open.",
              "name": "ed-hide",
              "reactName": "onEdHide",
              "eventName": "EdHideEvent"
            },
            {
              "description": "Emitted after the select's menu closes and all animations are complete.",
              "name": "ed-after-hide",
              "reactName": "onEdAfterHide",
              "eventName": "EdAfterHideEvent"
            },
            {
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied.",
              "name": "ed-invalid",
              "reactName": "onEdInvalid",
              "eventName": "EdInvalidEvent"
            },
            {
              "type": {
                "text": "EdComboboxOptionsRequestEvent"
              },
              "description": "Emitted in server mode whenever options are requested: when the list opens, with an empty query; once the typing rests, with the typed text; and on `reload()`. The detail is `{ query, signal }`; the signal aborts once a newer request overtakes it. Emitted with a `dataSource` as well. With `server` alone, answer it by swapping the `<ed-option>` children and setting `loading` to false.",
              "name": "ed-combobox-options-request",
              "reactName": "onEdComboboxOptionsRequest",
              "eventName": "EdComboboxOptionsRequestEvent"
            },
            {
              "type": {
                "text": "EdComboboxOptionsErrorEvent"
              },
              "description": "Emitted when the `dataSource` fails a request that is still current. The detail is `{ error, request: { query } }`.",
              "name": "ed-combobox-options-error",
              "reactName": "onEdComboboxOptionsError",
              "eventName": "EdComboboxOptionsErrorEvent"
            }
          ],
          "attributes": [
            {
              "name": "value",
              "description": "The select's value. This will be a string for single select or an array for multi-select.",
              "fieldName": "value"
            },
            {
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "Controls the component's spacing density without affecting font-size.",
              "fieldName": "density",
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "name": "placeholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder text to show as a hint when the select is empty.",
              "fieldName": "placeholder"
            },
            {
              "name": "multiple",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allows more than one option to be selected.",
              "fieldName": "multiple"
            },
            {
              "name": "max-options-visible",
              "type": {
                "text": "number"
              },
              "default": "3",
              "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.",
              "fieldName": "maxOptionsVisible"
            },
            {
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows a value the user cannot change. Unlike `disabled`, the control stays focusable and its value is still\nsubmitted with the form; the listbox does not open, and nothing empties the value.",
              "fieldName": "readonly"
            },
            {
              "name": "with-clear",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Adds a clear button when the select is not empty.",
              "fieldName": "withClear"
            },
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "open"
            },
            {
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style select with rounded edges.",
              "fieldName": "pill"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The select's label. If you need to display HTML, use the `label` slot instead.",
              "fieldName": "label"
            },
            {
              "name": "aria-label",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The combobox's accessible name for when no visible label is set. Mirrored onto the internal\ndisplay input, where the combobox role lives — an aria-label left on the host alone would\nsit on a role-less element and be ignored by assistive tech. A visible label wins when both\nare present (aria-labelledby precedes aria-label in accessible-name computation).",
              "fieldName": "ariaLabel",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "placement",
              "type": {
                "text": "'top' | 'bottom'"
              },
              "default": "'bottom'",
              "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.",
              "fieldName": "placement",
              "parsedType": {
                "text": "'top' | 'bottom'"
              }
            },
            {
              "name": "with-label",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Used for SSR purposes when a label is slotted in. Will show the label on first render.",
              "fieldName": "withLabel"
            },
            {
              "name": "with-hint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Used for SSR purposes when hint is slotted in. Will show the hint on first render.",
              "fieldName": "withHint"
            },
            {
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The select's required attribute.",
              "fieldName": "required"
            },
            {
              "name": "no-results-label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The text shown in the listbox when no option matches the current input. Defaults to a localized label.\nTo render custom markup instead, use the `no-results` slot.",
              "fieldName": "noResultsLabel"
            },
            {
              "name": "allow-custom-value",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, allows the user to enter a value that doesn't match any of the options. In single mode the typed\nvalue is committed with Enter or when the field loses focus. When `multiple` is set, Enter turns the typed\ntext into a tag (backed by a generated light-DOM option marked `data-custom-option`). When false, the\ncombobox only accepts values that match an option.",
              "fieldName": "allowCustomValue"
            },
            {
              "name": "tree",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Renders the popup as a hierarchy instead of a flat list. Nest `<ed-option>` elements to any depth;\nparents expand and collapse, and every node stays selectable.\n\nNesting is only supported with this attribute set — without it there is no children slot for\nnested options to project into. Typing filters the tree in place: a parent stays visible while any\ndescendant matches.\n\nNot combinable with `allow-custom-value` (a typed string has no position in a hierarchy) or\n`autocomplete=\"none\"`; both are ignored with a warning.",
              "fieldName": "tree"
            },
            {
              "name": "autocomplete",
              "type": {
                "text": "'list' | 'none'"
              },
              "default": "'list'",
              "description": "The autocomplete behavior of the combobox. Each value is also the `aria-autocomplete` the input\nannounces.\n- `list` (default): typing filters the listbox to options that match the entered characters;\n  the typed string becomes the value unless the user selects an option.\n- `none`: the combobox is editable, but the listbox always shows all options regardless of\n  the characters typed.",
              "fieldName": "autocomplete",
              "parsedType": {
                "text": "'none' | 'list'"
              }
            },
            {
              "name": "inputValue",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The current text value in the input field.",
              "fieldName": "inputValue"
            },
            {
              "name": "server",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Puts the combobox in server mode without a `dataSource`: it filters nothing itself and asks for options\nthrough `ed-combobox-options-request`, answered by swapping the `<ed-option>` children and setting `loading`\nto false. A `dataSource` switches server mode on as well.",
              "fieldName": "server"
            },
            {
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether options are being requested. Set as soon as a request is scheduled, the typing pause included; a\n`dataSource` clears it when its answer is in. With `server` alone, set it back to false once the options are\nswapped.",
              "fieldName": "loading"
            },
            {
              "name": "filter-debounce",
              "type": {
                "text": "number"
              },
              "default": "250",
              "description": "How long the typing rests before a server is asked for matching options, in milliseconds.",
              "fieldName": "filterDebounce"
            },
            {
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "fieldName": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "fieldName": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "fieldName": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "fieldName": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "fieldName": "name",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "fieldName": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "The select is empty.",
              "name": "blank"
            },
            {
              "description": "The combobox is disabled.",
              "name": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Options are being requested.",
              "name": "loading"
            },
            {
              "description": "The control is required.",
              "name": "required",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is not required.",
              "name": "optional",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value fails constraint validation, whether or not the user has touched the control yet.",
              "name": "invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value passes constraint validation.",
              "name": "valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Invalid, and the user has interacted with the control. This is the one to style for an error: it behaves like the platform's `:user-invalid`, so an untouched field is not marked wrong before the user has had a chance to fill it in.",
              "name": "user-invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Valid, and the user has interacted with the control.",
              "name": "user-valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The user has interacted with the control.",
              "name": "dirty",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `error` property is set, or the control is `user-invalid`.",
              "name": "error",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `warning` property is set.",
              "name": "warning",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `ai` property is set and the user has not interacted with the control yet.",
              "name": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdFormAssociatedElement",
            "module": "/src/internal/ed-form-associated-element.js"
          },
          "summary": "Comboboxes combine a text input with a listbox, allowing users to filter and select from predefined options or enter custom values.",
          "jsDoc": "/**\n * @summary Comboboxes combine a text input with a listbox, allowing users to filter and select from predefined options or enter custom values.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/combobox\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…').getByRole('combobox')\n *\n * @dependency ed-icon\n * @dependency ed-option\n * @dependency ed-popup\n * @dependency ed-badge\n *\n * @slot - The listbox options. Must be `<ed-option>` elements. You can use `<ed-divider>` to group items visually.\n *  With `tree`, options may be nested to any depth to form a hierarchy.\n * @slot label - The input's label. Alternatively, you can use the `label` attribute.\n * @slot start - An element, such as `<ed-icon>`, placed at the start of the combobox.\n * @slot end - An element, such as `<ed-icon>`, placed at the end of the combobox.\n * @slot clear-icon - An icon to use in lieu of the default clear icon.\n * @slot no-results - Content shown when no option matches the current input. Rendered outside the listbox, because an inert hint is not a selectable option. Alternatively, use the no-results-label attribute for plain text.\n * @slot empty - Content shown in server mode when the server has no options for an empty query. Its text is announced.\n * @slot loading - Content shown in server mode while options are being requested and none are showing. Its text is announced.\n * @slot error - Content shown in server mode when the last request for options failed, in place of the list. Its text is announced.\n * @slot expand-icon - The icon to show when the control is expanded and collapsed. Rotates on open and close.\n * @slot hint - Text that describes how to use the input. Alternatively, you can use the `hint` attribute.\n *\n * @event input - Emitted when the control receives input.\n * @event change - Emitted when the control's value changes.\n * @event focus - Emitted when the control gains focus.\n * @event blur - Emitted when the control loses focus.\n * @event ed-clear - Emitted when the control's value is cleared.\n * @event ed-show - Emitted when the select's menu opens.\n *  Cancelable; calling `preventDefault()` keeps it closed.\n * @event ed-after-show - Emitted after the select's menu opens and all animations are complete.\n * @event ed-hide - Emitted when the select's menu closes.\n *  Cancelable; calling `preventDefault()` keeps it open.\n * @event ed-after-hide - Emitted after the select's menu closes and all animations are complete.\n * @event ed-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n * @event {EdComboboxOptionsRequestEvent} ed-combobox-options-request - Emitted in server mode whenever options are requested: when the list opens, with an empty query; once the typing rests, with the typed text; and on `reload()`. The detail is `{ query, signal }`; the signal aborts once a newer request overtakes it. Emitted with a `dataSource` as well. With `server` alone, answer it by swapping the `<ed-option>` children and setting `loading` to false.\n * @event {EdComboboxOptionsErrorEvent} ed-combobox-options-error - Emitted when the `dataSource` fails a request that is still current. The detail is `{ error, request: { query } }`.\n *\n * @csspart form-control - The form control that wraps the label, input, and hint.\n * @csspart form-control-label - The label's wrapper.\n * @csspart form-control-input - The select's wrapper.\n * @csspart message - The state message: an error, a warning, or the AI note.\n * @csspart hint - The hint's wrapper.\n * @csspart combobox - The container the wraps the start, end, value, clear icon, and expand button.\n * @csspart base - The bordered field box. An alias for `input`, so a selector written against\n *   another form control reaches the same element here.\n * @csspart input - The element carrying the field's border and background.\n * @csspart expand-icon-slot - The slot holding the expand icon.\n * @csspart start - The container that wraps the `start` slot.\n * @csspart end - The container that wraps the `end` slot.\n * @csspart display-input - The element that displays the selected option's label, an `<input>` element.\n * @csspart panel - The floating surface, carrying the frame, background and shadow. It holds the option list\n *   while something matches and the no-match message once nothing does, so one selector reaches the dropdown\n *   in either state. Sizing it past the field's own width is not corrected when the field sits near a viewport\n *   edge: the popup is positioned on its own box, which `sync=\"width\"` pins to the field, so collision\n *   handling never sees the wider child.\n * @csspart listbox - The scrolling list of options inside the panel. Use it for the list itself — its height,\n *   or how far it scrolls — rather than for the dropdown's framing. A height belongs here and not on `panel`:\n *   the panel clips to its own corners, so limiting its height cuts options off instead of scrolling them.\n * @csspart listbox-tree - Added to the list when `tree` is set and it carries role=\"tree\".\n * @csspart status - The message sitting in the panel in place of the list, whichever it is. Also carries the part of its kind.\n * @csspart no-results - The message shown when nothing matches, sitting in the panel in place of the list.\n * @csspart empty - The message shown in server mode when there are no options for an empty query.\n * @csspart loading - The message shown in server mode while options load and none are showing.\n * @csspart error - The message shown in server mode when the last request for options failed.\n * @csspart tags - The container that houses option tags when `multiselect` is used.\n * @csspart tag - The individual tags that represent each multiselect option.\n * @csspart tag__base - The tag's exported `base` part, the badge's surface.\n * @csspart tag__remove-icon - The tag's exported `remove-icon` part, the `<button>` that removes the option.\n * @csspart clear-button - The clear button.\n * @csspart expand-icon - The container that wraps the expand icon.\n *\n * @cssproperty [--ed-show-duration=var(--ed-transition-fast)] - The duration of the show animation.\n * @cssproperty [--ed-hide-duration=var(--ed-transition-fast)] - The duration of the hide animation.\n * @cssproperty [--ed-combobox-tag-max-size=10ch] - When using `multiple`, the max size of tags before their content is truncated.\n *\n * @cssstate blank - The select is empty.\n * @cssstate disabled - The combobox is disabled.\n * @cssstate loading - Options are being requested.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/combobox",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('combobox')",
          "dependencies": [
            "ed-icon",
            "ed-option",
            "ed-popup",
            "ed-badge"
          ],
          "tagName": "ed-combobox",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdCombobox",
            "module": "components/combobox/combobox.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-combobox",
          "declaration": {
            "name": "EdCombobox",
            "module": "components/combobox/combobox.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/copy-button/copy-button.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdCopyButton",
          "cssParts": [
            {
              "description": "The internal `<button>` element.",
              "name": "button"
            },
            {
              "description": "The container that holds the copy icon.",
              "name": "copy-icon"
            },
            {
              "description": "The container that holds the success icon.",
              "name": "success-icon"
            },
            {
              "description": "The container that holds the error icon.",
              "name": "error-icon"
            },
            {
              "description": "The internal `<ed-tooltip>` of the default trigger. With a slotted trigger the tooltip is a light-DOM child, which `::part()` does not reach — select it as `ed-copy-button > ed-tooltip[data-copy-button-tooltip]`.",
              "name": "feedback"
            }
          ],
          "slots": [
            {
              "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 `<ed-button>` or `<button>`.",
              "name": ""
            },
            {
              "description": "The icon to show in the default copy state. Works best with `<ed-icon>`.",
              "name": "copy-icon"
            },
            {
              "description": "The icon to show when the content is copied. Works best with `<ed-icon>`.",
              "name": "success-icon"
            },
            {
              "description": "The icon to show when a copy error occurs. Works best with `<ed-icon>`.",
              "name": "error-icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, '[default]')"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "copyIcon",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "successIcon",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "errorIcon",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "shadowTooltip",
              "type": {
                "text": "EdTooltip"
              }
            },
            {
              "kind": "field",
              "name": "isCopying",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "status",
              "type": {
                "text": "'rest' | 'success' | 'error'"
              },
              "default": "'rest'",
              "parsedType": {
                "text": "'error' | 'success' | 'rest'"
              }
            },
            {
              "kind": "field",
              "name": "liveAnnouncement",
              "type": {
                "text": "string"
              },
              "default": "''"
            },
            {
              "kind": "field",
              "name": "customTriggerEl",
              "type": {
                "text": "HTMLElement | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "lightTooltip",
              "type": {
                "text": "EdTooltip | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | default"
              }
            },
            {
              "kind": "field",
              "name": "feedbackTimeout",
              "type": {
                "text": "number | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | number"
              }
            },
            {
              "kind": "field",
              "name": "activeTooltip",
              "type": {
                "text": "EdTooltip | null"
              },
              "privacy": "private",
              "readonly": true,
              "parsedType": {
                "text": "null | default"
              }
            },
            {
              "kind": "field",
              "name": "currentLabel",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The text value to copy.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "from",
              "type": {
                "text": "string"
              },
              "default": "''",
              "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\"`.",
              "attribute": "from"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the copy button.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "copyLabel",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A custom label to use as the accessible name and tooltip text in the default copy state.",
              "attribute": "copy-label"
            },
            {
              "kind": "field",
              "name": "successLabel",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A custom label to show in the tooltip after copying.",
              "attribute": "success-label"
            },
            {
              "kind": "field",
              "name": "errorLabel",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A custom label to show in the tooltip when a copy error occurs.",
              "attribute": "error-label"
            },
            {
              "kind": "field",
              "name": "feedbackDuration",
              "type": {
                "text": "number"
              },
              "default": "1000",
              "description": "The length of time to show feedback before restoring the default trigger.",
              "attribute": "feedback-duration"
            },
            {
              "kind": "field",
              "name": "tooltipPlacement",
              "type": {
                "text": "'top' | 'right' | 'bottom' | 'left'"
              },
              "default": "'top'",
              "description": "The preferred placement of the tooltip.",
              "attribute": "tooltip-placement",
              "reflects": true,
              "parsedType": {
                "text": "'left' | 'right' | 'top' | 'bottom'"
              }
            },
            {
              "kind": "field",
              "name": "tooltip",
              "type": {
                "text": "'full' | 'copy' | 'none'"
              },
              "default": "'full'",
              "description": "Controls the built-in tooltip. `full` (default) shows the tooltip on hover and focus and during copy feedback.\n`copy` keeps the tooltip silent on hover/focus and only shows it briefly to confirm a successful or failed copy.\n`none` disables the tooltip entirely. Applies to both the default and custom triggers.",
              "attribute": "tooltip",
              "reflects": true,
              "parsedType": {
                "text": "'copy' | 'none' | 'full'"
              }
            },
            {
              "kind": "field",
              "name": "handleDefaultSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "releaseAssignedId",
              "privacy": "private",
              "parameters": [
                {
                  "name": "el",
                  "type": {
                    "text": "HTMLElement | null"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "ensureLightTooltip",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "removeLightTooltip",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "syncTooltipText",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleCopy",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "showStatus",
              "privacy": "private",
              "parameters": [
                {
                  "name": "status",
                  "type": {
                    "text": "'success' | 'error'"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ value: string }"
              },
              "description": "Emitted when the data has been copied.",
              "name": "ed-copy",
              "reactName": "onEdCopy",
              "eventName": "EdCopyEvent"
            },
            {
              "description": "Emitted when the data could not be copied.",
              "name": "ed-error",
              "reactName": "onEdError",
              "eventName": "EdErrorEvent"
            }
          ],
          "attributes": [
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The text value to copy.",
              "fieldName": "value"
            },
            {
              "name": "from",
              "type": {
                "text": "string"
              },
              "default": "''",
              "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\"`.",
              "fieldName": "from"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the copy button.",
              "fieldName": "disabled"
            },
            {
              "name": "copy-label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A custom label to use as the accessible name and tooltip text in the default copy state.",
              "fieldName": "copyLabel"
            },
            {
              "name": "success-label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A custom label to show in the tooltip after copying.",
              "fieldName": "successLabel"
            },
            {
              "name": "error-label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A custom label to show in the tooltip when a copy error occurs.",
              "fieldName": "errorLabel"
            },
            {
              "name": "feedback-duration",
              "type": {
                "text": "number"
              },
              "default": "1000",
              "description": "The length of time to show feedback before restoring the default trigger.",
              "fieldName": "feedbackDuration"
            },
            {
              "name": "tooltip-placement",
              "type": {
                "text": "'top' | 'right' | 'bottom' | 'left'"
              },
              "default": "'top'",
              "description": "The preferred placement of the tooltip.",
              "fieldName": "tooltipPlacement",
              "parsedType": {
                "text": "'left' | 'right' | 'top' | 'bottom'"
              }
            },
            {
              "name": "tooltip",
              "type": {
                "text": "'full' | 'copy' | 'none'"
              },
              "default": "'full'",
              "description": "Controls the built-in tooltip. `full` (default) shows the tooltip on hover and focus and during copy feedback.\n`copy` keeps the tooltip silent on hover/focus and only shows it briefly to confirm a successful or failed copy.\n`none` disables the tooltip entirely. Applies to both the default and custom triggers.",
              "fieldName": "tooltip",
              "parsedType": {
                "text": "'copy' | 'none' | 'full'"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "Applied when the copy operation succeeds.",
              "name": "success"
            },
            {
              "description": "Applied when the copy operation fails.",
              "name": "error"
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Copy buttons copy text to the clipboard when the user activates them. They provide built-in success and\nerror feedback so users know the copy worked.",
          "jsDoc": "/**\n * @summary Copy buttons copy text to the clipboard when the user activates them. They provide built-in success and\n *  error feedback so users know the copy worked.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/copy-button\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…').getByRole('button')\n *\n * @dependency ed-icon\n * @dependency ed-tooltip\n *\n * @event {{ value: string }} ed-copy - Emitted when the data has been copied.\n * @event ed-error - Emitted when the data could not be copied.\n *\n * @slot - The trigger element. By default, a copy icon button is rendered so this is optional. If desired, you can slot\n *  in a custom element such as `<ed-button>` or `<button>`.\n * @slot copy-icon - The icon to show in the default copy state. Works best with `<ed-icon>`.\n * @slot success-icon - The icon to show when the content is copied. Works best with `<ed-icon>`.\n * @slot error-icon - The icon to show when a copy error occurs. Works best with `<ed-icon>`.\n *\n * @cssstate success - Applied when the copy operation succeeds.\n * @cssstate error - Applied when the copy operation fails.\n *\n * @csspart button - The internal `<button>` element.\n * @csspart copy-icon - The container that holds the copy icon.\n * @csspart success-icon - The container that holds the success icon.\n * @csspart error-icon - The container that holds the error icon.\n * @csspart feedback - The internal `<ed-tooltip>` of the default trigger. With a slotted trigger the tooltip is a\n *   light-DOM child, which `::part()` does not reach — select it as `ed-copy-button > ed-tooltip[data-copy-button-tooltip]`.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/copy-button",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('button')",
          "dependencies": [
            "ed-icon",
            "ed-tooltip"
          ],
          "tagName": "ed-copy-button",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdCopyButton",
            "module": "components/copy-button/copy-button.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-copy-button",
          "declaration": {
            "name": "EdCopyButton",
            "module": "components/copy-button/copy-button.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/data-grid/column-reorder.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Moving a column by dragging its header.\n\nThe press waits for the threshold before it becomes a drag, so a click still sorts. While it runs,\nthe columns between the column's old and new place slide aside to open a gap, a label naming the\ncolumn follows the pointer, and the grid scrolls on its own near its edges. The drop lets the label\nsettle into the gap before the order is written; a cancelled gesture puts everything back.\n\nThe template's gesture, built here rather than copied.",
          "name": "ColumnReorderController",
          "members": [
            {
              "kind": "field",
              "name": "host",
              "type": {
                "text": "ColumnReorderHost"
              },
              "privacy": "private",
              "readonly": true,
              "default": "host"
            },
            {
              "kind": "field",
              "name": "pointerId",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "-1"
            },
            {
              "kind": "field",
              "name": "startX",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "columnId",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "pending",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "dragging",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "settling",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "ids",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "slots",
              "privacy": "private",
              "default": "new Map<string, Slot>()"
            },
            {
              "kind": "field",
              "name": "from",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "-1"
            },
            {
              "kind": "field",
              "name": "to",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "-1"
            },
            {
              "kind": "field",
              "name": "lastX",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "lastY",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "frame",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "scrollFrame",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "scrollStep",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "HTMLElement | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "previewed",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether a preview was reported, which is what makes an end owed."
            },
            {
              "kind": "method",
              "name": "hostDisconnected",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "field",
              "name": "isDragging",
              "type": {
                "text": "boolean"
              },
              "description": "Whether a drag is running or settling. The grid stamps the offsets again after a render while it\nis, or a render during the drop would snap the columns back before the label arrives.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "press",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "PointerEvent"
                  }
                },
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "A press on a header: remembered, and made a drag once the pointer has traveled far enough."
            },
            {
              "kind": "method",
              "name": "stampOffsets",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Puts every column where the drag currently shows it. A render replaces the style the offsets live\nin, so the grid calls this after each one while a drag runs."
            },
            {
              "kind": "field",
              "name": "handleMove",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "handleUp",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "handleCancel",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "begin",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "showLabel",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "placeLabel",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Just below and after the pointer, so it does not sit under it."
            },
            {
              "kind": "method",
              "name": "schedule",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "follow",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Where the pointer is now: which place it points at, the offsets, the label, and a preview."
            },
            {
              "kind": "method",
              "name": "gapOffset",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "description": "How far the dragged column has to travel to stand in the gap."
            },
            {
              "kind": "method",
              "name": "offset",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "pixels",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "scrollNearEdges",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Scrolls the grid sideways while the pointer sits near one of its inline edges, faster the nearer."
            },
            {
              "kind": "method",
              "name": "drop",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "The drop: the label settles into the gap, then the order is written."
            },
            {
              "kind": "method",
              "name": "dropPoint",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "{ x: number; y: number } | null"
                }
              },
              "description": "Where on screen the gap starts, for the label to settle into."
            },
            {
              "kind": "method",
              "name": "cancel",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Lets go of everything without writing an order: a cancelled gesture, or the grid going away."
            },
            {
              "kind": "method",
              "name": "clearOffsets",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "hideLabel",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "stopFrames",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "stopListening",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "reset",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            }
          ],
          "jsDoc": "/**\n * Moving a column by dragging its header.\n *\n * The press waits for the threshold before it becomes a drag, so a click still sorts. While it runs,\n * the columns between the column's old and new place slide aside to open a gap, a label naming the\n * column follows the pointer, and the grid scrolls on its own near its edges. The drop lets the label\n * settle into the gap before the order is written; a cancelled gesture puts everything back.\n *\n * The template's gesture, built here rather than copied.\n */"
        },
        {
          "kind": "function",
          "name": "move",
          "return": {
            "type": {
              "text": "string[]"
            }
          },
          "parameters": [
            {
              "name": "ids",
              "type": {
                "text": "string[]"
              }
            },
            {
              "name": "from",
              "type": {
                "text": "number"
              }
            },
            {
              "name": "to",
              "type": {
                "text": "number"
              }
            }
          ],
          "description": "The list with one entry taken out and put back at another place."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "ColumnReorderController",
          "declaration": {
            "name": "ColumnReorderController",
            "module": "components/data-grid/column-reorder.js"
          }
        },
        {
          "kind": "js",
          "name": "move",
          "declaration": {
            "name": "move",
            "module": "components/data-grid/column-reorder.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/row-virtualizer.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Renders a slice of the rows instead of all of them.\n\nWritten against `@tanstack/virtual-core` rather than a framework adapter, for the same reason the\ntable binding is: the adapter is a subscription and a render request, and this host already has\nboth.\n\nThe slice stays **in normal flow** between two spacers rather than being positioned at computed\noffsets. Block 0 measured that choice across five layouts and three engines: a row that turns out\ntaller than estimated pushes the ones after it, where a positioned row would overlap them. A wrong\nestimate therefore costs scroll accuracy here, not a broken page.",
          "name": "RowVirtualizerController",
          "members": [
            {
              "kind": "field",
              "name": "host",
              "type": {
                "text": "ReactiveControllerHost"
              },
              "privacy": "private",
              "readonly": true,
              "default": "host"
            },
            {
              "kind": "field",
              "name": "options",
              "type": {
                "text": "RowVirtualizerOptions"
              },
              "privacy": "private",
              "readonly": true,
              "default": "options"
            },
            {
              "kind": "field",
              "name": "virtualizer",
              "type": {
                "text": "Virtualizer<Element, Element>"
              },
              "privacy": "private",
              "readonly": true,
              "default": "new Virtualizer(this.virtualizerOptions(0))"
            },
            {
              "kind": "field",
              "name": "cleanup",
              "type": {
                "text": "(() => void) | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | {  }"
              }
            },
            {
              "kind": "method",
              "name": "hostConnected",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "hostDisconnected",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "window",
              "return": {
                "type": {
                  "text": "RowWindow"
                }
              },
              "parameters": [
                {
                  "name": "count",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "The rows to render for a dataset of `count`, read during the host's render.\n\n`_willUpdate` is what lets the virtualizer notice a scroll element that has appeared, or a\ncontainer that has changed size, before its answer is used."
            },
            {
              "kind": "method",
              "name": "scrollToIndex",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "{ align?: 'start' | 'center' | 'end' | 'auto'; behavior?: 'auto' | 'smooth' }"
                  }
                }
              ],
              "description": "Brings a row into view by its position in the data.\n\n`_willUpdate` first, because it is what adopts the scroll element: a consumer who calls this right\nafter handing over the data would otherwise be scrolling a virtualizer that has not yet found\nanything to scroll, and nothing would move."
            },
            {
              "kind": "method",
              "name": "measureRow",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "node",
                  "type": {
                    "text": "Element | undefined"
                  }
                }
              ],
              "description": "Watches one row's height, so a row taller than the estimate keeps its real size once it has been\nseen — and keeps it after it scrolls out of the window, which is when a forgotten height shows as\na scroll range that shrinks under the reader.\n\nThe node has to carry `data-index`; that attribute is how the virtualizer knows which row it just\nmeasured. Passing nothing lets it drop the rows that have left the page."
            },
            {
              "kind": "method",
              "name": "resizeRow",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "size",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Sets one row's size without measuring it — for a row outside the window whose height changed\nwhere nothing can see it, a detail panel closed there."
            },
            {
              "kind": "method",
              "name": "indexAtDistance",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "distance",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "The row standing `distance` further down the rows than the start of the row at `index`, or up for\na negative distance, by the heights measured and estimated — the owner's where the offset falls in\na row's attached panel. At least one row away where there is one, so a row taller than the\ndistance is still stepped past."
            },
            {
              "kind": "method",
              "name": "reset",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Throws away what has been measured, for a change that makes every row a different height."
            },
            {
              "kind": "method",
              "name": "virtualizerOptions",
              "privacy": "private",
              "parameters": [
                {
                  "name": "count",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            }
          ],
          "jsDoc": "/**\n * Renders a slice of the rows instead of all of them.\n *\n * Written against `@tanstack/virtual-core` rather than a framework adapter, for the same reason the\n * table binding is: the adapter is a subscription and a render request, and this host already has\n * both.\n *\n * The slice stays **in normal flow** between two spacers rather than being positioned at computed\n * offsets. Block 0 measured that choice across five layouts and three engines: a row that turns out\n * taller than estimated pushes the ones after it, where a positioned row would overlap them. A wrong\n * estimate therefore costs scroll accuracy here, not a broken page.\n */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "RowVirtualizerController",
          "declaration": {
            "name": "RowVirtualizerController",
            "module": "internal/row-virtualizer.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/tanstack-table.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Binds `@tanstack/table-core` to a Lit host.\n\nThe controller owns the state and the core reads it: every slice the registered features\ncontribute gets a change handler that writes into this copy and then asks the host to render.\nThere is deliberately **no subscription** to the core's atoms — every change already travels\nthrough these handlers, so there is nothing left to observe, and a second path would render twice.\n\nThe handlers are built **once**, when the table is constructed, and the core keeps those. A fresh\nclosure per render reads to the core as an options change on every frame, and its memoized row\nmodels would recompute filtering, sorting, grouping and paging each time — including during a\nscroll. A host that wants telling about a slice registers through the options like any other\ncaller; the handler looks that up when it runs rather than closing over it.\n\nThey are derived from the state's own keys rather than listed by hand, so a feature added in a\nlater block is wired the moment it is registered. `tanstack-table.test.ts` pins the derivation:\nif the core ever names a handler differently from `on<Slice>Change`, that test goes red instead\nof the grid silently dropping updates.",
          "name": "TanStackTableController",
          "members": [
            {
              "kind": "field",
              "name": "host",
              "type": {
                "text": "ReactiveControllerHost"
              },
              "privacy": "private",
              "readonly": true,
              "default": "host"
            },
            {
              "kind": "field",
              "name": "table",
              "type": {
                "text": "Table<TFeatures, TData> | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | Table_Core & ExtractFeatureMapTypes"
              }
            },
            {
              "kind": "field",
              "name": "state",
              "type": {
                "text": "TableState<TFeatures> | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | TableState"
              }
            },
            {
              "kind": "field",
              "name": "handlers",
              "privacy": "private",
              "default": "new Map<string, SliceHandler>()"
            },
            {
              "kind": "field",
              "name": "hostHandlers",
              "privacy": "private",
              "default": "new Map<string, (next: unknown) => void>()",
              "description": "What the host wants told about each slice, as of the last `getTable`.\n\nKept apart from the handlers themselves so those can be built once: the core is registered with\none stable function per slice, and this is the part that is allowed to change per render. A host\nonly ever hears the value the controller settled on, never an updater it would have to resolve\na second time."
            },
            {
              "kind": "field",
              "name": "reactivity",
              "privacy": "private",
              "readonly": true,
              "description": "The reactivity the core runs on, created once. `constructTable` reads\n`features.coreReactivityFeature` before anything else and throws without it, and a fresh object\nper render would be a changed option on every frame. Supplied here rather than by the caller\nbecause it is not a feature of the table — it is half of what this controller *is*."
            },
            {
              "kind": "method",
              "name": "hostConnected",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Lit does not re-render a host that comes back into the document, and moving an element in the\nDOM takes it out and puts it back. On the first connect a render is coming anyway, so this costs\nnothing; on a later one it is the render in which a reconnected host can measure itself again."
            },
            {
              "kind": "method",
              "name": "reset",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Drops the table, so the next `getTable` builds a fresh one.\n\nFor the options the core reads **once**, when it constructs a row: `getRowId` is the one block 1\nhas. The core row model is memoized on the identity of `data` alone\n(`createCoreRowModel.js`, `memoDeps`), so changing how a row is identified without changing the\ndata would leave every row on the id it was built with.\n\nThere is deliberately **no `hostDisconnected`** calling this. The table owns no DOM, no listener\nand no timer, so a disconnect has nothing to release — while moving an element in the DOM\ndisconnects and reconnects it, and Lit does not re-render on the way back. Resetting there would\nleave the rendered rows standing beside a table that has forgotten its sorting and its selection."
            },
            {
              "kind": "method",
              "name": "getState",
              "return": {
                "type": {
                  "text": "TableState<TFeatures>"
                }
              },
              "description": "The state the controller holds — the value the core reads on every render."
            },
            {
              "kind": "method",
              "name": "hasHandlerFor",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "slice",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Whether the named state slice has a change handler. The derivation's own assertion."
            },
            {
              "kind": "method",
              "name": "getTable",
              "return": {
                "type": {
                  "text": "Table<TFeatures, TData>"
                }
              },
              "parameters": [
                {
                  "name": "options",
                  "type": {
                    "text": "TableOptions<TFeatures, TData>"
                  }
                }
              ],
              "description": "The live table instance: constructed on the first call, updated on every later one.\n\nA `state` in `options` is treated as the host's controlled slices and merged over the\ncontroller's copy, so a consumer can drive sorting or selection from the outside. A slice the\nhost stops passing keeps the last value it was given rather than reverting: the merge writes\ninto the controller's own state, and there is no record of which slices were ever controlled."
            },
            {
              "kind": "method",
              "name": "resolveFeatures",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "TFeatures"
                }
              },
              "parameters": [
                {
                  "name": "features",
                  "type": {
                    "text": "TFeatures"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "resolveOptions",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "TableOptions<TFeatures, TData>"
                }
              },
              "parameters": [
                {
                  "name": "options",
                  "type": {
                    "text": "TableOptions<TFeatures, TData>"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "buildHandlers",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            }
          ],
          "jsDoc": "/**\n * Binds `@tanstack/table-core` to a Lit host.\n *\n * The controller owns the state and the core reads it: every slice the registered features\n * contribute gets a change handler that writes into this copy and then asks the host to render.\n * There is deliberately **no subscription** to the core's atoms — every change already travels\n * through these handlers, so there is nothing left to observe, and a second path would render twice.\n *\n * The handlers are built **once**, when the table is constructed, and the core keeps those. A fresh\n * closure per render reads to the core as an options change on every frame, and its memoized row\n * models would recompute filtering, sorting, grouping and paging each time — including during a\n * scroll. A host that wants telling about a slice registers through the options like any other\n * caller; the handler looks that up when it runs rather than closing over it.\n *\n * They are derived from the state's own keys rather than listed by hand, so a feature added in a\n * later block is wired the moment it is registered. `tanstack-table.test.ts` pins the derivation:\n * if the core ever names a handler differently from `on<Slice>Change`, that test goes red instead\n * of the grid silently dropping updates.\n */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "TanStackTableController",
          "declaration": {
            "name": "TanStackTableController",
            "module": "internal/tanstack-table.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/converters.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "emptyWhenAbsent",
          "type": {
            "text": "ComplexAttributeConverter<string>"
          },
          "default": "{ fromAttribute: (value: string | null) => value ?? '' }",
          "description": "Reads a missing attribute as `''` instead of `null`. For a property that reflects an attribute\nwhose IDL counterpart is the empty string without it: WHATWG gives `input.defaultValue` as `''`\nonce `value` is removed."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "emptyWhenAbsent",
          "declaration": {
            "name": "emptyWhenAbsent",
            "module": "internal/converters.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/segmented-field/segmented-field-controller.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Wires segment behavior into a Lit host. Construct one per host element.\n\nThe host renders each segment with `data-group=\"<group>\"` and `data-segment=\"<field>\"` and binds the keyboard/focus\nevents returned by `eventHandlers()`. Everything else flows through the controller.",
          "name": "SegmentedFieldController",
          "members": [
            {
              "kind": "field",
              "name": "host",
              "type": {
                "text": "ReactiveControllerHost & Element"
              },
              "privacy": "private",
              "default": "host",
              "parsedType": {
                "text": "{ addController: {  }, removeController: {  }, requestUpdate: {  }, updateComplete: { then: {  }, catch: {  }, finally: {  }, __@toStringTag@537: string } } & Element"
              }
            },
            {
              "kind": "field",
              "name": "config",
              "type": {
                "text": "SegmentedFieldControllerConfig"
              },
              "privacy": "private",
              "default": "config"
            },
            {
              "kind": "field",
              "name": "buffers",
              "type": {
                "text": "Map<string, string>"
              },
              "privacy": "private",
              "default": "new Map()",
              "description": "Per-segment digit buffers keyed by `${group}:${field}`."
            },
            {
              "kind": "field",
              "name": "active",
              "type": {
                "text": "{ group: SegmentGroup; field: SegmentField } | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Which segment currently owns the roving tabindex / was most recently focused.",
              "parsedType": {
                "text": "null | { group: string, field: string }"
              }
            },
            {
              "kind": "method",
              "name": "hostConnected"
            },
            {
              "kind": "method",
              "name": "hostDisconnected"
            },
            {
              "kind": "method",
              "name": "getBuffer",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "group",
                  "type": {
                    "text": "SegmentGroup"
                  }
                },
                {
                  "name": "field",
                  "type": {
                    "text": "SegmentField"
                  }
                }
              ],
              "description": "Get the buffer for a segment. Empty string when nothing is pending."
            },
            {
              "kind": "method",
              "name": "setBuffer",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "group",
                  "type": {
                    "text": "SegmentGroup"
                  }
                },
                {
                  "name": "field",
                  "type": {
                    "text": "SegmentField"
                  }
                },
                {
                  "name": "buffer",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Replace the buffer for a segment. Pass `''` to clear."
            },
            {
              "kind": "method",
              "name": "clearBuffers",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Drop every pending buffer. Used by the host when the canonical value is replaced wholesale."
            },
            {
              "kind": "method",
              "name": "getActiveSegment",
              "return": {
                "type": {
                  "text": "{ group: SegmentGroup; field: SegmentField } | null"
                }
              },
              "description": "The active segment, or `null` if focus has never landed on one."
            },
            {
              "kind": "method",
              "name": "setActiveSegment",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "group",
                  "type": {
                    "text": "SegmentGroup"
                  }
                },
                {
                  "name": "field",
                  "type": {
                    "text": "SegmentField"
                  }
                }
              ],
              "description": "Sets the active segment (does not move DOM focus). Used by hosts that programmatically restore focus."
            },
            {
              "kind": "method",
              "name": "segmentElements",
              "return": {
                "type": {
                  "text": "HTMLElement[]"
                }
              },
              "description": "All segment elements in the host's shadow root, in DOM (logical) order."
            },
            {
              "kind": "method",
              "name": "focusableSegments",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLElement[]"
                }
              },
              "description": "The segments focus may travel to: every one whose group is not disabled.\n\n`isDisabled` promises \"disables everything (focus included)\", and a field can be several groups\n— a range is two — so one of them can be switched off while the other is typed into. Landing in\nthe off one leaves the caret somewhere that refuses every key.\n\n`segmentElements()` stays the whole list: buffers are flushed across all of them, and a value\nwritten from outside belongs to its segment whether or not the user can reach it."
            },
            {
              "kind": "method",
              "name": "segmentElementFor",
              "return": {
                "type": {
                  "text": "HTMLElement | null"
                }
              },
              "parameters": [
                {
                  "name": "group",
                  "type": {
                    "text": "SegmentGroup"
                  }
                },
                {
                  "name": "field",
                  "type": {
                    "text": "SegmentField"
                  }
                }
              ],
              "description": "The segment element for a given (group, field), or `null` if not in the DOM."
            },
            {
              "kind": "method",
              "name": "findFocusableSegment",
              "return": {
                "type": {
                  "text": "HTMLElement | null"
                }
              },
              "parameters": [
                {
                  "name": "isEmpty",
                  "type": {
                    "text": "(group: SegmentGroup, field: SegmentField) => boolean"
                  }
                }
              ],
              "description": "Returns the segment that should receive initial focus: the first empty segment (no value AND no buffer) per\n`isEmpty`, otherwise the first segment in the layout. The host supplies the emptiness predicate since the\ncontroller doesn't know the field's stored value."
            },
            {
              "kind": "method",
              "name": "focusActiveSegment",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Restore focus to the most recently active segment (or the first segment if none has been active)."
            },
            {
              "kind": "method",
              "name": "moveFocus",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "from",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "direction",
                  "type": {
                    "text": "-1 | 1"
                  }
                },
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Move focus to the neighbor segment in logical (DOM) order."
            },
            {
              "kind": "method",
              "name": "flushBuffer",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "group",
                  "type": {
                    "text": "SegmentGroup"
                  }
                },
                {
                  "name": "field",
                  "type": {
                    "text": "SegmentField"
                  }
                }
              ],
              "description": "Commit a pending buffer to its committed value via `rules.commitBuffer`. Notifies the host via `onCommit`. Does\nnothing if no buffer is pending."
            },
            {
              "kind": "method",
              "name": "flushAllBuffers",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Flush every pending buffer across all groups. Used when the host needs to read a final value (e.g., on form\nsubmission outside of a focus change)."
            },
            {
              "kind": "method",
              "name": "eventHandlers",
              "description": "Returns the event handlers a segment element should bind. Hosts wire these via `@keydown=${handlers.keydown}` etc.\nThe returned functions are stable references safe to pass to Lit's directive cache.\n\nHosts that need host-level shortcuts (e.g. `Alt+ArrowDown` to open a popup) should call `handleKeyDown` themselves\nafter handling their own keys. The controller's `keydown` handler is safe to invoke when the host has not consumed\nthe event — it ignores keys it doesn't recognize."
            },
            {
              "kind": "method",
              "name": "handleKeyDownEvent",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ],
              "description": "Direct entry point for hosts that wrap the controller's keydown with their own pre-handler (e.g. for popup\nshortcuts). Returns `true` if the controller consumed the event (called `preventDefault`), `false` otherwise."
            },
            {
              "kind": "field",
              "name": "handleFocus",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleBlur",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleKeyDown",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "key",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "group",
                  "type": {
                    "text": "SegmentGroup"
                  }
                },
                {
                  "name": "field",
                  "type": {
                    "text": "SegmentField"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "isReadonlyOrDisabled",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "group",
                  "type": {
                    "text": "SegmentGroup"
                  }
                }
              ],
              "description": "Whether this group takes input. Per group, because a field can be several groups — a range is\ntwo — and one of them can be shut while the other is being typed into."
            }
          ],
          "jsDoc": "/**\n * Wires segment behavior into a Lit host. Construct one per host element.\n *\n * The host renders each segment with `data-group=\"<group>\"` and `data-segment=\"<field>\"` and binds the keyboard/focus\n * events returned by `eventHandlers()`. Everything else flows through the controller.\n */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "SegmentedFieldController",
          "declaration": {
            "name": "SegmentedFieldController",
            "module": "internal/segmented-field/segmented-field-controller.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/date-picker/internal/date-segments.js",
      "declarations": [
        {
          "kind": "function",
          "name": "clearDateSegmentLayoutCache",
          "return": {
            "type": {
              "text": "void"
            }
          },
          "description": "Clear the layout cache (intended for tests)."
        },
        {
          "kind": "function",
          "name": "buildDateSegmentLayout",
          "return": {
            "type": {
              "text": "SegmentLayout"
            }
          },
          "parameters": [
            {
              "name": "locale",
              "type": {
                "text": "string"
              }
            },
            {
              "name": "kind",
              "type": {
                "text": "Period"
              }
            }
          ],
          "description": "Build (and cache) the segment layout for a locale and a kind of value.\n\nOnly the day/month/year order is a locale question, and it is answered by asking `Intl` rather\nthan by a table: `formatToParts` on a probe date reports the order and the separators the locale\nactually uses, including the ones that are not slashes. Everything else — a week beside its year,\na quarter beside its year — has no locale-specific order to discover, so it reads largest-last\nlike the rest of the formats here.\n\nCache key: `${locale}|${kind}`."
        },
        {
          "kind": "function",
          "name": "dateSegmentBounds",
          "return": {
            "type": {
              "text": "{ min: number; max: number }"
            }
          },
          "parameters": [
            {
              "name": "field",
              "type": {
                "text": "DateField"
              }
            }
          ],
          "description": "What a segment can hold.\n\nThe day and the week are given their widest possible range rather than the one this particular\nmonth or year allows. Narrowing them here would refuse the second digit of \"31\" while the month\nstill says February — and the value as a whole is checked on the way out, where the answer is\n\"this is not a date\" rather than \"you cannot type that\"."
        },
        {
          "kind": "function",
          "name": "stepDateSegment",
          "return": {
            "type": {
              "text": "DateSegments"
            }
          },
          "parameters": [
            {
              "name": "segments",
              "type": {
                "text": "DateSegments"
              }
            },
            {
              "name": "field",
              "type": {
                "text": "DateField"
              }
            },
            {
              "name": "delta",
              "type": {
                "text": "-1 | 1"
              }
            },
            {
              "name": "now",
              "default": "new Date()",
              "type": {
                "text": "Date"
              }
            }
          ],
          "description": "Step a segment by `delta`, wrapping within dateSegmentBounds with **no carry** into the\nothers — one segment at a time, as a native field steps them.\n\nThe bounds are the field's own and take no notice of the neighbors, which is what makes 29\nFebruary and week 53 of a 52-week year reachable by arrow. That is the native behavior, measured\nin Chromium and Firefox: `2026-02-28` with one Arrow Up on the day reports `''` with `badInput`\n— the day became 29 and the value stopped being a date — while `2026-01-31` steps to\n`2026-01-01`, so the wrap is at 31 rather than at the month's length. A week field does the same\nat 53: `2027-W52` steps to nothing, `2026-W53` steps to `2026-W01`.\n\nKeeping the neighbors out of it is also what keeps stepping and dateSegmentBounds the\nsame rule, so the spinbutton's announced range cannot contradict what the arrows do.\n\nAn empty segment takes its value from `now` rather than stepping from it, so the first press\nlands on today rather than on the day after."
        },
        {
          "kind": "function",
          "name": "typeDateDigit",
          "return": {
            "type": {
              "text": "DateDigitResult"
            }
          },
          "parameters": [
            {
              "name": "field",
              "type": {
                "text": "DateField"
              }
            },
            {
              "name": "buffer",
              "type": {
                "text": "string"
              }
            },
            {
              "name": "digit",
              "type": {
                "text": "string"
              }
            },
            {
              "name": "width",
              "default": "digitsOf(field)"
            }
          ],
          "description": "Apply a digit to a date segment.\n\nThe same rule the platform uses, recorded from Blink: a digit commits and moves on as soon as no\nfurther digit could produce a value still in range — a 4 in the day field commits at once because\n40 is past 31, a 3 waits because 30 and 31 are still ahead. The year is the exception: it takes\nfour digits and only rolls over when they are full.\n\nA buffer that reaches the segment's width while still below its minimum is **clamped to the\nminimum** and moves on. Measured in Chromium and Firefox: `2026-08-15` with `0`, `0` typed over\nthe month and then `1`, `2` reports `2026-01-12` — the `00` became January and the `12` landed in\nthe day. Below its width it waits instead, which is what makes `0`, `8` a way to type August.\n(The four-digit year is where the two engines part: Firefox clamps `0000` to year 1, Chromium\nleaves the field empty. The one rule for every width is the consistent half of that, and a typed\nyear 0000 is not a case worth two code paths.)"
        },
        {
          "kind": "function",
          "name": "bufferToValue",
          "return": {
            "type": {
              "text": "number | null"
            }
          },
          "parameters": [
            {
              "name": "buffer",
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "A buffer as the number it spells, or `null` while it spells nothing."
        },
        {
          "kind": "function",
          "name": "formatDateSegmentText",
          "return": {
            "type": {
              "text": "string"
            }
          },
          "parameters": [
            {
              "name": "field",
              "type": {
                "text": "DateField"
              }
            },
            {
              "name": "value",
              "type": {
                "text": "number | null"
              }
            },
            {
              "name": "buffer",
              "type": {
                "text": "string"
              }
            },
            {
              "name": "placeholder",
              "default": "'–'"
            },
            {
              "name": "width",
              "default": "digitsOf(field)"
            }
          ],
          "description": "What a segment shows: its digits, the buffer being typed, or the placeholder verbatim.\n\nThe placeholder is not padded or repeated — it arrives already at the width its language wants\n(`TT`, `MM`, `JJJJ`, `Q`), so a repeat would render `TTTT`. The buffer is padded, so a half-typed\nday shows `03` rather than jumping a column's width as the second digit arrives.\n\n`width` is how many digits to pad to, and defaults to the field's own count. A format names it —\n`D` asks for one where the range allows two. It **pads and never truncates**: a width narrower\nthan the value leaves the value whole, so asking for two digits cannot turn 2026 into 26. Which\ncentury a two-digit year means is a rule this function does not have, and cutting would invent one."
        },
        {
          "kind": "function",
          "name": "formatMonthName",
          "return": {
            "type": {
              "text": "string"
            }
          },
          "parameters": [
            {
              "name": "month",
              "type": {
                "text": "number"
              }
            },
            {
              "name": "style",
              "type": {
                "text": "'short' | 'long'"
              }
            },
            {
              "name": "locale",
              "type": {
                "text": "string"
              }
            },
            {
              "name": "withDay",
              "default": "false"
            }
          ],
          "description": "A month as the word its locale uses — `März` or `Mär` for 3 under `de`, `March` or `Mar` under\n`en`.\n\nThe segment still holds the number: this is the one place it becomes text, the same arrangement\nthe day-period segment already has, where `aria-valuenow` carries the 0 or 1 and `aria-valuetext`\nthe word. Typing and stepping are untouched by it.\n\n**`withDay` picks between two different words**, which is why it is not a convenience. CLDR keeps a\nstand-alone form and a format form, and asking `Intl` for a month on its own returns the first:\n`март` in Russian, where a date reads `15. марта`. Measured — the two differ in `ru`, `cs`, `pl`,\n`uk`, `hr` and `fi`, and in German's short form, where alone is `Mär` and a date carries `März`.\nSo a field drawing a day beside the month asks for both and keeps the month part.\n\nThe probe is the first of a month at noon UTC, so no zone can push it into its neighbor."
        },
        {
          "kind": "function",
          "name": "yearFromTwoDigits",
          "return": {
            "type": {
              "text": "number"
            }
          },
          "parameters": [
            {
              "name": "twoDigits",
              "type": {
                "text": "number"
              }
            }
          ],
          "description": "The four-digit year a two-digit entry means.\n\nMoment's rule, carried over rather than invented: `00`–`68` read forward to 2000–2068, `69`–`99`\nback to 1969–1999. It is what `eurodata-ui-react` has been handing its users through\n`AdapterMoment`, so a consumer typing `26` into either library means the same year.\n\nA fixed pivot, which is wrong from 2069 on — documented rather than replaced. A window that slid\nwith the current year would read a typed birth year `70` as 2070, where everyone writing it means\n1970; the component cannot tell a birth date from a contract date, and guessing wrong on the past\nis worse than a cliff four decades out."
        },
        {
          "kind": "function",
          "name": "twoDigitYear",
          "return": {
            "type": {
              "text": "string"
            }
          },
          "parameters": [
            {
              "name": "year",
              "type": {
                "text": "number"
              }
            }
          ],
          "description": "A year written as its last two digits.\n\nNot `padStart`, which lengthens and never shortens and would leave 2026 whole. The segment goes on\nholding all four — the wire format needs them — and this is only what the field draws."
        },
        {
          "kind": "function",
          "name": "isDateComplete",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "segments",
              "type": {
                "text": "DateSegments"
              }
            },
            {
              "name": "kind",
              "type": {
                "text": "Period"
              }
            }
          ],
          "description": "True when every segment this kind of value needs is filled."
        },
        {
          "kind": "function",
          "name": "isDateEmpty",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "segments",
              "type": {
                "text": "DateSegments"
              }
            },
            {
              "name": "kind",
              "type": {
                "text": "Period"
              }
            }
          ],
          "description": "True when none of them is."
        },
        {
          "kind": "function",
          "name": "dateSegmentsToWire",
          "return": {
            "type": {
              "text": "string"
            }
          },
          "parameters": [
            {
              "name": "segments",
              "type": {
                "text": "DateSegments"
              }
            },
            {
              "name": "kind",
              "type": {
                "text": "Period"
              }
            }
          ],
          "description": "The segments as a wire string, or `''` while they are incomplete or name no real value.\n\nBoth answers are the same to a form: a control holding half a date submits nothing. What tells\nthem apart is `badInput`, which the host reads off `isDateComplete` — half-filled is an error to\nreport, empty is not."
        },
        {
          "kind": "function",
          "name": "wireToDateSegments",
          "return": {
            "type": {
              "text": "DateSegments"
            }
          },
          "parameters": [
            {
              "name": "wire",
              "type": {
                "text": "string | null | undefined"
              }
            },
            {
              "name": "kind",
              "type": {
                "text": "Period"
              }
            }
          ],
          "description": "A wire string as segments. All-empty for one this kind cannot read.\n\n`datetime` also reads a plain `date` string, because that is what its own date half writes: these\nsegments carry no time, so dateSegmentsToWire can only produce `2026-08-15`, and refusing\nit back would leave the one kind assembled from two halves as the one kind that cannot be\nre-read. The time half of the same string is read by `time-segments.ts`."
        },
        {
          "kind": "function",
          "name": "dateSegmentFields",
          "return": {
            "type": {
              "text": "DateField[]"
            }
          },
          "parameters": [
            {
              "name": "kind",
              "type": {
                "text": "Period"
              }
            }
          ],
          "description": "The fields this kind of value is made of, in reading order."
        },
        {
          "kind": "function",
          "name": "dateSegmentRules",
          "return": {
            "type": {
              "text": "SegmentRules"
            }
          },
          "parameters": [
            {
              "name": "opts",
              "type": {
                "text": "{\n  getSegments: (group: string) => DateSegments;\n  setSegments: (group: string, next: DateSegments) => void;\n  now?: () => Date;\n  /**\n   * How many digits the year is being drawn to. Two of them means a typed entry is read through\n   * {@link yearFromTwoDigits} — both while typing and on the commit a blur forces, or the same\n   * half-typed `2` would mean year 2002 one way and year 2 the other.\n   *\n   * A getter rather than a number, so it answers for the format the field has now. What it does not\n   * settle is a format changed *during* an entry: a buffer of `197` left over from a four-digit\n   * field is no two-digit year, and the commit falls back to reading it whole. Nobody has asked for\n   * that case, and it has no test.\n   */\n  yearDigits?: () => number;\n}"
              }
            }
          ],
          "description": "Build the `SegmentRules` the generic `SegmentedFieldController` expects, wired to a host's\nsegment-store getter and setter.\n\n**These rules write the store themselves**, `typeDigit` included, so a half-typed digit is already\nin it — the same contract `timeSegmentRules` has, and the same reconciliation is owed on the\ncontroller's Backspace path."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "clearDateSegmentLayoutCache",
          "declaration": {
            "name": "clearDateSegmentLayoutCache",
            "module": "components/date-picker/internal/date-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "buildDateSegmentLayout",
          "declaration": {
            "name": "buildDateSegmentLayout",
            "module": "components/date-picker/internal/date-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "dateSegmentBounds",
          "declaration": {
            "name": "dateSegmentBounds",
            "module": "components/date-picker/internal/date-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "stepDateSegment",
          "declaration": {
            "name": "stepDateSegment",
            "module": "components/date-picker/internal/date-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "typeDateDigit",
          "declaration": {
            "name": "typeDateDigit",
            "module": "components/date-picker/internal/date-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "bufferToValue",
          "declaration": {
            "name": "bufferToValue",
            "module": "components/date-picker/internal/date-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "formatDateSegmentText",
          "declaration": {
            "name": "formatDateSegmentText",
            "module": "components/date-picker/internal/date-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "formatMonthName",
          "declaration": {
            "name": "formatMonthName",
            "module": "components/date-picker/internal/date-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "yearFromTwoDigits",
          "declaration": {
            "name": "yearFromTwoDigits",
            "module": "components/date-picker/internal/date-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "twoDigitYear",
          "declaration": {
            "name": "twoDigitYear",
            "module": "components/date-picker/internal/date-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "isDateComplete",
          "declaration": {
            "name": "isDateComplete",
            "module": "components/date-picker/internal/date-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "isDateEmpty",
          "declaration": {
            "name": "isDateEmpty",
            "module": "components/date-picker/internal/date-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "dateSegmentsToWire",
          "declaration": {
            "name": "dateSegmentsToWire",
            "module": "components/date-picker/internal/date-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "wireToDateSegments",
          "declaration": {
            "name": "wireToDateSegments",
            "module": "components/date-picker/internal/date-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "dateSegmentFields",
          "declaration": {
            "name": "dateSegmentFields",
            "module": "components/date-picker/internal/date-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "dateSegmentRules",
          "declaration": {
            "name": "dateSegmentRules",
            "module": "components/date-picker/internal/date-segments.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/date-picker/internal/date-format.js",
      "declarations": [
        {
          "kind": "function",
          "name": "parseDateFormat",
          "return": {
            "type": {
              "text": "FormatPart[] | null"
            }
          },
          "parameters": [
            {
              "name": "format",
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "Parse a format string into its ordered parts, or `null` when it cannot be read in full.\n\nUnreadable means: a field appears twice, a bracket is opened and never closed, or an **ASCII\nletter** stands outside a bracket and forms no token. That last rule is why `DD.MM.YYYY HH:mm` is refused rather\nthan drawing the characters `HH:mm` into the field — the clock's tokens are not in the table yet,\nand a parser that turned what it could not read into literal text would render the mistake\ninstead of reporting it. Only ASCII letters are held to it: `2026年08月15日` separates with\nletters no token could ever claim.\n\nAn empty string parses to no parts rather than to `null`. \"Unreadable\" and \"nothing said\" are\ndifferent answers, and a caller wants to treat them differently.\n\nBrackets are Moment's and dayjs's escape, and they are deliberately shallow: they do not nest\n(`[a[b]` is the literal `a[b`), a `]` with no `[` before it is ordinary text, and an empty pair\ncontributes nothing at all — so `[]` and `''` cannot be told apart afterwards."
        },
        {
          "kind": "function",
          "name": "periodTakesDateFormat",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "kind",
              "type": {
                "text": "Period"
              }
            }
          ]
        },
        {
          "kind": "function",
          "name": "formatFitsPeriod",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "parts",
              "type": {
                "text": "FormatPart[]"
              }
            },
            {
              "name": "kind",
              "type": {
                "text": "Period"
              }
            }
          ],
          "description": "True when the parts name exactly the segments this kind of value shows — no more, no fewer.\n\n**`type` owns which segments there are.** A format may reorder them, respell what sits between\nthem and choose how wide each is drawn; it is not a second way to say what the picker picks. The\nreason is `calendarType` (`date-picker.ts:2226`): the panel's granularity is derived from `type`\nalone. A format that dropped the day would leave the field reading `08/2026` beside a calendar\nstill offering days, and one that added a day to a `month` would ask for a field the value has\nnowhere to keep.\n\nMUI lets a format change the segment set because a separate `views` array tells its calendar what\nto show — two axes that are expected to agree. There is only one axis here, and `type=\"month\"` is\nalready how a consumer asks for a month.\n\nAsked only of a kind periodTakesDateFormat accepts. The two are separate because their\nanswers mean different things: one says the consumer wrote something wrong, the other that the\nattribute does not apply here, and a caller that reports the first must stay quiet about the\nsecond.\n\nCounting suffices because `needed` holds no duplicates: equal length plus containment is set\nequality. parseDateFormat refusing a repeated field is not what carries this."
        },
        {
          "kind": "function",
          "name": "buildLayoutFromFormat",
          "return": {
            "type": {
              "text": "FormatOutcome"
            }
          },
          "parameters": [
            {
              "name": "parts",
              "type": {
                "text": "FormatPart[]"
              }
            },
            {
              "name": "kind",
              "type": {
                "text": "Period"
              }
            }
          ],
          "description": "The layout a parsed format asks for, or the reason the field would have to draw something else to\nhonor it.\n\nWhatever the reason, the caller falls back to the locale, which is a format the field can always\nhonor. Drawing *almost* what was asked for is the outcome worth ruling out: a consumer who writes\n`MMMM` and sees `03` has been told the attribute works."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "parseDateFormat",
          "declaration": {
            "name": "parseDateFormat",
            "module": "components/date-picker/internal/date-format.js"
          }
        },
        {
          "kind": "js",
          "name": "periodTakesDateFormat",
          "declaration": {
            "name": "periodTakesDateFormat",
            "module": "components/date-picker/internal/date-format.js"
          }
        },
        {
          "kind": "js",
          "name": "formatFitsPeriod",
          "declaration": {
            "name": "formatFitsPeriod",
            "module": "components/date-picker/internal/date-format.js"
          }
        },
        {
          "kind": "js",
          "name": "buildLayoutFromFormat",
          "declaration": {
            "name": "buildLayoutFromFormat",
            "module": "components/date-picker/internal/date-format.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/date-picker/internal/time-segments.js",
      "declarations": [
        {
          "kind": "function",
          "name": "clearTimeSegmentLayoutCache",
          "return": {
            "type": {
              "text": "void"
            }
          },
          "description": "Clear the layout cache (intended for tests)."
        },
        {
          "kind": "function",
          "name": "buildTimeSegmentLayout",
          "return": {
            "type": {
              "text": "SegmentLayout"
            }
          },
          "parameters": [
            {
              "name": "locale",
              "type": {
                "text": "string"
              }
            },
            {
              "name": "opts",
              "type": {
                "text": "BuildLayoutOptions"
              }
            }
          ],
          "description": "Build (and cache) the segment layout for a locale by probing `Intl.DateTimeFormat.formatToParts`. Literal parts\n(colons, NBSPs) are preserved verbatim so locale-specific separators render correctly. Digits are forced to Latin\nvia `numberingSystem: 'latn'` — the wire value is always ASCII; only segment order and AM/PM glyphs vary by locale.\n\nCache key: `${locale}|${hour12}|${withSeconds}`."
        },
        {
          "kind": "variable",
          "name": "tokens",
          "type": {
            "text": "SegmentLayout['tokens']"
          },
          "default": "[]"
        },
        {
          "kind": "variable",
          "name": "order",
          "type": {
            "text": "TimeField[]"
          },
          "default": "[]"
        },
        {
          "kind": "function",
          "name": "resolveHour12",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "locale",
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "Resolve whether a locale defaults to 12-hour clock. Used when `hourFormat='auto'`."
        },
        {
          "kind": "function",
          "name": "formatDayPeriod",
          "return": {
            "type": {
              "text": "string"
            }
          },
          "parameters": [
            {
              "name": "locale",
              "type": {
                "text": "string"
              }
            },
            {
              "name": "period",
              "type": {
                "text": "0 | 1"
              }
            }
          ],
          "description": "Format the localized AM/PM string for a given `dayPeriod` value (0=AM, 1=PM). Falls back to \"AM\"/\"PM\"."
        },
        {
          "kind": "function",
          "name": "timeSegmentBounds",
          "return": {
            "type": {
              "text": "{ min: number; max: number }"
            }
          },
          "parameters": [
            {
              "name": "field",
              "type": {
                "text": "TimeField"
              }
            },
            {
              "name": "hour12",
              "type": {
                "text": "boolean"
              }
            }
          ]
        },
        {
          "kind": "function",
          "name": "stepTimeSegment",
          "return": {
            "type": {
              "text": "TimeSegments"
            }
          },
          "parameters": [
            {
              "name": "segments",
              "type": {
                "text": "TimeSegments"
              }
            },
            {
              "name": "field",
              "type": {
                "text": "TimeField"
              }
            },
            {
              "name": "delta",
              "type": {
                "text": "-1 | 1"
              }
            },
            {
              "name": "hour12",
              "type": {
                "text": "boolean"
              }
            },
            {
              "name": "now",
              "default": "new Date()",
              "type": {
                "text": "Date"
              }
            }
          ],
          "description": "Step a segment by `delta` (+1 / -1). Hour, minute, second **wrap** within their bounds with **no carry** into other\nfields (mirrors native `<input type=\"time\">`). DayPeriod toggles. In 12-hour mode, stepping the hour does not toggle\nAM/PM — matches Chrome and React Aria. An empty segment takes its value from `now` and does not step from there, so\nthe first press lands on the current hour rather than one past it."
        },
        {
          "kind": "function",
          "name": "typeTimeDigit",
          "return": {
            "type": {
              "text": "TypeDigitResult"
            }
          },
          "parameters": [
            {
              "name": "field",
              "type": {
                "text": "TimeField"
              }
            },
            {
              "name": "buffer",
              "type": {
                "text": "string"
              }
            },
            {
              "name": "digit",
              "type": {
                "text": "string"
              }
            },
            {
              "name": "hour12",
              "type": {
                "text": "boolean"
              }
            }
          ],
          "description": "Apply a digit to a time segment. Per-field rules:\n\n- **Hour (24-hour, 0–23):** empty + `3..9` commits + advances; empty + `0..2` buffers; buffer `0`/`1` + any digit\n  combines to `0d`/`1d` (advance); buffer `2` + `0..3` combines to `20..23` (advance); buffer `2` + `4..9` replaces.\n  `00` is midnight, so it commits and advances like any other pair.\n- **Hour (12-hour, 1–12):** same algorithm as the date-input's month (1–12).\n- **Minute / Second (0–59):** empty + `6..9` commits + advances; empty + `0..5` buffers; buffer + any digit combines\n  to `0d..59` (advance); buffer + overflow digit replaces.\n\nReturns the same `TypeDigitResult` shape the controller expects.\n\n**Not the function a host wires up** — that is `typeDigit` from timeSegmentRules, which\nknows the segments and can therefore leave AM/PM standing where this one has nothing to offer but\n`null`. This is the pure rule the wired version delegates to for the numeric segments."
        },
        {
          "kind": "function",
          "name": "bufferToValue",
          "return": {
            "type": {
              "text": "number | null"
            }
          },
          "parameters": [
            {
              "name": "buffer",
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "Interpret a raw digit buffer as its numeric value."
        },
        {
          "kind": "function",
          "name": "dayPeriodFromKey",
          "return": {
            "type": {
              "text": "0 | 1 | null"
            }
          },
          "parameters": [
            {
              "name": "key",
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "Set AM/PM directly via keystroke (`a`/`A`/`p`/`P`). Returns the new `dayPeriod` value or `null` for no-op."
        },
        {
          "kind": "function",
          "name": "formatTimeSegmentText",
          "return": {
            "type": {
              "text": "string"
            }
          },
          "parameters": [
            {
              "name": "field",
              "type": {
                "text": "TimeField"
              }
            },
            {
              "name": "value",
              "type": {
                "text": "number | null"
              }
            },
            {
              "name": "buffer",
              "type": {
                "text": "string"
              }
            },
            {
              "name": "placeholder",
              "type": {
                "text": "string"
              }
            },
            {
              "name": "locale",
              "type": {
                "text": "string"
              }
            }
          ]
        },
        {
          "kind": "function",
          "name": "isTimeComplete",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "segments",
              "type": {
                "text": "TimeSegments"
              }
            },
            {
              "name": "opts",
              "type": {
                "text": "WireOptions"
              }
            }
          ],
          "description": "True if every required segment is filled."
        },
        {
          "kind": "function",
          "name": "isTimeEmpty",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "segments",
              "type": {
                "text": "TimeSegments"
              }
            }
          ],
          "description": "True if no segment is filled."
        },
        {
          "kind": "function",
          "name": "timeSegmentsToWire",
          "return": {
            "type": {
              "text": "string"
            }
          },
          "parameters": [
            {
              "name": "segments",
              "type": {
                "text": "TimeSegments"
              }
            },
            {
              "name": "opts",
              "type": {
                "text": "WireOptions"
              }
            }
          ],
          "description": "Convert a display-segment group to the wire format an `<input type=\"time\">` holds — `HH:mm`, or\n`HH:mm:ss` when `withSeconds`. Always 24-hour, zero-padded. `''` for an incomplete group."
        },
        {
          "kind": "function",
          "name": "wireToTimeSegments",
          "return": {
            "type": {
              "text": "TimeSegments"
            }
          },
          "parameters": [
            {
              "name": "wire",
              "type": {
                "text": "string | null | undefined"
              }
            },
            {
              "name": "opts",
              "type": {
                "text": "WireOptions"
              }
            }
          ],
          "description": "Parse the wire format into display segments. All-null for an empty or unusable string.\n\nFractional seconds are dropped to whole ones — a segmented field has no place to show them, and\nthe value they belong to is the one on the wire, not the one on screen.\n\nA field showing seconds reads a `14:30` as second 0, so the segment has something to display\nrather than standing empty next to two filled ones. **The round trip is therefore lossy on\npurpose**: writing those segments back yields `14:30:00`. A host must not write back on its own —\na native field measured in Chromium keeps `14:30` for as long as nobody edits it, and only turns\nit into `14:30:01` once the user changes a segment."
        },
        {
          "kind": "function",
          "name": "withSecondsForStep",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "step",
              "type": {
                "text": "number | 'any'"
              }
            }
          ],
          "description": "Resolve whether the seconds segment should be shown given a `step` value (in seconds, per HTML spec). Mirrors native\n`<input type=\"time\">`: `step >= 60` and divisible by 60 → no seconds; otherwise → seconds shown. `'any'` → seconds\nshown (matches modern Chromium)."
        },
        {
          "kind": "function",
          "name": "timeSegmentRules",
          "return": {
            "type": {
              "text": "SegmentRules"
            }
          },
          "parameters": [
            {
              "name": "opts",
              "type": {
                "text": "{\n  getSegments: (group: string) => TimeSegments;\n  setSegments: (group: string, next: TimeSegments) => void;\n  hour12: () => boolean;\n  now?: () => Date;\n}"
              }
            }
          ],
          "description": "Build the `SegmentRules` object the generic `SegmentedFieldController` expects, wired to a host's segment-store\ngetter/setter. Lets the host say \"rules: timeSegmentRules({ getSegments, setSegments, hour12, now })\" and the\ncontroller handles all the rest.\n\n**These rules write the store themselves**, `typeDigit` included, so a half-typed digit is already\nin it. The controller assumes the opposite for one case: on Backspace with a pending buffer it\nclears the buffer and calls `onCommit(…, null)` without going through any rule, on the grounds\nthat \"any prior committed value\" should survive. With these rules there is no prior value left to\nsurvive — the partial overwrote it. A host has to reconcile the two, either by writing the store\nfrom `onCommit` or by keeping the partial out of it until it commits."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "clearTimeSegmentLayoutCache",
          "declaration": {
            "name": "clearTimeSegmentLayoutCache",
            "module": "components/date-picker/internal/time-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "buildTimeSegmentLayout",
          "declaration": {
            "name": "buildTimeSegmentLayout",
            "module": "components/date-picker/internal/time-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "resolveHour12",
          "declaration": {
            "name": "resolveHour12",
            "module": "components/date-picker/internal/time-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "formatDayPeriod",
          "declaration": {
            "name": "formatDayPeriod",
            "module": "components/date-picker/internal/time-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "timeSegmentBounds",
          "declaration": {
            "name": "timeSegmentBounds",
            "module": "components/date-picker/internal/time-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "stepTimeSegment",
          "declaration": {
            "name": "stepTimeSegment",
            "module": "components/date-picker/internal/time-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "typeTimeDigit",
          "declaration": {
            "name": "typeTimeDigit",
            "module": "components/date-picker/internal/time-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "bufferToValue",
          "declaration": {
            "name": "bufferToValue",
            "module": "components/date-picker/internal/time-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "dayPeriodFromKey",
          "declaration": {
            "name": "dayPeriodFromKey",
            "module": "components/date-picker/internal/time-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "formatTimeSegmentText",
          "declaration": {
            "name": "formatTimeSegmentText",
            "module": "components/date-picker/internal/time-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "isTimeComplete",
          "declaration": {
            "name": "isTimeComplete",
            "module": "components/date-picker/internal/time-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "isTimeEmpty",
          "declaration": {
            "name": "isTimeEmpty",
            "module": "components/date-picker/internal/time-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "timeSegmentsToWire",
          "declaration": {
            "name": "timeSegmentsToWire",
            "module": "components/date-picker/internal/time-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "wireToTimeSegments",
          "declaration": {
            "name": "wireToTimeSegments",
            "module": "components/date-picker/internal/time-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "withSecondsForStep",
          "declaration": {
            "name": "withSecondsForStep",
            "module": "components/date-picker/internal/time-segments.js"
          }
        },
        {
          "kind": "js",
          "name": "timeSegmentRules",
          "declaration": {
            "name": "timeSegmentRules",
            "module": "components/date-picker/internal/time-segments.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/date-picker/internal/time-columns.js",
      "declarations": [
        {
          "kind": "function",
          "name": "timeToSeconds",
          "return": {
            "type": {
              "text": "number | null"
            }
          },
          "parameters": [
            {
              "name": "wire",
              "type": {
                "text": "string | undefined"
              }
            }
          ],
          "description": "Seconds since midnight, or `null` for a string that is not a time."
        },
        {
          "kind": "function",
          "name": "timeInBounds",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "seconds",
              "type": {
                "text": "number"
              }
            },
            {
              "name": "min",
              "optional": true,
              "type": {
                "text": "string"
              }
            },
            {
              "name": "max",
              "optional": true,
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "Whether a time is inside the bounds.\n\nA `min` **above** `max` is a range that runs past midnight, and it is the one place HTML gives\nthat meaning: \"By setting a `min` attribute greater than the `max` attribute, the valid time range\nwill wrap around midnight to produce a valid time range. This functionality is not supported by\nany other input types.\" (MDN on `<input type=\"time\">`.) Measured in Chromium and Firefox:\n`min=\"22:00\" max=\"06:00\"` leaves 23:00 valid and reports 12:00 as `rangeUnderflow`."
        },
        {
          "kind": "function",
          "name": "onStepGrid",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "seconds",
              "type": {
                "text": "number"
              }
            },
            {
              "name": "opts",
              "type": {
                "text": "BuildColumnsOptions"
              }
            }
          ],
          "description": "True when `seconds` sits on the step grid."
        },
        {
          "kind": "function",
          "name": "buildTimeColumns",
          "return": {
            "type": {
              "text": "TimeColumn[]"
            }
          },
          "parameters": [
            {
              "name": "opts",
              "type": {
                "text": "BuildColumnsOptions"
              }
            }
          ],
          "description": "The columns for the popup, in reading order: hour, minute, then seconds and AM/PM where the format\nasks for them.\n\nThe order is fixed rather than taken from the locale, because a column list is not a formatted\ntime — it is a set of pickers side by side, and every implementation checked (native Chromium,\nMUI, WebAwesome) puts the hour leftmost even in locales whose written time does not."
        },
        {
          "kind": "function",
          "name": "pickTimeOption",
          "return": {
            "type": {
              "text": "TimeSegments"
            }
          },
          "parameters": [
            {
              "name": "field",
              "type": {
                "text": "TimeField"
              }
            },
            {
              "name": "value",
              "type": {
                "text": "number"
              }
            },
            {
              "name": "opts",
              "type": {
                "text": "BuildColumnsOptions"
              }
            }
          ],
          "description": "The segments a click on one option produces — the rest of them kept, and the empty ones filled\nfrom the first reachable time rather than left half-set.\n\nA popup click is a whole choice, unlike a typed digit: clicking 9 o'clock with nothing else set\nhas to give a time, or the field would show a lone hour and hold no value at all."
        },
        {
          "kind": "function",
          "name": "timeSegmentsAllowed",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "opts",
              "type": {
                "text": "BuildColumnsOptions"
              }
            }
          ],
          "description": "Whether the time a set of segments names is one the bounds and the step allow."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "timeToSeconds",
          "declaration": {
            "name": "timeToSeconds",
            "module": "components/date-picker/internal/time-columns.js"
          }
        },
        {
          "kind": "js",
          "name": "timeInBounds",
          "declaration": {
            "name": "timeInBounds",
            "module": "components/date-picker/internal/time-columns.js"
          }
        },
        {
          "kind": "js",
          "name": "onStepGrid",
          "declaration": {
            "name": "onStepGrid",
            "module": "components/date-picker/internal/time-columns.js"
          }
        },
        {
          "kind": "js",
          "name": "buildTimeColumns",
          "declaration": {
            "name": "buildTimeColumns",
            "module": "components/date-picker/internal/time-columns.js"
          }
        },
        {
          "kind": "js",
          "name": "pickTimeOption",
          "declaration": {
            "name": "pickTimeOption",
            "module": "components/date-picker/internal/time-columns.js"
          }
        },
        {
          "kind": "js",
          "name": "timeSegmentsAllowed",
          "declaration": {
            "name": "timeSegmentsAllowed",
            "module": "components/date-picker/internal/time-columns.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/date-picker/internal/value-validators.js",
      "declarations": [
        {
          "kind": "function",
          "name": "kindOf",
          "parameters": [
            {
              "name": "wire",
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "The kind of value a wire string names, or `null` when it names none.\n\nExported because the element has to ask the same question the validators do: a bound the\nvalidators ignore must not reach the calendar either, or the panel greys out days that the field\nwould accept. One rule, one place."
        },
        {
          "kind": "function",
          "name": "PartialValueValidator",
          "return": {
            "type": {
              "text": "Validator<EdDatePicker>"
            }
          },
          "description": "Reports `badInput` for an entry that has digits in some segments and not in others — the state a\nnative field reports the same way, with an empty value beside it.\n\nThe empty case is valid here; empty + `required` is `RequiredValidator`'s concern, so that\nmessage stays the browser-localized native one. This validator therefore has to run **first**:\na partial entry reads as empty to `RequiredValidator`, which would answer \"Please fill out this\nfield\" for a field the user has already typed into."
        },
        {
          "kind": "function",
          "name": "RangeValidator",
          "return": {
            "type": {
              "text": "Validator<EdDatePicker>"
            }
          },
          "description": "Reports `rangeUnderflow` / `rangeOverflow` against `min` and `max`.\n\nThe comparison is lexicographic on the wire strings, which is exact for every one of the eight\nformats: each is fixed-width with its parts in descending significance, so `2026-Q1` sorts before\n`2026-Q3` and `2026-W03` before `2026-W31`. That is what lets one rule serve a quarter and a day\nalike — a quarter has no native counterpart whose validity could be mirrored.\n\nA bound of a different kind than the value is ignored rather than compared. That is what a native\nfield does: measured in Chromium, `<input type=\"month\" min=\"2026-03-15\">` leaves February valid,\nwhile `min=\"2026-03\"` refuses it. The kind decides it, not the string's length: `2026-07` and\n`2026-Q3` are both seven characters, and comparing them as text puts the month first for the\nplain reason that `0` sorts before `Q`.\n\n**A bare time is the one exception, and it is compared as an instant rather than as text.**\nMeasured in Chromium and Firefox: `max=\"14:30\"` leaves `14:30:00` valid, and `min=\"14:30:00\"`\nleaves `14:30` valid — the same instant written two ways, which a string comparison would put on\nopposite sides for the plain reason that one is longer. So the time half is read as seconds since\nmidnight.\n\nThat is also what settles the wrapped range, which is the platform's own and the time type's\nalone: \"By setting a `min` attribute greater than the `max` attribute, the valid time range will\nwrap around midnight to produce a valid time range. This functionality is not supported by any\nother input types.\" (MDN on `<input type=\"time\">`.) Measured: `min=\"22:00\" max=\"06:00\"` leaves\n23:00 and 02:00 valid and reports 12:00 as `rangeUnderflow`, while `min=\"06:00:00\" max=\"06:00\"`\n— the same instant twice — reports 12:00 as `rangeOverflow`, so the wrap needs `min` strictly\n**after** `max` as an instant, not merely as a longer string."
        },
        {
          "kind": "function",
          "name": "HalfRequiredValidator",
          "return": {
            "type": {
              "text": "Validator<EdDatePicker>"
            }
          },
          "description": "Reports `valueMissing` for a half of a range that is asked for on its own.\n\n`required` asks for the value the control reports, which for a range is its start. The second\nhalf is its own question — \"valid from X, indefinitely\" is an ordinary value in one form and a\nmissing entry in the next — and only the form knows which, so it takes its own attribute.\n\nA half that is switched off is barred, the way the platform bars a disabled control: a value the\nuser cannot reach cannot be filled in either."
        },
        {
          "kind": "function",
          "name": "RangeOrderValidator",
          "return": {
            "type": {
              "text": "Validator<EdDatePicker>"
            }
          },
          "description": "Reports `customError` for a range whose end falls before its start.\n\nThere is no native counterpart to measure: HTML has no range input of this shape, and the two\nbounds it does have (`min`/`max`) are the author's rather than the user's. So this is a house\nrule, and it is the narrow one — **an empty `end` is not an error.** \"Valid from X, indefinitely\"\nis the ordinary case for a contract or a tariff, and refusing it would take away the reason the\nrange is two fields rather than one.\n\nThe comparison is lexicographic on the wire strings, exact for every date format for the reason\n`RangeValidator` gives: each is fixed-width with its parts in descending significance."
        },
        {
          "kind": "function",
          "name": "StepValidator",
          "return": {
            "type": {
              "text": "Validator<EdDatePicker>"
            }
          },
          "description": "Reports `stepMismatch` for a time that is not a whole number of steps from the step base — and\n**only** that.\n\nA value merely outside the bounds is `RangeValidator`'s business: measured in Chromium and\nFirefox, `<input type=\"time\" step=\"60\" min=\"09:00\" value=\"08:00\">` reports `rangeUnderflow` with\n`stepMismatch` false. The base class ORs the keys of every validator, so a step check that also\njudged the bounds would raise both flags and send a consumer branching on `stepMismatch` down the\nwrong path.\n\nThe message comes from a throwaway native `<input type=\"time\">` rather than from a translation of\nour own, because the browser's own wording names the two nearest valid values, which no generic\nsentence can. Only the message is taken from it: the\nverdict is the host's, since a native time field cannot judge the date half of a `datetime`."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "kindOf",
          "declaration": {
            "name": "kindOf",
            "module": "components/date-picker/internal/value-validators.js"
          }
        },
        {
          "kind": "js",
          "name": "PartialValueValidator",
          "declaration": {
            "name": "PartialValueValidator",
            "module": "components/date-picker/internal/value-validators.js"
          }
        },
        {
          "kind": "js",
          "name": "RangeValidator",
          "declaration": {
            "name": "RangeValidator",
            "module": "components/date-picker/internal/value-validators.js"
          }
        },
        {
          "kind": "js",
          "name": "HalfRequiredValidator",
          "declaration": {
            "name": "HalfRequiredValidator",
            "module": "components/date-picker/internal/value-validators.js"
          }
        },
        {
          "kind": "js",
          "name": "RangeOrderValidator",
          "declaration": {
            "name": "RangeOrderValidator",
            "module": "components/date-picker/internal/value-validators.js"
          }
        },
        {
          "kind": "js",
          "name": "StepValidator",
          "declaration": {
            "name": "StepValidator",
            "module": "components/date-picker/internal/value-validators.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/date-picker/date-picker.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDatePicker",
          "cssProperties": [
            {
              "description": "The width of the field. Defaults to `100%`.",
              "name": "--ed-date-picker-width"
            },
            {
              "description": "How tall the time columns are before they scroll.",
              "name": "--ed-date-picker-column-height"
            }
          ],
          "cssParts": [
            {
              "description": "The form control's outer wrapper.",
              "name": "form-control"
            },
            {
              "description": "The label's wrapper.",
              "name": "form-control-label"
            },
            {
              "description": "The wrapper around the field.",
              "name": "form-control-input"
            },
            {
              "description": "The state message: an error, a warning, or the AI note.",
              "name": "message"
            },
            {
              "description": "The hint's wrapper.",
              "name": "hint"
            },
            {
              "description": "The field itself, holding the segments and both buttons. A range renders two.",
              "name": "base"
            },
            {
              "description": "Added to the first field of a range.",
              "name": "base-start"
            },
            {
              "description": "Added to the second field of a range.",
              "name": "base-end"
            },
            {
              "description": "The wrapper around the `start` slot.",
              "name": "start"
            },
            {
              "description": "The wrapper holding both fields of a range.",
              "name": "range"
            },
            {
              "description": "The dash between them.",
              "name": "range-separator"
            },
            {
              "description": "The row of segments and separators. A range renders two.",
              "name": "segments"
            },
            {
              "description": "Any editable segment.",
              "name": "segment"
            },
            {
              "description": "Added to the day segment.",
              "name": "segment-day"
            },
            {
              "description": "Added to the month segment.",
              "name": "segment-month"
            },
            {
              "description": "Added to the year segment.",
              "name": "segment-year"
            },
            {
              "description": "Added to the week segment.",
              "name": "segment-week"
            },
            {
              "description": "Added to the quarter segment.",
              "name": "segment-quarter"
            },
            {
              "description": "Added to the half-year segment.",
              "name": "segment-half-year"
            },
            {
              "description": "Added to the hour segment.",
              "name": "segment-hour"
            },
            {
              "description": "Added to the minute segment.",
              "name": "segment-minute"
            },
            {
              "description": "Added to the second segment.",
              "name": "segment-second"
            },
            {
              "description": "Added to the AM/PM segment.",
              "name": "segment-day-period"
            },
            {
              "description": "Inert text between two segments.",
              "name": "separator"
            },
            {
              "description": "Added to a separator that carries no glyph, only space — between a quarter and its year, or before AM/PM. It is sized as a box, since a span holding one space is a flex item of zero width.",
              "name": "separator-gap"
            },
            {
              "description": "The button that empties the field.",
              "name": "clear-button"
            },
            {
              "description": "The button that opens the calendar.",
              "name": "trigger"
            },
            {
              "description": "The floating surface holding the calendar. Carries the frame, background and shadow.",
              "name": "panel"
            },
            {
              "description": "The row inside the panel holding the calendar, the time columns, or both.",
              "name": "surfaces"
            },
            {
              "description": "The consumer's own note row under the panel. Always in the DOM, and hidden while the `footer` slot is empty.",
              "name": "footer"
            },
            {
              "description": "The consumer's own control row under it. Always in the DOM, and hidden while the `footer-controls` slot is empty.",
              "name": "footer-controls"
            },
            {
              "description": "The OK/Cancel row below them. Rendered for `type=\"time\"` and `type=\"datetime\"`, where one pick cannot finish the value.",
              "name": "panel-footer"
            },
            {
              "description": "The button that accepts the entry and closes the panel. Disabled while the value is incomplete.",
              "name": "footer-ok"
            },
            {
              "description": "The button that puts back the value the field held when the panel opened.",
              "name": "footer-cancel"
            },
            {
              "description": "The `<ed-calendar>` inside the panel.",
              "name": "calendar"
            },
            {
              "description": "The calendar's exported `base` part. Prefixed because the field already owns `base`.",
              "name": "calendar__base"
            },
            {
              "description": "The calendar's exported `panel` part, one wrapper per month shown. Prefixed because the floating surface already owns `panel`.",
              "name": "calendar__panel"
            },
            {
              "description": "The calendar's exported `footer` part. Prefixed because the note row already owns `footer`.",
              "name": "calendar__footer"
            },
            {
              "description": "The row of listboxes a time or datetime shows in the panel.",
              "name": "time-columns"
            },
            {
              "description": "One of those listboxes.",
              "name": "time-column"
            },
            {
              "description": "Added to the hour column.",
              "name": "time-column-hour"
            },
            {
              "description": "Added to the minute column.",
              "name": "time-column-minute"
            },
            {
              "description": "Added to the second column.",
              "name": "time-column-second"
            },
            {
              "description": "Added to the AM/PM column.",
              "name": "time-column-day-period"
            },
            {
              "description": "One value in a column.",
              "name": "time-option"
            },
            {
              "description": "The chosen value in a column.",
              "name": "time-option-selected"
            }
          ],
          "slots": [
            {
              "description": "The picker's label. Alternatively, use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "Text that describes how to use the picker. Alternatively, use the `hint` attribute.",
              "name": "hint"
            },
            {
              "description": "An element placed before the segments, inside the field.",
              "name": "start"
            },
            {
              "description": "A row inside the panel, below the calendar and the columns: a note, a legend, a hint about what is barred. Nothing is rendered by default.",
              "name": "footer"
            },
            {
              "description": "A second row for controls, e.g. a \"Today\" button. Nothing is wired — what a control does, and whether the panel closes, is the consumer's own listener.",
              "name": "footer-controls"
            },
            {
              "description": "The glyph on the button that opens the panel. Defaults to a calendar icon, or a clock for `type=\"time\"`.",
              "name": "trigger-icon"
            },
            {
              "description": "The glyph on the clear button. Defaults to an ✕ icon.",
              "name": "clear-icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "validators",
              "type": {
                "text": "Validator[]"
              },
              "default": "[]",
              "static": true,
              "description": "Validators are static because they have `observedAttributes`, essentially attributes to \"watch\"\nfor changes. Whenever these attributes change, we want to be notified and update the validator.",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOn",
              "type": {
                "text": "string[]"
              },
              "default": "['blur', 'input']",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'hint', 'label', 'footer', 'footer-controls')"
            },
            {
              "kind": "field",
              "name": "fieldId",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "popup",
              "type": {
                "text": "EdPopup"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "calendarEl",
              "type": {
                "text": "EdCalendar | undefined"
              },
              "privacy": "private",
              "parsedType": {
                "text": "default | undefined"
              }
            },
            {
              "kind": "field",
              "name": "trigger",
              "type": {
                "text": "HTMLButtonElement | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "lastEmittedValue",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "description": "Debounces duplicate `change` events when the value hasn't transitioned."
            },
            {
              "kind": "field",
              "name": "pendingValue",
              "type": {
                "text": "string | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "valueBeforeOpen",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "description": "What the field held when a confirming panel opened, for Cancel to put back."
            },
            {
              "kind": "field",
              "name": "rangeWarnedFor",
              "type": {
                "text": "string | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The `type` the ignored-`range` warning last fired for, so one combination warns once.",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "rangeBeforeOpen",
              "type": {
                "text": "{ start: string; end: string }"
              },
              "privacy": "private",
              "default": "{ start: '', end: '' }",
              "description": "The same for a range, where the value lives in two properties rather than one."
            },
            {
              "kind": "field",
              "name": "activeGroup",
              "type": {
                "text": "string | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Which half of a range the open panel is serving, when a trigger said so.\n\n`null` means \"ask the roving tab stop\", which is the right answer for the keyboard path: there\nthe focus really is in the field being edited. A pointer press on a trigger moves no focus, so\nit records itself here instead.",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "initialRange",
              "type": {
                "text": "{ start: string; end: string } | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "What a range resets to: the two ends as the markup had them when the element connected.\n\nHeld rather than read back off the attributes, because `start` and `end` reflect — the\nattribute is a mirror of the value, so after one edit it no longer says what the page asked\nfor. `value` avoids this with a second property (`defaultValue`); a range would need two more,\nand the attributes are worth more as a mirror than as a default here.",
              "parsedType": {
                "text": "null | { start: string, end: string }"
              }
            },
            {
              "kind": "field",
              "name": "resetRange",
              "type": {
                "text": "{ start: string; end: string }"
              },
              "privacy": "private",
              "description": "What a range resets to: the markup's two ends, read once and then held.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "segments",
              "type": {
                "text": "DateSegments"
              },
              "privacy": "private",
              "default": "{}",
              "description": "What the date segments hold. Digits the user has typed live here before they compose to a value.",
              "parsedType": {
                "text": "{ year: DateSegments, month: DateSegments, day: DateSegments, quarter: DateSegments, halfYear: DateSegments, week: DateSegments }"
              }
            },
            {
              "kind": "field",
              "name": "startSegments",
              "type": {
                "text": "DateSegments"
              },
              "privacy": "private",
              "default": "{}",
              "description": "And the two halves of a range, which replace the single store above while `range` is set.",
              "parsedType": {
                "text": "{ year: DateSegments, month: DateSegments, day: DateSegments, quarter: DateSegments, halfYear: DateSegments, week: DateSegments }"
              }
            },
            {
              "kind": "field",
              "name": "endSegments",
              "type": {
                "text": "DateSegments"
              },
              "privacy": "private",
              "default": "{}",
              "parsedType": {
                "text": "{ year: DateSegments, month: DateSegments, day: DateSegments, quarter: DateSegments, halfYear: DateSegments, week: DateSegments }"
              }
            },
            {
              "kind": "field",
              "name": "timeSegments",
              "type": {
                "text": "TimeSegments"
              },
              "privacy": "private",
              "default": "{ hour: null, minute: null, second: null, dayPeriod: null }",
              "description": "And what the time segments hold, for `time` and for the time half of `datetime`.\n\nA second store rather than one wider one, because the two halves answer to different rules —\nthe 12-hour split, the AM/PM segment and the step grid belong to the time alone — and the\ncontroller was built for exactly this: it keys everything by `(group, field)` and walks the\nsegments in DOM order, so the arrows cross from the year into the hour without being told."
            },
            {
              "kind": "field",
              "name": "segmentController",
              "privacy": "private",
              "readonly": true,
              "default": "new SegmentedFieldController(this, { getLayout: group => (group === TIME_GROUP ? this.timeLayout : this.layout), isRtl: () => this.localize.dir() === 'rtl', // `picker-only` as well: what it takes away is exactly the typing, which is what this flag // gates in the controller. Per group, so one half of a range can be fixed while the other is // being typed into. isReadonly: group => this.readonly || this.pickerOnly || this.halfReadonly(group), isDisabled: group => this.disabled || this.halfDisabled(group), // One rules object, dispatched by group. The controller passes the group into every rule, which // is what lets the date and the time halves keep their own semantics behind one keyboard. rules: { typeDigit: (group, field, buffer, digit) => this.rulesFor(group).typeDigit(group, field, buffer, digit), step: (group, field, delta) => this.rulesFor(group).step(group, field, delta), bounds: (group, field) => this.rulesFor(group).bounds(group, field), commitBuffer: (group, field, buffer) => this.rulesFor(group).commitBuffer(group, field, buffer), clear: (group, field) => this.rulesFor(group).clear(group, field) }, // Every path that changes a segment ends here, and the rules have already written the store — // so this only has to recompute and report. The one case the rules do not cover is reconciled // in `handleFieldKeyDown`, where it can still be told apart from the others. onCommit: () => this.recomputeValue() })"
            },
            {
              "kind": "field",
              "name": "_value",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The committed value in the form type writes — never a `Date`, exactly as `input.value`\nis always a string. Empty while nothing is chosen or the entry is only partly filled.\n\nFor a `Date`, use valueAsDate, which is UTC. Keeping `Date` out of `value` is what keeps\nthat a property of one named accessor instead of a contract the whole element has to restate."
            },
            {
              "kind": "method",
              "name": "trimSeconds",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "WallClock"
                }
              },
              "parameters": [
                {
                  "name": "fields",
                  "type": {
                    "text": "WallClock"
                  }
                }
              ],
              "description": "Drops the seconds where the field shows no seconds segment, and keeps them where it does."
            },
            {
              "kind": "field",
              "name": "defaultValue",
              "type": {
                "text": "string"
              },
              "description": "The default value used for form reset.",
              "attribute": "value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "type",
              "type": {
                "text": "EdDatePickerType"
              },
              "default": "'date'",
              "description": "What is being chosen. It decides which segments the field shows, what the calendar renders, and\nwhich wire format value is written in — not how the value is shaped in the DOM, which is\nalways a string.\n\nChanging it drops a value the new type cannot read, which is what a native field does on the\nsame change: measured in Chromium, `<input type=\"date\" value=\"2026-08-15\">` switched to\n`type=\"month\"` reports `''`.",
              "attribute": "type",
              "reflects": true,
              "parsedType": {
                "text": "'datetime' | 'year' | 'month' | 'quarter' | 'week' | 'date' | 'halfyear' | 'time'"
              }
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the picker required for form submission.",
              "attribute": "required",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allows the calendar to open but blocks typing and stepping.",
              "attribute": "readonly",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "withClear",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Adds a button that empties the field, and makes Escape empty it.",
              "attribute": "with-clear",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "Controls the component's spacing density without affecting font-size.",
              "attribute": "density",
              "reflects": true,
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "kind": "field",
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style field with rounded edges.",
              "attribute": "pill",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The picker's label. If you need to display HTML, use the `label` slot instead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "min",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Earliest selectable value, in the same form as value. A bound of a different kind is\nignored rather than approximated — measured, that is what a native field does.",
              "attribute": "min",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "max",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Latest selectable value, in the same form as value.",
              "attribute": "max",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "startMin",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The earliest value the first half of a range accepts, where it differs from `min`.\n\nTwo halves of one control can carry different rules — a booking window that opens later than\nit closes, a contract that may not start before today. A half that says nothing of its own is\njudged by `min` and `max`, so the shared pair stays the floor and the ceiling for both.\n\nRead only with `range` set, and only in the wire form the current `type` writes.",
              "attribute": "start-min",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "startMax",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The latest value the first half accepts. See startMin.",
              "attribute": "start-max",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "endMin",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The earliest value the second half accepts. See startMin.",
              "attribute": "end-min",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "endMax",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The latest value the second half accepts. See startMin.",
              "attribute": "end-max",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "startRequired",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Ask for the first half of a range on its own.\n\n`required` asks for the value the control reports, which for a range is its start. The second\nhalf is its own question: \"valid from X, indefinitely\" is an ordinary value in one form and a\nmissing entry in the next, and only the form knows which.",
              "attribute": "start-required",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "endRequired",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Ask for the second half of a range on its own. See startRequired.",
              "attribute": "end-required",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "startDisabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Switch the first half of a range off: no typing, out of the tab order, its own panel button\ndisabled, and — as a native disabled control does — nothing submitted for it and nothing\nvalidated against it.\n\nFor a span with one end that is not in play. Where the end is fixed rather than absent, reach\nfor startReadonly instead: that one is still submitted.",
              "attribute": "start-disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "endDisabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Switch the second half of a range off. See startDisabled.",
              "attribute": "end-disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "startReadonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Fix the first half of a range: it is shown and submitted, but not editable and not open to a pick —\nthe other native half of the pair, for a start that is already agreed while the end is still\nbeing negotiated.",
              "attribute": "start-readonly",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "endReadonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Fix the second half of a range. See startReadonly.",
              "attribute": "end-readonly",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "labelStart",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "What the first half of a range is called, for assistive technology.\n\nWithout it the halves are named \"from\" and \"until\" in the field's own language, which is right\nuntil the two ends have names of their own — check-in and check-out, agreed and expiry. Not\nrendered as visible text: the visible label is `label`, and it names the pair.",
              "attribute": "label-start"
            },
            {
              "kind": "field",
              "name": "labelEnd",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "What the second half is called. See labelStart.",
              "attribute": "label-end"
            },
            {
              "kind": "field",
              "name": "step",
              "type": {
                "text": "number | 'any'"
              },
              "default": "60",
              "description": "Granularity of the time in **seconds**, as HTML defines it, or `'any'` for every second. It\ndecides two things: whether the field shows a seconds segment, and which values the popup's\ncolumns offer.\n\nThe grid is counted from `min` where there is one, otherwise from the `value` attribute,\notherwise from midnight — the platform's own rule, so `min=\"09:07\"` with `step=\"900\"` offers\n09:07, 09:22, 09:37 and 09:52 rather than the quarter hours. Only read by `time` and\n`datetime`.",
              "attribute": "step",
              "parsedType": {
                "text": "number | 'any'"
              }
            },
            {
              "kind": "field",
              "name": "hourFormat",
              "type": {
                "text": "EdDatePickerHourFormat"
              },
              "default": "'auto'",
              "description": "How the hour is written. `auto` asks the locale, which is what a native field does.",
              "attribute": "hour-format",
              "reflects": true,
              "parsedType": {
                "text": "'auto' | '12' | '24'"
              }
            },
            {
              "kind": "field",
              "name": "range",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Picks a stretch rather than a point: two fields sharing one calendar.\n\nstart and end are the two values, each in the form `type` writes, and **`end`\nmay stand empty** — \"from here on, open\" is the ordinary case for a contract or a tariff, and\none that a single field holding both ends cannot express at all. value is not used in\nthis mode.\n\nOnly for `type=\"date\"` so far. A range of quarters and a span of clock times are each their own\nquestion — \"from 14:00 until 09:00\" has no meaning without one being settled.",
              "attribute": "range",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "rangeApplies",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether the range actually applies: `type=\"date\"` and nothing else, which is the one place\n`ed-calendar` builds a range strategy (`calendar.ts`, `_rangeApplies`). The two have to answer\nthis the same way — a picker showing two fields over a calendar holding one value binds two\nends the calendar parks and never applies, and reads two empty strings back on the first pick.\n\n`time` and `datetime` fail for a second reason: a second row would render a second copy of the\none time-segment group, giving two segments the same `(group, field)` key — two tab stops, one\nstore, and a value neither half could compose.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "start",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The first end of a range, in the form type writes. Only read while range is set.",
              "attribute": "start",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "end",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The second end. May stand empty, which is an open-ended period rather than an unfinished one.",
              "attribute": "end",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The calendar's open state. Reflected, so `[open]` styles the field while it is showing.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "placement",
              "type": {
                "text": "'top' | 'bottom'"
              },
              "default": "'bottom'",
              "description": "Where the calendar is placed relative to the field.",
              "attribute": "placement",
              "reflects": true,
              "parsedType": {
                "text": "'top' | 'bottom'"
              }
            },
            {
              "kind": "field",
              "name": "locale",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "BCP-47 locale override for the **order of the segments** and the separators between them. When\nempty, the inherited `lang` attribute is used.\n\nThe wording of everything else — the segment labels, the placeholders, the calendar's month\nnames — follows `lang`, because that is what `LocalizeController` reads. Set both to move the\ntwo together.",
              "attribute": "locale",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "format",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The order the field draws its segments in, and what sits between them — `\"DD.MM.YYYY\"`,\n`\"YYYY-MM-DD\"`, `\"M/D/YYYY\"`. Empty asks the locale, which is the default.\n\nThe vocabulary is Moment's, in the cut dayjs ships: `DD`/`D` for the day, `MM`/`M` for the month\nas digits, `MMMM`/`MMM` for its name, `YYYY`/`YY` for the year, and `[…]` around text that would\notherwise read as tokens. It is **not** Unicode LDML, whose lowercase spellings are refused\nrather than misread.\n\n`YY` draws two digits and changes nothing else: the value keeps all four, and a typed pair reads\nthrough Moment's pivot — `00`–`68` forward, `69`–`99` back.\n\nA named month is as wide as its word, so what sits beside it shifts as the month changes. Its\nplaceholder stays `mm`: the placeholder names the field, and predicting the word's width is not\nits job.\n\n`type` decides *which* segments there are; this decides only how they are drawn. A format naming\nanything else is ignored with a warning and the locale is used — a consumer who wants a month\nand a year asks for `type=\"month\"`. On `type=\"quarter\"`, `\"halfyear\"`, `\"week\"` and `\"time\"`\nthere is nothing to reorder, and a format is ignored in silence so that a wrapper may pass one\nto every picker it renders.\n\nThe value never moves: `type` alone decides the wire format a consumer reads and submits.",
              "attribute": "format",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "firstDayOfWeek",
              "type": {
                "text": "EdCalendarFirstDay"
              },
              "default": "'auto'",
              "description": "The first day of the week in the calendar, ISO-numbered: 1 is Monday, 7 is Sunday. `auto` reads\nthe locale, falling back to Monday where the browser cannot answer — `getWeekInfo()` does not\nexist in Firefox.",
              "attribute": "first-day-of-week",
              "parsedType": {
                "text": "1 | 2 | 3 | 4 | 5 | 6 | 7 | 'auto'"
              }
            },
            {
              "kind": "field",
              "name": "showWeekNumbers",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows the ISO week number beside each row of the calendar.",
              "attribute": "show-week-numbers",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "defaultMonth",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The page the calendar opens on while nothing is selected, as `YYYY-MM` or a full day. A\nselected value always wins — it is the page the user is looking for.\n\nToday is only the right guess where the consumer has none: a booking form knows the season, a\npayroll form knows the period. There is no native counterpart to follow here — `<input\ntype=\"date\">` gives no say over the picker it opens — so this is the calendar's own attribute,\npassed through.",
              "attribute": "default-month"
            },
            {
              "kind": "field",
              "name": "panels",
              "type": {
                "text": "number"
              },
              "default": "2",
              "description": "How many month panels the calendar shows, `1` or `2`. Only a live range reads it, because two\nlinked months are what make both ends of a span that crosses a month boundary reachable\nwithout paging; everything else shows one.",
              "attribute": "panels"
            },
            {
              "kind": "field",
              "name": "confirm",
              "type": {
                "text": "'auto' | 'always' | 'never'"
              },
              "default": "'auto'",
              "description": "Whether the panel ends with an OK/Cancel row.\n\n`auto` lets the type decide, which is the reason the row exists: a clock cannot be finished in\none pick, so `time` and `datetime` confirm, while a single pick already is the value everywhere\nelse — and a native `<input type=\"date\">` closes its picker on that pick. `always` and `never`\noverrule it, for a form that wants every entry acknowledged or one that wants none.\n\nWhile the row is showing, a pick leaves the panel open: otherwise the OK it offers could never\nbe reached.",
              "attribute": "confirm",
              "parsedType": {
                "text": "'auto' | 'always' | 'never'"
              }
            },
            {
              "kind": "field",
              "name": "pickerOnly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set the value from the panel only: the segments take no digits and report themselves as not\neditable, while the panel stays open for business — a press anywhere on the field opens it,\nsince there is no caret to place.\n\nFor a field where only some values are allowed and the panel is what shows which. Distinct\nfrom `readonly`, which makes the value unchangeable altogether.",
              "attribute": "picker-only",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "inputOnly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The other way round: the field is typed into and there is no panel at all — no button, and\n<kbd>Alt</kbd> + <kbd>↓</kbd> opens nothing.\n\nFor entry by keyboard, where reaching for a panel costs more than typing four digits.",
              "attribute": "input-only",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "autofocus",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Take the focus on load, on the segment the field is entered through — the same one a\n<kbd>Tab</kbd> reaches.\n\nThe attribute is passed to that segment, so the platform decides when it applies, exactly as\nit does for `ed-input`'s inner `<input>`. That means it holds on load and is ignored when set\nlater, which is what a native `autofocus` does.",
              "attribute": "autofocus"
            },
            {
              "kind": "field",
              "name": "isDisabled",
              "type": {
                "text": "(value: string) => boolean | undefined"
              },
              "description": "Decides per value whether it can be chosen. Receives the value in wire form, so the same\nfunction serves a day, a quarter and a time. Set as a property, not an attribute.\n\nFor `datetime` it is asked twice with two different shapes: once per day in the calendar\n(`2026-08-15`) and once per candidate time in the columns (`2026-08-15T09:00`). A function that\nonly means to filter days can return `false` for anything holding a `T`.",
              "parsedType": {
                "text": "{  } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "withLabel",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element.",
              "attribute": "with-label"
            },
            {
              "kind": "field",
              "name": "withHint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element.",
              "attribute": "with-hint"
            },
            {
              "kind": "method",
              "name": "halfDisabled",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "group",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Whether this group is switched off — never true outside a range, which has one group."
            },
            {
              "kind": "method",
              "name": "halfReadonly",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "group",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Whether this group is fixed: shown and submitted, but not editable."
            },
            {
              "kind": "field",
              "name": "lockedHalf",
              "type": {
                "text": "string | null"
              },
              "privacy": "private",
              "description": "The half that cannot be moved at all, `null` when both are in play.\n\nWith one end fixed there is no span left to pick: the calendar's gesture owns both ends — its\nfirst click places the anchor, which **is** the start — so a range calendar would move the very\nhalf that was declared fixed. It picks the free end alone instead, as a single value.",
              "readonly": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "freeHalf",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "description": "The half a pick lands in while the other is fixed.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "servedGroup",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "description": "Which half the open panel is working on, and therefore whose bounds the calendar shows and\nwhich field carries the ring.\n\nThe **gesture** decides it, not the trigger that opened the panel: with a start standing and no\nend, the calendar's next click closes the span, so it lands in the end whichever button was\npressed. Frozen to the trigger's half instead, disjoint per-half bounds made that second click\nimpossible — every day the end accepts sat past the start half's `max`.\n\nBefore the gesture starts, the trigger's own half is the answer: a press records it, and every\nother way in moves the roving tab stop, which says the same. Outside a range there is one group\nand one set of bounds.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "calendarSingleValue",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "description": "What a single-value calendar shows: the value outside a range, and the free end while the other\nhalf is fixed. Empty while both halves are in play, where `start`/`end` carry the selection.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "panelBounds",
              "type": {
                "text": "{ min: string; max: string }"
              },
              "privacy": "private",
              "description": "The bounds behind the panel now open — the served half's, or the shared pair.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "addOpenListeners",
              "privacy": "private",
              "description": "Bound only while the calendar is showing, and registered on the shared dismissible stack.\nWithout the stack, a picker inside a dialog would let one Escape close both: the two document\nlisteners sit on the same node, so neither `preventDefault()` nor `stopPropagation()` hides the\npress from the other."
            },
            {
              "kind": "method",
              "name": "removeOpenListeners",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Focuses the first empty segment, or the first segment when all are filled.\n\nThe predicate has to read the group as well as the field: for a filled `datetime` the date\nstore holds no `hour`, so a group-blind check reported the hour as the first empty segment and\nput the focus there."
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the picker."
            },
            {
              "kind": "method",
              "name": "show",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "description": "Opens the calendar. Resolves once it has finished animating.\n\nNothing happens while the control is disabled or readonly: both make it immutable, and a panel\nwhose picks cannot land is a panel with nothing to do. The platform is stricter still —\n`showPicker()` on an immutable input throws — but this method resolves rather than throws\neverywhere else in the library, so it stays quiet here too."
            },
            {
              "kind": "method",
              "name": "hide",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "description": "Closes the calendar. Resolves once it has finished animating."
            },
            {
              "kind": "field",
              "name": "valueAsDate",
              "type": {
                "text": "Date | null"
              },
              "description": "The committed value as **UTC midnight** — the first instant of what is chosen, which for a week\nis its Monday and for a quarter its first day. `null` while the value is empty or incomplete.\n\nThat is the instant a native `<input type=\"week\">` and `<input type=\"month\">` give, measured in\nChromium and Firefox. Anything that formats in local time has to read it in UTC, or it names\nthe previous day west of Greenwich; passing value skips the question entirely.",
              "parsedType": {
                "text": "null | { toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@535: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "periodStart",
              "type": {
                "text": "Date | null"
              },
              "description": "The first instant of the **period** chosen, as UTC midnight.\n\nFor every type that names a span of days — a day, a week, a month, a quarter, a half-year, a\nyear — this is the same instant valueAsDate reports, and it carries its own name so\nthat reading a span does not depend on knowing the two coincide.\n\n`null` for `type=\"time\"`, which names no period: a clock time has no first day. `valueAsDate`\nanswers there, as the time of day on the epoch. `null` as well while the value is empty and\nthroughout `range` mode, where the value lives in `start` and `end`.",
              "readonly": true,
              "parsedType": {
                "text": "null | { toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@535: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "periodEnd",
              "type": {
                "text": "Date | null"
              },
              "description": "The **last** instant of what is chosen: UTC midnight of the final day, so the span is inclusive\nat both ends. `null` while the value is empty.\n\nDerived rather than stored, because a stored span cannot be told apart from a freely chosen one\nthat happens to line up: `2026-07-01`–`2026-09-30` is only recognizable as Q3 by arithmetic.",
              "readonly": true,
              "parsedType": {
                "text": "null | { toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@535: {  } }"
              }
            },
            {
              "kind": "method",
              "name": "hasSomethingToClear",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "group",
                  "default": "GROUP",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "True while `group` has a value to clear.\n\nPer group rather than for the whole control, because a range renders a field and a clear button\nper end: a button on the empty half would offer to clear nothing, and clearing from either half\nwould take the other end with it."
            },
            {
              "kind": "method",
              "name": "halfLocked",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "group",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Whether this group refuses to be moved at all — fixed or switched off."
            },
            {
              "kind": "method",
              "name": "halfRequired",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "group",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Whether this group is asked for on its own, which is what its segments announce."
            },
            {
              "kind": "method",
              "name": "formResetCallback"
            },
            {
              "kind": "method",
              "name": "formStateRestoreCallback",
              "parameters": [
                {
                  "name": "state",
                  "type": {
                    "text": "string | File | FormData | null"
                  }
                },
                {
                  "name": "reason",
                  "type": {
                    "text": "'autocomplete' | 'restore'"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "period",
              "type": {
                "text": "Period"
              },
              "privacy": "private",
              "description": "Which kind of value the date half names. `time` has no answer here — a bare time names no\nperiod — so it falls back to `date` and hasDatePart is what keeps that from being read.",
              "readonly": true,
              "parsedType": {
                "text": "'datetime' | 'year' | 'month' | 'quarter' | 'halfYear' | 'week' | 'date'"
              }
            },
            {
              "kind": "field",
              "name": "hasDatePart",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "True for every type but `time`.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "hasTimePart",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "True for `time` and `datetime`.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "resolvedLocale",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "formatLayoutCache",
              "type": {
                "text": "{ key: string; outcome: FormatOutcome } | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Keyed on the format and the period, because a render asks and neither changes often.",
              "parsedType": {
                "text": "null | { key: string, outcome: { layout: { tokens: { kind: 'segment', field: string, width?: number | 'short' | 'long' } | { kind: 'literal', text: string }[], order: string[] } } | { refusal: 'width' | 'unreadable' | 'kind' | 'segments' } }"
              }
            },
            {
              "kind": "field",
              "name": "formatOutcome",
              "type": {
                "text": "FormatOutcome | null"
              },
              "privacy": "private",
              "description": "What the consumer's format came to, or `null` wherever the locale decides instead and nothing is\nowed an explanation — unset, or a type that takes no format at all.\n\nThe three conditions in front of the parse are one gate and belong together. `period` reports\n`date` for `type=\"time\"`, a fallback hasDatePart is documented as guarding, so asking\nperiodTakesDateFormat alone would accept a date format for a field with no date segment\nin it.",
              "readonly": true,
              "parsedType": {
                "text": "null | { layout: { tokens: { kind: 'segment', field: string, width?: number | 'short' | 'long' } | { kind: 'literal', text: string }[], order: string[] } } | { refusal: 'width' | 'unreadable' | 'kind' | 'segments' }"
              }
            },
            {
              "kind": "field",
              "name": "layout",
              "type": {
                "text": "SegmentLayout"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "lastWarnedFormatKey",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "hour12",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether the hour is written on a 12-hour face. `auto` asks the locale.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "withSeconds",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether a seconds segment is shown, derived from `step` exactly as a native field derives it:\n`step >= 60` and divisible by 60 shows none, anything finer does. Measured: `<input type=\"time\"\nstep=\"60\">` reports `14:30:15` as a `stepMismatch`, and `step=\"1\"` accepts it.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "timeLayout",
              "type": {
                "text": "SegmentLayout"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "tabStop",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "{ group: string; field: string }"
                }
              },
              "description": "The one segment in the tab order, across both halves.\n\nComputed once for the whole field rather than per group: two independent answers gave the\n`datetime` field **two** tab stops whenever focus sat in the time half — the date half saw an\nactive field its own layout did not contain and fell back to its first segment — and none at\nall after a switch to `type=\"time\"`, where the remembered group no longer renders.\n\nThe active segment wins where it still exists, so Tab returns where the user left off;\notherwise the field's first segment carries it, which is the date half wherever there is one."
            },
            {
              "kind": "method",
              "name": "groupRenders",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "group",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Whether a group has segments on screen right now."
            },
            {
              "kind": "method",
              "name": "rulesFor",
              "privacy": "private",
              "parameters": [
                {
                  "name": "group",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Which rules drive a group — the date half's or the time half's."
            },
            {
              "kind": "field",
              "name": "dateRules",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "yearDigits",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "description": "How many digits the year is drawn to — two only where a format asked for them.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "segmentsFor",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "DateSegments"
                }
              },
              "parameters": [
                {
                  "name": "group",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "The store a group reads from."
            },
            {
              "kind": "method",
              "name": "writeSegments",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "group",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "next",
                  "type": {
                    "text": "DateSegments"
                  }
                }
              ],
              "description": "And the store it writes to."
            },
            {
              "kind": "field",
              "name": "timeRules",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "columnOptions",
              "type": {
                "text": "BuildColumnsOptions"
              },
              "privacy": "private",
              "description": "The options the popup's columns hold, and what judges them.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "timePartOf",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string | undefined"
                }
              },
              "parameters": [
                {
                  "name": "wire",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "The time half of a wire string, or `undefined` when it holds none."
            },
            {
              "kind": "field",
              "name": "stepBaseTime",
              "type": {
                "text": "string | undefined"
              },
              "privacy": "private",
              "description": "The time `min` contributes to the step grid, or `undefined` where it contributes none.\n\nThe kind is checked here as it is for the bound itself: a `2026-08-15T09:07` on a time field is\na bound of another kind, which the platform ignores and `RangeValidator` drops — so it must not\nmove the grid either, or the field offers :07, :22, :37, :52 and calls a quarter hour a\n`stepMismatch` against a bound it otherwise considers irrelevant.\n\nNot timeBound, which for a `datetime` also asks *which day* the bound falls on: the\ngrid is the same on every day (measured in Chromium and Firefox), so only the time of day\ncounts here.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "timeBound",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string | undefined"
                }
              },
              "parameters": [
                {
                  "name": "bound",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "calendarValue",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "description": "What the calendar shows as chosen.\n\nFor a `datetime` that is the day the **segments** hold, not the day the value holds: the value\nstays empty until the clock half is filled, so reading it there left the day the user had just\nclicked unmarked in the grid while the field's own segments showed it.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "calendarBound",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "bound",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "A bound as the calendar reads it — the date half of a `datetime` bound, and nothing at all for\na bound of the wrong kind.\n\nThe kind check is what keeps the panel and the field in agreement. `RangeValidator` drops a\nbound whose kind differs from the value's, following a native field: measured in Chromium,\n`<input type=\"month\" min=\"2026-03-15\">` leaves February valid. The calendar on its own is\ndeliberately more capable — it accepts a day as a bound and greys out the periods before it —\nso passing that bound straight through would grey out a February the field then accepts."
            },
            {
              "kind": "method",
              "name": "datePartOf",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "wire",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "The date half of a wire string, or `''` when it holds none."
            },
            {
              "kind": "field",
              "name": "composedValue",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "description": "The value the two segment stores name together, or `''` while either half is incomplete.\n\n`datetime` is the only type that reads both. The fields are merged and handed to\n`wallClockToWire`, so the `T` and the seconds-or-not come from the one writer rather than from\nstring concatenation here.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "timeWallClock",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Partial<WallClock> | null"
                }
              },
              "description": "The time segments as wall-clock fields, on the 24-hour clock the wire format uses."
            },
            {
              "kind": "method",
              "name": "normalizeIncomingValue",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "val",
                  "type": {
                    "text": "unknown"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "syncSegmentsFromValue",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "submitRange",
              "privacy": "private",
              "description": "A range submits **two** entries rather than one string to parse apart: `name=\"period\"` sends\n`periodStart` and `periodEnd`. `ElementInternals.setFormValue` takes a `FormData`, which is what\nmakes that possible without a hidden input per half.\n\nBoth names are always sent, an empty one included, as every other control here does and as a\nnative field does — measured, `<input type=\"date\" name=\"d\">` sends `d=` rather than dropping the\nentry. An open-ended period is `periodEnd=`, which a server can tell apart from \"not submitted\"."
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<EdFormAssociatedElement['setValue']>"
                  }
                }
              ],
              "description": "Every write of the form value goes through here, so a range rewrites it in one place rather\nthan at each of the call sites the base class and this element have between them.\n\nThe **state** is a single `start/end` string rather than the `FormData`, because that is what\ncomes back through `formStateRestoreCallback` after a navigation, where a `FormData` would have\nto be guessed at.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "recomputeRange",
              "privacy": "private",
              "description": "Recompute both halves of a range from their segments, and report what changed."
            },
            {
              "kind": "method",
              "name": "recomputeValue",
              "privacy": "private",
              "description": "Recompute from the segments after the user has changed one, and report it.\n\nBoth events fire only on a **change of the value**, which is the native contract: typing the\nfirst four of eight digits moves no value, because a half-filled entry composes to `''`, and a\nnative field emits nothing there either. Measured in Chromium, typing `08 15 2026` into an\n`<input type=\"date\">` emits four `input` and four `change` — one per year digit, since\n`0002-08-15` is a complete value on the way to `2026-08-15`. Firefox emits one of each,\npublishing no intermediate value at all.\n\nIt is also what keeps a refused keystroke — a `9` on a quarter — from reporting an edit that\ndid not happen."
            },
            {
              "kind": "method",
              "name": "commitSegments",
              "privacy": "private",
              "description": "Write the segments through as the value, reporting `input` and `change` like a user edit."
            },
            {
              "kind": "method",
              "name": "settled",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "description": "Resolve once the open-state transition settles, whichever way it went."
            },
            {
              "kind": "field",
              "name": "handleDocumentKeyDown",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDocumentMouseDown",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleFieldMouseDown",
              "privacy": "private",
              "description": "A press on the field's padding, on a separator or on the empty stretch beside the segments puts\nthe focus on a segment — a native field focuses one wherever you click inside it. A press that\nlanded on a segment already is left alone, or it would be moved out from under the pointer."
            },
            {
              "kind": "field",
              "name": "handleTriggerClick",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleTriggerKeyDown",
              "privacy": "private",
              "description": "The same `Alt+ArrowDown` the segments answer to. Escape puts the focus back on this button, so\nwithout it the shortcut could open the calendar once and never again."
            },
            {
              "kind": "field",
              "name": "handleClearClick",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleFieldKeyDown",
              "privacy": "private",
              "description": "The field's own keys, tried before the controller's. `Alt+ArrowDown` opens the calendar, which\nis what a native `<input type=\"date\">` does; a plain `ArrowDown` steps the segment, so it cannot\nalso open."
            },
            {
              "kind": "field",
              "name": "handleCalendarChange",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "calendarType",
              "type": {
                "text": "EdCalendarType"
              },
              "privacy": "private",
              "description": "What the calendar draws. The six kinds it knows are spelled the way the attribute is; `datetime`\npicks a day there and leaves the clock to the columns beside it, and `time` renders no calendar\nat all.",
              "readonly": true,
              "parsedType": {
                "text": "'year' | 'month' | 'quarter' | 'week' | 'date' | 'halfyear'"
              }
            },
            {
              "kind": "method",
              "name": "renderSegmentRow",
              "privacy": "private",
              "parameters": [
                {
                  "name": "group",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "userInvalid",
                  "type": {
                    "text": "boolean"
                  }
                },
                {
                  "name": "describedBy",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "One row of segments: the date half, the time half where the type has one, and the separators\nbetween them.\n\nTakes the group so a range can render the same row twice, once per end. Everything below keys\non `(group, field)` the way the controller does, which is what lets two rows share one keyboard\n— the arrows walk the segments in DOM order and cross from one field into the next."
            },
            {
              "kind": "method",
              "name": "renderField",
              "privacy": "private",
              "parameters": [
                {
                  "name": "group",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "userInvalid",
                  "type": {
                    "text": "boolean"
                  }
                },
                {
                  "name": "describedBy",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "slotName",
                  "optional": true,
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "One field: the box with the segments in it, its clear button and its trigger.\n\nA range renders this twice rather than putting six segments in one box. The plan settles it\nthat way — \"MUI and WebAwesome build a single field with start and end segments. We do not\" —\nand the reasons are structural rather than visual: each end is a form entry of its own, is\ncomplete or empty on its own, and carries its own `badInput`. Two boxes are what says that.\n\n`slotName` places the popup's anchor: on the single field when there is one, and on the row\naround both when there are two, so the panel is centred under the pair rather than under one\nof them."
            },
            {
              "kind": "method",
              "name": "renderSeparator",
              "privacy": "private",
              "parameters": [
                {
                  "name": "text",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "One inert literal between two segments.\n\nA literal that is nothing but whitespace gets a class of its own, because a span holding only a\nspace collapses to **zero** width between two flex items — `Q2 2026` and `03:30 PM` came out\nwith the two halves touching. The width is CSS's to give; the marker only says which literals\ncarry no glyph. `\\s` alone would miss the no-break space `Intl` puts before AM/PM, so the test\nis `trim()`, which treats every kind of space alike."
            },
            {
              "kind": "field",
              "name": "needsConfirm",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "True where one pick cannot finish the value, and the panel therefore needs a way to say \"done\".\n\nA clock is set from two or three columns, and a datetime from a day plus that clock: closing on\nthe first of them would take the panel away mid-entry. Every other type is one choice, and\nthere the click that makes it is the one that ends it — a footer would be a second step for\nnothing.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "renderSlottedFooter",
              "privacy": "private",
              "description": "The consumer's own rows under the panel, above OK/Cancel where there is one.\n\nEach row is hidden while its slot is empty, so it costs no space and no border, and it stays in\nthe shadow root either way so content slotted in later still reaches it. Nothing is wired: a\ncontrol in here does what the consumer's own listener says, and the panel does not close for it."
            },
            {
              "kind": "method",
              "name": "renderPanelFooter",
              "privacy": "private",
              "description": "OK and Cancel under the panel.\n\nOK is disabled while the value is incomplete, so the button says whether the entry is finished\nrather than accepting half of one. Cancel puts back what the field held when the panel opened —\nthe picks made inside it were provisional, which is the whole point of confirming."
            },
            {
              "kind": "field",
              "name": "entryIsComplete",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether there is a whole entry to accept — what OK reads.\n\nA range's value lives in `start`/`end`, and `value` stays empty there by design, so reading\n`value` alone left OK disabled for every range no matter what was picked.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "handlePanelOk",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handlePanelCancel",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "syncCalendarFromValue",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "calendar",
                  "type": {
                    "text": "EdCalendar"
                  }
                }
              ],
              "description": "Write the field's own value back onto the calendar, for the cases where the binding cannot.\n\nLit skips a property whose bound value is unchanged, which is exactly the situation after a\nrefused pick: the calendar moved, the field did not, so the two disagree until something else\nhappens to move the binding."
            },
            {
              "kind": "field",
              "name": "triggerTerm",
              "type": {
                "text": "'selectDate' | 'selectTime' | 'selectDateTime'"
              },
              "privacy": "private",
              "description": "Which term names the trigger and the panel — a date, a time, or both.",
              "readonly": true,
              "parsedType": {
                "text": "'selectDate' | 'selectTime' | 'selectDateTime'"
              }
            },
            {
              "kind": "field",
              "name": "panelTerm",
              "type": {
                "text": "'chooseDate' | 'chooseTime' | 'chooseDateAndTime'"
              },
              "privacy": "private",
              "readonly": true,
              "parsedType": {
                "text": "'chooseDate' | 'chooseTime' | 'chooseDateAndTime'"
              }
            },
            {
              "kind": "method",
              "name": "renderTimeSegment",
              "privacy": "private",
              "parameters": [
                {
                  "name": "field",
                  "type": {
                    "text": "TimeField"
                  }
                },
                {
                  "name": "userInvalid",
                  "type": {
                    "text": "boolean"
                  }
                },
                {
                  "name": "describedBy",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "A time segment. Same shape as a date segment, with one difference the format forces: the\nday-period segment holds a word rather than a number, so `aria-valuetext` carries the word\nwhile `aria-valuenow` carries the 0 or 1 behind it — the range `timeSegmentBounds` reports for\nthat field."
            },
            {
              "kind": "method",
              "name": "renderTimeColumns",
              "privacy": "private",
              "description": "The time half of the popup: one listbox per segment, side by side.\n\nA column is a list of what can be chosen rather than a range with holes — a quarter-hour step\ngives four minutes, not sixty with fifty-six greyed out — and an option is judged by the value a\nclick on it would produce. `min`/`max` reach these lists, which is the defect the old family had\nand the reason the model sits beside the element rather than inside a separate component."
            },
            {
              "kind": "method",
              "name": "renderTimeColumn",
              "privacy": "private",
              "parameters": [
                {
                  "name": "column",
                  "type": {
                    "text": "TimeColumn"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleColumnKeyDown",
              "privacy": "private",
              "description": "The keyboard of one column, following the APG's listbox pattern: the arrows move focus between\noptions, Home and End go to the ends, and **the selection moves with the focus** — the pattern\ncalls that optional for a single-select listbox, and it is the right half of the option here,\nbecause a column of times is a wheel to turn rather than a list to browse.\n\nLeft and Right cross to the neighboring column, which the pattern does not cover: it describes\none listbox, and this is a row of them making one choice together. The calendar's grid takes\nthe same liberty for the same reason."
            },
            {
              "kind": "method",
              "name": "focusFirstColumn",
              "privacy": "private",
              "description": "Focus the tab stop of the first column, and bring it into view."
            },
            {
              "kind": "method",
              "name": "handleTimeOptionClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "field",
                  "type": {
                    "text": "TimeField"
                  }
                },
                {
                  "name": "value",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "disabled",
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "announcedText",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "field",
                  "type": {
                    "text": "DateField"
                  }
                },
                {
                  "name": "value",
                  "type": {
                    "text": "number | null"
                  }
                },
                {
                  "name": "buffer",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "term",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "text",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "digits",
                  "optional": true,
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "What a screen reader hears, which is not always what the field draws.\n\n`aria-valuetext` replaces `aria-valuenow` in the announcement, so it is for a number that would\nnot be understood on its own — \"March\" for 3, \"AM\" for 0. A **two-digit year is not that case**:\n2026 is perfectly meaningful, and announcing `26` instead names a different year that the\nsegment's own 1–9999 range makes plausible. So the drawing is shortened and the announcement is\nnot.\n\nAn empty segment announces its full term for the same reason `d` would be a poor thing to hear."
            },
            {
              "kind": "method",
              "name": "renderSegment",
              "privacy": "private",
              "parameters": [
                {
                  "name": "field",
                  "type": {
                    "text": "DateField"
                  }
                },
                {
                  "name": "userInvalid",
                  "type": {
                    "text": "boolean"
                  }
                },
                {
                  "name": "describedBy",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "group",
                  "default": "GROUP",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "width",
                  "optional": true,
                  "type": {
                    "text": "number | 'short' | 'long'"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleLabelClick",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "attribute": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "attribute": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "attribute": "ai",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "attribute": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "attribute": "name",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#fieldsetDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set by `formDisabledCallback`, i.e. an ancestor `<fieldset>`. Never written by a consumer.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#ownDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The disabled state this element was given directly, via its property or its attribute.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "attribute": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOnMode",
              "type": {
                "text": "'combined' | 'separated' | string"
              },
              "default": "'combined'",
              "parsedType": {
                "text": "string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "text": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "parsedType": {
                "text": "HTMLElement & { value: unknown } | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "valueHasChanged",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasInteracted",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_customValidityMessage",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_isCheckingValidity",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set while `checkValidity()` is executing so the `invalid` event handler can distinguish\na programmatic check (no UI side-effects per spec) from `reportValidity()` / native form\nsubmission (which should surface the error UI and focus the first invalid control).",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emittedEvents",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "states",
              "type": {
                "text": "CustomStateSet"
              },
              "parsedType": {
                "text": "any"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleSubmitOnEnter",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleClearOnEscape",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emitInvalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleInteraction",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "labels",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getForm",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "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": {
                "text": "HTMLFormElement | null"
              },
              "parsedType": {
                "text": "null | HTMLFormElement"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validity",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "willValidate",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationMessage",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "checkValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Override this to change where constraint validation popups are anchored.",
              "readonly": true,
              "parsedType": {
                "text": "HTMLElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValidity",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setValidity>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "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.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "allValidators",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "resetValidity",
              "description": "Reset validity is a way of removing manual custom errors and native validation.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "name": "input",
              "type": {
                "text": "InputEvent"
              },
              "description": "Emitted as the user types in any segment.",
              "reactName": "onInput",
              "eventName": "InputEvent"
            },
            {
              "name": "change",
              "type": {
                "text": "Event"
              },
              "description": "Emitted when the committed value transitions to a new one.",
              "reactName": "onChange",
              "eventName": "ChangeEvent"
            },
            {
              "description": "Emitted when the control loses focus.",
              "name": "blur",
              "reactName": "onBlur",
              "eventName": "BlurEvent"
            },
            {
              "description": "Emitted when the control gains focus.",
              "name": "focus",
              "reactName": "onFocus",
              "eventName": "FocusEvent"
            },
            {
              "type": {
                "text": "EdCalendarPageChangeEvent"
              },
              "description": "Passed on from the calendar in the panel: the page on screen moved. The detail carries `page` as a wire string. Useful for loading what belongs to the month being looked at.",
              "name": "ed-calendar-page-change",
              "reactName": "onEdCalendarPageChange",
              "eventName": "EdCalendarPageChangeEvent"
            },
            {
              "description": "Emitted when the value is cleared through the clear button or Escape.",
              "name": "ed-clear",
              "reactName": "onEdClear",
              "eventName": "EdClearEvent"
            },
            {
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied.",
              "name": "ed-invalid",
              "reactName": "onEdInvalid",
              "eventName": "EdInvalidEvent"
            },
            {
              "description": "Emitted when the panel opens. Cancelable; calling `preventDefault()` keeps it closed.",
              "name": "ed-show",
              "reactName": "onEdShow",
              "eventName": "EdShowEvent"
            },
            {
              "description": "Emitted after the panel opens and its animation has finished.",
              "name": "ed-after-show",
              "reactName": "onEdAfterShow",
              "eventName": "EdAfterShowEvent"
            },
            {
              "description": "Emitted when the panel closes. Cancelable; calling `preventDefault()` keeps it open.",
              "name": "ed-hide",
              "reactName": "onEdHide",
              "eventName": "EdHideEvent"
            },
            {
              "description": "Emitted after the panel closes and its animation has finished.",
              "name": "ed-after-hide",
              "reactName": "onEdAfterHide",
              "eventName": "EdAfterHideEvent"
            }
          ],
          "attributes": [
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The default value used for form reset.",
              "fieldName": "defaultValue"
            },
            {
              "name": "type",
              "type": {
                "text": "EdDatePickerType"
              },
              "default": "'date'",
              "description": "What is being chosen. It decides which segments the field shows, what the calendar renders, and\nwhich wire format value is written in — not how the value is shaped in the DOM, which is\nalways a string.\n\nChanging it drops a value the new type cannot read, which is what a native field does on the\nsame change: measured in Chromium, `<input type=\"date\" value=\"2026-08-15\">` switched to\n`type=\"month\"` reports `''`.",
              "fieldName": "type",
              "parsedType": {
                "text": "'datetime' | 'year' | 'month' | 'quarter' | 'week' | 'date' | 'halfyear' | 'time'"
              }
            },
            {
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the picker required for form submission.",
              "fieldName": "required"
            },
            {
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allows the calendar to open but blocks typing and stepping.",
              "fieldName": "readonly"
            },
            {
              "name": "with-clear",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Adds a button that empties the field, and makes Escape empty it.",
              "fieldName": "withClear"
            },
            {
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "Controls the component's spacing density without affecting font-size.",
              "fieldName": "density",
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style field with rounded edges.",
              "fieldName": "pill"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The picker's label. If you need to display HTML, use the `label` slot instead.",
              "fieldName": "label"
            },
            {
              "name": "min",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Earliest selectable value, in the same form as value. A bound of a different kind is\nignored rather than approximated — measured, that is what a native field does.",
              "fieldName": "min"
            },
            {
              "name": "max",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Latest selectable value, in the same form as value.",
              "fieldName": "max"
            },
            {
              "name": "start-min",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The earliest value the first half of a range accepts, where it differs from `min`.\n\nTwo halves of one control can carry different rules — a booking window that opens later than\nit closes, a contract that may not start before today. A half that says nothing of its own is\njudged by `min` and `max`, so the shared pair stays the floor and the ceiling for both.\n\nRead only with `range` set, and only in the wire form the current `type` writes.",
              "fieldName": "startMin"
            },
            {
              "name": "start-max",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The latest value the first half accepts. See startMin.",
              "fieldName": "startMax"
            },
            {
              "name": "end-min",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The earliest value the second half accepts. See startMin.",
              "fieldName": "endMin"
            },
            {
              "name": "end-max",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The latest value the second half accepts. See startMin.",
              "fieldName": "endMax"
            },
            {
              "name": "start-required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Ask for the first half of a range on its own.\n\n`required` asks for the value the control reports, which for a range is its start. The second\nhalf is its own question: \"valid from X, indefinitely\" is an ordinary value in one form and a\nmissing entry in the next, and only the form knows which.",
              "fieldName": "startRequired"
            },
            {
              "name": "end-required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Ask for the second half of a range on its own. See startRequired.",
              "fieldName": "endRequired"
            },
            {
              "name": "start-disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Switch the first half of a range off: no typing, out of the tab order, its own panel button\ndisabled, and — as a native disabled control does — nothing submitted for it and nothing\nvalidated against it.\n\nFor a span with one end that is not in play. Where the end is fixed rather than absent, reach\nfor startReadonly instead: that one is still submitted.",
              "fieldName": "startDisabled"
            },
            {
              "name": "end-disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Switch the second half of a range off. See startDisabled.",
              "fieldName": "endDisabled"
            },
            {
              "name": "start-readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Fix the first half of a range: it is shown and submitted, but not editable and not open to a pick —\nthe other native half of the pair, for a start that is already agreed while the end is still\nbeing negotiated.",
              "fieldName": "startReadonly"
            },
            {
              "name": "end-readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Fix the second half of a range. See startReadonly.",
              "fieldName": "endReadonly"
            },
            {
              "name": "label-start",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "What the first half of a range is called, for assistive technology.\n\nWithout it the halves are named \"from\" and \"until\" in the field's own language, which is right\nuntil the two ends have names of their own — check-in and check-out, agreed and expiry. Not\nrendered as visible text: the visible label is `label`, and it names the pair.",
              "fieldName": "labelStart"
            },
            {
              "name": "label-end",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "What the second half is called. See labelStart.",
              "fieldName": "labelEnd"
            },
            {
              "name": "step",
              "type": {
                "text": "number | 'any'"
              },
              "default": "60",
              "description": "Granularity of the time in **seconds**, as HTML defines it, or `'any'` for every second. It\ndecides two things: whether the field shows a seconds segment, and which values the popup's\ncolumns offer.\n\nThe grid is counted from `min` where there is one, otherwise from the `value` attribute,\notherwise from midnight — the platform's own rule, so `min=\"09:07\"` with `step=\"900\"` offers\n09:07, 09:22, 09:37 and 09:52 rather than the quarter hours. Only read by `time` and\n`datetime`.",
              "fieldName": "step",
              "parsedType": {
                "text": "number | 'any'"
              }
            },
            {
              "name": "hour-format",
              "type": {
                "text": "EdDatePickerHourFormat"
              },
              "default": "'auto'",
              "description": "How the hour is written. `auto` asks the locale, which is what a native field does.",
              "fieldName": "hourFormat",
              "parsedType": {
                "text": "'auto' | '12' | '24'"
              }
            },
            {
              "name": "range",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Picks a stretch rather than a point: two fields sharing one calendar.\n\nstart and end are the two values, each in the form `type` writes, and **`end`\nmay stand empty** — \"from here on, open\" is the ordinary case for a contract or a tariff, and\none that a single field holding both ends cannot express at all. value is not used in\nthis mode.\n\nOnly for `type=\"date\"` so far. A range of quarters and a span of clock times are each their own\nquestion — \"from 14:00 until 09:00\" has no meaning without one being settled.",
              "fieldName": "range"
            },
            {
              "name": "start",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The first end of a range, in the form type writes. Only read while range is set.",
              "fieldName": "start"
            },
            {
              "name": "end",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The second end. May stand empty, which is an open-ended period rather than an unfinished one.",
              "fieldName": "end"
            },
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The calendar's open state. Reflected, so `[open]` styles the field while it is showing.",
              "fieldName": "open"
            },
            {
              "name": "placement",
              "type": {
                "text": "'top' | 'bottom'"
              },
              "default": "'bottom'",
              "description": "Where the calendar is placed relative to the field.",
              "fieldName": "placement",
              "parsedType": {
                "text": "'top' | 'bottom'"
              }
            },
            {
              "name": "locale",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "BCP-47 locale override for the **order of the segments** and the separators between them. When\nempty, the inherited `lang` attribute is used.\n\nThe wording of everything else — the segment labels, the placeholders, the calendar's month\nnames — follows `lang`, because that is what `LocalizeController` reads. Set both to move the\ntwo together.",
              "fieldName": "locale"
            },
            {
              "name": "format",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The order the field draws its segments in, and what sits between them — `\"DD.MM.YYYY\"`,\n`\"YYYY-MM-DD\"`, `\"M/D/YYYY\"`. Empty asks the locale, which is the default.\n\nThe vocabulary is Moment's, in the cut dayjs ships: `DD`/`D` for the day, `MM`/`M` for the month\nas digits, `MMMM`/`MMM` for its name, `YYYY`/`YY` for the year, and `[…]` around text that would\notherwise read as tokens. It is **not** Unicode LDML, whose lowercase spellings are refused\nrather than misread.\n\n`YY` draws two digits and changes nothing else: the value keeps all four, and a typed pair reads\nthrough Moment's pivot — `00`–`68` forward, `69`–`99` back.\n\nA named month is as wide as its word, so what sits beside it shifts as the month changes. Its\nplaceholder stays `mm`: the placeholder names the field, and predicting the word's width is not\nits job.\n\n`type` decides *which* segments there are; this decides only how they are drawn. A format naming\nanything else is ignored with a warning and the locale is used — a consumer who wants a month\nand a year asks for `type=\"month\"`. On `type=\"quarter\"`, `\"halfyear\"`, `\"week\"` and `\"time\"`\nthere is nothing to reorder, and a format is ignored in silence so that a wrapper may pass one\nto every picker it renders.\n\nThe value never moves: `type` alone decides the wire format a consumer reads and submits.",
              "fieldName": "format"
            },
            {
              "name": "first-day-of-week",
              "type": {
                "text": "EdCalendarFirstDay"
              },
              "default": "'auto'",
              "description": "The first day of the week in the calendar, ISO-numbered: 1 is Monday, 7 is Sunday. `auto` reads\nthe locale, falling back to Monday where the browser cannot answer — `getWeekInfo()` does not\nexist in Firefox.",
              "fieldName": "firstDayOfWeek",
              "parsedType": {
                "text": "1 | 2 | 3 | 4 | 5 | 6 | 7 | 'auto'"
              }
            },
            {
              "name": "show-week-numbers",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows the ISO week number beside each row of the calendar.",
              "fieldName": "showWeekNumbers"
            },
            {
              "name": "default-month",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The page the calendar opens on while nothing is selected, as `YYYY-MM` or a full day. A\nselected value always wins — it is the page the user is looking for.\n\nToday is only the right guess where the consumer has none: a booking form knows the season, a\npayroll form knows the period. There is no native counterpart to follow here — `<input\ntype=\"date\">` gives no say over the picker it opens — so this is the calendar's own attribute,\npassed through.",
              "fieldName": "defaultMonth"
            },
            {
              "name": "panels",
              "type": {
                "text": "number"
              },
              "default": "2",
              "description": "How many month panels the calendar shows, `1` or `2`. Only a live range reads it, because two\nlinked months are what make both ends of a span that crosses a month boundary reachable\nwithout paging; everything else shows one.",
              "fieldName": "panels"
            },
            {
              "name": "confirm",
              "type": {
                "text": "'auto' | 'always' | 'never'"
              },
              "default": "'auto'",
              "description": "Whether the panel ends with an OK/Cancel row.\n\n`auto` lets the type decide, which is the reason the row exists: a clock cannot be finished in\none pick, so `time` and `datetime` confirm, while a single pick already is the value everywhere\nelse — and a native `<input type=\"date\">` closes its picker on that pick. `always` and `never`\noverrule it, for a form that wants every entry acknowledged or one that wants none.\n\nWhile the row is showing, a pick leaves the panel open: otherwise the OK it offers could never\nbe reached.",
              "fieldName": "confirm",
              "parsedType": {
                "text": "'auto' | 'always' | 'never'"
              }
            },
            {
              "name": "picker-only",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set the value from the panel only: the segments take no digits and report themselves as not\neditable, while the panel stays open for business — a press anywhere on the field opens it,\nsince there is no caret to place.\n\nFor a field where only some values are allowed and the panel is what shows which. Distinct\nfrom `readonly`, which makes the value unchangeable altogether.",
              "fieldName": "pickerOnly"
            },
            {
              "name": "input-only",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The other way round: the field is typed into and there is no panel at all — no button, and\n<kbd>Alt</kbd> + <kbd>↓</kbd> opens nothing.\n\nFor entry by keyboard, where reaching for a panel costs more than typing four digits.",
              "fieldName": "inputOnly"
            },
            {
              "name": "autofocus",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Take the focus on load, on the segment the field is entered through — the same one a\n<kbd>Tab</kbd> reaches.\n\nThe attribute is passed to that segment, so the platform decides when it applies, exactly as\nit does for `ed-input`'s inner `<input>`. That means it holds on load and is ignored when set\nlater, which is what a native `autofocus` does.",
              "fieldName": "autofocus"
            },
            {
              "name": "with-label",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element.",
              "fieldName": "withLabel"
            },
            {
              "name": "with-hint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element.",
              "fieldName": "withHint"
            },
            {
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "fieldName": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "fieldName": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "fieldName": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "fieldName": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "fieldName": "name",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "fieldName": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "The picker has no committed value.",
              "name": "blank"
            },
            {
              "description": "The picker is picking a stretch rather than a point.",
              "name": "range"
            },
            {
              "description": "The picker is disabled.",
              "name": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The calendar is open.",
              "name": "open"
            },
            {
              "description": "The control is required.",
              "name": "required",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is not required.",
              "name": "optional",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value fails constraint validation, whether or not the user has touched the control yet.",
              "name": "invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value passes constraint validation.",
              "name": "valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Invalid, and the user has interacted with the control. This is the one to style for an error: it behaves like the platform's `:user-invalid`, so an untouched field is not marked wrong before the user has had a chance to fill it in.",
              "name": "user-invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Valid, and the user has interacted with the control.",
              "name": "user-valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The user has interacted with the control.",
              "name": "dirty",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `error` property is set, or the control is `user-invalid`.",
              "name": "error",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `warning` property is set.",
              "name": "warning",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `ai` property is set and the user has not interacted with the control yet.",
              "name": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdFormAssociatedElement",
            "module": "/src/internal/ed-form-associated-element.js"
          },
          "summary": "Date pickers let users choose a point on the calendar or the clock — a day, a time, both\nat once, or a week, month, quarter, half-year or year — by typing it into a segmented field or\npicking it from a calendar.",
          "jsDoc": "/**\n * @summary Date pickers let users choose a point on the calendar or the clock — a day, a time, both\n *  at once, or a week, month, quarter, half-year or year — by typing it into a segmented field or\n *  picking it from a calendar.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/date-picker\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-button\n * @dependency ed-calendar\n * @dependency ed-icon\n * @dependency ed-popup\n *\n * @slot label - The picker's label. Alternatively, use the `label` attribute.\n * @slot hint - Text that describes how to use the picker. Alternatively, use the `hint` attribute.\n * @slot start - An element placed before the segments, inside the field.\n * @slot footer - A row inside the panel, below the calendar and the columns: a note, a legend, a hint about what is barred. Nothing is rendered by default.\n * @slot footer-controls - A second row for controls, e.g. a \"Today\" button. Nothing is wired — what a control does, and whether the panel closes, is the consumer's own listener.\n * @slot trigger-icon - The glyph on the button that opens the panel. Defaults to a calendar icon, or a clock for `type=\"time\"`.\n * @slot clear-icon - The glyph on the clear button. Defaults to an ✕ icon.\n *\n * @event blur - Emitted when the control loses focus.\n * @event change - Emitted when the committed value transitions to a new one.\n * @event focus - Emitted when the control gains focus.\n * @event input - Emitted as the user types in any segment.\n * @event {EdCalendarPageChangeEvent} ed-calendar-page-change - Passed on from the calendar in the panel: the page on screen moved. The detail carries `page` as a wire string. Useful for loading what belongs to the month being looked at.\n * @event ed-clear - Emitted when the value is cleared through the clear button or Escape.\n * @event ed-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n * @event ed-show - Emitted when the panel opens. Cancelable; calling `preventDefault()` keeps it closed.\n * @event ed-after-show - Emitted after the panel opens and its animation has finished.\n * @event ed-hide - Emitted when the panel closes. Cancelable; calling `preventDefault()` keeps it open.\n * @event ed-after-hide - Emitted after the panel closes and its animation has finished.\n *\n * @csspart form-control - The form control's outer wrapper.\n * @csspart form-control-label - The label's wrapper.\n * @csspart form-control-input - The wrapper around the field.\n * @csspart message - The state message: an error, a warning, or the AI note.\n * @csspart hint - The hint's wrapper.\n * @csspart base - The field itself, holding the segments and both buttons. A range renders two.\n * @csspart base-start - Added to the first field of a range.\n * @csspart base-end - Added to the second field of a range.\n * @csspart start - The wrapper around the `start` slot.\n * @csspart range - The wrapper holding both fields of a range.\n * @csspart range-separator - The dash between them.\n * @csspart segments - The row of segments and separators. A range renders two.\n * @csspart segment - Any editable segment.\n * @csspart segment-day - Added to the day segment.\n * @csspart segment-month - Added to the month segment.\n * @csspart segment-year - Added to the year segment.\n * @csspart segment-week - Added to the week segment.\n * @csspart segment-quarter - Added to the quarter segment.\n * @csspart segment-half-year - Added to the half-year segment.\n * @csspart segment-hour - Added to the hour segment.\n * @csspart segment-minute - Added to the minute segment.\n * @csspart segment-second - Added to the second segment.\n * @csspart segment-day-period - Added to the AM/PM segment.\n * @csspart separator - Inert text between two segments.\n * @csspart separator-gap - Added to a separator that carries no glyph, only space — between a quarter and its year, or before AM/PM. It is sized as a box, since a span holding one space is a flex item of zero width.\n * @csspart clear-button - The button that empties the field.\n * @csspart trigger - The button that opens the calendar.\n * @csspart panel - The floating surface holding the calendar. Carries the frame, background and shadow.\n * @csspart surfaces - The row inside the panel holding the calendar, the time columns, or both.\n * @csspart footer - The consumer's own note row under the panel. Always in the DOM, and hidden while the `footer` slot is empty.\n * @csspart footer-controls - The consumer's own control row under it. Always in the DOM, and hidden while the `footer-controls` slot is empty.\n * @csspart panel-footer - The OK/Cancel row below them. Rendered for `type=\"time\"` and `type=\"datetime\"`, where one pick cannot finish the value.\n * @csspart footer-ok - The button that accepts the entry and closes the panel. Disabled while the value is incomplete.\n * @csspart footer-cancel - The button that puts back the value the field held when the panel opened.\n * @csspart calendar - The `<ed-calendar>` inside the panel.\n * @csspart calendar__base - The calendar's exported `base` part. Prefixed because the field already owns `base`.\n * @csspart calendar__panel - The calendar's exported `panel` part, one wrapper per month shown. Prefixed because\n *   the floating surface already owns `panel`.\n * @csspart calendar__footer - The calendar's exported `footer` part. Prefixed because the note row already owns\n *   `footer`.\n * @csspart time-columns - The row of listboxes a time or datetime shows in the panel.\n * @csspart time-column - One of those listboxes.\n * @csspart time-column-hour - Added to the hour column.\n * @csspart time-column-minute - Added to the minute column.\n * @csspart time-column-second - Added to the second column.\n * @csspart time-column-day-period - Added to the AM/PM column.\n * @csspart time-option - One value in a column.\n * @csspart time-option-selected - The chosen value in a column.\n *\n * @cssstate blank - The picker has no committed value.\n * @cssstate range - The picker is picking a stretch rather than a point.\n * @cssstate disabled - The picker is disabled.\n * @cssstate open - The calendar is open.\n *\n * @cssproperty --ed-date-picker-width - The width of the field. Defaults to `100%`.\n * @cssproperty --ed-date-picker-column-height - How tall the time columns are before they scroll.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/date-picker",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-button",
            "ed-calendar",
            "ed-icon",
            "ed-popup"
          ],
          "tagName": "ed-date-picker",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdDatePicker",
            "module": "components/date-picker/date-picker.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-date-picker",
          "declaration": {
            "name": "EdDatePicker",
            "module": "components/date-picker/date-picker.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/radio/radio.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdRadio",
          "cssProperties": [
            {
              "description": "The color of the checked icon.",
              "name": "--ed-radio-checked-icon-color"
            },
            {
              "description": "The size of the checked icon relative to the radio.",
              "name": "--ed-radio-checked-icon-scale"
            }
          ],
          "cssParts": [
            {
              "description": "The circular container that wraps the radio's checked state.",
              "name": "control"
            },
            {
              "description": "The checked icon.",
              "name": "checked-icon"
            },
            {
              "description": "The container that wraps the `start` slot.",
              "name": "start"
            },
            {
              "description": "The container that wraps the radio's label.",
              "name": "label"
            },
            {
              "description": "The container that wraps the `end` slot.",
              "name": "end"
            },
            {
              "description": "The container that wraps the `description` slot. Always present; hidden unless `appearance` is `card` and the slot has content.",
              "name": "description"
            }
          ],
          "slots": [
            {
              "description": "The radio's label. With `appearance=\"card\"` it is the card's title, and it truncates rather than wraps.",
              "name": ""
            },
            {
              "description": "An element, such as `<ed-icon>`, placed before the label. Only rendered when `appearance` is `button`.",
              "name": "start"
            },
            {
              "description": "An element, such as `<ed-icon>` or `<ed-badge>`, placed after the label. Only shown when `appearance` is `button` or `card`; with `card` it sits at the far end of the title row and holds the chips and the icon. Content without a role of its own joins the radio's accessible name — `<ed-badge>` carries `role=\"status\"` and is announced separately, a bare `<span>` is not. An `<ed-badge>` given an `aria-label` joins the name with it.",
              "name": "end"
            },
            {
              "description": "Explanatory text below the title, indented to line up with it. Only shown when `appearance` is `card`. It becomes the radio's accessible description: the container is hidden from the accessibility tree and referenced with `aria-describedby`, so keep it to text. An interactive element placed here stays reachable by keyboard while being invisible to a screen reader — the combination axe reports as `aria-hidden-focus`.",
              "name": "description"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "assumeInteractionOn",
              "type": {
                "text": "string[]"
              },
              "default": "['click', 'keydown', 'blur', 'input']",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOnMode",
              "type": {
                "text": "'combined' | 'separated' | string"
              },
              "default": "'separated'",
              "parsedType": {
                "text": "string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, '[default]', 'start', 'end', 'description')"
            },
            {
              "kind": "field",
              "name": "checked",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "describedByIds",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "description": "The ids this radio last pointed `aria-describedby` at, so it can remove exactly its own tokens."
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The radio's value. When selected, the radio group will receive this value.",
              "attribute": "value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "appearance",
              "type": {
                "text": "'default' | 'button' | 'card'"
              },
              "default": "'default'",
              "description": "The radio's visual appearance. Owned by the enclosing `ed-radio-group`, which writes it onto\nevery radio it holds — a value set on a single radio is overwritten on the group's next sync.",
              "attribute": "appearance",
              "reflects": true,
              "parsedType": {
                "text": "'default' | 'button' | 'card'"
              }
            },
            {
              "kind": "method",
              "name": "setInitialAttributes",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "description": "A radio is also disabled when its group is, which the base class cannot see — it reads only\nthis element's own `disabled`. Without this override its unconditional write in\n`setCustomStates` lands after the one below and resets the state to `false`, so a radio in a\ndisabled group still answers hover and clicks: every hover and active rule keys off\n`:state(disabled)`.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "syncDescription",
              "privacy": "private",
              "description": "The host carries `role=\"radio\"`, whose name is computed from its contents — so slotted\ndescription text lands in the name and a screen reader reads the whole paragraph as the option's\nlabel. The slot's container is marked `aria-hidden` to keep it out of that computation, and the\ntext is attached as a description instead: accname §4.3.2 step 2A skips hidden nodes *except* those\ndirectly referenced by `aria-labelledby` or `aria-describedby`, which is what makes the pair\nwork. The reference is an id in the light DOM, where host and slotted content share a tree."
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setFormValue>"
                  }
                }
              ],
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleClick",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "attribute": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "attribute": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "attribute": "ai",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "attribute": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validators",
              "type": {
                "text": "Validator[]"
              },
              "default": "[]",
              "static": true,
              "description": "Validators are static because they have `observedAttributes`, essentially attributes to \"watch\"\nfor changes. Whenever these attributes change, we want to be notified and update the validator.",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "attribute": "name",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#fieldsetDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set by `formDisabledCallback`, i.e. an ancestor `<fieldset>`. Never written by a consumer.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#ownDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The disabled state this element was given directly, via its property or its attribute.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "attribute": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "text": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "parsedType": {
                "text": "HTMLElement & { value: unknown } | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "valueHasChanged",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasInteracted",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_customValidityMessage",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_isCheckingValidity",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set while `checkValidity()` is executing so the `invalid` event handler can distinguish\na programmatic check (no UI side-effects per spec) from `reportValidity()` / native form\nsubmission (which should surface the error UI and focus the first invalid control).",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emittedEvents",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "states",
              "type": {
                "text": "CustomStateSet"
              },
              "parsedType": {
                "text": "any"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleSubmitOnEnter",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleClearOnEscape",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emitInvalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleInteraction",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "labels",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getForm",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "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": {
                "text": "HTMLFormElement | null"
              },
              "parsedType": {
                "text": "null | HTMLFormElement"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validity",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "willValidate",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationMessage",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "checkValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Override this to change where constraint validation popups are anchored.",
              "readonly": true,
              "parsedType": {
                "text": "HTMLElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValidity",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setValidity>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "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.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "allValidators",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "resetValidity",
              "description": "Reset validity is a way of removing manual custom errors and native validation.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "Emitted when the control loses focus.",
              "name": "blur",
              "reactName": "onBlur",
              "eventName": "BlurEvent"
            },
            {
              "description": "Emitted when the control gains focus.",
              "name": "focus",
              "reactName": "onFocus",
              "eventName": "FocusEvent"
            }
          ],
          "attributes": [
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The radio's value. When selected, the radio group will receive this value.",
              "fieldName": "value"
            },
            {
              "name": "appearance",
              "type": {
                "text": "'default' | 'button' | 'card'"
              },
              "default": "'default'",
              "description": "The radio's visual appearance. Owned by the enclosing `ed-radio-group`, which writes it onto\nevery radio it holds — a value set on a single radio is overwritten on the group's next sync.",
              "fieldName": "appearance",
              "parsedType": {
                "text": "'default' | 'button' | 'card'"
              }
            },
            {
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "fieldName": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "fieldName": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "fieldName": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "fieldName": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "fieldName": "name",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "fieldName": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "Applied when the control is checked.",
              "name": "checked"
            },
            {
              "description": "Applied when the control is disabled.",
              "name": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is required.",
              "name": "required",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is not required.",
              "name": "optional",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value fails constraint validation, whether or not the user has touched the control yet.",
              "name": "invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value passes constraint validation.",
              "name": "valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Invalid, and the user has interacted with the control. This is the one to style for an error: it behaves like the platform's `:user-invalid`, so an untouched field is not marked wrong before the user has had a chance to fill it in.",
              "name": "user-invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Valid, and the user has interacted with the control.",
              "name": "user-valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The user has interacted with the control.",
              "name": "dirty",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `error` property is set, or the control is `user-invalid`.",
              "name": "error",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `warning` property is set.",
              "name": "warning",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `ai` property is set and the user has not interacted with the control yet.",
              "name": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdFormAssociatedElement",
            "module": "/src/internal/ed-form-associated-element.js"
          },
          "summary": "One option of an ed-radio-group, with a label and optional description, used to select a single choice among\nseveral.",
          "jsDoc": "/**\n * @summary One option of an ed-radio-group, with a label and optional description, used to select a single choice among\n *  several.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/radio\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-icon\n *\n * @slot - The radio's label. With `appearance=\"card\"` it is the card's title, and it truncates\n *  rather than wraps.\n * @slot start - An element, such as `<ed-icon>`, placed before the label. Only rendered when `appearance` is `button`.\n * @slot end - An element, such as `<ed-icon>` or `<ed-badge>`, placed after the label. Only shown when `appearance`\n *  is `button` or `card`; with `card` it sits at the far end of the title row and holds the chips and the icon.\n *  Content without a role of its own joins the radio's accessible name — `<ed-badge>` carries `role=\"status\"` and\n *  is announced separately, a bare `<span>` is not. An `<ed-badge>` given an `aria-label` joins the name with it.\n * @slot description - Explanatory text below the title, indented to line up with it. Only shown when `appearance`\n *  is `card`. It becomes the radio's accessible description: the container is hidden from the accessibility tree and\n *  referenced with `aria-describedby`, so keep it to text. An interactive element placed here stays reachable by\n *  keyboard while being invisible to a screen reader — the combination axe reports as `aria-hidden-focus`.\n *\n * @event blur - Emitted when the control loses focus.\n * @event focus - Emitted when the control gains focus.\n *\n * @csspart control - The circular container that wraps the radio's checked state.\n * @csspart checked-icon - The checked icon.\n * @csspart start - The container that wraps the `start` slot.\n * @csspart label - The container that wraps the radio's label.\n * @csspart end - The container that wraps the `end` slot.\n * @csspart description - The container that wraps the `description` slot. Always present; hidden unless `appearance`\n *  is `card` and the slot has content.\n *\n * @cssproperty --ed-radio-checked-icon-color - The color of the checked icon.\n * @cssproperty --ed-radio-checked-icon-scale - The size of the checked icon relative to the radio.\n *\n * @cssstate checked - Applied when the control is checked.\n * @cssstate disabled - Applied when the control is disabled.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/radio",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-radio",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdRadio",
            "module": "components/radio/radio.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-radio",
          "declaration": {
            "name": "EdRadio",
            "module": "components/radio/radio.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/dropdown-item/dropdown-item.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDropdownItem",
          "cssParts": [
            {
              "description": "The checkbox indicator (an `<ed-checkbox>` element) when the item is a checkbox.",
              "name": "checkbox"
            },
            {
              "description": "The radio indicator (an `<ed-radio>` element) when the item is a radio.",
              "name": "radio"
            },
            {
              "description": "The container for the icon slot.",
              "name": "icon"
            },
            {
              "description": "The container for the label slot.",
              "name": "label"
            },
            {
              "description": "The container for the details slot.",
              "name": "details"
            },
            {
              "description": "The submenu indicator icon (a `<ed-icon>` element).",
              "name": "submenu-icon"
            },
            {
              "description": "The submenu indicator's exported `svg` part, the drawn arrow itself.",
              "name": "submenu-icon__svg"
            },
            {
              "description": "The submenu container.",
              "name": "submenu"
            },
            {
              "description": "The forward icon (a `<ed-icon>` element) a link item shows after its details.",
              "name": "link-icon"
            }
          ],
          "slots": [
            {
              "description": "The dropdown item's label.",
              "name": ""
            },
            {
              "description": "An optional icon to display before the label.",
              "name": "icon"
            },
            {
              "description": "Additional content or details to display after the label.",
              "name": "details"
            },
            {
              "description": "Submenu items, typically `<ed-dropdown-item>` elements, to create a nested menu. Fill it in the markup rather than appending to it later: the submenu and its indicator arrow are rendered only for an item that has one, so an item that starts without a submenu does not pick one up afterwards. Rendering them for every item instead would put an arrow on each one and an empty `role=\"menu\"` in the accessibility tree.",
              "name": "submenu"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, '[default]', 'icon', 'details', 'submenu')"
            },
            {
              "kind": "field",
              "name": "labelElement",
              "type": {
                "text": "HTMLSpanElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "linkElement",
              "type": {
                "text": "HTMLAnchorElement | null"
              },
              "privacy": "private",
              "parsedType": {
                "text": "null | HTMLAnchorElement"
              }
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "An optional value for the menu item. This is useful for determining which item was selected when listening to the\ndropdown's `ed-dropdown-select` event.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "type",
              "type": {
                "text": "'normal' | 'checkbox' | 'radio'"
              },
              "default": "'normal'",
              "description": "Set to `checkbox` to make the item a checkbox, or to `radio` to make it one of a set of which one is\nchosen: the radios between two dividers are a set, and choosing one unchecks the others.",
              "attribute": "type",
              "reflects": true,
              "parsedType": {
                "text": "'checkbox' | 'radio' | 'normal'"
              }
            },
            {
              "kind": "field",
              "name": "checked",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set to true to check the dropdown item. Only valid when `type` is `checkbox` or `radio`.",
              "attribute": "checked"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the dropdown item. It cannot be chosen — by click, `Enter` or `Space` — and does not open a submenu, but\nstays reachable: the arrow keys and the pointer still land on it and it is announced as unavailable, so a\ntooltip pointing at it can say why.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "submenuOpen",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the submenu is currently open.",
              "attribute": "submenuOpen",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "href",
              "type": {
                "text": "string"
              },
              "description": "When set, choosing the item navigates to this URL. The item stays a menu item for assistive technology, so its\nlabel should say where it leads. Ignored when `type` is not `normal`, the item has a submenu, or the URL's\nscheme is not one of http, https, mailto and tel.",
              "attribute": "href",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "target",
              "type": {
                "text": "string"
              },
              "description": "Tells the browser where to open the link. Only used when `href` is present.\n\nTakes the `_blank`, `_self`, `_parent` and `_top` keywords, or the name of a window: a link\nwhose target names an already open window navigates that window instead of opening another one.\nNote that `rel=\"noopener\"` suppresses the lookup, so a named target then opens a new window\nevery time.\n\nThe implicit opener isolation browsers apply covers `_blank` only. A named target leaves\n`window.opener` set on the opened page, so a link pointing at untrusted content needs\n`rel=\"noopener\"` spelled out.",
              "attribute": "target"
            },
            {
              "kind": "field",
              "name": "rel",
              "type": {
                "text": "string | undefined"
              },
              "description": "When using `href`, this attribute will map to the underlying link's `rel` attribute.",
              "attribute": "rel"
            },
            {
              "kind": "field",
              "name": "download",
              "type": {
                "text": "string | undefined"
              },
              "description": "Tells the browser to download the linked file as this filename. Only used when `href` is present.",
              "attribute": "download"
            },
            {
              "kind": "field",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "updateHasSubmenuState",
              "privacy": "private",
              "description": "Update the has-submenu custom state"
            },
            {
              "kind": "method",
              "name": "notifyParentOfOpening",
              "privacy": "private",
              "description": "Notifies the parent dropdown that this item is opening its submenu"
            },
            {
              "kind": "method",
              "name": "getSubmenuItems",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdDropdownItem[]"
                }
              },
              "description": "Gets all dropdown items in the submenu, the disabled ones included: a disabled item stays focusable in a menu\n(APG Menu), and ed-dropdown's arrow keys count it too."
            },
            {
              "kind": "field",
              "name": "handleHostClick",
              "privacy": "private",
              "description": "Prevents click events from firing on the host when the item is disabled (e.g. programmatic .click() calls)."
            },
            {
              "kind": "field",
              "name": "handleClick",
              "privacy": "private",
              "description": "Prevents click events from firing when the item is disabled."
            },
            {
              "kind": "field",
              "name": "handleLabelSlotChange",
              "privacy": "private",
              "description": "Syncs the label text to the data-label attribute for the bold-width reservation trick."
            },
            {
              "kind": "field",
              "name": "handleMouseEnter",
              "privacy": "private",
              "description": "Handles mouse enter to open the submenu"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "Emitted when the dropdown item loses focus.",
              "name": "blur",
              "reactName": "onBlur",
              "eventName": "BlurEvent"
            },
            {
              "description": "Emitted when the dropdown item gains focus.",
              "name": "focus",
              "reactName": "onFocus",
              "eventName": "FocusEvent"
            }
          ],
          "attributes": [
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "An optional value for the menu item. This is useful for determining which item was selected when listening to the\ndropdown's `ed-dropdown-select` event.",
              "fieldName": "value"
            },
            {
              "name": "type",
              "type": {
                "text": "'normal' | 'checkbox' | 'radio'"
              },
              "default": "'normal'",
              "description": "Set to `checkbox` to make the item a checkbox, or to `radio` to make it one of a set of which one is\nchosen: the radios between two dividers are a set, and choosing one unchecks the others.",
              "fieldName": "type",
              "parsedType": {
                "text": "'checkbox' | 'radio' | 'normal'"
              }
            },
            {
              "name": "checked",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set to true to check the dropdown item. Only valid when `type` is `checkbox` or `radio`.",
              "fieldName": "checked"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the dropdown item. It cannot be chosen — by click, `Enter` or `Space` — and does not open a submenu, but\nstays reachable: the arrow keys and the pointer still land on it and it is announced as unavailable, so a\ntooltip pointing at it can say why.",
              "fieldName": "disabled"
            },
            {
              "name": "submenuOpen",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the submenu is currently open.",
              "fieldName": "submenuOpen"
            },
            {
              "name": "href",
              "type": {
                "text": "string"
              },
              "description": "When set, choosing the item navigates to this URL. The item stays a menu item for assistive technology, so its\nlabel should say where it leads. Ignored when `type` is not `normal`, the item has a submenu, or the URL's\nscheme is not one of http, https, mailto and tel.",
              "fieldName": "href"
            },
            {
              "name": "target",
              "type": {
                "text": "string"
              },
              "description": "Tells the browser where to open the link. Only used when `href` is present.\n\nTakes the `_blank`, `_self`, `_parent` and `_top` keywords, or the name of a window: a link\nwhose target names an already open window navigates that window instead of opening another one.\nNote that `rel=\"noopener\"` suppresses the lookup, so a named target then opens a new window\nevery time.\n\nThe implicit opener isolation browsers apply covers `_blank` only. A named target leaves\n`window.opener` set on the opened page, so a link pointing at untrusted content needs\n`rel=\"noopener\"` spelled out.",
              "fieldName": "target"
            },
            {
              "name": "rel",
              "type": {
                "text": "string | undefined"
              },
              "description": "When using `href`, this attribute will map to the underlying link's `rel` attribute.",
              "fieldName": "rel"
            },
            {
              "name": "download",
              "type": {
                "text": "string | undefined"
              },
              "description": "Tells the browser to download the linked file as this filename. Only used when `href` is present.",
              "fieldName": "download"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "Applied when the item navigates when chosen: `href` is set to a navigable URL, `type` is `normal` and it has no submenu.",
              "name": "link"
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Represents an individual item within a dropdown menu, supporting standard items, checkboxes, radios, and submenus.",
          "jsDoc": "/**\n * @summary Represents an individual item within a dropdown menu, supporting standard items, checkboxes, radios, and submenus.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/dropdown-item\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-checkbox\n * @dependency ed-radio\n * @dependency ed-icon\n *\n * @event blur - Emitted when the dropdown item loses focus.\n * @event focus - Emitted when the dropdown item gains focus.\n *\n * @slot - The dropdown item's label.\n * @slot icon - An optional icon to display before the label.\n * @slot details - Additional content or details to display after the label.\n * @slot submenu - Submenu items, typically `<ed-dropdown-item>` elements, to create a nested menu.\n *  Fill it in the markup rather than appending to it later: the submenu and its indicator arrow are\n *  rendered only for an item that has one, so an item that starts without a submenu does not pick one\n *  up afterwards. Rendering them for every item instead would put an arrow on each one and an empty\n *  `role=\"menu\"` in the accessibility tree.\n *\n * @csspart checkbox - The checkbox indicator (an `<ed-checkbox>` element) when the item is a checkbox.\n * @csspart radio - The radio indicator (an `<ed-radio>` element) when the item is a radio.\n * @csspart icon - The container for the icon slot.\n * @csspart label - The container for the label slot.\n * @csspart details - The container for the details slot.\n * @csspart submenu-icon - The submenu indicator icon (a `<ed-icon>` element).\n * @csspart submenu-icon__svg - The submenu indicator's exported `svg` part, the drawn arrow itself.\n * @csspart submenu - The submenu container.\n * @csspart link-icon - The forward icon (a `<ed-icon>` element) a link item shows after its details.\n *\n * @cssstate link - Applied when the item navigates when chosen: `href` is set to a navigable URL, `type` is\n *  `normal` and it has no submenu.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/dropdown-item",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-checkbox",
            "ed-radio",
            "ed-icon"
          ],
          "tagName": "ed-dropdown-item",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdDropdownItem",
            "module": "components/dropdown-item/dropdown-item.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-dropdown-item",
          "declaration": {
            "name": "EdDropdownItem",
            "module": "components/dropdown-item/dropdown-item.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/active-elements.js",
      "declarations": [
        {
          "kind": "function",
          "name": "activeElements",
          "return": {
            "type": {
              "text": "Generator<Element>"
            }
          },
          "parameters": [
            {
              "name": "activeElement",
              "default": "document.activeElement",
              "type": {
                "text": "Element | null"
              }
            }
          ],
          "description": "Use a generator so we can iterate and possibly break early."
        },
        {
          "kind": "function",
          "name": "getDeepestActiveElement"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "activeElements",
          "declaration": {
            "name": "activeElements",
            "module": "internal/active-elements.js"
          }
        },
        {
          "kind": "js",
          "name": "getDeepestActiveElement",
          "declaration": {
            "name": "getDeepestActiveElement",
            "module": "internal/active-elements.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/dropdown/dropdown.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDropdown",
          "cssProperties": [
            {
              "description": "The duration of the show animation.",
              "name": "--ed-show-duration"
            },
            {
              "description": "The duration of the hide animation.",
              "name": "--ed-hide-duration"
            }
          ],
          "cssParts": [
            {
              "description": "The floating surface holding the items. Carries the frame, background and shadow.",
              "name": "panel"
            }
          ],
          "slots": [
            {
              "description": "The dropdown's items, typically `<ed-dropdown-item>` elements.",
              "name": ""
            },
            {
              "description": "The element that triggers the dropdown, such as a `<ed-button>` or `<button>`.",
              "name": "trigger"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "submenuCleanups",
              "type": {
                "text": "Map<EdDropdownItem, ReturnType<typeof autoUpdate>>"
              },
              "privacy": "private",
              "default": "new Map()"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "userTypedQuery",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "userTypedTimeout",
              "type": {
                "text": "ReturnType<typeof setTimeout>"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "openSubmenuStack",
              "type": {
                "text": "EdDropdownItem[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "menu",
              "type": {
                "text": "HTMLDivElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "popup",
              "type": {
                "text": "EdPopup"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Opens or closes the dropdown.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "placement",
              "type": {
                "text": "| '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'",
              "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.",
              "attribute": "placement",
              "reflects": true,
              "parsedType": {
                "text": "'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'top' | 'bottom' | 'right-start' | 'right-end' | 'left-start' | 'left-end'"
              }
            },
            {
              "kind": "field",
              "name": "distance",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The distance of the dropdown menu from its trigger.",
              "attribute": "distance"
            },
            {
              "kind": "field",
              "name": "skidding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The offset of the dropdown menu along its trigger.",
              "attribute": "skidding"
            },
            {
              "kind": "method",
              "name": "getItems",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdDropdownItem[]"
                }
              },
              "description": "Gets all dropdown items slotted in the menu, the disabled ones included: APG Menu keeps a disabled item\nfocusable in the arrow-key order, so it can be found and its description read, and only refuses to activate\nit (\"Disabled menu items are focusable but cannot be activated\")."
            },
            {
              "kind": "method",
              "name": "getSubmenuItems",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdDropdownItem[]"
                }
              },
              "parameters": [
                {
                  "name": "parentItem",
                  "type": {
                    "text": "EdDropdownItem"
                  }
                }
              ],
              "description": "Gets all dropdown items in a specific submenu, the disabled ones included as in `getItems()`."
            },
            {
              "kind": "method",
              "name": "addToSubmenuStack",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "EdDropdownItem"
                  }
                }
              ],
              "description": "Handles the submenu navigation stack"
            },
            {
              "kind": "method",
              "name": "removeFromSubmenuStack",
              "privacy": "private",
              "description": "Removes the last item from the submenu stack"
            },
            {
              "kind": "method",
              "name": "getCurrentSubmenuItem",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdDropdownItem | undefined"
                }
              },
              "description": "Gets the current active submenu item"
            },
            {
              "kind": "method",
              "name": "closeCurrentSubmenu",
              "privacy": "private",
              "description": "Closes the innermost open submenu and puts focus back on the item that opened it."
            },
            {
              "kind": "method",
              "name": "closeAllSubmenus",
              "privacy": "private",
              "description": "Closes all submenus in the dropdown."
            },
            {
              "kind": "method",
              "name": "closeSiblingSubmenus",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "EdDropdownItem"
                  }
                }
              ],
              "description": "Closes sibling submenus at the same level as the specified item."
            },
            {
              "kind": "method",
              "name": "getTrigger",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLButtonElement | EdButton | null"
                }
              },
              "description": "Get the slotted trigger button, a <ed-button> or <button> element"
            },
            {
              "kind": "method",
              "name": "showMenu",
              "privacy": "private",
              "description": "Shows the dropdown menu. This should only be called from within updated()."
            },
            {
              "kind": "method",
              "name": "hideMenu",
              "privacy": "private",
              "description": "Hides the dropdown menu. This should only be called from within updated()."
            },
            {
              "kind": "field",
              "name": "handleDocumentKeyDown",
              "privacy": "private",
              "description": "Handles key down events when the menu is open"
            },
            {
              "kind": "field",
              "name": "handleDocumentPointerDown",
              "privacy": "private",
              "description": "Handles pointer down events when the dropdown is open."
            },
            {
              "kind": "method",
              "name": "handleMenuClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ],
              "description": "Handles clicks on the menu."
            },
            {
              "kind": "method",
              "name": "handleMenuSlotChange",
              "privacy": "private",
              "description": "Prepares dropdown items when they get added or removed"
            },
            {
              "kind": "method",
              "name": "handleTriggerClick",
              "privacy": "private",
              "description": "Toggles the dropdown menu"
            },
            {
              "kind": "field",
              "name": "handleTriggerKeyDown",
              "privacy": "private",
              "description": "Opens the menu from the closed trigger via keyboard (WAI-ARIA menu-button pattern). While the menu\nis open, key handling belongs to handleDocumentKeyDown. Enter/Space already open it through the\nnative button click, so only the arrow keys need handling here."
            },
            {
              "kind": "method",
              "name": "handleSubmenuOpening",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "CustomEvent"
                  }
                }
              ],
              "description": "Handles submenu opening events"
            },
            {
              "kind": "method",
              "name": "setupSubmenuPosition",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "EdDropdownItem"
                  }
                }
              ],
              "description": "Sets up submenu positioning with autoUpdate"
            },
            {
              "kind": "method",
              "name": "cleanupSubmenuPosition",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "EdDropdownItem"
                  }
                }
              ],
              "description": "Cleans up submenu positioning"
            },
            {
              "kind": "method",
              "name": "positionSubmenu",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "EdDropdownItem"
                  }
                }
              ],
              "description": "Positions a submenu relative to its parent item"
            },
            {
              "kind": "method",
              "name": "updateSafeTriangleCoordinates",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "EdDropdownItem"
                  }
                }
              ],
              "description": "Updates the safe triangle coordinates for a submenu"
            },
            {
              "kind": "field",
              "name": "handleGlobalMouseMove",
              "privacy": "private",
              "description": "Handle global mouse movement for safe triangle logic"
            },
            {
              "kind": "method",
              "name": "makeSelection",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "EdDropdownItem"
                  }
                },
                {
                  "name": "sourceEvent",
                  "optional": true,
                  "type": {
                    "text": "MouseEvent | KeyboardEvent"
                  }
                }
              ],
              "description": "Makes a selection, emits the ed-dropdown-select event, and closes the dropdown. A link item navigates unless the\nselection was cancelled; the source event carries the modifier keys over to the navigation."
            },
            {
              "kind": "method",
              "name": "syncAriaAttributes",
              "privacy": "private",
              "description": "Syncs aria attributes on the slotted trigger element and the menu based on the dropdown's current state"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "Emitted when the dropdown is about to show. Cancelable; calling `preventDefault()` keeps it closed.",
              "name": "ed-show",
              "reactName": "onEdShow",
              "eventName": "EdShowEvent"
            },
            {
              "description": "Emitted after the dropdown has been shown.",
              "name": "ed-after-show",
              "reactName": "onEdAfterShow",
              "eventName": "EdAfterShowEvent"
            },
            {
              "description": "Emitted when the dropdown is about to hide. Cancelable; calling `preventDefault()` keeps it open.",
              "name": "ed-hide",
              "reactName": "onEdHide",
              "eventName": "EdHideEvent"
            },
            {
              "description": "Emitted after the dropdown has been hidden.",
              "name": "ed-after-hide",
              "reactName": "onEdAfterHide",
              "eventName": "EdAfterHideEvent"
            },
            {
              "type": {
                "text": "{ item: Element }"
              },
              "description": "Emitted when an item in the dropdown is selected. Cancelable; calling `preventDefault()` keeps the menu open and, on an item with `href`, stops the navigation. Not emitted for a disabled item, nor for a link item chosen with Ctrl, Cmd, Shift or Alt held, which opens the link as the browser does and leaves the menu open.",
              "name": "ed-dropdown-select",
              "reactName": "onEdDropdownSelect",
              "eventName": "EdDropdownSelectEvent"
            }
          ],
          "attributes": [
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Opens or closes the dropdown.",
              "fieldName": "open"
            },
            {
              "name": "placement",
              "type": {
                "text": "| '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'",
              "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.",
              "fieldName": "placement",
              "parsedType": {
                "text": "'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'top' | 'bottom' | 'right-start' | 'right-end' | 'left-start' | 'left-end'"
              }
            },
            {
              "name": "distance",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The distance of the dropdown menu from its trigger.",
              "fieldName": "distance"
            },
            {
              "name": "skidding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The offset of the dropdown menu along its trigger.",
              "fieldName": "skidding"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "Applied when the dropdown is open.",
              "name": "open"
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "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.",
          "jsDoc": "/**\n * @summary Dropdowns display a list of options that can be triggered by a button or other element. They support\n *  keyboard navigation, submenus, and various customization options.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/dropdown\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-dropdown-item\n * @dependency ed-popup\n *\n * @event ed-show - Emitted when the dropdown is about to show.\n *  Cancelable; calling `preventDefault()` keeps it closed.\n * @event ed-after-show - Emitted after the dropdown has been shown.\n * @event ed-hide - Emitted when the dropdown is about to hide.\n *  Cancelable; calling `preventDefault()` keeps it open.\n * @event ed-after-hide - Emitted after the dropdown has been hidden.\n * @event {{ item: Element }} ed-dropdown-select - Emitted when an item in the dropdown is selected.\n *  Cancelable; calling `preventDefault()` keeps the menu open and, on an item with `href`, stops the navigation.\n *  Not emitted for a disabled item, nor for a link item chosen with Ctrl, Cmd, Shift or Alt held, which opens the\n *  link as the browser does and leaves the menu open.\n *\n * @slot - The dropdown's items, typically `<ed-dropdown-item>` elements.\n * @slot trigger - The element that triggers the dropdown, such as a `<ed-button>` or `<button>`.\n *\n * @csspart panel - The floating surface holding the items. Carries the frame, background and shadow.\n *\n * @cssstate open - Applied when the dropdown is open.\n *\n * @cssproperty --ed-show-duration - The duration of the show animation.\n * @cssproperty --ed-hide-duration - The duration of the hide animation.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/dropdown",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-dropdown-item",
            "ed-popup"
          ],
          "tagName": "ed-dropdown",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdDropdown",
            "module": "components/dropdown/dropdown.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-dropdown",
          "declaration": {
            "name": "EdDropdown",
            "module": "components/dropdown/dropdown.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/empty-state/empty-state.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdEmptyState",
          "cssProperties": [
            {
              "description": "The width the empty state will not grow beyond: the whole element at `size=\"small\"`, `\"medium\"` and `\"large\"`, the text column at `size=\"fullscreen\"`.",
              "name": "--ed-empty-state-max-width",
              "default": "32rem"
            },
            {
              "description": "The height the element reserves at `size=\"fullscreen\"`.",
              "name": "--ed-empty-state-min-height",
              "default": "22rem"
            },
            {
              "description": "The width the `size=\"fullscreen\"` icon will not shrink below as it scales with the viewport.",
              "name": "--ed-empty-state-icon-min-width",
              "default": "10rem"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The `icon` slot itself. A slot has no box of its own, so inherited properties such as `color` and `font-size` reach the icon while `background`, `padding` and `border` do not.",
              "name": "icon"
            },
            {
              "description": "The container that wraps the `label` slot.",
              "name": "label"
            },
            {
              "description": "Description of empty state.",
              "name": "description"
            },
            {
              "description": "The `button` slot itself. Like `icon` it is a slot, so inherited properties reach the slotted button while `background`, `padding` and `border` do not.",
              "name": "button"
            }
          ],
          "slots": [
            {
              "description": "Empty state text.",
              "name": ""
            },
            {
              "description": "An element, such as `<ed-icon>`, placed before the Text. Alternatively, you can use the `icon` attribute.",
              "name": "icon"
            },
            {
              "description": "The EmptyState's label.",
              "name": "label"
            },
            {
              "description": "Optional Button.",
              "name": "button"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "size",
              "type": {
                "text": "'fullscreen' | 'small' | 'medium' | 'large'"
              },
              "default": "'fullscreen'",
              "description": "Defines the size of the empty state. You have to manually set the correct header (`<h1/>`, `<h2/>`, `<h3/>`, `<p/>`) and button styling.",
              "attribute": "size",
              "reflects": true,
              "parsedType": {
                "text": "'fullscreen' | 'small' | 'medium' | 'large'"
              }
            },
            {
              "kind": "field",
              "name": "alignment",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'vertical'",
              "description": "Defines the alignment of the empty state.",
              "attribute": "alignment",
              "reflects": true,
              "parsedType": {
                "text": "'horizontal' | 'vertical'"
              }
            },
            {
              "kind": "field",
              "name": "icon",
              "type": {
                "text": "string"
              },
              "default": "'error'",
              "description": "Defines the icon which is used in the empty state. If you need a customized icon, use the `icon` slot instead.",
              "attribute": "icon",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "size",
              "type": {
                "text": "'fullscreen' | 'small' | 'medium' | 'large'"
              },
              "default": "'fullscreen'",
              "description": "Defines the size of the empty state. You have to manually set the correct header (`<h1/>`, `<h2/>`, `<h3/>`, `<p/>`) and button styling.",
              "fieldName": "size",
              "parsedType": {
                "text": "'fullscreen' | 'small' | 'medium' | 'large'"
              }
            },
            {
              "name": "alignment",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'vertical'",
              "description": "Defines the alignment of the empty state.",
              "fieldName": "alignment",
              "parsedType": {
                "text": "'horizontal' | 'vertical'"
              }
            },
            {
              "name": "icon",
              "type": {
                "text": "string"
              },
              "default": "'error'",
              "description": "Defines the icon which is used in the empty state. If you need a customized icon, use the `icon` slot instead.",
              "fieldName": "icon"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Empty states communicate that there is no content to display, and what the user can do next.",
          "jsDoc": "/**\n * @summary Empty states communicate that there is no content to display, and what the user can do next.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/empty-state\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-icon\n *\n * @slot - Empty state text.\n * @slot icon - An element, such as `<ed-icon>`, placed before the Text. Alternatively, you can use the `icon` attribute.\n * @slot label - The EmptyState's label.\n * @slot button - Optional Button.\n *\n * @csspart base - The component's base wrapper.\n * @csspart icon - The `icon` slot itself. A slot has no box of its own, so inherited properties such\n *   as `color` and `font-size` reach the icon while `background`, `padding` and `border` do not.\n * @csspart label - The container that wraps the `label` slot.\n * @csspart description - Description of empty state.\n * @csspart button - The `button` slot itself. Like `icon` it is a slot, so inherited properties reach the\n *   slotted button while `background`, `padding` and `border` do not.\n *\n * @cssproperty [--ed-empty-state-max-width=32rem] - The width the empty state will not grow beyond: the whole element at\n *   `size=\"small\"`, `\"medium\"` and `\"large\"`, the text column at `size=\"fullscreen\"`.\n * @cssproperty [--ed-empty-state-min-height=22rem] - The height the element reserves at `size=\"fullscreen\"`.\n * @cssproperty [--ed-empty-state-icon-min-width=10rem] - The width the `size=\"fullscreen\"` icon will not shrink below as\n *   it scales with the viewport.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/empty-state",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-empty-state",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdEmptyState",
            "module": "components/empty-state/empty-state.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-empty-state",
          "declaration": {
            "name": "EdEmptyState",
            "module": "components/empty-state/empty-state.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/input/input.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdInput",
          "cssProperties": [
            {
              "description": "How the value is aligned inside the field. Defaults to `start`; `end` suits amounts and other figures. Setting `text-align` on the element itself does not reach the value — the browser's own stylesheet sets it on the inner control — and would align the label and hint instead.",
              "name": "--ed-input-text-align"
            }
          ],
          "cssParts": [
            {
              "description": "The label",
              "name": "label"
            },
            {
              "description": "The state message: an error, a warning, or the AI note.",
              "name": "message"
            },
            {
              "description": "The hint's wrapper.",
              "name": "hint"
            },
            {
              "description": "The wrapper being rendered as an input",
              "name": "base"
            },
            {
              "description": "The container that wraps the `start` slot.",
              "name": "start"
            },
            {
              "description": "The clear button.",
              "name": "clear-button"
            },
            {
              "description": "The password toggle button.",
              "name": "password-toggle-button"
            },
            {
              "description": "The container that wraps the `end` slot.",
              "name": "end"
            }
          ],
          "slots": [
            {
              "description": "The input's label. Alternatively, you can use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "An element, such as `<ed-icon>`, placed at the start of the input control.",
              "name": "start"
            },
            {
              "description": "An element, such as `<ed-icon>`, placed at the end of the input control.",
              "name": "end"
            },
            {
              "description": "An icon to use in lieu of the default clear icon.",
              "name": "clear-icon"
            },
            {
              "description": "An icon to use in lieu of the default show password icon.",
              "name": "show-password-icon"
            },
            {
              "description": "An icon to use in lieu of the default hide password icon.",
              "name": "hide-password-icon"
            },
            {
              "description": "Text that describes how to use the input. Alternatively, you can use the `hint` attribute.",
              "name": "hint"
            },
            {
              "description": "Not for consumers. Holds the native `<input>` the element renders into its own light DOM, where browsers' password managers and form autofill can find it. The element creates it; style it through the `base` part, whose typography it inherits.",
              "name": "control"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "validators",
              "type": {
                "text": "Validator[]"
              },
              "default": "[]",
              "static": true,
              "description": "Validators are static because they have `observedAttributes`, essentially attributes to \"watch\"\nfor changes. Whenever these attributes change, we want to be notified and update the validator.",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOn",
              "type": {
                "text": "string[]"
              },
              "default": "['blur', 'input']",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'label')"
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "text": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "parsedType": {
                "text": "HTMLElement & { value: unknown } | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "description": "The native control, in this element's light DOM rather than its shadow root. Firefox's password\nmanager and its address autofill only consider an `HTMLInputElement` in the form's own tree\n(`form.elements` filtered by `HTMLInputElement.isInstance`), so a control inside the shadow root is\nnever filled — Mozilla bug 1659224. The control carries no `name`: the host stays the\nform-associated element that submits, validates and resets, and the control only contributes what\nthe user types.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "controlValue",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "description": "The value last written to or read from the control. A difference to the control's live value\nmeans something wrote it without an event — a password manager may — and that write wins."
            },
            {
              "kind": "field",
              "name": "committedValue",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "description": "The value the last `change` reported, or the element last wrote into the control. The element\ncommits with `change` itself — on Enter, whose keypress it cancels (see `handleControlKeypress`),\nand on blur — whenever the control holds anything else, and drops the browser's own `change` for a\nvalue already reported. The browser's would not do on its own: it compares against the value at\nfocus, which a clear or a script write in between makes the wrong reference."
            },
            {
              "kind": "field",
              "name": "editedSinceCommit",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether the user has edited the control since the last commit. A browser reports `change` only for\nthe user's own edits, not for a script calling `setRangeText()` or `stepUp()`, and neither does this\nelement."
            },
            {
              "kind": "field",
              "name": "lightObserver",
              "privacy": "private",
              "readonly": true,
              "description": "Notices text changing inside a slotted label or hint, and a control taken out of the light DOM."
            },
            {
              "kind": "field",
              "name": "controlFocused",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "The focus ring belongs to the field while the control has focus, not while a button in it has."
            },
            {
              "kind": "field",
              "name": "controlAutofilled",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether the browser has filled the control, so the whole field shows it. Tracked here because\nFirefox does not apply :host(:has(> input:autofill)) inside the shadow root, although the host\nmatches it — measured in ESR 153."
            },
            {
              "kind": "field",
              "name": "formValue",
              "type": {
                "text": "string | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "What `setFormValue` last received: the entry this element contributes to a submission.",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "valueAssigned",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether `value` was assigned since the control was last written. Not Lit's changed properties:\nthose list `value` on the first update too, where nothing was assigned."
            },
            {
              "kind": "field",
              "name": "delegatedFrom",
              "type": {
                "text": "EventTarget | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Where the focus came from when the browser delegated it to the focus delegate.",
              "parsedType": {
                "text": "null | { addEventListener: {  }, dispatchEvent: {  }, removeEventListener: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "listenedForm",
              "type": {
                "text": "HTMLFormElement | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The form whose submissions this element listens to, so it can catch a write without an event.",
              "parsedType": {
                "text": "null | HTMLFormElement"
              }
            },
            {
              "kind": "field",
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "attribute": "title"
            },
            {
              "kind": "field",
              "name": "type",
              "type": {
                "text": "'date' | 'datetime-local' | 'email' | 'number' | 'password' | 'search' | 'tel' | 'text' | 'time' | 'url'"
              },
              "default": "'text'",
              "description": "The type of input. Works the same as a native `<input>` element, but only a subset of types are supported. Defaults\nto `text`.",
              "attribute": "type",
              "reflects": true,
              "parsedType": {
                "text": "'number' | 'search' | 'text' | 'date' | 'time' | 'datetime-local' | 'email' | 'password' | 'tel' | 'url'"
              }
            },
            {
              "kind": "field",
              "name": "_value",
              "type": {
                "text": "string | undefined"
              },
              "privacy": "private",
              "default": "undefined",
              "description": "`undefined` marks \"never written\", which is what makes the default apply; it is never observable\nfrom outside, because `value` is always a string. HTML keeps the same distinction internally\nthrough the value mode and exposes a `DOMString` either way."
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The current value of the input, submitted as a name/value pair with form data. Empty is `''`,\nas on a native input — never `null`."
            },
            {
              "kind": "field",
              "name": "defaultValue",
              "type": {
                "text": "string"
              },
              "description": "The default value of the form control. Primarily used for resetting the form control.",
              "attribute": "value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "Controls the component's spacing density without affecting font-size.",
              "attribute": "density",
              "reflects": true,
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "kind": "field",
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style input with rounded edges.",
              "attribute": "pill",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The input's label. If you need to display HTML, use the `label` slot instead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "ariaLabel",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The input's accessible name for when no visible label is set (e.g. an icon-only search\nfield). Mirrored onto the internal input, where the textbox role lives — an aria-label\nleft on the host alone would sit on a role-less element and be ignored by assistive tech.",
              "attribute": "aria-label",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "withClear",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Adds a clear button when the input is not empty, and makes Escape empty the field.",
              "attribute": "with-clear"
            },
            {
              "kind": "field",
              "name": "placeholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder text to show as a hint when the input is empty.",
              "attribute": "placeholder"
            },
            {
              "kind": "field",
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the input readonly.",
              "attribute": "readonly",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "passwordToggle",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Adds a button to toggle the password's visibility. Only applies to password types.",
              "attribute": "password-toggle"
            },
            {
              "kind": "field",
              "name": "passwordVisible",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Determines whether or not the password is currently visible. Only applies to password input types.",
              "attribute": "password-visible"
            },
            {
              "kind": "field",
              "name": "withoutSpinButtons",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Hides the browser's built-in increment/decrement spin buttons for number inputs.",
              "attribute": "without-spin-buttons",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the input a required field.",
              "attribute": "required",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "pattern",
              "type": {
                "text": "string"
              },
              "description": "A regular expression pattern to validate input against.",
              "attribute": "pattern"
            },
            {
              "kind": "field",
              "name": "minlength",
              "type": {
                "text": "number"
              },
              "description": "The minimum length of input that will be considered valid.",
              "attribute": "minlength"
            },
            {
              "kind": "field",
              "name": "maxlength",
              "type": {
                "text": "number"
              },
              "description": "The maximum length of input that will be considered valid.",
              "attribute": "maxlength"
            },
            {
              "kind": "field",
              "name": "min",
              "type": {
                "text": "number | string"
              },
              "description": "The input's minimum value. Only applies to date and number input types.",
              "attribute": "min",
              "parsedType": {
                "text": "string | number"
              }
            },
            {
              "kind": "field",
              "name": "max",
              "type": {
                "text": "number | string"
              },
              "description": "The input's maximum value. Only applies to date and number input types.",
              "attribute": "max",
              "parsedType": {
                "text": "string | number"
              }
            },
            {
              "kind": "field",
              "name": "step",
              "type": {
                "text": "number | 'any'"
              },
              "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.",
              "attribute": "step",
              "parsedType": {
                "text": "number | 'any'"
              }
            },
            {
              "kind": "field",
              "name": "autocapitalize",
              "type": {
                "text": "'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters'"
              },
              "description": "Controls whether and how text input is automatically capitalized as it is entered by the user.",
              "attribute": "autocapitalize",
              "parsedType": {
                "text": "'none' | 'off' | 'on' | 'sentences' | 'words' | 'characters'"
              }
            },
            {
              "kind": "field",
              "name": "autocorrect",
              "type": {
                "text": "boolean"
              },
              "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`.",
              "attribute": "autocorrect"
            },
            {
              "kind": "field",
              "name": "autocomplete",
              "type": {
                "text": "string"
              },
              "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.",
              "attribute": "autocomplete"
            },
            {
              "kind": "field",
              "name": "autofocus",
              "type": {
                "text": "boolean"
              },
              "description": "Indicates that the input should receive focus on page load.",
              "attribute": "autofocus"
            },
            {
              "kind": "field",
              "name": "enterkeyhint",
              "type": {
                "text": "'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'"
              },
              "description": "Used to customize the label or icon of the Enter key on virtual keyboards.",
              "attribute": "enterkeyhint",
              "parsedType": {
                "text": "'next' | 'previous' | 'search' | 'send' | 'done' | 'enter' | 'go'"
              }
            },
            {
              "kind": "field",
              "name": "spellcheck",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Enables spell checking on the input.",
              "attribute": "spellcheck"
            },
            {
              "kind": "field",
              "name": "inputmode",
              "type": {
                "text": "'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'"
              },
              "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.",
              "attribute": "inputmode",
              "parsedType": {
                "text": "'search' | 'text' | 'numeric' | 'none' | 'email' | 'tel' | 'url' | 'decimal'"
              }
            },
            {
              "kind": "field",
              "name": "withLabel",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "with-label"
            },
            {
              "kind": "field",
              "name": "withHint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "with-hint"
            },
            {
              "kind": "method",
              "name": "createControl",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLInputElement"
                }
              }
            },
            {
              "kind": "method",
              "name": "bindControl",
              "privacy": "private",
              "parameters": [
                {
                  "name": "input",
                  "type": {
                    "text": "HTMLInputElement"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "attachControl",
              "privacy": "private",
              "description": "Puts the control into this element's light DOM, and back if removed."
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "The control, while it is this element's child — the only place ElementInternals accepts it.",
              "readonly": true,
              "parsedType": {
                "text": "HTMLElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "listenToForm",
              "privacy": "private",
              "parameters": [
                {
                  "name": "form",
                  "type": {
                    "text": "HTMLFormElement | null"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<EdFormAssociatedElement['setValue']>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "syncFromControl",
              "privacy": "private",
              "description": "Takes over a value the control holds that this element has not seen. Password managers and\nautofill normally fire `input`, but not all of them do, and a value written past this element would\notherwise be visible in the field yet missing from the submission and from validation."
            },
            {
              "kind": "field",
              "name": "handleFormData",
              "privacy": "private",
              "description": "Corrects this element's entry, which still carries the value from before the write: only that one,\nsince other fields may share the name, found by its position among the entries of that name. The\nentry list is rebuilt whole, because FormData can only append, so every other entry keeps its place."
            },
            {
              "kind": "method",
              "name": "entriesBefore",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "description": "How many entries under this element's name the form's controls before it contribute, after WHATWG\nHTML's \"constructing the entry list\": nothing from a disabled control, a button, an unchecked\ncheckbox or radio; one per selected option, one per file (or one for none)."
            },
            {
              "kind": "field",
              "name": "handleControlFocus",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleControlBlur",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "updateAutofilled",
              "privacy": "private",
              "description": "Read on the events around a fill and on the animation the styles start when the control enters\n:autofill: Firefox marks the focused field as filled only some time after the `input` event its\nfill dispatches, so no event of the fill itself sees the state."
            },
            {
              "kind": "field",
              "name": "handleControlAnimation",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleControlInvalid",
              "privacy": "private",
              "description": "The host reports invalidity; the control's own event would show a second, native bubble. When the\ncontrol holds a value written past this element, the host still reads as valid while the control\nblocks a submission: take the value over and show the field as filled in, as a browser treats an\nautofilled field for :user-invalid. Nothing more — the event also fires for a script's\n`checkValidity()`, which must not move focus or report."
            },
            {
              "kind": "field",
              "name": "handleControlKeypress",
              "privacy": "private",
              "description": "Implicit submission stays with `submitOnEnter`, which the base class runs on keydown. Left to the\nbrowser, Enter would submit a second time — and would not submit at all where the submit button is\nan `<ed-button>`, which WHATWG HTML does not count as a submit button. The browser starts implicit\nsubmission from the keypress, so cancelling that leaves keydown for consumers to cancel."
            },
            {
              "kind": "method",
              "name": "takeControlValue",
              "privacy": "private",
              "description": "Takes the control's value as this element's own. No assignment that has to win over the control:\nthe control already holds it."
            },
            {
              "kind": "method",
              "name": "noteOwnWrite",
              "privacy": "private",
              "description": "Takes a value the element itself put into the control as the reference, as no user edit."
            },
            {
              "kind": "method",
              "name": "commitChange",
              "privacy": "private",
              "description": "Reports the control's value with `change` unless it is the one last reported or written."
            },
            {
              "kind": "field",
              "name": "handleDelegateFocus",
              "privacy": "private",
              "description": "Where the browser puts focus when it focuses the host itself — `autofocus` on the host, a\n`<label for>` pointing at it: with `delegatesFocus` that is the first focusable thing in the shadow\nroot, and this stands first so it is not the password toggle. It hands the focus on to the control\nat once, and its own focus events stay inside the shadow root, so the host reports one `focus`."
            },
            {
              "kind": "field",
              "name": "stopDelegateEvent",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleFieldMouseDown",
              "privacy": "private",
              "description": "A press on the label or the field around the control puts focus on the control directly. Cancelled\nso the press does not focus the delegate first, whose hop capture listeners would see. The hint and\nthe message are left to the browser, which focuses the field through the delegate as it did with\nthe control in the shadow root, and keeps their text selectable."
            },
            {
              "kind": "field",
              "name": "handleFieldClick",
              "privacy": "private",
              "description": "The same for a click without a press before it: `label.click()`, or a `<label for>` outside."
            },
            {
              "kind": "method",
              "name": "pressTarget",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "'interactive' | 'field' | 'other'"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ],
              "description": "What a press inside this element landed on. Only the part of the path below this element counts:\nan ancestor with a `tabindex`, as a drawer's panel has, says nothing about the field."
            },
            {
              "kind": "method",
              "name": "syncControl",
              "privacy": "private",
              "description": "Writes the element's state onto the control, before validation reads the control's constraints.\nA value the control was given without an event is taken over first, or the write below would put\nthis element's older value over it — unless `value` was assigned in this update, which is then the\nlater write and wins, as a script's assignment does on a native input."
            },
            {
              "kind": "method",
              "name": "controlId",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string | undefined"
                }
              },
              "description": "Form history — the values a browser offers again in a field — is stored under the control's `name`\nor, failing that, its `id` (Firefox's `FormHistoryChild.getInputName`). The control has no name,\nso it gets an id derived from the host's. Left off where that id is already taken in this tree."
            },
            {
              "kind": "method",
              "name": "labelText",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              }
            },
            {
              "kind": "method",
              "name": "hintText",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              }
            },
            {
              "kind": "method",
              "name": "slotText",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "checkValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleChange",
              "privacy": "private",
              "description": "Reported from the host, so `event.target` is the element a consumer listens on."
            },
            {
              "kind": "method",
              "name": "handleClearClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleInput",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handlePasswordToggle",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the input."
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the input."
            },
            {
              "kind": "method",
              "name": "select",
              "description": "Selects all the text in the input."
            },
            {
              "kind": "method",
              "name": "setSelectionRange",
              "parameters": [
                {
                  "name": "selectionStart",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "selectionEnd",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "selectionDirection",
                  "default": "'none'",
                  "type": {
                    "text": "'forward' | 'backward' | 'none'"
                  }
                }
              ],
              "description": "Sets the start and end positions of the text selection (0-based)."
            },
            {
              "kind": "method",
              "name": "setRangeText",
              "parameters": [
                {
                  "name": "replacement",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "start",
                  "optional": true,
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "end",
                  "optional": true,
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "selectMode",
                  "default": "'preserve'",
                  "type": {
                    "text": "'select' | 'start' | 'end' | 'preserve'"
                  }
                }
              ],
              "description": "Replaces a range of text with a new string."
            },
            {
              "kind": "method",
              "name": "showPicker",
              "description": "Displays the browser picker for an input element (only works if the browser supports it for the input type)."
            },
            {
              "kind": "method",
              "name": "stepUp",
              "description": "Increments the value of a numeric input type by the value of the step attribute."
            },
            {
              "kind": "method",
              "name": "stepDown",
              "description": "Decrements the value of a numeric input type by the value of the step attribute."
            },
            {
              "kind": "method",
              "name": "formResetCallback"
            },
            {
              "kind": "field",
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "attribute": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "attribute": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "attribute": "ai",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "attribute": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "attribute": "name",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#fieldsetDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set by `formDisabledCallback`, i.e. an ancestor `<fieldset>`. Never written by a consumer.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#ownDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The disabled state this element was given directly, via its property or its attribute.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "attribute": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOnMode",
              "type": {
                "text": "'combined' | 'separated' | string"
              },
              "default": "'combined'",
              "parsedType": {
                "text": "string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "valueHasChanged",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasInteracted",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_customValidityMessage",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_isCheckingValidity",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set while `checkValidity()` is executing so the `invalid` event handler can distinguish\na programmatic check (no UI side-effects per spec) from `reportValidity()` / native form\nsubmission (which should surface the error UI and focus the first invalid control).",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emittedEvents",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "states",
              "type": {
                "text": "CustomStateSet"
              },
              "parsedType": {
                "text": "any"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleSubmitOnEnter",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleClearOnEscape",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emitInvalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleInteraction",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "labels",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getForm",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "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": {
                "text": "HTMLFormElement | null"
              },
              "parsedType": {
                "text": "null | HTMLFormElement"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validity",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "willValidate",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationMessage",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValidity",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setValidity>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "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.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "allValidators",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "resetValidity",
              "description": "Reset validity is a way of removing manual custom errors and native validation.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "name": "change",
              "type": {
                "text": "Event"
              },
              "description": "Emitted when an alteration to the control's value is committed by the user.",
              "reactName": "onChange",
              "eventName": "ChangeEvent"
            },
            {
              "name": "input",
              "type": {
                "text": "InputEvent"
              },
              "description": "Emitted when the control receives input.",
              "reactName": "onInput",
              "eventName": "InputEvent"
            },
            {
              "description": "Emitted when the control loses focus.",
              "name": "blur",
              "reactName": "onBlur",
              "eventName": "BlurEvent"
            },
            {
              "description": "Emitted when the control gains focus.",
              "name": "focus",
              "reactName": "onFocus",
              "eventName": "FocusEvent"
            },
            {
              "description": "Emitted when the control's value is cleared.",
              "name": "ed-clear",
              "reactName": "onEdClear",
              "eventName": "EdClearEvent"
            },
            {
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied.",
              "name": "ed-invalid",
              "reactName": "onEdInvalid",
              "eventName": "EdInvalidEvent"
            }
          ],
          "attributes": [
            {
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "fieldName": "title"
            },
            {
              "name": "type",
              "type": {
                "text": "'date' | 'datetime-local' | 'email' | 'number' | 'password' | 'search' | 'tel' | 'text' | 'time' | 'url'"
              },
              "default": "'text'",
              "description": "The type of input. Works the same as a native `<input>` element, but only a subset of types are supported. Defaults\nto `text`.",
              "fieldName": "type",
              "parsedType": {
                "text": "'number' | 'search' | 'text' | 'date' | 'time' | 'datetime-local' | 'email' | 'password' | 'tel' | 'url'"
              }
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The default value of the form control. Primarily used for resetting the form control.",
              "fieldName": "defaultValue"
            },
            {
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "Controls the component's spacing density without affecting font-size.",
              "fieldName": "density",
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style input with rounded edges.",
              "fieldName": "pill"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The input's label. If you need to display HTML, use the `label` slot instead.",
              "fieldName": "label"
            },
            {
              "name": "aria-label",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The input's accessible name for when no visible label is set (e.g. an icon-only search\nfield). Mirrored onto the internal input, where the textbox role lives — an aria-label\nleft on the host alone would sit on a role-less element and be ignored by assistive tech.",
              "fieldName": "ariaLabel",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "with-clear",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Adds a clear button when the input is not empty, and makes Escape empty the field.",
              "fieldName": "withClear"
            },
            {
              "name": "placeholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder text to show as a hint when the input is empty.",
              "fieldName": "placeholder"
            },
            {
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the input readonly.",
              "fieldName": "readonly"
            },
            {
              "name": "password-toggle",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Adds a button to toggle the password's visibility. Only applies to password types.",
              "fieldName": "passwordToggle"
            },
            {
              "name": "password-visible",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Determines whether or not the password is currently visible. Only applies to password input types.",
              "fieldName": "passwordVisible"
            },
            {
              "name": "without-spin-buttons",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Hides the browser's built-in increment/decrement spin buttons for number inputs.",
              "fieldName": "withoutSpinButtons"
            },
            {
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the input a required field.",
              "fieldName": "required"
            },
            {
              "name": "pattern",
              "type": {
                "text": "string"
              },
              "description": "A regular expression pattern to validate input against.",
              "fieldName": "pattern"
            },
            {
              "name": "minlength",
              "type": {
                "text": "number"
              },
              "description": "The minimum length of input that will be considered valid.",
              "fieldName": "minlength"
            },
            {
              "name": "maxlength",
              "type": {
                "text": "number"
              },
              "description": "The maximum length of input that will be considered valid.",
              "fieldName": "maxlength"
            },
            {
              "name": "min",
              "type": {
                "text": "number | string"
              },
              "description": "The input's minimum value. Only applies to date and number input types.",
              "fieldName": "min",
              "parsedType": {
                "text": "string | number"
              }
            },
            {
              "name": "max",
              "type": {
                "text": "number | string"
              },
              "description": "The input's maximum value. Only applies to date and number input types.",
              "fieldName": "max",
              "parsedType": {
                "text": "string | number"
              }
            },
            {
              "name": "step",
              "type": {
                "text": "number | 'any'"
              },
              "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.",
              "fieldName": "step",
              "parsedType": {
                "text": "number | 'any'"
              }
            },
            {
              "name": "autocapitalize",
              "type": {
                "text": "'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters'"
              },
              "description": "Controls whether and how text input is automatically capitalized as it is entered by the user.",
              "fieldName": "autocapitalize",
              "parsedType": {
                "text": "'none' | 'off' | 'on' | 'sentences' | 'words' | 'characters'"
              }
            },
            {
              "name": "autocorrect",
              "type": {
                "text": "boolean"
              },
              "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`.",
              "fieldName": "autocorrect"
            },
            {
              "name": "autocomplete",
              "type": {
                "text": "string"
              },
              "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.",
              "fieldName": "autocomplete"
            },
            {
              "name": "autofocus",
              "type": {
                "text": "boolean"
              },
              "description": "Indicates that the input should receive focus on page load.",
              "fieldName": "autofocus"
            },
            {
              "name": "enterkeyhint",
              "type": {
                "text": "'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'"
              },
              "description": "Used to customize the label or icon of the Enter key on virtual keyboards.",
              "fieldName": "enterkeyhint",
              "parsedType": {
                "text": "'next' | 'previous' | 'search' | 'send' | 'done' | 'enter' | 'go'"
              }
            },
            {
              "name": "spellcheck",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Enables spell checking on the input.",
              "fieldName": "spellcheck"
            },
            {
              "name": "inputmode",
              "type": {
                "text": "'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'"
              },
              "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.",
              "fieldName": "inputmode",
              "parsedType": {
                "text": "'search' | 'text' | 'numeric' | 'none' | 'email' | 'tel' | 'url' | 'decimal'"
              }
            },
            {
              "name": "with-label",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "withLabel"
            },
            {
              "name": "with-hint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "withHint"
            },
            {
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "fieldName": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "fieldName": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "fieldName": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "fieldName": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "fieldName": "name",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "fieldName": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "The input is empty.",
              "name": "blank"
            },
            {
              "description": "The control is disabled, by its own attribute or by an ancestor fieldset.",
              "name": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is required.",
              "name": "required",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is not required.",
              "name": "optional",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value fails constraint validation, whether or not the user has touched the control yet.",
              "name": "invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value passes constraint validation.",
              "name": "valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Invalid, and the user has interacted with the control. This is the one to style for an error: it behaves like the platform's `:user-invalid`, so an untouched field is not marked wrong before the user has had a chance to fill it in.",
              "name": "user-invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Valid, and the user has interacted with the control.",
              "name": "user-valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The user has interacted with the control.",
              "name": "dirty",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `error` property is set, or the control is `user-invalid`.",
              "name": "error",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `warning` property is set.",
              "name": "warning",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `ai` property is set and the user has not interacted with the control yet.",
              "name": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdFormAssociatedElement",
            "module": "/src/internal/ed-form-associated-element.js"
          },
          "summary": "Lets the user type a single short value on one line — name, email, amount, search term — in a form field\nwith label and validation.",
          "jsDoc": "/**\n * @summary Lets the user type a single short value on one line — name, email, amount, search term — in a form field\n *  with label and validation.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/input\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-icon\n *\n * @slot label - The input's label. Alternatively, you can use the `label` attribute.\n * @slot start - An element, such as `<ed-icon>`, placed at the start of the input control.\n * @slot end - An element, such as `<ed-icon>`, placed at the end of the input control.\n * @slot clear-icon - An icon to use in lieu of the default clear icon.\n * @slot show-password-icon - An icon to use in lieu of the default show password icon.\n * @slot hide-password-icon - An icon to use in lieu of the default hide password icon.\n * @slot hint - Text that describes how to use the input. Alternatively, you can use the `hint` attribute.\n * @slot control - Not for consumers. Holds the native `<input>` the element renders into its own light DOM, where\n *   browsers' password managers and form autofill can find it. The element creates it; style it through the `base`\n *   part, whose typography it inherits.\n *\n * @event blur - Emitted when the control loses focus.\n * @event change - Emitted when an alteration to the control's value is committed by the user.\n * @event focus - Emitted when the control gains focus.\n * @event input - Emitted when the control receives input.\n * @event ed-clear - Emitted when the control's value is cleared.\n * @event ed-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n *\n * @csspart label - The label\n * @csspart message - The state message: an error, a warning, or the AI note.\n * @csspart hint - The hint's wrapper.\n * @csspart base - The wrapper being rendered as an input\n * @csspart start - The container that wraps the `start` slot.\n * @csspart clear-button - The clear button.\n * @csspart password-toggle-button - The password toggle button.\n * @csspart end - The container that wraps the `end` slot.\n *\n * @cssstate blank - The input is empty.\n *\n * @cssproperty --ed-input-text-align - How the value is aligned inside the field. Defaults to `start`; `end` suits\n *   amounts and other figures. Setting `text-align` on the element itself does not reach the value — the browser's\n *   own stylesheet sets it on the inner control — and would align the label and hint instead.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/input",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-input",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdInput",
            "module": "components/input/input.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-input",
          "declaration": {
            "name": "EdInput",
            "module": "components/input/input.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/number-input/number-input.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdNumberInput",
          "cssProperties": [
            {
              "description": "Sets a fixed width for the input field",
              "name": "--ed-number-input-width"
            }
          ],
          "cssParts": [
            {
              "description": "The label element.",
              "name": "label"
            },
            {
              "description": "Alias for the label element.",
              "name": "form-control-label"
            },
            {
              "description": "The state message: an error, a warning, or the AI note.",
              "name": "message"
            },
            {
              "description": "The hint element.",
              "name": "hint"
            },
            {
              "description": "The wrapper containing the input and steppers.",
              "name": "base"
            },
            {
              "description": "The internal `<input>` control.",
              "name": "input"
            },
            {
              "description": "The container that wraps the `start` slot.",
              "name": "start"
            },
            {
              "description": "The container that wraps the `end` slot.",
              "name": "end"
            },
            {
              "description": "Both stepper buttons (for shared styling).",
              "name": "stepper"
            },
            {
              "description": "The increment (+) button on the end side.",
              "name": "stepper-increment"
            },
            {
              "description": "The decrement (-) button on the start side.",
              "name": "stepper-decrement"
            }
          ],
          "slots": [
            {
              "description": "The input's label. Alternatively, you can use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "An element, such as `<ed-icon>`, placed at the start of the input control.",
              "name": "start"
            },
            {
              "description": "An element, such as `<ed-icon>`, placed at the end of the input control (before steppers).",
              "name": "end"
            },
            {
              "description": "An icon to use in lieu of the default increment icon.",
              "name": "increment-icon"
            },
            {
              "description": "An icon to use in lieu of the default decrement icon.",
              "name": "decrement-icon"
            },
            {
              "description": "Text that describes how to use the input. Alternatively, you can use the `hint` attribute.",
              "name": "hint"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "validators",
              "type": {
                "text": "Validator[]"
              },
              "default": "[]",
              "static": true,
              "description": "Validators are static because they have `observedAttributes`, essentially attributes to \"watch\"\nfor changes. Whenever these attributes change, we want to be notified and update the validator.",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOn",
              "type": {
                "text": "string[]"
              },
              "default": "['blur', 'input']",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'label')"
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "text": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "parsedType": {
                "text": "HTMLElement & { value: unknown } | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "attribute": "title"
            },
            {
              "kind": "field",
              "name": "_value",
              "type": {
                "text": "string | undefined"
              },
              "privacy": "private",
              "default": "undefined",
              "description": "`undefined` marks \"never written\", which is what makes the default apply; it is never observable\nfrom outside, because `value` is always a string. HTML keeps the same distinction internally\nthrough the value mode and exposes a `DOMString` either way."
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The current value of the input, submitted as a name/value pair with form data. Empty is `''`,\nas on a native number input — never `null`."
            },
            {
              "kind": "field",
              "name": "valueAsNumber",
              "type": {
                "text": "number"
              },
              "description": "The current value as a number, and `NaN` while the control holds no usable one. An empty field\nand a field whose text is not a number give the same answer, because value has already\nemptied the second one.\n\nWriting `NaN` empties the control, and writing an infinity throws a `TypeError` — both as HTML\nrequires of the native setter. Neither `min`, `max` nor `step` corrects what is written: an\nout-of-range number is kept and reported through `validity.rangeOverflow`, as on a native input."
            },
            {
              "kind": "field",
              "name": "defaultValue",
              "type": {
                "text": "string"
              },
              "description": "The default value of the form control. Primarily used for resetting the form control.",
              "attribute": "value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "Controls the component's spacing density without affecting font-size.",
              "attribute": "density",
              "reflects": true,
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "kind": "field",
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style input with rounded edges.",
              "attribute": "pill",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The input's label. If you need to display HTML, use the `label` slot instead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "ariaLabel",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The input's accessible name for when no visible label is set. Mirrored onto the internal\ninput, where the spinbutton role lives — an aria-label left on the host alone would sit on\na role-less element and be ignored by assistive tech.",
              "attribute": "aria-label",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "placeholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder text to show as a hint when the input is empty.",
              "attribute": "placeholder"
            },
            {
              "kind": "field",
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the input readonly.",
              "attribute": "readonly",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the input a required field.",
              "attribute": "required",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "min",
              "type": {
                "text": "number"
              },
              "description": "The input's minimum value.",
              "attribute": "min"
            },
            {
              "kind": "field",
              "name": "max",
              "type": {
                "text": "number"
              },
              "description": "The input's maximum value.",
              "attribute": "max"
            },
            {
              "kind": "field",
              "name": "_step",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "1"
            },
            {
              "kind": "field",
              "name": "step",
              "type": {
                "text": "number"
              },
              "description": "The granularity the value must adhere to. Anything that cannot form a grid — `any`, zero,\nnegative, unparseable — falls back to `1`.\n\nA native input also takes `any`, which turns stepping off entirely. This control does not,\nbecause a numeric field without steps is `<ed-input type=\"number\">`: stepper buttons are the\nreason to reach for this element, and `stepUp()` throws `InvalidStateError` in a mode that has\nno step — so the buttons would be there and broken.",
              "attribute": "step"
            },
            {
              "kind": "field",
              "name": "withoutSteppers",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Hides the increment/decrement stepper buttons.",
              "attribute": "without-steppers"
            },
            {
              "kind": "field",
              "name": "autocomplete",
              "type": {
                "text": "string"
              },
              "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.",
              "attribute": "autocomplete"
            },
            {
              "kind": "field",
              "name": "autofocus",
              "type": {
                "text": "boolean"
              },
              "description": "Indicates that the input should receive focus on page load.",
              "attribute": "autofocus"
            },
            {
              "kind": "field",
              "name": "enterkeyhint",
              "type": {
                "text": "'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'"
              },
              "description": "Used to customize the label or icon of the Enter key on virtual keyboards.",
              "attribute": "enterkeyhint",
              "parsedType": {
                "text": "'next' | 'previous' | 'search' | 'send' | 'done' | 'enter' | 'go'"
              }
            },
            {
              "kind": "field",
              "name": "inputmode",
              "type": {
                "text": "'numeric' | 'decimal'"
              },
              "default": "'numeric'",
              "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.",
              "attribute": "inputmode",
              "parsedType": {
                "text": "'numeric' | 'decimal'"
              }
            },
            {
              "kind": "field",
              "name": "withLabel",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "with-label"
            },
            {
              "kind": "field",
              "name": "withHint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "with-hint"
            },
            {
              "kind": "field",
              "name": "isAtMin",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Returns true if the value is at or below the minimum.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "isAtMax",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Returns true if the value is at or above the maximum.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "handleChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleInput",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "stepFromStepper",
              "privacy": "private",
              "parameters": [
                {
                  "name": "direction",
                  "type": {
                    "text": "'up' | 'down'"
                  }
                }
              ],
              "description": "Steps the value from a stepper button and emits the beforeinput/input/change sequence."
            },
            {
              "kind": "method",
              "name": "handleStepperPointerUp",
              "privacy": "private",
              "parameters": [
                {
                  "name": "direction",
                  "type": {
                    "text": "'up' | 'down'"
                  }
                },
                {
                  "name": "event",
                  "type": {
                    "text": "PointerEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleStepperClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "direction",
                  "type": {
                    "text": "'up' | 'down'"
                  }
                },
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ],
              "description": "button.click() and assistive-tech activation dispatch a click WITHOUT preceding pointer\nevents (event.detail === 0) — those used to be no-ops because the steppers only listened to\npointerdown/up. Real mouse clicks (detail >= 1) already stepped in pointerup and must not\nstep twice."
            },
            {
              "kind": "method",
              "name": "handleStepperPointerDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "PointerEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the input."
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the input."
            },
            {
              "kind": "method",
              "name": "select",
              "description": "Selects all the text in the input."
            },
            {
              "kind": "method",
              "name": "stepUp",
              "description": "Increments the value by the step amount."
            },
            {
              "kind": "method",
              "name": "stepDown",
              "description": "Decrements the value by the step amount."
            },
            {
              "kind": "method",
              "name": "formResetCallback"
            },
            {
              "kind": "field",
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "attribute": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "attribute": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "attribute": "ai",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "attribute": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "attribute": "name",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#fieldsetDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set by `formDisabledCallback`, i.e. an ancestor `<fieldset>`. Never written by a consumer.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#ownDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The disabled state this element was given directly, via its property or its attribute.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "attribute": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOnMode",
              "type": {
                "text": "'combined' | 'separated' | string"
              },
              "default": "'combined'",
              "parsedType": {
                "text": "string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "valueHasChanged",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasInteracted",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_customValidityMessage",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_isCheckingValidity",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set while `checkValidity()` is executing so the `invalid` event handler can distinguish\na programmatic check (no UI side-effects per spec) from `reportValidity()` / native form\nsubmission (which should surface the error UI and focus the first invalid control).",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emittedEvents",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "states",
              "type": {
                "text": "CustomStateSet"
              },
              "parsedType": {
                "text": "any"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleSubmitOnEnter",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleClearOnEscape",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emitInvalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleInteraction",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "labels",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getForm",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "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": {
                "text": "HTMLFormElement | null"
              },
              "parsedType": {
                "text": "null | HTMLFormElement"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validity",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "willValidate",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationMessage",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "checkValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Override this to change where constraint validation popups are anchored.",
              "readonly": true,
              "parsedType": {
                "text": "HTMLElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValidity",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setValidity>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "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.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setFormValue>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "allValidators",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "resetValidity",
              "description": "Reset validity is a way of removing manual custom errors and native validation.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "name": "input",
              "type": {
                "text": "InputEvent"
              },
              "description": "Emitted when the control receives input.",
              "reactName": "onInput",
              "eventName": "InputEvent"
            },
            {
              "name": "change",
              "type": {
                "text": "Event"
              },
              "description": "Emitted when an alteration to the control's value is committed by the user.",
              "reactName": "onChange",
              "eventName": "ChangeEvent"
            },
            {
              "description": "Emitted when the control loses focus.",
              "name": "blur",
              "reactName": "onBlur",
              "eventName": "BlurEvent"
            },
            {
              "description": "Emitted from a stepper button before the value changes. Call `event.preventDefault()` to cancel the change.",
              "name": "beforeinput",
              "reactName": "onBeforeinput",
              "eventName": "BeforeinputEvent"
            },
            {
              "description": "Emitted when the control gains focus.",
              "name": "focus",
              "reactName": "onFocus",
              "eventName": "FocusEvent"
            },
            {
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied.",
              "name": "ed-invalid",
              "reactName": "onEdInvalid",
              "eventName": "EdInvalidEvent"
            }
          ],
          "attributes": [
            {
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "fieldName": "title"
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The default value of the form control. Primarily used for resetting the form control.",
              "fieldName": "defaultValue"
            },
            {
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "Controls the component's spacing density without affecting font-size.",
              "fieldName": "density",
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style input with rounded edges.",
              "fieldName": "pill"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The input's label. If you need to display HTML, use the `label` slot instead.",
              "fieldName": "label"
            },
            {
              "name": "aria-label",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The input's accessible name for when no visible label is set. Mirrored onto the internal\ninput, where the spinbutton role lives — an aria-label left on the host alone would sit on\na role-less element and be ignored by assistive tech.",
              "fieldName": "ariaLabel",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "placeholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder text to show as a hint when the input is empty.",
              "fieldName": "placeholder"
            },
            {
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the input readonly.",
              "fieldName": "readonly"
            },
            {
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the input a required field.",
              "fieldName": "required"
            },
            {
              "name": "min",
              "type": {
                "text": "number"
              },
              "description": "The input's minimum value.",
              "fieldName": "min"
            },
            {
              "name": "max",
              "type": {
                "text": "number"
              },
              "description": "The input's maximum value.",
              "fieldName": "max"
            },
            {
              "name": "step",
              "type": {
                "text": "number"
              },
              "description": "The granularity the value must adhere to. Anything that cannot form a grid — `any`, zero,\nnegative, unparseable — falls back to `1`.\n\nA native input also takes `any`, which turns stepping off entirely. This control does not,\nbecause a numeric field without steps is `<ed-input type=\"number\">`: stepper buttons are the\nreason to reach for this element, and `stepUp()` throws `InvalidStateError` in a mode that has\nno step — so the buttons would be there and broken.",
              "fieldName": "step"
            },
            {
              "name": "without-steppers",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Hides the increment/decrement stepper buttons.",
              "fieldName": "withoutSteppers"
            },
            {
              "name": "autocomplete",
              "type": {
                "text": "string"
              },
              "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.",
              "fieldName": "autocomplete"
            },
            {
              "name": "autofocus",
              "type": {
                "text": "boolean"
              },
              "description": "Indicates that the input should receive focus on page load.",
              "fieldName": "autofocus"
            },
            {
              "name": "enterkeyhint",
              "type": {
                "text": "'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'"
              },
              "description": "Used to customize the label or icon of the Enter key on virtual keyboards.",
              "fieldName": "enterkeyhint",
              "parsedType": {
                "text": "'next' | 'previous' | 'search' | 'send' | 'done' | 'enter' | 'go'"
              }
            },
            {
              "name": "inputmode",
              "type": {
                "text": "'numeric' | 'decimal'"
              },
              "default": "'numeric'",
              "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.",
              "fieldName": "inputmode",
              "parsedType": {
                "text": "'numeric' | 'decimal'"
              }
            },
            {
              "name": "with-label",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "withLabel"
            },
            {
              "name": "with-hint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "withHint"
            },
            {
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "fieldName": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "fieldName": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "fieldName": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "fieldName": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "fieldName": "name",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "fieldName": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "The input is empty.",
              "name": "blank"
            },
            {
              "description": "The control is disabled, by its own attribute or by an ancestor fieldset.",
              "name": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is required.",
              "name": "required",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is not required.",
              "name": "optional",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value fails constraint validation, whether or not the user has touched the control yet.",
              "name": "invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value passes constraint validation.",
              "name": "valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Invalid, and the user has interacted with the control. This is the one to style for an error: it behaves like the platform's `:user-invalid`, so an untouched field is not marked wrong before the user has had a chance to fill it in.",
              "name": "user-invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Valid, and the user has interacted with the control.",
              "name": "user-valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The user has interacted with the control.",
              "name": "dirty",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `error` property is set, or the control is `user-invalid`.",
              "name": "error",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `warning` property is set.",
              "name": "warning",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `ai` property is set and the user has not interacted with the control yet.",
              "name": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdFormAssociatedElement",
            "module": "/src/internal/ed-form-associated-element.js"
          },
          "summary": "Number inputs allow users to enter and edit numeric values with stepper buttons.",
          "jsDoc": "/**\n * @summary Number inputs allow users to enter and edit numeric values with stepper buttons.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/number-input\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…').getByRole('spinbutton')\n *\n * @dependency ed-icon\n *\n * @slot label - The input's label. Alternatively, you can use the `label` attribute.\n * @slot start - An element, such as `<ed-icon>`, placed at the start of the input control.\n * @slot end - An element, such as `<ed-icon>`, placed at the end of the input control (before steppers).\n * @slot increment-icon - An icon to use in lieu of the default increment icon.\n * @slot decrement-icon - An icon to use in lieu of the default decrement icon.\n * @slot hint - Text that describes how to use the input. Alternatively, you can use the `hint` attribute.\n *\n * @event blur - Emitted when the control loses focus.\n * @event beforeinput - Emitted from a stepper button before the value changes. Call `event.preventDefault()` to cancel\n *   the change.\n * @event change - Emitted when an alteration to the control's value is committed by the user.\n * @event focus - Emitted when the control gains focus.\n * @event input - Emitted when the control receives input.\n * @event ed-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n *\n * @csspart label - The label element.\n * @csspart form-control-label - Alias for the label element.\n * @csspart message - The state message: an error, a warning, or the AI note.\n * @csspart hint - The hint element.\n * @csspart base - The wrapper containing the input and steppers.\n * @csspart input - The internal `<input>` control.\n * @csspart start - The container that wraps the `start` slot.\n * @csspart end - The container that wraps the `end` slot.\n * @csspart stepper - Both stepper buttons (for shared styling).\n * @csspart stepper-increment - The increment (+) button on the end side.\n * @csspart stepper-decrement - The decrement (-) button on the start side.\n * @cssstate blank - The input is empty.\n *\n * @cssproperty --ed-number-input-width - Sets a fixed width for the input field\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/number-input",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('spinbutton')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-number-input",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdNumberInput",
            "module": "components/number-input/number-input.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-number-input",
          "declaration": {
            "name": "EdNumberInput",
            "module": "components/number-input/number-input.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/pagination/pagination.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdPagination",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The page-size selector section.",
              "name": "page-size-section"
            },
            {
              "description": "The internal ed-select.",
              "name": "page-size-section-select"
            },
            {
              "description": "The page navigation section.",
              "name": "page-nav-section"
            },
            {
              "description": "The \"from X\" text. Absent while the total is unknown.",
              "name": "total-pages"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "pageInput",
              "type": {
                "text": "EdNumberInput"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "totalItems",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The total number of items being paginated. Below zero while unknown: the pages then go on without a last one.",
              "attribute": "total-items"
            },
            {
              "kind": "field",
              "name": "page",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "The current page (1-indexed). A page set past the last, or below the first, or that is no whole\nnumber, is brought back within the pages silently.",
              "attribute": "page",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "pageSize",
              "type": {
                "text": "number"
              },
              "default": "50",
              "description": "The number of items per page.",
              "attribute": "page-size"
            },
            {
              "kind": "field",
              "name": "pageSizeOptions",
              "type": {
                "text": "number[]"
              },
              "default": "[...defaultPageSizeOptions]",
              "description": "The available page size options for the dropdown.",
              "attribute": "page-size-options"
            },
            {
              "kind": "field",
              "name": "hidePageSize",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Hides the page-size selector section.",
              "attribute": "hide-page-size"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the entire pagination component.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "totalPages",
              "type": {
                "text": "number"
              },
              "description": "The total number of pages, derived from totalItems and pageSize; -1 while the total is unknown.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "totalUnknown",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "lastPage",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "description": "The page nothing goes past: none while the total is unknown.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "setPageSize",
              "parameters": [
                {
                  "name": "size",
                  "type": {
                    "text": "number | string"
                  }
                }
              ],
              "description": "Sets the page size, keeping the first currently visible item in view — which generally means the\npage changes as well.\n\nBoth land in one `ed-page-size-change`, rather than that event plus a separate\n`ed-page-change`: two events for one user action made a consumer that loads on each of them\nfetch twice, the first time for a page it was never on."
            },
            {
              "kind": "method",
              "name": "handlePageSizeChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "setPage",
              "parameters": [
                {
                  "name": "page",
                  "type": {
                    "text": "number | string"
                  }
                }
              ],
              "description": "Sets the current page"
            },
            {
              "kind": "method",
              "name": "handlePageInputChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ page: number }"
              },
              "description": "Emitted when the user moves to another page. A page brought back within the pages because `page`, `total-items` or `page-size` was set from outside is not reported.",
              "name": "ed-page-change",
              "reactName": "onEdPageChange",
              "eventName": "EdPageChangeEvent"
            },
            {
              "type": {
                "text": "{ pageSize: number, page: number }"
              },
              "description": "Emitted when the page size changes. Carries the resulting page as well, because a resize keeps the first visible item in view and therefore usually moves the page — one event per user action, so loading on it fetches once.",
              "name": "ed-page-size-change",
              "reactName": "onEdPageSizeChange",
              "eventName": "EdPageSizeChangeEvent"
            }
          ],
          "attributes": [
            {
              "name": "total-items",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The total number of items being paginated. Below zero while unknown: the pages then go on without a last one.",
              "fieldName": "totalItems"
            },
            {
              "name": "page",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "The current page (1-indexed). A page set past the last, or below the first, or that is no whole\nnumber, is brought back within the pages silently.",
              "fieldName": "page"
            },
            {
              "name": "page-size",
              "type": {
                "text": "number"
              },
              "default": "50",
              "description": "The number of items per page.",
              "fieldName": "pageSize"
            },
            {
              "name": "page-size-options",
              "type": {
                "text": "number[]"
              },
              "default": "[...defaultPageSizeOptions]",
              "description": "The available page size options for the dropdown.",
              "fieldName": "pageSizeOptions"
            },
            {
              "name": "hide-page-size",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Hides the page-size selector section.",
              "fieldName": "hidePageSize"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the entire pagination component.",
              "fieldName": "disabled"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Pagination allows users to navigate through pages of content and optionally change the page size.",
          "jsDoc": "/**\n * @summary Pagination allows users to navigate through pages of content and optionally change the page size.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/pagination\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-icon\n * @dependency ed-number-input\n * @dependency ed-option\n * @dependency ed-select\n *\n * @event {{ page: number }} ed-page-change - Emitted when the user moves to another page. A page brought back within the\n *  pages because `page`, `total-items` or `page-size` was set from outside is not reported.\n * @event {{ pageSize: number, page: number }} ed-page-size-change - Emitted when the page size changes. Carries the\n *  resulting page as well, because a resize keeps the first visible item in view and therefore usually moves the page —\n *  one event per user action, so loading on it fetches once.\n *\n * @csspart base - The component's base wrapper.\n * @csspart page-size-section - The page-size selector section.\n * @csspart page-size-section-select - The internal ed-select.\n * @csspart page-nav-section - The page navigation section.\n * @csspart total-pages - The \"from X\" text. Absent while the total is unknown.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/pagination",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-icon",
            "ed-number-input",
            "ed-option",
            "ed-select"
          ],
          "tagName": "ed-pagination",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdPagination",
            "module": "components/pagination/pagination.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-pagination",
          "declaration": {
            "name": "EdPagination",
            "module": "components/pagination/pagination.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/popover/popover.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdPopover",
          "cssProperties": [
            {
              "description": "The size of the tiny arrow that points to the popover (set to zero to remove).",
              "name": "--ed-popover-arrow-size",
              "default": "0.375rem"
            },
            {
              "description": "The maximum width of the popover's body content.",
              "name": "--ed-popover-max-width",
              "default": "25rem"
            },
            {
              "description": "The speed of the show animation.",
              "name": "--ed-show-duration",
              "default": "var(--ed-transition-fast)"
            },
            {
              "description": "The speed of the hide animation.",
              "name": "--ed-hide-duration",
              "default": "var(--ed-transition-fast)"
            }
          ],
          "cssParts": [
            {
              "description": "The native dialog element that contains the popover content.",
              "name": "dialog"
            },
            {
              "description": "The floating surface holding the content. Carries the frame, background and shadow.",
              "name": "panel"
            },
            {
              "description": "The internal `<ed-popup>` element that positions the popover.",
              "name": "popup"
            },
            {
              "description": "The popup's exported `popup` part. Use this to target the popover's popup container.",
              "name": "popup__popup"
            },
            {
              "description": "The popup's exported `arrow` part. Use this to target the popover's arrow.",
              "name": "popup__arrow"
            }
          ],
          "slots": [
            {
              "description": "The popover's content. Interactive elements such as buttons and links are supported.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dialog",
              "type": {
                "text": "HTMLDialogElement"
              }
            },
            {
              "kind": "field",
              "name": "body",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "popup",
              "type": {
                "text": "EdPopup"
              }
            },
            {
              "kind": "field",
              "name": "anchor",
              "type": {
                "text": "null | Element"
              },
              "default": "null"
            },
            {
              "kind": "field",
              "name": "placement",
              "type": {
                "text": "| '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'",
              "description": "The preferred placement of the popover. Note that the actual placement may vary as needed to keep the popover\ninside of the viewport.",
              "attribute": "placement",
              "parsedType": {
                "text": "'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'top' | 'bottom' | 'right-start' | 'right-end' | 'left-start' | 'left-end'"
              }
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows or hides the popover.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "distance",
              "type": {
                "text": "number"
              },
              "default": "8",
              "description": "The distance in pixels from which to offset the popover away from its target.",
              "attribute": "distance"
            },
            {
              "kind": "field",
              "name": "skidding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The distance in pixels from which to offset the popover along its target.",
              "attribute": "skidding"
            },
            {
              "kind": "field",
              "name": "for",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The ID of the popover's anchor element. This must be an interactive/focusable element such as a button.",
              "attribute": "for",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "withoutArrow",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Removes the arrow from the popover.",
              "attribute": "without-arrow",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "ariaLabel",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The popover's accessible name. Mirrored onto the internal dialog node, where the dialog role\nlives — an aria-label left on the host alone would sit on a role-less element and be ignored\nby assistive tech (house pattern: ed-checkbox).",
              "attribute": "aria-label",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "eventController",
              "privacy": "private",
              "default": "new AbortController()"
            },
            {
              "kind": "field",
              "name": "pressStartedInside",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "#resolvingOnConnect",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "method",
              "name": "wireDismissal",
              "privacy": "private",
              "description": "Listeners and stack registration that have to be live for as long as the popover is open.\n\nShared with the open watcher rather than duplicated: the watcher is gated on\n`waitUntilFirstUpdate`, so a popover that arrives already open — plain markup, SSR — never ran\nit, and Escape and outside-click were dead on exactly the markup a consumer writes by hand."
            },
            {
              "kind": "field",
              "name": "handleAnchorClick",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleBodyClick",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDocumentKeyDown",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDocumentPointerDown",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDocumentClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "syncAnchorAria",
              "privacy": "private",
              "parameters": [
                {
                  "name": "anchor",
                  "default": "this.anchor",
                  "type": {
                    "text": "Element | null"
                  }
                }
              ],
              "description": "Exposes the popover's open state on the anchor's semantic button via aria-expanded (+ aria-haspopup\nand aria-controls), on the same node getByRole('button') reaches. When the anchor is an <ed-button>,\nthat node is its internal <button part=\"base\">; otherwise it is the anchor itself. Mirrors ed-dropdown."
            },
            {
              "kind": "method",
              "name": "clearAnchorAria",
              "privacy": "private",
              "parameters": [
                {
                  "name": "anchor",
                  "type": {
                    "text": "Element | null"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "show",
              "description": "Shows the popover."
            },
            {
              "kind": "method",
              "name": "hide",
              "description": "Hides the popover."
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "Emitted before the popover shows. Cancelable; calling `preventDefault()` keeps it closed.",
              "name": "ed-show",
              "reactName": "onEdShow",
              "eventName": "EdShowEvent"
            },
            {
              "description": "Emitted after the popover has shown and all animations are complete.",
              "name": "ed-after-show",
              "reactName": "onEdAfterShow",
              "eventName": "EdAfterShowEvent"
            },
            {
              "description": "Emitted before the popover hides. Cancelable; calling `preventDefault()` keeps it open.",
              "name": "ed-hide",
              "reactName": "onEdHide",
              "eventName": "EdHideEvent"
            },
            {
              "description": "Emitted after the popover has hidden and all animations are complete.",
              "name": "ed-after-hide",
              "reactName": "onEdAfterHide",
              "eventName": "EdAfterHideEvent"
            }
          ],
          "attributes": [
            {
              "name": "placement",
              "type": {
                "text": "| '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'",
              "description": "The preferred placement of the popover. Note that the actual placement may vary as needed to keep the popover\ninside of the viewport.",
              "fieldName": "placement",
              "parsedType": {
                "text": "'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'top' | 'bottom' | 'right-start' | 'right-end' | 'left-start' | 'left-end'"
              }
            },
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows or hides the popover.",
              "fieldName": "open"
            },
            {
              "name": "distance",
              "type": {
                "text": "number"
              },
              "default": "8",
              "description": "The distance in pixels from which to offset the popover away from its target.",
              "fieldName": "distance"
            },
            {
              "name": "skidding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The distance in pixels from which to offset the popover along its target.",
              "fieldName": "skidding"
            },
            {
              "name": "for",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The ID of the popover's anchor element. This must be an interactive/focusable element such as a button.",
              "fieldName": "for",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "without-arrow",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Removes the arrow from the popover.",
              "fieldName": "withoutArrow"
            },
            {
              "name": "aria-label",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The popover's accessible name. Mirrored onto the internal dialog node, where the dialog role\nlives — an aria-label left on the host alone would sit on a role-less element and be ignored\nby assistive tech (house pattern: ed-checkbox).",
              "fieldName": "ariaLabel",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "Applied when the popover is open.",
              "name": "open"
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Popovers display contextual content and interactive elements in a floating panel.",
          "jsDoc": "/**\n * @summary Popovers display contextual content and interactive elements in a floating panel.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/popover\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-popup\n *\n * @slot - The popover's content. Interactive elements such as buttons and links are supported.\n *\n * @event ed-show - Emitted before the popover shows. Cancelable; calling `preventDefault()` keeps it closed.\n * @event ed-after-show - Emitted after the popover has shown and all animations are complete.\n * @event ed-hide - Emitted before the popover hides. Cancelable; calling `preventDefault()` keeps it open.\n * @event ed-after-hide - Emitted after the popover has hidden and all animations are complete.\n *\n * @csspart dialog - The native dialog element that contains the popover content.\n * @csspart panel - The floating surface holding the content. Carries the frame, background and shadow.\n * @csspart popup - The internal `<ed-popup>` element that positions the popover.\n * @csspart popup__popup - The popup's exported `popup` part. Use this to target the popover's popup container.\n * @csspart popup__arrow - The popup's exported `arrow` part. Use this to target the popover's arrow.\n *\n * @cssproperty [--ed-popover-arrow-size=0.375rem] - The size of the tiny arrow that points to the popover (set to zero to remove).\n * @cssproperty [--ed-popover-max-width=25rem] - The maximum width of the popover's body content.\n * @cssproperty [--ed-show-duration=var(--ed-transition-fast)] - The speed of the show animation.\n * @cssproperty [--ed-hide-duration=var(--ed-transition-fast)] - The speed of the hide animation.\n *\n * @cssstate open - Applied when the popover is open.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/popover",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-popup"
          ],
          "tagName": "ed-popover",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdPopover",
            "module": "components/popover/popover.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-popover",
          "declaration": {
            "name": "EdPopover",
            "module": "components/popover/popover.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/skeleton/skeleton.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdSkeleton",
          "cssProperties": [
            {
              "description": "The color of the skeleton.",
              "name": "--ed-skeleton-color"
            },
            {
              "description": "The sheen color when the skeleton is in its loading state.",
              "name": "--ed-skeleton-sheen-color"
            }
          ],
          "cssParts": [
            {
              "description": "The skeleton's indicator which is responsible for its color and animation.",
              "name": "indicator"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "effect",
              "type": {
                "text": "'pulse' | 'sheen' | 'none'"
              },
              "default": "'none'",
              "description": "Determines which effect the skeleton will use.",
              "attribute": "effect",
              "reflects": true,
              "parsedType": {
                "text": "'none' | 'pulse' | 'sheen'"
              }
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "effect",
              "type": {
                "text": "'pulse' | 'sheen' | 'none'"
              },
              "default": "'none'",
              "description": "Determines which effect the skeleton will use.",
              "fieldName": "effect",
              "parsedType": {
                "text": "'none' | 'pulse' | 'sheen'"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Skeletons are used to provide a visual representation of where content will eventually be drawn.",
          "jsDoc": "/**\n * @summary Skeletons are used to provide a visual representation of where content will eventually be drawn.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/skeleton\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @csspart indicator - The skeleton's indicator which is responsible for its color and animation.\n *\n * @cssproperty --ed-skeleton-color - The color of the skeleton.\n * @cssproperty --ed-skeleton-sheen-color - The sheen color when the skeleton is in its loading state.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/skeleton",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-skeleton",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdSkeleton",
            "module": "components/skeleton/skeleton.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-skeleton",
          "declaration": {
            "name": "EdSkeleton",
            "module": "components/skeleton/skeleton.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/toolbar/toolbar.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdToolbar",
          "cssProperties": [
            {
              "description": "The gap between controls on the control row.",
              "name": "--ed-toolbar-gap",
              "default": "var(--ed-space-2)"
            },
            {
              "description": "The gap between the control row and the state row.",
              "name": "--ed-toolbar-row-gap",
              "default": "var(--ed-space-2)"
            },
            {
              "description": "The minimum height of the state row. It keeps the content below from shifting when the first filter and its reset arrive beside a counter, and when the last filter is removed **and a counter remains** — with no counter the row is empty and collapses entirely, which is intended. Raise it when the row holds something taller than a compact button.",
              "name": "--ed-toolbar-state-min-height",
              "default": "the height of a compact ed-button"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper, holding both rows.",
              "name": "base"
            },
            {
              "description": "The control row: search, actions and view controls on one line.",
              "name": "controls"
            },
            {
              "description": "The container around the `search` slot.",
              "name": "search"
            },
            {
              "description": "The container around the default slot.",
              "name": "actions"
            },
            {
              "description": "The dropdown holding the actions that no longer fit.",
              "name": "overflow"
            },
            {
              "description": "The button that opens the overflow menu.",
              "name": "overflow-trigger"
            },
            {
              "description": "The container around the `view` slot.",
              "name": "view"
            },
            {
              "description": "The state row, rendered only while `meta` or `filters` has content.",
              "name": "state"
            },
            {
              "description": "The separator between the counter and the filters, rendered only while both carry content.",
              "name": "state-divider"
            },
            {
              "description": "The container around the `meta` slot.",
              "name": "meta"
            },
            {
              "description": "The container around the `filters` slot.",
              "name": "filters"
            }
          ],
          "slots": [
            {
              "description": "Actions: anything that acts on what the page is about — creating, exporting, deleting — or opens a surface to do so. Typically `<ed-button>`, `<ed-dropdown>` and `<ed-divider>` elements.",
              "name": ""
            },
            {
              "description": "The search field, always first at the leading edge. Typically `<ed-input type=\"search\">`.",
              "name": "search"
            },
            {
              "description": "Controls that decide what is shown: context selectors, quick filters, the button that opens a filter panel, view switches. They never collapse into the overflow menu. Typically `<ed-select>`, `<ed-radio-group appearance=\"button\">` or an `<ed-button>` for the filter panel.",
              "name": "view"
            },
            {
              "description": "Entry and selection counts, wrapped in an element — a bare text node cannot be assigned to a named slot, so use `<span slot=\"meta\">`.",
              "name": "meta"
            },
            {
              "description": "Active filters and the reset that clears them.",
              "name": "filters"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "resizeObserver",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "mutationObserver",
              "privacy": "private",
              "readonly": true,
              "description": "Content can outgrow the bar without the bar changing size — a translation arrives, a count moves\ninto a label. Neither resizes the host, so nothing would be re-measured and the row would\nquietly overflow. A webfont swapping in changes no node and is not covered here; the resize\nobserver catches it only where the new metrics reach the host.\n\nIt also renders, not just re-measures. The menu entries are copies of the actions' labels and\nstate, and `overflowFrom` does not change when only those change — the menu would keep showing\nwhat an action said at the moment it collapsed. `usage.md` has consumers disable an action\nrather than hide it, which lands here long after the first measurement.\n\nIt does not see everything, which is why the menu also re-renders on `ed-show`. The `ed-tooltip`\nthat gives a stand-in its reason stands outside the bar, where neither observer reaches — TB01\nswitches it on and off with the selection. And `@lit/react` assigns reactive properties rather\nthan attributes (`create-component.js`: `node[name] = value`), so a property that does not\nreflect leaves no mutation record; `disabled` survives that, since `EdFormAssociatedElement`\nwrites the attribute on every update."
            },
            {
              "kind": "field",
              "name": "forwardedObserver",
              "privacy": "private",
              "readonly": true,
              "description": "The same watch over content forwarded through a `<slot>` placed in the toolbar — how a component\nthat composes the bar hands its own slots on. That content lives outside this subtree, where the\nobserver above does not reach, and a `hidden` toggled on it changes no slot assignment either,\nso no slotchange says so. Each forwarded node is observed on its own; `forwarded` is the set\ncurrently observed."
            },
            {
              "kind": "field",
              "name": "forwarded",
              "type": {
                "text": "Node[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "pendingUpdate",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "reconnected",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set on reconnection, for the render that follows: it is measured before it is painted."
            },
            {
              "kind": "field",
              "name": "controlsRow",
              "type": {
                "text": "HTMLElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "searchGroup",
              "type": {
                "text": "HTMLElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "viewGroup",
              "type": {
                "text": "HTMLElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "overflowTrigger",
              "type": {
                "text": "HTMLElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "spacer",
              "type": {
                "text": "HTMLElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "actionsSlot",
              "type": {
                "text": "HTMLSlotElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "overflowFrom",
              "privacy": "private",
              "description": "Index of the first action that sits in the overflow menu; everything before it stays in the bar."
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "An accessible name for the control row. Not displayed, but announced by assistive technology —\nname what the actions apply to (e.g. \"Invoices\"), not the widget.",
              "attribute": "label"
            },
            {
              "kind": "method",
              "name": "handleMutations",
              "privacy": "private",
              "parameters": [
                {
                  "name": "records",
                  "type": {
                    "text": "MutationRecord[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "observeForwarded",
              "privacy": "private",
              "description": "Points `forwardedObserver` at whatever the toolbar's `<slot>` children forward now. Runs after\nevery render, which every change to that set causes: a forwarding slot gaining or losing content\nsends a slotchange through the slot it is assigned to here."
            },
            {
              "kind": "field",
              "name": "actions",
              "type": {
                "text": "HTMLElement[]"
              },
              "privacy": "private",
              "description": "Every element in the default slot, in document order, minus the ones that take no room.\n\nA hidden action takes no space, so it never causes an overflow — and a stand-in for it would\nput it back on screen in the menu, which is the opposite of what `hidden` asks for. A\n`<template>` would become the leading action, the one that never moves.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "hasContent",
              "privacy": "private",
              "parameters": [
                {
                  "name": "slotName",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Whether a slot holds anything that takes room — `''` asks for the default slot.\n\nAn element carrying `hidden` is not content. `HasSlotController` counts it, and a group holding\nnothing else would stay in the row as an empty flex item, with a gap beside it that the\nmeasurement never charges.\n\nRead from the children rather than from the slots: on the first render the slots do not exist\nyet, and the measurement follows right after it. A forwarded `<slot>` holds what it forwards and\nnothing else — a component composing the bar forwards its slot whenever anything claims it,\nhidden or not. `forwardedObserver` renders again when a `hidden` changes over there."
            },
            {
              "kind": "method",
              "name": "handleActionsSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private",
              "description": "Any slot's content changed — every slot's `slotchange` bubbles to the base, a forwarding slot's\nas well. An element that only changes its `slot` leaves no mutation record, since the attribute\nis not in the observer's filter, so this is the only notice. It measures as well as renders: a\ncontrol moving from the view to the search changes how the row breaks apart without necessarily\nchanging the bar's size, so no resize would follow."
            },
            {
              "kind": "method",
              "name": "scheduleOverflowUpdate",
              "privacy": "private",
              "description": "Collapses a burst of notifications into one measurement per frame. The observers can fire many\ntimes for a single change — a framework re-rendering its buttons is one mutation per node — and\nthe answer only depends on the state at the end of it."
            },
            {
              "kind": "method",
              "name": "updateOverflow",
              "privacy": "private",
              "description": "Decides how many trailing actions have to move into the menu.\n\nWidths are read with everything visible, because a hidden element measures zero. The row is laid\nout twice: once relaxed, for the room it has, and once with the spacer in it, for what each\ngroup takes. Every other write waits until the reads are done. The leading action never moves —\na bar whose first action disappears leaves the user with a menu and no visible verb."
            },
            {
              "kind": "method",
              "name": "measureOverflow",
              "privacy": "private",
              "parameters": [
                {
                  "name": "controls",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "actions",
                  "type": {
                    "text": "HTMLElement[]"
                  }
                },
                {
                  "name": "available",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "widthOf",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "el",
                  "type": {
                    "text": "Element | null"
                  }
                }
              ],
              "description": "The width an element contributes to the row.\n\nAn element that renders no box of its own measures zero and would look free — ed-dropdown is\ndisplay:contents. What it actually puts on the line is its trigger, so that is what gets\nmeasured. Summing its children instead would count the menu items, and while the menu is open\nthose report the popup's width: an open dropdown would measure several hundred pixels and\ncollapse itself out of the bar, taking the open menu with it."
            },
            {
              "kind": "field",
              "name": "overflowedActions",
              "type": {
                "text": "HTMLElement[]"
              },
              "privacy": "private",
              "description": "What the menu shows: everything from the overflow point on, minus a divider that would open it.\nA menu starting with a separator separates nothing either.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "renderStandIn",
              "privacy": "private",
              "parameters": [
                {
                  "name": "action",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "Renders a stand-in for one action. Activating it clicks the original, which still carries every\nlistener the consumer attached — `ed-button.click()` forwards to its internal native button, so\na submit button still submits."
            },
            {
              "kind": "method",
              "name": "reasonOf",
              "privacy": "private",
              "parameters": [
                {
                  "name": "action",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "What the stand-in's tooltip says: the text of the `ed-tooltip` that names the action — for a\ndisabled one, the reason. The native `title` is never carried over (`base-styles/no-title-tooltip`).\nA tooltip that only repeats the label, as an icon-only action's does, is left out: the stand-in\nshows the label as text, and a copy would be announced a second time."
            },
            {
              "kind": "field",
              "name": "standInIds",
              "privacy": "private",
              "readonly": true,
              "default": "new WeakMap<Element, string>()",
              "description": "One id per action, kept across renders, so a stand-in's tooltip keeps its anchor."
            },
            {
              "kind": "method",
              "name": "standInId",
              "privacy": "private",
              "parameters": [
                {
                  "name": "action",
                  "type": {
                    "text": "Element"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderReason",
              "privacy": "private",
              "parameters": [
                {
                  "name": "action",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "The tooltip of one stand-in, rendered here because the consumer's cannot reach it: `ed-tooltip`\nresolves `for` with `getElementById` on its own root node, and the menu lives in this shadow\nroot. It sits outside the menu, where ed-dropdown does not count it among its items; its host is\npositioned absolutely, so it takes no room in the row either.\n\nIts events stop here. They do not bubble but are composed, so each would reach this host as the\ntoolbar's own — and a consumer cancelling what it takes for the toolbar's `ed-show` would keep\nthe reason from showing. The tooltip's own listeners still run: they sit on the same target."
            },
            {
              "kind": "method",
              "name": "renderIcon",
              "privacy": "private",
              "parameters": [
                {
                  "name": "source",
                  "type": {
                    "text": "Element | null"
                  }
                }
              ],
              "description": "Carries an element's icon over to its stand-in. The icon can sit in any slot — an icon-only\nbutton holds it in the default one — so the search is not narrowed to `start` and `end`."
            },
            {
              "kind": "method",
              "name": "renderNestedStandIn",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "unknown"
                }
              },
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "Element"
                  }
                }
              ],
              "description": "A stand-in for one entry of a collapsed dropdown, recursing into its own submenu."
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "An accessible name for the control row. Not displayed, but announced by assistive technology —\nname what the actions apply to (e.g. \"Invoices\"), not the widget.",
              "fieldName": "label"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "The action and state zone above a collection or record — search, actions, view controls,\nand the row that shows what the view is narrowed to.",
          "jsDoc": "/**\n * @summary The action and state zone above a collection or record — search, actions, view controls,\n *   and the row that shows what the view is narrowed to.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/toolbar\n * @status experimental\n * @level organism\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-button\n * @dependency ed-dropdown\n * @dependency ed-dropdown-item\n * @dependency ed-divider\n * @dependency ed-icon\n * @dependency ed-tooltip\n *\n * @slot - Actions: anything that acts on what the page is about — creating, exporting, deleting — or\n *   opens a surface to do so. Typically `<ed-button>`, `<ed-dropdown>` and `<ed-divider>` elements.\n * @slot search - The search field, always first at the leading edge. Typically `<ed-input\n *   type=\"search\">`.\n * @slot view - Controls that decide what is shown: context selectors, quick filters, the button that\n *   opens a filter panel, view switches. They never collapse into the overflow menu. Typically\n *   `<ed-select>`, `<ed-radio-group appearance=\"button\">` or an `<ed-button>` for the filter panel.\n * @slot meta - Entry and selection counts, wrapped in an element — a bare text node cannot be\n *   assigned to a named slot, so use `<span slot=\"meta\">`.\n * @slot filters - Active filters and the reset that clears them.\n *\n * @csspart base - The component's base wrapper, holding both rows.\n * @csspart controls - The control row: search, actions and view controls on one line.\n * @csspart search - The container around the `search` slot.\n * @csspart actions - The container around the default slot.\n * @csspart overflow - The dropdown holding the actions that no longer fit.\n * @csspart overflow-trigger - The button that opens the overflow menu.\n * @csspart view - The container around the `view` slot.\n * @csspart state - The state row, rendered only while `meta` or `filters` has content.\n * @csspart state-divider - The separator between the counter and the filters, rendered only while\n *   both carry content.\n * @csspart meta - The container around the `meta` slot.\n * @csspart filters - The container around the `filters` slot.\n *\n * @cssproperty [--ed-toolbar-gap=var(--ed-space-2)] - The gap between controls on the control row.\n * @cssproperty [--ed-toolbar-row-gap=var(--ed-space-2)] - The gap between the control row and the\n *   state row.\n * @cssproperty [--ed-toolbar-state-min-height=the height of a compact ed-button] - The minimum height\n *   of the state row. It keeps the content below from shifting when the first filter and its reset\n *   arrive beside a counter, and when the last filter is removed **and a counter remains** — with no\n *   counter the row is empty and collapses entirely, which is intended. Raise it when the row holds\n *   something taller than a compact button.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/toolbar",
          "status": "experimental",
          "level": "organism",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-button",
            "ed-dropdown",
            "ed-dropdown-item",
            "ed-divider",
            "ed-icon",
            "ed-tooltip"
          ],
          "tagName": "ed-toolbar",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdToolbar",
            "module": "components/toolbar/toolbar.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-toolbar",
          "declaration": {
            "name": "EdToolbar",
            "module": "components/toolbar/toolbar.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/data-grid/data-grid.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "value"
        },
        {
          "kind": "class",
          "description": "",
          "name": "EdDataGrid",
          "cssProperties": [
            {
              "description": "The inline padding of every cell.",
              "name": "--ed-data-grid-cell-padding-inline"
            },
            {
              "description": "The block padding of every cell. The density steps set it.",
              "name": "--ed-data-grid-cell-padding-block"
            },
            {
              "description": "How tall a row of one line is. The density steps set it.",
              "name": "--ed-data-grid-row-height"
            },
            {
              "description": "The outline, the rules between the rows, the header's rules and the lines at a group's end and a pinned band's edge.",
              "name": "--ed-data-grid-border-color"
            },
            {
              "description": "The corners of the outline.",
              "name": "--ed-data-grid-border-radius"
            },
            {
              "description": "The boxes that select, the bar a selected row carries at its start edge, and a column edge under the pointer.",
              "name": "--ed-data-grid-accent-color"
            },
            {
              "description": "The header's background.",
              "name": "--ed-data-grid-header-background"
            },
            {
              "description": "The header's text, the sort priority included.",
              "name": "--ed-data-grid-header-text-color"
            },
            {
              "description": "The header's icons: the sort arrow and the number beside it, the filter button and the menu button.",
              "name": "--ed-data-grid-header-icon-color"
            },
            {
              "description": "Every other row, with `striped`.",
              "name": "--ed-data-grid-stripe-background"
            },
            {
              "description": "The row under the pointer.",
              "name": "--ed-data-grid-row-hover-background"
            },
            {
              "description": "The ring around the cell that holds the focus.",
              "name": "--ed-data-grid-focus-ring"
            },
            {
              "description": "How far one level of a tree steps in.",
              "name": "--ed-data-grid-indent-size"
            },
            {
              "description": "What a selected row is painted with. The library's own selected color by default, so a selected row reads as the same thing as a selected option.",
              "name": "--ed-data-grid-selected-background"
            }
          ],
          "cssParts": [
            {
              "description": "The grid itself. It is the scroll container: give the host a height and the rows scroll here.",
              "name": "base"
            },
            {
              "description": "The rowgroup holding the column headers.",
              "name": "header"
            },
            {
              "description": "One row of column headers. It carries the role and no box of its own.",
              "name": "header-row"
            },
            {
              "description": "One column header.",
              "name": "header-cell"
            },
            {
              "description": "The arrow on a header that can be sorted by. Present whether or not the column is sorted, so the header keeps its width.",
              "name": "sort-indicator"
            },
            {
              "description": "The number saying where a column stands in the order. Rendered only while more than one column is sorted.",
              "name": "sort-priority"
            },
            {
              "description": "The `ed-toolbar` above the grid, rendered once anything is in it: the search, the view menu, content in `toolbar-actions` or `toolbar-view`, a filterable column, or selection. Its lower row always counts the entries.",
              "name": "toolbar"
            },
            {
              "description": "How many entries there are, of how many where a filter or the search narrows them, and how many are selected.",
              "name": "toolbar-count"
            },
            {
              "description": "One active filter in the toolbar, as its column and its value, with a button that clears it.",
              "name": "filter-badge"
            },
            {
              "description": "The button after the last filter badge that clears every filter and the search.",
              "name": "filter-reset"
            },
            {
              "description": "The search field at the start of the toolbar, rendered with `with-search`.",
              "name": "search"
            },
            {
              "description": "The label naming a column that follows the pointer while the column is dragged. It sits in the top layer.",
              "name": "drag-ghost"
            },
            {
              "description": "The menu at the end of the toolbar that shows or hides the columns and switches the appearance and the density.",
              "name": "view-menu"
            },
            {
              "description": "The menu in a column header, on every column that has something to offer unless `hide-column-menu` is set: sorting, pinning, the filter, and hiding and fitting the column. Its entries are rendered only while it is open.",
              "name": "column-menu"
            },
            {
              "description": "The button that opens a column's menu. Out of sight until the header is pointed at, the keyboard is in it or the menu is open, though it keeps its room; always shown on a screen that cannot point.",
              "name": "column-menu-button"
            },
            {
              "description": "The button in a filterable column's header that opens its filter panel, rendered while a filter is in force on the column or its panel is open. A filter is started from the column's menu.",
              "name": "filter-button"
            },
            {
              "description": "The popover holding a column's filter. It stands beside the grid, not in the header, and holds its controls only while open.",
              "name": "filter-panel"
            },
            {
              "description": "The button in a filter panel that clears the column's filter.",
              "name": "filter-clear"
            },
            {
              "description": "The button at the top of a filter panel that closes it.",
              "name": "filter-close"
            },
            {
              "description": "The rowgroup holding the data rows.",
              "name": "body"
            },
            {
              "description": "One data row.",
              "name": "row"
            },
            {
              "description": "A row standing for one value of a grouped column. It carries the `row` part as well.",
              "name": "group-row"
            },
            {
              "description": "A control column's header. It heads no data; the one over the boxes carries the box that takes every row, the one over the toggles holds nothing.",
              "name": "control-header-cell"
            },
            {
              "description": "A cell holding what belongs to a row rather than to a column. These are the leading columns of the grid, one per control, and they are held at the edge whenever a column is pinned there.",
              "name": "control-cell"
            },
            {
              "description": "The control cell holding a row's box, rendered where `selection-mode` is `multiple`. Carries the `control-cell` part as well.",
              "name": "select-cell"
            },
            {
              "description": "The control cell holding the control that opens a row. Carries the `control-cell` part as well.",
              "name": "expand-cell"
            },
            {
              "description": "The box that selects one row, rendered where `selection-mode` is `multiple`. On a grouping row it takes the rows that row holds, and reads its own state back off them.",
              "name": "select"
            },
            {
              "description": "The box in the header that takes every row. Rendered only where more than one row can be selected.",
              "name": "select-all"
            },
            {
              "description": "The control that opens a row, inside its control cell and stepped in by the row's depth. Absent on a row with nothing to open.",
              "name": "expand"
            },
            {
              "description": "The strip between two column headers that the width is dragged on; a double-click fits the column to its content. A named separator that takes no focus — the keyboard resizes from the header cell with Alt and the arrows.",
              "name": "resize-handle"
            },
            {
              "description": "The space in front of a row's content that shows how deep it sits. On the first cell holding data, one step per level.",
              "name": "indent"
            },
            {
              "description": "The message where the filters or the search leave no row. It stands below the grid's header, outside the grid.",
              "name": "no-results"
            },
            {
              "description": "The row group holding the footer row, held against the bottom of the grid.",
              "name": "footer"
            },
            {
              "description": "The footer row, rendered where a shown column has a `footer` and there are rows.",
              "name": "footer-row"
            },
            {
              "description": "One cell of the footer row, under a data column. Under a control column the cell carries the `control-cell` part, as it does in the body.",
              "name": "footer-cell"
            },
            {
              "description": "The row beneath an open row that holds its detail, rendered with `rowDetail`.",
              "name": "row-detail"
            },
            {
              "description": "The one cell of that row, across every column, holding what `rowDetail` returns.",
              "name": "row-detail-cell"
            },
            {
              "description": "The strip beneath the grid holding the pager, rendered with `paginate` while there are rows.",
              "name": "pagination"
            },
            {
              "description": "Which rows the page shows, of how many there are.",
              "name": "pagination-info"
            },
            {
              "description": "The row standing for the rows while they load, with one cell across every column holding the `loading` slot.",
              "name": "loading-row"
            },
            {
              "description": "The row at the end of an endless grid's rows where its next slice failed, rendered with `pagination-mode=\"infinite\"`.",
              "name": "retry-row"
            },
            {
              "description": "The one cell of that row, across every column, saying the rows could not be loaded.",
              "name": "retry-cell"
            },
            {
              "description": "The button in that cell that asks for the slice again.",
              "name": "retry-button"
            },
            {
              "description": "A row of skeletons standing in for the rows while they load. Hidden from the accessibility tree; the grid is marked busy.",
              "name": "skeleton-row"
            },
            {
              "description": "What stands where there are no rows and nothing is looked for. It stands below the header, outside the grid.",
              "name": "empty"
            },
            {
              "description": "What stands in the empty state's place where a data source failed and there are no rows: saying so, with a button to ask again.",
              "name": "load-error"
            },
            {
              "description": "What stands above the grid where a later request failed and the rows it had stay: saying so, with a button to ask again.",
              "name": "load-error-notice"
            },
            {
              "description": "Where the grid says what just happened, for a reader who cannot see it. Visually hidden and outside the grid, since a grid's children are row groups and rows.",
              "name": "live-region"
            },
            {
              "description": "The value a grouping row stands for, in the column it groups by.",
              "name": "group-label"
            },
            {
              "description": "How many rows that grouping row holds.",
              "name": "group-count"
            },
            {
              "description": "One data cell.",
              "name": "cell"
            }
          ],
          "slots": [
            {
              "description": "Actions in the toolbar above the grid, after the search: anything that acts on the rows — creating, exporting, deleting — or opens a surface to do so. Typically `<ed-button>` and `<ed-dropdown>` elements; what no longer fits moves into the toolbar's overflow menu.",
              "name": "toolbar-actions"
            },
            {
              "description": "Controls in the toolbar that decide what the grid shows — quick filters, the button that opens a filter panel — before the view menu; they never collapse into the overflow menu. Typically `<ed-select>`, `<ed-radio-group appearance=\"button\">` or an `<ed-button>` for the filter panel.",
              "name": "toolbar-view"
            },
            {
              "description": "What stands in for the rows while they load. Skeleton rows by default.",
              "name": "loading"
            },
            {
              "description": "What stands where there are no rows and nothing is looked for. An `ed-empty-state` by default.",
              "name": "empty"
            },
            {
              "description": "What stands where the filters or the search leave no row. An `ed-empty-state` by default.",
              "name": "no-results"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "tableController",
              "privacy": "private",
              "readonly": true,
              "default": "new TanStackTableController<EdDataGridFeatures, TData>(this)"
            },
            {
              "kind": "field",
              "name": "rowVirtualizer",
              "privacy": "private",
              "readonly": true,
              "default": "new RowVirtualizerController(this, { getScrollElement: () => this.shadowRoot?.querySelector('.grid') ?? null, estimateSize: () => this.measuredRowHeight || ASSUMED_ROW_HEIGHT, getScrollMargin: () => this.measuredHeaderHeight, getScrollPaddingEnd: () => this.measuredFooterHeight, getItemKey: index => this.windowedRows[index]?.id ?? index, getAttachedHeight: row => { const next = row.nextElementSibling; return next?.matches('[part~=\"row-detail\"]') ? next.getBoundingClientRect().height : 0; } })"
            },
            {
              "kind": "field",
              "name": "focusController",
              "privacy": "private",
              "readonly": true,
              "default": "new GridFocusController(this)",
              "description": "One cell at a time carries the page's tab stop; this is what moves it."
            },
            {
              "kind": "field",
              "name": "navController",
              "privacy": "private",
              "readonly": true,
              "default": "new GridKeyboardNavController(this, { focus: this.focusController, onBodyActivate: (cell, event) => this.activateBodyCell(cell, event), onHeaderActivate: (cell, event) => this.toggleSortFrom(cell, event), onHeaderResize: (cell, toward) => this.resizeByStep(cell, toward), onHeaderMove: (cell, toward) => this.moveColumnByKey(cell, toward), onBodySpace: cell => this.selectByKey(cell), onShiftVertical: (cell, toward) => this.extendRangeByKey(cell, toward), onSelectAll: () => this.selectAllByKey(), onCopy: () => this.copyByKey(), getBodyRowIndex: row => { const index = Number(row.dataset.index ?? row.dataset.detailOf ?? row.dataset.attachedTo); return Number.isInteger(index) ? index : -1; }, // The retry row hangs beneath the last row as a detail does beneath its own: down from that row // reaches it, up from it goes back, and Ctrl+End ends on it. isAttachedRow: row => row.matches('[part~=\"row-detail\"], [part~=\"retry-row\"]'), getBodyRowCount: () => this.table().getRowModel().rows.length, scrollBodyRowIntoView: index => this.scrollBodyRowIntoView(index), getPageTarget: (index, direction) => this.pageTarget(index, direction) })",
              "description": "The APG grid pattern's key handling.\n\nThe virtual hooks are what let it navigate past the rendered window: the controller works in\nabsolute row positions and asks the grid to bring one into view when it is not there."
            },
            {
              "kind": "field",
              "name": "measuredRowHeight",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0",
              "description": "The height a row is declared to have, and the height the header actually takes.\n\nThe virtualizer needs both before it can place anything, and neither is knowable until something\nhas been laid out. Both are read after every render and only *stored* when they differ — the read\nis what keeps them current when the density steps move the first, and the comparison is what\nstops a render from asking for another one."
            },
            {
              "kind": "field",
              "name": "measuredHeaderHeight",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "measuredFooterHeight",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "warnedRowKey",
              "type": {
                "text": "string | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The key already reported as unreachable, so one misconfiguration is one message and not one per row.",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "warnedDuplicateIds",
              "privacy": "private",
              "default": "new Set<string>()",
              "description": "The shared names already reported, on the same terms."
            },
            {
              "kind": "field",
              "name": "warnedMaskedGrouping",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether the grouping that the rows' own children put aside has already been reported."
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)",
              "description": "The strings this element renders of its own: the control that opens a row, and what it says."
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'toolbar-actions', 'toolbar-view')"
            },
            {
              "kind": "field",
              "name": "lightChildrenObserver",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "liveRegion",
              "type": {
                "text": "HTMLElement | null"
              },
              "privacy": "private",
              "description": "Where the grid says what just happened, for a reader who cannot see it.\n\nChanges the user makes in one place and sees the result of in another — a box taking forty\nrows at once — leave nothing behind for someone who is not looking at the rows.",
              "parsedType": {
                "text": "null | HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "announcementTimers",
              "privacy": "private",
              "readonly": true,
              "default": "new Set<ReturnType<typeof setTimeout>>()",
              "description": "Announcements still on their way out, so a disconnect does not leave timers behind."
            },
            {
              "kind": "field",
              "name": "forgetKeyRange",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "forgetStrandedFocus",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "retryAfterFailure",
              "privacy": "private",
              "readonly": true,
              "description": "Asks again after a failed first request. The button goes with the message while the rows load,\nso the focus goes to the grid's tab stop first rather than falling to the document."
            },
            {
              "kind": "field",
              "name": "retrySlice",
              "privacy": "private",
              "readonly": true,
              "description": "Asks again for the slice that failed, past whatever failure a consumer set."
            },
            {
              "kind": "field",
              "name": "handleFontsLoaded",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "announce",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Hands a reader one sentence.\n\nA node put in rather than text swapped out, which is what `ed-toast-stack` does and for the\nreason it does: a region is read when its content *changes*, and selecting one row and then a\ndifferent one is \"1 row selected\" both times. Rewriting the same words is not a change; a node\narriving is one however the words read."
            },
            {
              "kind": "field",
              "name": "translatedFrom",
              "type": {
                "text": "EdDataGridColumn<TData>[] | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The columns the definitions below were built from, held to answer whether they are still current.",
              "parsedType": {
                "text": "null | { field?: string, label?: string, id?: string, columns?: EdDataGridColumn[], align?: 'start' | 'end', width?: number, minWidth?: number, maxWidth?: number, flex?: number, spanColumns?: number | {  }, pinned?: 'left' | 'right', resizable?: false | true, pinnable?: false | true, movable?: false | true, hidden?: false | true, hideable?: false | true, filterable?: false | true, filterType?: 'text' | 'equals' | 'number-range' | 'date-range' | 'set' | 'includes-any' | 'includes-all', filterFn?: 'endsWith' | 'startsWith' | 'arrIncludes' | 'arrIncludesAll' | 'arrHas' | 'arrIncludesSome' | 'between' | 'betweenInclusive' | 'empty' | 'equals' | 'equalsString' | 'equalsStringSensitive' | 'inDateRange' | 'inNumberRange' | 'includesString' | 'includesStringSensitive' | 'notEmpty' | 'weakEquals' | {  }, filterOptions?: { value: unknown, label?: string, count?: number }[], footer?: string | {  }, aggregation?: 'first' | 'last' | 'sum' | 'min' | 'max' | 'extent' | 'mean' | 'median' | 'unique' | 'uniqueCount' | 'count' | {  }, aggregatedFormatter?: {  }, searchable?: false | true, sortable?: false | true, sortFn?: 'text' | 'alphanumeric' | 'alphanumericCaseSensitive' | 'basic' | 'datetime' | 'textCaseSensitive', comparator?: {  }, sortDescFirst?: false | true, sortUndefined?: false | 'first' | 'last' | 1 | -1, formatter?: {  }, headerFormatter?: {  }, value?: {  }, rowheader?: false | true }[]"
              }
            },
            {
              "kind": "field",
              "name": "translatedColumns",
              "type": {
                "text": "EdDataGridColumnDef<TData>[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "columnsSeen",
              "type": {
                "text": "EdDataGridColumn<TData>[]"
              },
              "privacy": "private",
              "default": "[]",
              "description": "What the columns held when they were translated, to tell an edit in place from the same array."
            },
            {
              "kind": "field",
              "name": "columnsHandedIn",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether `columns` was assigned since the translation was last checked."
            },
            {
              "kind": "field",
              "name": "columns",
              "type": {
                "text": "EdDataGridColumn<TData>[]"
              },
              "default": "[]",
              "description": "The columns to render.\n\nAssigning the same array again counts as a change, so columns edited in place show once the\narray is handed back, as the template allows."
            },
            {
              "kind": "field",
              "name": "data",
              "type": {
                "text": "TData[]"
              },
              "default": "[]",
              "description": "The rows to render.\n\nAssigning the same array again counts as a change, so rows edited in place show once the array\nis handed back, as the template allows."
            },
            {
              "kind": "field",
              "name": "engineData",
              "type": {
                "text": "TData[]"
              },
              "privacy": "private",
              "default": "[]",
              "description": "What the engine is handed as `data`. The engine keeps its row model for as long as it is handed\nthe same array, so an array assigned again is handed over as a copy."
            },
            {
              "kind": "field",
              "name": "rowKey",
              "type": {
                "text": "string | ((row: TData, index: number, parent?: TData, parentKey?: string) => string)"
              },
              "default": "'id'",
              "description": "What identifies a row: a field name, a dot path, or a function of the row. The function is handed\nthe row's place among its siblings and, in a tree, the parent's record and the parent's key, for\nchildren whose own ids repeat under different parents.\n\nThe value is the row's identity everywhere — selection, expansion and a saved view all key on\nit — and it has to survive sorting, filtering and a replaced `data` array, so it belongs to the\nrecord rather than to its position. A row the key does not reach falls back to its position and\nis reported once.",
              "attribute": "row-key",
              "parsedType": {
                "text": "string | {  }"
              }
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The grid's accessible name.\n\nIt is a property rather than an `aria-labelledby` on the host because the `role=\"grid\"` node is\nin the shadow root, and an IDREF does not cross that boundary.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "sort",
              "type": {
                "text": "EdDataGridSort"
              },
              "default": "[]",
              "description": "Which columns the rows are sorted by, in the order that decides ties.\n\nReadable and writable: a consumer can set the order the grid opens with, and reads it back here\nafter the user changes it — the same value `ed-data-grid-sort-change` carries.",
              "parsedType": {
                "text": "{ desc: boolean, id: string }[]"
              }
            },
            {
              "kind": "field",
              "name": "withoutSortRemoval",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether a third activation of a header leaves the column sorted instead of clearing its order.\n\nThe cycle is ascending, descending, none. With this set it is ascending, descending, ascending,\nfor a grid whose rows are meaningless in their original order.",
              "attribute": "without-sort-removal"
            },
            {
              "kind": "field",
              "name": "sortDescFirst",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the first activation of a header sorts descending. Individual columns may say otherwise.",
              "attribute": "sort-desc-first"
            },
            {
              "kind": "field",
              "name": "maxMultiSort",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "How many columns may be sorted by at once. `0` is no limit, `1` allows a single column only.",
              "attribute": "max-multi-sort"
            },
            {
              "kind": "field",
              "name": "isMultiSortEvent",
              "type": {
                "text": "((event: unknown) => boolean) | null"
              },
              "default": "null",
              "description": "What makes an activation add a column to the sort rather than replace it.\n\nUnset, the engine's own answer applies: the Shift key. A consumer whose product already spends\nShift on something else replaces the test rather than losing multi-column sorting.",
              "parsedType": {
                "text": "null | {  }"
              }
            },
            {
              "kind": "field",
              "name": "childRows",
              "type": {
                "text": "string | ((row: TData) => TData[] | undefined) | null"
              },
              "default": "null",
              "description": "Where a row's children are: a field name, a dot path, or a function of the row.\n\nSetting it is what makes the grid a tree. Nothing else has to change — a row without children\nsimply has none, and the engine only asks.",
              "attribute": "child-rows",
              "parsedType": {
                "text": "null | string | {  }"
              }
            },
            {
              "kind": "field",
              "name": "rowDetail",
              "type": {
                "text": "((row: TData) => unknown) | null"
              },
              "default": "null",
              "description": "What a row shows in a panel beneath it once opened: a function of the row, whose result is\nrendered as a cell's content is. Setting it gives every row but a group row the control that\nopens it; a row with children opens both together, the panel first.",
              "parsedType": {
                "text": "null | {  }"
              }
            },
            {
              "kind": "field",
              "name": "groupBy",
              "type": {
                "text": "string | string[] | null"
              },
              "default": "null",
              "description": "Which columns the rows are grouped by, in the order they nest.\n\nEach value of the first column becomes a row of its own holding the ones that share it; a second\ncolumn groups inside that. As an attribute it takes the ids separated by spaces or commas, which\nis how the template spells a list that has to fit in markup.\n\nThe grouped columns move to the front, in this order, and a grouping row's label stands in the\ncolumn it groups by. Where anything is pinned at the start, they are held there too.\n\nOne hierarchy at a time: where `childRows` is set the rows already nest, and this is ignored —\nkept rather than cleared, so it applies again once they stop, and reported as ignored so the\ngrouping does not simply go missing. A name with nothing in it names no column and is dropped.",
              "attribute": "group-by",
              "parsedType": {
                "text": "null | string | string[]"
              }
            },
            {
              "kind": "field",
              "name": "expandedKeys",
              "type": {
                "text": "EdDataGridExpandedKeys"
              },
              "default": "[]",
              "description": "Which rows are open, by their key.\n\nReadable and writable, like `sort`: a consumer can open rows up front and reads back what the\nuser opened. Setting it does **not** emit — only a user's own toggle does.\n\nNothing prunes it. The engine would empty it on every new `data`, which costs a consumer the\nview they just restored, so that is switched off — and the price is that a key outlives the row\nit named: a later dataset in which the same key has children again shows that row open, and a\nlong session accumulates keys that name nothing. Both are the consumer's to clear, and pruning\nagainst the rendered rows is not the answer while a filtered-away row still has to keep its\nstate (block 8).",
              "parsedType": {
                "text": "string | number[]"
              }
            },
            {
              "kind": "field",
              "name": "resizable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the user can drag a column's width.\n\nA column may say otherwise for itself. What a drag produces is a width the grid remembers, so\na resized column stops sharing the leftover space and is laid out at what it was given.",
              "attribute": "resizable",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "reorderable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the user can move columns, by dragging a header or with Shift and an arrow on it. A column\nmay say otherwise for itself with `movable`; a pinned column stands at its edge and is not moved.",
              "attribute": "reorderable",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "columnOrder",
              "type": {
                "text": "string[]"
              },
              "default": "[]",
              "description": "The order the columns are shown in, by id — empty for the order they were declared in. The\nuser's moves write it, hidden columns included, and setting it moves the columns without a\nreport. Pinned columns still stand at their edges; this orders the rest."
            },
            {
              "kind": "field",
              "name": "pinnable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the user can hold a column against an edge.\n\nA column may say otherwise for itself. Separate from the column's own `pinned`, which says\nwhere it **starts**: a grid that is not pinnable still lays out what its columns declared, and\none that is offers the edges in each column's menu. A pinned column's menu offers to let it go\neither way.",
              "attribute": "pinnable",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "hideColumnMenu",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Takes the menu out of every column header.\n\nThe menu is where a user sorts, pins, filters, hides and fits a column by name. Without it a\ncolumn's filter is reached only once a filter is in force — a consumer sets it, and the button\nthat then appears in the header opens its panel — so the user can no longer start one.",
              "attribute": "hide-column-menu",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "withViewMenu",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the toolbar above the grid carries a view menu: the columns the user may hide, each with a\ncheck that shows or hides it, the appearance and the density to switch between, and an entry that\nputs the columns back as declared. What the user picks there overrides `appearance` and `density`\nas the consumer set them, reported by `ed-data-grid-view-change` and kept by `getState()`.\n`hide-appearance-option` and `hide-density-option` leave either choice out.",
              "attribute": "with-view-menu",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "hideAppearanceOption",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the view menu leaves out the appearance, so the user keeps the one the consumer set.\n`getState()` then leaves it out too.",
              "attribute": "hide-appearance-option",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "hideDensityOption",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the view menu leaves out the density, so the user keeps the one the consumer set.\n`getState()` then leaves it out too.",
              "attribute": "hide-density-option",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "selectable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether rows can be selected: by a click on a row and by Space, and where `selection-mode` is\n`multiple` by a box per row as well. Off, the grid renders no box and reports nothing.",
              "attribute": "selectable",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "selectionMode",
              "type": {
                "text": "EdDataGridSelectionMode"
              },
              "default": "'single'",
              "description": "Whether one row can be selected at a time, or several.\n\nThe template spells both the switch and the mode in one property; this library's rule says a\ntoggle and its mode are two, so `selectable` turns it on and this says which kind.\n\nIn `multiple` a control column leads the grid with a box per row and one in the header that\ntakes every row, and the grid says it takes several. In `single` there is no box and no column\nfor one — a box offers a choice independent of the others, which one-at-a-time is not. A row is\nselected by a click on it or by Space, released by Space or by Ctrl/Cmd with the click, and says\nso with its paint and its `aria-selected`.",
              "attribute": "selection-mode",
              "reflects": true,
              "parsedType": {
                "text": "'single' | 'multiple'"
              }
            },
            {
              "kind": "field",
              "name": "selectedKeys",
              "type": {
                "text": "EdDataGridSelectedKeys"
              },
              "default": "[]",
              "description": "Which rows are selected, by their key.\n\nReadable and writable, like `sort` and `expandedKeys`, and setting it does **not** emit — only\na user's own doing does. Keys and not positions, so a selection survives sorting, filtering and\na new `data` array carrying the same rows.\n\nA key naming a loaded row that `selectableRows` refuses is dropped when it is set; a key naming\nno loaded row is kept.",
              "parsedType": {
                "text": "string | number[]"
              }
            },
            {
              "kind": "field",
              "name": "selectableRows",
              "type": {
                "text": "((row: TData) => boolean) | null"
              },
              "default": "null",
              "description": "Which rows the user may select. Rows it turns down are not reached by a click, Space, a range or\na select-all. In `multiple` their box cannot be operated; in `single`, which draws no box, they\ncarry no `aria-selected`, which says a row cannot be selected.",
              "parsedType": {
                "text": "null | {  }"
              }
            },
            {
              "kind": "field",
              "name": "subRowSelection",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Whether selecting a row selects the rows beneath it.\n\nOn, a parent takes its children with it and shows a part-selected box while only some of them\nare chosen. Off, every row answers for itself and a parent is just another row.",
              "attribute": "sub-row-selection"
            },
            {
              "kind": "field",
              "name": "withoutClickSelection",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Leaves a click on a row's data alone, so only the box and Space select — for a grid whose cell\nclicks open something of their own. In `single`, which draws no box, Space alone selects then.\nMUI 5's `disableSelectionOnClick`.",
              "attribute": "without-click-selection",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "withoutToolbar",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Leaves the toolbar out, for a consumer who builds one of their own: no search, no view menu, no\ncount and no filter badges, whatever else asks for them. The pager counts the entries again. What\nsuch a toolbar needs is public: `searchTerm`, `filters`, `toggleColumn()`, `resetColumns()`,\n`selectedKeys` and the events that report them.",
              "attribute": "without-toolbar",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "resolveRowId",
              "privacy": "private",
              "readonly": true,
              "description": "The engine's `getRowId`, as one stable function.\n\nCreated once, not per render: the engine reads the option's identity when it decides whether a\nmemoized model is still current, and a fresh closure each time would look like a change on\nevery frame."
            },
            {
              "kind": "field",
              "name": "hadFocus",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether something inside the grid held the focus when this render began."
            },
            {
              "kind": "method",
              "name": "catchStrandedFocus",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Keeps the tab stop inside the grid when the row that held it is recycled out of the window.\n\nA virtualized row is a real element that really leaves the DOM, and the browser answers that by\ndropping focus on the document body: a user who reaches a cell and then scrolls with the mouse\nis outside the component without having pressed anything, and their next Tab starts at the top\nof the page. The stop moves to the same column of the first fully visible row instead — a row\nalready clear of the sticky header, so re-anchoring cannot scroll against the hand that scrolled."
            },
            {
              "kind": "field",
              "name": "strandedInBody",
              "type": {
                "text": "{ index: number; column: number; focus: boolean; placed: HTMLElement } | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Where the body's tab stop was when its rows went — while loading, say — to be taken up once they\nreturn, with the focus if it had it, and the header cell it was parked on meanwhile.",
              "parsedType": {
                "text": "null | { index: number, column: number, focus: boolean, placed: HTMLElement }"
              }
            },
            {
              "kind": "method",
              "name": "resumeStrandedFocus",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Takes the tab stop back into the body when its rows return, at the row and column it left from,\nas long as it is still where it was parked: the stop on the header cell, and the focus with it if\nit had the focus. Anywhere else, the user has moved on."
            },
            {
              "kind": "method",
              "name": "isClearOfHeader",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "scroller",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "bodyRowAt",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLElement | null"
                }
              },
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "The rendered row at a position in the data, or null while it is outside the window."
            },
            {
              "kind": "method",
              "name": "scrollBodyRowIntoView",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<HTMLElement | null>"
                }
              },
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Brings a row into the rendered window and hands it back.\n\nSetting the scroll position is not enough: the virtualizer recomputes its window from the scroll\n**event**, which the browser delivers after the fact, so the row is not in the DOM when\n`scrollToIndex` returns. The wait is bounded — a row a key asks for that never arrives has to\ngive the key back rather than hang it."
            },
            {
              "kind": "method",
              "name": "pageTarget",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "direction",
                  "type": {
                    "text": "1 | -1"
                  }
                }
              ],
              "description": "The row a page away, by the height the rows take rather than by their count: an open detail is\npart of its row's height, and counting rows would page past everything it covers."
            },
            {
              "kind": "method",
              "name": "pageRowCount",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "description": "How many rows of the declared height fit between the header and the footer, at least one."
            },
            {
              "kind": "method",
              "name": "emitCellEvent",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "originalEvent",
                  "type": {
                    "text": "Event"
                  }
                }
              ],
              "description": "Reports a cell the user acted on, by click or by Enter.\n\nBoth carry the same detail, and `originalEvent` is what tells them apart — which is why there is\none event for the two rather than one each."
            },
            {
              "kind": "method",
              "name": "toggleRow",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "Row<EdDataGridFeatures, TData>"
                  }
                },
                {
                  "name": "expand",
                  "type": {
                    "text": "boolean"
                  }
                }
              ],
              "description": "Opens or closes a row the user acted on, and says so.\n\nThe event belongs here and not to the property: the template fires it \"only when the *user*\ntoggles a row\", and a consumer calling `expandRow()` already knows. Same rule as the sort event,\nand it is what keeps a listener that writes `expandedKeys` from feeding itself."
            },
            {
              "kind": "method",
              "name": "activateBodyCell",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ],
              "description": "What Enter does on a body cell. Space selects the row instead, as in the template.\n\nThe control cell holds the one control that opens the row and nothing else, so it answers the\nactivation key itself. Sending it through the actions mode instead would cost a keystroke to\nstep into a cell with nothing else in it to reach. Every other cell reports the activation, as\na click on it does."
            },
            {
              "kind": "method",
              "name": "rowOf",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Row<EdDataGridFeatures, TData> | undefined"
                }
              },
              "parameters": [
                {
                  "name": "element",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "The row an element sits in, by the position the row carries."
            },
            {
              "kind": "method",
              "name": "setExpanded",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "id",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "expand",
                  "type": {
                    "text": "boolean"
                  }
                }
              ],
              "description": "Writes one row's state into `expandedKeys` without disturbing the others.\n\nWhat goes in is what a row's key **is**: `rowKey` resolves to a string, so a consumer who wrote\n`[1, 2]` and then opens a third row reads back `[1, 2, '3']`. The property accepts numbers\nbecause the template's type does; comparing is by text throughout, so a number and its digits\nare the same row here."
            },
            {
              "kind": "method",
              "name": "isInAnotherGrid",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "element",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "Whether an element belongs to another grid — one inside a detail panel. Its rows and cells answer\nto that grid; read here, its expand cell would open this grid's row at the same position."
            },
            {
              "kind": "field",
              "name": "windowedRows",
              "type": {
                "text": "Row<EdDataGridFeatures, TData>[]"
              },
              "privacy": "private",
              "default": "[]",
              "description": "The rows the virtualizer's window was taken of, which its keys are read from."
            },
            {
              "kind": "method",
              "name": "cellFromEvent",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLElement | null"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleCellContextmenu",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "groupingCache",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "description": "The two derived state slices as they were last built, so they keep their identity."
            },
            {
              "kind": "field",
              "name": "expandedCache",
              "type": {
                "text": "Record<string, boolean>"
              },
              "privacy": "private",
              "default": "{}",
              "parsedType": {
                "text": "{  }"
              }
            },
            {
              "kind": "field",
              "name": "expandedFrom",
              "type": {
                "text": "EdDataGridExpandedKeys | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The list `expandedCache` was built from, to answer the same one again without reading it.",
              "parsedType": {
                "text": "null | string | number[]"
              }
            },
            {
              "kind": "field",
              "name": "expandedSeen",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "description": "And what that list said, copied.\n\nHolding the consumer's own array here instead would let them defeat the comparison: pushing\ninto it and then handing over a copy leaves the two agreeing, and the row they just opened\nwould never open."
            },
            {
              "kind": "field",
              "name": "hasTreeRows",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether the rows bring their own children.\n\nRead off what the consumer declared, not off the rows: which hierarchy applies is a\nconfiguration, and deciding it from the data would leave a grid that groups while the rows are\nstill arriving and stops the moment the first row with children lands. What the rows say\ndecides the **role**, further down, because that describes what is on screen.\n\nA name with nothing in it is not a declaration, though — `child-rows` written bare, or as\nblanks, names no field. Answering `true` there would switch the grouping off without putting a\nhierarchy in its place, and all three callers have to give the same answer or they will.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "groupingIds",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string[]"
                }
              },
              "description": "`groupBy` as the engine wants it: always a list, in the order the groups nest.\n\nMemoized, and this is not a nicety. The engine watches its state slices by identity, so a list\nbuilt fresh on every render reads as a change on every render — it recomputes, asks for a\nrender, and the grid never stops. The same reason `columnDefs` is memoized, and a crashed\nrenderer is how it announces itself.\n\nHeld against what the list **says** rather than against the array it came in. A framework\nbinding that hands over an equal-but-new array on each of its own renders is the same trap one\nstep slower: no loop, but the whole dataset regrouped, resorted and re-expanded for a value\nthat did not change."
            },
            {
              "kind": "method",
              "name": "declaredGroupingIds",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string[]"
                }
              },
              "description": "The ids `group-by` names, before the rows' own children have their say.\n\nBlanks are dropped, the same rule `hasTreeRows` applies and the same one the attribute already\nfollows — a name with nothing in it names no column. Without it an empty string set through\nthe property would group by a column that cannot exist, and report a grouping as displaced\nthat was never asked for."
            },
            {
              "kind": "field",
              "name": "controlColumnCount",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "description": "How many leading columns the row's own controls take.\n\nOne each, rather than one shared: the cell answers Enter itself, which only works\nwhile there is a single thing in it to mean. Two controls in one cell would put the second\nbehind the actions mode and leave the pair reading as one target for a pointer.\n\nThe box comes first, because selecting a row is the outer decision and opening it the inner\none. The template orders them the other way, but only because its indentation lives in the\ncolumn that opens the row; ours does not.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "hasSelectColumn",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether the rows carry a box in a column of its own: only where several may be selected. A box\noffers a choice independent of the others, which one row at a time is not — there the row\nitself is the control, as the template's single selection is a click without a box.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "expandColumnIndex",
              "type": {
                "text": "number | null"
              },
              "privacy": "private",
              "description": "Whether a column opening rows is rendered, and at which display index it sits.",
              "readonly": true,
              "parsedType": {
                "text": "null | number"
              }
            },
            {
              "kind": "method",
              "name": "leafIndexOf",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "columnIndex",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "A column's place among the leaves, from the place it is displayed in.\n\nThe two differ by the control columns, and the difference is the whole reason this is a method:\neverything that resolves a column from a DOM attribute — which cell was clicked, which header\nwas sorted — indexes `getVisibleLeafColumns()`, so counting from the display position reports the\ncolumn next door and runs off the end at the last one."
            },
            {
              "kind": "method",
              "name": "expandedState",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Record<string, boolean>"
                }
              },
              "description": "`expandedKeys` as the engine wants it, memoized for the same reason as the grouping.\n\nTwo steps rather than the grouping's one, because this list is as long as the rows a consumer\nhas opened. The same array is answered without reading it at all, which is what a scroll frame\ngets; a different one is read and compared before the record is rebuilt, since an equal-but-new\nlist on each of a framework's own renders would otherwise re-derive every open row for a value\nthat did not change."
            },
            {
              "kind": "field",
              "name": "resolveSubRows",
              "privacy": "private",
              "readonly": true,
              "description": "A row's children, as one stable function.\n\nCreated once for the same reason `getRowId` is: the engine reads the option's identity when it\ndecides whether the core row model is still current, and a fresh closure per render would look\nlike a change on every frame."
            },
            {
              "kind": "method",
              "name": "everyExpandableKey",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdDataGridExpandedKeys"
                }
              },
              "description": "Every row that has something to open, which is what the engine's `true` stands for."
            },
            {
              "kind": "method",
              "name": "columnDefs",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdDataGridColumnDef<TData>[]"
                }
              },
              "description": "The engine's column definitions, rebuilt only when `columns` is a different array.\n\nThe engine memoizes its row models on the identity of what it is handed, so translating on every\nrender would re-derive filtering, sorting, grouping and paging on every frame, scroll frames\nincluded. This is the one performance trap of building on it, and the template hit it too."
            },
            {
              "kind": "method",
              "name": "tableOptions",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "TableOptions<EdDataGridFeatures, TData>"
                }
              }
            },
            {
              "kind": "method",
              "name": "expandRow",
              "parameters": [
                {
                  "name": "id",
                  "type": {
                    "text": "string | number"
                  }
                }
              ],
              "description": "Opens a row, by the key `rowKey` gives it.\n\nSilent, as the template has it: these report nothing, because the caller is the one who did it.\nThe key is kept even for a row that cannot open yet, so the row opens once it can — once its\nchildren or a detail arrive."
            },
            {
              "kind": "method",
              "name": "collapseRow",
              "parameters": [
                {
                  "name": "id",
                  "type": {
                    "text": "string | number"
                  }
                }
              ],
              "description": "Closes a row. Silent, for the same reason."
            },
            {
              "kind": "method",
              "name": "expandAllRows",
              "description": "Opens every row that has something to open, at every level."
            },
            {
              "kind": "method",
              "name": "collapseAllRows",
              "description": "Closes all of them."
            },
            {
              "kind": "field",
              "name": "rangeAnchor",
              "type": {
                "text": "string | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Which row a range runs from, and whether the click in hand extends one.\n\nThe row's id, not a number. The engine's own `index` is a row's place in the array it came\nfrom, which sorting never renews — a range counted in those would take a stretch of the\nuntouched data while the user was pointing at two boxes on screen. Both ends are resolved\nagainst the rows as they stand when the second click arrives.",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "rangeExtends",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "method",
              "name": "selectRange",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "fromId",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "toId",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "checked",
                  "type": {
                    "text": "boolean"
                  }
                },
                {
                  "name": "base",
                  "default": "this.selectionState()",
                  "type": {
                    "text": "Record<string, true>"
                  }
                }
              ],
              "description": "Takes, or releases, every row between two others.\n\nBoth ends included, and the rows the consumer locked stepped over rather than stopping at:\na range is a shorthand for clicking each box, and the ones that cannot be clicked stay as\nthey are. It takes each row's children with it for the same reason — one click on a parent\ndoes, so a range covering that parent has to."
            },
            {
              "kind": "field",
              "name": "columnWidths",
              "type": {
                "text": "Record<string, number>"
              },
              "privacy": "private",
              "default": "{}",
              "description": "The widths the user has dragged columns to, by column id.\n\nThe element holds them, not the DOM: a width written onto a cell is gone the next time the\ngrid renders, which is the whole of the finding that a resized column sprang back on the next\nunrelated change. Reactive, so a drag redraws; kept out of the engine's own sizing state\nbecause the tracks are written here rather than read from there.",
              "parsedType": {
                "text": "{  }"
              }
            },
            {
              "kind": "field",
              "name": "columnPins",
              "type": {
                "text": "Record<string, 'left' | 'right' | false>"
              },
              "privacy": "private",
              "default": "{}",
              "description": "Where the user has put each column, by column id.\n\nOnly the ones they have moved. A column they never touched follows what it declared — which is\nwhy this holds `false` for a column the user unpinned rather than simply leaving it out: the\nabsence of an entry means \"whatever the column says\", and that is not the same answer.",
              "parsedType": {
                "text": "{  }"
              }
            },
            {
              "kind": "field",
              "name": "resizing",
              "type": {
                "text": "{\n    columnId: string;\n    pointerId: number;\n    from: number;\n    width: number;\n    direction: 1 | -1;\n    /** The widths as they were before the press, which the drag returns to when it ends. */\n    before: Record<string, number>;\n    /** Which of them the user had chosen, which goes back along with them. */\n    chosenBefore: string[];\n    /** Whether the pointer has gone past the threshold, which is what makes the press a drag. */\n    moved: boolean;\n  } | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The drag in hand: which column, where the pointer went down, and how wide it was then.",
              "parsedType": {
                "text": "null | { columnId: string, pointerId: number, from: number, width: number, direction: 1 | -1, before: {  }, chosenBefore: string[], moved: boolean }"
              }
            },
            {
              "kind": "field",
              "name": "selectionFrom",
              "type": {
                "text": "EdDataGridSelectedKeys | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "What the selection record was last built from, and what that list said. As for the open rows.",
              "parsedType": {
                "text": "null | string | number[]"
              }
            },
            {
              "kind": "field",
              "name": "selectionSeen",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "selectionCache",
              "type": {
                "text": "Record<string, true>"
              },
              "privacy": "private",
              "default": "{}",
              "parsedType": {
                "text": "{  }"
              }
            },
            {
              "kind": "method",
              "name": "selectionState",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Record<string, true>"
                }
              },
              "description": "`selectedKeys` as the engine wants it, memoized the way the open rows are and for the reason."
            },
            {
              "kind": "method",
              "name": "canSelectRow",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "Row<EdDataGridFeatures, TData>"
                  }
                }
              ],
              "description": "Whether a row is the user's to select.\n\nA grouping row never is. It stands for a value rather than a record, so selecting it would put\na key in the list that names no row — its box takes the rows it holds instead, and reads its\nown state back off them."
            },
            {
              "kind": "field",
              "name": "selectedRows",
              "type": {
                "text": "TData[]"
              },
              "description": "The records behind the selected rows, at every depth.\n\nRead off the core model rather than the rendered one, so a selected child inside a closed\nparent is in here — it is selected whether or not anyone can currently see it.\n\nSettable, as the template's is: the records are matched against the loaded rows by identity\nand become `selectedKeys`. A record that is not loaded names no key and is left out."
            },
            {
              "kind": "field",
              "name": "recordsToSelect",
              "type": {
                "text": "TData[] | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Records handed to `selectedRows` and not yet turned into keys.",
              "parsedType": {
                "text": "null | TData[]"
              }
            },
            {
              "kind": "method",
              "name": "withoutLockedKeys",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdDataGridSelectedKeys"
                }
              },
              "parameters": [
                {
                  "name": "keys",
                  "type": {
                    "text": "EdDataGridSelectedKeys"
                  }
                }
              ],
              "description": "The keys without those naming a loaded row the consumer locked."
            },
            {
              "kind": "method",
              "name": "isRowSelected",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "Row<EdDataGridFeatures, TData>"
                  }
                }
              ],
              "description": "Whether a row counts as selected.\n\nIts own key, or — where selecting a parent takes its children — everything under it being\ntaken. Three things ask: the box, the paint on the row, and what the row reports. One of them\nanswering differently is the row disagreeing with itself."
            },
            {
              "kind": "method",
              "name": "rowSelectedState",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string | undefined"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "Row<EdDataGridFeatures, TData>"
                  }
                }
              ],
              "description": "What a row's `aria-selected` says, or nothing where the row is no thing to select.\n\nA grouping row stands for its members and has no selection of its own. In single mode a row the\nconsumer refuses has nothing else to show it, there being no box to disable, so it carries none:\nan absent `aria-selected` is the one that says a row cannot be selected, where `false` would\noffer it."
            },
            {
              "kind": "method",
              "name": "renderSelectBox",
              "privacy": "private",
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "Row<EdDataGridFeatures, TData>"
                  }
                }
              ],
              "description": "The box on one row. A grouping row's takes its members rather than itself."
            },
            {
              "kind": "method",
              "name": "selectBoxName",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "Row<EdDataGridFeatures, TData>"
                  }
                },
                {
                  "name": "grouped",
                  "type": {
                    "text": "boolean"
                  }
                }
              ],
              "description": "What a row's box is called: after the row, where a column heads the rows — a list of \"Select row\"\nboxes says nothing about which is which to someone who hears them one at a time."
            },
            {
              "kind": "method",
              "name": "renderSelectAllBox",
              "privacy": "private",
              "description": "The box in the header, which takes every row the current view holds."
            },
            {
              "kind": "method",
              "name": "handleSelectBox",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "Row<EdDataGridFeatures, TData>"
                  }
                },
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ],
              "description": "One row's box changed.\n\nA grouping row has no key of its own, so its box writes its members' instead; everything else\ngoes through the engine, which is what makes a parent take its children along when\n`subRowSelection` says it should."
            },
            {
              "kind": "method",
              "name": "selectGroup",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "Row<EdDataGridFeatures, TData>"
                  }
                },
                {
                  "name": "checked",
                  "type": {
                    "text": "boolean"
                  }
                }
              ],
              "description": "Takes or releases every selectable row a grouping row holds. The group's own key never enters."
            },
            {
              "kind": "field",
              "name": "keyRange",
              "type": {
                "text": "{ anchor: number; before: Record<string, true> } | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Where a keyboard range started and what was selected before it, while Shift is held. Anything\npressed without Shift, and anything that reorders or replaces the rows, forgets it.",
              "parsedType": {
                "text": "null | { anchor: number, before: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "keyRangeWrote",
              "type": {
                "text": "EdDataGridSelectedKeys | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The selection a keyboard range last wrote, to tell its own writes from anybody else's.",
              "parsedType": {
                "text": "null | string | number[]"
              }
            },
            {
              "kind": "method",
              "name": "selectByKey",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "Space on a body cell: the template's key for selecting the row from any of its cells. A grouping\nrow takes its members, where more than one row may be selected; nothing to select, nothing done."
            },
            {
              "kind": "method",
              "name": "extendRangeByKey",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "toward",
                  "type": {
                    "text": "1 | -1"
                  }
                }
              ],
              "description": "Shift with an arrow: the rows from where the range started to the one the move lands on, on top\nof what was selected before it began — so stepping back shrinks the range again. The template's\nrule, and only where more than one row may be selected."
            },
            {
              "kind": "method",
              "name": "selectAllByKey",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "description": "Ctrl/Cmd+A: every row, the way the header box takes them. Only where several may be selected."
            },
            {
              "kind": "method",
              "name": "copyByKey",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "description": "Ctrl/Cmd+C: the selected rows, where any of them is loaded and there is a clipboard to write to.\nOtherwise the browser copies as it would. A clipboard that refuses — no permission, no secure\ncontext — leaves nothing said, since nothing was copied."
            },
            {
              "kind": "method",
              "name": "copySelectedRows",
              "return": {
                "type": {
                  "text": "Promise<number>"
                }
              },
              "parameters": [
                {
                  "name": "options",
                  "default": "{}",
                  "type": {
                    "text": "EdDataGridCopyOptions"
                  }
                }
              ],
              "description": "Puts rows on the clipboard as text: the selected ones, or every row where none is selected, in\nthe order the grid shows them and with the children of closed rows included.\n\nThe template's method and options. Tab-separated by default, which is what a spreadsheet takes\nfrom a paste; `csv` quotes what needs quoting. A value a spreadsheet would run as a formula gets\na quote in front unless `escapeFormulas` is `false`. Each cell is its formatter's text where the\nformatter returns a string, and its value otherwise. Answers how many rows went."
            },
            {
              "kind": "method",
              "name": "processedDataRows",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Row<EdDataGridFeatures, TData>[]"
                }
              },
              "description": "Every data row the sort, the filters and the search leave, in the order the grid shows them,\nacross the pages and down through every depth — a parent before its children, open or not. The\ngrouping rows are not data and are left out."
            },
            {
              "kind": "method",
              "name": "rowsAsText",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "rows",
                  "type": {
                    "text": "Row<EdDataGridFeatures, TData>[]"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "EdDataGridCsvOptions"
                  }
                },
                {
                  "name": "lineBreak",
                  "default": "'\\r\\n'"
                }
              ],
              "description": "Rows as delimited text: the shown columns in the order they are shown, each cell its formatter's\ntext where the formatter returns a string and its value otherwise, defused where a spreadsheet\nwould run it as a formula unless `escapeFormulas` is `false`. Tab-separated text has no\nquoting, so a tab or a line break in a value becomes a space; any other delimiter quotes a value\nholding it, a quote or a line break. The columns are the leaves; a header group is not written."
            },
            {
              "kind": "method",
              "name": "getDataAsCsv",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "options",
                  "default": "{}",
                  "type": {
                    "text": "EdDataGridCsvOptions"
                  }
                }
              ],
              "description": "The rows as CSV: every data row the sort, the filters and the search leave, across the pages and\nevery depth, in the columns shown and their order. The template's method; in server mode, only\nthe rows loaded. Lines end in CRLF, as RFC 4180 §2 has it."
            },
            {
              "kind": "method",
              "name": "exportDataAsCsv",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "options",
                  "default": "{}",
                  "type": {
                    "text": "EdDataGridExportOptions"
                  }
                }
              ],
              "description": "Saves `getDataAsCsv()` as a file. With a byte order mark in front, which is how a spreadsheet\ntells UTF-8 from its own legacy encoding — without it, Excel shows every umlaut garbled."
            },
            {
              "kind": "method",
              "name": "getVisibleRows",
              "return": {
                "type": {
                  "text": "TData[]"
                }
              },
              "description": "The data rows shown right now, in order: after the sort, the filters, the open rows and the page."
            },
            {
              "kind": "method",
              "name": "getProcessedRows",
              "return": {
                "type": {
                  "text": "TData[]"
                }
              },
              "description": "Every data row the sort, the filters and the search leave, across the pages and every depth."
            },
            {
              "kind": "method",
              "name": "getState",
              "return": {
                "type": {
                  "text": "EdDataGridState"
                }
              },
              "description": "A snapshot of what the user made of the view — the columns' order, widths, visibility and pins,\nthe sort, the filters, the search, the selection, the open rows, the page and, where the view menu\noffers them, the appearance and the density — to keep and hand back to `setState()`."
            },
            {
              "kind": "method",
              "name": "setState",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "state",
                  "type": {
                    "text": "Partial<EdDataGridState>"
                  }
                }
              ],
              "description": "Puts back what a snapshot holds, and leaves what it does not. Silent, as setting the properties\nis: the snapshot is the caller's own."
            },
            {
              "kind": "method",
              "name": "resetState",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Returns the view to the columns as declared — their order, widths, visibility and pins — with no\nsort, no filters, no search and no row open. The selection and the page stay, as the template has\nit. Silent."
            },
            {
              "kind": "field",
              "name": "pageHeld",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether the next update keeps the page though the filters or the search change: a reset leaves it."
            },
            {
              "kind": "method",
              "name": "handleSelectAll",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ],
              "description": "The header box changed: every row the filters let through, at every depth — the ones inside a\nclosed parent included. A row the filters hold back keeps its state either way: the box acts on\nthe rows the grid shows, as the template's does.\n\nThe engine's own, rather than a walk over the rendered rows. A walk reaches what is on screen,\nso the children of a closed parent would stay behind — selected while every box read empty,\nand still in the list after the user cleared it."
            },
            {
              "kind": "method",
              "name": "pageDataRows",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Row<EdDataGridFeatures, TData>[]"
                }
              },
              "description": "The rows of the page, as the header box takes them: the data rows, the ones under a group or a\nparent on the page included, whether open or not — the engine's own page toggle stops at the\ntop rows, and under a grouping those are groups, which select nothing."
            },
            {
              "kind": "method",
              "name": "selectPage",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "checked",
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "commitSelection",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "next",
                  "type": {
                    "text": "Record<string, true>"
                  }
                }
              ],
              "description": "Writes a selection the user made, and reports it. The property on its own is silent."
            },
            {
              "kind": "method",
              "name": "scrollToIndex",
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "{ align?: 'start' | 'center' | 'end' | 'auto'; behavior?: 'auto' | 'smooth' }"
                  }
                }
              ],
              "description": "Brings a row into view by its position in the data.\n\nPublic, and the one method block 2 owes: a consumer cannot scroll to a row that is not rendered,\nand with a window of a dozen rows out of fifty thousand, most rows are not. `align: 'start'` puts\nit just below the header rather than underneath it, which is what the scroll margin is for."
            },
            {
              "kind": "method",
              "name": "table",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Table<EdDataGridFeatures, TData>"
                }
              },
              "description": "The engine instance behind the grid, and **not** part of the public surface.\n\nThe element decides what a consumer can reach; a product that needs more asks for it rather than\nreaching past the wrapper into `table-core`. Keeping the engine private is also what lets it be\nupgraded, or replaced, without breaking anyone."
            },
            {
              "kind": "method",
              "name": "groupOffset",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string | undefined"
                }
              },
              "parameters": [
                {
                  "name": "leaves",
                  "type": {
                    "text": "Column<EdDataGridFeatures, TData, unknown>[]"
                  }
                },
                {
                  "name": "offsets",
                  "type": {
                    "text": "StickyOffsets<TData>"
                  }
                },
                {
                  "name": "pins",
                  "type": {
                    "text": "Map<string, 'left' | 'right' | false>"
                  }
                }
              ],
              "description": "Where a header sits when it spans columns that are all pinned to one edge.\n\nThe leftmost of a left-pinned run and the rightmost of a right-pinned run give the offset, since\nthose are the edges the group's own box starts and ends at."
            },
            {
              "kind": "method",
              "name": "headerRowCount",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "description": "How many rows the header renders, counted as the render counts them: a level with no header is none."
            },
            {
              "kind": "method",
              "name": "renderHeaderCell",
              "privacy": "private",
              "parameters": [
                {
                  "name": "header",
                  "type": {
                    "text": "Header<EdDataGridFeatures, TData, unknown>"
                  }
                },
                {
                  "name": "rowIndex",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "columnIndexes",
                  "type": {
                    "text": "ColumnIndexes<TData>"
                  }
                },
                {
                  "name": "offsets",
                  "type": {
                    "text": "StickyOffsets<TData>"
                  }
                },
                {
                  "name": "pins",
                  "type": {
                    "text": "Map<string, 'left' | 'right' | false>"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "writingDirection",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "1 | -1"
                }
              },
              "description": "Which way widening lies: `1` where the writing runs left to right, `-1` where it runs the other\nway.\n\nRead off the layout rather than asked of the localize controller. That one answers from the\nelement's own `dir` attribute and the document's, while the handle is placed by CSS, which\ninherits — a grid inside a right-to-left container has its handle on the left and would be\ntold it is on the right."
            },
            {
              "kind": "method",
              "name": "widthOf",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "A column's width right now: what it was dragged to, else what it is laid out at.\n\nMeasured rather than asked of the engine, because a column that shares the leftover space has\nno width of its own until the browser has given it one."
            },
            {
              "kind": "method",
              "name": "resizeTo",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "width",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "finished",
                  "type": {
                    "text": "boolean"
                  }
                }
              ],
              "description": "Writes a width the user chose, held between the column's floor and its widest, and reports it."
            },
            {
              "kind": "field",
              "name": "chosenWidths",
              "privacy": "private",
              "readonly": true,
              "default": "new Set<string>()",
              "description": "The columns whose width the user chose and finished choosing — by a drag let go, a key step or a\nfit. The widths the grid only holds, for a pin or for the length of a drag, are not in here, which\nis what lets a reset say which chosen widths it dropped."
            },
            {
              "kind": "method",
              "name": "resizeByStep",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "toward",
                  "type": {
                    "text": "1 | -1"
                  }
                }
              ],
              "description": "One step of the keyboard's resize, from the header cell: Alt with an arrow, as the template has\nit. ArrowRight widens and ArrowLeft narrows whichever way the writing runs, which is the\ntemplate's reading too.\n\nNot while a drag is in hand: the drag puts every other width back when it ends, and a step taken\nin between would be reported and then undone."
            },
            {
              "kind": "field",
              "name": "handleResizeStart",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "draggedWidth",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "PointerEvent"
                  }
                }
              ],
              "description": "How wide the dragged column is with the pointer where it now is."
            },
            {
              "kind": "field",
              "name": "handleResizeMove",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "freezeLeafWidths",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Holds every column at the width it has, for the length of a drag.\n\nColumns that share the leftover space would otherwise take up what the dragged one gives away\nand move the edge out from under the pointer. The template does the same; when the drag ends,\nthe others go back to what they were and only the dragged column keeps its new width."
            },
            {
              "kind": "field",
              "name": "handleResizeEnd",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "restoreBeforeDrag",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "drag",
                  "type": {
                    "text": "{ before: Record<string, number>; chosenBefore: string[] }"
                  }
                }
              ],
              "description": "Puts the widths back as they were before the press, and with them the record of which ones the\nuser chose — whatever happened to either while the drag ran."
            },
            {
              "kind": "method",
              "name": "endResize",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Lets go of a drag, whether the user finished it or the element went away underneath it."
            },
            {
              "kind": "method",
              "name": "pruneColumnWidths",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Drops the widths of columns that are no longer there.\n\nAgainst the ids the **engine** handed out, never ids derived here. It does not simply take what\nthe consumer wrote: a field with a dot in it becomes an id with an underscore, and a column\nwith no field at all is named after its label. Deriving them again gets both wrong, and a\nwidth matched against a name nobody uses is a width thrown away on every column change.\n\nAfter the render rather than during it, because the engine only has the new columns once it\nhas been handed them."
            },
            {
              "kind": "field",
              "name": "headerFloors",
              "type": {
                "text": "Record<string, number>"
              },
              "privacy": "private",
              "default": "{}",
              "description": "How wide each column with a set `width` has to be for its header label to fit beside the\ncontrols in the header. The template's floor: a set width narrower than its own label is raised\nto it, until the user drags the column to a width of their own.",
              "parsedType": {
                "text": "{  }"
              }
            },
            {
              "kind": "field",
              "name": "headerFloorsMeasured",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "columnMinimums",
              "type": {
                "text": "Record<string, number>"
              },
              "privacy": "private",
              "default": "{}",
              "description": "How narrow each shown column may ever be: the first characters of its label beside every control\nits header holds — the arrow only where it sorts, the filter button only while a filter is in\nforce, the menu wherever it has something to offer. Held in every track and under every drag, as\na table column is never narrower than its content's minimum; narrower, the controls would stand\nover the next column.",
              "parsedType": {
                "text": "{  }"
              }
            },
            {
              "kind": "method",
              "name": "heldWidths",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Record<string, number>"
                }
              },
              "parameters": [
                {
                  "name": "leafColumns",
                  "type": {
                    "text": "Column<EdDataGridFeatures, TData, unknown>[]"
                  }
                }
              ],
              "description": "The width each column is held at, for the tracks and for the pinned offsets alike, so the two\ncannot drift: the one it was dragged to, else the one it names raised to its header's floor.\nA column sharing the leftover space is not in here."
            },
            {
              "kind": "method",
              "name": "measureHeaderFloors",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "changed",
                  "type": {
                    "text": "Map<string, unknown>"
                  }
                }
              ],
              "description": "Measures the header floors after a render that may have changed what a header holds.\n\nAfter the render because the controls a header holds only have a size once they are laid out,\nand only where something they depend on changed, since writing a new floor renders again."
            },
            {
              "kind": "field",
              "name": "headerControlsObserver",
              "privacy": "private",
              "readonly": true,
              "description": "Takes the header floors again whenever a control in a header changes size."
            },
            {
              "kind": "method",
              "name": "pinsOf",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Map<string, 'left' | 'right' | false>"
                }
              },
              "parameters": [
                {
                  "name": "leafColumns",
                  "type": {
                    "text": "Column<EdDataGridFeatures, TData, unknown>[]"
                  }
                }
              ],
              "description": "Where each leaf column is held, once for the render.\n\nOne answer for the tracks, the offsets and whatever draws the pin, so the three cannot drift.\nThe user's word where they have given one, the column's declaration otherwise: a declaration\nsays where a column *starts*, and going on enforcing it would snap a column the user unpinned\nstraight back on the next render."
            },
            {
              "kind": "method",
              "name": "ownPinOf",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "'left' | 'right' | false"
                }
              },
              "parameters": [
                {
                  "name": "column",
                  "type": {
                    "text": "Column<EdDataGridFeatures, TData, unknown>"
                  }
                }
              ],
              "description": "Where a column is held by its own word — the user's, else its declaration. A grouped column's\nword does not count while it is grouped, and it is offered no edge and no Unpin."
            },
            {
              "kind": "method",
              "name": "pinColumn",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "side",
                  "type": {
                    "text": "'left' | 'right' | false"
                  }
                }
              ],
              "description": "Holds a column against an edge, or lets it go with `false`.\n\nThe column moves to that edge, after the columns already held there, and goes back to its place\nin the list when let go. The edges are named the way the column declares them, and read as\nlogical: `left` is the start edge and follows the writing direction.\n\nSilent, the way `expandRow()` is and for the same reason: the caller already knows, and an\nelement reporting its own configuration back would feed a listener that writes it. The gesture\nthat moves a column is what reports.\n\nA column the rows are grouped by is left where the grouping puts it: first, and held at the\nstart exactly when another column is."
            },
            {
              "kind": "field",
              "name": "pinSequence",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "description": "The columns the user pinned or let go of, in the order they did it — which is the order pinned\ncolumns stand in at their edge. A list of its own, because an object puts keys that read as\nnumbers first and in ascending order, whatever order they were added in."
            },
            {
              "kind": "field",
              "name": "columnVisibility",
              "type": {
                "text": "Record<string, boolean>"
              },
              "privacy": "private",
              "default": "{}",
              "description": "Which columns the user has shown or hidden, by the engine's id, over what they declared.\n\nThe element holds it, as it holds the widths and the pins: a column hidden stays hidden across\nrenders and across a new columns array carrying it, and keeps its width and its pin for when\nit comes back.",
              "parsedType": {
                "text": "{  }"
              }
            },
            {
              "kind": "field",
              "name": "visibilityCache",
              "type": {
                "text": "{ key: string; state: Record<string, boolean>; value: Record<string, boolean> } | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The visibility the engine is handed, kept as one object while nothing in it changes.",
              "parsedType": {
                "text": "null | { key: string, state: {  }, value: {  } }"
              }
            },
            {
              "kind": "method",
              "name": "visibilityState",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Record<string, boolean>"
                }
              },
              "description": "Each column's visibility as the engine wants it: `hidden` as declared, overruled by the user.\n\nOnly hidden columns are named, since the engine shows what is not. Kept as one object for as long\nas neither changes, because the engine derives its columns again whenever it is handed a new one."
            },
            {
              "kind": "field",
              "name": "columnOrderCache",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "description": "The order the engine is handed, kept as one array while it says the same."
            },
            {
              "kind": "method",
              "name": "columnOrderState",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string[]"
                }
              },
              "description": "The columns in the order pinning puts them: the ones held at the start, then the rest as\ndeclared, then the ones held at the end — so a pinned column stands at its edge, as the\ntemplate's does.\n\nAt the start, the declared pins come first in the order declared and the user's follow in the\norder they were pinned, each after those already there. At the end, the user's come first, the\nlatest nearest the middle, and the declared ones after. Built from the declaration because the\nengine is handed it as part of the options it builds its columns from."
            },
            {
              "kind": "method",
              "name": "isColumnVisible",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Whether a column is shown right now."
            },
            {
              "kind": "method",
              "name": "toggleColumn",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "visible",
                  "optional": true,
                  "type": {
                    "text": "boolean"
                  }
                }
              ],
              "description": "Shows or hides a column by its id, or turns it the other way without a value.\n\nSilent, like `pinColumn()`: the caller already knows. The column keeps its width and its pin for\nwhen it comes back."
            },
            {
              "kind": "method",
              "name": "resetColumns",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Puts the columns back the way they were declared: the widths the user dragged, the columns they\nshowed or hid, and the edges they pinned them to all go. Sort, selection and the open rows stay.\nSilent, as the template's is."
            },
            {
              "kind": "method",
              "name": "resetColumnsByGesture",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "description": "Resets the columns because the user asked to, and reports every change it made with the event\nthat change has on its own — a listener saving the layout from the events would otherwise bring\nthe old one back. A width the user chose is reported as dropped, `width: null`, whether or not the\ncolumn is still shown: a number would turn its declared width, or its share of the space, into a\nfixed one for whoever restores it.\n\nThe reports wait for the last update the reset causes, and are dropped where the element went away\nor was handed other columns in the meantime: those are not the user's reset any more."
            },
            {
              "kind": "method",
              "name": "pinOfSource",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "'left' | 'right' | false"
                }
              },
              "parameters": [
                {
                  "name": "column",
                  "type": {
                    "text": "Column<EdDataGridFeatures, TData, unknown>"
                  }
                }
              ],
              "description": "Where a column is held by its own word or its declaration, grouping or not."
            },
            {
              "kind": "field",
              "name": "headerClickSuppressed",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether the click a drag's release ends in is still to come."
            },
            {
              "kind": "field",
              "name": "reorder",
              "privacy": "private",
              "readonly": true,
              "default": "new ColumnReorderController(this, { reorderableColumnIds: () => this.reorderableColumnIds(), canMoveColumn: columnId => this.canMoveColumn(columnId), headerCellOf: columnId => this.shadowRoot?.querySelector<HTMLElement>(`[part~=\"header-cell\"][data-column=\"${CSS.escape(columnId)}\"]`) ?? null, // The footer's cell as well: it stands under its column and slides with it. bodyCellsOf: columnId => [ ...(this.shadowRoot?.querySelectorAll<HTMLElement>( `[part~=\"cell\"][data-column=\"${CSS.escape(columnId)}\"], [part~=\"footer-cell\"][data-column=\"${CSS.escape(columnId)}\"]` ) ?? []) ], scroller: () => this.shadowRoot?.querySelector<HTMLElement>('[part~=\"base\"]') ?? null, columnLabel: columnId => this.columnLabelOf(columnId), isRtl: () => this.writingDirection() === -1, commitColumnOrder: (columnId, order, finished, write) => this.commitColumnOrder(columnId, order, finished, write), suppressHeaderClick: suppress => (this.headerClickSuppressed = suppress), setReordering: reordering => this.customStates.set('reordering', reordering), attachLabel: label => this.shadowRoot?.append(label) })",
              "description": "Moving a column by dragging its header."
            },
            {
              "kind": "method",
              "name": "columnLabelOf",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "A column's label, or its id where it has none."
            },
            {
              "kind": "method",
              "name": "reorderableColumnIds",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string[]"
                }
              },
              "description": "The shown columns a move goes among, in the order shown: those held at no edge and not grouped\nby. A pinned column stands at its edge and a grouped one in front, and nothing is moved past them."
            },
            {
              "kind": "method",
              "name": "canMoveColumn",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Whether the user may move this column: shown, at no edge, and movable by its word or the grid's."
            },
            {
              "kind": "method",
              "name": "commitColumnOrder",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "middle",
                  "type": {
                    "text": "string[]"
                  }
                },
                {
                  "name": "finished",
                  "type": {
                    "text": "boolean"
                  }
                },
                {
                  "name": "write",
                  "default": "true"
                }
              ],
              "description": "Reports the order a move produced — the columns a move goes among, in their new order — and\nwrites it where `write` is true: a drag previews, and ends where it started, without either.\n\nThe order written covers every column. One the move did not go among — hidden, pinned, grouped\nby — stays next to the column it stood behind before the move, as the template keeps a hidden\none, so it comes back where it was when shown, let go or no longer grouped by."
            },
            {
              "kind": "method",
              "name": "moveColumnByKey",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "toward",
                  "type": {
                    "text": "1 | -1"
                  }
                }
              ],
              "description": "Shift with an arrow on a header: the column a place along, toward where the arrow points — which\nin a right-to-left reading is the other way through the order. The template's key. Says the new\nplace, and keeps the focus on the column it moved."
            },
            {
              "kind": "field",
              "name": "handleHeaderPointerDown",
              "privacy": "private",
              "readonly": true,
              "description": "A press on a header: the start of a drag, unless it landed on a control inside the header."
            },
            {
              "kind": "field",
              "name": "filters",
              "type": {
                "text": "EdDataGridFilter[]"
              },
              "default": "[]",
              "description": "The column filters, as `{ id, value }` — the template's shape, which the engine reads as it is. A\nfilter whose value is empty filters nothing and is dropped. Setting it is silent; the user's\nfiltering writes it and reports."
            },
            {
              "kind": "field",
              "name": "filterCache",
              "type": {
                "text": "{\n    from: EdDataGridFilter[];\n    defs: unknown;\n    depth: string;\n    value: EdDataGridFilter[];\n  } | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The filters the engine is handed: those naming a filterable column, empty ones left out. Kept as\none array while they say the same, since a new one makes the engine filter every row again — and\na parent that renders hands in a new, equal list each time.\n\nThe engine filters any column a filter names, `enableColumnFilter` only guards its own setters —\nwhich the grid does not use — so a column that cannot be filtered is left out here.",
              "parsedType": {
                "text": "null | { from: { id: string, value: unknown }[], defs: unknown, depth: string, value: { id: string, value: unknown }[] }"
              }
            },
            {
              "kind": "method",
              "name": "filterState",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdDataGridFilter[]"
                }
              }
            },
            {
              "kind": "field",
              "name": "server",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the rows come from a server: the grid sorts, filters and pages nothing itself, and asks\nfor rows through `ed-data-grid-data-request` — answered by setting `data`, `total` and `loading`.\nA `dataSource` switches it on as well. Without `paginate`, it asks for the first `pageSize` rows.",
              "attribute": "server",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "dataSource",
              "type": {
                "text": "EdDataGridDataSource<TData> | null"
              },
              "default": "null",
              "description": "Where a grid in server mode gets its rows from: handed the request, it answers with the rows and\nthe total. The grid shows it is loading meanwhile, drops an answer a newer request overtook, and\nreports a failure through `ed-data-grid-data-error`.",
              "parsedType": {
                "text": "null | {  }"
              }
            },
            {
              "kind": "field",
              "name": "total",
              "type": {
                "text": "number"
              },
              "default": "-1",
              "description": "How many rows the server has in all, for the pager; below zero while unknown. Unknown, the pager\ngoes on past every full page, and an answer shorter than the page size asked for is the last.",
              "attribute": "total"
            },
            {
              "kind": "field",
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether rows are being loaded: skeleton rows stand in for them, and the grid is marked busy.",
              "attribute": "loading",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "filterDebounce",
              "type": {
                "text": "number"
              },
              "default": "250",
              "description": "How long the typing in the search or a filter rests before a server is asked, in milliseconds.",
              "attribute": "filter-debounce"
            },
            {
              "kind": "field",
              "name": "isManual",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether the grid is in server mode.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "dropRequest",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Lets go of the request out and the one waiting, so neither answers into the grid."
            },
            {
              "kind": "method",
              "name": "reload",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Asks the server again for the rows shown, though nothing changed."
            },
            {
              "kind": "field",
              "name": "requestKey",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "requestController",
              "type": {
                "text": "AbortController | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | { signal: { aborted: boolean, onabort: null | {  }, reason: any, throwIfAborted: {  }, addEventListener: {  }, removeEventListener: {  }, dispatchEvent: {  } }, abort: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "requestToken",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "requestTimer",
              "type": {
                "text": "ReturnType<typeof setTimeout> | undefined"
              },
              "privacy": "private",
              "parsedType": {
                "text": "{ close: {  }, hasRef: {  }, ref: {  }, refresh: {  }, unref: {  }, _onTimeout: {  }, __@toPrimitive@535: {  }, __@dispose@4064: {  } } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "requestQueued",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "requestForced",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "loadsFromSource",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether `loading` is the data source's rather than a consumer's answering the request event."
            },
            {
              "kind": "method",
              "name": "requestData",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "options",
                  "default": "{}",
                  "type": {
                    "text": "{ force?: boolean; debounce?: boolean }"
                  }
                }
              ],
              "description": "Schedules a request: after the typing rests where a search or a filter asked, else once this\ntask is done, so several changes made together make one request."
            },
            {
              "kind": "method",
              "name": "flushRequest",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              }
            },
            {
              "kind": "method",
              "name": "renderRetry",
              "privacy": "private",
              "parameters": [
                {
                  "name": "columnCount",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "lastIndex",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "rowIndex",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "What stands at the end of an endless grid's rows where a slice failed: a row of its own, in a cell\nacross every column as the row group requires, saying so and offering to ask again."
            },
            {
              "kind": "method",
              "name": "renderSkeleton",
              "privacy": "private",
              "parameters": [
                {
                  "name": "columnCount",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "count",
                  "optional": true,
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Skeleton rows standing in for the rows while they load: one per row that fits, a page at most —\nor `count`, after the rows an endless grid already holds."
            },
            {
              "kind": "field",
              "name": "paginate",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the rows are shown a page at a time, with a pager beneath the grid.",
              "attribute": "paginate",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "appearance",
              "type": {
                "text": "'modern' | 'classic'"
              },
              "default": "'classic'",
              "description": "How the grid is drawn: `classic`, its rows on the page with no outline, as a table stands, or\n`modern`, its rows on a card with rounded corners. The consumer's choice is where the grid starts; the\nuser may switch it in the view menu.",
              "attribute": "appearance",
              "reflects": true,
              "parsedType": {
                "text": "'modern' | 'classic'"
              }
            },
            {
              "kind": "field",
              "name": "striped",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether every other row is set on a stripe, which makes a wide grid easier to follow across.",
              "attribute": "striped",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "How tall the rows are and how much room their cells leave around what they hold; the header stands\na step taller. The consumer's choice is where the grid starts; the user may switch it in the view\nmenu.",
              "attribute": "density",
              "reflects": true,
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "kind": "field",
              "name": "rowClass",
              "type": {
                "text": "((row: TData) => string | string[] | null | undefined | false) | null"
              },
              "default": "null",
              "description": "Names for a row — to flag an overdue or an archived one. They land on the row as classes, as the\ntemplate has it, and on the row and each of its cells as parts, so a page styles them with\n`ed-data-grid::part(overdue)`. Space-separated or a list; nothing for none. A name the grid uses\nfor a part or a class of its own is left out.",
              "parsedType": {
                "text": "null | {  }"
              }
            },
            {
              "kind": "field",
              "name": "warnedLabel",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether a grid without a label has been reported, once."
            },
            {
              "kind": "field",
              "name": "warnedRowClass",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether a `rowClass` that threw has been reported, so one broken function is one message."
            },
            {
              "kind": "method",
              "name": "rowNamesOf",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "Row<EdDataGridFeatures, TData>"
                  }
                }
              ],
              "description": "The names `rowClass` gives a row, each once and none of the grid's own, led by a space — or nothing."
            },
            {
              "kind": "field",
              "name": "trackRules",
              "type": {
                "text": "{ groupEnds: Set<number>; pinStart: number; pinEnd: number }"
              },
              "privacy": "private",
              "default": "{ groupEnds: new Set(), pinStart: -1, pinEnd: -1 }",
              "description": "The tracks a line is drawn after: the last column of each outermost header group, and the edges\nof the pinned bands. Worked out once per render, read by every cell."
            },
            {
              "kind": "method",
              "name": "rulesOf",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "{ groupEnd: boolean; pinEdge: 'start' | 'end' | undefined }"
                }
              },
              "parameters": [
                {
                  "name": "first",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "last",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "The lines a cell standing on tracks `first` to `last` carries, as its data attributes want them."
            },
            {
              "kind": "field",
              "name": "paginationMode",
              "type": {
                "text": "'controls' | 'infinite'"
              },
              "default": "'controls'",
              "description": "How `paginate` moves through the rows: a pager beneath the grid, or endlessly — in server mode\nonly — each slice asked for as the rows are scrolled near their end and appended to them. `page`\nis then the last slice asked for, and setting it takes only `0` or the next slice. Without server\nmode, the pager stands. Answering the request event by hand, hand in every row loaded so far with\nthe new slice appended. The grid needs a height: unbounded, every row is in view and the slices\nload one after another to the end.",
              "attribute": "pagination-mode",
              "parsedType": {
                "text": "'controls' | 'infinite'"
              }
            },
            {
              "kind": "field",
              "name": "infinite",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether the rows are loaded a slice at a time as they are scrolled.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "endReached",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether the last slice answered was shorter than was asked for: there is no slice after it."
            },
            {
              "kind": "field",
              "name": "requestFailed",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether the last request failed, which an endless grid offers to try again at the end of its rows."
            },
            {
              "kind": "field",
              "name": "error",
              "type": {
                "text": "unknown"
              },
              "default": "null",
              "description": "A failed request, set by a consumer who answers `ed-data-grid-data-request` by hand: the grid then\nsays the rows could not be loaded, as it does where a `dataSource` fails, with a button that asks\nagain, which sets it back to null. Set it back to null with the next answer as well."
            },
            {
              "kind": "field",
              "name": "hasFailed",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether the rows asked for last could not be loaded: a data source threw, or a consumer said so.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "failureSaid",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether the failure standing has been said."
            },
            {
              "kind": "field",
              "name": "nearEnd",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether the rendered window reached near the end of the rows, which asks an endless grid for more."
            },
            {
              "kind": "field",
              "name": "slicesAnswered",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0",
              "description": "How many slices of the question asked last have answered: the next is asked for only after them."
            },
            {
              "kind": "method",
              "name": "hasEveryRow",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "description": "Whether an endless grid has every row there is: a slice came back short, or as many as the total."
            },
            {
              "kind": "method",
              "name": "startOver",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Forgets what an endless grid knew of the question asked before: nothing of the new one has answered."
            },
            {
              "kind": "field",
              "name": "page",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The page shown, counted from zero — the engine's page index. Setting it is silent; the pager and\nthe search and filters the user changes write it and report. A page past the last is brought back\nto the last once there are rows. With `pagination-mode=\"infinite\"` it is the last slice asked for,\nand the grid moves it on as the rows are scrolled: set there, only `0`, which starts the slices\nover, and the slice after those loaded are taken — any other would leave a gap among the rows or\nappend a slice twice, and is put back.",
              "attribute": "page",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "pageSize",
              "type": {
                "text": "number"
              },
              "default": "20",
              "description": "How many rows a page holds.",
              "attribute": "page-size"
            },
            {
              "kind": "field",
              "name": "pageSizeOptions",
              "type": {
                "text": "number[]"
              },
              "default": "[10, 20, 50, 100]",
              "description": "The page sizes the pager offers."
            },
            {
              "kind": "field",
              "name": "pageCount",
              "type": {
                "text": "number"
              },
              "description": "How many pages the rows make: one without `paginate`, and at least one with it.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "pagedCount",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "description": "How many rows are paged: the top rows the engine cuts into pages — a group each under a grouping,\na parent each in a tree — where the filters leave only data rows to count."
            },
            {
              "kind": "field",
              "name": "serverAnswer",
              "type": {
                "text": "{ pageIndex: number; pageSize: number } | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The page `data` answers, once it holds an answer rather than whatever stood there before the first.",
              "parsedType": {
                "text": "null | { pageIndex: number, pageSize: number }"
              }
            },
            {
              "kind": "method",
              "name": "requestedPageSize",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "description": "How many rows a request asks a server for."
            },
            {
              "kind": "method",
              "name": "serverCountKnown",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "description": "Whether the server's rows are counted: by its total, or by an answer shorter than was asked for,\nwhich holds the last of them."
            },
            {
              "kind": "field",
              "name": "paginationCache",
              "type": {
                "text": "{ pageIndex: number; pageSize: number }"
              },
              "privacy": "private",
              "default": "{ pageIndex: 0, pageSize: Number.MAX_SAFE_INTEGER }",
              "description": "The paging the engine is handed, kept while it says the same. Without `paginate` it is one page\nholding every row: the engine keeps the last page it cut, so leaving paging off with a size would\nleave the rows cut to it."
            },
            {
              "kind": "method",
              "name": "paginationState",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "{ pageIndex: number; pageSize: number }"
                }
              }
            },
            {
              "kind": "method",
              "name": "goToPageByGesture",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "page",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "pageSize",
                  "default": "this.pageSize"
                }
              ],
              "description": "Moves to a page because the user asked to, and reports it."
            },
            {
              "kind": "method",
              "name": "firstPageByGesture",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "The search or a filter the user changed shows other rows: back to the first page, reported."
            },
            {
              "kind": "method",
              "name": "renderPager",
              "privacy": "private",
              "parameters": [
                {
                  "name": "shown",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "The pager beneath the grid: which rows the page shows, and `ed-pagination` to move and resize.\nIts own events are stopped here, and the grid's own reported in their place, so a listener hears\none event with the page counted from zero."
            },
            {
              "kind": "field",
              "name": "filterFromLeafRows",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether a row stays for a descendant that matches, though it does not match itself. Without it a\ntree is filtered from the top: a row that does not match takes its children with it.",
              "attribute": "filter-from-leaf-rows",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "maxLeafRowFilterDepth",
              "type": {
                "text": "number"
              },
              "default": "100",
              "description": "How many levels down the filters and the search reach into a tree. The children of a row at this\ndepth stay with it as they are, filtered or not; with `filter-from-leaf-rows`, that row is no\nlonger kept for a descendant that matches, only for itself.",
              "attribute": "max-leaf-row-filter-depth"
            },
            {
              "kind": "method",
              "name": "hasNoResults",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "description": "Whether there are rows, and the filters or the search leave none of them."
            },
            {
              "kind": "field",
              "name": "withSearch",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether a search field stands in the toolbar. The search runs on `searchTerm` either way.",
              "attribute": "with-search",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "searchTerm",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The search term: a row stays where any searchable column contains it, whatever the case — the\nvalue the column reads, not its formatted text. Setting it is silent; typing in the search field\nwrites it and reports."
            },
            {
              "kind": "field",
              "name": "searchFn",
              "type": {
                "text": "EdDataGridSearchFn<TData> | null"
              },
              "default": "null",
              "description": "The grid's own search, in place of the case-insensitive \"contains\". Asked once per searchable column.",
              "parsedType": {
                "text": "null | {  }"
              }
            },
            {
              "kind": "field",
              "name": "filteredCount",
              "type": {
                "text": "number"
              },
              "description": "How many rows the filters and the search leave, before grouping — at the top level of a tree.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "searchCache",
              "type": {
                "text": "{ term: string; fn: unknown; defs: unknown; value: '' | SearchQuery } | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The search as the engine is handed it: empty, or the term. A new object whenever the term,\n`searchFn` or the columns change, since the engine searches again only when this value does — a\nsearch function or a column taken out of the search would otherwise wait for the next term.\nA term of nothing but spaces searches nothing.",
              "parsedType": {
                "text": "null | { term: string, fn: unknown, defs: unknown, value: '' | { term: string, lower: string } }"
              }
            },
            {
              "kind": "method",
              "name": "searchState",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "'' | SearchQuery"
                }
              }
            },
            {
              "kind": "field",
              "name": "searchCell",
              "privacy": "private",
              "readonly": true,
              "default": "((row: Row<EdDataGridFeatures, TData>, columnId: string, query: SearchQuery) => { const value = row.getValue(columnId); const own = this.searchFn; return own === null ? containsTerm(value, query.lower) : own(value, query.term, row.original); })",
              "description": "Asks one searchable column of a row for the term: through `searchFn`, or whether it contains it."
            },
            {
              "kind": "field",
              "name": "openFilter",
              "type": {
                "text": "string | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The column whose filter panel is open, by id. Its content is rendered only while it is.",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "panelOpenedFor",
              "privacy": "private",
              "default": "new WeakMap<EdPopover, string>()",
              "description": "The column each open panel was opened for, recorded on its `ed-show`."
            },
            {
              "kind": "field",
              "name": "filterOptionQuery",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "description": "What a panel's value list is narrowed to by its search box."
            },
            {
              "kind": "method",
              "name": "getColumnFacets",
              "return": {
                "type": {
                  "text": "EdDataGridColumnFacets"
                }
              },
              "parameters": [
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "What a column holds before its own filter applies: each value with how often it occurs, and the\nrange of its numbers — for building a filter of one's own. The template's method."
            },
            {
              "kind": "method",
              "name": "filterByGesture",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "value",
                  "type": {
                    "text": "unknown"
                  }
                }
              ],
              "description": "Writes a column's filter because the user set it, and reports it."
            },
            {
              "kind": "method",
              "name": "filterValueOf",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "unknown"
                }
              },
              "parameters": [
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "The value a column is filtered by now."
            },
            {
              "kind": "field",
              "name": "filterRequest",
              "type": {
                "text": "string | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The column a panel was asked open for from its menu, until the panel has answered. Its button\nhas to stand in the header first: the panel is anchored to it.",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "method",
              "name": "showsFilterButton",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "column",
                  "type": {
                    "text": "Column<EdDataGridFeatures, TData, unknown>"
                  }
                }
              ],
              "description": "Whether a column's header shows its filter button: while a filter is in force on it, as the\ntemplate shows it, and while its panel is open or about to open — the panel is anchored to the\nbutton, and clearing the filter from inside the panel must not pull the anchor away under it."
            },
            {
              "kind": "method",
              "name": "renderFilterButton",
              "privacy": "private",
              "parameters": [
                {
                  "name": "column",
                  "type": {
                    "text": "Column<EdDataGridFeatures, TData, unknown>"
                  }
                },
                {
                  "name": "leafIndex",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "The button in a filtered column's header that opens its filter panel. The popover it opens says\non it whether it is open."
            },
            {
              "kind": "method",
              "name": "openFilterPanelFor",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "parameters": [
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Opens a column's filter panel from its menu: the button it is anchored to is put in the header\nfirst, and the panel opens once it has taken hold of it."
            },
            {
              "kind": "method",
              "name": "renderFilterPanels",
              "privacy": "private",
              "parameters": [
                {
                  "name": "leafColumns",
                  "type": {
                    "text": "Column<EdDataGridFeatures, TData, unknown>[]"
                  }
                }
              ],
              "description": "The filter panels, one per shown filterable column, beside the grid rather than in its headers:\nkeys typed and clicks made in a panel then reach neither the grid's navigation nor the header's\nsorting. Each is anchored to its column's button by id, and holds content only while open."
            },
            {
              "kind": "method",
              "name": "handFocusFromLeavingButton",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "panel",
                  "type": {
                    "text": "EdPopover"
                  }
                },
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "A panel that closes with no filter in force takes its button out of the header, and a focus left\non the button would fall to the document. It goes to the menu button the panel is reached from\ninstead, or to the header itself where the menu is hidden."
            },
            {
              "kind": "method",
              "name": "reconcileFilterPanels",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Keeps each panel tied to the button and the column at its place, after every render.\n\nA panel and its button share a place, not a column: when another column takes the place of an\nopen panel's, the panel closes rather than stay open over a column it does not belong to. And the\npopover looks its button up only when `for` changes, so a button the header rendered anew under\nthe same id — or one that kept its element and took another place's id — is handed to it here;\nthe popover lets go of the one it held itself."
            },
            {
              "kind": "field",
              "name": "closeFilterPanel",
              "privacy": "private",
              "readonly": true,
              "description": "Closes a filter panel from its close button and hands the focus back to the button that opened\nit, as Escape does: the panel's content goes with it, and the focus would fall to the document."
            },
            {
              "kind": "method",
              "name": "focusFilterPanel",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "parameters": [
                {
                  "name": "panel",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderFilterPanel",
              "privacy": "private",
              "parameters": [
                {
                  "name": "column",
                  "type": {
                    "text": "Column<EdDataGridFeatures, TData, unknown>"
                  }
                }
              ],
              "description": "What a column's panel holds, by its `filterType`: the template's seven, and a button to clear."
            },
            {
              "kind": "method",
              "name": "renderFilterOptions",
              "privacy": "private",
              "parameters": [
                {
                  "name": "column",
                  "type": {
                    "text": "Column<EdDataGridFeatures, TData, unknown>"
                  }
                },
                {
                  "name": "type",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "value",
                  "type": {
                    "text": "unknown"
                  }
                }
              ],
              "description": "The value list of a `set` or `includes-*` panel: the column's own options, or the values it holds\nwith their counts, sorted; a search box where there are more than ten. Checking keeps the rows\nholding a value; unchecking the last clears the filter. The template's panel."
            },
            {
              "kind": "method",
              "name": "toggleColumnByGesture",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "visible",
                  "type": {
                    "text": "boolean"
                  }
                }
              ],
              "description": "Shows or hides a column because the user asked to, which is what reports it."
            },
            {
              "kind": "method",
              "name": "freezeWidth",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "column",
                  "type": {
                    "text": "Column<EdDataGridFeatures, TData, unknown>"
                  }
                }
              ],
              "description": "Keeps the width a column is laid out at, for a column about to be pinned.\n\nA pinned column is laid out at a fixed width, because the column beside it is held at the sum\nof the widths before it and a share of the leftover space is not a number that sum can use.\nWhich width has to be the one it already had: taking the engine's default instead makes the\ncolumn jump the moment it is pinned, and jump back when it is let go. A grid that has not been\nlaid out yet has nothing to measure, and freezing that nothing would pin the column at no width\nat all; it is then laid out at the engine's default instead."
            },
            {
              "kind": "method",
              "name": "pruneColumnVisibility",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Drops what the user said about the visibility of columns that are no longer there, as for the pins."
            },
            {
              "kind": "method",
              "name": "pruneColumnPins",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Drops the pins of columns that are no longer there.\n\nAgainst the engine's own ids, for the reason the widths are. It also settles what a column\ndeclared: a column taken away and declared again is a new column, so the edge the user put it\nat is gone and the fresh declaration is what holds."
            },
            {
              "kind": "method",
              "name": "menuGroupsFor",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "MenuEntry[][]"
                }
              },
              "parameters": [
                {
                  "name": "column",
                  "type": {
                    "text": "Column<EdDataGridFeatures, TData, unknown>"
                  }
                }
              ],
              "description": "What a column's menu offers, in groups and in the order the template offers them: sorting, the\nedges, the filter, and the room the column takes — whether it is shown at all, and its width.\nThe look of the whole grid is the view menu's, not a column's.\n\nEmpty where there is nothing to offer — a button that opens an empty list is worse than no\nbutton, and a header that heads no data has nothing to offer either way. A group with nothing in\nit is left out, so no divider ever stands with nothing on one side.\n\nThe state the column is in is not an entry, as on the template: the sort it is in gives way to\nUnsort, and the edge it is held at to Unpin, so every entry changes something."
            },
            {
              "kind": "method",
              "name": "renderColumnMenu",
              "privacy": "private",
              "parameters": [
                {
                  "name": "column",
                  "type": {
                    "text": "Column<EdDataGridFeatures, TData, unknown>"
                  }
                },
                {
                  "name": "groups",
                  "type": {
                    "text": "MenuEntry[][]"
                  }
                },
                {
                  "name": "place",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "The menu in a column's header, and the button that opens it. `place` names the header's place."
            },
            {
              "kind": "field",
              "name": "menuPlaces",
              "type": {
                "text": "ReadonlySet<string>"
              },
              "privacy": "private",
              "default": "new Set()",
              "description": "The places of the headers whose menus render their entries: the one open, and any still fading\nout. Every header carries a menu, and a dozen entries in each would stand in every header's text\nand weigh on every render; the dropdown asks for its entries only once it has announced that it\nopens, so they are there in time.\n\nBy place, not by column: headers render by place, so a menu that closes behind a choice that\nmoved its column — hiding it, pinning it — stands for another column by the time it has faded."
            },
            {
              "kind": "method",
              "name": "renderMenuEntries",
              "privacy": "private",
              "parameters": [
                {
                  "name": "groups",
                  "type": {
                    "text": "MenuEntry[][]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderMenuIcon",
              "privacy": "private",
              "parameters": [
                {
                  "name": "icon",
                  "optional": true,
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "An entry's icon, or the room one takes: the template keeps the labels of a menu in one line,\nthose without an icon among them."
            },
            {
              "kind": "method",
              "name": "showsToolbar",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "description": "Whether the toolbar stands above the grid: once anything is in it. Its count then always is, so a\ntoolbar never stands with nothing but a number, and a plain grid has none."
            },
            {
              "kind": "method",
              "name": "renderToolbar",
              "privacy": "private",
              "description": "The toolbar: the search at its start, the consumer's actions after it, their quick filters and the\nview menu at its end — and below, the count, the selection and a badge for each active filter,\nwhich are what the view is narrowed to rather than controls, so they have a row of their own."
            },
            {
              "kind": "method",
              "name": "entryCountText",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "description": "How many entries there are, and how many of them the view shows where it is narrowed; then how\nmany are selected. A server's count is its total, already narrowed; one it does not give is the\nrows loaded."
            },
            {
              "kind": "method",
              "name": "renderFilterBadges",
              "privacy": "private",
              "description": "A badge for each active filter, its column and its value, with a button that clears it; after the\nlast one, the button that clears them all and the search with them. Both go with the badges."
            },
            {
              "kind": "method",
              "name": "filterValueText",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "value",
                  "type": {
                    "text": "unknown"
                  }
                }
              ],
              "description": "A filter's value as a badge says it: a range by its ends, a list by its entries, a date by the\nday it names."
            },
            {
              "kind": "method",
              "name": "clearFilterFromBadge",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "A badge's clear: the column's filter goes, as clearing it in its panel would, and the focus stays in the toolbar."
            },
            {
              "kind": "field",
              "name": "resetFiltersFromToolbar",
              "privacy": "private",
              "readonly": true,
              "description": "Clears every filter and the search, reported once, and keeps the focus in the toolbar."
            },
            {
              "kind": "method",
              "name": "keepFocusInToolbar",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "The badge or the reset that held the focus leaves with what it cleared; the count takes the focus\ninstead of the document, as the pattern has it."
            },
            {
              "kind": "method",
              "name": "renderSearch",
              "privacy": "private",
              "description": "The search field, at the start of the toolbar: named for a reader, its name hidden from sight."
            },
            {
              "kind": "field",
              "name": "handleSearchInput",
              "privacy": "private",
              "description": "The user typed in the search field: the term is written, reported with the filters, and the rows\nleft are counted aloud once they are shown."
            },
            {
              "kind": "field",
              "name": "searchAnnouncement",
              "type": {
                "text": "ReturnType<typeof setTimeout> | undefined"
              },
              "privacy": "private",
              "parsedType": {
                "text": "{ close: {  }, hasRef: {  }, ref: {  }, refresh: {  }, unref: {  }, _onTimeout: {  }, __@toPrimitive@535: {  }, __@dispose@4064: {  } } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "searchAwaitingAnswer",
              "type": {
                "text": "string | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The search a server's answer is still to be said for, in server mode.",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "answeredThisUpdate",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether the rows handed in this update are a server's answer."
            },
            {
              "kind": "method",
              "name": "searchResultOfServer",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "description": "What a server found for a search, as its pager says it: the range and the total where it gave\none, \"of more than\" the range where it did not. Its count of every row there is before the search is\none it never gives, so \"n of m\" is not said."
            },
            {
              "kind": "field",
              "name": "hasRequested",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether server mode has asked for its first rows yet."
            },
            {
              "kind": "method",
              "name": "renderViewMenu",
              "privacy": "private",
              "description": "The menu listing the columns, as the template has it: a check per column the user may hide,\nthen an entry putting the columns back as declared. A column with no label is left out, since\nthere would be nothing to read in its place. Checking keeps the menu open, so several columns\ncan be changed in one visit."
            },
            {
              "kind": "field",
              "name": "handleViewMenuSelect",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "setViewByGesture",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "next",
                  "type": {
                    "text": "Partial<Pick<EdDataGrid, 'appearance' | 'density'>>"
                  }
                }
              ],
              "description": "Switches the look because the user chose it, and reports it — once, and only where it changed:\none of a set is always chosen, so choosing the one that is changes nothing."
            },
            {
              "kind": "method",
              "name": "pinByGesture",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "side",
                  "type": {
                    "text": "'left' | 'right' | false"
                  }
                }
              ],
              "description": "Moves a column because the user asked to, which is what reports it."
            },
            {
              "kind": "method",
              "name": "runMenuEntry",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "event",
                  "type": {
                    "text": "CustomEvent<{ item: Element }>"
                  }
                }
              ],
              "description": "Carries out what the user chose.\n\nThis is the gesture, so this is what reports a pin — the methods behind it stay silent, the\nway `expandRow()` does."
            },
            {
              "kind": "method",
              "name": "sortBy",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "direction",
                  "type": {
                    "text": "'asc' | 'desc' | false"
                  }
                }
              ],
              "description": "Puts one column's sort where it is asked to be, rather than one step further round.\n\nThe header cycles; a menu names the state it wants. Both go through the engine, so both leave\nby the one handler that reports a change."
            },
            {
              "kind": "method",
              "name": "autoSizeColumn",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Sets a column to the width of what is in it, which can be narrower than it was.\n\nThe body cells count by the text they render and the header by its label beside the controls\nit holds, which is how the template measures."
            },
            {
              "kind": "method",
              "name": "headerWidthOf",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "ruler",
                  "type": {
                    "text": "CanvasRenderingContext2D"
                  }
                },
                {
                  "name": "labelLimit",
                  "optional": true,
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "How wide a column's header has to be for its label to fit beside everything else it holds.\n\nIts label only, not its text: the header also holds a menu, and the text of a menu nobody has\nopened is not something the header shows. The rest — the filter, the arrow, the menu button — keeps\nthe room it takes, except the strip, which hangs over the edge rather than taking any."
            },
            {
              "kind": "method",
              "name": "autoSizeColumns",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Fits every shown column the user may resize to its content, as `autoSizeColumn()` does one."
            },
            {
              "kind": "method",
              "name": "sizeColumnsToFit",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Shares the grid's width out among the shown columns by their `flex`, each held within its\n`minWidth` and `maxWidth`, while the control columns keep their room. Each width is reported,\nfinished, as a width chosen for the column. The template's method, and like it this neither hands\nwhat a limit cut off to the others nor skips a column that may not be resized."
            },
            {
              "kind": "method",
              "name": "getColumnPin",
              "return": {
                "type": {
                  "text": "'left' | 'right' | false"
                }
              },
              "parameters": [
                {
                  "name": "columnId",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "The edge a column is held at — `'left'`, `'right'`, or `false` — whether by its declaration, the\nuser, or because the rows are grouped by it and something else is held at the start."
            },
            {
              "kind": "method",
              "name": "canResize",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "column",
                  "type": {
                    "text": "Column<EdDataGridFeatures, TData, unknown>"
                  }
                }
              ],
              "description": "Whether a column's width is the user's to change. A group heads no width of its own."
            },
            {
              "kind": "method",
              "name": "renderResizeHandle",
              "privacy": "private",
              "parameters": [
                {
                  "name": "column",
                  "type": {
                    "text": "Column<EdDataGridFeatures, TData, unknown>"
                  }
                }
              ],
              "description": "The strip between two columns that the width is dragged on.\n\nThe template's strip: a named separator for the pointer, which a double-click fits to the\ncolumn's content. It takes no focus — the keyboard resizes from the header cell with Alt and an\narrow — and a separator that takes no focus is a static one, with no position to report. It\ncarries the column's id rather than a position: a handle found by counting lands on the wrong\ncolumn as soon as a header spans, because the row above has fewer cells than the row below.\n\nA click on it is kept from the header, which would otherwise sort on the way."
            },
            {
              "kind": "method",
              "name": "ariaSortOf",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "sorted",
                  "type": {
                    "text": "false | 'asc' | 'desc'"
                  }
                }
              ],
              "description": "What a header says about its own order.\n\n`aria-sort` sits on **every** sorted column, not only the first. ARIA's guidance is that it\n\"should only be added to a single table or grid header at a time\"\n(developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-sort), written\nfor grids that sort by one column. This one sorts by several, and answering `none` on a column\nthe rows are genuinely ordered by would not be a smaller deviation — it would be a wrong one.\n\nWhat this does not convey is the *priority* among several sorted columns: that is shown, not\nspoken. Saying it needs a translated string, and the translation pass is block 11's."
            },
            {
              "kind": "method",
              "name": "effectiveSort",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdDataGridSort"
                }
              },
              "description": "The entries of `sort` that are actually ordering the rows.\n\nThe engine drops an entry whose column cannot be sorted by — one the consumer restored from a\nsaved view after the column was taken away, or one naming a column that never opted in — before\nit builds the row model, but the numbers it reports back still count from the whole list. Asking\nit for a position would make the one column doing the ordering announce itself as the second."
            },
            {
              "kind": "method",
              "name": "renderSortIndicator",
              "privacy": "private",
              "parameters": [
                {
                  "name": "column",
                  "type": {
                    "text": "Column<EdDataGridFeatures, TData, unknown>"
                  }
                }
              ],
              "description": "The arrow on a sortable header, and its place in the order when several columns are sorted.\n\nBoth are hidden from assistive technology: the state is already on the header as `aria-sort`,\nand a bare number read out beside a column name says nothing. A column that can be sorted but is\nnot keeps the element and dims it, so the header does not change width on the first click."
            },
            {
              "kind": "method",
              "name": "toggleSortFrom",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ],
              "description": "Turns an activated header into the next order.\n\nThe engine's own handler rather than `toggleSorting`, because it is what reads\n`isMultiSortEvent` off the event — so a click and an Enter answer the same question about the\nmodifier key, and a consumer who replaced that test is obeyed in both."
            },
            {
              "kind": "field",
              "name": "handleClick",
              "privacy": "private",
              "description": "One walk for both things a click can land on.\n\nA header sorts; a cell reports itself. Two listeners would each walk the path and each have to\nrepeat the rule that a control inside the cell owns the gesture — and lit keeps template parts\nby position, so two `@click` bindings on one element are not two listeners anyway."
            },
            {
              "kind": "method",
              "name": "selectByClick",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ],
              "description": "A click on a row's data: that row alone, in either mode, with its children where they go with\nit. Where more than one row may be selected, Ctrl/Cmd adds the row to the others or takes it out,\nas its box does, and Shift selects the rows from where the last click started to this one in\nplace of the others, the way a file list does; the start stays put for the next Shift. Where one\nrow may be, Ctrl/Cmd selects the row alone or lets it go — single mode has no box to clear, and\nMUI's single selection releases a row the same way. The control cells answer their own clicks,\nand a grouping row stands for its members rather than being one."
            },
            {
              "kind": "method",
              "name": "renderCells",
              "privacy": "private",
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "Row<EdDataGridFeatures, TData>"
                  }
                },
                {
                  "name": "rowHeaderColumn",
                  "type": {
                    "text": "Column<EdDataGridFeatures, TData, unknown> | undefined"
                  }
                },
                {
                  "name": "columnIndexes",
                  "type": {
                    "text": "ColumnIndexes<TData>"
                  }
                },
                {
                  "name": "offsets",
                  "type": {
                    "text": "StickyOffsets<TData>"
                  }
                },
                {
                  "name": "hierarchical",
                  "type": {
                    "text": "boolean"
                  }
                },
                {
                  "name": "parts",
                  "default": "''"
                }
              ],
              "description": "One row's cells.\n\nA cell another cell's span reaches over is not rendered at all; the one that covers it carries\nthe content and the span. Rendering it would draw the value twice and push everything after it\none track along. The covering cell is always in the same row, because only columns are spanned."
            },
            {
              "kind": "method",
              "name": "renderCell",
              "privacy": "private",
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "Cell<EdDataGridFeatures, TData, unknown>"
                  }
                },
                {
                  "name": "rowHeaderColumn",
                  "type": {
                    "text": "Column<EdDataGridFeatures, TData, unknown> | undefined"
                  }
                },
                {
                  "name": "columnIndexes",
                  "type": {
                    "text": "ColumnIndexes<TData>"
                  }
                },
                {
                  "name": "offsets",
                  "type": {
                    "text": "StickyOffsets<TData>"
                  }
                },
                {
                  "name": "hierarchical",
                  "type": {
                    "text": "boolean"
                  }
                },
                {
                  "name": "parts",
                  "default": "''"
                }
              ]
            },
            {
              "kind": "method",
              "name": "cellRole",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "'rowheader' | 'gridcell'"
                }
              },
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "Cell<EdDataGridFeatures, TData, unknown>"
                  }
                },
                {
                  "name": "rowHeaderColumn",
                  "type": {
                    "text": "Column<EdDataGridFeatures, TData, unknown> | undefined"
                  }
                }
              ],
              "description": "Which cell names its row.\n\nOn a grouping row that is the cell holding the value, wherever the grouped column happens to\nsit — the configured row-header column renders nothing there, and a row header with nothing in\nit leaves the row nameless to a screen reader."
            },
            {
              "kind": "method",
              "name": "renderCellContent",
              "privacy": "private",
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "Cell<EdDataGridFeatures, TData, unknown>"
                  }
                },
                {
                  "name": "columnIndex",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "hierarchical",
                  "type": {
                    "text": "boolean"
                  }
                }
              ],
              "description": "What goes inside a cell, which is not always the column's own content.\n\nThree shapes share the body. An ordinary cell renders its column. The first data cell of a row\nin a hierarchy carries the indentation for its depth, so the content steps in with the level,\nas the control that opens it does. And a group row puts the value it stands for, with how many\nrows it holds, in the cell of the column it groups by, and the aggregates of the other columns\nin theirs."
            },
            {
              "kind": "method",
              "name": "renderAggregate",
              "privacy": "private",
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "Cell<EdDataGridFeatures, TData, unknown>"
                  }
                }
              ],
              "description": "A group row's cell in a column it does not group by: the column's aggregate, through\n`aggregatedFormatter`; nothing where the column has none.\n\nWithout `aggregatedFormatter` the column's `formatter` shows only an aggregate of the kind it was\nwritten for — one of the column's own values, or a value of that kind. A count is a number\nwhatever the column holds, a function of the consumer's own returns what it returns, and a\nformatter handed either could throw and take the grid down with it; they are shown as they are.\n`extent` and `unique` are lists of the column's values, each value shown through the formatter."
            },
            {
              "kind": "method",
              "name": "plainValue",
              "privacy": "private",
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "unknown"
                  }
                }
              ],
              "description": "A value with no formatter to show it: nothing for none, a date in the grid's locale, else its text."
            },
            {
              "kind": "field",
              "name": "footerCache",
              "type": {
                "text": "{ rows: unknown; defs: unknown; value: Map<string, unknown> } | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "What each footer cell shows. Asked of the consumer's functions only when the rows shown or the\ncolumns change: a render also runs on every scroll frame, and a footer summing every row would\notherwise run once per frame.",
              "parsedType": {
                "text": "null | { rows: unknown, defs: unknown, value: { clear: {  }, delete: {  }, forEach: {  }, get: {  }, has: {  }, set: {  }, size: number, entries: {  }, keys: {  }, values: {  }, __@iterator@156: {  }, __@toStringTag@537: string } }"
              }
            },
            {
              "kind": "method",
              "name": "footerContents",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Map<string, unknown>"
                }
              }
            },
            {
              "kind": "method",
              "name": "renderFooter",
              "privacy": "private",
              "parameters": [
                {
                  "name": "leafColumns",
                  "type": {
                    "text": "Column<EdDataGridFeatures, TData, unknown>[]"
                  }
                },
                {
                  "name": "columnIndexes",
                  "type": {
                    "text": "ColumnIndexes<TData>"
                  }
                },
                {
                  "name": "offsets",
                  "type": {
                    "text": "StickyOffsets<TData>"
                  }
                },
                {
                  "name": "expandIndex",
                  "type": {
                    "text": "number | null"
                  }
                },
                {
                  "name": "controlSticky",
                  "type": {
                    "text": "boolean"
                  }
                },
                {
                  "name": "rowIndex",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "The footer: one row of cells in a row group of its own, held against the bottom of the grid. Its\ncells are grid cells the arrow keys reach, and belong to no row of the data — nothing selects,\nreports or copies them. The control columns get an empty cell each, so the rest line up."
            },
            {
              "kind": "method",
              "name": "controlPlacement",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "columnIndex",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "sticky",
                  "type": {
                    "text": "boolean"
                  }
                }
              ],
              "description": "Where a control column sits and how it is held there, as the inline style that does both."
            },
            {
              "kind": "method",
              "name": "renderControlHeaderCell",
              "privacy": "private",
              "parameters": [
                {
                  "name": "kind",
                  "type": {
                    "text": "'select' | 'expand'"
                  }
                },
                {
                  "name": "columnIndex",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "rowIndex",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "lastHeaderRow",
                  "type": {
                    "text": "boolean"
                  }
                },
                {
                  "name": "sticky",
                  "type": {
                    "text": "boolean"
                  }
                }
              ],
              "description": "A control column's header cell.\n\nThe one over the boxes carries the box that takes every row at once, which is the only thing\nin a header that is not about a column. The one over the toggles holds nothing: there is no\n\"open all\" in the template's surface, and a name here would be read out on the way to every\ncolumn that does head data. Both are `columnheader`, because a header row is made of them and\na missing cell would leave every index after it describing the wrong column."
            },
            {
              "kind": "method",
              "name": "renderControlCell",
              "privacy": "private",
              "parameters": [
                {
                  "name": "kind",
                  "type": {
                    "text": "'select' | 'expand'"
                  }
                },
                {
                  "name": "row",
                  "type": {
                    "text": "Row<EdDataGridFeatures, TData>"
                  }
                },
                {
                  "name": "columnIndex",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "sticky",
                  "type": {
                    "text": "boolean"
                  }
                },
                {
                  "name": "rowIndex",
                  "default": "-1"
                },
                {
                  "name": "parts",
                  "default": "''"
                }
              ],
              "description": "A row's own controls, in the column that keeps them reachable.\n\nEverything here belongs to the row rather than to any column — the control that opens it now,\nthe box that selects it from block 6 on — which is why they sit outside the data and ahead of\nanything pinned. A row that can be read has to be a row that can be operated.\n\nThe cell answers Enter itself instead of handing it to the actions mode: there is\none control in it and nothing else to reach, so stepping in first would be a keystroke that\nbuys the user nothing. That is also why there is a column per control rather than one for all\nof them — two things in a cell and the keys would have to pick.\n\nWhich is also why the cell that opens a row is named. A cell that does something and announces\nas blank leaves a reader with no way to know the key does anything — the name says what\npressing it would do, where the row's own `aria-expanded` says which state it is in. A row\nwith nothing to open is not a control and does not claim to be one. The box names itself."
            },
            {
              "kind": "method",
              "name": "showsDetail",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "Row<EdDataGridFeatures, TData>"
                  }
                }
              ],
              "description": "Whether a row's detail panel is shown beneath it: open, and neither a group row nor without a detail."
            },
            {
              "kind": "method",
              "name": "renderDetail",
              "privacy": "private",
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "Row<EdDataGridFeatures, TData>"
                  }
                },
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "rowIndex",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "columnCount",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "hierarchical",
                  "type": {
                    "text": "boolean"
                  }
                },
                {
                  "name": "names",
                  "default": "''"
                }
              ],
              "description": "A row's detail panel: a row of its own right beneath its owner, one cell across every column.\nIt holds no record and no column, so nothing selects, reports or copies it; the arrow keys reach\nit between its owner and the next row, and its controls are entered as any cell's are."
            },
            {
              "kind": "field",
              "name": "detailObserver",
              "type": {
                "text": "ResizeObserver | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Keeps an open panel's owner measured with it: a panel can grow after it was first drawn — an\nimage arriving, content loading — and the rows after it have to move down with it.",
              "parsedType": {
                "text": "null | { disconnect: {  }, observe: {  }, unobserve: {  } }"
              }
            },
            {
              "kind": "method",
              "name": "watchDetails",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "renderIndent",
              "privacy": "private",
              "parameters": [
                {
                  "name": "row",
                  "type": {
                    "text": "Row<EdDataGridFeatures, TData>"
                  }
                }
              ],
              "description": "The space in front of a row's content that shows how deep it sits.\n\nEvery row of a hierarchy carries it, including one at the top with nothing under it — a row\nwhose content started where the others' does only by accident would break the ladder the eye\nfollows down the column. It is empty and hidden from the accessibility tree, because the depth\nis already on the row as `aria-level` and saying it twice is saying it wrong."
            },
            {
              "kind": "method",
              "name": "renderSpacer",
              "privacy": "private",
              "parameters": [
                {
                  "name": "size",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Holds the height of the rows outside the window.\n\nIt carries no role: a rowgroup's children are rows, and a spacer is furniture. Hiding it from the\naccessibility tree is what keeps `aria-rowcount` the only thing that says how many rows there are."
            },
            {
              "kind": "method",
              "name": "reportDuplicateColumnIds",
              "privacy": "private",
              "parameters": [
                {
                  "name": "leafColumns",
                  "type": {
                    "text": "Column<EdDataGridFeatures, TData, unknown>[]"
                  }
                }
              ],
              "description": "Reports two columns that ended up with the same name.\n\nA column with no `id` is named after its field, so two columns reading one field are one name\nas far as everything that remembers a column is concerned. Sorting keys on it, and so will every\nlater view state: both headers then report the state of one column, and the one declared last\ndecides how that name sorts — measured, a column meant to sort its dates as text sorted them\nchronologically because its twin said so.\n\nA message rather than a repair: renaming one of them would hand the consumer a name they never\nchose, and it is the name their own saved views are written in."
            },
            {
              "kind": "method",
              "name": "reportMaskedGrouping",
              "privacy": "private",
              "description": "Reports a grouping the rows' own children put aside.\n\n`group-by` is kept rather than cleared, so it applies again by itself once the rows stop\nbringing children — but until then it does nothing, and the consumer sees only that their\ngrouping is missing. That is also what a mistyped `child-rows` looks like: a field no row has\nis still a declared tree, so the grouping stays aside and there is nothing on screen to say why."
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "type": {
                "text": "EdDataGridCellClickEvent"
              },
              "description": "Emitted when a cell is activated, by a click or by Enter. The detail carries the `column` the cell stands in, by its id, the `row` record behind it, the cell's `value`, the `rowIndex` among the rows shown, and the `originalEvent` that tells the gestures apart. A cell that holds its own control does not report one: the control owns the gesture, by pointer and by key alike. Nor does a grouping row, which holds no record of its own. There is no row event beside it — a cell activation already names its row.",
              "name": "ed-data-grid-cell-click",
              "reactName": "onEdDataGridCellClick",
              "eventName": "EdDataGridCellClickEvent"
            },
            {
              "type": {
                "text": "EdDataGridCellContextmenuEvent"
              },
              "description": "Emitted when a cell is asked for its context menu. Same detail; `originalEvent` is the browser's `contextmenu` event, so a consumer opening their own menu calls `preventDefault()` on it.",
              "name": "ed-data-grid-cell-contextmenu",
              "reactName": "onEdDataGridCellContextmenu",
              "eventName": "EdDataGridCellContextmenuEvent"
            },
            {
              "type": {
                "text": "EdDataGridRowExpandEvent"
              },
              "description": "Emitted when the user opens a row, whether it is a parent with children or a grouping row. The detail carries the `row` record. Opening a row through `expandRow()`, `expandAllRows()` or the `expandedKeys` property is silent.",
              "name": "ed-data-grid-row-expand",
              "reactName": "onEdDataGridRowExpand",
              "eventName": "EdDataGridRowExpandEvent"
            },
            {
              "type": {
                "text": "EdDataGridRowCollapseEvent"
              },
              "description": "Emitted when the user closes a row. Same detail, same rule.",
              "name": "ed-data-grid-row-collapse",
              "reactName": "onEdDataGridRowCollapse",
              "eventName": "EdDataGridRowCollapseEvent"
            },
            {
              "type": {
                "text": "EdDataGridColumnResizeEvent"
              },
              "description": "Emitted while the user drags a column's width and once more when they let go, and once, finished, for each Alt+Arrow step, each fit from a double-click or the menu, and with `width: null` for each width the user chose that \"Reset columns\" drops. The detail carries the `columnId`, the `width` it has reached and `finished`, which tells the two apart — a listener saving the result checks it rather than debouncing. A press that does not move reports nothing, and a cancelled drag no finished width: the column goes back to where it was.",
              "name": "ed-data-grid-column-resize",
              "reactName": "onEdDataGridColumnResize",
              "eventName": "EdDataGridColumnResizeEvent"
            },
            {
              "type": {
                "text": "EdDataGridRowSelectEvent"
              },
              "description": "Emitted when the user changes which rows are selected: by a click on a row, with or without Ctrl/Cmd or Shift, through a row's box or the one in the header, or by key — Space on a row, Shift with an arrow for a range, Ctrl/Cmd+A for every row. The detail carries the whole selection — `selectedKeys` and the `selectedRows` behind them, at every depth — because one box can move many rows at once. Setting `selectedKeys` yourself does not fire it.",
              "name": "ed-data-grid-row-select",
              "reactName": "onEdDataGridRowSelect",
              "eventName": "EdDataGridRowSelectEvent"
            },
            {
              "type": {
                "text": "EdDataGridSortChangeEvent"
              },
              "description": "Emitted when the user changes the order, by clicking a header or pressing Enter on one. The detail carries the whole `sort` list, first entry first. Setting `sort` yourself does not fire it.",
              "name": "ed-data-grid-sort-change",
              "reactName": "onEdDataGridSortChange",
              "eventName": "EdDataGridSortChangeEvent"
            },
            {
              "type": {
                "text": "EdDataGridColumnVisibilityChangeEvent"
              },
              "description": "Emitted when the user shows or hides a column, from its menu or from the view menu — including \"Reset columns\", once per column it changes. The detail carries the `columnId` and whether it is now `visible`. `toggleColumn()` and `resetColumns()` are silent.",
              "name": "ed-data-grid-column-visibility-change",
              "reactName": "onEdDataGridColumnVisibilityChange",
              "eventName": "EdDataGridColumnVisibilityChangeEvent"
            },
            {
              "type": {
                "text": "EdDataGridColumnMoveEvent"
              },
              "description": "Emitted when the user moves a column, by dragging its header or with Shift and an arrow on it: during a drag each time the place it would land at changes, with `finished` false, and once more when the drop settles. The detail carries the `columnId`, its `toIndex`, the whole `columnOrder` with hidden columns included, and `finished`. \"Reset columns\" reports once, with `columnId` and `toIndex` `null` and an empty `columnOrder`. Setting `columnOrder` is silent.",
              "name": "ed-data-grid-column-move",
              "reactName": "onEdDataGridColumnMove",
              "eventName": "EdDataGridColumnMoveEvent"
            },
            {
              "type": {
                "text": "EdDataGridDataRequestEvent"
              },
              "description": "Emitted in server mode when the grid needs rows: first, on a new sort, filters, search, page or page size, and on `reload()`. The detail is the request — `sort`, `filters`, `search`, `page`, `pageSize` — with a `signal` that aborts once a newer request overtakes it. Without a `dataSource`, answer it by setting `data`, `total` and `loading`, and `error` where it failed.",
              "name": "ed-data-grid-data-request",
              "reactName": "onEdDataGridDataRequest",
              "eventName": "EdDataGridDataRequestEvent"
            },
            {
              "type": {
                "text": "EdDataGridDataErrorEvent"
              },
              "description": "Emitted when the `dataSource` fails a request that is still current. The detail carries the `error` and the `request`; the rows the grid had stay.",
              "name": "ed-data-grid-data-error",
              "reactName": "onEdDataGridDataError",
              "eventName": "EdDataGridDataErrorEvent"
            },
            {
              "type": {
                "text": "EdDataGridPageChangeEvent"
              },
              "description": "Emitted when the user moves to another page or changes the page size from the pager, and when a search or a filter the user changed takes the grid back to its first page. The detail carries the `page`, counted from zero, and the `pageSize`. Setting `page` or `pageSize` is silent.",
              "name": "ed-data-grid-page-change",
              "reactName": "onEdDataGridPageChange",
              "eventName": "EdDataGridPageChangeEvent"
            },
            {
              "type": {
                "text": "EdDataGridFilterChangeEvent"
              },
              "description": "Emitted when the user changes a column's filter from its panel, clearing it included, clears it with its badge in the toolbar or all of them with \"Reset all filters\", or types in the search field. The detail carries every filter in force as `filters`, each `{ id, value }` with empty ones and columns that cannot be filtered left out, and the `searchTerm`. Setting `filters` or `searchTerm` is silent.",
              "name": "ed-data-grid-filter-change",
              "reactName": "onEdDataGridFilterChange",
              "eventName": "EdDataGridFilterChangeEvent"
            },
            {
              "type": {
                "text": "EdDataGridViewChangeEvent"
              },
              "description": "Emitted when the user changes how the grid looks from its view menu: its `appearance` or its `density`. The detail carries both as they are now. Setting either property yourself does not fire it.",
              "name": "ed-data-grid-view-change",
              "reactName": "onEdDataGridViewChange",
              "eventName": "EdDataGridViewChangeEvent"
            },
            {
              "type": {
                "text": "EdDataGridColumnPinEvent"
              },
              "description": "Emitted when the user holds a column against an edge or lets it go from its menu, and for each pin \"Reset columns\" changes. The detail carries the `columnId` and where it is now `pinned` — `'left'`, `'right'` or `false`. `pinColumn()` is silent, and so is choosing the edge the column is already at.",
              "name": "ed-data-grid-column-pin",
              "reactName": "onEdDataGridColumnPin",
              "eventName": "EdDataGridColumnPinEvent"
            }
          ],
          "attributes": [
            {
              "name": "row-key",
              "type": {
                "text": "string | ((row: TData, index: number, parent?: TData, parentKey?: string) => string)"
              },
              "default": "'id'",
              "description": "What identifies a row: a field name, a dot path, or a function of the row. The function is handed\nthe row's place among its siblings and, in a tree, the parent's record and the parent's key, for\nchildren whose own ids repeat under different parents.\n\nThe value is the row's identity everywhere — selection, expansion and a saved view all key on\nit — and it has to survive sorting, filtering and a replaced `data` array, so it belongs to the\nrecord rather than to its position. A row the key does not reach falls back to its position and\nis reported once.",
              "fieldName": "rowKey",
              "parsedType": {
                "text": "string | {  }"
              }
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The grid's accessible name.\n\nIt is a property rather than an `aria-labelledby` on the host because the `role=\"grid\"` node is\nin the shadow root, and an IDREF does not cross that boundary.",
              "fieldName": "label"
            },
            {
              "name": "without-sort-removal",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether a third activation of a header leaves the column sorted instead of clearing its order.\n\nThe cycle is ascending, descending, none. With this set it is ascending, descending, ascending,\nfor a grid whose rows are meaningless in their original order.",
              "fieldName": "withoutSortRemoval"
            },
            {
              "name": "sort-desc-first",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the first activation of a header sorts descending. Individual columns may say otherwise.",
              "fieldName": "sortDescFirst"
            },
            {
              "name": "max-multi-sort",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "How many columns may be sorted by at once. `0` is no limit, `1` allows a single column only.",
              "fieldName": "maxMultiSort"
            },
            {
              "name": "child-rows",
              "type": {
                "text": "string | ((row: TData) => TData[] | undefined) | null"
              },
              "default": "null",
              "description": "Where a row's children are: a field name, a dot path, or a function of the row.\n\nSetting it is what makes the grid a tree. Nothing else has to change — a row without children\nsimply has none, and the engine only asks.",
              "fieldName": "childRows",
              "parsedType": {
                "text": "null | string | {  }"
              }
            },
            {
              "name": "group-by",
              "type": {
                "text": "string | string[] | null"
              },
              "default": "null",
              "description": "Which columns the rows are grouped by, in the order they nest.\n\nEach value of the first column becomes a row of its own holding the ones that share it; a second\ncolumn groups inside that. As an attribute it takes the ids separated by spaces or commas, which\nis how the template spells a list that has to fit in markup.\n\nThe grouped columns move to the front, in this order, and a grouping row's label stands in the\ncolumn it groups by. Where anything is pinned at the start, they are held there too.\n\nOne hierarchy at a time: where `childRows` is set the rows already nest, and this is ignored —\nkept rather than cleared, so it applies again once they stop, and reported as ignored so the\ngrouping does not simply go missing. A name with nothing in it names no column and is dropped.",
              "fieldName": "groupBy",
              "parsedType": {
                "text": "null | string | string[]"
              }
            },
            {
              "name": "resizable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the user can drag a column's width.\n\nA column may say otherwise for itself. What a drag produces is a width the grid remembers, so\na resized column stops sharing the leftover space and is laid out at what it was given.",
              "fieldName": "resizable"
            },
            {
              "name": "reorderable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the user can move columns, by dragging a header or with Shift and an arrow on it. A column\nmay say otherwise for itself with `movable`; a pinned column stands at its edge and is not moved.",
              "fieldName": "reorderable"
            },
            {
              "name": "pinnable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the user can hold a column against an edge.\n\nA column may say otherwise for itself. Separate from the column's own `pinned`, which says\nwhere it **starts**: a grid that is not pinnable still lays out what its columns declared, and\none that is offers the edges in each column's menu. A pinned column's menu offers to let it go\neither way.",
              "fieldName": "pinnable"
            },
            {
              "name": "hide-column-menu",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Takes the menu out of every column header.\n\nThe menu is where a user sorts, pins, filters, hides and fits a column by name. Without it a\ncolumn's filter is reached only once a filter is in force — a consumer sets it, and the button\nthat then appears in the header opens its panel — so the user can no longer start one.",
              "fieldName": "hideColumnMenu"
            },
            {
              "name": "with-view-menu",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the toolbar above the grid carries a view menu: the columns the user may hide, each with a\ncheck that shows or hides it, the appearance and the density to switch between, and an entry that\nputs the columns back as declared. What the user picks there overrides `appearance` and `density`\nas the consumer set them, reported by `ed-data-grid-view-change` and kept by `getState()`.\n`hide-appearance-option` and `hide-density-option` leave either choice out.",
              "fieldName": "withViewMenu"
            },
            {
              "name": "hide-appearance-option",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the view menu leaves out the appearance, so the user keeps the one the consumer set.\n`getState()` then leaves it out too.",
              "fieldName": "hideAppearanceOption"
            },
            {
              "name": "hide-density-option",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the view menu leaves out the density, so the user keeps the one the consumer set.\n`getState()` then leaves it out too.",
              "fieldName": "hideDensityOption"
            },
            {
              "name": "selectable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether rows can be selected: by a click on a row and by Space, and where `selection-mode` is\n`multiple` by a box per row as well. Off, the grid renders no box and reports nothing.",
              "fieldName": "selectable"
            },
            {
              "name": "selection-mode",
              "type": {
                "text": "EdDataGridSelectionMode"
              },
              "default": "'single'",
              "description": "Whether one row can be selected at a time, or several.\n\nThe template spells both the switch and the mode in one property; this library's rule says a\ntoggle and its mode are two, so `selectable` turns it on and this says which kind.\n\nIn `multiple` a control column leads the grid with a box per row and one in the header that\ntakes every row, and the grid says it takes several. In `single` there is no box and no column\nfor one — a box offers a choice independent of the others, which one-at-a-time is not. A row is\nselected by a click on it or by Space, released by Space or by Ctrl/Cmd with the click, and says\nso with its paint and its `aria-selected`.",
              "fieldName": "selectionMode",
              "parsedType": {
                "text": "'single' | 'multiple'"
              }
            },
            {
              "name": "sub-row-selection",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Whether selecting a row selects the rows beneath it.\n\nOn, a parent takes its children with it and shows a part-selected box while only some of them\nare chosen. Off, every row answers for itself and a parent is just another row.",
              "fieldName": "subRowSelection"
            },
            {
              "name": "without-click-selection",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Leaves a click on a row's data alone, so only the box and Space select — for a grid whose cell\nclicks open something of their own. In `single`, which draws no box, Space alone selects then.\nMUI 5's `disableSelectionOnClick`.",
              "fieldName": "withoutClickSelection"
            },
            {
              "name": "without-toolbar",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Leaves the toolbar out, for a consumer who builds one of their own: no search, no view menu, no\ncount and no filter badges, whatever else asks for them. The pager counts the entries again. What\nsuch a toolbar needs is public: `searchTerm`, `filters`, `toggleColumn()`, `resetColumns()`,\n`selectedKeys` and the events that report them.",
              "fieldName": "withoutToolbar"
            },
            {
              "name": "server",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the rows come from a server: the grid sorts, filters and pages nothing itself, and asks\nfor rows through `ed-data-grid-data-request` — answered by setting `data`, `total` and `loading`.\nA `dataSource` switches it on as well. Without `paginate`, it asks for the first `pageSize` rows.",
              "fieldName": "server"
            },
            {
              "name": "total",
              "type": {
                "text": "number"
              },
              "default": "-1",
              "description": "How many rows the server has in all, for the pager; below zero while unknown. Unknown, the pager\ngoes on past every full page, and an answer shorter than the page size asked for is the last.",
              "fieldName": "total"
            },
            {
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether rows are being loaded: skeleton rows stand in for them, and the grid is marked busy.",
              "fieldName": "loading"
            },
            {
              "name": "filter-debounce",
              "type": {
                "text": "number"
              },
              "default": "250",
              "description": "How long the typing in the search or a filter rests before a server is asked, in milliseconds.",
              "fieldName": "filterDebounce"
            },
            {
              "name": "paginate",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the rows are shown a page at a time, with a pager beneath the grid.",
              "fieldName": "paginate"
            },
            {
              "name": "appearance",
              "type": {
                "text": "'modern' | 'classic'"
              },
              "default": "'classic'",
              "description": "How the grid is drawn: `classic`, its rows on the page with no outline, as a table stands, or\n`modern`, its rows on a card with rounded corners. The consumer's choice is where the grid starts; the\nuser may switch it in the view menu.",
              "fieldName": "appearance",
              "parsedType": {
                "text": "'modern' | 'classic'"
              }
            },
            {
              "name": "striped",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether every other row is set on a stripe, which makes a wide grid easier to follow across.",
              "fieldName": "striped"
            },
            {
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "How tall the rows are and how much room their cells leave around what they hold; the header stands\na step taller. The consumer's choice is where the grid starts; the user may switch it in the view\nmenu.",
              "fieldName": "density",
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "name": "pagination-mode",
              "type": {
                "text": "'controls' | 'infinite'"
              },
              "default": "'controls'",
              "description": "How `paginate` moves through the rows: a pager beneath the grid, or endlessly — in server mode\nonly — each slice asked for as the rows are scrolled near their end and appended to them. `page`\nis then the last slice asked for, and setting it takes only `0` or the next slice. Without server\nmode, the pager stands. Answering the request event by hand, hand in every row loaded so far with\nthe new slice appended. The grid needs a height: unbounded, every row is in view and the slices\nload one after another to the end.",
              "fieldName": "paginationMode",
              "parsedType": {
                "text": "'controls' | 'infinite'"
              }
            },
            {
              "name": "page",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The page shown, counted from zero — the engine's page index. Setting it is silent; the pager and\nthe search and filters the user changes write it and report. A page past the last is brought back\nto the last once there are rows. With `pagination-mode=\"infinite\"` it is the last slice asked for,\nand the grid moves it on as the rows are scrolled: set there, only `0`, which starts the slices\nover, and the slice after those loaded are taken — any other would leave a gap among the rows or\nappend a slice twice, and is put back.",
              "fieldName": "page"
            },
            {
              "name": "page-size",
              "type": {
                "text": "number"
              },
              "default": "20",
              "description": "How many rows a page holds.",
              "fieldName": "pageSize"
            },
            {
              "name": "filter-from-leaf-rows",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether a row stays for a descendant that matches, though it does not match itself. Without it a\ntree is filtered from the top: a row that does not match takes its children with it.",
              "fieldName": "filterFromLeafRows"
            },
            {
              "name": "max-leaf-row-filter-depth",
              "type": {
                "text": "number"
              },
              "default": "100",
              "description": "How many levels down the filters and the search reach into a tree. The children of a row at this\ndepth stay with it as they are, filtered or not; with `filter-from-leaf-rows`, that row is no\nlonger kept for a descendant that matches, only for itself.",
              "fieldName": "maxLeafRowFilterDepth"
            },
            {
              "name": "with-search",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether a search field stands in the toolbar. The search runs on `searchTerm` either way.",
              "fieldName": "withSearch"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "While a column is being dragged.",
              "name": "reordering"
            },
            {
              "description": "While `loading` is set.",
              "name": "loading"
            },
            {
              "description": "While there is no row to show and none is loading.",
              "name": "empty"
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Data grids display tabular data with sorting, filtering, grouping and selection.",
          "jsDoc": "/**\n * @summary Data grids display tabular data with sorting, filtering, grouping and selection.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/data-grid\n * @status experimental\n * @level organism\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @slot toolbar-actions - Actions in the toolbar above the grid, after the search: anything that acts on the rows — creating, exporting, deleting — or opens a surface to do so. Typically `<ed-button>` and `<ed-dropdown>` elements; what no longer fits moves into the toolbar's overflow menu.\n * @slot toolbar-view - Controls in the toolbar that decide what the grid shows — quick filters, the button that opens a filter panel — before the view menu; they never collapse into the overflow menu. Typically `<ed-select>`, `<ed-radio-group appearance=\"button\">` or an `<ed-button>` for the filter panel.\n * @slot loading - What stands in for the rows while they load. Skeleton rows by default.\n * @slot empty - What stands where there are no rows and nothing is looked for. An `ed-empty-state` by default.\n * @slot no-results - What stands where the filters or the search leave no row. An `ed-empty-state` by default.\n * @event {EdDataGridCellClickEvent} ed-data-grid-cell-click - Emitted when a cell is activated, by a click or by Enter. The detail carries the `column` the cell stands in, by its id, the `row` record behind it, the cell's `value`, the `rowIndex` among the rows shown, and the `originalEvent` that tells the gestures apart. A cell that holds its own control does not report one: the control owns the gesture, by pointer and by key alike. Nor does a grouping row, which holds no record of its own. There is no row event beside it — a cell activation already names its row.\n * @event {EdDataGridCellContextmenuEvent} ed-data-grid-cell-contextmenu - Emitted when a cell is asked for its context menu. Same detail; `originalEvent` is the browser's `contextmenu` event, so a consumer opening their own menu calls `preventDefault()` on it.\n * @event {EdDataGridRowExpandEvent} ed-data-grid-row-expand - Emitted when the user opens a row, whether it is a parent with children or a grouping row. The detail carries the `row` record. Opening a row through `expandRow()`, `expandAllRows()` or the `expandedKeys` property is silent.\n * @event {EdDataGridRowCollapseEvent} ed-data-grid-row-collapse - Emitted when the user closes a row. Same detail, same rule.\n * @event {EdDataGridColumnResizeEvent} ed-data-grid-column-resize - Emitted while the user drags a column's width and once more when they let go, and once, finished, for each Alt+Arrow step, each fit from a double-click or the menu, and with `width: null` for each width the user chose that \"Reset columns\" drops. The detail carries the `columnId`, the `width` it has reached and `finished`, which tells the two apart — a listener saving the result checks it rather than debouncing. A press that does not move reports nothing, and a cancelled drag no finished width: the column goes back to where it was.\n * @event {EdDataGridRowSelectEvent} ed-data-grid-row-select - Emitted when the user changes which rows are selected: by a click on a row, with or without Ctrl/Cmd or Shift, through a row's box or the one in the header, or by key — Space on a row, Shift with an arrow for a range, Ctrl/Cmd+A for every row. The detail carries the whole selection — `selectedKeys` and the `selectedRows` behind them, at every depth — because one box can move many rows at once. Setting `selectedKeys` yourself does not fire it.\n * @event {EdDataGridSortChangeEvent} ed-data-grid-sort-change - Emitted when the user changes the order, by clicking a header or pressing Enter on one. The detail carries the whole `sort` list, first entry first. Setting `sort` yourself does not fire it.\n *\n * @event {EdDataGridColumnVisibilityChangeEvent} ed-data-grid-column-visibility-change - Emitted when the user shows or hides a column, from its menu or from the view menu — including \"Reset columns\", once per column it changes. The detail carries the `columnId` and whether it is now `visible`. `toggleColumn()` and `resetColumns()` are silent.\n * @event {EdDataGridColumnMoveEvent} ed-data-grid-column-move - Emitted when the user moves a column, by dragging its header or with Shift and an arrow on it: during a drag each time the place it would land at changes, with `finished` false, and once more when the drop settles. The detail carries the `columnId`, its `toIndex`, the whole `columnOrder` with hidden columns included, and `finished`. \"Reset columns\" reports once, with `columnId` and `toIndex` `null` and an empty `columnOrder`. Setting `columnOrder` is silent.\n * @event {EdDataGridDataRequestEvent} ed-data-grid-data-request - Emitted in server mode when the grid needs rows: first, on a new sort, filters, search, page or page size, and on `reload()`. The detail is the request — `sort`, `filters`, `search`, `page`, `pageSize` — with a `signal` that aborts once a newer request overtakes it. Without a `dataSource`, answer it by setting `data`, `total` and `loading`, and `error` where it failed.\n * @event {EdDataGridDataErrorEvent} ed-data-grid-data-error - Emitted when the `dataSource` fails a request that is still current. The detail carries the `error` and the `request`; the rows the grid had stay.\n * @event {EdDataGridPageChangeEvent} ed-data-grid-page-change - Emitted when the user moves to another page or changes the page size from the pager, and when a search or a filter the user changed takes the grid back to its first page. The detail carries the `page`, counted from zero, and the `pageSize`. Setting `page` or `pageSize` is silent.\n * @event {EdDataGridFilterChangeEvent} ed-data-grid-filter-change - Emitted when the user changes a column's filter from its panel, clearing it included, clears it with its badge in the toolbar or all of them with \"Reset all filters\", or types in the search field. The detail carries every filter in force as `filters`, each `{ id, value }` with empty ones and columns that cannot be filtered left out, and the `searchTerm`. Setting `filters` or `searchTerm` is silent.\n * @event {EdDataGridViewChangeEvent} ed-data-grid-view-change - Emitted when the user changes how the grid looks from its view menu: its `appearance` or its `density`. The detail carries both as they are now. Setting either property yourself does not fire it.\n * @event {EdDataGridColumnPinEvent} ed-data-grid-column-pin - Emitted when the user holds a column against an edge or lets it go from its menu, and for each pin \"Reset columns\" changes. The detail carries the `columnId` and where it is now `pinned` — `'left'`, `'right'` or `false`. `pinColumn()` is silent, and so is choosing the edge the column is already at.\n *\n * @dependency ed-badge\n * @dependency ed-button\n * @dependency ed-checkbox\n * @dependency ed-date-picker\n * @dependency ed-divider\n * @dependency ed-empty-state\n * @dependency ed-dropdown\n * @dependency ed-dropdown-item\n * @dependency ed-icon\n * @dependency ed-input\n * @dependency ed-number-input\n * @dependency ed-pagination\n * @dependency ed-popover\n * @dependency ed-skeleton\n * @dependency ed-toolbar\n *\n * @csspart base - The grid itself. It is the scroll container: give the host a height and the rows scroll here.\n * @csspart header - The rowgroup holding the column headers.\n * @csspart header-row - One row of column headers. It carries the role and no box of its own.\n * @csspart header-cell - One column header.\n * @csspart sort-indicator - The arrow on a header that can be sorted by. Present whether or not the column is sorted, so the header keeps its width.\n * @csspart sort-priority - The number saying where a column stands in the order. Rendered only while more than one column is sorted.\n * @csspart toolbar - The `ed-toolbar` above the grid, rendered once anything is in it: the search, the view menu, content in `toolbar-actions` or `toolbar-view`, a filterable column, or selection. Its lower row always counts the entries.\n * @csspart toolbar-count - How many entries there are, of how many where a filter or the search narrows them, and how many are selected.\n * @csspart filter-badge - One active filter in the toolbar, as its column and its value, with a button that clears it.\n * @csspart filter-reset - The button after the last filter badge that clears every filter and the search.\n * @csspart search - The search field at the start of the toolbar, rendered with `with-search`.\n * @csspart drag-ghost - The label naming a column that follows the pointer while the column is dragged. It sits in the top layer.\n * @csspart view-menu - The menu at the end of the toolbar that shows or hides the columns and switches the appearance and the density.\n * @csspart column-menu - The menu in a column header, on every column that has something to offer unless `hide-column-menu` is set: sorting, pinning, the filter, and hiding and fitting the column. Its entries are rendered only while it is open.\n * @csspart column-menu-button - The button that opens a column's menu. Out of sight until the header is pointed at, the keyboard is in it or the menu is open, though it keeps its room; always shown on a screen that cannot point.\n * @csspart filter-button - The button in a filterable column's header that opens its filter panel, rendered while a filter is in force on the column or its panel is open. A filter is started from the column's menu.\n * @csspart filter-panel - The popover holding a column's filter. It stands beside the grid, not in the header, and holds its controls only while open.\n * @csspart filter-clear - The button in a filter panel that clears the column's filter.\n * @csspart filter-close - The button at the top of a filter panel that closes it.\n * @csspart body - The rowgroup holding the data rows.\n * @csspart row - One data row.\n * @csspart group-row - A row standing for one value of a grouped column. It carries the `row` part as well.\n * @csspart control-header-cell - A control column's header. It heads no data; the one over the boxes carries the box that takes every row, the one over the toggles holds nothing.\n * @csspart control-cell - A cell holding what belongs to a row rather than to a column. These are the leading columns of the grid, one per control, and they are held at the edge whenever a column is pinned there.\n * @csspart select-cell - The control cell holding a row's box, rendered where `selection-mode` is `multiple`. Carries the `control-cell` part as well.\n * @csspart expand-cell - The control cell holding the control that opens a row. Carries the `control-cell` part as well.\n * @csspart select - The box that selects one row, rendered where `selection-mode` is `multiple`. On a grouping row it takes the rows that row holds, and reads its own state back off them.\n * @csspart select-all - The box in the header that takes every row. Rendered only where more than one row can be selected.\n * @csspart expand - The control that opens a row, inside its control cell and stepped in by the row's depth. Absent on a row with nothing to open.\n * @csspart resize-handle - The strip between two column headers that the width is dragged on; a double-click fits the column to its content. A named separator that takes no focus — the keyboard resizes from the header cell with Alt and the arrows.\n * @csspart indent - The space in front of a row's content that shows how deep it sits. On the first cell holding data, one step per level.\n * @csspart no-results - The message where the filters or the search leave no row. It stands below the grid's header, outside the grid.\n * @csspart footer - The row group holding the footer row, held against the bottom of the grid.\n * @csspart footer-row - The footer row, rendered where a shown column has a `footer` and there are rows.\n * @csspart footer-cell - One cell of the footer row, under a data column. Under a control column the cell carries the `control-cell` part, as it does in the body.\n * @csspart row-detail - The row beneath an open row that holds its detail, rendered with `rowDetail`.\n * @csspart row-detail-cell - The one cell of that row, across every column, holding what `rowDetail` returns.\n * @csspart pagination - The strip beneath the grid holding the pager, rendered with `paginate` while there are rows.\n * @csspart pagination-info - Which rows the page shows, of how many there are.\n * @csspart loading-row - The row standing for the rows while they load, with one cell across every column holding the `loading` slot.\n * @csspart retry-row - The row at the end of an endless grid's rows where its next slice failed, rendered with `pagination-mode=\"infinite\"`.\n * @csspart retry-cell - The one cell of that row, across every column, saying the rows could not be loaded.\n * @csspart retry-button - The button in that cell that asks for the slice again.\n * @csspart skeleton-row - A row of skeletons standing in for the rows while they load. Hidden from the accessibility tree; the grid is marked busy.\n * @csspart empty - What stands where there are no rows and nothing is looked for. It stands below the header, outside the grid.\n * @csspart load-error - What stands in the empty state's place where a data source failed and there are no rows: saying so, with a button to ask again.\n * @csspart load-error-notice - What stands above the grid where a later request failed and the rows it had stay: saying so, with a button to ask again.\n * @csspart live-region - Where the grid says what just happened, for a reader who cannot see it. Visually hidden and outside the grid, since a grid's children are row groups and rows.\n * @csspart group-label - The value a grouping row stands for, in the column it groups by.\n * @csspart group-count - How many rows that grouping row holds.\n * @csspart cell - One data cell.\n *\n * @cssstate reordering - While a column is being dragged.\n * @cssstate loading - While `loading` is set.\n * @cssstate empty - While there is no row to show and none is loading.\n *\n * @cssproperty --ed-data-grid-cell-padding-inline - The inline padding of every cell.\n * @cssproperty --ed-data-grid-cell-padding-block - The block padding of every cell. The density steps set it.\n * @cssproperty --ed-data-grid-row-height - How tall a row of one line is. The density steps set it.\n * @cssproperty --ed-data-grid-border-color - The outline, the rules between the rows, the header's rules and the lines at a group's end and a pinned band's edge.\n * @cssproperty --ed-data-grid-border-radius - The corners of the outline.\n * @cssproperty --ed-data-grid-accent-color - The boxes that select, the bar a selected row carries at its start edge, and a column edge under the pointer.\n * @cssproperty --ed-data-grid-header-background - The header's background.\n * @cssproperty --ed-data-grid-header-text-color - The header's text, the sort priority included.\n * @cssproperty --ed-data-grid-header-icon-color - The header's icons: the sort arrow and the number beside it, the filter button and the menu button.\n * @cssproperty --ed-data-grid-stripe-background - Every other row, with `striped`.\n * @cssproperty --ed-data-grid-row-hover-background - The row under the pointer.\n * @cssproperty --ed-data-grid-focus-ring - The ring around the cell that holds the focus.\n * @cssproperty --ed-data-grid-indent-size - How far one level of a tree steps in.\n * @cssproperty --ed-data-grid-selected-background - What a selected row is painted with. The library's own selected color by default, so a selected row reads as the same thing as a selected option.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/data-grid",
          "status": "experimental",
          "level": "organism",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-badge",
            "ed-button",
            "ed-checkbox",
            "ed-date-picker",
            "ed-divider",
            "ed-empty-state",
            "ed-dropdown",
            "ed-dropdown-item",
            "ed-icon",
            "ed-input",
            "ed-number-input",
            "ed-pagination",
            "ed-popover",
            "ed-skeleton",
            "ed-toolbar"
          ],
          "tagName": "ed-data-grid",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdDataGrid",
            "module": "components/data-grid/data-grid.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-data-grid",
          "declaration": {
            "name": "EdDataGrid",
            "module": "components/data-grid/data-grid.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/details/details.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDetails",
          "cssProperties": [
            {
              "description": "The amount of space around and between the details' content. Expects a single value.",
              "name": "--ed-details-spacing"
            },
            {
              "description": "The show duration to use when applying built-in animation classes.",
              "name": "--ed-show-duration",
              "default": "var(--ed-transition-normal)"
            },
            {
              "description": "The hide duration to use when applying built-in animation classes.",
              "name": "--ed-hide-duration",
              "default": "var(--ed-transition-normal)"
            }
          ],
          "cssParts": [
            {
              "description": "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.",
              "name": "base"
            },
            {
              "description": "The header that wraps both the summary and the expand/collapse icon.",
              "name": "header"
            },
            {
              "description": "The `<slot>` the summary text is projected into. A slot has no box of its own, so inherited properties such as `color` reach the text while `background`, `padding` and `border` do not — set those on `header`, the `<summary>` element around it.",
              "name": "summary"
            },
            {
              "description": "The container that wraps the expand/collapse icons.",
              "name": "icon"
            },
            {
              "description": "The details content.",
              "name": "content"
            }
          ],
          "slots": [
            {
              "description": "The details' main content.",
              "name": ""
            },
            {
              "description": "The details' summary. Alternatively, you can use the `summary` attribute.",
              "name": "summary"
            },
            {
              "description": "Optional expand icon to use instead of the default. Works best with `<ed-icon>`.",
              "name": "expand-icon"
            },
            {
              "description": "Optional collapse icon to use instead of the default. Works best with `<ed-icon>`.",
              "name": "collapse-icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "detailsObserver",
              "type": {
                "text": "MutationObserver"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "details",
              "type": {
                "text": "HTMLDetailsElement"
              }
            },
            {
              "kind": "field",
              "name": "header",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "body",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "expandIconSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "animationGeneration",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "isAnimating",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "summary",
              "type": {
                "text": "string"
              },
              "description": "The summary to show in the header. If you need to display HTML, use the `summary` slot instead.",
              "attribute": "summary"
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string"
              },
              "description": "Groups related details elements. When one opens, others with the same name will close.",
              "attribute": "name",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the details so it can't be toggled.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "appearance",
              "type": {
                "text": "'filled' | 'plain'"
              },
              "default": "'plain'",
              "description": "The element's visual appearance.",
              "attribute": "appearance",
              "reflects": true,
              "parsedType": {
                "text": "'filled' | 'plain'"
              }
            },
            {
              "kind": "field",
              "name": "iconPlacement",
              "type": {
                "text": "'start' | 'end'"
              },
              "default": "'start'",
              "description": "The location of the expand/collapse icon.",
              "attribute": "icon-placement",
              "reflects": true,
              "parsedType": {
                "text": "'start' | 'end'"
              }
            },
            {
              "kind": "method",
              "name": "handleSummaryClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleSummaryKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "closeOthersWithSameName",
              "privacy": "private",
              "description": "Closes other <ed-details> elements in the same document when they have the same name."
            },
            {
              "kind": "method",
              "name": "show",
              "description": "Shows the details."
            },
            {
              "kind": "method",
              "name": "hide",
              "description": "Hides the details"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "Emitted before the details opens. Cancelable; calling `preventDefault()` keeps it closed.",
              "name": "ed-show",
              "reactName": "onEdShow",
              "eventName": "EdShowEvent"
            },
            {
              "description": "Emitted after the details opens and all animations are complete.",
              "name": "ed-after-show",
              "reactName": "onEdAfterShow",
              "eventName": "EdAfterShowEvent"
            },
            {
              "description": "Emitted before the details closes. Cancelable; calling `preventDefault()` keeps it open.",
              "name": "ed-hide",
              "reactName": "onEdHide",
              "eventName": "EdHideEvent"
            },
            {
              "description": "Emitted after the details closes and all animations are complete.",
              "name": "ed-after-hide",
              "reactName": "onEdAfterHide",
              "eventName": "EdAfterHideEvent"
            }
          ],
          "attributes": [
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "open"
            },
            {
              "name": "summary",
              "type": {
                "text": "string"
              },
              "description": "The summary to show in the header. If you need to display HTML, use the `summary` slot instead.",
              "fieldName": "summary"
            },
            {
              "name": "name",
              "type": {
                "text": "string"
              },
              "description": "Groups related details elements. When one opens, others with the same name will close.",
              "fieldName": "name"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the details so it can't be toggled.",
              "fieldName": "disabled"
            },
            {
              "name": "appearance",
              "type": {
                "text": "'filled' | 'plain'"
              },
              "default": "'plain'",
              "description": "The element's visual appearance.",
              "fieldName": "appearance",
              "parsedType": {
                "text": "'filled' | 'plain'"
              }
            },
            {
              "name": "icon-placement",
              "type": {
                "text": "'start' | 'end'"
              },
              "default": "'start'",
              "description": "The location of the expand/collapse icon.",
              "fieldName": "iconPlacement",
              "parsedType": {
                "text": "'start' | 'end'"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "Applied when the details is animating expand/collapse.",
              "name": "animating"
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Details show a brief summary and expand to show additional content.",
          "jsDoc": "/**\n * @summary Details show a brief summary and expand to show additional content.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/details\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-icon\n *\n * @slot - The details' main content.\n * @slot summary - The details' summary. Alternatively, you can use the `summary` attribute.\n * @slot expand-icon - Optional expand icon to use instead of the default. Works best with `<ed-icon>`.\n * @slot collapse-icon - Optional collapse icon to use instead of the default. Works best with `<ed-icon>`.\n *\n * @event ed-show - Emitted before the details opens. Cancelable; calling `preventDefault()` keeps it closed.\n * @event ed-after-show - Emitted after the details opens and all animations are complete.\n * @event ed-hide - Emitted before the details closes. Cancelable; calling `preventDefault()` keeps it open.\n * @event ed-after-hide - Emitted after the details closes and all animations are complete.\n *\n * @csspart 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 * @csspart header - The header that wraps both the summary and the expand/collapse icon.\n * @csspart summary - The `<slot>` the summary text is projected into. A slot has no box of its own, so\n *   inherited properties such as `color` reach the text while `background`, `padding` and `border` do\n *   not — set those on `header`, the `<summary>` element around it.\n * @csspart icon - The container that wraps the expand/collapse icons.\n * @csspart content - The details content.\n *\n * @cssproperty --ed-details-spacing - The amount of space around and between the details' content. Expects a single value.\n * @cssproperty [--ed-show-duration=var(--ed-transition-normal)] - The show duration to use when applying built-in animation classes.\n * @cssproperty [--ed-hide-duration=var(--ed-transition-normal)] - The hide duration to use when applying built-in animation classes.\n *\n * @cssstate animating - Applied when the details is animating expand/collapse.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/details",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-details",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdDetails",
            "module": "components/details/details.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-details",
          "declaration": {
            "name": "EdDetails",
            "module": "components/details/details.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/page-thumbnail/page-thumbnail.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdPageThumbnail",
          "cssProperties": [
            {
              "description": "The width of the preview card. Height follows the A4 aspect ratio.",
              "name": "--ed-page-thumbnail-width",
              "default": "4.125rem"
            }
          ],
          "cssParts": [
            {
              "description": "The A4 preview box that holds the image or the empty placeholder.",
              "name": "card"
            },
            {
              "description": "The preview `<img>` element.",
              "name": "image"
            },
            {
              "description": "The `page_crossed` icon shown when there is no preview.",
              "name": "empty-icon"
            },
            {
              "description": "The caption below the preview.",
              "name": "label"
            }
          ],
          "slots": [
            {
              "description": "The caption shown below the preview. Alternatively, use the `label` attribute.",
              "name": ""
            },
            {
              "description": "Content layered over the preview, e.g. a page-number badge, a selection checkbox, or action buttons.",
              "name": "overlay"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "src",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The preview image URL. When absent (or it fails to load), the empty placeholder is shown.",
              "attribute": "src"
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The caption shown below the preview (e.g. a page number). Also used as the image's alt text and accessible name.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "rotation",
              "type": {
                "text": "0 | 90 | 180 | 270"
              },
              "default": "0",
              "description": "Clockwise rotation of the preview image, in degrees. `90` and `270` transpose the card to\nlandscape and fill it with the rotated page (so the selection ring and focus outline hug the\npage, not a letterboxed portrait card); `0` (default) and `180` keep the edge-to-edge preview.",
              "attribute": "rotation",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "selected",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the thumbnail is selected. The parent owns the selection set; this only reflects the state.",
              "attribute": "selected",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the thumbnail: it is not focusable and does not emit activation events.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "tabIndex",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The host's tab order. Defaults to focusable (`0`); a roving-focus parent (e.g. a document-viewer\nrail) sets it per item. Wrapped in `@property` so it reflects (incl. SSR) and framework wrappers\npass it through — same pattern as `ed-tab`.",
              "attribute": "tabIndex",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "hasError",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "tabIndexBeforeDisabled",
              "type": {
                "text": "number | undefined"
              },
              "privacy": "private",
              "description": "The tab stop to return to once `disabled` is lifted; `undefined` while the thumbnail is enabled."
            },
            {
              "kind": "field",
              "name": "isEmpty",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "handleKeyDown",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "handleClick",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "handleImageError",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "Emitted when the thumbnail is activated by pointer or keyboard (Enter/Space). Use it to drive selection.",
              "name": "click",
              "reactName": "onClick",
              "eventName": "ClickEvent"
            }
          ],
          "attributes": [
            {
              "name": "src",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The preview image URL. When absent (or it fails to load), the empty placeholder is shown.",
              "fieldName": "src"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The caption shown below the preview (e.g. a page number). Also used as the image's alt text and accessible name.",
              "fieldName": "label"
            },
            {
              "name": "rotation",
              "type": {
                "text": "0 | 90 | 180 | 270"
              },
              "default": "0",
              "description": "Clockwise rotation of the preview image, in degrees. `90` and `270` transpose the card to\nlandscape and fill it with the rotated page (so the selection ring and focus outline hug the\npage, not a letterboxed portrait card); `0` (default) and `180` keep the edge-to-edge preview.",
              "fieldName": "rotation"
            },
            {
              "name": "selected",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the thumbnail is selected. The parent owns the selection set; this only reflects the state.",
              "fieldName": "selected"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the thumbnail: it is not focusable and does not emit activation events.",
              "fieldName": "disabled"
            },
            {
              "name": "tabIndex",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The host's tab order. Defaults to focusable (`0`); a roving-focus parent (e.g. a document-viewer\nrail) sets it per item. Wrapped in `@property` so it reflects (incl. SSR) and framework wrappers\npass it through — same pattern as `ed-tab`.",
              "fieldName": "tabIndex"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "Applied when there is no preview image (no `src`, or the image failed to load).",
              "name": "empty"
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "A selectable thumbnail of a document page — an A4 preview image with a caption.",
          "jsDoc": "/**\n * @summary A selectable thumbnail of a document page — an A4 preview image with a caption.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/page-thumbnail\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-icon\n *\n * @slot - The caption shown below the preview. Alternatively, use the `label` attribute.\n * @slot overlay - Content layered over the preview, e.g. a page-number badge, a selection checkbox, or action buttons.\n *\n * @event click - Emitted when the thumbnail is activated by pointer or keyboard (Enter/Space). Use it to drive selection.\n *\n * @csspart card - The A4 preview box that holds the image or the empty placeholder.\n * @csspart image - The preview `<img>` element.\n * @csspart empty-icon - The `page_crossed` icon shown when there is no preview.\n * @csspart label - The caption below the preview.\n *\n * @cssstate empty - Applied when there is no preview image (no `src`, or the image failed to load).\n *\n * @cssproperty [--ed-page-thumbnail-width=4.125rem] - The width of the preview card. Height follows the A4 aspect ratio.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/page-thumbnail",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-page-thumbnail",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdPageThumbnail",
            "module": "components/page-thumbnail/page-thumbnail.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-page-thumbnail",
          "declaration": {
            "name": "EdPageThumbnail",
            "module": "components/page-thumbnail/page-thumbnail.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/style-props.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "styleProps",
          "description": "Sets style properties on an element through CSSOM, for a `style` attribute binding.\n\nUse instead of Lit's `styleMap` wherever the value is per-item or depends on which branch of a\ntemplate rendered — cases a `setProperty()` call in `update()` cannot address without\nduplicating the render logic. For a single element whose value follows component state, prefer\nthat `setProperty()` call: it needs no directive.\n\n`styleMap` returns a CSS string on its first update and only switches to `setProperty()`\nafterwards, so it writes a real `style` attribute exactly once per element. Under a strict\n`style-src` that write is rejected and the styles never apply. This directive takes the CSSOM\npath on every update and always returns `noChange`, so no attribute is ever written.\n\nNames go to setProperty() verbatim, so write them as CSS: `clip-path`, not `clipPath`. A\ncamelCase name is a silent no-op."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "styleProps",
          "declaration": {
            "name": "styleProps",
            "module": "internal/style-props.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/drag.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Attaches the necessary events to make an element draggable.\n\nThis by itself will not make the element draggable, but it provides the events and callbacks necessary to facilitate\ndragging. Use the `clientX` and `clientY` arguments of each callback to update the UI as desired when dragging.\n\nDrag functionality will be enabled as soon as the constructor is called. A `start()` and `stop()` method can be used\nto start and stop it, if needed.\n\nUse `touch-action: none` on touch devices if scrolling occurs while dragging. Avoid preventing the touchstart event!",
          "name": "DraggableElement",
          "members": [
            {
              "kind": "field",
              "name": "element",
              "type": {
                "text": "Element"
              },
              "privacy": "private",
              "default": "el"
            },
            {
              "kind": "field",
              "name": "isActive",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "isDragging",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "options",
              "type": {
                "text": "DraggableElementOptions"
              },
              "privacy": "private",
              "default": "{ start: () => undefined, stop: () => undefined, move: () => undefined, ...options }"
            },
            {
              "kind": "field",
              "name": "handleDragStart",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDragStop",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDragMove",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "start",
              "privacy": "public",
              "description": "Start listening to drags."
            },
            {
              "kind": "method",
              "name": "stop",
              "privacy": "public",
              "description": "Stop listening to drags."
            },
            {
              "kind": "method",
              "name": "toggle",
              "privacy": "public",
              "parameters": [
                {
                  "name": "isActive",
                  "optional": true,
                  "type": {
                    "text": "boolean"
                  }
                }
              ],
              "description": "Starts or stops the drag listeners."
            }
          ],
          "jsDoc": "/**\n * Attaches the necessary events to make an element draggable.\n *\n * This by itself will not make the element draggable, but it provides the events and callbacks necessary to facilitate\n * dragging. Use the `clientX` and `clientY` arguments of each callback to update the UI as desired when dragging.\n *\n * Drag functionality will be enabled as soon as the constructor is called. A `start()` and `stop()` method can be used\n * to start and stop it, if needed.\n *\n * Use `touch-action: none` on touch devices if scrolling occurs while dragging. Avoid preventing the touchstart event!\n *\n * @usage\n *\n * const draggable = new DraggableElement(element, {\n *   start: (clientX, clientY) => { ... },\n *   move: (clientX, clientY) => { ... },\n *   stop: (clientX, clientY) => { ... }\n * });\n */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "DraggableElement",
          "declaration": {
            "name": "DraggableElement",
            "module": "internal/drag.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/range-value.js",
      "declarations": [
        {
          "kind": "function",
          "name": "rangeMidpoint",
          "return": {
            "type": {
              "text": "number"
            }
          },
          "parameters": [
            {
              "name": "bounds",
              "type": {
                "text": "RangeBounds"
              }
            }
          ],
          "description": "The value a range falls back to when it has none it can use: the middle of its own range."
        },
        {
          "kind": "function",
          "name": "snapToStep",
          "return": {
            "type": {
              "text": "number"
            }
          },
          "parameters": [
            {
              "name": "value",
              "type": {
                "text": "number"
              }
            },
            {
              "name": "bounds",
              "type": {
                "text": "RangeBounds"
              }
            }
          ],
          "description": "The nearest value on the step grid, counted from `min`. Ties go up, which is what produces `\"6\"`\nfor min 1 / max 10 / step 1 — the midpoint 5.5 sits exactly between two steps."
        },
        {
          "kind": "function",
          "name": "sanitizeRangeValue",
          "return": {
            "type": {
              "text": "string"
            }
          },
          "parameters": [
            {
              "name": "raw",
              "type": {
                "text": "string"
              }
            },
            {
              "name": "bounds",
              "type": {
                "text": "RangeBounds"
              }
            }
          ],
          "description": "A range's effective value for any input at all, as a string — the type a native range reports.\nClamps into the bounds, snaps to the grid, and falls back to the midpoint for anything unusable."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "rangeMidpoint",
          "declaration": {
            "name": "rangeMidpoint",
            "module": "internal/range-value.js"
          }
        },
        {
          "kind": "js",
          "name": "snapToStep",
          "declaration": {
            "name": "snapToStep",
            "module": "internal/range-value.js"
          }
        },
        {
          "kind": "js",
          "name": "sanitizeRangeValue",
          "declaration": {
            "name": "sanitizeRangeValue",
            "module": "internal/range-value.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/slider/slider.js",
      "declarations": [
        {
          "kind": "class",
          "description": "<ed-slider>",
          "name": "EdSlider",
          "cssProperties": [
            {
              "description": "The height or width of the slider's track.",
              "name": "--ed-slider-track-size",
              "default": "0.5em"
            },
            {
              "description": "The size of each individual marker.",
              "name": "--ed-slider-marker-size",
              "default": "0.1875em"
            },
            {
              "description": "The size of the thumb.",
              "name": "--ed-slider-thumb-size",
              "default": "1.24em"
            }
          ],
          "cssParts": [
            {
              "description": "The element that contains the slider's label.",
              "name": "label"
            },
            {
              "description": "The state message: an error, a warning, or the AI note.",
              "name": "message"
            },
            {
              "description": "The element that contains the slider's description.",
              "name": "hint"
            },
            {
              "description": "The focusable element with `role=\"slider\"`. Contains the track and reference slot.",
              "name": "slider"
            },
            {
              "description": "The slider's track.",
              "name": "track"
            },
            {
              "description": "The colored indicator that shows from the start of the slider to the current value.",
              "name": "indicator"
            },
            {
              "description": "The container that holds all the markers when `with-markers` is used.",
              "name": "markers"
            },
            {
              "description": "The individual markers that are shown when `with-markers` is used.",
              "name": "marker"
            },
            {
              "description": "The container that holds references that get slotted in.",
              "name": "references"
            },
            {
              "description": "The slider's thumb.",
              "name": "thumb"
            },
            {
              "description": "The min value thumb in a range slider.",
              "name": "thumb-min"
            },
            {
              "description": "The max value thumb in a range slider.",
              "name": "thumb-max"
            },
            {
              "description": "The tooltip, a `<ed-tooltip>` element.",
              "name": "tooltip"
            },
            {
              "description": "The tooltip's exported `popup` part, the element that positions it.",
              "name": "tooltip__popup"
            },
            {
              "description": "The tooltip's exported `panel` part, its visible surface.",
              "name": "tooltip__panel"
            },
            {
              "description": "The tooltip's exported arrow.",
              "name": "tooltip__arrow"
            }
          ],
          "slots": [
            {
              "description": "The slider label. Alternatively, you can use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "Text that describes how to use the input. Alternatively, you can use the `hint` attribute. instead.",
              "name": "hint"
            },
            {
              "description": "One or more reference labels to show visually below the slider.",
              "name": "reference"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "observeSlots",
              "type": {
                "text": "boolean"
              },
              "static": true,
              "default": "true"
            },
            {
              "kind": "field",
              "name": "draggableTrack",
              "type": {
                "text": "DraggableElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "draggableThumbMin",
              "type": {
                "text": "DraggableElement | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | { element: Element, isActive: boolean, isDragging: boolean, options: { start: {  }, move: {  }, stop: {  } }, handleDragStart: {  }, handleDragStop: {  }, handleDragMove: {  }, start: {  }, stop: {  }, toggle: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "draggableThumbMax",
              "type": {
                "text": "DraggableElement | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | { element: Element, isActive: boolean, isDragging: boolean, options: { start: {  }, move: {  }, stop: {  } }, handleDragStart: {  }, handleDragStop: {  }, handleDragMove: {  }, start: {  }, stop: {  }, toggle: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'label')"
            },
            {
              "kind": "field",
              "name": "trackBoundingClientRect",
              "type": {
                "text": "DOMRect"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "valueWhenDraggingStarted",
              "type": {
                "text": "number | undefined | null"
              },
              "privacy": "private",
              "parsedType": {
                "text": "null | number | undefined"
              }
            },
            {
              "kind": "field",
              "name": "activeThumb",
              "type": {
                "text": "'min' | 'max' | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | 'min' | 'max'"
              }
            },
            {
              "kind": "field",
              "name": "lastTrackPosition",
              "type": {
                "text": "number | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | number"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Override validation target to point to the focusable element",
              "readonly": true,
              "parsedType": {
                "text": "HTMLElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "slider",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "thumb",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "thumbMin",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "thumbMax",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "track",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "tooltip",
              "type": {
                "text": "EdTooltip"
              }
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The slider's label. If you need to provide HTML in the label, use the `label` slot instead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "ariaLabel",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The slider's accessible name for when no visible label is set. Mirrored onto the internal\n`role=\"slider\"` node (and folded into the range-thumb names) — an aria-label left on the\nhost alone would sit on a role-less element and be ignored by assistive tech.",
              "attribute": "aria-label",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the slider. This will be submitted with the form as a name/value pair.",
              "attribute": "name",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "minValue",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The minimum value of a range selection. Used only when range attribute is set.",
              "attribute": "min-value"
            },
            {
              "kind": "field",
              "name": "maxValue",
              "type": {
                "text": "number"
              },
              "default": "50",
              "description": "The maximum value of a range selection. Used only when range attribute is set.",
              "attribute": "max-value"
            },
            {
              "kind": "field",
              "name": "defaultValue",
              "type": {
                "text": "string"
              },
              "description": "The default value used for form reset. The raw attribute text, as on a native input.",
              "attribute": "value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "_value",
              "type": {
                "text": "string | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The current value, submitted as a name/value pair with form data — a **string**, as a native\n`<input type=\"range\">` reports it. valueAsNumber is the numeric door.\n\nA range is never empty: anything unusable becomes the midpoint of the range, and every value is\nsnapped to the step grid counted from `min` and clamped into the bounds. See\n`internal/range-value.ts` for the measured native rules this follows."
            },
            {
              "kind": "field",
              "name": "valueAsNumber",
              "type": {
                "text": "number"
              },
              "description": "The current value as a number. Reading never yields `NaN` — a range always has a value."
            },
            {
              "kind": "field",
              "name": "range",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Converts the slider to a range slider with two thumbs.",
              "attribute": "range",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "isRange",
              "type": {
                "text": "boolean"
              },
              "description": "Get if this is a range slider",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the slider a read-only field.",
              "attribute": "readonly",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'horizontal'",
              "description": "The orientation of the slider.",
              "attribute": "orientation",
              "reflects": true,
              "parsedType": {
                "text": "'horizontal' | 'vertical'"
              }
            },
            {
              "kind": "field",
              "name": "indicatorOffset",
              "type": {
                "text": "number"
              },
              "description": "The starting value from which to draw the slider's fill, which is based on its current value.",
              "attribute": "indicator-offset"
            },
            {
              "kind": "field",
              "name": "min",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The minimum value allowed.",
              "attribute": "min"
            },
            {
              "kind": "field",
              "name": "max",
              "type": {
                "text": "number"
              },
              "default": "100",
              "description": "The maximum value allowed.",
              "attribute": "max"
            },
            {
              "kind": "field",
              "name": "_step",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "1"
            },
            {
              "kind": "field",
              "name": "step",
              "type": {
                "text": "number"
              },
              "description": "The granularity the value must adhere to when incrementing and decrementing.",
              "attribute": "step"
            },
            {
              "kind": "field",
              "name": "autofocus",
              "type": {
                "text": "boolean"
              },
              "description": "Tells the browser to focus the slider when the page loads or a dialog is shown.",
              "attribute": "autofocus"
            },
            {
              "kind": "field",
              "name": "tooltipDistance",
              "type": {
                "text": "number"
              },
              "default": "8",
              "description": "The distance of the tooltip from the slider's thumb.",
              "attribute": "tooltip-distance"
            },
            {
              "kind": "field",
              "name": "tooltipPlacement",
              "type": {
                "text": "'top' | 'right' | 'bottom' | 'left'"
              },
              "default": "'top'",
              "description": "The placement of the tooltip in reference to the slider's thumb.",
              "attribute": "tooltip-placement",
              "reflects": true,
              "parsedType": {
                "text": "'left' | 'right' | 'top' | 'bottom'"
              }
            },
            {
              "kind": "field",
              "name": "withMarkers",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws markers at each step along the slider. One marker is rendered per step, so the count\nfollows from `min`, `max` and `step` — a wide range with a fine step produces a lot of markers.\nUnlike a native range input, where every tick is an explicit `<option>`, that number is implicit\nhere, so keep it in mind when picking the three values.",
              "attribute": "with-markers"
            },
            {
              "kind": "field",
              "name": "withTooltip",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a tooltip above the thumb when the control has focus or is dragged.",
              "attribute": "with-tooltip"
            },
            {
              "kind": "field",
              "name": "withLabel",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "with-label"
            },
            {
              "kind": "field",
              "name": "withHint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "with-hint"
            },
            {
              "kind": "field",
              "name": "valueFormatter",
              "type": {
                "text": "(value: number) => string"
              },
              "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."
            },
            {
              "kind": "method",
              "name": "formResetCallback"
            },
            {
              "kind": "method",
              "name": "clampAndRoundToStep",
              "privacy": "private",
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Clamps a number to min/max on the step grid.\n\nThe grid is counted **from `min`**, which is what a native range does: with `min=\"10\" step=\"3\"`\nthe valid values are 10, 13, 16, 19 — not 12, 15, 18 as counting from zero would give."
            },
            {
              "kind": "method",
              "name": "getPercentageFromValue",
              "privacy": "private",
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Given a value, returns its percentage within a range of min/max."
            },
            {
              "kind": "method",
              "name": "getValueFromCoordinates",
              "privacy": "private",
              "parameters": [
                {
                  "name": "x",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "y",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Converts coordinates to slider value"
            },
            {
              "kind": "method",
              "name": "handleBlur",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleFocus",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "FocusEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleLabelPointerDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "PointerEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "setValueFromCoordinates",
              "privacy": "private",
              "parameters": [
                {
                  "name": "x",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "y",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "setThumbValueFromCoordinates",
              "privacy": "private",
              "parameters": [
                {
                  "name": "x",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "y",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "thumb",
                  "type": {
                    "text": "'min' | 'max'"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "showTooltip",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "hideTooltip",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "showRangeTooltips",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "hideRangeTooltips",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "updateFormValue",
              "privacy": "private",
              "description": "Updates the form value submission for range sliders"
            },
            {
              "kind": "method",
              "name": "focus",
              "privacy": "public",
              "description": "Sets focus to the slider."
            },
            {
              "kind": "method",
              "name": "blur",
              "privacy": "public",
              "description": "Removes focus from the slider."
            },
            {
              "kind": "method",
              "name": "stepDown",
              "privacy": "public",
              "description": "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."
            },
            {
              "kind": "method",
              "name": "stepUp",
              "privacy": "public",
              "description": "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."
            },
            {
              "kind": "field",
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "attribute": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "attribute": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "attribute": "ai",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "attribute": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validators",
              "type": {
                "text": "Validator[]"
              },
              "default": "[]",
              "static": true,
              "description": "Validators are static because they have `observedAttributes`, essentially attributes to \"watch\"\nfor changes. Whenever these attributes change, we want to be notified and update the validator.",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#fieldsetDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set by `formDisabledCallback`, i.e. an ancestor `<fieldset>`. Never written by a consumer.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#ownDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The disabled state this element was given directly, via its property or its attribute.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "attribute": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOn",
              "type": {
                "text": "string[]"
              },
              "default": "['input']",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOnMode",
              "type": {
                "text": "'combined' | 'separated' | string"
              },
              "default": "'combined'",
              "parsedType": {
                "text": "string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "text": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "parsedType": {
                "text": "HTMLElement & { value: unknown } | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "valueHasChanged",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasInteracted",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_customValidityMessage",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_isCheckingValidity",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set while `checkValidity()` is executing so the `invalid` event handler can distinguish\na programmatic check (no UI side-effects per spec) from `reportValidity()` / native form\nsubmission (which should surface the error UI and focus the first invalid control).",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emittedEvents",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "states",
              "type": {
                "text": "CustomStateSet"
              },
              "parsedType": {
                "text": "any"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleSubmitOnEnter",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleClearOnEscape",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emitInvalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleInteraction",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "labels",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getForm",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "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": {
                "text": "HTMLFormElement | null"
              },
              "parsedType": {
                "text": "null | HTMLFormElement"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validity",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "willValidate",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationMessage",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "checkValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValidity",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setValidity>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "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.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setFormValue>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "allValidators",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "resetValidity",
              "description": "Reset validity is a way of removing manual custom errors and native validation.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "name": "change",
              "type": {
                "text": "Event"
              },
              "description": "Emitted when an alteration to the control's value is committed by the user.",
              "reactName": "onChange",
              "eventName": "ChangeEvent"
            },
            {
              "name": "blur",
              "type": {
                "text": "FocusEvent"
              },
              "description": "Emitted when the control loses focus.",
              "reactName": "onBlur",
              "eventName": "BlurEvent"
            },
            {
              "name": "focus",
              "type": {
                "text": "FocusEvent"
              },
              "description": "Emitted when the control gains focus.",
              "reactName": "onFocus",
              "eventName": "FocusEvent"
            },
            {
              "name": "input",
              "type": {
                "text": "InputEvent"
              },
              "description": "Emitted when the control receives input.",
              "reactName": "onInput",
              "eventName": "InputEvent"
            },
            {
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied.",
              "name": "ed-invalid",
              "reactName": "onEdInvalid",
              "eventName": "EdInvalidEvent"
            }
          ],
          "attributes": [
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The slider's label. If you need to provide HTML in the label, use the `label` slot instead.",
              "fieldName": "label"
            },
            {
              "name": "aria-label",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The slider's accessible name for when no visible label is set. Mirrored onto the internal\n`role=\"slider\"` node (and folded into the range-thumb names) — an aria-label left on the\nhost alone would sit on a role-less element and be ignored by assistive tech.",
              "fieldName": "ariaLabel",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the slider. This will be submitted with the form as a name/value pair.",
              "fieldName": "name",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "min-value",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The minimum value of a range selection. Used only when range attribute is set.",
              "fieldName": "minValue"
            },
            {
              "name": "max-value",
              "type": {
                "text": "number"
              },
              "default": "50",
              "description": "The maximum value of a range selection. Used only when range attribute is set.",
              "fieldName": "maxValue"
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The default value used for form reset. The raw attribute text, as on a native input.",
              "fieldName": "defaultValue"
            },
            {
              "name": "range",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Converts the slider to a range slider with two thumbs.",
              "fieldName": "range"
            },
            {
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the slider a read-only field.",
              "fieldName": "readonly"
            },
            {
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'horizontal'",
              "description": "The orientation of the slider.",
              "fieldName": "orientation",
              "parsedType": {
                "text": "'horizontal' | 'vertical'"
              }
            },
            {
              "name": "indicator-offset",
              "type": {
                "text": "number"
              },
              "description": "The starting value from which to draw the slider's fill, which is based on its current value.",
              "fieldName": "indicatorOffset"
            },
            {
              "name": "min",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The minimum value allowed.",
              "fieldName": "min"
            },
            {
              "name": "max",
              "type": {
                "text": "number"
              },
              "default": "100",
              "description": "The maximum value allowed.",
              "fieldName": "max"
            },
            {
              "name": "step",
              "type": {
                "text": "number"
              },
              "description": "The granularity the value must adhere to when incrementing and decrementing.",
              "fieldName": "step"
            },
            {
              "name": "autofocus",
              "type": {
                "text": "boolean"
              },
              "description": "Tells the browser to focus the slider when the page loads or a dialog is shown.",
              "fieldName": "autofocus"
            },
            {
              "name": "tooltip-distance",
              "type": {
                "text": "number"
              },
              "default": "8",
              "description": "The distance of the tooltip from the slider's thumb.",
              "fieldName": "tooltipDistance"
            },
            {
              "name": "tooltip-placement",
              "type": {
                "text": "'top' | 'right' | 'bottom' | 'left'"
              },
              "default": "'top'",
              "description": "The placement of the tooltip in reference to the slider's thumb.",
              "fieldName": "tooltipPlacement",
              "parsedType": {
                "text": "'left' | 'right' | 'top' | 'bottom'"
              }
            },
            {
              "name": "with-markers",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws markers at each step along the slider. One marker is rendered per step, so the count\nfollows from `min`, `max` and `step` — a wide range with a fine step produces a lot of markers.\nUnlike a native range input, where every tick is an explicit `<option>`, that number is implicit\nhere, so keep it in mind when picking the three values.",
              "fieldName": "withMarkers"
            },
            {
              "name": "with-tooltip",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a tooltip above the thumb when the control has focus or is dragged.",
              "fieldName": "withTooltip"
            },
            {
              "name": "with-label",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "withLabel"
            },
            {
              "name": "with-hint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "withHint"
            },
            {
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "fieldName": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "fieldName": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "fieldName": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "fieldName": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "fieldName": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "Applied when the slider is disabled.",
              "name": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Applied when the slider is being dragged.",
              "name": "dragging"
            },
            {
              "description": "Applied when the slider has focus.",
              "name": "focused"
            },
            {
              "description": "Applied when the slider is valid and the user has sufficiently interacted with it.",
              "name": "user-valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Applied when the slider is invalid and the user has sufficiently interacted with it.",
              "name": "user-invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is required.",
              "name": "required",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is not required.",
              "name": "optional",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value fails constraint validation, whether or not the user has touched the control yet.",
              "name": "invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value passes constraint validation.",
              "name": "valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The user has interacted with the control.",
              "name": "dirty",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `error` property is set, or the control is `user-invalid`.",
              "name": "error",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `warning` property is set.",
              "name": "warning",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `ai` property is set and the user has not interacted with the control yet.",
              "name": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdFormAssociatedElement",
            "module": "/src/internal/ed-form-associated-element.js"
          },
          "summary": "Lets the user choose a value, or a range with two thumbs, by dragging a handle along a bounded scale.",
          "jsDoc": "/**\n * <ed-slider>\n *\n * @summary Lets the user choose a value, or a range with two thumbs, by dragging a handle along a bounded scale.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/slider\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-tooltip\n *\n * @slot label - The slider label. Alternatively, you can use the `label` attribute.\n * @slot hint - Text that describes how to use the input. Alternatively, you can use the `hint` attribute.\n *  instead.\n * @slot reference - One or more reference labels to show visually below the slider.\n *\n * @event blur - Emitted when the control loses focus.\n * @event change - Emitted when an alteration to the control's value is committed by the user.\n * @event focus - Emitted when the control gains focus.\n * @event input - Emitted when the control receives input.\n * @event ed-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n *\n * @csspart label - The element that contains the slider's label.\n * @csspart message - The state message: an error, a warning, or the AI note.\n * @csspart hint - The element that contains the slider's description.\n * @csspart slider - The focusable element with `role=\"slider\"`. Contains the track and reference slot.\n * @csspart track - The slider's track.\n * @csspart indicator - The colored indicator that shows from the start of the slider to the current value.\n * @csspart markers - The container that holds all the markers when `with-markers` is used.\n * @csspart marker - The individual markers that are shown when `with-markers` is used.\n * @csspart references - The container that holds references that get slotted in.\n * @csspart thumb - The slider's thumb.\n * @csspart thumb-min - The min value thumb in a range slider.\n * @csspart thumb-max - The max value thumb in a range slider.\n * @csspart tooltip - The tooltip, a `<ed-tooltip>` element.\n * @csspart tooltip__popup - The tooltip's exported `popup` part, the element that positions it.\n * @csspart tooltip__panel - The tooltip's exported `panel` part, its visible surface.\n * @csspart tooltip__arrow - The tooltip's exported arrow.\n *\n * @cssstate disabled - Applied when the slider is disabled.\n * @cssstate dragging - Applied when the slider is being dragged.\n * @cssstate focused - Applied when the slider has focus.\n * @cssstate user-valid - Applied when the slider is valid and the user has sufficiently interacted with it.\n * @cssstate user-invalid - Applied when the slider is invalid and the user has sufficiently interacted with it.\n *\n * @cssproperty [--ed-slider-track-size=0.5em] - The height or width of the slider's track.\n * @cssproperty [--ed-slider-marker-size=0.1875em] - The size of each individual marker.\n * @cssproperty [--ed-slider-thumb-size=1.24em] - The size of the thumb.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/slider",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-tooltip"
          ],
          "tagName": "ed-slider",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdSlider",
            "module": "components/slider/slider.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-slider",
          "declaration": {
            "name": "EdSlider",
            "module": "components/slider/slider.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/document-viewer/document-viewer.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdDocumentViewer",
          "cssProperties": [
            {
              "description": "The width of the thumbnail rail.",
              "name": "--ed-document-viewer-rail-width",
              "default": "6rem"
            }
          ],
          "cssParts": [
            {
              "description": "The top toolbar.",
              "name": "toolbar"
            },
            {
              "description": "The page navigation group.",
              "name": "pagination"
            },
            {
              "description": "The zoom group: the two zoom buttons and the slider between them.",
              "name": "zoomer"
            },
            {
              "description": "Each toolbar icon button.",
              "name": "button"
            },
            {
              "description": "The container for the `actions` slot.",
              "name": "actions"
            },
            {
              "description": "The thumbnail rail (a listbox).",
              "name": "rail"
            },
            {
              "description": "Each page thumbnail (an `ed-page-thumbnail`).",
              "name": "thumbnail"
            },
            {
              "description": "The page render area.",
              "name": "canvas"
            },
            {
              "description": "A rendered page `<img>` (or the per-page error placeholder).",
              "name": "page"
            },
            {
              "description": "The load-error container.",
              "name": "error"
            }
          ],
          "slots": [
            {
              "description": "Extra buttons at the end of the toolbar (e.g. download, print).",
              "name": "actions"
            },
            {
              "description": "Overrides the localized message shown when the current page cannot be loaded.",
              "name": "error"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "pages",
              "type": {
                "text": "DocumentViewerPage[]"
              },
              "default": "[]",
              "description": "The pages to display. Each page provides a full-resolution `src` and, optionally, a `thumbnail`,\n`label`, and `rotation` (0/90/180/270, applied to both the canvas and the rail thumbnail)."
            },
            {
              "kind": "field",
              "name": "page",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "The current page, 1-based.",
              "attribute": "page",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "view",
              "type": {
                "text": "DocumentViewerView"
              },
              "default": "'single'",
              "description": "How the canvas lays out pages.",
              "attribute": "view",
              "reflects": true,
              "parsedType": {
                "text": "'single' | 'continuous'"
              }
            },
            {
              "kind": "field",
              "name": "zoom",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "The zoom factor relative to the fit-to-viewport size: `1` (100%) fits the whole page in the\ncanvas (as large as possible), and larger values zoom into it. Rescales as the canvas resizes.",
              "attribute": "zoom",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "fit",
              "type": {
                "text": "DocumentViewerFit"
              },
              "default": "null",
              "description": "The fit preset, or `null` while the user is in manual zoom.",
              "attribute": "fit",
              "reflects": true,
              "parsedType": {
                "text": "null | 'width' | 'height'"
              }
            },
            {
              "kind": "field",
              "name": "erroredPages",
              "privacy": "private",
              "default": "new Set<number>()"
            },
            {
              "kind": "field",
              "name": "naturalSizes",
              "type": {
                "text": "Record<number, { width: number; height: number }>"
              },
              "privacy": "private",
              "default": "{}",
              "description": "Natural pixel size per page index — scanned documents routinely mix page dimensions, so a\nsingle shared size would let every loaded page overwrite the scale baseline of the others.",
              "parsedType": {
                "text": "{  }"
              }
            },
            {
              "kind": "field",
              "name": "rotationOverrides",
              "type": {
                "text": "Record<number, DocumentViewerRotation>"
              },
              "privacy": "private",
              "default": "{}",
              "description": "Viewer-internal rotation per page index, set by the rotate buttons. The viewer applies it itself\nand never mutates the consumer's pages[].rotation; each change is reported via `ed-rotate` so a\nconsumer can persist it. Reset when `pages` changes.",
              "parsedType": {
                "text": "{  }"
              }
            },
            {
              "kind": "field",
              "name": "canvas",
              "type": {
                "text": "HTMLElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "canvasWidth",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "canvasHeight",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "focusActiveThumbnail",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "scrollingToPage",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "pageChangeFromScroll",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "scrollRaf",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "resizeObserver",
              "privacy": "private",
              "readonly": true,
              "default": "new ResizeObserver(() => { this.canvasWidth = this.canvas?.clientWidth ?? 0; this.canvasHeight = this.canvas?.clientHeight ?? 0; if (this.fit) this.applyFit(this.fit); // Zoom is relative to the contain scale, which depends on the canvas size — re-render to rescale. this.requestUpdate(); })"
            },
            {
              "kind": "field",
              "name": "total",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "hasPages",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "currentPage",
              "type": {
                "text": "DocumentViewerPage | undefined"
              },
              "privacy": "private",
              "readonly": true,
              "parsedType": {
                "text": "{ src: string, thumbnail?: string, label?: string, rotation?: 0 | 90 | 180 | 270 } | undefined"
              }
            },
            {
              "kind": "method",
              "name": "revealInRail",
              "privacy": "private",
              "parameters": [
                {
                  "name": "active",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "Brings a thumbnail into view inside the rail, the way `scrollIntoView({ block: 'nearest' })`\nwould — except that this touches only the rail's own scrollTop. `scrollIntoView` walks every\nancestor scroll container, so on a viewer that is not fully in view it scrolls the host\ndocument to the thumbnail as well."
            },
            {
              "kind": "method",
              "name": "observeCanvas",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "effectiveRotation",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "DocumentViewerRotation"
                }
              },
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "The rotation actually shown for a page: a viewer-internal override (the rotate buttons) wins over\nthe page's own rotation. Overrides never mutate pages[].rotation."
            },
            {
              "kind": "method",
              "name": "rotateCurrentPage",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "direction",
                  "type": {
                    "text": "1 | -1"
                  }
                }
              ],
              "description": "Rotates the current page 90 degrees within the viewer (pages[].rotation is left untouched) and\nreports the new rotation via `ed-rotate` so a consumer can persist it."
            },
            {
              "kind": "method",
              "name": "visualSize",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "{ width: number; height: number }"
                }
              },
              "parameters": [
                {
                  "name": "rotation",
                  "type": {
                    "text": "DocumentViewerRotation"
                  }
                },
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "A page's on-screen size for a given rotation (a 90/270 page presents its height as width)."
            },
            {
              "kind": "field",
              "name": "fitReference",
              "type": {
                "text": "{ width: number; height: number }"
              },
              "privacy": "private",
              "description": "The page footprint that zoom = 1 (100%) fits. Single mode fits the current page; continuous mode\nfits the largest footprint across all pages, so every page shares one render scale — fit and zoom\nstay consistent regardless of rotation mix, and scrolling (which moves the current page) never\nresizes pages.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "containScaleFor",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "size",
                  "type": {
                    "text": "{ width: number; height: number }"
                  }
                }
              ],
              "description": "Scale at which a footprint just fits the canvas."
            },
            {
              "kind": "field",
              "name": "renderScale",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "description": "The linear scale applied to every page; relative to fitReference, so 100% always fits it.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "applyFit",
              "privacy": "private",
              "parameters": [
                {
                  "name": "mode",
                  "type": {
                    "text": "DocumentViewerFit"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "scrollCanvasToPage",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "goToPage",
              "privacy": "private",
              "parameters": [
                {
                  "name": "next",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "setZoom",
              "privacy": "private",
              "parameters": [
                {
                  "name": "next",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "setFit",
              "privacy": "private",
              "parameters": [
                {
                  "name": "mode",
                  "type": {
                    "text": "Exclude<DocumentViewerFit, null>"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "setView",
              "privacy": "private",
              "parameters": [
                {
                  "name": "view",
                  "type": {
                    "text": "DocumentViewerView"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleCanvasScroll",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "syncPageFromScroll",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleSliderInput",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "handlePageError",
              "privacy": "private",
              "parameters": [
                {
                  "name": "number",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handlePageLoad",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "handleRailKeyDown",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "renderToolbarButton",
              "privacy": "private",
              "parameters": [
                {
                  "name": "icon",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "label",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "disabled",
                  "type": {
                    "text": "boolean"
                  }
                },
                {
                  "name": "onClick",
                  "type": {
                    "text": "() => void"
                  }
                },
                {
                  "name": "active",
                  "optional": true,
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderError",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderPage",
              "privacy": "private",
              "parameters": [
                {
                  "name": "page",
                  "type": {
                    "text": "DocumentViewerPage"
                  }
                },
                {
                  "name": "number",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "scale",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderCanvas",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ page: number }"
              },
              "description": "Emitted when the current page changes.",
              "name": "ed-page-change",
              "reactName": "onEdPageChange",
              "eventName": "EdPageChangeEvent"
            },
            {
              "type": {
                "text": "{ zoom: number }"
              },
              "description": "Emitted when the zoom factor changes.",
              "name": "ed-zoom-change",
              "reactName": "onEdZoomChange",
              "eventName": "EdZoomChangeEvent"
            },
            {
              "type": {
                "text": "{ view: 'single' | 'continuous' }"
              },
              "description": "Emitted when the view mode changes.",
              "name": "ed-view-change",
              "reactName": "onEdViewChange",
              "eventName": "EdViewChangeEvent"
            },
            {
              "type": {
                "text": "{ page: number, rotation: DocumentViewerRotation }"
              },
              "description": "Emitted when the user rotates the current page with the toolbar buttons. The viewer applies the rotation itself; a consumer may listen to persist it back into `pages`.",
              "name": "ed-rotate",
              "reactName": "onEdRotate",
              "eventName": "EdRotateEvent"
            }
          ],
          "attributes": [
            {
              "name": "page",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "The current page, 1-based.",
              "fieldName": "page"
            },
            {
              "name": "view",
              "type": {
                "text": "DocumentViewerView"
              },
              "default": "'single'",
              "description": "How the canvas lays out pages.",
              "fieldName": "view",
              "parsedType": {
                "text": "'single' | 'continuous'"
              }
            },
            {
              "name": "zoom",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "The zoom factor relative to the fit-to-viewport size: `1` (100%) fits the whole page in the\ncanvas (as large as possible), and larger values zoom into it. Rescales as the canvas resizes.",
              "fieldName": "zoom"
            },
            {
              "name": "fit",
              "type": {
                "text": "DocumentViewerFit"
              },
              "default": "null",
              "description": "The fit preset, or `null` while the user is in manual zoom.",
              "fieldName": "fit",
              "parsedType": {
                "text": "null | 'width' | 'height'"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "A document viewer — a dark toolbar (pagination, view-mode, zoom), a thumbnail rail, and a page canvas. The consumer supplies rendered page images.",
          "jsDoc": "/**\n * @summary A document viewer — a dark toolbar (pagination, view-mode, zoom), a thumbnail rail, and a page canvas. The consumer supplies rendered page images.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/document-viewer\n * @status experimental\n * @level organism\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-icon\n * @dependency ed-page-thumbnail\n * @dependency ed-slider\n * @dependency ed-tooltip\n *\n * @slot actions - Extra buttons at the end of the toolbar (e.g. download, print).\n * @slot error - Overrides the localized message shown when the current page cannot be loaded.\n *\n * @event {{ page: number }} ed-page-change - Emitted when the current page changes.\n * @event {{ zoom: number }} ed-zoom-change - Emitted when the zoom factor changes.\n * @event {{ view: 'single' | 'continuous' }} ed-view-change - Emitted when the view mode changes.\n * @event {{ page: number, rotation: DocumentViewerRotation }} ed-rotate - Emitted when the user rotates the current page with the toolbar buttons. The\n *        viewer applies the rotation itself; a consumer may listen to persist it back into `pages`.\n *\n * @csspart toolbar - The top toolbar.\n * @csspart pagination - The page navigation group.\n * @csspart zoomer - The zoom group: the two zoom buttons and the slider between them.\n * @csspart button - Each toolbar icon button.\n * @csspart actions - The container for the `actions` slot.\n * @csspart rail - The thumbnail rail (a listbox).\n * @csspart thumbnail - Each page thumbnail (an `ed-page-thumbnail`).\n * @csspart canvas - The page render area.\n * @csspart page - A rendered page `<img>` (or the per-page error placeholder).\n * @csspart error - The load-error container.\n *\n * @cssproperty [--ed-document-viewer-rail-width=6rem] - The width of the thumbnail rail.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/document-viewer",
          "status": "experimental",
          "level": "organism",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-icon",
            "ed-page-thumbnail",
            "ed-slider",
            "ed-tooltip"
          ],
          "tagName": "ed-document-viewer",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdDocumentViewer",
            "module": "components/document-viewer/document-viewer.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-document-viewer",
          "declaration": {
            "name": "EdDocumentViewer",
            "module": "components/document-viewer/document-viewer.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/file-picker.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Reactive controller encapsulating file-selection logic shared by `ed-upload` and\n`ed-file-input`: drag & drop, `accept` matching, size/count limits, deduplication, and the\naccepted/rejected lists. It owns no upload/transport concerns — hosts that upload (e.g.\n`ed-upload`) layer that on top, keyed by `PickedFile.name`.",
          "name": "FilePickerController",
          "members": [
            {
              "kind": "field",
              "name": "files",
              "type": {
                "text": "PickedFile[]"
              },
              "default": "[]",
              "description": "The currently accepted files."
            },
            {
              "kind": "field",
              "name": "rejected",
              "type": {
                "text": "Array<PickedFile & { reason: RejectReason }>"
              },
              "default": "[]",
              "description": "Content-rejected files (`type` / `too-large` / `total-exceeded`), kept as persistent rows so\nthe host can render why they failed. List-state rejections (`duplicate` / `too-many`) never\nappear here — see RejectReason."
            },
            {
              "kind": "field",
              "name": "dragging",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether a drag is currently over the drop target."
            },
            {
              "kind": "method",
              "name": "hostDisconnected",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "ext",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "isAccepted",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "File"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "reject",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "File"
                  }
                },
                {
                  "name": "reason",
                  "type": {
                    "text": "RejectReason"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "addFiles",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "list",
                  "type": {
                    "text": "FileList | File[]"
                  }
                }
              ],
              "description": "Runs a `FileList`/`File[]` through validation, appending survivors to `files`."
            },
            {
              "kind": "method",
              "name": "removeFile",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Removes a file from the selection, or dismisses a rejected row."
            },
            {
              "kind": "method",
              "name": "clear",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Clears the entire selection, accepted and rejected alike."
            },
            {
              "kind": "method",
              "name": "setFiles",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "files",
                  "type": {
                    "text": "File[]"
                  }
                }
              ],
              "description": "Replaces `files` directly from an external `File[]` — no `accept`/size/deduplication validation, no\npersistent rejected rows for the new list. For mirroring a host's externally assigned value\n(e.g. `el.value = […]`, form reset) into the visible list, as opposed to `addFiles`, which is\nfor a real user selection (dialog/drag & drop). Deliberately does **not** call `onChange`: the\nhost is the one setting `files` here, so it already knows about the change and is responsible\nfor deciding whether that warrants its own public event."
            },
            {
              "kind": "method",
              "name": "handleDragOver",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "DragEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDragLeave",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "DragEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDrop",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "DragEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleInputChange",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "Event"
                  }
                }
              ],
              "description": "Reads `input.files`, then resets `input.value` so the same file can be re-selected."
            }
          ],
          "jsDoc": "/**\n * Reactive controller encapsulating file-selection logic shared by `ed-upload` and\n * `ed-file-input`: drag & drop, `accept` matching, size/count limits, deduplication, and the\n * accepted/rejected lists. It owns no upload/transport concerns — hosts that upload (e.g.\n * `ed-upload`) layer that on top, keyed by `PickedFile.name`.\n */"
        },
        {
          "kind": "function",
          "name": "formatFileSize",
          "return": {
            "type": {
              "text": "string"
            }
          },
          "parameters": [
            {
              "name": "bytes",
              "type": {
                "text": "number"
              }
            },
            {
              "name": "localize",
              "type": {
                "text": "{ number(value: number, options?: Intl.NumberFormatOptions): string }"
              }
            }
          ],
          "description": "A file's size as a file row shows it: counted in 1024s, as the MB limits above are, with the number\nin the page language. A file that is not empty never reads 0 KB."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "FilePickerController",
          "declaration": {
            "name": "FilePickerController",
            "module": "internal/file-picker.js"
          }
        },
        {
          "kind": "js",
          "name": "formatFileSize",
          "declaration": {
            "name": "formatFileSize",
            "module": "internal/file-picker.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/file-input/file-input.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdFileInput",
          "cssParts": [
            {
              "description": "The label.",
              "name": "label"
            },
            {
              "description": "Alias for the label element.",
              "name": "form-control-label"
            },
            {
              "description": "The state message: an error, a warning, or the AI note.",
              "name": "message"
            },
            {
              "description": "The hint's wrapper.",
              "name": "hint"
            },
            {
              "description": "The component wrapper.",
              "name": "base"
            },
            {
              "description": "The drag & drop area.",
              "name": "dropzone"
            },
            {
              "description": "The file list.",
              "name": "list"
            },
            {
              "description": "A single file row.",
              "name": "file"
            },
            {
              "description": "A file row's name.",
              "name": "file-name"
            },
            {
              "description": "A file row's size.",
              "name": "file-size"
            },
            {
              "description": "A file row's action buttons.",
              "name": "file-actions"
            },
            {
              "description": "A rejected row's reason text.",
              "name": "file-reason"
            }
          ],
          "slots": [
            {
              "description": "The file input's label. Alternatively, you can use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "Text that describes how to use the file input. Alternatively, you can use the `hint` attribute.",
              "name": "hint"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "validators",
              "type": {
                "text": "Validator[]"
              },
              "default": "[]",
              "static": true,
              "description": "Validators are static because they have `observedAttributes`, essentially attributes to \"watch\"\nfor changes. Whenever these attributes change, we want to be notified and update the validator.",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOn",
              "type": {
                "text": "string[]"
              },
              "default": "[]",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'label')"
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "text": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "parsedType": {
                "text": "HTMLElement & { value: unknown } | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "group",
              "type": {
                "text": "HTMLElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "trigger",
              "type": {
                "text": "HTMLElement | null"
              },
              "privacy": "private",
              "parsedType": {
                "text": "null | HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Anchor validation state on the labelled group, not on the native input — that one is\n`aria-hidden`, so `aria-invalid` written there reaches nobody.",
              "readonly": true,
              "parsedType": {
                "text": "HTMLElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "multiple",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allow selecting/dropping more than one file. Mirrors the native input's `multiple`.",
              "attribute": "multiple",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "accept",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Comma-separated list of accepted types (extensions and/or MIME types), like the native `accept`.",
              "attribute": "accept"
            },
            {
              "kind": "field",
              "name": "maxFiles",
              "type": {
                "text": "number | null"
              },
              "default": "null",
              "description": "Maximum number of files (multiple mode only).",
              "attribute": "max-files",
              "parsedType": {
                "text": "null | number"
              }
            },
            {
              "kind": "field",
              "name": "maxFileSize",
              "default": "2048",
              "description": "Maximum size per file in MB (capped at 2048).",
              "attribute": "max-file-size",
              "type": {
                "text": "number"
              }
            },
            {
              "kind": "field",
              "name": "maxTotalFileSize",
              "default": "2048",
              "description": "Maximum total size of all selected files in MB (capped at 2048).",
              "attribute": "max-total-file-size",
              "type": {
                "text": "number"
              }
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The file input's label. If you need to display HTML, use the `label` slot instead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "ariaLabel",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The control's accessible name for when no visible label is set. Mirrored onto the internal\n`role=\"group\"` wrapper — an aria-label left on the host alone would sit on a role-less\nelement and be ignored by assistive tech — and carried by the trigger ahead of its action,\nas a visible label is.",
              "attribute": "aria-label",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the file input a required field: at least one file must be selected.",
              "attribute": "required",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "withLabel",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "with-label"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "File[]"
              },
              "default": "[]",
              "description": "The selected files, submitted as one `FormData` entry per file under `name`. An empty array means no\nselection. Setting this directly also repopulates the visible chip list (see `handleValueChange`), but does\nnot run `accept`/size validation — it is meant for restoring an already-known-good selection, not for\nfeeding it untrusted input.\n\nThe native \"restore form state\" flow (`formStateRestoreCallback`, browser back/forward cache or crash\nrecovery) cannot repopulate this: browsers never rehydrate `File` objects for `<input type=\"file\">` for\nsecurity reasons, and the same restriction applies here."
            },
            {
              "kind": "field",
              "name": "files",
              "type": {
                "text": "File[]"
              },
              "description": "The selected files. Convenience alias for `value`, matching `ed-upload`'s `files` getter.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "picker",
              "privacy": "private",
              "readonly": true,
              "default": "new FilePickerController(this, { multiple: () => this.multiple, accept: () => this.accept, maxFiles: () => this.maxFiles, maxFileSizeMb: () => this.maxPerFileMb, maxTotalFileSizeMb: () => this.maxTotalMb, disabled: () => this.disabled, onChange: () => this.handleSelectionChange(), onReject: (file, reason) => this.handleReject(file, reason) })"
            },
            {
              "kind": "field",
              "name": "maxPerFileMb",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "maxTotalMb",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "isResetting",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set for the duration of `formResetCallback` so `handleSelectionChange` (invoked synchronously\nby `picker.clear()`) knows the value it is about to mirror is a reset, not a user selection,\nand skips the public event."
            },
            {
              "kind": "method",
              "name": "triggerFileSelect",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "handleSelectionChange",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Focuses the trigger, the control the user operates — the host itself takes no focus."
            },
            {
              "kind": "method",
              "name": "formResetCallback",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "handleReject",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "File"
                  }
                },
                {
                  "name": "reason",
                  "type": {
                    "text": "RejectReason"
                  }
                }
              ],
              "description": "Surfaces a rejection reported by the picker. Content rejections (wrong type, too large, total exceeded)\nalready got a persistent row from the picker. List-state rejections (duplicate, too many) have no specific\nfile to show a row for, so they get a danger toast instead — which stays until dismissed and stacks, instead\nof overwriting an inline message."
            },
            {
              "kind": "method",
              "name": "rejectMessage",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "File"
                  }
                },
                {
                  "name": "reason",
                  "type": {
                    "text": "RejectReason"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "formatSize",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "bytes",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "labelText",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "description": "The text of the visible label, or the consumer's aria-label without one. The trigger carries it\nahead of its action: its own name is the same \"Choose file\" in every field of a form.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "#labelObserver",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderDropZone",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderFileRow",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "{ file: File; name: string; size: number; reason?: RejectReason }"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderList",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "attribute": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "attribute": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "attribute": "ai",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "attribute": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "attribute": "name",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#fieldsetDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set by `formDisabledCallback`, i.e. an ancestor `<fieldset>`. Never written by a consumer.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#ownDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The disabled state this element was given directly, via its property or its attribute.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "attribute": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOnMode",
              "type": {
                "text": "'combined' | 'separated' | string"
              },
              "default": "'combined'",
              "parsedType": {
                "text": "string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "valueHasChanged",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasInteracted",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_customValidityMessage",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_isCheckingValidity",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set while `checkValidity()` is executing so the `invalid` event handler can distinguish\na programmatic check (no UI side-effects per spec) from `reportValidity()` / native form\nsubmission (which should surface the error UI and focus the first invalid control).",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emittedEvents",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "states",
              "type": {
                "text": "CustomStateSet"
              },
              "parsedType": {
                "text": "any"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleSubmitOnEnter",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleClearOnEscape",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emitInvalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleInteraction",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "labels",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getForm",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "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": {
                "text": "HTMLFormElement | null"
              },
              "parsedType": {
                "text": "null | HTMLFormElement"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validity",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "willValidate",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationMessage",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "checkValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValidity",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setValidity>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "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.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setFormValue>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "allValidators",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "resetValidity",
              "description": "Reset validity is a way of removing manual custom errors and native validation.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ files: File[] }"
              },
              "description": "Emitted whenever the selection changes (a file is added or removed).",
              "name": "ed-file-input-change",
              "reactName": "onEdFileInputChange",
              "eventName": "EdFileInputChangeEvent"
            },
            {
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied.",
              "name": "ed-invalid",
              "reactName": "onEdInvalid",
              "eventName": "EdInvalidEvent"
            }
          ],
          "attributes": [
            {
              "name": "multiple",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allow selecting/dropping more than one file. Mirrors the native input's `multiple`.",
              "fieldName": "multiple"
            },
            {
              "name": "accept",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Comma-separated list of accepted types (extensions and/or MIME types), like the native `accept`.",
              "fieldName": "accept"
            },
            {
              "name": "max-files",
              "type": {
                "text": "number | null"
              },
              "default": "null",
              "description": "Maximum number of files (multiple mode only).",
              "fieldName": "maxFiles",
              "parsedType": {
                "text": "null | number"
              }
            },
            {
              "name": "max-file-size",
              "default": "MAX_SIZE_MB",
              "description": "Maximum size per file in MB (capped at 2048).",
              "fieldName": "maxFileSize"
            },
            {
              "name": "max-total-file-size",
              "default": "MAX_SIZE_MB",
              "description": "Maximum total size of all selected files in MB (capped at 2048).",
              "fieldName": "maxTotalFileSize"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The file input's label. If you need to display HTML, use the `label` slot instead.",
              "fieldName": "label"
            },
            {
              "name": "aria-label",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The control's accessible name for when no visible label is set. Mirrored onto the internal\n`role=\"group\"` wrapper — an aria-label left on the host alone would sit on a role-less\nelement and be ignored by assistive tech — and carried by the trigger ahead of its action,\nas a visible label is.",
              "fieldName": "ariaLabel",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the file input a required field: at least one file must be selected.",
              "fieldName": "required"
            },
            {
              "name": "with-label",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "withLabel"
            },
            {
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "fieldName": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "fieldName": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "fieldName": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "fieldName": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "fieldName": "name",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "fieldName": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdFormAssociatedElement",
            "module": "/src/internal/ed-form-associated-element.js"
          },
          "summary": "File inputs let users pick one or more files from their device to submit with a form — no upload.",
          "jsDoc": "/**\n * @summary File inputs let users pick one or more files from their device to submit with a form — no upload.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/file-input\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-button\n * @dependency ed-icon\n *\n * @slot label - The file input's label. Alternatively, you can use the `label` attribute.\n * @slot hint - Text that describes how to use the file input. Alternatively, you can use the `hint` attribute.\n *\n * @event {{ files: File[] }} ed-file-input-change - Emitted whenever the selection changes (a file is added or removed).\n * @event ed-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n *\n * @csspart label - The label.\n * @csspart form-control-label - Alias for the label element.\n * @csspart message - The state message: an error, a warning, or the AI note.\n * @csspart hint - The hint's wrapper.\n * @csspart base - The component wrapper.\n * @csspart dropzone - The drag & drop area.\n * @csspart list - The file list.\n * @csspart file - A single file row.\n * @csspart file-name - A file row's name.\n * @csspart file-size - A file row's size.\n * @csspart file-actions - A file row's action buttons.\n * @csspart file-reason - A rejected row's reason text.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/file-input",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-button",
            "ed-icon"
          ],
          "tagName": "ed-file-input",
          "customElement": true,
          "cssStates": [
            {
              "description": "The control is disabled, by its own attribute or by an ancestor fieldset.",
              "name": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is required.",
              "name": "required",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is not required.",
              "name": "optional",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value fails constraint validation, whether or not the user has touched the control yet.",
              "name": "invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value passes constraint validation.",
              "name": "valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Invalid, and the user has interacted with the control. This is the one to style for an error: it behaves like the platform's `:user-invalid`, so an untouched field is not marked wrong before the user has had a chance to fill it in.",
              "name": "user-invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Valid, and the user has interacted with the control.",
              "name": "user-valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The user has interacted with the control.",
              "name": "dirty",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `error` property is set, or the control is `user-invalid`.",
              "name": "error",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `warning` property is set.",
              "name": "warning",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `ai` property is set and the user has not interacted with the control yet.",
              "name": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdFileInput",
            "module": "components/file-input/file-input.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-file-input",
          "declaration": {
            "name": "EdFileInput",
            "module": "components/file-input/file-input.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/format-bytes/format-bytes.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdFormatBytes",
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The number to format in bytes. A value that is not a finite number renders nothing.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "unit",
              "type": {
                "text": "'byte' | 'bit'"
              },
              "default": "'byte'",
              "description": "The type of unit to display.",
              "attribute": "unit",
              "parsedType": {
                "text": "'byte' | 'bit'"
              }
            },
            {
              "kind": "field",
              "name": "display",
              "type": {
                "text": "'long' | 'short' | 'narrow'"
              },
              "default": "'short'",
              "description": "Determines how to display the result, e.g. \"100 bytes\", \"100 b\", or \"100b\".",
              "attribute": "display",
              "parsedType": {
                "text": "'short' | 'long' | 'narrow'"
              }
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "value",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The number to format in bytes. A value that is not a finite number renders nothing.",
              "fieldName": "value"
            },
            {
              "name": "unit",
              "type": {
                "text": "'byte' | 'bit'"
              },
              "default": "'byte'",
              "description": "The type of unit to display.",
              "fieldName": "unit",
              "parsedType": {
                "text": "'byte' | 'bit'"
              }
            },
            {
              "name": "display",
              "type": {
                "text": "'long' | 'short' | 'narrow'"
              },
              "default": "'short'",
              "description": "Determines how to display the result, e.g. \"100 bytes\", \"100 b\", or \"100b\".",
              "fieldName": "display",
              "parsedType": {
                "text": "'short' | 'long' | 'narrow'"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Formats a number as a human readable bytes value.",
          "jsDoc": "/**\n * @summary Formats a number as a human readable bytes value.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/format-bytes\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/format-bytes",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-format-bytes",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdFormatBytes",
            "module": "components/format-bytes/format-bytes.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-format-bytes",
          "declaration": {
            "name": "EdFormatBytes",
            "module": "components/format-bytes/format-bytes.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/format-date/format-date.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdFormatDate",
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "date",
              "type": {
                "text": "Date | string | null"
              },
              "default": "new Date()",
              "description": "The date/time to format. If not set, the current date and time will be used. Set `null` or an empty value to\nrender nothing. A value that cannot be read renders nothing either, and says so in the console.\n\nWith no format options set, the output names what the value names — a month value shows a month, a year value a\nyear.\n\nA string is read as a **calendar day** when it carries no time of day (`2026-08-03`, `2026-08`, `2026`) and as an\n**exact instant** when it does (`2026-08-03T10:30:00Z`). A calendar day renders as the day it names in every time\nzone; an instant is expressed in the viewer's zone unless `time-zone` says otherwise. Use the ISO 8601 format either\nway — to serialize a `Date`, use\n[`date.toISOString()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString).",
              "attribute": "date",
              "parsedType": {
                "text": "null | string | { toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@535: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "weekday",
              "type": {
                "text": "'narrow' | 'short' | 'long' | undefined"
              },
              "description": "The format for displaying the weekday.",
              "attribute": "weekday",
              "parsedType": {
                "text": "'short' | 'long' | 'narrow' | undefined"
              }
            },
            {
              "kind": "field",
              "name": "era",
              "type": {
                "text": "'narrow' | 'short' | 'long' | undefined"
              },
              "description": "The format for displaying the era.",
              "attribute": "era",
              "parsedType": {
                "text": "'short' | 'long' | 'narrow' | undefined"
              }
            },
            {
              "kind": "field",
              "name": "year",
              "type": {
                "text": "'numeric' | '2-digit' | undefined"
              },
              "description": "The format for displaying the year.",
              "attribute": "year",
              "parsedType": {
                "text": "'numeric' | '2-digit' | undefined"
              }
            },
            {
              "kind": "field",
              "name": "month",
              "type": {
                "text": "'numeric' | '2-digit' | 'narrow' | 'short' | 'long' | undefined"
              },
              "description": "The format for displaying the month.",
              "attribute": "month",
              "parsedType": {
                "text": "'short' | 'long' | 'numeric' | '2-digit' | 'narrow' | undefined"
              }
            },
            {
              "kind": "field",
              "name": "day",
              "type": {
                "text": "'numeric' | '2-digit' | undefined"
              },
              "description": "The format for displaying the day.",
              "attribute": "day",
              "parsedType": {
                "text": "'numeric' | '2-digit' | undefined"
              }
            },
            {
              "kind": "field",
              "name": "hour",
              "type": {
                "text": "'numeric' | '2-digit' | undefined"
              },
              "description": "The format for displaying the hour.",
              "attribute": "hour",
              "parsedType": {
                "text": "'numeric' | '2-digit' | undefined"
              }
            },
            {
              "kind": "field",
              "name": "minute",
              "type": {
                "text": "'numeric' | '2-digit' | undefined"
              },
              "description": "The format for displaying the minute.",
              "attribute": "minute",
              "parsedType": {
                "text": "'numeric' | '2-digit' | undefined"
              }
            },
            {
              "kind": "field",
              "name": "second",
              "type": {
                "text": "'numeric' | '2-digit' | undefined"
              },
              "description": "The format for displaying the second.",
              "attribute": "second",
              "parsedType": {
                "text": "'numeric' | '2-digit' | undefined"
              }
            },
            {
              "kind": "field",
              "name": "timeZoneName",
              "type": {
                "text": "'short' | 'long' | 'shortOffset' | 'longOffset' | 'shortGeneric' | 'longGeneric' | undefined"
              },
              "description": "How to name the time zone beside the time, if at all. Unset shows no zone name. The `Offset` and `Generic` forms\nare the ones ECMA-402 adds beyond a plain name: `GMT-4`, `GMT-04:00`, `ET`, `Eastern Time`.",
              "attribute": "time-zone-name",
              "parsedType": {
                "text": "'short' | 'long' | 'shortOffset' | 'longOffset' | 'shortGeneric' | 'longGeneric' | undefined"
              }
            },
            {
              "kind": "field",
              "name": "timeZone",
              "type": {
                "text": "string | undefined"
              },
              "description": "The time zone to express the time in. Only meaningful for a `date` that names an instant — a calendar day names no\ninstant to convert, so it is ignored there and the day renders as written.",
              "attribute": "time-zone"
            },
            {
              "kind": "field",
              "name": "hourFormat",
              "type": {
                "text": "'auto' | '12' | '24'"
              },
              "default": "'auto'",
              "description": "Which clock the hour is read on. `auto` leaves that to the locale, which is what makes an\nunknown value behave like `auto` rather than like either explicit choice.",
              "attribute": "hour-format",
              "parsedType": {
                "text": "'auto' | '12' | '24'"
              }
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "date",
              "type": {
                "text": "Date | string | null"
              },
              "default": "new Date()",
              "description": "The date/time to format. If not set, the current date and time will be used. Set `null` or an empty value to\nrender nothing. A value that cannot be read renders nothing either, and says so in the console.\n\nWith no format options set, the output names what the value names — a month value shows a month, a year value a\nyear.\n\nA string is read as a **calendar day** when it carries no time of day (`2026-08-03`, `2026-08`, `2026`) and as an\n**exact instant** when it does (`2026-08-03T10:30:00Z`). A calendar day renders as the day it names in every time\nzone; an instant is expressed in the viewer's zone unless `time-zone` says otherwise. Use the ISO 8601 format either\nway — to serialize a `Date`, use\n[`date.toISOString()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString).",
              "fieldName": "date",
              "parsedType": {
                "text": "null | string | { toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@535: {  } }"
              }
            },
            {
              "name": "weekday",
              "type": {
                "text": "'narrow' | 'short' | 'long' | undefined"
              },
              "description": "The format for displaying the weekday.",
              "fieldName": "weekday",
              "parsedType": {
                "text": "'short' | 'long' | 'narrow' | undefined"
              }
            },
            {
              "name": "era",
              "type": {
                "text": "'narrow' | 'short' | 'long' | undefined"
              },
              "description": "The format for displaying the era.",
              "fieldName": "era",
              "parsedType": {
                "text": "'short' | 'long' | 'narrow' | undefined"
              }
            },
            {
              "name": "year",
              "type": {
                "text": "'numeric' | '2-digit' | undefined"
              },
              "description": "The format for displaying the year.",
              "fieldName": "year",
              "parsedType": {
                "text": "'numeric' | '2-digit' | undefined"
              }
            },
            {
              "name": "month",
              "type": {
                "text": "'numeric' | '2-digit' | 'narrow' | 'short' | 'long' | undefined"
              },
              "description": "The format for displaying the month.",
              "fieldName": "month",
              "parsedType": {
                "text": "'short' | 'long' | 'numeric' | '2-digit' | 'narrow' | undefined"
              }
            },
            {
              "name": "day",
              "type": {
                "text": "'numeric' | '2-digit' | undefined"
              },
              "description": "The format for displaying the day.",
              "fieldName": "day",
              "parsedType": {
                "text": "'numeric' | '2-digit' | undefined"
              }
            },
            {
              "name": "hour",
              "type": {
                "text": "'numeric' | '2-digit' | undefined"
              },
              "description": "The format for displaying the hour.",
              "fieldName": "hour",
              "parsedType": {
                "text": "'numeric' | '2-digit' | undefined"
              }
            },
            {
              "name": "minute",
              "type": {
                "text": "'numeric' | '2-digit' | undefined"
              },
              "description": "The format for displaying the minute.",
              "fieldName": "minute",
              "parsedType": {
                "text": "'numeric' | '2-digit' | undefined"
              }
            },
            {
              "name": "second",
              "type": {
                "text": "'numeric' | '2-digit' | undefined"
              },
              "description": "The format for displaying the second.",
              "fieldName": "second",
              "parsedType": {
                "text": "'numeric' | '2-digit' | undefined"
              }
            },
            {
              "name": "time-zone-name",
              "type": {
                "text": "'short' | 'long' | 'shortOffset' | 'longOffset' | 'shortGeneric' | 'longGeneric' | undefined"
              },
              "description": "How to name the time zone beside the time, if at all. Unset shows no zone name. The `Offset` and `Generic` forms\nare the ones ECMA-402 adds beyond a plain name: `GMT-4`, `GMT-04:00`, `ET`, `Eastern Time`.",
              "fieldName": "timeZoneName",
              "parsedType": {
                "text": "'short' | 'long' | 'shortOffset' | 'longOffset' | 'shortGeneric' | 'longGeneric' | undefined"
              }
            },
            {
              "name": "time-zone",
              "type": {
                "text": "string | undefined"
              },
              "description": "The time zone to express the time in. Only meaningful for a `date` that names an instant — a calendar day names no\ninstant to convert, so it is ignored there and the day renders as written.",
              "fieldName": "timeZone"
            },
            {
              "name": "hour-format",
              "type": {
                "text": "'auto' | '12' | '24'"
              },
              "default": "'auto'",
              "description": "Which clock the hour is read on. `auto` leaves that to the locale, which is what makes an\nunknown value behave like `auto` rather than like either explicit choice.",
              "fieldName": "hourFormat",
              "parsedType": {
                "text": "'auto' | '12' | '24'"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Shows a date or time in the user's locale from a raw date value, so every date reads the same way across the\nproduct.",
          "jsDoc": "/**\n * @summary Shows a date or time in the user's locale from a raw date value, so every date reads the same way across the\n *  product.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/format-date\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/format-date",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-format-date",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdFormatDate",
            "module": "components/format-date/format-date.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-format-date",
          "declaration": {
            "name": "EdFormatDate",
            "module": "components/format-date/format-date.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/format-number/format-number.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdFormatNumber",
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The number to format.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "type",
              "type": {
                "text": "'currency' | 'decimal' | 'percent'"
              },
              "default": "'decimal'",
              "description": "The formatting style to use.",
              "attribute": "type",
              "parsedType": {
                "text": "'percent' | 'decimal' | 'currency'"
              }
            },
            {
              "kind": "field",
              "name": "withoutGrouping",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Turns off grouping separators.",
              "attribute": "without-grouping"
            },
            {
              "kind": "field",
              "name": "currency",
              "type": {
                "text": "string"
              },
              "default": "'USD'",
              "description": "The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code to use when formatting.",
              "attribute": "currency"
            },
            {
              "kind": "field",
              "name": "currencyDisplay",
              "type": {
                "text": "'symbol' | 'narrowSymbol' | 'code' | 'name'"
              },
              "default": "'symbol'",
              "description": "How to display the currency.",
              "attribute": "currency-display",
              "parsedType": {
                "text": "'symbol' | 'code' | 'narrowSymbol' | 'name'"
              }
            },
            {
              "kind": "field",
              "name": "minimumIntegerDigits",
              "type": {
                "text": "number"
              },
              "description": "The minimum number of integer digits to use. Possible values are 1-21.",
              "attribute": "minimum-integer-digits"
            },
            {
              "kind": "field",
              "name": "minimumFractionDigits",
              "type": {
                "text": "number"
              },
              "description": "The minimum number of fraction digits to use. Possible values are 0-100.",
              "attribute": "minimum-fraction-digits"
            },
            {
              "kind": "field",
              "name": "maximumFractionDigits",
              "type": {
                "text": "number"
              },
              "description": "The maximum number of fraction digits to use. Possible values are 0-100.",
              "attribute": "maximum-fraction-digits"
            },
            {
              "kind": "field",
              "name": "minimumSignificantDigits",
              "type": {
                "text": "number"
              },
              "description": "The minimum number of significant digits to use. Possible values are 1-21.",
              "attribute": "minimum-significant-digits"
            },
            {
              "kind": "field",
              "name": "maximumSignificantDigits",
              "type": {
                "text": "number"
              },
              "description": "The maximum number of significant digits to use. Possible values are 1-21.",
              "attribute": "maximum-significant-digits"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "value",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The number to format.",
              "fieldName": "value"
            },
            {
              "name": "type",
              "type": {
                "text": "'currency' | 'decimal' | 'percent'"
              },
              "default": "'decimal'",
              "description": "The formatting style to use.",
              "fieldName": "type",
              "parsedType": {
                "text": "'percent' | 'decimal' | 'currency'"
              }
            },
            {
              "name": "without-grouping",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Turns off grouping separators.",
              "fieldName": "withoutGrouping"
            },
            {
              "name": "currency",
              "type": {
                "text": "string"
              },
              "default": "'USD'",
              "description": "The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code to use when formatting.",
              "fieldName": "currency"
            },
            {
              "name": "currency-display",
              "type": {
                "text": "'symbol' | 'narrowSymbol' | 'code' | 'name'"
              },
              "default": "'symbol'",
              "description": "How to display the currency.",
              "fieldName": "currencyDisplay",
              "parsedType": {
                "text": "'symbol' | 'code' | 'narrowSymbol' | 'name'"
              }
            },
            {
              "name": "minimum-integer-digits",
              "type": {
                "text": "number"
              },
              "description": "The minimum number of integer digits to use. Possible values are 1-21.",
              "fieldName": "minimumIntegerDigits"
            },
            {
              "name": "minimum-fraction-digits",
              "type": {
                "text": "number"
              },
              "description": "The minimum number of fraction digits to use. Possible values are 0-100.",
              "fieldName": "minimumFractionDigits"
            },
            {
              "name": "maximum-fraction-digits",
              "type": {
                "text": "number"
              },
              "description": "The maximum number of fraction digits to use. Possible values are 0-100.",
              "fieldName": "maximumFractionDigits"
            },
            {
              "name": "minimum-significant-digits",
              "type": {
                "text": "number"
              },
              "description": "The minimum number of significant digits to use. Possible values are 1-21.",
              "fieldName": "minimumSignificantDigits"
            },
            {
              "name": "maximum-significant-digits",
              "type": {
                "text": "number"
              },
              "description": "The maximum number of significant digits to use. Possible values are 1-21.",
              "fieldName": "maximumSignificantDigits"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Shows a number, amount or percentage in the user's locale from a raw value, so figures read and align the\nsame way everywhere.",
          "jsDoc": "/**\n * @summary Shows a number, amount or percentage in the user's locale from a raw value, so figures read and align the\n *  same way everywhere.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/format-number\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/format-number",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-format-number",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdFormatNumber",
            "module": "components/format-number/format-number.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-format-number",
          "declaration": {
            "name": "EdFormatNumber",
            "module": "components/format-number/format-number.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/header/header.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdHeader",
          "cssProperties": [
            {
              "description": "The height of the header. An `ed-button[navbar]` inside the header reads it as its own minimum height and width, so those buttons fill the bar also inside a wrapper in the header's own tree, and stay square when this changes. Set it on a common ancestor (or the theme) rather than on the header alone to also reach `ed-app`'s navigation toggle, which is a sibling of the header rather than a child of it.",
              "name": "--ed-header-size",
              "default": "var(--ed-size-13)"
            }
          ],
          "cssParts": [
            {
              "description": "The wrapper around the default slot.",
              "name": "content"
            },
            {
              "description": "The wrapper around the `logo` slot.",
              "name": "logo"
            }
          ],
          "slots": [
            {
              "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. A form control in it (`ed-input`, `ed-select`, `ed-combobox`, `ed-textarea`, `ed-number-input`, `ed-date-picker`, `ed-tag-input`) takes the header's colors, also inside a wrapper; one in an overlay opened from the header keeps its own.",
              "name": ""
            },
            {
              "description": "The branding logo, at the trailing edge. Images and inline SVGs are sized to fit the header height automatically, including when wrapped in a link. The region collapses when the slot is empty.",
              "name": "logo"
            }
          ],
          "members": [
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Headers provide a consistent app bar with a logo area and a content area for navigation, search, or actions.",
          "jsDoc": "/**\n * @summary Headers provide a consistent app bar with a logo area and a content area for navigation, search, or actions.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/header\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @slot - 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. A form control in it (`ed-input`, `ed-select`, `ed-combobox`, `ed-textarea`, `ed-number-input`, `ed-date-picker`, `ed-tag-input`) takes the header's colors, also inside a wrapper; one in an overlay opened from the header keeps its own.\n * @slot logo - The branding logo, at the trailing edge. Images and inline SVGs are sized to fit the header height automatically, including when wrapped in a link. The region collapses when the slot is empty.\n *\n * @csspart content - The wrapper around the default slot.\n * @csspart logo - The wrapper around the `logo` slot.\n *\n * @cssproperty [--ed-header-size=var(--ed-size-13)] - The height of the header. An `ed-button[navbar]` inside the\n *   header reads it as its own minimum height and width, so those buttons fill the bar also inside a wrapper in the\n *   header's own tree, and stay square when this changes. Set it on a common ancestor (or the theme) rather than on\n *   the header alone to also reach `ed-app`'s navigation toggle, which is a sibling of the header rather than a child\n *   of it.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/header",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-header",
          "customElement": true,
          "attributes": [
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdHeader",
            "module": "components/header/header.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-header",
          "declaration": {
            "name": "EdHeader",
            "module": "components/header/header.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/intersection-observer/intersection-observer.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdIntersectionObserver",
          "slots": [
            {
              "description": "Elements to track. Only immediate children of the host are monitored.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "intersectionObserver",
              "type": {
                "text": "IntersectionObserver | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | { root: null | Element | Document, rootMargin: string, thresholds: number[], disconnect: {  }, observe: {  }, takeRecords: {  }, unobserve: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "observedElements",
              "privacy": "private",
              "default": "new Map<Element, boolean>()"
            },
            {
              "kind": "field",
              "name": "root",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "CSS selector for the element that defines the viewport boundaries for tracked targets.\nResolved against this element's own root node, so a selector matching a sibling inside the same\nshadow root works. It cannot cross a shadow boundary — use `rootElement` for that.",
              "attribute": "root",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "rootElement",
              "type": {
                "text": "Element | null | undefined"
              },
              "description": "Explicit root element, taking precedence over `root`. Use this when the root lives in another shadow DOM the selector can't reach.",
              "parsedType": {
                "text": "null | Element | undefined"
              }
            },
            {
              "kind": "field",
              "name": "rootMargin",
              "type": {
                "text": "string"
              },
              "default": "'0px'",
              "description": "Offset space around the root boundary. Accepts values like CSS margin syntax.",
              "attribute": "root-margin"
            },
            {
              "kind": "field",
              "name": "threshold",
              "type": {
                "text": "string"
              },
              "default": "'0'",
              "description": "One or more space-separated values representing visibility percentages that trigger the observer callback.",
              "attribute": "threshold"
            },
            {
              "kind": "field",
              "name": "intersectClass",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "CSS class applied to elements during intersection. Automatically removed when elements leave\nthe viewport, enabling pure CSS styling based on visibility state.",
              "attribute": "intersect-class"
            },
            {
              "kind": "field",
              "name": "once",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "If enabled, observation ceases after initial intersection.",
              "attribute": "once",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Deactivates the intersection observer functionality.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "parseThreshold",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number[]"
                }
              },
              "description": "Converts threshold property string into numeric array."
            },
            {
              "kind": "method",
              "name": "resolveRoot",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Element | null"
                }
              },
              "description": "Locates and returns the root element the `root` selector matches."
            },
            {
              "kind": "method",
              "name": "startObserver",
              "privacy": "private",
              "description": "Initializes or reinitializes the intersection observer instance."
            },
            {
              "kind": "method",
              "name": "stopObserver",
              "privacy": "private",
              "description": "Halts the intersection observer and cleans up."
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ entry: IntersectionObserverEntry }"
              },
              "description": "Fired when a tracked element begins or ceases intersecting.",
              "name": "ed-intersect",
              "reactName": "onEdIntersect",
              "eventName": "EdIntersectEvent"
            }
          ],
          "attributes": [
            {
              "name": "root",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "CSS selector for the element that defines the viewport boundaries for tracked targets.\nResolved against this element's own root node, so a selector matching a sibling inside the same\nshadow root works. It cannot cross a shadow boundary — use `rootElement` for that.",
              "fieldName": "root",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "root-margin",
              "type": {
                "text": "string"
              },
              "default": "'0px'",
              "description": "Offset space around the root boundary. Accepts values like CSS margin syntax.",
              "fieldName": "rootMargin"
            },
            {
              "name": "threshold",
              "type": {
                "text": "string"
              },
              "default": "'0'",
              "description": "One or more space-separated values representing visibility percentages that trigger the observer callback.",
              "fieldName": "threshold"
            },
            {
              "name": "intersect-class",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "CSS class applied to elements during intersection. Automatically removed when elements leave\nthe viewport, enabling pure CSS styling based on visibility state.",
              "fieldName": "intersectClass"
            },
            {
              "name": "once",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "If enabled, observation ceases after initial intersection.",
              "fieldName": "once"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Deactivates the intersection observer functionality.",
              "fieldName": "disabled"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Tracks immediate child elements and fires events as they move in and out of view.",
          "jsDoc": "/**\n * @summary Tracks immediate child elements and fires events as they move in and out of view.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/intersection-observer\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @slot - Elements to track. Only immediate children of the host are monitored.\n *\n * @event {{ entry: IntersectionObserverEntry }} ed-intersect - Fired when a tracked element begins or ceases intersecting.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/intersection-observer",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-intersection-observer",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdIntersectionObserver",
            "module": "components/intersection-observer/intersection-observer.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-intersection-observer",
          "declaration": {
            "name": "EdIntersectionObserver",
            "module": "components/intersection-observer/intersection-observer.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/known-date/internal/field-order.js",
      "declarations": [
        {
          "kind": "function",
          "name": "localeFieldOrder",
          "return": {
            "type": {
              "text": "SegmentField[]"
            }
          },
          "parameters": [
            {
              "name": "locale",
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "The day/month/year order for a locale. Cache key is the full locale string (`en-GB` ≠ `en-US`)."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "localeFieldOrder",
          "declaration": {
            "name": "localeFieldOrder",
            "module": "components/known-date/internal/field-order.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/known-date/internal/parts.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "EMPTY_PARTS",
          "type": {
            "text": "DateParts"
          },
          "default": "{ day: '', month: '', year: '' }"
        },
        {
          "kind": "function",
          "name": "isComplete",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "parts",
              "type": {
                "text": "DateParts"
              }
            }
          ],
          "description": "True when every field is filled. (Does not imply the combination is a real calendar date.)"
        },
        {
          "kind": "function",
          "name": "isEmpty",
          "return": {
            "type": {
              "text": "boolean"
            }
          },
          "parameters": [
            {
              "name": "parts",
              "type": {
                "text": "DateParts"
              }
            }
          ],
          "description": "True when no field is filled."
        },
        {
          "kind": "function",
          "name": "partsToIso",
          "return": {
            "type": {
              "text": "string"
            }
          },
          "parameters": [
            {
              "name": "parts",
              "type": {
                "text": "DateParts"
              }
            }
          ],
          "description": "Compose the three fields into a canonical ISO `YYYY-MM-DD`, or `''` when a field is empty or the\ncombination is not a real calendar date."
        },
        {
          "kind": "function",
          "name": "isoToParts",
          "return": {
            "type": {
              "text": "DateParts"
            }
          },
          "parameters": [
            {
              "name": "iso",
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "Split an ISO `YYYY-MM-DD` into three zero-padded fields. `EMPTY_PARTS` for anything else."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "EMPTY_PARTS",
          "declaration": {
            "name": "EMPTY_PARTS",
            "module": "components/known-date/internal/parts.js"
          }
        },
        {
          "kind": "js",
          "name": "isComplete",
          "declaration": {
            "name": "isComplete",
            "module": "components/known-date/internal/parts.js"
          }
        },
        {
          "kind": "js",
          "name": "isEmpty",
          "declaration": {
            "name": "isEmpty",
            "module": "components/known-date/internal/parts.js"
          }
        },
        {
          "kind": "js",
          "name": "partsToIso",
          "declaration": {
            "name": "partsToIso",
            "module": "components/known-date/internal/parts.js"
          }
        },
        {
          "kind": "js",
          "name": "isoToParts",
          "declaration": {
            "name": "isoToParts",
            "module": "components/known-date/internal/parts.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/known-date/internal/partial-date-validator.js",
      "declarations": [
        {
          "kind": "function",
          "name": "PartialDateValidator",
          "return": {
            "type": {
              "text": "Validator<EdKnownDate>"
            }
          }
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "PartialDateValidator",
          "declaration": {
            "name": "PartialDateValidator",
            "module": "components/known-date/internal/partial-date-validator.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/known-date/known-date.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdKnownDate",
          "cssParts": [
            {
              "description": "The form control's outer wrapper.",
              "name": "form-control"
            },
            {
              "description": "The wrapper inside the legend that styles the visible label text.",
              "name": "form-control-label"
            },
            {
              "description": "Alias on the fields row matching other form controls.",
              "name": "form-control-input"
            },
            {
              "description": "The state message: an error, a warning, or the AI note.",
              "name": "message"
            },
            {
              "description": "The hint's wrapper.",
              "name": "hint"
            },
            {
              "description": "Alias on the fields row, for symmetry with the other form controls.",
              "name": "known-date"
            },
            {
              "description": "The `<fieldset>` element grouping the three fields (or a `role=\"group\"` div).",
              "name": "fieldset"
            },
            {
              "description": "The `<legend>` element (when a label is present).",
              "name": "legend"
            },
            {
              "description": "The flex row holding the three field blocks.",
              "name": "fields"
            },
            {
              "description": "Each field block (label + input).",
              "name": "field"
            },
            {
              "description": "Added to the day field block.",
              "name": "field-day"
            },
            {
              "description": "Added to the month field block.",
              "name": "field-month"
            },
            {
              "description": "Added to the year field block.",
              "name": "field-year"
            },
            {
              "description": "The text label below each field's input, styled like the hint.",
              "name": "field-label"
            },
            {
              "description": "The native `<input>` inside a field.",
              "name": "field-input"
            }
          ],
          "slots": [
            {
              "description": "The known date's group label. Alternatively, use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "Text that describes how to use the known date. Alternatively, use the `hint` attribute.",
              "name": "hint"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "validators",
              "type": {
                "text": "Validator[]"
              },
              "default": "[]",
              "static": true,
              "description": "Validators are static because they have `observedAttributes`, essentially attributes to \"watch\"\nfor changes. Whenever these attributes change, we want to be notified and update the validator.",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOn",
              "type": {
                "text": "string[]"
              },
              "default": "['blur', 'input']",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'hint', 'label')"
            },
            {
              "kind": "field",
              "name": "groupId",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "valueInput",
              "type": {
                "text": "HTMLInputElement"
              },
              "privacy": "private",
              "description": "Hidden mirror used for native constraint validation (min/max/required + valid-date roundtrip)."
            },
            {
              "kind": "field",
              "name": "lastEmittedValue",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "description": "Debounces duplicate `change` events when the value hasn't transitioned."
            },
            {
              "kind": "field",
              "name": "pendingValue",
              "type": {
                "text": "string | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "_value",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The committed value as an ISO `YYYY-MM-DD` string — never a `Date`, exactly as `input.value` is\nalways a string. Reading returns an empty string when the value is blank or any field is only\npartially filled.\n\nFor a `Date`, use valueAsDate, which is UTC. Keeping `Date` out of `value` is what keeps\nthat a property of one named accessor instead of a contract the whole element has to restate."
            },
            {
              "kind": "field",
              "name": "defaultValue",
              "type": {
                "text": "string"
              },
              "description": "The default value used for form reset.",
              "attribute": "value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the known date required for form submission.",
              "attribute": "required",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the fields non-editable.",
              "attribute": "readonly",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "Controls the component's spacing density without affecting font-size.",
              "attribute": "density",
              "reflects": true,
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "kind": "field",
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws pill-style fields with rounded edges.",
              "attribute": "pill",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The known date's label. If you need to display HTML, use the `label` slot instead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "autocomplete",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Browser autofill family. When set to `bday`, the three fields receive `bday-day`, `bday-month`, and\n`bday-year` respectively. The field-agnostic directives `off` and `on` are applied to all three fields.\nAny other value is forwarded only to the year field.",
              "attribute": "autocomplete"
            },
            {
              "kind": "field",
              "name": "min",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Earliest selectable date as `YYYY-MM-DD`.",
              "attribute": "min",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "max",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Latest selectable date as `YYYY-MM-DD`.",
              "attribute": "max",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "locale",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "BCP-47 locale override. When empty, the inherited `lang` attribute is used.",
              "attribute": "locale",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "withLabel",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element.",
              "attribute": "with-label"
            },
            {
              "kind": "field",
              "name": "withHint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element.",
              "attribute": "with-hint"
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Focuses the first empty field, or the first field when all are filled."
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the known date."
            },
            {
              "kind": "field",
              "name": "valueAsDate",
              "type": {
                "text": "Date | null"
              },
              "description": "The committed value as **UTC midnight**, or `null` while it is empty or incomplete — the instant\na native `<input type=\"date\">` gives. Setting it reads the instant in UTC.\n\nAnything that formats in local time has to read it in UTC, or it names the previous day west of\nGreenwich. Passing `el.value` skips the question entirely.",
              "parsedType": {
                "text": "null | { toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@535: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Anchor native validation popups on a real visible input. The hidden mirror handles form data, but\nanchoring a popup on `display: none` content would render it at offset (0, 0).",
              "readonly": true,
              "parsedType": {
                "text": "HTMLElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "formResetCallback"
            },
            {
              "kind": "method",
              "name": "formStateRestoreCallback",
              "parameters": [
                {
                  "name": "state",
                  "type": {
                    "text": "string | File | FormData | null"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "resolvedLocale",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "fieldOrder",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "SegmentField[]"
                }
              }
            },
            {
              "kind": "method",
              "name": "normalizeIncomingValue",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "val",
                  "type": {
                    "text": "unknown"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "syncPartsFromCanonical",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "updateHiddenInput",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "recomputeValue",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "firstFocusableInput",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLInputElement | undefined"
                }
              }
            },
            {
              "kind": "method",
              "name": "firstInvalidField",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "SegmentField | null"
                }
              },
              "description": "Returns the field to fix when the value doesn't compose, in locale order: the first empty field, else the first\nout-of-range field (year < 1, month not 1–12, day not 1–31), else the day (e.g. Feb 30). Null when the value\ncomposes cleanly."
            },
            {
              "kind": "method",
              "name": "autocompleteFor",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string | undefined"
                }
              },
              "parameters": [
                {
                  "name": "field",
                  "type": {
                    "text": "SegmentField"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleFieldInput",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderField",
              "privacy": "private",
              "parameters": [
                {
                  "name": "field",
                  "type": {
                    "text": "SegmentField"
                  }
                },
                {
                  "name": "describedBy",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "userInvalid",
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "attribute": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "attribute": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "attribute": "ai",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "attribute": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "attribute": "name",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#fieldsetDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set by `formDisabledCallback`, i.e. an ancestor `<fieldset>`. Never written by a consumer.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#ownDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The disabled state this element was given directly, via its property or its attribute.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "attribute": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOnMode",
              "type": {
                "text": "'combined' | 'separated' | string"
              },
              "default": "'combined'",
              "parsedType": {
                "text": "string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "text": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "parsedType": {
                "text": "HTMLElement & { value: unknown } | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "valueHasChanged",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasInteracted",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_customValidityMessage",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_isCheckingValidity",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set while `checkValidity()` is executing so the `invalid` event handler can distinguish\na programmatic check (no UI side-effects per spec) from `reportValidity()` / native form\nsubmission (which should surface the error UI and focus the first invalid control).",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emittedEvents",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "states",
              "type": {
                "text": "CustomStateSet"
              },
              "parsedType": {
                "text": "any"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleSubmitOnEnter",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleClearOnEscape",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emitInvalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleInteraction",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "labels",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getForm",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "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": {
                "text": "HTMLFormElement | null"
              },
              "parsedType": {
                "text": "null | HTMLFormElement"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validity",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "willValidate",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationMessage",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "checkValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValidity",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setValidity>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "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.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setFormValue>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "allValidators",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "resetValidity",
              "description": "Reset validity is a way of removing manual custom errors and native validation.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "name": "input",
              "type": {
                "text": "InputEvent"
              },
              "description": "Emitted as the user types in any field.",
              "reactName": "onInput",
              "eventName": "InputEvent"
            },
            {
              "name": "change",
              "type": {
                "text": "Event"
              },
              "description": "Emitted when the committed value transitions to a new ISO date.",
              "reactName": "onChange",
              "eventName": "ChangeEvent"
            },
            {
              "description": "Emitted when the control loses focus.",
              "name": "blur",
              "reactName": "onBlur",
              "eventName": "BlurEvent"
            },
            {
              "description": "Emitted when the control gains focus.",
              "name": "focus",
              "reactName": "onFocus",
              "eventName": "FocusEvent"
            },
            {
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied.",
              "name": "ed-invalid",
              "reactName": "onEdInvalid",
              "eventName": "EdInvalidEvent"
            }
          ],
          "attributes": [
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The default value used for form reset.",
              "fieldName": "defaultValue"
            },
            {
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the known date required for form submission.",
              "fieldName": "required"
            },
            {
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the fields non-editable.",
              "fieldName": "readonly"
            },
            {
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "Controls the component's spacing density without affecting font-size.",
              "fieldName": "density",
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws pill-style fields with rounded edges.",
              "fieldName": "pill"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The known date's label. If you need to display HTML, use the `label` slot instead.",
              "fieldName": "label"
            },
            {
              "name": "autocomplete",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Browser autofill family. When set to `bday`, the three fields receive `bday-day`, `bday-month`, and\n`bday-year` respectively. The field-agnostic directives `off` and `on` are applied to all three fields.\nAny other value is forwarded only to the year field.",
              "fieldName": "autocomplete"
            },
            {
              "name": "min",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Earliest selectable date as `YYYY-MM-DD`.",
              "fieldName": "min"
            },
            {
              "name": "max",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Latest selectable date as `YYYY-MM-DD`.",
              "fieldName": "max"
            },
            {
              "name": "locale",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "BCP-47 locale override. When empty, the inherited `lang` attribute is used.",
              "fieldName": "locale"
            },
            {
              "name": "with-label",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `label` element.",
              "fieldName": "withLabel"
            },
            {
              "name": "with-hint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Only required for SSR. Set to `true` if you're slotting in a `hint` element.",
              "fieldName": "withHint"
            },
            {
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "fieldName": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "fieldName": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "fieldName": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "fieldName": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "fieldName": "name",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "fieldName": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "The known date has no committed value.",
              "name": "blank"
            },
            {
              "description": "The known date is disabled.",
              "name": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is required.",
              "name": "required",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is not required.",
              "name": "optional",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value fails constraint validation, whether or not the user has touched the control yet.",
              "name": "invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value passes constraint validation.",
              "name": "valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Invalid, and the user has interacted with the control. This is the one to style for an error: it behaves like the platform's `:user-invalid`, so an untouched field is not marked wrong before the user has had a chance to fill it in.",
              "name": "user-invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Valid, and the user has interacted with the control.",
              "name": "user-valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The user has interacted with the control.",
              "name": "dirty",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `error` property is set, or the control is `user-invalid`.",
              "name": "error",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `warning` property is set.",
              "name": "warning",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `ai` property is set and the user has not interacted with the control yet.",
              "name": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdFormAssociatedElement",
            "module": "/src/internal/ed-form-associated-element.js"
          },
          "summary": "Known dates let users enter dates they already know - birthdays, expirations, document\ndates - through three separate day, month, and year fields shown in the locale's natural order.",
          "jsDoc": "/**\n * @summary Known dates let users enter dates they already know - birthdays, expirations, document\n *  dates - through three separate day, month, and year fields shown in the locale's natural order.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/known-date\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @slot label - The known date's group label. Alternatively, use the `label` attribute.\n * @slot hint - Text that describes how to use the known date. Alternatively, use the `hint` attribute.\n *\n * @event blur - Emitted when the control loses focus.\n * @event change - Emitted when the committed value transitions to a new ISO date.\n * @event focus - Emitted when the control gains focus.\n * @event input - Emitted as the user types in any field.\n * @event ed-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n *\n * @csspart form-control - The form control's outer wrapper.\n * @csspart form-control-label - The wrapper inside the legend that styles the visible label text.\n * @csspart form-control-input - Alias on the fields row matching other form controls.\n * @csspart message - The state message: an error, a warning, or the AI note.\n * @csspart hint - The hint's wrapper.\n * @csspart known-date - Alias on the fields row, for symmetry with the other form controls.\n * @csspart fieldset - The `<fieldset>` element grouping the three fields (or a `role=\"group\"` div).\n * @csspart legend - The `<legend>` element (when a label is present).\n * @csspart fields - The flex row holding the three field blocks.\n * @csspart field - Each field block (label + input).\n * @csspart field-day - Added to the day field block.\n * @csspart field-month - Added to the month field block.\n * @csspart field-year - Added to the year field block.\n * @csspart field-label - The text label below each field's input, styled like the hint.\n * @csspart field-input - The native `<input>` inside a field.\n *\n * @cssstate blank - The known date has no committed value.\n * @cssstate disabled - The known date is disabled.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/known-date",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-known-date",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdKnownDate",
            "module": "components/known-date/known-date.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-known-date",
          "declaration": {
            "name": "EdKnownDate",
            "module": "components/known-date/known-date.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/markdown/markdown.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Safe for untrusted markdown by default: raw HTML in the source is escaped rather than rendered\n(`html: false`), and every link, image and autolink URL is checked against the library's scheme\nallowlist, so `javascript:` and friends never reach the DOM. Enabling HTML —\n`EdMarkdown.getMarkdownIt().set({ html: true })` — renders raw HTML live: the allowlist still\ncovers markdown links and images, not the raw HTML, and there is no output hook to sanitize it.\nTurn it on only for markdown the product's own team writes.\n\nThe MarkdownIt instance is page-global and shared by every `<ed-markdown>`, so configuration\napplies everywhere — and any other script on the page can change it too. Configure it once, at\napplication startup, and call `updateAll()` afterwards.",
          "name": "EdMarkdown",
          "slots": [
            {
              "description": "The markdown source, typically a `<script type=\"text/markdown\">` element. Its text content is parsed and rendered; the slot itself is never displayed.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "method",
              "name": "getMarkdownIt",
              "static": true,
              "return": {
                "type": {
                  "text": "MarkdownIt"
                }
              },
              "description": "Returns the shared MarkdownIt instance used by all `<ed-markdown>` components."
            },
            {
              "kind": "method",
              "name": "updateAll",
              "static": true,
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Re-renders all connected `<ed-markdown>` instances. Call this after changing the MarkdownIt configuration."
            },
            {
              "kind": "field",
              "name": "suppressSlotChange",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "tabSize",
              "type": {
                "text": "number"
              },
              "default": "4",
              "description": "The tab stop width used when converting leading tabs to spaces during whitespace normalization.",
              "attribute": "tab-size"
            },
            {
              "kind": "field",
              "name": "markdownIt",
              "type": {
                "text": "MarkdownIt"
              },
              "description": "A reference to the shared MarkdownIt instance for convenience. Equivalent to `EdMarkdown.getMarkdownIt()`.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "dedent",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "text",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Normalizes whitespace in the given text by converting leading tabs to spaces, trimming leading/trailing blank\nlines, and removing the common indentation prefix from all lines."
            },
            {
              "kind": "method",
              "name": "getSourceScript",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLScriptElement | null"
                }
              },
              "description": "Finds the `<script type=\"text/markdown\">` source element among this component's children."
            },
            {
              "kind": "method",
              "name": "renderMarkdown",
              "privacy": "public",
              "description": "Reads the script content, normalizes whitespace, parses markdown, and injects the result."
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "tab-size",
              "type": {
                "text": "number"
              },
              "default": "4",
              "description": "The tab stop width used when converting leading tabs to spaces during whitespace normalization.",
              "fieldName": "tabSize"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Shows markdown text as formatted HTML, for content written or delivered as markdown such as help texts or\nrelease notes.",
          "jsDoc": "/**\n * Safe for untrusted markdown by default: raw HTML in the source is escaped rather than rendered\n * (`html: false`), and every link, image and autolink URL is checked against the library's scheme\n * allowlist, so `javascript:` and friends never reach the DOM. Enabling HTML —\n * `EdMarkdown.getMarkdownIt().set({ html: true })` — renders raw HTML live: the allowlist still\n * covers markdown links and images, not the raw HTML, and there is no output hook to sanitize it.\n * Turn it on only for markdown the product's own team writes.\n *\n * The MarkdownIt instance is page-global and shared by every `<ed-markdown>`, so configuration\n * applies everywhere — and any other script on the page can change it too. Configure it once, at\n * application startup, and call `updateAll()` afterwards.\n *\n * @summary Shows markdown text as formatted HTML, for content written or delivered as markdown such as help texts or\n *  release notes.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/markdown/\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @slot - The markdown source, typically a `<script type=\"text/markdown\">` element. Its text content\n *   is parsed and rendered; the slot itself is never displayed.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/markdown/",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-markdown",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdMarkdown",
            "module": "components/markdown/markdown.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-markdown",
          "declaration": {
            "name": "EdMarkdown",
            "module": "components/markdown/markdown.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/mutation-observer/mutation-observer.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdMutationObserver",
          "slots": [
            {
              "description": "The content to watch for mutations.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "mutationObserver",
              "type": {
                "text": "MutationObserver"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "attr",
              "type": {
                "text": "string"
              },
              "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 `*`.",
              "attribute": "attr",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "attrOldValue",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the attribute's previous value should be recorded when monitoring changes.",
              "attribute": "attr-old-value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "charData",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Watches for changes to the character data contained within the node.",
              "attribute": "char-data",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "charDataOldValue",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the previous value of the node's text should be recorded.",
              "attribute": "char-data-old-value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "childList",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Watches for the addition or removal of new child nodes.",
              "attribute": "child-list",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the observer.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "handleMutation",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "startObserver",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "stopObserver",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ mutationList: MutationRecord[] }"
              },
              "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-mutation",
              "reactName": "onEdMutation",
              "eventName": "EdMutationEvent"
            }
          ],
          "attributes": [
            {
              "name": "attr",
              "type": {
                "text": "string"
              },
              "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 `*`.",
              "fieldName": "attr"
            },
            {
              "name": "attr-old-value",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the attribute's previous value should be recorded when monitoring changes.",
              "fieldName": "attrOldValue"
            },
            {
              "name": "char-data",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Watches for changes to the character data contained within the node.",
              "fieldName": "charData"
            },
            {
              "name": "char-data-old-value",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the previous value of the node's text should be recorded.",
              "fieldName": "charDataOldValue"
            },
            {
              "name": "child-list",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Watches for the addition or removal of new child nodes.",
              "fieldName": "childList"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the observer.",
              "fieldName": "disabled"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "The Mutation Observer component offers a thin, declarative interface to the [`MutationObserver API`](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver).",
          "jsDoc": "/**\n * @summary The Mutation Observer component offers a thin, declarative interface to the [`MutationObserver API`](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver).\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/mutation-observer\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @event {{ mutationList: MutationRecord[] }} 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 * @slot - The content to watch for mutations.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/mutation-observer",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-mutation-observer",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdMutationObserver",
            "module": "components/mutation-observer/mutation-observer.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-mutation-observer",
          "declaration": {
            "name": "EdMutationObserver",
            "module": "components/mutation-observer/mutation-observer.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/sortable.js",
      "declarations": [
        {
          "kind": "class",
          "description": "Pointer-based, framework-agnostic drag-to-reorder engine, exposed as a reactive controller.\n\nThe host owns the data: the controller never mutates the model. It manages the gesture and, on\ndrop, calls SortableOptions.onReorder with the move; the host updates its array and\nre-renders the committed order. The visual is sortablejs-style — a floating clone follows the\npointer while the original stays in place as a \"gap\" (styled by the host via the `sortable-ghost`\nclass) that slides to the candidate slot, rather than a drop line.\n\nTransient DOM changes (moving the ghost, the clone) are fully reverted before the host re-renders,\nso framework reconciliation (Lit child parts, comment markers) is never disturbed.\n\nWire it up by calling start from a `pointerdown` handler on a draggable item. Because the\ndrag only begins once the pointer passes DRAG_THRESHOLD, a plain click still falls through\nto the host (e.g. selection); a real drag suppresses the trailing click. On touch the drag is a\npress-and-hold (TOUCH_HOLD_DELAY) so a plain swipe scrolls the container instead; mouse and\npen drag immediately.",
          "name": "SortableController",
          "members": [
            {
              "kind": "field",
              "name": "opts",
              "type": {
                "text": "SortableOptions"
              },
              "privacy": "private",
              "default": "opts"
            },
            {
              "kind": "field",
              "name": "dragging",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "pointerId",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "-1"
            },
            {
              "kind": "field",
              "name": "isTouch",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "True while the active gesture is a touch pointer (press-and-hold to drag)."
            },
            {
              "kind": "field",
              "name": "holdTimer",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0",
              "description": "Pending press-and-hold timer (touch only); 0 when none is scheduled."
            },
            {
              "kind": "field",
              "name": "startX",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "startY",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "lastX",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "lastY",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "grabOffsetX",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "grabOffsetY",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "item",
              "type": {
                "text": "HTMLElement | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "group",
              "type": {
                "text": "string | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "clone",
              "type": {
                "text": "HTMLElement | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "itemsSnapshot",
              "type": {
                "text": "HTMLElement[]"
              },
              "privacy": "private",
              "default": "[]",
              "description": "Item list captured at drag start, in original order — the basis for all index math."
            },
            {
              "kind": "field",
              "name": "childSnapshot",
              "type": {
                "text": "ChildNode[]"
              },
              "privacy": "private",
              "default": "[]",
              "description": "Every child node of the container at drag start, used to restore exact order before re-render."
            },
            {
              "kind": "field",
              "name": "lastTarget",
              "type": {
                "text": "HTMLElement | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "lastPosition",
              "type": {
                "text": "'before' | 'after'"
              },
              "privacy": "private",
              "default": "'before'",
              "parsedType": {
                "text": "'before' | 'after'"
              }
            },
            {
              "kind": "field",
              "name": "scrollRaf",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "method",
              "name": "hostConnected",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "hostDisconnected",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "start",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "PointerEvent"
                  }
                }
              ],
              "description": "Arms a potential drag. Call from a `pointerdown` handler on a draggable item."
            },
            {
              "kind": "field",
              "name": "onMove",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "beginDrag",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              }
            },
            {
              "kind": "method",
              "name": "moveClone",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "updateTarget",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Finds the item under the pointer (or nearest) and slides the ghost into the candidate slot."
            },
            {
              "kind": "method",
              "name": "startAutoScroll",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "field",
              "name": "onUp",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "drop",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "cancel",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Abort an in-progress drag with no reorder, reverting every transient DOM change."
            },
            {
              "kind": "method",
              "name": "revertDom",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Restores the container's exact child order so the host's next render reconciles cleanly."
            },
            {
              "kind": "field",
              "name": "onCancel",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "onTouchMove",
              "privacy": "private",
              "description": "Touch only, active once the hold has armed a drag: cancels the browser's native scroll/pan for\nthe rest of the gesture. Pointer-event preventDefault is ignored for touch scrolling, so a\nnon-passive touchmove handler is the reliable lever."
            },
            {
              "kind": "field",
              "name": "onKeyDown",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "suppressNextClick",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Swallows the click that a drag's pointerup would otherwise trigger, so it can't toggle selection."
            },
            {
              "kind": "method",
              "name": "removeClone",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "teardown",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            }
          ],
          "jsDoc": "/**\n * Pointer-based, framework-agnostic drag-to-reorder engine, exposed as a reactive controller.\n *\n * The host owns the data: the controller never mutates the model. It manages the gesture and, on\n * drop, calls {@link SortableOptions.onReorder} with the move; the host updates its array and\n * re-renders the committed order. The visual is sortablejs-style — a floating clone follows the\n * pointer while the original stays in place as a \"gap\" (styled by the host via the `sortable-ghost`\n * class) that slides to the candidate slot, rather than a drop line.\n *\n * Transient DOM changes (moving the ghost, the clone) are fully reverted before the host re-renders,\n * so framework reconciliation (Lit child parts, comment markers) is never disturbed.\n *\n * Wire it up by calling {@link start} from a `pointerdown` handler on a draggable item. Because the\n * drag only begins once the pointer passes {@link DRAG_THRESHOLD}, a plain click still falls through\n * to the host (e.g. selection); a real drag suppresses the trailing click. On touch the drag is a\n * press-and-hold ({@link TOUCH_HOLD_DELAY}) so a plain swipe scrolls the container instead; mouse and\n * pen drag immediately.\n */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "SortableController",
          "declaration": {
            "name": "SortableController",
            "module": "internal/sortable.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/switch/switch.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdSwitch",
          "cssProperties": [
            {
              "description": "The width of the switch.",
              "name": "--ed-switch-width"
            },
            {
              "description": "The height of the switch.",
              "name": "--ed-switch-height"
            },
            {
              "description": "The size of the thumb.",
              "name": "--ed-switch-thumb-size"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The control that houses the switch's thumb.",
              "name": "control"
            },
            {
              "description": "The switch's thumb.",
              "name": "thumb"
            },
            {
              "description": "The switch's label.",
              "name": "label"
            },
            {
              "description": "The state message: an error, a warning, or the AI note.",
              "name": "message"
            },
            {
              "description": "The hint's wrapper.",
              "name": "hint"
            }
          ],
          "slots": [
            {
              "description": "The switch's label.",
              "name": ""
            },
            {
              "description": "Text that describes how to use the switch. Alternatively, you can use the `hint` attribute.",
              "name": "hint"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "validators",
              "type": {
                "text": "Validator[]"
              },
              "default": "[]",
              "static": true,
              "description": "Validators are static because they have `observedAttributes`, essentially attributes to \"watch\"\nfor changes. Whenever these attributes change, we want to be notified and update the validator.",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "oldChecked",
              "type": {
                "text": "boolean"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, '[default]')"
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "text": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "parsedType": {
                "text": "HTMLElement & { value: unknown } | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "attribute": "title"
            },
            {
              "kind": "field",
              "name": "ariaLabel",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The switch's accessible name for when no visible label is slotted. Mirrored onto the internal\ninput, where the switch role lives — an aria-label left on the host alone would sit on a\nrole-less element and be ignored by assistive tech.",
              "attribute": "aria-label",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the switch, submitted as a name/value pair with form data.",
              "attribute": "name",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_value",
              "type": {
                "text": "string | undefined"
              },
              "privacy": "private",
              "description": "`undefined` marks \"never written\", which is what makes the `'on'` default apply; it is never\nobservable from outside, because `value` is always a string. A native checkbox — the counterpart\nfor a switch — does the same behind an always-string IDL attribute: an absent `value` content\nattribute reads as `'on'`."
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "Removing the attribute has to be told apart from assigning `null`, and Lit hands the setter\n`null` for both. The converter marks the attribute path with a sentinel, so removing it restores\nthe `'on'` default the way a native checkbox does, while the property path keeps its own rule.",
              "attribute": "value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the switch readonly.",
              "attribute": "readonly",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "_checked",
              "type": {
                "text": "boolean | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | false | true"
              }
            },
            {
              "kind": "field",
              "name": "checked",
              "description": "Draws the switch in a checked state."
            },
            {
              "kind": "field",
              "name": "defaultChecked",
              "type": {
                "text": "boolean"
              },
              "description": "The default value of the form control. Primarily used for resetting the form control.",
              "attribute": "checked",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the switch a required field.",
              "attribute": "required",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "withHint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "with-hint"
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleInput",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "suppressNextClick",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "suppressReleaseTimer",
              "type": {
                "text": "ReturnType<typeof setTimeout> | undefined"
              },
              "privacy": "private",
              "parsedType": {
                "text": "{ close: {  }, hasRef: {  }, ref: {  }, refresh: {  }, unref: {  }, _onTimeout: {  }, __@toPrimitive@535: {  }, __@dispose@4064: {  } } | undefined"
              }
            },
            {
              "kind": "method",
              "name": "handleMouseDragStart",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleMouseDrag",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleMouseDragEnd",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleValueOrCheckedChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "formStateRestoreCallback",
              "parameters": [
                {
                  "name": "state",
                  "type": {
                    "text": "string | File | FormData | null"
                  }
                },
                {
                  "name": "reason",
                  "type": {
                    "text": "'autocomplete' | 'restore'"
                  }
                }
              ],
              "description": "The restorable state is the checkedness, because that is what the user entered — `value` comes\nback from the markup on its own, and the base class would otherwise write the restored state\nthere and leave the checkedness untouched. A native checkbox restores exactly the checkedness."
            },
            {
              "kind": "method",
              "name": "click",
              "description": "Simulates a click on the switch."
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the switch."
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the switch."
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<EdFormAssociatedElement['setValue']>"
                  }
                }
              ],
              "description": "A switch submits its value only while it is on. Through `super` rather than\n`internals.setFormValue`, so anything the base class adds to that seam still applies here —\n`ed-form-associated-element.ts` omits `setFormValue` from its public surface for exactly that\nreason — and passing the state value along untouched, since it is what the browser hands back\non back-navigation. `ed-checkbox` and `ed-radio-group` guard the same way.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "formResetCallback",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "field",
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "attribute": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "attribute": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "attribute": "ai",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "attribute": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#fieldsetDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set by `formDisabledCallback`, i.e. an ancestor `<fieldset>`. Never written by a consumer.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#ownDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The disabled state this element was given directly, via its property or its attribute.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "attribute": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOn",
              "type": {
                "text": "string[]"
              },
              "default": "['input']",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOnMode",
              "type": {
                "text": "'combined' | 'separated' | string"
              },
              "default": "'combined'",
              "parsedType": {
                "text": "string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "valueHasChanged",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasInteracted",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_customValidityMessage",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_isCheckingValidity",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set while `checkValidity()` is executing so the `invalid` event handler can distinguish\na programmatic check (no UI side-effects per spec) from `reportValidity()` / native form\nsubmission (which should surface the error UI and focus the first invalid control).",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emittedEvents",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "states",
              "type": {
                "text": "CustomStateSet"
              },
              "parsedType": {
                "text": "any"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleSubmitOnEnter",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleClearOnEscape",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emitInvalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleInteraction",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "labels",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getForm",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "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": {
                "text": "HTMLFormElement | null"
              },
              "parsedType": {
                "text": "null | HTMLFormElement"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validity",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "willValidate",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationMessage",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "checkValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Override this to change where constraint validation popups are anchored.",
              "readonly": true,
              "parsedType": {
                "text": "HTMLElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValidity",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setValidity>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "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.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "allValidators",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "resetValidity",
              "description": "Reset validity is a way of removing manual custom errors and native validation.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "name": "change",
              "type": {
                "text": "Event"
              },
              "description": "Emitted when the control's checked state changes.",
              "reactName": "onChange",
              "eventName": "ChangeEvent"
            },
            {
              "name": "input",
              "type": {
                "text": "InputEvent"
              },
              "description": "Emitted when the control receives input.",
              "reactName": "onInput",
              "eventName": "InputEvent"
            },
            {
              "description": "Emitted when the control loses focus.",
              "name": "blur",
              "reactName": "onBlur",
              "eventName": "BlurEvent"
            },
            {
              "description": "Emitted when the control gains focus.",
              "name": "focus",
              "reactName": "onFocus",
              "eventName": "FocusEvent"
            },
            {
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied.",
              "name": "ed-invalid",
              "reactName": "onEdInvalid",
              "eventName": "EdInvalidEvent"
            }
          ],
          "attributes": [
            {
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "fieldName": "title"
            },
            {
              "name": "aria-label",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The switch's accessible name for when no visible label is slotted. Mirrored onto the internal\ninput, where the switch role lives — an aria-label left on the host alone would sit on a\nrole-less element and be ignored by assistive tech.",
              "fieldName": "ariaLabel",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the switch, submitted as a name/value pair with form data.",
              "fieldName": "name",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "Removing the attribute has to be told apart from assigning `null`, and Lit hands the setter\n`null` for both. The converter marks the attribute path with a sentinel, so removing it restores\nthe `'on'` default the way a native checkbox does, while the property path keeps its own rule.",
              "fieldName": "value"
            },
            {
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the switch readonly.",
              "fieldName": "readonly"
            },
            {
              "name": "checked",
              "type": {
                "text": "boolean"
              },
              "description": "The default value of the form control. Primarily used for resetting the form control.",
              "fieldName": "defaultChecked"
            },
            {
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the switch a required field.",
              "fieldName": "required"
            },
            {
              "name": "with-hint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "withHint"
            },
            {
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "fieldName": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "fieldName": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "fieldName": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "fieldName": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "fieldName": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "Applied when the switch is checked.",
              "name": "checked"
            },
            {
              "description": "Applied when the switch is disabled.",
              "name": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is required.",
              "name": "required",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is not required.",
              "name": "optional",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value fails constraint validation, whether or not the user has touched the control yet.",
              "name": "invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value passes constraint validation.",
              "name": "valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Invalid, and the user has interacted with the control. This is the one to style for an error: it behaves like the platform's `:user-invalid`, so an untouched field is not marked wrong before the user has had a chance to fill it in.",
              "name": "user-invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Valid, and the user has interacted with the control.",
              "name": "user-valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The user has interacted with the control.",
              "name": "dirty",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `error` property is set, or the control is `user-invalid`.",
              "name": "error",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `warning` property is set.",
              "name": "warning",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `ai` property is set and the user has not interacted with the control yet.",
              "name": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdFormAssociatedElement",
            "module": "/src/internal/ed-form-associated-element.js"
          },
          "summary": "Switches allow the user to toggle an option on or off.",
          "jsDoc": "/**\n * @summary Switches allow the user to toggle an option on or off.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/switch\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…').getByRole('switch')\n *\n * @dependency ed-icon\n *\n * @slot - The switch's label.\n * @slot hint - Text that describes how to use the switch. Alternatively, you can use the `hint` attribute.\n *\n * @event blur - Emitted when the control loses focus.\n * @event change - Emitted when the control's checked state changes.\n * @event input - Emitted when the control receives input.\n * @event focus - Emitted when the control gains focus.\n * @event ed-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n *\n * @csspart base - The component's base wrapper.\n * @csspart control - The control that houses the switch's thumb.\n * @csspart thumb - The switch's thumb.\n * @csspart label - The switch's label.\n * @csspart message - The state message: an error, a warning, or the AI note.\n * @csspart hint - The hint's wrapper.\n *\n * @cssproperty --ed-switch-width - The width of the switch.\n * @cssproperty --ed-switch-height - The height of the switch.\n * @cssproperty --ed-switch-thumb-size - The size of the thumb.\n *\n * @cssstate checked - Applied when the switch is checked.\n * @cssstate disabled - Applied when the switch is disabled.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/switch",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('switch')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-switch",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdSwitch",
            "module": "components/switch/switch.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-switch",
          "declaration": {
            "name": "EdSwitch",
            "module": "components/switch/switch.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/page-editor/page-editor.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdPageEditor",
          "cssProperties": [
            {
              "description": "The page card width; derived from `zoom`.",
              "name": "--ed-page-editor-page-width"
            }
          ],
          "cssParts": [
            {
              "description": "The top bar (file name, zoom, hide-deleted toggle).",
              "name": "toolbar"
            },
            {
              "description": "The action bar (select all, bulk actions, AI suggestions).",
              "name": "subbar"
            },
            {
              "description": "The scrollable area that lays out the page cards.",
              "name": "canvas"
            },
            {
              "description": "Each page card.",
              "name": "page"
            },
            {
              "description": "The split marker shown between two pages.",
              "name": "cut-marker"
            }
          ],
          "slots": [
            {
              "description": "Optional content shown at the start of the toolbar (defaults to the first file's name).",
              "name": "header"
            },
            {
              "description": "Optional extra controls shown at the end of the toolbar.",
              "name": "actions"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "files",
              "type": {
                "text": "PageEditorFile[]"
              },
              "default": "[]",
              "description": "The files to edit. Provide as a property, not an attribute."
            },
            {
              "kind": "field",
              "name": "aiSuggestions",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Opt-in: show the AI-suggestion controls and provenance chips. Off by default — set it only when\nthe document type carries AI suggestions (always on in ed-scan, usually off in DMS).",
              "attribute": "ai-suggestions",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "suggestionsPending",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set while AI suggestions are still being computed (e.g. a slow analysis running after the pages\nare already shown). The AI section shows a loading hint instead of the toggles. Clear it once the\nsuggestions are delivered via `provideSuggestions()`. Only meaningful with `ai-suggestions`.",
              "attribute": "suggestions-pending",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "hideDeleted",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Hide pages marked for deletion instead of dimming them in place.",
              "attribute": "hide-deleted",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "zoom",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "Thumbnail zoom factor (1 = the default page size).",
              "attribute": "zoom",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Render the whole editor read-only.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "workingFiles",
              "type": {
                "text": "WorkingFile[]"
              },
              "privacy": "private",
              "default": "[]",
              "description": "Working copy of `files`; the public property is cloned in so consumer data is never mutated."
            },
            {
              "kind": "field",
              "name": "selectedKeys",
              "privacy": "private",
              "default": "new Set<string>()",
              "description": "Selected page keys (`fileId#pageIndex`). Selection is transient and not part of the output."
            },
            {
              "kind": "field",
              "name": "erroredSrcs",
              "privacy": "private",
              "default": "new Set<string>()",
              "description": "Page image sources that failed to load; they fall back to the empty placeholder."
            },
            {
              "kind": "field",
              "name": "loadedSrcs",
              "privacy": "private",
              "default": "new Set<string>()",
              "description": "Page image sources that have finished loading; until then a skeleton shows."
            },
            {
              "kind": "field",
              "name": "aiSplitOn",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "true",
              "description": "Whether each AI suggestion type is currently applied (the three KI toggles)."
            },
            {
              "kind": "field",
              "name": "aiRotateOn",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "true"
            },
            {
              "kind": "field",
              "name": "aiDeleteOn",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "true"
            },
            {
              "kind": "field",
              "name": "lightbox",
              "type": {
                "text": "{ fileId: string; page: number } | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The open zoom lightbox: which file's pages to show and the focused (1-based) page; null = closed.",
              "parsedType": {
                "text": "null | { fileId: string, page: number }"
              }
            },
            {
              "kind": "field",
              "name": "currentPage",
              "type": {
                "text": "WorkingPage | undefined"
              },
              "privacy": "private",
              "description": "The page whose card was focused or clicked last; its card holds the page area's one Tab stop.",
              "parsedType": {
                "text": "{ rotatedBy?: 'user' | 'ai', deletedBy?: 'user' | 'ai', startsDocumentBy?: 'user' | 'ai', id?: string, src: string, preview?: string, label?: string, rotation?: 0 | 90 | 180 | 270, deleted?: false | true, startsDocument?: false | true, suggestion?: { rotation?: 90 | 180 | 270, deleted?: false | true, startsDocument?: false | true } } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "shownPages",
              "type": {
                "text": "WorkingPage[]"
              },
              "privacy": "private",
              "default": "[]",
              "description": "The pages shown at the last update, in reading order: where a current page that went away stood."
            },
            {
              "kind": "field",
              "name": "focusedPage",
              "type": {
                "text": "WorkingPage | undefined"
              },
              "privacy": "private",
              "description": "The current page while focus is in its card, read before an update re-renders the cards.",
              "parsedType": {
                "text": "{ rotatedBy?: 'user' | 'ai', deletedBy?: 'user' | 'ai', startsDocumentBy?: 'user' | 'ai', id?: string, src: string, preview?: string, label?: string, rotation?: 0 | 90 | 180 | 270, deleted?: false | true, startsDocument?: false | true, suggestion?: { rotation?: 90 | 180 | 270, deleted?: false | true, startsDocument?: false | true } } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "selectionAnchor",
              "type": {
                "text": "WorkingPage | undefined"
              },
              "privacy": "private",
              "description": "The page last toggled, which Shift+Space selects a range from.",
              "parsedType": {
                "text": "{ rotatedBy?: 'user' | 'ai', deletedBy?: 'user' | 'ai', startsDocumentBy?: 'user' | 'ai', id?: string, src: string, preview?: string, label?: string, rotation?: 0 | 90 | 180 | 270, deleted?: false | true, startsDocument?: false | true, suggestion?: { rotation?: 90 | 180 | 270, deleted?: false | true, startsDocument?: false | true } } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "actionsPage",
              "type": {
                "text": "WorkingPage | undefined"
              },
              "privacy": "private",
              "description": "The page whose actions the keyboard moved into, until focus returns to the card or leaves it. Its\nhover menu stays shown: the footer checkbox does not match :focus-visible from this shadow root,\nso the stylesheet alone cannot tell a keyboard visit to it from a click.",
              "parsedType": {
                "text": "{ rotatedBy?: 'user' | 'ai', deletedBy?: 'user' | 'ai', startsDocumentBy?: 'user' | 'ai', id?: string, src: string, preview?: string, label?: string, rotation?: 0 | 90 | 180 | 270, deleted?: false | true, startsDocument?: false | true, suggestion?: { rotation?: 90 | 180 | 270, deleted?: false | true, startsDocument?: false | true } } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "canvasEl",
              "type": {
                "text": "HTMLElement | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "sortable",
              "privacy": "private",
              "default": "new SortableController(this, { container: () => this.canvasEl ?? null, getItems: () => (this.canvasEl ? [...this.canvasEl.querySelectorAll<HTMLElement>('.page-unit')] : []), itemFor: target => target.closest<HTMLElement>('.page-unit'), // Keep reorder within a single file — documents are split by cut markers, not across files. groupOf: item => item.querySelector<HTMLElement>('[part~=\"page\"]')?.dataset.fileId, axis: 'horizontal', overlay: () => this.shadowRoot ?? document.body, // Size the clone to its content (the card), not the dragged element's box. cloneSize: 'auto', onReorder: drop => this.reorderPages(drop), onDragStart: () => (this.dragActive = true), onDragEnd: () => { this.dragActive = false; this.requestUpdate(); } })",
              "description": "Drag-to-reorder engine. The host owns the model; the controller only reports the committed move."
            },
            {
              "kind": "field",
              "name": "dragActive",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "True while a reorder drag is in flight — renders are suppressed so they can't fight the drag DOM."
            },
            {
              "kind": "field",
              "name": "resizeObserver",
              "type": {
                "text": "ResizeObserver | undefined"
              },
              "privacy": "private",
              "parsedType": {
                "text": "{ disconnect: {  }, observe: {  }, unobserve: {  } } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "previewObserver",
              "type": {
                "text": "IntersectionObserver | undefined"
              },
              "privacy": "private",
              "description": "Lazily requests previews for pages without a `src` as they near the viewport.",
              "parsedType": {
                "text": "{ root: null | Element | Document, rootMargin: string, thresholds: number[], disconnect: {  }, observe: {  }, takeRecords: {  }, unobserve: {  } } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "observedCells",
              "privacy": "private",
              "default": "new Set<Element>()"
            },
            {
              "kind": "field",
              "name": "requestedPreviews",
              "privacy": "private",
              "default": "new Set<WorkingPage>()",
              "description": "Pages a preview has already been requested for (keyed by page), to emit only once."
            },
            {
              "kind": "field",
              "name": "previewControllers",
              "privacy": "private",
              "default": "new Map<WorkingPage, AbortController>()",
              "description": "Abort controllers for in-flight preview requests, keyed by page; aborted when a page leaves."
            },
            {
              "kind": "field",
              "name": "requestedHighRes",
              "privacy": "private",
              "default": "new Set<WorkingPage>()",
              "description": "Pages a high-resolution (lightbox) preview has been requested for, to request each only once."
            },
            {
              "kind": "field",
              "name": "highResController",
              "type": {
                "text": "AbortController | undefined"
              },
              "privacy": "private",
              "description": "Abort controller for the in-flight lightbox preview; aborted when the lightbox moves on or closes.",
              "parsedType": {
                "text": "{ signal: { aborted: boolean, onabort: null | {  }, reason: any, throwIfAborted: {  }, addEventListener: {  }, removeEventListener: {  }, dispatchEvent: {  } }, abort: {  } } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "reordered",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set once a drag reorders pages — order changes aren't caught by the field-by-field dirty check."
            },
            {
              "kind": "method",
              "name": "observePages",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Observes each page card so a preview is requested as it nears the viewport (lazy loading)."
            },
            {
              "kind": "method",
              "name": "cellPage",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "{ fileId: string; page: WorkingPage } | null"
                }
              },
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "requestPreview",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "cancelPreview",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "cell",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "A page left the viewport before loading → abort its request so the now-visible pages load first."
            },
            {
              "kind": "method",
              "name": "abortPreviews",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "providePagePreview",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "page",
                  "type": {
                    "text": "PageEditorPage"
                  }
                },
                {
                  "name": "src",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "variant",
                  "default": "'thumbnail'",
                  "type": {
                    "text": "'thumbnail' | 'preview'"
                  }
                }
              ],
              "description": "Injects a fetched preview for a page (in response to `ed-request-preview`). Pass the `page` and the\n`variant` from the event — identifying by reference (not an index) survives a reorder that happened\nwhile the preview was loading. `'thumbnail'` (default) sets the grid image; `'preview'` sets the\nhigher-resolution source the zoom lightbox uses. Set in place, so in-progress edits are preserved."
            },
            {
              "kind": "method",
              "name": "provideSuggestions",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "suggestions",
                  "type": {
                    "text": "{ id: string; suggestion: PageEditorSuggestion }[]"
                  }
                }
              ],
              "description": "Injects AI suggestions that arrived after the pages were set — e.g. a slow analysis completing\nwhile the editor is already interactive. Each entry targets a page by its `id`; the suggestion is\nmerged onto that page and the enabled toggles are re-applied. Pages the user has already rotated,\ndeleted or split keep their edit (provenance is preserved). Unknown ids are ignored, and it is a\nno-op when nothing matched. Pair with the `suggestions-pending` attribute to show a loading hint."
            },
            {
              "kind": "method",
              "name": "updateLineFades",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Fades the grouping band where a document continues across a line wrap. A unit fades on the left\nwhen it's the first of a visual line but not a document start, and on the right when it's the\nlast of a line but not a document end — mirroring the canonical firstOfLine/lastOfLine gradients."
            },
            {
              "kind": "method",
              "name": "getResult",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "PageEditorFile[]"
                }
              },
              "description": "The current edited state — the same `files` shape carried by `ed-edit`, including edits applied\nfrom AI suggestions on load. Read it at save time so you capture the result even when the user\naccepted the suggestions without making a manual edit (which wouldn't have fired `ed-edit`)."
            },
            {
              "kind": "method",
              "name": "copyOfFiles",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "PageEditorFile[]"
                }
              },
              "description": "The working files as `ed-edit` and getResult() hand them out: each file, page and suggestion copied, so\na consumer that keeps them or changes them leaves the editor and every later edit alone."
            },
            {
              "kind": "field",
              "name": "pageOfCopy",
              "privacy": "private",
              "readonly": true,
              "default": "new WeakMap<PageEditorPage, WorkingPage>()",
              "description": "The page each copied page stands for, so providePagePreview() takes a page from getResult() or ed-edit too."
            },
            {
              "kind": "method",
              "name": "isDirty",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "description": "Returns true once any editable field differs from the input (used as the `ed-edit` dirty flag)."
            },
            {
              "kind": "method",
              "name": "pageKey",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "WorkingFile"
                  }
                },
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "isLocked",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "WorkingFile"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "nextRotation",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "PageEditorRotation"
                }
              },
              "parameters": [
                {
                  "name": "rotation",
                  "optional": true,
                  "type": {
                    "text": "PageEditorRotation"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "selectablePageCount",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "description": "Total number of selectable (non-locked) pages.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "forEachSelected",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "fn",
                  "type": {
                    "text": "(file: WorkingFile, page: WorkingPage, index: number) => void"
                  }
                }
              ],
              "description": "Runs a callback over every currently-selected, editable page."
            },
            {
              "kind": "method",
              "name": "splitInGap",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "WorkingFile"
                  }
                },
                {
                  "name": "fromIndex",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "toIndex",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Whether any page in the gap `(fromIndex, toIndex]` starts a document (a boundary lives there)."
            },
            {
              "kind": "method",
              "name": "aiSplitInGap",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "WorkingFile"
                  }
                },
                {
                  "name": "fromIndex",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "toIndex",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Whether the gap holds an applied AI split (drives the purple marker)."
            },
            {
              "kind": "method",
              "name": "userSplitInGap",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "WorkingFile"
                  }
                },
                {
                  "name": "fromIndex",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "toIndex",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Whether the gap holds an applied user split — a user split wins over an AI split in the gap."
            },
            {
              "kind": "method",
              "name": "aiSplitCount",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "description": "Visible AI split markers. An AI-suggested split counts unless a user split shares its gap (e.g.\nhide-deleted collapsed both and the user split wins) — so the split toggle's count and disabled\nstate stay in sync with what's actually shown as AI."
            },
            {
              "kind": "method",
              "name": "handlePagePointerDown",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "PointerEvent"
                  }
                },
                {
                  "name": "file",
                  "type": {
                    "text": "WorkingFile"
                  }
                }
              ],
              "description": "Arms a drag from the page body, but not from its controls (selection checkbox, hover buttons, cut marker)."
            },
            {
              "kind": "method",
              "name": "cards",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLElement[]"
                }
              },
              "description": "The page cards in reading order."
            },
            {
              "kind": "method",
              "name": "cardActions",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLElement[]"
                }
              },
              "parameters": [
                {
                  "name": "card",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "A card's own controls in the order Tab cycles them: the hover actions, the checkbox, the cut marker."
            },
            {
              "kind": "method",
              "name": "tabStopPage",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "WorkingPage | undefined"
                }
              },
              "description": "The page whose card holds the Tab stop: the current one while it is shown, else the first shown."
            },
            {
              "kind": "method",
              "name": "keepCurrentPage",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Keeps the Tab stop on a page that is shown. When the current page stops being shown — hidden as\ndeleted, or gone with a new `files` — the next shown page after it becomes current, else the one\nbefore it, else the first."
            },
            {
              "kind": "method",
              "name": "restoreFocus",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "The cards are reused by position, so after an update the card that held focus can show another\npage or be gone. Focus then goes to the current page's card — also when it went away from an\naction, which the card it sat in now offers for a different page."
            },
            {
              "kind": "method",
              "name": "handleGridFocusIn",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "FocusEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleGridFocusOut",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "FocusEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleGridKeyDown",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ],
              "description": "The page area is an APG layout grid (https://www.w3.org/WAI/ARIA/apg/patterns/grid/), one row per\ncard: the arrows, Home and End move between cards, Space and Ctrl/Cmd+A select, Shift with an\narrow reorders, and Enter moves into the card's actions."
            },
            {
              "kind": "method",
              "name": "handleActionKeyDown",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                },
                {
                  "name": "card",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "target",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "Inside a card, Tab and Shift+Tab cycle its actions and wrap, and Escape returns to the card."
            },
            {
              "kind": "method",
              "name": "neighborCard",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLElement | undefined"
                }
              },
              "parameters": [
                {
                  "name": "card",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "The card a navigation key lands on from `card`; undefined past the edge."
            },
            {
              "kind": "method",
              "name": "cardOnAdjacentLine",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLElement | undefined"
                }
              },
              "parameters": [
                {
                  "name": "cards",
                  "type": {
                    "text": "HTMLElement[]"
                  }
                },
                {
                  "name": "card",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "below",
                  "type": {
                    "text": "boolean"
                  }
                }
              ],
              "description": "The card on the visual line above or below `card` whose horizontal center is nearest to its own.\nMeasured at key time: the lines depend on the canvas width, the zoom and which pages are shown."
            },
            {
              "kind": "method",
              "name": "moveCard",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "card",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "neighbor",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "Moves a card's page one slot onto `neighbor` through the drop path, so a key move follows the same\ndocument-boundary rules as a drag: after a neighbor later in reading order, before an earlier one.\nFocus follows the page through restoreFocus()."
            },
            {
              "kind": "method",
              "name": "openLightbox",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "WorkingFile"
                  }
                },
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Opens the zoom lightbox on a page (allowed for locked files too — it's view-only)."
            },
            {
              "kind": "method",
              "name": "closeLightbox",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Closes the lightbox and aborts any in-flight high-resolution request."
            },
            {
              "kind": "method",
              "name": "requestLightboxPreview",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Requests the higher-resolution `preview` for the page currently shown in the lightbox (once per\npage). The lightbox falls back to the grid `src` until it arrives, so it sharpens in place."
            },
            {
              "kind": "method",
              "name": "adoptLightboxRotation",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "WorkingFile"
                  }
                },
                {
                  "name": "event",
                  "type": {
                    "text": "EdRotateEvent"
                  }
                }
              ],
              "description": "Adopts a rotation performed in the zoom-lightbox viewer as a real user edit on the page, so it\npersists — a plain viewer rotation is transient and lost on navigation. No-op for locked files."
            },
            {
              "kind": "method",
              "name": "toggleSelect",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "WorkingFile"
                  }
                },
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "selectRange",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "page",
                  "type": {
                    "text": "WorkingPage"
                  }
                }
              ],
              "description": "Adds every editable page shown between the anchor and `page`, in reading order, to the selection."
            },
            {
              "kind": "method",
              "name": "toggleSelectAll",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "rotatePage",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "WorkingFile"
                  }
                },
                {
                  "name": "page",
                  "type": {
                    "text": "WorkingPage"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "toggleDelete",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "WorkingFile"
                  }
                },
                {
                  "name": "page",
                  "type": {
                    "text": "WorkingPage"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "toggleSplit",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "WorkingFile"
                  }
                },
                {
                  "name": "fromIndex",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "toIndex",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Toggles the document boundary in the gap between two visible pages. Splitting marks the gap's\ntrailing page; merging clears every boundary in the gap (so a split hidden by hide-deleted, AI\nor user, is removed too). Reading and writing over the whole gap is what keeps hidden pages\ncorrect (no double markers; AI splits restore when the deleted page is shown again)."
            },
            {
              "kind": "method",
              "name": "visibleEntries",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "{ file: WorkingFile; page: WorkingPage }[]"
                }
              },
              "description": "The pages currently shown, in render order (skips deleted pages while hide-deleted is on)."
            },
            {
              "kind": "method",
              "name": "reorderPages",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "drop",
                  "type": {
                    "text": "SortableDrop"
                  }
                }
              ],
              "description": "Moves a page to a new slot in response to a drag. The `drop` indices address the visible page\nlist (what the sortable controller sees). Document boundaries follow the canonical FileEditor\nrules: a dragged page that *started* a document leaves its boundary behind (its old successor\ninherits it), and dropping a page immediately *before* a document start transfers that boundary\nonto the dropped page. The first page of a file always starts a document."
            },
            {
              "kind": "method",
              "name": "higherProvenance",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EditSource | undefined"
                }
              },
              "parameters": [
                {
                  "name": "a",
                  "optional": true,
                  "type": {
                    "text": "EditSource"
                  }
                },
                {
                  "name": "b",
                  "optional": true,
                  "type": {
                    "text": "EditSource"
                  }
                }
              ],
              "description": "The higher-priority provenance of two merged boundaries: undefined (system) < ai < user."
            },
            {
              "kind": "method",
              "name": "rotateSelected",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "deleteSelected",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "splitSelected",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "setZoom",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleHideDeleted",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "applyAiSuggestions",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "(Re-)applies the AI suggestions to pages the user has not overridden, honoring the KI toggles."
            },
            {
              "kind": "method",
              "name": "aiCount",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "kind",
                  "type": {
                    "text": "'rotation' | 'deleted'"
                  }
                }
              ],
              "description": "Number of AI rotate/delete suggestions the user has not overridden (drives the toggle counts).\nSplits are counted by aiSplitCount() instead — it is gap-based and hide-deleted-aware."
            },
            {
              "kind": "method",
              "name": "toggleAiSplit",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "toggleAiRotate",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "toggleAiDelete",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "commit",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Re-render after mutating the working model, then emit the edit."
            },
            {
              "kind": "method",
              "name": "isValid",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "description": "At least one non-deleted page must remain in every non-locked, non-empty file."
            },
            {
              "kind": "method",
              "name": "renderLightbox",
              "privacy": "private",
              "description": "The zoom lightbox: a fullscreen dialog embedding ed-document-viewer on the clicked file's pages."
            },
            {
              "kind": "method",
              "name": "renderToolbar",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderSubbar",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderAiSection",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderAiToggles",
              "privacy": "private",
              "parameters": [
                {
                  "name": "splitCount",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "rotateCount",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "deleteCount",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderFile",
              "privacy": "private",
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "WorkingFile"
                  }
                },
                {
                  "name": "tabStop",
                  "type": {
                    "text": "WorkingPage | undefined"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderPageCard",
              "privacy": "private",
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "WorkingFile"
                  }
                },
                {
                  "name": "page",
                  "type": {
                    "text": "WorkingPage"
                  }
                },
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "docStart",
                  "type": {
                    "text": "boolean"
                  }
                },
                {
                  "name": "docEnd",
                  "type": {
                    "text": "boolean"
                  }
                },
                {
                  "name": "tabStop",
                  "type": {
                    "text": "boolean"
                  }
                },
                {
                  "name": "nextIndex",
                  "type": {
                    "text": "number | undefined"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderImage",
              "privacy": "private",
              "parameters": [
                {
                  "name": "page",
                  "type": {
                    "text": "WorkingPage"
                  }
                },
                {
                  "name": "label",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "The page preview. Three states: no `src` yet → skeleton (the consumer fetches it lazily on\n`ed-request-preview`); load error → placeholder; otherwise the image, with a skeleton behind it\nuntil `@load` (and `loading=\"lazy\"` so the browser defers off-screen images it already has URLs for)."
            },
            {
              "kind": "method",
              "name": "renderCutMarker",
              "privacy": "private",
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "WorkingFile"
                  }
                },
                {
                  "name": "fromIndex",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "toIndex",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "The split marker in the gap between two visible pages (`fromIndex`, the next visible `toIndex`)."
            },
            {
              "kind": "method",
              "name": "renderChip",
              "privacy": "private",
              "parameters": [
                {
                  "name": "page",
                  "type": {
                    "text": "WorkingPage"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ files: PageEditorFile[], dirty: boolean, valid: boolean }"
              },
              "description": "Emitted on every edit. `detail` is `{ files, dirty, valid }`.",
              "name": "ed-edit",
              "reactName": "onEdEdit",
              "eventName": "EdEditEvent"
            },
            {
              "type": {
                "text": "{ fileId: string, page: PageEditorPage, variant: 'thumbnail' | 'preview', signal: AbortSignal }"
              },
              "description": "Emitted when a page image is needed: a `'thumbnail'` when a page without a `src` nears the grid viewport, or a `'preview'` (higher-resolution) when a page is opened in the zoom lightbox. Fetch the matching source and call `providePagePreview(page, src, variant)`. `detail` is `{ fileId, page, variant, signal }`; `signal` aborts when the request is superseded.",
              "name": "ed-request-preview",
              "reactName": "onEdRequestPreview",
              "eventName": "EdRequestPreviewEvent"
            }
          ],
          "attributes": [
            {
              "name": "ai-suggestions",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Opt-in: show the AI-suggestion controls and provenance chips. Off by default — set it only when\nthe document type carries AI suggestions (always on in ed-scan, usually off in DMS).",
              "fieldName": "aiSuggestions"
            },
            {
              "name": "suggestions-pending",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set while AI suggestions are still being computed (e.g. a slow analysis running after the pages\nare already shown). The AI section shows a loading hint instead of the toggles. Clear it once the\nsuggestions are delivered via `provideSuggestions()`. Only meaningful with `ai-suggestions`.",
              "fieldName": "suggestionsPending"
            },
            {
              "name": "hide-deleted",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Hide pages marked for deletion instead of dimming them in place.",
              "fieldName": "hideDeleted"
            },
            {
              "name": "zoom",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "Thumbnail zoom factor (1 = the default page size).",
              "fieldName": "zoom"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Render the whole editor read-only.",
              "fieldName": "disabled"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "Applied when there are no files to edit.",
              "name": "empty"
            },
            {
              "description": "Applied when the editor is read-only.",
              "name": "disabled"
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Edits the pages of one or more scanned files — rotate, delete, split, reorder — with\noptional AI suggestions. The generic page editor behind DMS scan workflows; place it in a dialog.",
          "jsDoc": "/**\n * @summary Edits the pages of one or more scanned files — rotate, delete, split, reorder — with\n * optional AI suggestions. The generic page editor behind DMS scan workflows; place it in a dialog.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/page-editor\n * @status experimental\n * @level organism\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-badge\n * @dependency ed-button\n * @dependency ed-checkbox\n * @dependency ed-dialog\n * @dependency ed-document-viewer\n * @dependency ed-icon\n * @dependency ed-progress-ring\n * @dependency ed-skeleton\n * @dependency ed-slider\n * @dependency ed-switch\n *\n * @slot header - Optional content shown at the start of the toolbar (defaults to the first file's name).\n * @slot actions - Optional extra controls shown at the end of the toolbar.\n *\n * @event {{ files: PageEditorFile[], dirty: boolean, valid: boolean }} ed-edit - Emitted on every edit. `detail` is `{ files, dirty, valid }`.\n * @event {{ fileId: string, page: PageEditorPage, variant: 'thumbnail' | 'preview', signal: AbortSignal }} ed-request-preview - Emitted when a page image is needed: a `'thumbnail'` when a page without\n *        a `src` nears the grid viewport, or a `'preview'` (higher-resolution) when a page is opened in\n *        the zoom lightbox. Fetch the matching source and call `providePagePreview(page, src, variant)`.\n *        `detail` is `{ fileId, page, variant, signal }`; `signal` aborts when the request is superseded.\n *\n * @csspart toolbar - The top bar (file name, zoom, hide-deleted toggle).\n * @csspart subbar - The action bar (select all, bulk actions, AI suggestions).\n * @csspart canvas - The scrollable area that lays out the page cards.\n * @csspart page - Each page card.\n * @csspart cut-marker - The split marker shown between two pages.\n *\n * @cssstate empty - Applied when there are no files to edit.\n * @cssstate disabled - Applied when the editor is read-only.\n *\n * @cssproperty [--ed-page-editor-page-width] - The page card width; derived from `zoom`.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/page-editor",
          "status": "experimental",
          "level": "organism",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-badge",
            "ed-button",
            "ed-checkbox",
            "ed-dialog",
            "ed-document-viewer",
            "ed-icon",
            "ed-progress-ring",
            "ed-skeleton",
            "ed-slider",
            "ed-switch"
          ],
          "tagName": "ed-page-editor",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdPageEditor",
            "module": "components/page-editor/page-editor.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-page-editor",
          "declaration": {
            "name": "EdPageEditor",
            "module": "components/page-editor/page-editor.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/progress-bar/progress-bar.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdProgressBar",
          "cssProperties": [
            {
              "description": "The height of the track.",
              "name": "--ed-progress-bar-track-height",
              "default": "calc(2 * var(--ed-border-width-3))"
            },
            {
              "description": "The color of the track.",
              "name": "--ed-progress-bar-track-color",
              "default": "var(--ed-color-slider-background-color)"
            },
            {
              "description": "The color of the indicator.",
              "name": "--ed-progress-bar-indicator-color",
              "default": "var(--ed-color-brand-fill-normal)"
            }
          ],
          "cssParts": [
            {
              "description": "The label element above the bar.",
              "name": "form-control-label"
            },
            {
              "description": "The component's base wrapper (track).",
              "name": "base"
            },
            {
              "description": "The progress bar's indicator (fill).",
              "name": "indicator"
            }
          ],
          "slots": [
            {
              "description": "The progress bar's label. Alternatively, you can use the `label` attribute.",
              "name": "label"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'label')"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The current progress as a percentage, 0 to 100. A value outside the range is drawn and reported\nat the nearer end of it; a value that is no number at all counts as 0.",
              "attribute": "value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "indeterminate",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, percentage is ignored and the progress bar is drawn in an indeterminate state.",
              "attribute": "indeterminate",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The progress bar's label. If you need to display HTML, use the `label` slot instead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "ariaLabel",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The progress bar's accessible name for when no visible label is wanted. Mirrored onto the\ninternal progressbar node, where the role lives — an aria-label left on the host alone would\nsit on a role-less element and be ignored by assistive tech (house pattern: ed-checkbox).",
              "attribute": "aria-label",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "usableValue",
              "privacy": "private",
              "description": "The progress this bar draws and announces: inside 0–100, and 0 for a value that is no number at\nall. Lit's Number converter hands an unreadable attribute over as `NaN`, and a percentage\ncomputed from a division by zero arrives the same way; `NaN` fails both of `clamp()`'s\ncomparisons and would reach `aria-valuenow` and the CSS percentage verbatim. A native\n`<progress value=\"abc\" max=\"100\">` reports 0 and stays determinate — measured in Chromium:\n`.value` 0, `.position` 0.\n\nCoercing first is what keeps an untyped caller working: `Number.isNaN` does not coerce, and a\npercentage that arrives as the string `'50'` — from JSON, from a template, from plain JS — is a\nvalue the platform reads as a number.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "value",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The current progress as a percentage, 0 to 100. A value outside the range is drawn and reported\nat the nearer end of it; a value that is no number at all counts as 0.",
              "fieldName": "value"
            },
            {
              "name": "indeterminate",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, percentage is ignored and the progress bar is drawn in an indeterminate state.",
              "fieldName": "indeterminate"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The progress bar's label. If you need to display HTML, use the `label` slot instead.",
              "fieldName": "label"
            },
            {
              "name": "aria-label",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The progress bar's accessible name for when no visible label is wanted. Mirrored onto the\ninternal progressbar node, where the role lives — an aria-label left on the host alone would\nsit on a role-less element and be ignored by assistive tech (house pattern: ed-checkbox).",
              "fieldName": "ariaLabel",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Progress bars are used to show the status of an ongoing operation.",
          "jsDoc": "/**\n * @summary Progress bars are used to show the status of an ongoing operation.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/progress-bar\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…').getByRole('progressbar')\n *\n * @slot label - The progress bar's label. Alternatively, you can use the `label` attribute.\n *\n * @csspart form-control-label - The label element above the bar.\n * @csspart base - The component's base wrapper (track).\n * @csspart indicator - The progress bar's indicator (fill).\n *\n * @cssproperty [--ed-progress-bar-track-height=calc(2 * var(--ed-border-width-3))] - The height of the track.\n * @cssproperty [--ed-progress-bar-track-color=var(--ed-color-slider-background-color)] - The color of the track.\n * @cssproperty [--ed-progress-bar-indicator-color=var(--ed-color-brand-fill-normal)] - The color of the indicator.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/progress-bar",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('progressbar')",
          "tagName": "ed-progress-bar",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdProgressBar",
            "module": "components/progress-bar/progress-bar.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-progress-bar",
          "declaration": {
            "name": "EdProgressBar",
            "module": "components/progress-bar/progress-bar.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/radio-group/radio-group.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdRadioGroup",
          "cssParts": [
            {
              "description": "The form control that wraps the label, input, and hint.",
              "name": "form-control"
            },
            {
              "description": "The label's wrapper.",
              "name": "form-control-label"
            },
            {
              "description": "The flex container holding the radios, and the sliding indicator when `appearance` is `button`.",
              "name": "base"
            },
            {
              "description": "The filled pill behind the checked segment, which slides between them. Only rendered when `appearance` is `button`.",
              "name": "indicator"
            },
            {
              "description": "The state message: an error, a warning, or the AI note.",
              "name": "message"
            },
            {
              "description": "The hint's wrapper.",
              "name": "hint"
            }
          ],
          "slots": [
            {
              "description": "The default slot where `<ed-radio>` elements are placed.",
              "name": ""
            },
            {
              "description": "The radio group's label. Required for proper accessibility. Alternatively, you can use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "Text that describes how to use the radio group. Alternatively, you can use the `hint` attribute.",
              "name": "hint"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "validators",
              "type": {
                "text": "Validator[]"
              },
              "default": "[]",
              "static": true,
              "description": "Validators are static because they have `observedAttributes`, essentially attributes to \"watch\"\nfor changes. Whenever these attributes change, we want to be notified and update the validator.",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'label')"
            },
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The radio group's label. Required for proper accessibility. If you need to display HTML, use the `label` slot\ninstead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the radio group, submitted as a name/value pair with form data.",
              "attribute": "name",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'vertical'",
              "description": "The orientation in which to show radio items.",
              "attribute": "orientation",
              "reflects": true,
              "parsedType": {
                "text": "'horizontal' | 'vertical'"
              }
            },
            {
              "kind": "field",
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the radio group and all child radios readonly.",
              "attribute": "readonly",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "_value",
              "type": {
                "text": "string | undefined"
              },
              "privacy": "private",
              "default": "undefined",
              "description": "`undefined` marks \"never written\", which is what makes the default apply; it is never observable\nfrom outside, because `value` is always a string. HTML keeps the same distinction internally\nthrough the value mode and exposes a `DOMString` either way."
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The current value of the radio group, submitted as a name/value pair with form data. A group with\nnothing selected reads `''`, as a native group's `RadioNodeList` does — never `null`."
            },
            {
              "kind": "field",
              "name": "defaultValue",
              "type": {
                "text": "string"
              },
              "description": "The default value of the form control. Primarily used for resetting the form control.",
              "attribute": "value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Ensures a child radio is checked before allowing the containing form to submit.",
              "attribute": "required",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "withLabel",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "with-label"
            },
            {
              "kind": "field",
              "name": "withHint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "with-hint"
            },
            {
              "kind": "field",
              "name": "appearance",
              "type": {
                "text": "'default' | 'button' | 'card'"
              },
              "default": "'default'",
              "description": "The appearance of the radios in the group: `button` renders them as a segmented control, `card`\nas stacked cards carrying a title, a description and trailing chips.",
              "attribute": "appearance",
              "reflects": true,
              "parsedType": {
                "text": "'default' | 'button' | 'card'"
              }
            },
            {
              "kind": "field",
              "name": "ariaLabel",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "Accessible name for when no visible label is given. Mirrored onto the internal\n`role=\"radiogroup\"` node, where the role lives — the host is deliberately role-less, so a\nconsumer's aria-label would otherwise sit on an element assistive technology ignores.\n\nA visible label wins: the node references it with `aria-labelledby` while there is one, and\nonly then — accessible-name computation consults aria-labelledby first.",
              "attribute": "aria-label",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "inputWrapper",
              "type": {
                "text": "HTMLElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "indicatorElement",
              "type": {
                "text": "HTMLElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "indicatorPlaced",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "False until the indicator has been measured once. The transition hangs off this, so the first\nplacement lands silently instead of sliding in from the left edge on load."
            },
            {
              "kind": "field",
              "name": "indicatorResizeObserver",
              "privacy": "private",
              "description": "The segments are slotted light-DOM elements, so the group cannot know their geometry from its\nown template — it has to measure them. Their width follows their label, and the group's own\nwidth is `max-content`, so anything that changes text (font loading, a relabelled option, a\nlocale switch) moves them."
            },
            {
              "kind": "field",
              "name": "radioDisabledObserver",
              "privacy": "private",
              "description": "The group owns the roving tab stop — which radio is reachable by Tab depends on the whole set,\nnot on any one member. But a radio also writes its own `tabIndex` when its `disabled` changes,\nand the group otherwise only re-syncs on its own properties or a slotchange. Disabling the\nradio that currently holds the stop therefore surrendered it with nobody to pass it on, and the\ngroup ended up with no tabbable radio at all.\n\nOnly `disabled` is watched: `syncRadioElements` writes `readonly`, `appearance` and the\n`data-ed-radio-*` attributes itself, so observing those would feed back into this callback."
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "We use the first available radio as the validationTarget similar to native HTML that shows the validation popup on\nthe first radio element.",
              "readonly": true,
              "parsedType": {
                "text": "HTMLElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "observeRadioDisabled",
              "privacy": "private",
              "parameters": [
                {
                  "name": "radios",
                  "type": {
                    "text": "EdRadio[]"
                  }
                }
              ],
              "description": "Re-targets the observer at the current set of radios; they change with every slotchange."
            },
            {
              "kind": "method",
              "name": "observeForIndicator",
              "privacy": "private",
              "description": "Watches the segment row, which resizes whenever a label's width changes."
            },
            {
              "kind": "method",
              "name": "positionIndicator",
              "privacy": "private",
              "description": "Moves the sliding indicator onto the checked segment.\n\nMeasured rather than derived: segments size to their own labels, so their offsets are only\nknowable from layout. Physical coordinates on purpose — `getBoundingClientRect` is physical, so\nthe same arithmetic holds in RTL without a sign flip."
            },
            {
              "kind": "method",
              "name": "formResetCallback",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<EdFormAssociatedElement['formResetCallback']>"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleRadioClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getAllRadios",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<EdFormAssociatedElement['setValue']>"
                  }
                }
              ],
              "description": "Only a checked radio is submitted (HTML, \"Constructing the entry list\": a radio button whose\ncheckedness is false is skipped), so a group with no selection contributes no entry at all —\neven though `value` reads `''`. The match is on values rather than the radios' `checked` flags,\nwhich are synced an update later, and it reads the attribute as well so a child that has not\nupgraded yet still counts.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "handleLabelClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "syncRadioElements",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "focus",
              "privacy": "public",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the radio group."
            },
            {
              "kind": "field",
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "attribute": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "attribute": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "attribute": "ai",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "attribute": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#fieldsetDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set by `formDisabledCallback`, i.e. an ancestor `<fieldset>`. Never written by a consumer.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#ownDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The disabled state this element was given directly, via its property or its attribute.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "attribute": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOn",
              "type": {
                "text": "string[]"
              },
              "default": "['input']",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOnMode",
              "type": {
                "text": "'combined' | 'separated' | string"
              },
              "default": "'combined'",
              "parsedType": {
                "text": "string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "text": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "parsedType": {
                "text": "HTMLElement & { value: unknown } | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "valueHasChanged",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasInteracted",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_customValidityMessage",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_isCheckingValidity",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set while `checkValidity()` is executing so the `invalid` event handler can distinguish\na programmatic check (no UI side-effects per spec) from `reportValidity()` / native form\nsubmission (which should surface the error UI and focus the first invalid control).",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emittedEvents",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "states",
              "type": {
                "text": "CustomStateSet"
              },
              "parsedType": {
                "text": "any"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleSubmitOnEnter",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleClearOnEscape",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emitInvalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleInteraction",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "labels",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getForm",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "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": {
                "text": "HTMLFormElement | null"
              },
              "parsedType": {
                "text": "null | HTMLFormElement"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validity",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "willValidate",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationMessage",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "checkValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValidity",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setValidity>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "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.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "allValidators",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "resetValidity",
              "description": "Reset validity is a way of removing manual custom errors and native validation.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "name": "input",
              "type": {
                "text": "InputEvent"
              },
              "description": "Emitted when the radio group receives user input.",
              "reactName": "onInput",
              "eventName": "InputEvent"
            },
            {
              "name": "change",
              "type": {
                "text": "Event"
              },
              "description": "Emitted when the radio group's selected value changes.",
              "reactName": "onChange",
              "eventName": "ChangeEvent"
            },
            {
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied.",
              "name": "ed-invalid",
              "reactName": "onEdInvalid",
              "eventName": "EdInvalidEvent"
            }
          ],
          "attributes": [
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The radio group's label. Required for proper accessibility. If you need to display HTML, use the `label` slot\ninstead.",
              "fieldName": "label"
            },
            {
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the radio group, submitted as a name/value pair with form data.",
              "fieldName": "name",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'vertical'",
              "description": "The orientation in which to show radio items.",
              "fieldName": "orientation",
              "parsedType": {
                "text": "'horizontal' | 'vertical'"
              }
            },
            {
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the radio group and all child radios readonly.",
              "fieldName": "readonly"
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The default value of the form control. Primarily used for resetting the form control.",
              "fieldName": "defaultValue"
            },
            {
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Ensures a child radio is checked before allowing the containing form to submit.",
              "fieldName": "required"
            },
            {
              "name": "with-label",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "withLabel"
            },
            {
              "name": "with-hint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "withHint"
            },
            {
              "name": "appearance",
              "type": {
                "text": "'default' | 'button' | 'card'"
              },
              "default": "'default'",
              "description": "The appearance of the radios in the group: `button` renders them as a segmented control, `card`\nas stacked cards carrying a title, a description and trailing chips.",
              "fieldName": "appearance",
              "parsedType": {
                "text": "'default' | 'button' | 'card'"
              }
            },
            {
              "name": "aria-label",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "Accessible name for when no visible label is given. Mirrored onto the internal\n`role=\"radiogroup\"` node, where the role lives — the host is deliberately role-less, so a\nconsumer's aria-label would otherwise sit on an element assistive technology ignores.\n\nA visible label wins: the node references it with `aria-labelledby` while there is one, and\nonly then — accessible-name computation consults aria-labelledby first.",
              "fieldName": "ariaLabel",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "fieldName": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "fieldName": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "fieldName": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "fieldName": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "fieldName": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "Applied when the radio group carries the warning hint state.",
              "name": "warning",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Applied when the radio group carries the AI hint state.",
              "name": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Applied when the radio group carries the error hint state.",
              "name": "error",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is disabled, by its own attribute or by an ancestor fieldset.",
              "name": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is required.",
              "name": "required",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is not required.",
              "name": "optional",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value fails constraint validation, whether or not the user has touched the control yet.",
              "name": "invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value passes constraint validation.",
              "name": "valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Invalid, and the user has interacted with the control. This is the one to style for an error: it behaves like the platform's `:user-invalid`, so an untouched field is not marked wrong before the user has had a chance to fill it in.",
              "name": "user-invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Valid, and the user has interacted with the control.",
              "name": "user-valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The user has interacted with the control.",
              "name": "dirty",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdFormAssociatedElement",
            "module": "/src/internal/ed-form-associated-element.js"
          },
          "summary": "Radio groups are used to group multiple [radios](/a/eurodata-ui/docs/components/radio) so they function as a single form control.",
          "jsDoc": "/**\n * @summary Radio groups are used to group multiple [radios](/a/eurodata-ui/docs/components/radio) so they function as a single form control.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/radio-group\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-radio\n *\n * @slot - The default slot where `<ed-radio>` elements are placed.\n * @slot label - The radio group's label. Required for proper accessibility. Alternatively, you can use the `label`\n *  attribute.\n * @slot hint - Text that describes how to use the radio group. Alternatively, you can use the `hint` attribute.\n *\n * @event change - Emitted when the radio group's selected value changes.\n * @event input - Emitted when the radio group receives user input.\n * @event ed-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n *\n * @csspart form-control - The form control that wraps the label, input, and hint.\n * @csspart form-control-label - The label's wrapper.\n * @csspart base - The flex container holding the radios, and the sliding indicator when `appearance` is `button`.\n * @csspart indicator - The filled pill behind the checked segment, which slides between them. Only rendered when `appearance` is `button`.\n * @csspart message - The state message: an error, a warning, or the AI note.\n * @csspart hint - The hint's wrapper.\n *\n * @cssstate warning - Applied when the radio group carries the warning hint state.\n * @cssstate ai - Applied when the radio group carries the AI hint state.\n * @cssstate error - Applied when the radio group carries the error hint state.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/radio-group",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-radio"
          ],
          "tagName": "ed-radio-group",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdRadioGroup",
            "module": "components/radio-group/radio-group.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-radio-group",
          "declaration": {
            "name": "EdRadioGroup",
            "module": "components/radio-group/radio-group.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/debounce.js",
      "declarations": [
        {
          "kind": "function",
          "name": "debounce",
          "parameters": [
            {
              "name": "delay",
              "type": {
                "text": "number"
              }
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "debounce",
          "declaration": {
            "name": "debounce",
            "module": "internal/debounce.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/side-menu-title/side-menu-title.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdSideMenuTitle",
          "cssProperties": [
            {
              "description": "Background color of the title row.",
              "name": "--ed-side-menu-background",
              "default": "var(--ed-color-surface-raised)"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "Container for the start slot.",
              "name": "start"
            },
            {
              "description": "The label container.",
              "name": "label"
            }
          ],
          "slots": [
            {
              "description": "The default slot for the title text.",
              "name": ""
            },
            {
              "description": "Leading content, e.g. an icon.",
              "name": "start"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "slim",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set by the parent `<ed-side-menu>` when its variant is `slim`. Do not\nwrite directly. When set, the title renders as `display: none`.",
              "attribute": "slim",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "slim",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set by the parent `<ed-side-menu>` when its variant is `slim`. Do not\nwrite directly. When set, the title renders as `display: none`.",
              "fieldName": "slim"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "A non-interactive group heading inside [ed-side-menu](/a/eurodata-ui/docs/components/side-menu). Hidden when the parent side-menu uses `variant=\"slim\"`.",
          "jsDoc": "/**\n * @summary A non-interactive group heading inside [ed-side-menu](/a/eurodata-ui/docs/components/side-menu). Hidden when the parent side-menu uses `variant=\"slim\"`.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/side-menu-title\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @slot - The default slot for the title text.\n * @slot start - Leading content, e.g. an icon.\n *\n * @csspart base - The component's base wrapper.\n * @csspart start - Container for the start slot.\n * @csspart label - The label container.\n *\n * @cssproperty [--ed-side-menu-background=var(--ed-color-surface-raised)] - Background color of the title row.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/side-menu-title",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-side-menu-title",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdSideMenuTitle",
            "module": "components/side-menu-title/side-menu-title.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-side-menu-title",
          "declaration": {
            "name": "EdSideMenuTitle",
            "module": "components/side-menu-title/side-menu-title.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/side-menu/side-menu.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdSideMenu",
          "cssProperties": [
            {
              "description": "The width of the menu. `ed-app` also reads it as the fallback width of its navigation column when nothing measurable is slotted in.",
              "name": "--ed-side-menu-width",
              "default": "16.875rem"
            },
            {
              "description": "Side-menu background color.",
              "name": "--ed-side-menu-background",
              "default": "var(--ed-color-surface-raised)"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "Container for the super-tab bar.",
              "name": "super-tabs"
            },
            {
              "description": "An individual super-tab button.",
              "name": "super-tab"
            },
            {
              "description": "Container for the search input.",
              "name": "filter"
            },
            {
              "description": "The search input element.",
              "name": "filter-input"
            },
            {
              "description": "Scrollable container around the navigation items.",
              "name": "tree-wrapper"
            },
            {
              "description": "Container around the footer slot, below the scrollable container.",
              "name": "footer"
            }
          ],
          "slots": [
            {
              "description": "The default slot for `ed-side-menu-item` elements.",
              "name": ""
            },
            {
              "description": "`ed-side-menu-item` elements pinned to the bottom edge, below the scrolling list. They take part in `current`, the filter, `density` and `variant` like the items in the default slot, and come last in the Tab order.",
              "name": "footer"
            },
            {
              "description": "Tab definitions for the super-tab bar. Use plain elements with a `value` attribute, an icon element as first element child, and the label as text, e.g. `<span slot=\"super-tab\" value=\"reports\"><ed-icon name=\"bar_chart\"></ed-icon>Reports</span>`.",
              "name": "super-tab"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'super-tab', 'footer')"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "filter",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows a search input that filters items by label and description text.",
              "attribute": "filter"
            },
            {
              "kind": "field",
              "name": "filterPlaceholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder text for the search input. Defaults to a localized \"Search\".",
              "attribute": "filter-placeholder"
            },
            {
              "kind": "field",
              "name": "hideIndentGuides",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Hides the indent guide lines between nested items. Reflected so the styling hook matches whether set via attribute or property.",
              "attribute": "hide-indent-guides",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "current",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The `value` of the currently active item (values fall back to the item's `href`). Matched\nexactly — no URL normalization. Updated automatically when the user activates an item;\nset it (or call `setCurrent()`) to follow external navigation, e.g. after a route change.",
              "attribute": "current"
            },
            {
              "kind": "field",
              "name": "activeTab",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The currently active super-tab value. Defaults to the first tab.",
              "attribute": "active-tab"
            },
            {
              "kind": "field",
              "name": "density",
              "type": {
                "text": "'spacious' | 'default' | 'compact'"
              },
              "default": "'default'",
              "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.",
              "attribute": "density",
              "reflects": true,
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "kind": "field",
              "name": "variant",
              "type": {
                "text": "'default' | 'slim'"
              },
              "default": "'default'",
              "description": "Layout variant. `slim` renders an 80px-wide rail where each item stacks\nits icon above a centered label. In slim, the filter input, super-tab\nbar, description slots, end-slot badges, and nested children are\nsuppressed. The variant is orthogonal to `density` — when slim is\nactive, density is still propagated to items but slim CSS overrides\ndensity-specific row metrics.",
              "attribute": "variant",
              "reflects": true,
              "parsedType": {
                "text": "'default' | 'slim'"
              }
            },
            {
              "kind": "field",
              "name": "filterQuery",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "expandedSnapshot",
              "type": {
                "text": "WeakSet<EdSideMenuItem> | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "A snapshot of expanded items before filtering, used to restore state when the filter is cleared.",
              "parsedType": {
                "text": "null | { add: {  }, delete: {  }, has: {  }, __@toStringTag@537: string }"
              }
            },
            {
              "kind": "method",
              "name": "getAllItemsDeep",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdSideMenuItem[]"
                }
              }
            },
            {
              "kind": "method",
              "name": "getItemLabelText",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "Element"
                  }
                }
              ],
              "description": "Extracts the label text from an item's direct text nodes, ignoring slotted children."
            },
            {
              "kind": "method",
              "name": "propagateDensity",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "propagateVariant",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleItemSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "setCurrent",
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Update `current` and synchronously reflect the active-state on items. Prefer this over\nassigning `current` 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. Programmatic writes never emit events."
            },
            {
              "kind": "method",
              "name": "applyCurrent",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleFilterInput",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "debouncedApplyFilter",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "applyFilter",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "highlightInItem",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "EdSideMenuItem"
                  }
                },
                {
                  "name": "query",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Wraps matching text in <mark> elements within an item's label and description."
            },
            {
              "kind": "method",
              "name": "wrapTextMatch",
              "privacy": "private",
              "parameters": [
                {
                  "name": "textNode",
                  "type": {
                    "text": "Text"
                  }
                },
                {
                  "name": "query",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Splits a text node and wraps the first match in a <mark> element."
            },
            {
              "kind": "method",
              "name": "clearHighlights",
              "privacy": "private",
              "description": "Removes all <mark> elements added by the filter and restores original text."
            },
            {
              "kind": "method",
              "name": "snapshotExpandedState",
              "privacy": "private",
              "parameters": [
                {
                  "name": "items",
                  "type": {
                    "text": "EdSideMenuItem[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "restoreExpandedState",
              "privacy": "private",
              "parameters": [
                {
                  "name": "items",
                  "type": {
                    "text": "EdSideMenuItem[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getSuperTabs",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "{ icon: Element | null; label: string; value: string }[]"
                }
              }
            },
            {
              "kind": "method",
              "name": "handleSuperTabClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleSuperTabKeydown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                },
                {
                  "name": "tabs",
                  "type": {
                    "text": "{ value: string }[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ query: string }"
              },
              "description": "Emitted when the search filter value changes.",
              "name": "ed-filter",
              "reactName": "onEdFilter",
              "eventName": "EdFilterEvent"
            },
            {
              "type": {
                "text": "{ tab: string }"
              },
              "description": "Emitted when the active super-tab changes. Detail contains `{ tab: string }`.",
              "name": "ed-super-tab-change",
              "reactName": "onEdSuperTabChange",
              "eventName": "EdSuperTabChangeEvent"
            }
          ],
          "attributes": [
            {
              "name": "filter",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows a search input that filters items by label and description text.",
              "fieldName": "filter"
            },
            {
              "name": "filter-placeholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder text for the search input. Defaults to a localized \"Search\".",
              "fieldName": "filterPlaceholder"
            },
            {
              "name": "hide-indent-guides",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Hides the indent guide lines between nested items. Reflected so the styling hook matches whether set via attribute or property.",
              "fieldName": "hideIndentGuides"
            },
            {
              "name": "current",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The `value` of the currently active item (values fall back to the item's `href`). Matched\nexactly — no URL normalization. Updated automatically when the user activates an item;\nset it (or call `setCurrent()`) to follow external navigation, e.g. after a route change.",
              "fieldName": "current"
            },
            {
              "name": "active-tab",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The currently active super-tab value. Defaults to the first tab.",
              "fieldName": "activeTab"
            },
            {
              "name": "density",
              "type": {
                "text": "'spacious' | 'default' | 'compact'"
              },
              "default": "'default'",
              "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.",
              "fieldName": "density",
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "name": "variant",
              "type": {
                "text": "'default' | 'slim'"
              },
              "default": "'default'",
              "description": "Layout variant. `slim` renders an 80px-wide rail where each item stacks\nits icon above a centered label. In slim, the filter input, super-tab\nbar, description slots, end-slot badges, and nested children are\nsuppressed. The variant is orthogonal to `density` — when slim is\nactive, density is still propagated to items but slim CSS overrides\ndensity-specific row metrics.",
              "fieldName": "variant",
              "parsedType": {
                "text": "'default' | 'slim'"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "A preconfigured navigation sidebar that renders [ed-side-menu-item](/a/eurodata-ui/docs/components/side-menu-item) links as a WAI-ARIA Disclosure Navigation menu, with optional search filtering and super-tabs.",
          "jsDoc": "/**\n * @summary A preconfigured navigation sidebar that renders [ed-side-menu-item](/a/eurodata-ui/docs/components/side-menu-item) links as a WAI-ARIA Disclosure Navigation menu, with optional search filtering and super-tabs.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/side-menu\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-input\n * @dependency ed-side-menu-item\n * @dependency ed-side-menu-title\n *\n * @event {{ query: string }} ed-filter - Emitted when the search filter value changes.\n * @event {{ tab: string }} ed-super-tab-change - Emitted when the active super-tab changes. Detail contains `{ tab: string }`.\n *\n * @slot - The default slot for `ed-side-menu-item` elements.\n * @slot footer - `ed-side-menu-item` elements pinned to the bottom edge, below the scrolling list. They take part in\n *  `current`, the filter, `density` and `variant` like the items in the default slot, and come last in the Tab order.\n * @slot super-tab - Tab definitions for the super-tab bar. Use plain elements with a `value` attribute, an icon element as first element child, and the label as text, e.g. `<span slot=\"super-tab\" value=\"reports\"><ed-icon name=\"bar_chart\"></ed-icon>Reports</span>`.\n *\n * @csspart base - The component's base wrapper.\n * @csspart super-tabs - Container for the super-tab bar.\n * @csspart super-tab - An individual super-tab button.\n * @csspart filter - Container for the search input.\n * @csspart filter-input - The search input element.\n * @csspart tree-wrapper - Scrollable container around the navigation items.\n * @csspart footer - Container around the footer slot, below the scrollable container.\n *\n * @cssproperty [--ed-side-menu-width=16.875rem] - The width of the menu. `ed-app` also reads it as the fallback width\n *   of its navigation column when nothing measurable is slotted in.\n * @cssproperty [--ed-side-menu-background=var(--ed-color-surface-raised)] - Side-menu background color.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/side-menu",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-input",
            "ed-side-menu-item",
            "ed-side-menu-title"
          ],
          "tagName": "ed-side-menu",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdSideMenu",
            "module": "components/side-menu/side-menu.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-side-menu",
          "declaration": {
            "name": "EdSideMenu",
            "module": "components/side-menu/side-menu.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/rail-menu/rail-menu.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdRailMenu",
          "cssProperties": [
            {
              "description": "Width of the rail column (mirrors the slim side-menu width).",
              "name": "--ed-rail-menu-rail-width",
              "default": "6rem"
            },
            {
              "description": "Width of the open panel on expanded/medium views.",
              "name": "--ed-rail-menu-panel-width",
              "default": "15rem"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The rail column wrapping the rail slot.",
              "name": "rail"
            },
            {
              "description": "The wrapper around the rail-header slot.",
              "name": "rail-header"
            },
            {
              "description": "The wrapper around the rail-footer slot.",
              "name": "rail-footer"
            },
            {
              "description": "The container around the panel slot.",
              "name": "panel"
            },
            {
              "description": "The compact drilldown's back-to-level-1 button. Visible only on compact.",
              "name": "back-button"
            }
          ],
          "slots": [
            {
              "description": "Exactly one `ed-side-menu variant=\"slim\"` whose items may carry `panel=\"…\"` references.",
              "name": "rail"
            },
            {
              "description": "Optional content pinned above the rail slot, inside the rail column.",
              "name": "rail-header"
            },
            {
              "description": "Optional content pinned below the rail column on expanded/medium, and below the panel on compact.",
              "name": "rail-footer"
            },
            {
              "description": "The panels: one element per section, each identified by a `name` attribute. Any element works; `ed-side-menu` panels additionally receive the wrapper's `current`.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "compactQuery",
              "type": {
                "text": "MediaQueryList | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | { matches: boolean, media: string, onchange: null | {  }, addListener: {  }, removeListener: {  }, addEventListener: {  }, removeEventListener: {  }, dispatchEvent: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "mediumQuery",
              "type": {
                "text": "MediaQueryList | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | { matches: boolean, media: string, onchange: null | {  }, addListener: {  }, removeListener: {  }, addEventListener: {  }, removeEventListener: {  }, dispatchEvent: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "overlayRegistered",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "hoverCloseTimer",
              "type": {
                "text": "number | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | number"
              }
            },
            {
              "kind": "field",
              "name": "hoverOpenTimer",
              "type": {
                "text": "number | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | number"
              }
            },
            {
              "kind": "field",
              "name": "pendingHoverPanel",
              "type": {
                "text": "string | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The panel name the pending hover-open timer will preview when it fires, or `null` when no\nopen is armed. Lets a re-entered same-target `pointerover` leave the running timer alone\ninstead of restarting the dwell clock.",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "previewingSection",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "True while the medium overlay is showing a hover-previewed section rather than the committed\none. A preview is presentational only (no active-section commit, no navigation, no event); the\ncommitted state is restored via resolveAndApply() when the overlay closes."
            },
            {
              "kind": "field",
              "name": "panelElement",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "backButtonElement",
              "type": {
                "text": "HTMLButtonElement"
              }
            },
            {
              "kind": "field",
              "name": "current",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The identity (item `value`, falling back to `href`) of the current page. Drives the active section and is forwarded to `ed-side-menu` panels.",
              "attribute": "current"
            },
            {
              "kind": "field",
              "name": "panelClosed",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the panel is closed. The rail menu sets it per view — open on expanded, closed on\nmedium — and reflects it silently: setting the property emits no events; use\n`showPanel()`/`hidePanel()`/`togglePanel()` to get `ed-show`/`ed-hide`. Ignored on the compact view.",
              "attribute": "panel-closed",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "compactBreakpoint",
              "type": {
                "text": "string"
              },
              "default": "'768px'",
              "description": "Below this viewport width the compact (drilldown) view renders. Keep in sync with `ed-app`'s `mobile-breakpoint`.",
              "attribute": "compact-breakpoint"
            },
            {
              "kind": "field",
              "name": "mediumBreakpoint",
              "type": {
                "text": "string"
              },
              "default": "'1600px'",
              "description": "Between the compact and this viewport width, the rail persists and the panel overlays.",
              "attribute": "medium-breakpoint"
            },
            {
              "kind": "field",
              "name": "view",
              "type": {
                "text": "RailMenuView"
              },
              "default": "'expanded'",
              "description": "The current responsive stage. Computed from the viewport; reflected for styling.",
              "attribute": "view",
              "reflects": true,
              "parsedType": {
                "text": "'expanded' | 'medium' | 'compact'"
              }
            },
            {
              "kind": "field",
              "name": "handleViewportChange",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "setupMediaQueries",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "teardownMediaQueries",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "overlayActive",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "syncDismissibleRegistration",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDocumentKeydown",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "handleDocumentPointerDown",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "handlePointerEnter",
              "privacy": "private",
              "readonly": true,
              "description": "Mouse leaving the host (rail + panel — the host geometrically contains both, and these\nevents don't bubble, so a plain host listener fires exactly on the host's own boundary)\nstarts the hover-out grace timer. Touch pointers never open a hover-driven close — touch\nkeeps the tap/Escape/navigate dismissals only."
            },
            {
              "kind": "field",
              "name": "handleRailPointerOver",
              "privacy": "private",
              "readonly": true,
              "description": "Hovering a panel-carrying rail item previews that section's panel after a short dwell\n(`HOVER_OPEN_DELAY_MS`) — m3 behavior on both expanded and medium, no click required. The delay\nis hover-intent: a diagonal rail→panel sweep that grazes another rail item leaves the pointer\non it for only a moment, and moving off (into the panel, `findRailItem` → `null`) cancels the\npending switch before it fires — so the panel isn't switched out from under the pointer. This\nis a *preview*: it swaps the shown panel but never commits the active section, navigates, or\nemits `ed-section-change` (only a click does that, via `handleRailClick()` — otherwise merely\nsweeping the mouse across the rail would navigate). On medium it also opens the overlay; on\nexpanded the panel is already persistent, so the content just swaps in place. The hovered item\nkeeps only its native `:hover` feedback; the committed \"active\" highlight is untouched and is\nrestored, along with the shown panel, by `resolveAndApply()` when the pointer leaves rail+panel\n(see `handlePointerLeave()`). Mouse only; touch/keyboard open a section via a real tap/Enter (a\nclick). A pure-nav rail item (no `panel`) has nothing to preview and leaves the current view\nas-is. Compact drills on click, never on hover."
            },
            {
              "kind": "method",
              "name": "previewSection",
              "privacy": "private",
              "parameters": [
                {
                  "name": "panelName",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Applies a hover preview once its dwell timer fires. Re-checks the guards `handleRailPointerOver`\nalready passed — the dwell means state may have shifted since (a view change, a click commit, a\nroute resolution) — so a stale timer that slipped past its cancel points is still a safe no-op."
            },
            {
              "kind": "field",
              "name": "handlePointerLeave",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "cancelHoverCloseTimer",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "cancelHoverOpenTimer",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleNavigate",
              "privacy": "private",
              "readonly": true,
              "description": "`handleRailClick()` is the *only* rail-item activation path now, on every view: v3's XOR\ncontract means a conforming panel-carrying item never has `href`, so `ed-side-menu-item`\nnever dispatches `ed-navigate` for it in the first place — there is no compact \"ed-navigate\nfast path\" left to intercept here (a contract-violating item's `href` is already blocked at\nthe click itself, unconditionally, by `handleRailClick()`; letting it *also* reach here would\njust re-run `activateSection()` a second time for the same click). This listener now only\nhandles the medium overlay's \"dismiss on navigation from inside the panel\" rule."
            },
            {
              "kind": "method",
              "name": "findRailItem",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdSideMenuItem | null"
                }
              },
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ],
              "description": "Finds the rail `ed-side-menu-item` (if any) an event's path passed through — used by the click\nactivation listener. A mouse click and an Enter/Space keypress resolve to the same thing here:\n`ed-side-menu-item` itself turns an href-less leaf into a focusable role=\"button\" row (see\nside-menu-item.ts) whose Enter/Space replay a `click` on that row, so both surface as a plain,\ncomposed `click` reaching this listener. `composedPath()` crosses the item's shadow root, so\nthis also catches clicks on the item's internal `part=\"item\"` row."
            },
            {
              "kind": "field",
              "name": "handleRailClick",
              "privacy": "private",
              "readonly": true,
              "description": "Rail items with a `panel` activate that section immediately, on every view — a fast, synchronous\nalternative to waiting for the app's router to round-trip through `setCurrent()`. Panel-only\nitems (no `href`) never emit `ed-navigate`, so this listener is their only activation path — for\nboth a real mouse click and an Enter/Space keypress, since `ed-side-menu-item` itself replays\nthose as a `click` on a panel-only (href-less leaf) item's row (see side-menu-item.ts).\n\nv3 contract: `href` XOR `panel` (see the class-level `panel` doc). `panel` always wins, so a\npanel-carrying item's `href` — present only when a consumer mistakenly sets both, see\n`syncRailItemContracts()` — must never be followed: `preventDefault()` unconditionally, before\neven looking at modifier keys, so neither the current tab nor a modifier-opened new tab\nnavigates. Modified clicks still skip activation (nothing to activate for a background/new-tab\nclick either way).\n\nA pure-nav item (`href`, no `panel`) is left entirely to native navigation — this listener never\ncalls `preventDefault()` for it — but an unmodified click still collapses the panel area\noptimistically (`activateSection('', item)`) instead of leaving a previous section's panel open\nuntil the route settles (the reported \"clicking Home leaves the panel open\" bug).\n\n`disabled` items still receive the click (the CSS only dims them, it doesn't set\n`pointer-events: none`) and `ed-side-menu-item`'s own `handleRowClick` only guards *its own*\ndefault action, not propagation — so this listener must bail out itself, or a disabled item\nwould still activate a section or optimistically collapse the panel."
            },
            {
              "kind": "method",
              "name": "activateSection",
              "privacy": "private",
              "parameters": [
                {
                  "name": "panelName",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "railItem",
                  "type": {
                    "text": "EdSideMenuItem | null"
                  }
                }
              ],
              "description": "The \"make this the active section\" step for `handleRailClick()` — the only caller: shows the\nnamed panel (or none, when `panelName` is `''` — the pure-nav \"optimistic collapse\" case),\nhighlights `railItem` in the rail, and emits `ed-section-change` only when the section\nactually changes (never during initialization, and never twice for the same target — a no-op\nre-run, e.g. a second click on the active item, changes nothing and stays silent). The single\nplace outside `resolveAndApply()` allowed to write `_activeSection`. Only ever reached from a\nuser interaction (click, or Enter/Space replayed as a click) — route-driven changes go through\n`resolveAndApply()` instead and never call this method, which is exactly why the auto-select\nbelow is safe to run unconditionally here (see behavior amendment 1: \"section openers never\nnavigate — auto-select does\")."
            },
            {
              "kind": "method",
              "name": "autoSelectPanelOverview",
              "privacy": "private",
              "parameters": [
                {
                  "name": "panelName",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "m3's \"apparent navigation\" on section switch (behavior amendment 1): auto-activates the named\npanel's first existing `ed-side-menu-item` with an identity — `value` or `href` (a property\nread, not an attribute check — consistent with `resolveActive()`'s own identity lookups, so a\nproperty-only value/href also counts) that isn't `disabled`. A real click on its shadow row\nfires `ed-navigate` exactly as a manual click would, so a router's `preventDefault()` keeps\nworking as usual. The wrapper never invents an item — a panel with no eligible item is skipped\nsilently, no error. The medium overlay must stay open for this programmatic navigation (only a\n*user* click inside the panel dismisses it, see `handleNavigate()`) — `suppressNavigateDismissal`\ntells `handleNavigate()` to ignore this specific, synchronous `ed-navigate` dispatch; the\n`finally` guarantees the flag resets even if `row.click()` itself throws, so it can never leak\n`true` and mask a later, genuine in-panel navigation's dismissal."
            },
            {
              "kind": "method",
              "name": "drillIn",
              "privacy": "private",
              "parameters": [
                {
                  "name": "railItem",
                  "type": {
                    "text": "EdSideMenuItem | null"
                  }
                }
              ],
              "description": "Drills into level 2 (the active section's panel) on compact: remembers `railItem` as the\ncounterpart the back button restores focus to, sets the `drilldown` custom state, and moves\nfocus onto the back button so keyboard/AT users land inside the panel that just slid in."
            },
            {
              "kind": "method",
              "name": "handleBackButtonClick",
              "privacy": "private",
              "description": "Back button (level 2 → level 1): clears the drilldown state and returns focus to the rail\nitem that drilled in — its inner shadow row, which is focusable for every rail item shape now\n(an `<a>` for href items, a `role=\"button\"` `<div>` for disclosure-row parents and href-less\nleaf items alike — see side-menu-item.ts) — falling back to `focusRail()` when nothing was\nrecorded (e.g. compact started already drilled in via an active section, with no user-driven\ndrill to remember) or the item is gone."
            },
            {
              "kind": "method",
              "name": "showPanel",
              "description": "Opens the panel and emits ed-show / ed-after-show. No-op when already open."
            },
            {
              "kind": "method",
              "name": "hidePanel",
              "description": "Closes the panel and emits ed-hide / ed-after-hide. No-op when already closed.\nIntentionally does NOT clear a pending hover timer — the timer's overlayActive recheck\nmakes it a safe no-op; reopening cancels it via updated()."
            },
            {
              "kind": "method",
              "name": "togglePanel"
            },
            {
              "kind": "method",
              "name": "afterPanelSettles",
              "privacy": "private",
              "parameters": [
                {
                  "name": "callback",
                  "type": {
                    "text": "() => void"
                  }
                }
              ],
              "description": "Runs `callback` when the panel's width transition ends — or after a\nfallback timeout, so reduced-motion or display:none panels still settle."
            },
            {
              "kind": "method",
              "name": "syncDrilldownForSection",
              "privacy": "private",
              "description": "Compact's level-2 default: drilled in whenever a section is active (e.g. a deep-linked\nroute or a route-driven section change), level 1 otherwise; leaving compact always clears\nit. Runs on every `view` change (here and at firstUpdated) and, gated on an actual section\nchange, from `resolveAndApply()` — never from an incidental re-resolution with the *same*\nsection (e.g. a rail slotchange that also calls applyViewDefaults()), so a manual \"back\"\nsurvives, e.g., a consumer mutating rail items while the drawer stays open on compact.\nRoute-driven callers never move focus — that stays exclusive to `drillIn()`, which\nclick-driven `activateSection()` calls instead."
            },
            {
              "kind": "method",
              "name": "applyViewDefaults",
              "privacy": "private",
              "description": "Stage defaults are applied silently — automatic transitions never emit events."
            },
            {
              "kind": "method",
              "name": "syncCompactChevrons",
              "privacy": "private",
              "description": "m3 parity (behavior amendment 5): on compact level 1, a panel-carrying rail item shows a\ntrailing chevron indicating it drills into a section — CSS alone can't reach into the item's\nshadow `end` slot from here, so the wrapper light-DOM-injects an `ed-icon` into it instead.\nRuns from `applyViewDefaults()` (view changes, rail `slotchange`, and `firstUpdated`), the same\nsingle place that already flips the rail between `slim` and `default` — a coherent one-stop\nsync for \"what compact looks like\" on the rail.\n\nIdempotent and non-destructive: a `[data-rail-menu-chevron]` marks the wrapper's own injection\nso re-running this (e.g. a rail slotchange while already compact) never duplicates it, and\nleaving compact removes exactly that marked element — never anything else. An item that already\ncarries consumer-authored `slot=\"end\"` content (a badge, say) is left alone entirely; the\nwrapper never overwrites or duplicates author content."
            },
            {
              "kind": "method",
              "name": "applyLandmarkLabels",
              "privacy": "private",
              "description": "Default landmark labels for slotted menus — a consumer-provided `aria-label` always wins."
            },
            {
              "kind": "field",
              "name": "_activeSection",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "_initialized",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "_drilledRailItem",
              "type": {
                "text": "EdSideMenuItem | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "The rail item last drilled in from (compact) — the back button's focus-restore target.",
              "parsedType": {
                "text": "null | default"
              }
            },
            {
              "kind": "field",
              "name": "suppressNavigateDismissal",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set around `autoSelectPanelOverview()`'s synthetic anchor click — tells `handleNavigate()`'s\nmedium-overlay dismissal branch to ignore that specific, synchronous `ed-navigate` dispatch."
            },
            {
              "kind": "field",
              "name": "activeSection",
              "type": {
                "text": "string"
              },
              "description": "The `name` of the currently shown panel ('' while the active rail item has no panel).",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "getRailMenu",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdSideMenu | null"
                }
              }
            },
            {
              "kind": "method",
              "name": "getRailItems",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdSideMenuItem[]"
                }
              }
            },
            {
              "kind": "method",
              "name": "getActiveRailItem",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdSideMenuItem | null"
                }
              }
            },
            {
              "kind": "field",
              "name": "contractWarnedItems",
              "privacy": "private",
              "readonly": true,
              "default": "new WeakSet<EdSideMenuItem>()"
            },
            {
              "kind": "method",
              "name": "syncRailItemContracts",
              "privacy": "private",
              "description": "Enforces the rail's `href`/`panel` XOR contract on every slotted item — either violation warns\nonce per item (WeakSet-deduped) so the mistake surfaces during development:\n- Neither attribute: the item is inert (no navigation, no section).\n- Both attributes: `panel` always wins everywhere (`handleRailClick()`), so the `href` is dead\n  weight — warn so the consumer notices instead of silently losing the link.\n\n`panel` without `href` needs no accommodation here anymore: such an item is an href-less leaf,\nwhich `ed-side-menu-item` itself renders as a focusable `role=\"button\"` row (see\nside-menu-item.ts) — the wrapper no longer injects `tabindex`/`role`."
            },
            {
              "kind": "method",
              "name": "focusRail",
              "privacy": "private",
              "description": "Moves focus out of the closing overlay: the active rail item's focusable row when it has one,\notherwise the first rail item with an `href`. ed-side-menu-item neither overrides focus() nor\ndelegates it, so a bare item.focus() would fall through to <body> — the actual target is the\nshadow-DOM element carrying part=\"item\". That renders as an `<a>` when the item has an `href`,\nand as a focusable `role=\"button\"` `<div>` for an href-less leaf (e.g. a panel-only rail item —\nsee side-menu-item.ts) — but section resolution can leave no active item at all (resolveActive()'s\nfallback case), so probe each candidate and confirm focus actually landed rather than trusting a\nsingle .focus()."
            },
            {
              "kind": "method",
              "name": "tryFocus",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "el",
                  "type": {
                    "text": "HTMLElement | null | undefined"
                  }
                }
              ],
              "description": "Focuses `el` and reports whether focus actually landed there — shared by `focusRail()` and\nthe back button handler, both of which probe candidate elements that may not be focusable\n(see focusRail's doc comment for why a bare `.focus()` isn't trustworthy here)."
            },
            {
              "kind": "method",
              "name": "getPanels",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLElement[]"
                }
              }
            },
            {
              "kind": "method",
              "name": "setCurrent",
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Update `current` and synchronously re-resolve the active section (SPA route hooks)."
            },
            {
              "kind": "method",
              "name": "resolveActive",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "{ section: string; railItem: EdSideMenuItem | null }"
                }
              }
            },
            {
              "kind": "method",
              "name": "resolveAndApply",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleDefaultSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleRailSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "Emitted when the panel opens via user/API action (never from initialization or automatic stage changes). Cancelable; calling `preventDefault()` keeps it closed.",
              "name": "ed-show",
              "reactName": "onEdShow",
              "eventName": "EdShowEvent"
            },
            {
              "description": "Emitted when the panel closes via user/API action. Cancelable; calling `preventDefault()` keeps it open.",
              "name": "ed-hide",
              "reactName": "onEdHide",
              "eventName": "EdHideEvent"
            },
            {
              "description": "Emitted after the panel's opening transition finishes.",
              "name": "ed-after-show",
              "reactName": "onEdAfterShow",
              "eventName": "EdAfterShowEvent"
            },
            {
              "description": "Emitted after the panel's closing transition finishes.",
              "name": "ed-after-hide",
              "reactName": "onEdAfterHide",
              "eventName": "EdAfterHideEvent"
            },
            {
              "type": {
                "text": "{ panel: string }"
              },
              "description": "Emitted when the active section changes (never from the initial resolution). Detail contains `{ panel: string }`; `panel` is `''` when the panel area collapses, e.g. after clicking a pure-navigation rail item.",
              "name": "ed-section-change",
              "reactName": "onEdSectionChange",
              "eventName": "EdSectionChangeEvent"
            }
          ],
          "attributes": [
            {
              "type": {
                "text": "string"
              },
              "description": "Contract attribute on slotted rail `ed-side-menu-item`s: names the panel this rail item opens. Mutually exclusive with `href` — a rail item takes one or the other, never both; with both set, `panel` wins and the `href` is never followed (a `logger.warn` flags the mistake once per item).",
              "name": "panel"
            },
            {
              "type": {
                "text": "string"
              },
              "description": "Contract attribute on slotted panel elements: the panel's identifier referenced by `panel`.",
              "name": "name"
            },
            {
              "name": "current",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The identity (item `value`, falling back to `href`) of the current page. Drives the active section and is forwarded to `ed-side-menu` panels.",
              "fieldName": "current"
            },
            {
              "name": "panel-closed",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the panel is closed. The rail menu sets it per view — open on expanded, closed on\nmedium — and reflects it silently: setting the property emits no events; use\n`showPanel()`/`hidePanel()`/`togglePanel()` to get `ed-show`/`ed-hide`. Ignored on the compact view.",
              "fieldName": "panelClosed"
            },
            {
              "name": "compact-breakpoint",
              "type": {
                "text": "string"
              },
              "default": "'768px'",
              "description": "Below this viewport width the compact (drilldown) view renders. Keep in sync with `ed-app`'s `mobile-breakpoint`.",
              "fieldName": "compactBreakpoint"
            },
            {
              "name": "medium-breakpoint",
              "type": {
                "text": "string"
              },
              "default": "'1600px'",
              "description": "Between the compact and this viewport width, the rail persists and the panel overlays.",
              "fieldName": "mediumBreakpoint"
            },
            {
              "name": "view",
              "type": {
                "text": "RailMenuView"
              },
              "default": "'expanded'",
              "description": "The current responsive stage. Computed from the viewport; reflected for styling.",
              "fieldName": "view",
              "parsedType": {
                "text": "'expanded' | 'medium' | 'compact'"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "Applied while the active section has no panel (rail item without `panel`).",
              "name": "panel-empty"
            },
            {
              "description": "Applied on the compact view while level 2 (the active section's panel) is showing.",
              "name": "drilldown"
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "A two-pane navigation: a slim [ed-side-menu](/a/eurodata-ui/docs/components/side-menu)\nrail selects a section, a second side-menu panel shows the section's pages. Three-stage responsive behavior.",
          "jsDoc": "/**\n * @summary A two-pane navigation: a slim [ed-side-menu](/a/eurodata-ui/docs/components/side-menu)\n *  rail selects a section, a second side-menu panel shows the section's pages. Three-stage responsive behavior.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/rail-menu\n * @status experimental\n * @level organism\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-icon\n * @dependency ed-side-menu\n * @dependency ed-side-menu-item\n *\n * @attr {string} panel - Contract attribute on slotted rail `ed-side-menu-item`s: names the panel this rail item\n *  opens. Mutually exclusive with `href` — a rail item takes one or the other, never both; with both set, `panel`\n *  wins and the `href` is never followed (a `logger.warn` flags the mistake once per item).\n * @attr {string} name - Contract attribute on slotted panel elements: the panel's identifier referenced by `panel`.\n *\n * @slot rail - Exactly one `ed-side-menu variant=\"slim\"` whose items may carry `panel=\"…\"` references.\n * @slot rail-header - Optional content pinned above the rail slot, inside the rail column.\n * @slot rail-footer - Optional content pinned below the rail column on expanded/medium, and below the panel on compact.\n * @slot - The panels: one element per section, each identified by a `name` attribute. Any element works;\n *  `ed-side-menu` panels additionally receive the wrapper's `current`.\n *\n * @event ed-show - Emitted when the panel opens via user/API action (never from initialization or automatic stage changes).\n *  Cancelable; calling `preventDefault()` keeps it closed.\n * @event ed-hide - Emitted when the panel closes via user/API action.\n *  Cancelable; calling `preventDefault()` keeps it open.\n * @event ed-after-show - Emitted after the panel's opening transition finishes.\n * @event ed-after-hide - Emitted after the panel's closing transition finishes.\n * @event {{ panel: string }} ed-section-change - Emitted when the active section changes (never from the initial resolution). Detail contains\n *  `{ panel: string }`; `panel` is `''` when the panel area collapses, e.g. after clicking a pure-navigation rail item.\n *\n * @csspart base - The component's base wrapper.\n * @csspart rail - The rail column wrapping the rail slot.\n * @csspart rail-header - The wrapper around the rail-header slot.\n * @csspart rail-footer - The wrapper around the rail-footer slot.\n * @csspart panel - The container around the panel slot.\n * @csspart back-button - The compact drilldown's back-to-level-1 button. Visible only on compact.\n *\n * @cssstate panel-empty - Applied while the active section has no panel (rail item without `panel`).\n * @cssstate drilldown - Applied on the compact view while level 2 (the active section's panel) is showing.\n *\n * @cssproperty [--ed-rail-menu-rail-width=6rem] - Width of the rail column (mirrors the slim side-menu width).\n * @cssproperty [--ed-rail-menu-panel-width=15rem] - Width of the open panel on expanded/medium views.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/rail-menu",
          "status": "experimental",
          "level": "organism",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-icon",
            "ed-side-menu",
            "ed-side-menu-item"
          ],
          "tagName": "ed-rail-menu",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdRailMenu",
            "module": "components/rail-menu/rail-menu.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-rail-menu",
          "declaration": {
            "name": "EdRailMenu",
            "module": "components/rail-menu/rail-menu.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/rating/rating.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdRating",
          "cssProperties": [
            {
              "description": "The inactive color for symbols.",
              "name": "--ed-rating-symbol-color"
            },
            {
              "description": "The active color for symbols.",
              "name": "--ed-rating-symbol-color-active"
            },
            {
              "description": "The spacing to use around symbols.",
              "name": "--ed-rating-symbol-spacing"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "validators",
              "type": {
                "text": "Validator[]"
              },
              "default": "[]",
              "static": true,
              "description": "Validators are static because they have `observedAttributes`, essentially attributes to \"watch\"\nfor changes. Whenever these attributes change, we want to be notified and update the validator.",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOn",
              "type": {
                "text": "string[]"
              },
              "default": "['change']",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hoverValue",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "isHovering",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the rating, submitted as a name/value pair with form data.",
              "attribute": "name",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A label that describes the rating to assistive devices.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "_value",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "number"
              },
              "description": "The current rating. Reading it gives a value that sits within `0`–`max` and on the `precision`\ngrid, whatever was written — the same correction a range control applies, except that `0` stays\nreachable here: it is this control's empty state, and `required` rests on it. So anything\nunusable becomes `0` rather than the middle of the range.",
              "attribute": "value"
            },
            {
              "kind": "method",
              "name": "correct",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "val",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "A rating this control can actually hold: within `0`–`max`, on the `precision` grid, and `0` for\nanything unusable.\n\nAnything comparing against the current rating has to run its candidate through here first. The\npointer path reaches a value by a different route (`roundToPrecision`, which rounds up so half a\nsymbol reads as the whole one), and comparing that raw result against the corrected `value`\nmisses a match by a float: with `precision=\"0.3\"` the second click on a rating of 0.9 or 1.8\nfailed to clear it, because 0.9 and 0.8999999999999999 are not `===`."
            },
            {
              "kind": "field",
              "name": "defaultValue",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The default value of the form control. Used to reset the rating to its initial value.",
              "attribute": "default-value"
            },
            {
              "kind": "field",
              "name": "_max",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "5"
            },
            {
              "kind": "field",
              "name": "max",
              "type": {
                "text": "number"
              },
              "description": "The highest rating to show.",
              "attribute": "max"
            },
            {
              "kind": "field",
              "name": "precision",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "The precision at which the rating will increase and decrease. For example, to allow half-star ratings, set this\nattribute to `0.5`.",
              "attribute": "precision"
            },
            {
              "kind": "field",
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the rating readonly.",
              "attribute": "readonly",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the rating a required field — a value of 0 counts as missing.",
              "attribute": "required",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "Blocks form submission — with a localized generic message when set to an empty string, with the\ngiven text otherwise — and sets the `error` custom state. `ed-rating` renders no message area\nand brings no error styling, so the constraint is the only effect a user notices; style\n`:state(error)` to show one.",
              "attribute": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "Sets the `warning` custom state and does not block form submission. `ed-rating` renders no\nmessage area and brings no warning styling, so the message text is never shown; style\n`:state(warning)` to show one.",
              "attribute": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Sets the `ai` custom state until the user interacts. `ed-rating` brings no AI styling, so the\nstate is the only effect; style `:state(ai)` to show one.",
              "attribute": "ai",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Has no effect on `ed-rating`, which renders no hint area. Put explanatory text next to the\nrating instead.",
              "attribute": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "icon",
              "type": {
                "text": "string"
              },
              "default": "'favorite'",
              "description": "The icon name for inactive (unselected) symbols.",
              "attribute": "icon"
            },
            {
              "kind": "field",
              "name": "activeIcon",
              "type": {
                "text": "string"
              },
              "default": "'favorite_filled'",
              "description": "The icon name for active (selected) symbols.",
              "attribute": "active-icon"
            },
            {
              "kind": "field",
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "The component's density.",
              "attribute": "density",
              "reflects": true,
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "kind": "method",
              "name": "getValueFromPointerPosition",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "PointerEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getValueFromXCoordinate",
              "privacy": "private",
              "parameters": [
                {
                  "name": "coordinate",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "setRatingValue",
              "privacy": "private",
              "parameters": [
                {
                  "name": "newValue",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleKeyDown",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handlePointerEnter",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handlePointerMove",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handlePointerLeave",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handlePointerDown",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handlePointerUp",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "roundToPrecision",
              "privacy": "private",
              "parameters": [
                {
                  "name": "numberToRound",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "precision",
                  "default": "0.5"
                }
              ]
            },
            {
              "kind": "method",
              "name": "formResetCallback"
            },
            {
              "kind": "field",
              "name": "#fieldsetDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set by `formDisabledCallback`, i.e. an ancestor `<fieldset>`. Never written by a consumer.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#ownDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The disabled state this element was given directly, via its property or its attribute.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "attribute": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOnMode",
              "type": {
                "text": "'combined' | 'separated' | string"
              },
              "default": "'combined'",
              "parsedType": {
                "text": "string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "text": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "parsedType": {
                "text": "HTMLElement & { value: unknown } | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "valueHasChanged",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasInteracted",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_customValidityMessage",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_isCheckingValidity",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set while `checkValidity()` is executing so the `invalid` event handler can distinguish\na programmatic check (no UI side-effects per spec) from `reportValidity()` / native form\nsubmission (which should surface the error UI and focus the first invalid control).",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emittedEvents",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "states",
              "type": {
                "text": "CustomStateSet"
              },
              "parsedType": {
                "text": "any"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleSubmitOnEnter",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleClearOnEscape",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emitInvalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleInteraction",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "labels",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getForm",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "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": {
                "text": "HTMLFormElement | null"
              },
              "parsedType": {
                "text": "null | HTMLFormElement"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validity",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "willValidate",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationMessage",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "checkValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Override this to change where constraint validation popups are anchored.",
              "readonly": true,
              "parsedType": {
                "text": "HTMLElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValidity",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setValidity>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "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.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setFormValue>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "allValidators",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "resetValidity",
              "description": "Reset validity is a way of removing manual custom errors and native validation.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "Emitted when the rating's value changes.",
              "name": "change",
              "reactName": "onChange",
              "eventName": "ChangeEvent"
            },
            {
              "type": {
                "text": "{ 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-hover",
              "reactName": "onEdHover",
              "eventName": "EdHoverEvent"
            },
            {
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied.",
              "name": "ed-invalid",
              "reactName": "onEdInvalid",
              "eventName": "EdInvalidEvent"
            }
          ],
          "attributes": [
            {
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the rating, submitted as a name/value pair with form data.",
              "fieldName": "name",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A label that describes the rating to assistive devices.",
              "fieldName": "label"
            },
            {
              "name": "value",
              "type": {
                "text": "number"
              },
              "description": "The current rating. Reading it gives a value that sits within `0`–`max` and on the `precision`\ngrid, whatever was written — the same correction a range control applies, except that `0` stays\nreachable here: it is this control's empty state, and `required` rests on it. So anything\nunusable becomes `0` rather than the middle of the range.",
              "fieldName": "value"
            },
            {
              "name": "default-value",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The default value of the form control. Used to reset the rating to its initial value.",
              "fieldName": "defaultValue"
            },
            {
              "name": "max",
              "type": {
                "text": "number"
              },
              "description": "The highest rating to show.",
              "fieldName": "max"
            },
            {
              "name": "precision",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "The precision at which the rating will increase and decrease. For example, to allow half-star ratings, set this\nattribute to `0.5`.",
              "fieldName": "precision"
            },
            {
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the rating readonly.",
              "fieldName": "readonly"
            },
            {
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the rating a required field — a value of 0 counts as missing.",
              "fieldName": "required"
            },
            {
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "Blocks form submission — with a localized generic message when set to an empty string, with the\ngiven text otherwise — and sets the `error` custom state. `ed-rating` renders no message area\nand brings no error styling, so the constraint is the only effect a user notices; style\n`:state(error)` to show one.",
              "fieldName": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "Sets the `warning` custom state and does not block form submission. `ed-rating` renders no\nmessage area and brings no warning styling, so the message text is never shown; style\n`:state(warning)` to show one.",
              "fieldName": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Sets the `ai` custom state until the user interacts. `ed-rating` brings no AI styling, so the\nstate is the only effect; style `:state(ai)` to show one.",
              "fieldName": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Has no effect on `ed-rating`, which renders no hint area. Put explanatory text next to the\nrating instead.",
              "fieldName": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "icon",
              "type": {
                "text": "string"
              },
              "default": "'favorite'",
              "description": "The icon name for inactive (unselected) symbols.",
              "fieldName": "icon"
            },
            {
              "name": "active-icon",
              "type": {
                "text": "string"
              },
              "default": "'favorite_filled'",
              "description": "The icon name for active (selected) symbols.",
              "fieldName": "activeIcon"
            },
            {
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "The component's density.",
              "fieldName": "density",
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "fieldName": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "Applied when the rating is disabled.",
              "name": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Applied when the rating carries the error hint state. `ed-rating` brings no error styling of its own — style this state to show one.",
              "name": "error",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Applied when the rating carries the warning hint state. Unstyled by default.",
              "name": "warning",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Applied when the rating carries the AI hint state, until the user interacts. Unstyled by default.",
              "name": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is required.",
              "name": "required",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is not required.",
              "name": "optional",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value fails constraint validation, whether or not the user has touched the control yet.",
              "name": "invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value passes constraint validation.",
              "name": "valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Invalid, and the user has interacted with the control. This is the one to style for an error: it behaves like the platform's `:user-invalid`, so an untouched field is not marked wrong before the user has had a chance to fill it in.",
              "name": "user-invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Valid, and the user has interacted with the control.",
              "name": "user-valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The user has interacted with the control.",
              "name": "dirty",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdFormAssociatedElement",
            "module": "/src/internal/ed-form-associated-element.js"
          },
          "summary": "Ratings give users a way to quickly view and provide feedback.",
          "jsDoc": "/**\n * @summary Ratings give users a way to quickly view and provide feedback.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/rating\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-icon\n *\n * @event change - Emitted when the rating's value changes.\n * @event {{ phase: 'start' | 'move' | 'end', value: number }} ed-hover - Emitted when the user hovers over a value. The\n *  `phase` property indicates when hovering starts, moves to a new value, or ends. The `value` property tells what the\n *  rating's value would be if the user were to commit to the hovered value.\n * @event ed-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n *\n * @csspart base - The component's base wrapper.\n *\n * @cssstate disabled - Applied when the rating is disabled.\n * @cssstate error - Applied when the rating carries the error hint state. `ed-rating` brings no\n *  error styling of its own — style this state to show one.\n * @cssstate warning - Applied when the rating carries the warning hint state. Unstyled by default.\n * @cssstate ai - Applied when the rating carries the AI hint state, until the user interacts.\n *  Unstyled by default.\n *\n * @cssproperty --ed-rating-symbol-color - The inactive color for symbols.\n * @cssproperty --ed-rating-symbol-color-active - The active color for symbols.\n * @cssproperty --ed-rating-symbol-spacing - The spacing to use around symbols.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/rating",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-rating",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdRating",
            "module": "components/rating/rating.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-rating",
          "declaration": {
            "name": "EdRating",
            "module": "components/rating/rating.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/relative-time/relative-time.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdRelativeTime",
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "updateTimeout",
              "type": {
                "text": "number | ReturnType<typeof setTimeout>"
              },
              "privacy": "private",
              "parsedType": {
                "text": "number | { close: {  }, hasRef: {  }, ref: {  }, refresh: {  }, unref: {  }, _onTimeout: {  }, __@toPrimitive@535: {  }, __@dispose@4064: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "isoTime",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "relativeTime",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "date",
              "type": {
                "text": "Date | string | null"
              },
              "default": "new Date()",
              "description": "The date from which to calculate time from. If not set, the current date and time will be used. Set `null` or an\nempty value to render nothing. A value that cannot be read renders nothing either, and says so in the console.\n\nA string is read as a **calendar day** when it carries no time of day (`2026-08-03`, `2026-08`, `2026`) and as an\n**exact instant** when it does (`2026-08-03T10:30:00Z`). A calendar day counts from its local midnight, so the\nphrase does not flip to the neighboring day depending on the viewer's zone. Use the ISO 8601 format either way — to\nserialize a `Date`, use\n[`date.toISOString()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString).",
              "attribute": "date",
              "parsedType": {
                "text": "null | string | { toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@535: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "display",
              "type": {
                "text": "'long' | 'short' | 'narrow'"
              },
              "default": "'long'",
              "description": "Determines how to display the result, from the most verbose form down to the shortest. Some\nlocales render `short` and `narrow` alike.",
              "attribute": "display",
              "parsedType": {
                "text": "'short' | 'long' | 'narrow'"
              }
            },
            {
              "kind": "field",
              "name": "numeric",
              "type": {
                "text": "'always' | 'auto'"
              },
              "default": "'auto'",
              "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.",
              "attribute": "numeric",
              "parsedType": {
                "text": "'auto' | 'always'"
              }
            },
            {
              "kind": "field",
              "name": "sync",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Keep the displayed value up to date as time passes.",
              "attribute": "sync"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "date",
              "type": {
                "text": "Date | string | null"
              },
              "default": "new Date()",
              "description": "The date from which to calculate time from. If not set, the current date and time will be used. Set `null` or an\nempty value to render nothing. A value that cannot be read renders nothing either, and says so in the console.\n\nA string is read as a **calendar day** when it carries no time of day (`2026-08-03`, `2026-08`, `2026`) and as an\n**exact instant** when it does (`2026-08-03T10:30:00Z`). A calendar day counts from its local midnight, so the\nphrase does not flip to the neighboring day depending on the viewer's zone. Use the ISO 8601 format either way — to\nserialize a `Date`, use\n[`date.toISOString()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString).",
              "fieldName": "date",
              "parsedType": {
                "text": "null | string | { toString: {  }, toDateString: {  }, toTimeString: {  }, toLocaleString: {  }, toLocaleDateString: {  }, toLocaleTimeString: {  }, valueOf: {  }, getTime: {  }, getFullYear: {  }, getUTCFullYear: {  }, getMonth: {  }, getUTCMonth: {  }, getDate: {  }, getUTCDate: {  }, getDay: {  }, getUTCDay: {  }, getHours: {  }, getUTCHours: {  }, getMinutes: {  }, getUTCMinutes: {  }, getSeconds: {  }, getUTCSeconds: {  }, getMilliseconds: {  }, getUTCMilliseconds: {  }, getTimezoneOffset: {  }, setTime: {  }, setMilliseconds: {  }, setUTCMilliseconds: {  }, setSeconds: {  }, setUTCSeconds: {  }, setMinutes: {  }, setUTCMinutes: {  }, setHours: {  }, setUTCHours: {  }, setDate: {  }, setUTCDate: {  }, setMonth: {  }, setUTCMonth: {  }, setFullYear: {  }, setUTCFullYear: {  }, toUTCString: {  }, toISOString: {  }, toJSON: {  }, __@toPrimitive@535: {  } }"
              }
            },
            {
              "name": "display",
              "type": {
                "text": "'long' | 'short' | 'narrow'"
              },
              "default": "'long'",
              "description": "Determines how to display the result, from the most verbose form down to the shortest. Some\nlocales render `short` and `narrow` alike.",
              "fieldName": "display",
              "parsedType": {
                "text": "'short' | 'long' | 'narrow'"
              }
            },
            {
              "name": "numeric",
              "type": {
                "text": "'always' | 'auto'"
              },
              "default": "'auto'",
              "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.",
              "fieldName": "numeric",
              "parsedType": {
                "text": "'auto' | 'always'"
              }
            },
            {
              "name": "sync",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Keep the displayed value up to date as time passes.",
              "fieldName": "sync"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Outputs a localized time phrase relative to the current date and time.",
          "jsDoc": "/**\n * @summary Outputs a localized time phrase relative to the current date and time.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/relative-time\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/relative-time",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-relative-time",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdRelativeTime",
            "module": "components/relative-time/relative-time.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-relative-time",
          "declaration": {
            "name": "EdRelativeTime",
            "module": "components/relative-time/relative-time.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/resize-observer/resize-observer.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdResizeObserver",
          "slots": [
            {
              "description": "One or more elements to watch for resizing.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "resizeObserver",
              "type": {
                "text": "ResizeObserver"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "observedElements",
              "type": {
                "text": "HTMLElement[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the observer.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "startObserver",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "stopObserver",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ entries: ResizeObserverEntry[] }"
              },
              "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-resize",
              "reactName": "onEdResize",
              "eventName": "EdResizeEvent"
            }
          ],
          "attributes": [
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the observer.",
              "fieldName": "disabled"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "The Resize Observer component offers a thin, declarative interface to the [`ResizeObserver API`](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver).",
          "jsDoc": "/**\n * @summary The Resize Observer component offers a thin, declarative interface to the [`ResizeObserver API`](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver).\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/resize-observer\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @slot - One or more elements to watch for resizing.\n *\n * @event {{ entries: ResizeObserverEntry[] }} 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 */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/resize-observer",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-resize-observer",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdResizeObserver",
            "module": "components/resize-observer/resize-observer.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-resize-observer",
          "declaration": {
            "name": "EdResizeObserver",
            "module": "components/resize-observer/resize-observer.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/scroller/scroller.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdScroller",
          "cssProperties": [
            {
              "description": "The base color of the shadow.",
              "name": "--ed-scroller-shadow-color",
              "default": "var(--ed-color-surface-default)"
            },
            {
              "description": "The size of the shadow.",
              "name": "--ed-scroller-shadow-size",
              "default": "2rem"
            }
          ],
          "cssParts": [
            {
              "description": "The container that wraps the slotted content.",
              "name": "content"
            },
            {
              "description": "The shadow overlay at the scroller's start edge.",
              "name": "start-shadow"
            },
            {
              "description": "The shadow overlay at the scroller's end edge.",
              "name": "end-shadow"
            }
          ],
          "slots": [
            {
              "description": "The content to show inside the scroller.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "resizeObserver",
              "type": {
                "text": "ResizeObserver | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | { disconnect: {  }, observe: {  }, unobserve: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "content",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "canScroll",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'horizontal'",
              "description": "The scroller's orientation.",
              "attribute": "orientation",
              "reflects": true,
              "parsedType": {
                "text": "'horizontal' | 'vertical'"
              }
            },
            {
              "kind": "field",
              "name": "withoutScrollbar",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Removes the visible scrollbar.",
              "attribute": "without-scrollbar",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "withoutShadow",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Removes the shadows.",
              "attribute": "without-shadow",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "ariaLabel",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The scroll region's accessible name, replacing the localized \"Scrollable region\" default —\nset it to tell multiple scrollers on one page apart. Mirrored onto the internal region node,\nwhere the role lives — an aria-label left on the host alone would sit on a role-less element\nand be ignored by assistive tech (house pattern: ed-checkbox).",
              "attribute": "aria-label",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "method",
              "name": "handleFocus",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleBlur",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "updateScroll",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'horizontal'",
              "description": "The scroller's orientation.",
              "fieldName": "orientation",
              "parsedType": {
                "text": "'horizontal' | 'vertical'"
              }
            },
            {
              "name": "without-scrollbar",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Removes the visible scrollbar.",
              "fieldName": "withoutScrollbar"
            },
            {
              "name": "without-shadow",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Removes the shadows.",
              "fieldName": "withoutShadow"
            },
            {
              "name": "aria-label",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The scroll region's accessible name, replacing the localized \"Scrollable region\" default —\nset it to tell multiple scrollers on one page apart. Mirrored onto the internal region node,\nwhere the role lives — an aria-label left on the host alone would sit on a role-less element\nand be ignored by assistive tech (house pattern: ed-checkbox).",
              "fieldName": "ariaLabel",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Scrollers create an accessible container while providing visual cues that help users identify and navigate\nthrough content that scrolls.",
          "jsDoc": "/**\n * @summary Scrollers create an accessible container while providing visual cues that help users identify and navigate\n *  through content that scrolls.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/scroller\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @slot - The content to show inside the scroller.\n *\n * @cssproperty [--ed-scroller-shadow-color=var(--ed-color-surface-default)] - The base color of the shadow.\n * @cssproperty [--ed-scroller-shadow-size=2rem] - The size of the shadow.\n *\n * @csspart content - The container that wraps the slotted content.\n * @csspart start-shadow - The shadow overlay at the scroller's start edge.\n * @csspart end-shadow - The shadow overlay at the scroller's end edge.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/scroller",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-scroller",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdScroller",
            "module": "components/scroller/scroller.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-scroller",
          "declaration": {
            "name": "EdScroller",
            "module": "components/scroller/scroller.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/scrollspy-item/scrollspy-item.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdScrollspyItem",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The clickable anchor row.",
              "name": "link"
            },
            {
              "description": "The vertical line column to the inline-start of the label. Tinted for the active section.",
              "name": "rail"
            },
            {
              "description": "The circular indicator on the rail. Solid-filled when active.",
              "name": "dot"
            },
            {
              "description": "The visible item label.",
              "name": "label"
            },
            {
              "description": "The child-count badge on parent items (rendered when `count > 0`).",
              "name": "count"
            },
            {
              "description": "Container for nested level-2 items.",
              "name": "children"
            }
          ],
          "slots": [
            {
              "description": "The item's label text. It renders inside the row's anchor, so nested items belong in the `children` slot.",
              "name": ""
            },
            {
              "description": "Nested `<ed-scrollspy-item>` elements, one level deep (the parent enforces the two-level cap). An item nested inside another item is assigned here automatically, so the attribute is optional.",
              "name": "children"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "href",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Anchor target — the heading id this item points to (e.g. `#anatomy`).",
              "attribute": "href"
            },
            {
              "kind": "field",
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether this item's heading is the active scroll target. Set by the parent; do not write directly.",
              "attribute": "active",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "parentActive",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether this is a level-1 item whose level-2 child is active. Set by the parent; do not write directly.",
              "attribute": "parent-active",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "passed",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the reader has scrolled past this item. Set by the parent; do not write directly.",
              "attribute": "passed",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "count",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "Number of level-2 children inside this item. Set by the parent on level-1 items.",
              "attribute": "count"
            },
            {
              "kind": "field",
              "name": "showCount",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, render the count badge. Gated by the parent's `show-counts` attribute.",
              "attribute": "show-count"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "href",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Anchor target — the heading id this item points to (e.g. `#anatomy`).",
              "fieldName": "href"
            },
            {
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether this item's heading is the active scroll target. Set by the parent; do not write directly.",
              "fieldName": "active"
            },
            {
              "name": "parent-active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether this is a level-1 item whose level-2 child is active. Set by the parent; do not write directly.",
              "fieldName": "parentActive"
            },
            {
              "name": "passed",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the reader has scrolled past this item. Set by the parent; do not write directly.",
              "fieldName": "passed"
            },
            {
              "name": "count",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "Number of level-2 children inside this item. Set by the parent on level-1 items.",
              "fieldName": "count"
            },
            {
              "name": "show-count",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, render the count badge. Gated by the parent's `show-counts` attribute.",
              "fieldName": "showCount"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "Applied when this item's heading is the active scroll target.",
              "name": "active"
            },
            {
              "description": "Applied to a level-1 item when its level-2 child is active.",
              "name": "parent-active"
            },
            {
              "description": "Applied to items the reader has scrolled past.",
              "name": "passed"
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "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.",
          "jsDoc": "/**\n * @summary 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 * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/scrollspy-item\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @slot - The item's label text. It renders inside the row's anchor, so nested items belong in the `children` slot.\n * @slot children - Nested `<ed-scrollspy-item>` elements, one level deep (the parent enforces the two-level cap). An\n *  item nested inside another item is assigned here automatically, so the attribute is optional.\n *\n * @csspart base - The component's base wrapper.\n * @csspart link - The clickable anchor row.\n * @csspart rail - The vertical line column to the inline-start of the label. Tinted for the active section.\n * @csspart dot - The circular indicator on the rail. Solid-filled when active.\n * @csspart label - The visible item label.\n * @csspart count - The child-count badge on parent items (rendered when `count > 0`).\n * @csspart children - Container for nested level-2 items.\n *\n * @cssstate active - Applied when this item's heading is the active scroll target.\n * @cssstate parent-active - Applied to a level-1 item when its level-2 child is active.\n * @cssstate passed - Applied to items the reader has scrolled past.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/scrollspy-item",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-scrollspy-item",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdScrollspyItem",
            "module": "components/scrollspy-item/scrollspy-item.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-scrollspy-item",
          "declaration": {
            "name": "EdScrollspyItem",
            "module": "components/scrollspy-item/scrollspy-item.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/scrollspy/scrollspy.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdScrollspy",
          "cssParts": [
            {
              "description": "The inner `<nav>` element.",
              "name": "base"
            },
            {
              "description": "The top-level `<ul>` rendered for auto-discovered items.",
              "name": "list"
            }
          ],
          "slots": [
            {
              "description": "The default slot for `<ed-scrollspy-item>` elements when authoring declaratively.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "for",
              "type": {
                "text": "string"
              },
              "default": "''",
              "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.",
              "attribute": "for"
            },
            {
              "kind": "field",
              "name": "headings",
              "type": {
                "text": "string"
              },
              "default": "'h2, h3'",
              "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.",
              "attribute": "headings"
            },
            {
              "kind": "field",
              "name": "expand",
              "type": {
                "text": "'active' | 'all'"
              },
              "default": "'active'",
              "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.",
              "attribute": "expand",
              "parsedType": {
                "text": "'active' | 'all'"
              }
            },
            {
              "kind": "field",
              "name": "showCounts",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, parent items render a child-count badge with their level-2 child count.",
              "attribute": "show-counts"
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Sets `aria-label` on the inner `<nav>`. Defaults to a localized \"On this page\".",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "density",
              "type": {
                "text": "'spacious' | 'default' | 'compact'"
              },
              "default": "'default'",
              "description": "Density of the rail items. Match this to an adjacent [ed-side-menu](/a/eurodata-ui/docs/components/side-menu)\nso the two line up — a compact side-menu next to a default scrollspy reads as mismatched.\n- `spacious` — relaxed rows (~52px).\n- `default` — condensed rows (~40px).\n- `compact` — minimal rows (`--ed-form-control-height`, ~32px).",
              "attribute": "density",
              "reflects": true,
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "kind": "field",
              "name": "activeId",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Currently active heading id. Reflected for CSS hooks; consumers should treat as\nread-only outside tests.",
              "attribute": "active-id",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "offset",
              "type": {
                "text": "string"
              },
              "default": "'25%'",
              "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.",
              "attribute": "offset"
            },
            {
              "kind": "field",
              "name": "autoEntries",
              "type": {
                "text": "AutoDiscoveredEntry[]"
              },
              "privacy": "private",
              "default": "[]",
              "description": "Auto-discovered entries — populated when slot is empty and `for=` resolves."
            },
            {
              "kind": "field",
              "name": "flatIds",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "description": "Cached flat list of heading ids in document order."
            },
            {
              "kind": "field",
              "name": "headingsMap",
              "privacy": "private",
              "default": "new Map<string, HTMLElement>()",
              "description": "Cached map from heading id to the heading element in the article."
            },
            {
              "kind": "field",
              "name": "mutationObserver",
              "type": {
                "text": "MutationObserver | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Per-instance MutationObserver on the resolved `for=` target.",
              "parsedType": {
                "text": "null | { disconnect: {  }, observe: {  }, takeRecords: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "rafId",
              "type": {
                "text": "number | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Last RAF id from the throttled recompute.",
              "parsedType": {
                "text": "null | number"
              }
            },
            {
              "kind": "field",
              "name": "depthWarned",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether we have logged a depth-2-cap warning for this instance (per-instance dedupe)."
            },
            {
              "kind": "field",
              "name": "#seeding",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "True until the first active id has been seeded, so seeding announces nothing."
            },
            {
              "kind": "field",
              "name": "#scrollingTo",
              "privacy": "private",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "Target of the click-driven smooth scroll, held while that scroll is under way.",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "#scrollPinUntil",
              "privacy": "private",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "Deadline for that pin. A smooth scroll settles well inside a second; the deadline exists only\nso a scroll the reader interrupts on the way cannot hold the probe for good."
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "handleScrollOrResize",
              "privacy": "private",
              "readonly": true,
              "description": "Bound listeners — stored so `removeEventListener` actually removes them."
            },
            {
              "kind": "method",
              "name": "propagateDensity",
              "privacy": "private",
              "description": "Push `density` onto every rendered item as an attribute (mirrors ed-side-menu). Covers both\nauto-discovered shadow items and slotted light-DOM items. Called only on structural/density\nchanges, never per scroll frame."
            },
            {
              "kind": "method",
              "name": "recomputeActive",
              "description": "Public test hook: synchronously recompute active item from current scroll position.\nSide-menu's `setCurrent()` is the precedent for an externally-callable sync escape hatch."
            },
            {
              "kind": "method",
              "name": "scrollToId",
              "parameters": [
                {
                  "name": "id",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Smoothly scroll the named heading to the top of the scroll region and sync the URL hash.\n\nThe heading lands at the region's top: for the window (the real page case) that means\nscroll-margin-top below the viewport top — i.e. just under any sticky header — and for a\nnested overflow container (e.g. the docs demo) the container's top edge.\n\nThe clicked heading is set active only when the scroll can actually bring it to the top.\nAt the document end, where it can't, we leave the active state to the probe so the heading\nactually shown at the top stays highlighted — clicking the last item repeatedly no longer\nforces it active."
            },
            {
              "kind": "method",
              "name": "getScrollContainer",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLElement | null"
                }
              },
              "parameters": [
                {
                  "name": "el",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "Walks up from `el` looking for the first ancestor with a scrollable y-axis (excluding\n`<html>` and `<body>`, which are the implicit window scroll). Returns null when the\nwindow itself is the scroll container — i.e., the typical real-world case."
            },
            {
              "kind": "method",
              "name": "setActive",
              "privacy": "private",
              "parameters": [
                {
                  "name": "id",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "scheduleRecompute",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "computeProbeY",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              }
            },
            {
              "kind": "method",
              "name": "resolveForTarget",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Element | null"
                }
              }
            },
            {
              "kind": "method",
              "name": "getSlottedItems",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdScrollspyItem[]"
                }
              },
              "description": "Returns slotted `<ed-scrollspy-item>` direct children, if any."
            },
            {
              "kind": "method",
              "name": "rebuild",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "scanHeadings",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "AutoDiscoveredEntry[]"
                }
              },
              "parameters": [
                {
                  "name": "target",
                  "type": {
                    "text": "Element"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "collectFlatIdsFromSlotted",
              "privacy": "private",
              "parameters": [
                {
                  "name": "slotted",
                  "type": {
                    "text": "EdScrollspyItem[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getAllRenderedItems",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdScrollspyItem[]"
                }
              }
            },
            {
              "kind": "method",
              "name": "applyActiveState",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "keepActiveItemInViewAfterUpdate",
              "privacy": "private",
              "description": "Same correction, deferred to after the update that changed the geometry. A `@watch` handler\nruns inside `update()`, before the new row heights exist — measuring there reads the old\nlayout and the correction lands on stale positions. The items are separate elements with\nupdate cycles of their own, so waiting for this element alone is not enough."
            },
            {
              "kind": "method",
              "name": "keepActiveItemInView",
              "privacy": "private",
              "description": "Brings the active item into view when the list has a scroll box of its own. A list long enough\nto scroll loses its highlight off the edge as the reader moves down the page.\n\nScrolls that box directly rather than through `scrollIntoView()`: that walks the whole ancestor\nchain up to the document, so it would move the page under a reader who is scrolling it. Only\nthe nearest box is corrected — a bounded list inside another scrolled box can still sit outside\nthe outer one. Deltas come from `getBoundingClientRect()`, which a `transform: scale()` on an\nancestor reports in scaled pixels while `scrollTop` counts unscaled ones."
            },
            {
              "kind": "method",
              "name": "getListScrollBox",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLElement | null"
                }
              },
              "description": "The element that scrolls the item list, or null when nothing does."
            },
            {
              "kind": "method",
              "name": "applySectionRailState",
              "privacy": "private",
              "description": "Per Figma 15985:22634, the rail is solid-tinted across the full vertical extent\nof the active row (the row matching the selection pill). No gradient/progress —\njust a band from the row's top to its bottom. We expose the band's start/end as\n'--_rail-tint-start' / '--_rail-tint-end' on the active L1; the CSS gradient does\nthe actual painting.\n\nCoordinates are in `::before`-local px. The first L1's `::before` is trimmed by\nhalf a row at the top (so the line starts at the first dot center) — we subtract\nthat trim from the band offsets so they land where the row actually sits.\n\nThe row height is measured live (see measureRowHeight) rather than assumed, so the\nband stays accurate across densities and any theme that resizes rows."
            },
            {
              "kind": "method",
              "name": "measureRowHeight",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "description": "Pixel height of one rail row at the current density. Any item with no visible children is\nexactly one row tall, so measuring its host box yields the row height without reaching into a\nchild shadow root — and it tracks density and the em-based `--ed-form-control-height` (compact)\nwithout hardcoding either."
            },
            {
              "kind": "method",
              "name": "applyChildrenVisibility",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "attachMutationObserver",
              "privacy": "private",
              "parameters": [
                {
                  "name": "target",
                  "type": {
                    "text": "Element"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "disconnectMutationObserver",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderItem",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "unknown"
                }
              },
              "parameters": [
                {
                  "name": "entry",
                  "type": {
                    "text": "AutoDiscoveredEntry"
                  }
                },
                {
                  "name": "isChild",
                  "default": "false"
                }
              ]
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ activeId: string, previousId: string | null }"
              },
              "description": "Fired when the active heading changes.",
              "name": "ed-scrollspy-change",
              "reactName": "onEdScrollspyChange",
              "eventName": "EdScrollspyChangeEvent"
            }
          ],
          "attributes": [
            {
              "name": "for",
              "type": {
                "text": "string"
              },
              "default": "''",
              "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.",
              "fieldName": "for"
            },
            {
              "name": "headings",
              "type": {
                "text": "string"
              },
              "default": "'h2, h3'",
              "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.",
              "fieldName": "headings"
            },
            {
              "name": "expand",
              "type": {
                "text": "'active' | 'all'"
              },
              "default": "'active'",
              "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.",
              "fieldName": "expand",
              "parsedType": {
                "text": "'active' | 'all'"
              }
            },
            {
              "name": "show-counts",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, parent items render a child-count badge with their level-2 child count.",
              "fieldName": "showCounts"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Sets `aria-label` on the inner `<nav>`. Defaults to a localized \"On this page\".",
              "fieldName": "label"
            },
            {
              "name": "density",
              "type": {
                "text": "'spacious' | 'default' | 'compact'"
              },
              "default": "'default'",
              "description": "Density of the rail items. Match this to an adjacent [ed-side-menu](/a/eurodata-ui/docs/components/side-menu)\nso the two line up — a compact side-menu next to a default scrollspy reads as mismatched.\n- `spacious` — relaxed rows (~52px).\n- `default` — condensed rows (~40px).\n- `compact` — minimal rows (`--ed-form-control-height`, ~32px).",
              "fieldName": "density",
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "name": "active-id",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Currently active heading id. Reflected for CSS hooks; consumers should treat as\nread-only outside tests.",
              "fieldName": "activeId"
            },
            {
              "name": "offset",
              "type": {
                "text": "string"
              },
              "default": "'25%'",
              "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.",
              "fieldName": "offset"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "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.",
          "jsDoc": "/**\n * @summary 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 * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/scrollspy\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-scrollspy-item\n *\n * @event {{ activeId: string, previousId: string | null }} ed-scrollspy-change - Fired when the active heading changes.\n *\n * @slot - The default slot for `<ed-scrollspy-item>` elements when authoring declaratively.\n *\n * @csspart base - The inner `<nav>` element.\n * @csspart list - The top-level `<ul>` rendered for auto-discovered items.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/scrollspy",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-scrollspy-item"
          ],
          "tagName": "ed-scrollspy",
          "customElement": true
        },
        {
          "kind": "variable",
          "name": "label"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdScrollspy",
            "module": "components/scrollspy/scrollspy.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-scrollspy",
          "declaration": {
            "name": "EdScrollspy",
            "module": "components/scrollspy/scrollspy.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/test/data-testid-helpers.js",
      "declarations": [
        {
          "kind": "function",
          "name": "queryByTestId",
          "return": {
            "type": {
              "text": ""
            }
          },
          "parameters": [
            {
              "name": "container",
              "type": {
                "text": "HTMLElement"
              },
              "description": "A parent element of the DOM element to find"
            },
            {
              "name": "testId",
              "type": {
                "text": "string"
              },
              "description": "The value of the `data-testid` attribute of the component to find."
            }
          ],
          "description": "Allows you to find a DOM element based on the value of its `data-testid` attribute.\nThis attribute can be used to decouple identifying dom elements for testing from\nstyling (which is typically done via class selectors) or other ids which serve\ndifferent purposes.\nSee also https://kentcdodds.com/blog/making-your-ui-tests-resilient-to-change\nInspired by https://testing-library.com/docs/queries/bytestid/"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "queryByTestId",
          "declaration": {
            "name": "queryByTestId",
            "module": "internal/test/data-testid-helpers.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/split-panel/split-panel.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdSplitPanel",
          "cssProperties": [
            {
              "description": "The width of the visible divider. In `rem`, so it grows with the user's base font size; a pixel value freezes it.",
              "name": "--ed-split-panel-divider-width",
              "default": "0.25rem"
            },
            {
              "description": "The invisible region around the divider where dragging can occur. This is usually wider than the divider to facilitate easier dragging.",
              "name": "--ed-split-panel-divider-hit-area",
              "default": "0.75rem"
            },
            {
              "description": "The minimum allowed size of the primary panel. Keep a unit: a unitless 0 makes the `clamp()` it feeds invalid, and the panel collapses into one pane with no divider.",
              "name": "--ed-split-panel-min",
              "default": "0%"
            },
            {
              "description": "The maximum allowed size of the primary panel.",
              "name": "--ed-split-panel-max",
              "default": "100%"
            }
          ],
          "cssParts": [
            {
              "description": "The start panel.",
              "name": "start"
            },
            {
              "description": "The end panel.",
              "name": "end"
            },
            {
              "description": "Targets both the start and end panels.",
              "name": "panel"
            },
            {
              "description": "The divider that separates the start and end panels.",
              "name": "divider"
            },
            {
              "description": "The default drag handle rendered in the center of the divider when no custom divider is slotted.",
              "name": "handle"
            }
          ],
          "slots": [
            {
              "description": "Content to place in the start panel.",
              "name": "start"
            },
            {
              "description": "Content to place in the end panel.",
              "name": "end"
            },
            {
              "description": "The divider. Useful for slotting in a custom icon that renders as a handle.",
              "name": "divider"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "cachedPositionInPixels",
              "type": {
                "text": "number"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "draggableDivider",
              "type": {
                "text": "DraggableElement | undefined"
              },
              "privacy": "private",
              "parsedType": {
                "text": "{ element: Element, isActive: boolean, isDragging: boolean, options: { start: {  }, move: {  }, stop: {  } }, handleDragStart: {  }, handleDragStop: {  }, handleDragMove: {  }, start: {  }, stop: {  }, toggle: {  } } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "lastFinitePosition",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "50",
              "description": "The last finite position percentage, used to recover after a hidden→visible resize."
            },
            {
              "kind": "field",
              "name": "isCollapsed",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "positionBeforeCollapsing",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "resizeObserver",
              "type": {
                "text": "ResizeObserver"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "size",
              "type": {
                "text": "number"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "divider",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "position",
              "type": {
                "text": "number"
              },
              "default": "50",
              "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.",
              "attribute": "position",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "positionInPixels",
              "type": {
                "text": "number"
              },
              "description": "The current position of the divider from the primary panel's edge in pixels.",
              "attribute": "position-in-pixels"
            },
            {
              "kind": "field",
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'horizontal'",
              "description": "Sets the split panel's orientation.",
              "attribute": "orientation",
              "reflects": true,
              "parsedType": {
                "text": "'horizontal' | 'vertical'"
              }
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables resizing. Note that the position may still change as a result of resizing the host element.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "primary",
              "type": {
                "text": "'start' | 'end' | undefined"
              },
              "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.",
              "attribute": "primary",
              "parsedType": {
                "text": "'start' | 'end' | undefined"
              }
            },
            {
              "kind": "field",
              "name": "snap",
              "type": {
                "text": "string | undefined"
              },
              "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%\"`.",
              "attribute": "snap"
            },
            {
              "kind": "field",
              "name": "snapThreshold",
              "type": {
                "text": "number"
              },
              "default": "12",
              "description": "How close the divider must be to a snap point until snapping occurs.",
              "attribute": "snap-threshold"
            },
            {
              "kind": "field",
              "name": "ariaLabel",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The divider's accessible name, replacing the localized \"Resize\" default — set it to tell\nmultiple split panels on one page apart. Mirrored onto the internal separator node, where\nthe role lives — an aria-label left on the host alone would sit on a role-less element and\nbe ignored by assistive tech (house pattern: ed-checkbox).",
              "attribute": "aria-label",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "method",
              "name": "wireDivider",
              "privacy": "private",
              "description": "Runs on every connect, not once: the divider node survives a move in the DOM, but its drag\nlisteners are torn down on disconnect and have to be put back.\n\nOnly `move` is wired. Placing the divider on the press as well would make a plain click on the\nhit area jump it by up to half that area's width."
            },
            {
              "kind": "method",
              "name": "detectSize",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "percentageToPixels",
              "privacy": "private",
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "pixelsToPercentage",
              "privacy": "private",
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDividerMouseDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ],
              "description": "Keeps the press from selecting text and from moving focus onto the divider — `DraggableElement`\nstarts on `pointerdown`, which fires first, so cancelling the `mousedown` that follows takes\nneither away from it."
            },
            {
              "kind": "method",
              "name": "moveDividerTo",
              "privacy": "private",
              "parameters": [
                {
                  "name": "clientX",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "clientY",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Places the divider under a pointer position given in client coordinates."
            },
            {
              "kind": "method",
              "name": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleResize",
              "privacy": "private",
              "parameters": [
                {
                  "name": "entries",
                  "type": {
                    "text": "ResizeObserverEntry[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "Emitted when the divider's position changes.",
              "name": "ed-reposition",
              "reactName": "onEdReposition",
              "eventName": "EdRepositionEvent"
            }
          ],
          "attributes": [
            {
              "name": "position",
              "type": {
                "text": "number"
              },
              "default": "50",
              "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.",
              "fieldName": "position"
            },
            {
              "name": "position-in-pixels",
              "type": {
                "text": "number"
              },
              "description": "The current position of the divider from the primary panel's edge in pixels.",
              "fieldName": "positionInPixels"
            },
            {
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'horizontal'",
              "description": "Sets the split panel's orientation.",
              "fieldName": "orientation",
              "parsedType": {
                "text": "'horizontal' | 'vertical'"
              }
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables resizing. Note that the position may still change as a result of resizing the host element.",
              "fieldName": "disabled"
            },
            {
              "name": "primary",
              "type": {
                "text": "'start' | 'end' | undefined"
              },
              "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.",
              "fieldName": "primary",
              "parsedType": {
                "text": "'start' | 'end' | undefined"
              }
            },
            {
              "name": "snap",
              "type": {
                "text": "string | undefined"
              },
              "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%\"`.",
              "fieldName": "snap"
            },
            {
              "name": "snap-threshold",
              "type": {
                "text": "number"
              },
              "default": "12",
              "description": "How close the divider must be to a snap point until snapping occurs.",
              "fieldName": "snapThreshold"
            },
            {
              "name": "aria-label",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The divider's accessible name, replacing the localized \"Resize\" default — set it to tell\nmultiple split panels on one page apart. Mirrored onto the internal separator node, where\nthe role lives — an aria-label left on the host alone would sit on a role-less element and\nbe ignored by assistive tech (house pattern: ed-checkbox).",
              "fieldName": "ariaLabel",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Split panels display two adjacent panels, allowing the user to resize them.",
          "jsDoc": "/**\n * @summary Split panels display two adjacent panels, allowing the user to resize them.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/split-panel\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @event ed-reposition - Emitted when the divider's position changes.\n *\n * @slot start - Content to place in the start panel.\n * @slot end - Content to place in the end panel.\n * @slot divider - The divider. Useful for slotting in a custom icon that renders as a handle.\n *\n * @csspart start - The start panel.\n * @csspart end - The end panel.\n * @csspart panel - Targets both the start and end panels.\n * @csspart divider - The divider that separates the start and end panels.\n * @csspart handle - The default drag handle rendered in the center of the divider when no custom divider is slotted.\n *\n * @dependency ed-icon\n *\n * @cssproperty [--ed-split-panel-divider-width=0.25rem] - The width of the visible divider. In `rem`, so it grows with the\n *  user's base font size; a pixel value freezes it.\n * @cssproperty [--ed-split-panel-divider-hit-area=0.75rem] - The invisible region around the divider where dragging can occur. This is\n *  usually wider than the divider to facilitate easier dragging.\n * @cssproperty [--ed-split-panel-min=0%] - The minimum allowed size of the primary panel. Keep a unit: a unitless 0 makes the\n *  `clamp()` it feeds invalid, and the panel collapses into one pane with no divider.\n * @cssproperty [--ed-split-panel-max=100%] - The maximum allowed size of the primary panel.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/split-panel",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-split-panel",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdSplitPanel",
            "module": "components/split-panel/split-panel.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-split-panel",
          "declaration": {
            "name": "EdSplitPanel",
            "module": "components/split-panel/split-panel.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/stepper/stepper.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdStepper",
          "cssProperties": [
            {
              "description": "The space between steps.",
              "name": "--ed-stepper-gap",
              "default": "var(--ed-space-6)"
            },
            {
              "description": "The size of each step's marker.",
              "name": "--ed-stepper-marker-size",
              "default": "2em"
            },
            {
              "description": "The color of the connector line after a step that isn't completed.",
              "name": "--ed-stepper-connector-color",
              "default": "var(--ed-color-neutral-border-light)"
            },
            {
              "description": "The color of the connector line after a completed step. Unset by default, so the line takes the light border color of the completed step's `variant`.",
              "name": "--ed-stepper-connector-color-active"
            },
            {
              "description": "The thickness of the connector line, in either orientation.",
              "name": "--ed-stepper-connector-width",
              "default": "var(--ed-border-width-2)"
            },
            {
              "description": "The gap between a marker's edge and the connector line, on both sides. Kept clear of the marker geometrically, so it holds even if a marker's background is transparent.",
              "name": "--ed-stepper-connector-gap",
              "default": "0.35em"
            }
          ],
          "cssParts": [
            {
              "description": "The component's outer wrapper. A `<nav>` landmark when the stepper is `clickable`, since its steps are then controls you can navigate with; otherwise a labeled `role=\"group\"`, since a display-only stepper has nothing to navigate.",
              "name": "stepper"
            },
            {
              "description": "Visually hidden \"Step X of Y\" text that tells assistive technology where the active step sits.",
              "name": "summary"
            },
            {
              "description": "The `<ol>` that lays out the steps.",
              "name": "steps"
            }
          ],
          "slots": [
            {
              "description": "One or more `<ed-step>` elements.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "mutationObserver",
              "type": {
                "text": "MutationObserver | undefined"
              },
              "privacy": "private",
              "parsedType": {
                "text": "{ disconnect: {  }, observe: {  }, takeRecords: {  } } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "resizeObserver",
              "type": {
                "text": "ResizeObserver | undefined"
              },
              "privacy": "private",
              "parsedType": {
                "text": "{ disconnect: {  }, observe: {  }, unobserve: {  } } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "stepsEl",
              "type": {
                "text": "HTMLOListElement"
              }
            },
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "isStacked",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "activeIndex",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "stepCount",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "announcement",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "announcementTimeout",
              "type": {
                "text": "ReturnType<typeof setTimeout> | undefined"
              },
              "privacy": "private",
              "parsedType": {
                "text": "{ close: {  }, hasRef: {  }, ref: {  }, refresh: {  }, unref: {  }, _onTimeout: {  }, __@toPrimitive@535: {  }, __@dispose@4064: {  } } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "active",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the active step. Falls back to the first step if unset, or if it doesn't match any step's name.",
              "attribute": "active",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical' | 'auto'"
              },
              "default": "'horizontal'",
              "description": "The stepper's layout direction. `auto` lays steps out in a row and stacks them when the stepper is too narrow\nto give each step about 6em of width, so labels stay legible on small screens. It relies on measuring the\nstepper, so a server-rendered `auto` stepper starts as a row and stacks once it hydrates, which is why\n`horizontal` is the default.",
              "attribute": "orientation",
              "reflects": true,
              "parsedType": {
                "text": "'auto' | 'horizontal' | 'vertical'"
              }
            },
            {
              "kind": "field",
              "name": "linear",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Requires steps to be completed in order. When set, `next()`/`goTo()`/a `data-stepper` invoker and, if\n`clickable` is also set, clicking or activating a step can't reach a step until every step before it is\ncompleted, a disabled one included.\nEvery step past that point renders as locked, except the active one.",
              "attribute": "linear",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "clickable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allows clicking a step, or focusing it and pressing Enter/Space, to jump straight to it. When unset, only\n`next()`/`previous()`/`goTo()` change the active step, e.g. from your own Next/Back buttons or a\n`data-stepper` invoker.",
              "attribute": "clickable",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A label that describes the stepper to assistive devices. Especially useful when more than one is on the page.",
              "attribute": "label"
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getAllSteps",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdStep[]"
                }
              }
            },
            {
              "kind": "method",
              "name": "getLinearBoundaryIndex",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "steps",
                  "type": {
                    "text": "EdStep[]"
                  }
                }
              ],
              "description": "In `linear` mode, the 0-based index of the last step that can be reached. A disabled step that is not completed\ncounts like any other: linear means in order or not at all, so everything after it stays locked."
            },
            {
              "kind": "method",
              "name": "isReachable",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "step",
                  "type": {
                    "text": "EdStep"
                  }
                },
                {
                  "name": "steps",
                  "default": "this.getAllSteps()"
                }
              ]
            },
            {
              "kind": "method",
              "name": "syncSteps",
              "privacy": "private",
              "description": "Recomputes each step's position, active and locked state, and the stepper's own custom states."
            },
            {
              "kind": "method",
              "name": "updateStacking",
              "privacy": "private",
              "parameters": [
                {
                  "name": "width",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Decides whether an `auto` stepper stacks at the given width. Each step needs roughly 6em to keep a short label\non one line, so the row stacks once the stepper is narrower than that times the step count, plus the gaps."
            },
            {
              "kind": "method",
              "name": "goTo",
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Requests a change to the named step. Emits a cancelable `ed-stepper-before-change`; if not canceled, updates\n`active`, emits `ed-stepper-change` and announces the new position to assistive technology. Does nothing if the\nstep doesn't exist, is already active, is disabled, or (in `linear` mode) can't be reached yet."
            },
            {
              "kind": "method",
              "name": "announce",
              "privacy": "private",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "The region is emptied first and filled on the next frame: Lit skips a text update whose value has not changed,\nso the same message twice in a row — possible once `active` was assigned silently in between — would otherwise\nnever reach the DOM and never be spoken. The text is cleared after a while: left standing, it would be read\nagain in browse mode and go stale once `active` is assigned without an announcement."
            },
            {
              "kind": "method",
              "name": "next",
              "description": "Advances to the next step after the active one that is not disabled, if any. In `linear` mode that step still has\nto be reachable, so a disabled step that is not completed stops it."
            },
            {
              "kind": "method",
              "name": "previous",
              "description": "Goes back to the nearest step before the active one that is not disabled, if any."
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ name: string, previousName: string | null, step: EdStep, previousStep: EdStep | null }"
              },
              "description": "Emitted before the active step changes through a click or `goTo()`/`next()`/`previous()`. Calling `event.preventDefault()` keeps the current step, e.g. to guard against invalid or unsaved data. Assigning `active` does not emit it.",
              "name": "ed-stepper-before-change",
              "reactName": "onEdStepperBeforeChange",
              "eventName": "EdStepperBeforeChangeEvent"
            },
            {
              "type": {
                "text": "{ name: string, previousName: string | null, step: EdStep, previousStep: EdStep | null }"
              },
              "description": "Emitted after the active step changed through a click or `goTo()`/`next()`/`previous()`. Assigning `active` does not emit it.",
              "name": "ed-stepper-change",
              "reactName": "onEdStepperChange",
              "eventName": "EdStepperChangeEvent"
            }
          ],
          "attributes": [
            {
              "name": "active",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the active step. Falls back to the first step if unset, or if it doesn't match any step's name.",
              "fieldName": "active"
            },
            {
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical' | 'auto'"
              },
              "default": "'horizontal'",
              "description": "The stepper's layout direction. `auto` lays steps out in a row and stacks them when the stepper is too narrow\nto give each step about 6em of width, so labels stay legible on small screens. It relies on measuring the\nstepper, so a server-rendered `auto` stepper starts as a row and stacks once it hydrates, which is why\n`horizontal` is the default.",
              "fieldName": "orientation",
              "parsedType": {
                "text": "'auto' | 'horizontal' | 'vertical'"
              }
            },
            {
              "name": "linear",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Requires steps to be completed in order. When set, `next()`/`goTo()`/a `data-stepper` invoker and, if\n`clickable` is also set, clicking or activating a step can't reach a step until every step before it is\ncompleted, a disabled one included.\nEvery step past that point renders as locked, except the active one.",
              "fieldName": "linear"
            },
            {
              "name": "clickable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allows clicking a step, or focusing it and pressing Enter/Space, to jump straight to it. When unset, only\n`next()`/`previous()`/`goTo()` change the active step, e.g. from your own Next/Back buttons or a\n`data-stepper` invoker.",
              "fieldName": "clickable"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A label that describes the stepper to assistive devices. Especially useful when more than one is on the page.",
              "fieldName": "label"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "Applied when every step is completed.",
              "name": "completed"
            },
            {
              "description": "Applied when at least one step is loading.",
              "name": "loading"
            },
            {
              "description": "Applied while the steps are laid out vertically, whether by `orientation=\"vertical\"` or because an `auto` stepper is too narrow to give each step room.",
              "name": "stacked"
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Steppers guide users through a process step by step, breaking it into clear stages. Use them for\ncheckout flows, multi-step setup, onboarding, or to show the status of a process.",
          "jsDoc": "/**\n * @summary Steppers guide users through a process step by step, breaking it into clear stages. Use them for\n *  checkout flows, multi-step setup, onboarding, or to show the status of a process.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/stepper/\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-step\n *\n * @event {{ name: string, previousName: string | null, step: EdStep, previousStep: EdStep | null }} ed-stepper-before-change\n *  - Emitted before the active step changes through a click or `goTo()`/`next()`/`previous()`. Calling\n *  `event.preventDefault()` keeps the current step, e.g. to guard against invalid or unsaved data. Assigning\n *  `active` does not emit it.\n * @event {{ name: string, previousName: string | null, step: EdStep, previousStep: EdStep | null }} ed-stepper-change\n *  - Emitted after the active step changed through a click or `goTo()`/`next()`/`previous()`. Assigning `active`\n *  does not emit it.\n *\n * @slot - One or more `<ed-step>` elements.\n *\n * @csspart stepper - The component's outer wrapper. A `<nav>` landmark when the stepper is `clickable`, since its\n *  steps are then controls you can navigate with; otherwise a labeled `role=\"group\"`, since a display-only stepper\n *  has nothing to navigate.\n * @csspart summary - Visually hidden \"Step X of Y\" text that tells assistive technology where the active step sits.\n * @csspart steps - The `<ol>` that lays out the steps.\n *\n * @cssproperty [--ed-stepper-gap=var(--ed-space-6)] - The space between steps.\n * @cssproperty [--ed-stepper-marker-size=2em] - The size of each step's marker.\n * @cssproperty [--ed-stepper-connector-color=var(--ed-color-neutral-border-light)] - The color of the connector line\n *  after a step that isn't completed.\n * @cssproperty --ed-stepper-connector-color-active - The color of the connector line after a completed step. Unset\n *  by default, so the line takes the light border color of the completed step's `variant`.\n * @cssproperty [--ed-stepper-connector-width=var(--ed-border-width-2)] - The thickness of the connector line, in\n *  either orientation.\n * @cssproperty [--ed-stepper-connector-gap=0.35em] - The gap between a marker's edge and the connector line, on both\n *  sides. Kept clear of the marker geometrically, so it holds even if a marker's background is transparent.\n *\n * @cssstate completed - Applied when every step is completed.\n * @cssstate loading - Applied when at least one step is loading.\n * @cssstate stacked - Applied while the steps are laid out vertically, whether by `orientation=\"vertical\"` or\n *  because an `auto` stepper is too narrow to give each step room.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/stepper/",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-step"
          ],
          "tagName": "ed-stepper",
          "customElement": true
        },
        {
          "kind": "variable",
          "name": "previousStep"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdStepper",
            "module": "components/stepper/stepper.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-stepper",
          "declaration": {
            "name": "EdStepper",
            "module": "components/stepper/stepper.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/tab/tab.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdTab",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The container that wraps the start slot, label and end slot.",
              "name": "content"
            },
            {
              "description": "The container that wraps the `start` slot.",
              "name": "start"
            },
            {
              "description": "The container that wraps the `end` slot.",
              "name": "end"
            },
            {
              "description": "The label wrapper.",
              "name": "label"
            }
          ],
          "slots": [
            {
              "description": "The tab's label.",
              "name": ""
            },
            {
              "description": "An element, such as `<ed-icon>`, placed before the label.",
              "name": "start"
            },
            {
              "description": "An element, such as `<ed-icon>`, placed after the label.",
              "name": "end"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "attrId",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "readonly": true,
              "default": "++id"
            },
            {
              "kind": "field",
              "name": "componentId",
              "privacy": "private",
              "readonly": true,
              "default": "`ed-tab-${this.attrId}`"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "tab",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "tabLabel",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "panel",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the tab panel this tab is associated with. The panel must be located in the same tab group.",
              "attribute": "panel",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the tab and prevents selection.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "closable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Make the tab closable",
              "attribute": "closable",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "syncLabelText",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleCloseClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleCloseKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ panel: string }"
              },
              "description": "Emitted when the tab's close button is activated, or when Delete is pressed while the tab has focus.",
              "name": "ed-tab-close",
              "reactName": "onEdTabClose",
              "eventName": "EdTabCloseEvent"
            }
          ],
          "attributes": [
            {
              "name": "panel",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the tab panel this tab is associated with. The panel must be located in the same tab group.",
              "fieldName": "panel"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the tab and prevents selection.",
              "fieldName": "disabled"
            },
            {
              "name": "closable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Make the tab closable",
              "fieldName": "closable"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "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).",
          "jsDoc": "/**\n * @summary 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 * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/tab\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @slot - The tab's label.\n * @slot start - An element, such as `<ed-icon>`, placed before the label.\n * @slot end - An element, such as `<ed-icon>`, placed after the label.\n *\n * @dependency ed-icon\n * @dependency ed-button\n *\n * @csspart base - The component's base wrapper.\n * @csspart content - The container that wraps the start slot, label and end slot.\n * @csspart start - The container that wraps the `start` slot.\n * @csspart end - The container that wraps the `end` slot.\n * @csspart label - The label wrapper.\n *\n * @event {{ panel: string }} ed-tab-close - Emitted when the tab's close button is activated, or when\n *   Delete is pressed while the tab has focus.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/tab",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-icon",
            "ed-button"
          ],
          "tagName": "ed-tab",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdTab",
            "module": "components/tab/tab.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-tab",
          "declaration": {
            "name": "EdTab",
            "module": "components/tab/tab.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/test/element-visible-overflow.js",
      "declarations": [
        {
          "kind": "function",
          "name": "isElementVisibleFromOverflow",
          "return": {
            "type": {
              "text": "Boolean"
            }
          },
          "parameters": [
            {
              "name": "outerElement",
              "type": {
                "text": "HTMLElement"
              },
              "description": "The parent element"
            },
            {
              "name": "innerElement",
              "type": {
                "text": "HTMLElement"
              },
              "description": "the child element"
            }
          ],
          "description": "Given a parent element featuring `overflow: hidden` and a child element inside the parent, this\nfunction determines whether the child will be visible taking only the overflow of the parent into account\nId does NOT check whether it is hidden or overlapped by another element\nIt basically checks whether the bounding rects of the parent and the child overlap"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "isElementVisibleFromOverflow",
          "declaration": {
            "name": "isElementVisibleFromOverflow",
            "module": "internal/test/element-visible-overflow.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/test/wait-for-scrolling.js",
      "declarations": [
        {
          "kind": "function",
          "name": "waitForScrollingToEnd",
          "return": {
            "type": {
              "text": ""
            }
          },
          "parameters": [
            {
              "name": "element",
              "type": {
                "text": "HTMLElement"
              },
              "description": "The element which is scrolled"
            },
            {
              "name": "timeoutInMs",
              "default": "500",
              "description": "A timeout in ms. If the timeout has elapsed, the promise rejects",
              "type": {
                "text": "numeric"
              }
            }
          ],
          "description": "Wait until an element has stopped scrolling\nThis considers the element to have stopped scrolling, as soon as it did not change its\nscroll position for 20 successive animation frames"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "waitForScrollingToEnd",
          "declaration": {
            "name": "waitForScrollingToEnd",
            "module": "internal/test/wait-for-scrolling.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/tab-panel/tab-panel.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdTabPanel",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            }
          ],
          "slots": [
            {
              "description": "The tab panel's content.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "attrId",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "readonly": true,
              "default": "++id"
            },
            {
              "kind": "field",
              "name": "componentId",
              "privacy": "private",
              "readonly": true,
              "default": "`ed-tab-panel-${this.attrId}`"
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The tab panel's name.",
              "attribute": "name",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, the tab panel will be shown.",
              "attribute": "active",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "attributes": [
            {
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The tab panel's name.",
              "fieldName": "name"
            },
            {
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, the tab panel will be shown.",
              "fieldName": "active"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Tab panels are used inside [tab groups](/a/eurodata-ui/docs/components/tab-group) to display tabbed content.",
          "jsDoc": "/**\n * @summary Tab panels are used inside [tab groups](/a/eurodata-ui/docs/components/tab-group) to display tabbed content.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/tab-panel\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @slot - The tab panel's content.\n *\n * @csspart base - The component's base wrapper.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/tab-panel",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "tagName": "ed-tab-panel",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdTabPanel",
            "module": "components/tab-panel/tab-panel.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-tab-panel",
          "declaration": {
            "name": "EdTabPanel",
            "module": "components/tab-panel/tab-panel.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/tab-group/tab-group.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdTabGroup",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The tab group's navigation container where tabs are slotted in.",
              "name": "nav"
            },
            {
              "description": "The container that wraps the tabs.",
              "name": "tabs"
            },
            {
              "description": "The tab group's body where tab panels are slotted in.",
              "name": "body"
            },
            {
              "description": "The previous/next scroll buttons that show when tabs are scrollable, a `<ed-button>`.",
              "name": "scroll-button"
            },
            {
              "description": "The starting scroll button.",
              "name": "scroll-button-start"
            },
            {
              "description": "The ending scroll button.",
              "name": "scroll-button-end"
            }
          ],
          "slots": [
            {
              "description": "Used for grouping tab panels in the tab group. Must be `<ed-tab-panel>` elements, or a `<slot>` of your own that they are assigned to.",
              "name": ""
            },
            {
              "description": "Used for grouping tabs in the tab group. Must be `<ed-tab>` elements, or a `<slot>` of your own that they are assigned to. Note that `<ed-tab>` will set this slot on itself automatically.",
              "name": "nav"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "activeTab",
              "type": {
                "text": "EdTab | undefined"
              },
              "privacy": "private",
              "parsedType": {
                "text": "default | undefined"
              }
            },
            {
              "kind": "field",
              "name": "mutationObserver",
              "type": {
                "text": "MutationObserver"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "intersectionObserver",
              "type": {
                "text": "IntersectionObserver | undefined"
              },
              "privacy": "private",
              "parsedType": {
                "text": "{ root: null | Element | Document, rootMargin: string, thresholds: number[], disconnect: {  }, observe: {  }, takeRecords: {  }, unobserve: {  } } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "resizeObserver",
              "type": {
                "text": "ResizeObserver"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "tabs",
              "type": {
                "text": "EdTab[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "focusableTabs",
              "type": {
                "text": "EdTab[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "panels",
              "type": {
                "text": "EdTabPanel[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "tabGroup",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "body",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "nav",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "hasScrollControls",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "active",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Sets the active tab.",
              "attribute": "active",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "placement",
              "type": {
                "text": "'top' | 'bottom' | 'left' | 'right'"
              },
              "default": "'top'",
              "description": "The placement of the tabs.",
              "attribute": "placement",
              "reflects": true,
              "parsedType": {
                "text": "'left' | 'right' | 'top' | 'bottom'"
              }
            },
            {
              "kind": "field",
              "name": "appearance",
              "type": {
                "text": "'plain' | 'outlined' | 'filled'"
              },
              "default": "'plain'",
              "description": "The visual appearance of the tab group.",
              "attribute": "appearance",
              "reflects": true,
              "parsedType": {
                "text": "'filled' | 'outlined' | 'plain'"
              }
            },
            {
              "kind": "field",
              "name": "activation",
              "type": {
                "text": "'auto' | 'manual'"
              },
              "default": "'auto'",
              "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.",
              "attribute": "activation",
              "parsedType": {
                "text": "'auto' | 'manual'"
              }
            },
            {
              "kind": "field",
              "name": "stretch",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes all tabs equal width, stretching to fill the available space.",
              "attribute": "stretch",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "withoutScrollControls",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the scroll arrows that appear when tabs overflow.",
              "attribute": "without-scroll-controls"
            },
            {
              "kind": "method",
              "name": "seedActiveTabWhenVisible",
              "privacy": "private",
              "description": "Sets the initial tab state once the tabs are visible, since activating one scrolls it into view."
            },
            {
              "kind": "method",
              "name": "getAllTabs",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getAllPanels",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "ownsTab",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "tab is EdTab"
                }
              },
              "parameters": [
                {
                  "name": "tab",
                  "type": {
                    "text": "EdTab | null | undefined"
                  }
                }
              ],
              "description": "Whether the tab is one of this group's own. Membership in the nav slot rather than an ancestor\nwalk: `closest()` stops at the shadow boundary a consumer's own slot crosses, so a projected tab\nwould read as belonging to nobody — and a wrapped group's tabs inside one of our panels would\nread as ours. Nested groups stay apart because their tabs are assigned to their own group's nav\nslot. Read from the slot instead of the `tabs` cache, so a tab appended and activated in the same\ntick counts."
            },
            {
              "kind": "method",
              "name": "getActiveTab",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleProjectedSlotChange",
              "privacy": "private",
              "readonly": true,
              "description": "Picks up tabs a consumer projects through a slot of their own after the first render. Those tabs\nlive in the consumer's tree, not in this one, so the MutationObserver never sees them arrive and\nnothing else wires them to their panels. `slotchange` bubbles (DOM, \"signal a slot change\"), and\nthe consumer's slot is a light-DOM child of this group, so its event reaches the host."
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "findNextFocusableTab",
              "privacy": "private",
              "parameters": [
                {
                  "name": "currentIndex",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "direction",
                  "type": {
                    "text": "'forward' | 'backward'"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleScrollToStart",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleScrollToEnd",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "setActiveTab",
              "privacy": "private",
              "parameters": [
                {
                  "name": "tab",
                  "type": {
                    "text": "EdTab"
                  }
                },
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "{ emitEvents?: boolean; scrollBehavior?: 'auto' | 'smooth' }"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "setAriaLabels",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "syncTabsAndPanels",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "observeProjectedTabs",
              "privacy": "private",
              "description": "A tab a consumer projects sits outside this group's own tree, where the subtree observer never\nreaches it, so `disabled` and `active` on it would otherwise count for nothing. Registering a tab\nthat is already registered replaces its options instead of adding a second registration, and one\nobserver is handed one record per mutation, so running this on every sync neither accumulates nor\nduplicates."
            },
            {
              "kind": "method",
              "name": "handleClose",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ name: String }"
              },
              "description": "Emitted when a tab is shown.",
              "name": "ed-tab-show",
              "reactName": "onEdTabShow",
              "eventName": "EdTabShowEvent"
            },
            {
              "type": {
                "text": "{ name: String }"
              },
              "description": "Emitted when a tab is hidden.",
              "name": "ed-tab-hide",
              "reactName": "onEdTabHide",
              "eventName": "EdTabHideEvent"
            },
            {
              "type": {
                "text": "{ panel: String }"
              },
              "description": "Emitted after a closable tab and its panel have been removed. The tab's own event is not re-dispatched, so this is the one to listen for on the group.",
              "name": "ed-tab-close",
              "reactName": "onEdTabClose",
              "eventName": "EdTabCloseEvent"
            }
          ],
          "attributes": [
            {
              "name": "active",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Sets the active tab.",
              "fieldName": "active"
            },
            {
              "name": "placement",
              "type": {
                "text": "'top' | 'bottom' | 'left' | 'right'"
              },
              "default": "'top'",
              "description": "The placement of the tabs.",
              "fieldName": "placement",
              "parsedType": {
                "text": "'left' | 'right' | 'top' | 'bottom'"
              }
            },
            {
              "name": "appearance",
              "type": {
                "text": "'plain' | 'outlined' | 'filled'"
              },
              "default": "'plain'",
              "description": "The visual appearance of the tab group.",
              "fieldName": "appearance",
              "parsedType": {
                "text": "'filled' | 'outlined' | 'plain'"
              }
            },
            {
              "name": "activation",
              "type": {
                "text": "'auto' | 'manual'"
              },
              "default": "'auto'",
              "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.",
              "fieldName": "activation",
              "parsedType": {
                "text": "'auto' | 'manual'"
              }
            },
            {
              "name": "stretch",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes all tabs equal width, stretching to fill the available space.",
              "fieldName": "stretch"
            },
            {
              "name": "without-scroll-controls",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the scroll arrows that appear when tabs overflow.",
              "fieldName": "withoutScrollControls"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "Applied when the tab list overflows and the scroll buttons are shown.",
              "name": "has-scroll-controls"
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Tab groups organize content into a container that shows one section at a time.",
          "jsDoc": "/**\n * @summary Tab groups organize content into a container that shows one section at a time.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/tab-group\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-button\n * @dependency ed-icon\n * @dependency ed-tab\n * @dependency ed-tab-panel\n *\n * @slot - Used for grouping tab panels in the tab group. Must be `<ed-tab-panel>` elements, or a `<slot>` of your own\n *  that they are assigned to.\n * @slot nav - Used for grouping tabs in the tab group. Must be `<ed-tab>` elements, or a `<slot>` of your own that they\n *  are assigned to. Note that `<ed-tab>` will set this slot on itself automatically.\n *\n * @event {{ name: String }} ed-tab-show - Emitted when a tab is shown.\n * @event {{ name: String }} ed-tab-hide - Emitted when a tab is hidden.\n * @event {{ panel: String }} ed-tab-close - Emitted after a closable tab and its panel have been removed. The tab's own\n *  event is not re-dispatched, so this is the one to listen for on the group.\n *\n * @csspart base - The component's base wrapper.\n * @csspart nav - The tab group's navigation container where tabs are slotted in.\n * @csspart tabs - The container that wraps the tabs.\n * @csspart body - The tab group's body where tab panels are slotted in.\n * @csspart scroll-button - The previous/next scroll buttons that show when tabs are scrollable, a `<ed-button>`.\n * @csspart scroll-button-start - The starting scroll button.\n * @csspart scroll-button-end - The ending scroll button.\n *\n * @cssstate has-scroll-controls - Applied when the tab list overflows and the scroll buttons are shown.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/tab-group",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-button",
            "ed-icon",
            "ed-tab",
            "ed-tab-panel"
          ],
          "tagName": "ed-tab-group",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdTabGroup",
            "module": "components/tab-group/tab-group.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-tab-group",
          "declaration": {
            "name": "EdTabGroup",
            "module": "components/tab-group/tab-group.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/tag-input/tag-input.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdTagInput",
          "cssParts": [
            {
              "description": "The label.",
              "name": "form-control-label"
            },
            {
              "description": "The label. The same element as `form-control-label`, named like the label of `<ed-input>`.",
              "name": "label"
            },
            {
              "description": "The bordered box that holds the tags and the text box.",
              "name": "tag-input"
            },
            {
              "description": "The container that wraps the `start` slot.",
              "name": "start"
            },
            {
              "description": "The list that holds the tags.",
              "name": "tags"
            },
            {
              "description": "Each tag, an `<ed-badge>`.",
              "name": "tag"
            },
            {
              "description": "The tag's exported `base` part, the badge's surface.",
              "name": "tag__base"
            },
            {
              "description": "The tag's exported `remove-icon` part, the `<button>` that removes the tag.",
              "name": "tag__remove-icon"
            },
            {
              "description": "The internal text box, an `<input>` element.",
              "name": "input"
            },
            {
              "description": "The clear button.",
              "name": "clear-button"
            },
            {
              "description": "The container that wraps the `end` slot.",
              "name": "end"
            },
            {
              "description": "The state message: an error, a warning, or the AI note.",
              "name": "message"
            },
            {
              "description": "The hint's wrapper.",
              "name": "hint"
            }
          ],
          "slots": [
            {
              "description": "The tag input's label. Alternatively, you can use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "An element, such as `<ed-icon>`, placed at the start of the control.",
              "name": "start"
            },
            {
              "description": "An element, such as `<ed-icon>`, placed at the end of the control.",
              "name": "end"
            },
            {
              "description": "An icon to use in lieu of the default clear icon.",
              "name": "clear-icon"
            },
            {
              "description": "Text that describes how to use the tag input. Alternatively, you can use the `hint` attribute.",
              "name": "hint"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "validators",
              "type": {
                "text": "Validator[]"
              },
              "default": "[]",
              "static": true,
              "description": "Validators are static because they have `observedAttributes`, essentially attributes to \"watch\"\nfor changes. Whenever these attributes change, we want to be notified and update the validator.",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOn",
              "type": {
                "text": "string[]"
              },
              "default": "['blur', 'input']",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'label')"
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "text": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "parsedType": {
                "text": "HTMLElement & { value: unknown } | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "announcer",
              "type": {
                "text": "HTMLElement | null"
              },
              "privacy": "private",
              "parsedType": {
                "text": "null | HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "focusedTagIndex",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "-1",
              "description": "The index of the tag that has roving focus, or -1 when the text box or nothing has focus."
            },
            {
              "kind": "field",
              "name": "_value",
              "type": {
                "text": "string[] | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | string[]"
              }
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string[]"
              },
              "description": "The tags as an array of strings, submitted as one entry per tag under `name`. Set the `value` attribute to a\ndelimiter-separated string for an initial value."
            },
            {
              "kind": "field",
              "name": "defaultValue",
              "type": {
                "text": "string | null"
              },
              "description": "The default value of the form control as a delimiter-separated string. Primarily used for resetting the form\ncontrol.",
              "attribute": "value",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "inputValue",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The text currently typed in the text box that hasn't become a tag yet."
            },
            {
              "kind": "field",
              "name": "delimiter",
              "type": {
                "text": "string"
              },
              "default": "','",
              "description": "The characters that turn typed text into a tag. Each character is a separate delimiter, so `\",;\"` accepts both\ncommas and semicolons. Pasted text is split on the same characters. Set to an empty string so only Enter adds a\ntag. Also used to parse the `value` attribute, which falls back to a comma when the delimiter is empty.",
              "attribute": "delimiter"
            },
            {
              "kind": "field",
              "name": "maxTags",
              "type": {
                "text": "number"
              },
              "description": "The maximum number of tags that can be added. Once reached, no more tags can be added until one is removed.",
              "attribute": "max-tags"
            },
            {
              "kind": "field",
              "name": "minTags",
              "type": {
                "text": "number"
              },
              "description": "The minimum number of tags required for the control to be valid. Has no effect when there are no tags.",
              "attribute": "min-tags"
            },
            {
              "kind": "field",
              "name": "allowDuplicates",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allows the same tag to be added more than once. By default, duplicates are ignored.",
              "attribute": "allow-duplicates",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "withClear",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Adds a clear button that removes all tags, and makes Escape empty the control.",
              "attribute": "with-clear"
            },
            {
              "kind": "field",
              "name": "placeholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder text to show in the text box. Hidden once the maximum number of tags is reached.",
              "attribute": "placeholder"
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The tag input's label. If you need to display HTML, use the `label` slot instead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "ariaLabel",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The tag input's accessible name for when no visible label is set. Mirrored onto the internal text box, where the\ntextbox role lives, and onto the list of tags.",
              "attribute": "aria-label",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "withLabel",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "with-label"
            },
            {
              "kind": "field",
              "name": "withHint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "with-hint"
            },
            {
              "kind": "field",
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "Controls the component's spacing density without affecting font-size.",
              "attribute": "density",
              "reflects": true,
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "kind": "field",
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style tag input with rounded edges. The tags are pill-shaped either way.",
              "attribute": "pill",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the tag input readonly. Tags stay visible and are still submitted, but can't be added or removed.",
              "attribute": "readonly",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the tag input a required field, so at least one tag must be added.",
              "attribute": "required",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "autocapitalize",
              "type": {
                "text": "'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters'"
              },
              "description": "Controls whether and how text input is automatically capitalized as it is entered by the user.",
              "attribute": "autocapitalize",
              "parsedType": {
                "text": "'none' | 'off' | 'on' | 'sentences' | 'words' | 'characters'"
              }
            },
            {
              "kind": "field",
              "name": "autocorrect",
              "type": {
                "text": "boolean"
              },
              "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`.",
              "attribute": "autocorrect"
            },
            {
              "kind": "field",
              "name": "autocomplete",
              "type": {
                "text": "string"
              },
              "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.\nDefaults to `off`.",
              "attribute": "autocomplete"
            },
            {
              "kind": "field",
              "name": "enterkeyhint",
              "type": {
                "text": "'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'"
              },
              "description": "Used to customize the label or icon of the Enter key on virtual keyboards.",
              "attribute": "enterkeyhint",
              "parsedType": {
                "text": "'next' | 'previous' | 'search' | 'send' | 'done' | 'enter' | 'go'"
              }
            },
            {
              "kind": "field",
              "name": "spellcheck",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Enables spell checking on the text box.",
              "attribute": "spellcheck"
            },
            {
              "kind": "field",
              "name": "inputmode",
              "type": {
                "text": "'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'"
              },
              "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.",
              "attribute": "inputmode",
              "parsedType": {
                "text": "'search' | 'text' | 'numeric' | 'none' | 'email' | 'tel' | 'url' | 'decimal'"
              }
            },
            {
              "kind": "field",
              "name": "delimiterRegex",
              "type": {
                "text": "RegExp | null"
              },
              "privacy": "private",
              "description": "A regex that matches any delimiter character, or null when delimiters are turned off.",
              "readonly": true,
              "parsedType": {
                "text": "null | { exec: {  }, test: {  }, source: string, global: boolean, ignoreCase: boolean, multiline: boolean, lastIndex: number, compile: {  }, flags: string, sticky: boolean, unicode: boolean, dotAll: boolean, hasIndices: boolean, __@match@5634: {  }, __@replace@5636: {  }, __@search@5639: {  }, __@split@5641: {  }, __@matchAll@5643: {  } }"
              }
            },
            {
              "kind": "field",
              "name": "isAtMax",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "parseDelimited",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string[]"
                }
              },
              "parameters": [
                {
                  "name": "str",
                  "type": {
                    "text": "string | null"
                  }
                }
              ],
              "description": "Splits a delimiter-separated string into trimmed, non-empty tags."
            },
            {
              "kind": "field",
              "name": "tagElements",
              "type": {
                "text": "HTMLElement[]"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "getTagIndex",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "target",
                  "type": {
                    "text": "EventTarget | null"
                  }
                }
              ],
              "description": "Finds the index of the tag that contains the event target, or -1 if the target isn't inside a tag."
            },
            {
              "kind": "method",
              "name": "announce",
              "privacy": "private",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Speaks a message through the live region in the shadow root. Each message is a fresh node, so\nthe same text twice is still announced twice, and the node goes again so the region never\naccumulates text that a screen reader could re-read."
            },
            {
              "kind": "method",
              "name": "setInputText",
              "privacy": "private",
              "parameters": [
                {
                  "name": "text",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Updates the text box and the inputValue property together so they never drift apart."
            },
            {
              "kind": "method",
              "name": "emitInputAndChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "tryAddTag",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "text",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Adds a single tag from user input, subject to trimming, the tag limit, duplicate rules, and the cancelable\ncreate event. Returns true when the tag was added. Doesn't emit input or change."
            },
            {
              "kind": "method",
              "name": "addTags",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string[]"
                }
              },
              "parameters": [
                {
                  "name": "texts",
                  "type": {
                    "text": "string[]"
                  }
                }
              ],
              "description": "Adds every string as a tag that passes the rules. Emits input and change once if any were added. Returns the\ntexts that were refused, so the caller can put them back in the text box instead of discarding them."
            },
            {
              "kind": "method",
              "name": "removeTagAt",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Removes the tag at the given index in response to user input. Returns true when a tag was removed."
            },
            {
              "kind": "method",
              "name": "shakeTag",
              "privacy": "private",
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Briefly shakes an existing tag to show why a duplicate was rejected."
            },
            {
              "kind": "method",
              "name": "focusTag",
              "privacy": "private",
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Moves roving focus to the tag at the given index after the next render."
            },
            {
              "kind": "method",
              "name": "handleInput",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "InputEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handlePaste",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "ClipboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleInputFocus",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleInputBlur",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleTagKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleTagClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleTagFocusIn",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "FocusEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleTagFocusOut",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleTagRemove",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "EdRemoveEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleWrapperMouseDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleWrapperClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleClearMouseDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleClearClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "formResetCallback"
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the text box."
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the text box."
            },
            {
              "kind": "field",
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "attribute": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "attribute": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "attribute": "ai",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "attribute": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "attribute": "name",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#fieldsetDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set by `formDisabledCallback`, i.e. an ancestor `<fieldset>`. Never written by a consumer.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#ownDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The disabled state this element was given directly, via its property or its attribute.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "attribute": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOnMode",
              "type": {
                "text": "'combined' | 'separated' | string"
              },
              "default": "'combined'",
              "parsedType": {
                "text": "string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "valueHasChanged",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasInteracted",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_customValidityMessage",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_isCheckingValidity",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set while `checkValidity()` is executing so the `invalid` event handler can distinguish\na programmatic check (no UI side-effects per spec) from `reportValidity()` / native form\nsubmission (which should surface the error UI and focus the first invalid control).",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emittedEvents",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "states",
              "type": {
                "text": "CustomStateSet"
              },
              "parsedType": {
                "text": "any"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleSubmitOnEnter",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleClearOnEscape",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emitInvalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleInteraction",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "labels",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getForm",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "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": {
                "text": "HTMLFormElement | null"
              },
              "parsedType": {
                "text": "null | HTMLFormElement"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validity",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "willValidate",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationMessage",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "checkValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Override this to change where constraint validation popups are anchored.",
              "readonly": true,
              "parsedType": {
                "text": "HTMLElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValidity",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setValidity>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "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.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setFormValue>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "allValidators",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "resetValidity",
              "description": "Reset validity is a way of removing manual custom errors and native validation.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "name": "input",
              "type": {
                "text": "InputEvent"
              },
              "description": "Emitted when the user types in the text box or when a tag is added or removed.",
              "reactName": "onInput",
              "eventName": "InputEvent"
            },
            {
              "name": "change",
              "type": {
                "text": "Event"
              },
              "description": "Emitted when a tag is added, removed, or all tags are cleared by the user.",
              "reactName": "onChange",
              "eventName": "ChangeEvent"
            },
            {
              "description": "Emitted when the control loses focus.",
              "name": "blur",
              "reactName": "onBlur",
              "eventName": "BlurEvent"
            },
            {
              "description": "Emitted when the control gains focus.",
              "name": "focus",
              "reactName": "onFocus",
              "eventName": "FocusEvent"
            },
            {
              "type": {
                "text": "EdTagInputCreateEvent"
              },
              "description": "Emitted before typed text becomes a tag. Cancelable; calling `preventDefault()` rejects it. `detail.inputValue` is the trimmed text that would become the tag.",
              "name": "ed-tag-input-create",
              "reactName": "onEdTagInputCreate",
              "eventName": "EdTagInputCreateEvent"
            },
            {
              "description": "Emitted when the tags are cleared by the clear button or by Escape.",
              "name": "ed-clear",
              "reactName": "onEdClear",
              "eventName": "EdClearEvent"
            },
            {
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied.",
              "name": "ed-invalid",
              "reactName": "onEdInvalid",
              "eventName": "EdInvalidEvent"
            }
          ],
          "attributes": [
            {
              "name": "value",
              "type": {
                "text": "string | null"
              },
              "description": "The default value of the form control as a delimiter-separated string. Primarily used for resetting the form\ncontrol.",
              "fieldName": "defaultValue",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "delimiter",
              "type": {
                "text": "string"
              },
              "default": "','",
              "description": "The characters that turn typed text into a tag. Each character is a separate delimiter, so `\",;\"` accepts both\ncommas and semicolons. Pasted text is split on the same characters. Set to an empty string so only Enter adds a\ntag. Also used to parse the `value` attribute, which falls back to a comma when the delimiter is empty.",
              "fieldName": "delimiter"
            },
            {
              "name": "max-tags",
              "type": {
                "text": "number"
              },
              "description": "The maximum number of tags that can be added. Once reached, no more tags can be added until one is removed.",
              "fieldName": "maxTags"
            },
            {
              "name": "min-tags",
              "type": {
                "text": "number"
              },
              "description": "The minimum number of tags required for the control to be valid. Has no effect when there are no tags.",
              "fieldName": "minTags"
            },
            {
              "name": "allow-duplicates",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allows the same tag to be added more than once. By default, duplicates are ignored.",
              "fieldName": "allowDuplicates"
            },
            {
              "name": "with-clear",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Adds a clear button that removes all tags, and makes Escape empty the control.",
              "fieldName": "withClear"
            },
            {
              "name": "placeholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder text to show in the text box. Hidden once the maximum number of tags is reached.",
              "fieldName": "placeholder"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The tag input's label. If you need to display HTML, use the `label` slot instead.",
              "fieldName": "label"
            },
            {
              "name": "aria-label",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The tag input's accessible name for when no visible label is set. Mirrored onto the internal text box, where the\ntextbox role lives, and onto the list of tags.",
              "fieldName": "ariaLabel",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "with-label",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "withLabel"
            },
            {
              "name": "with-hint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "withHint"
            },
            {
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "Controls the component's spacing density without affecting font-size.",
              "fieldName": "density",
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style tag input with rounded edges. The tags are pill-shaped either way.",
              "fieldName": "pill"
            },
            {
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the tag input readonly. Tags stay visible and are still submitted, but can't be added or removed.",
              "fieldName": "readonly"
            },
            {
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the tag input a required field, so at least one tag must be added.",
              "fieldName": "required"
            },
            {
              "name": "autocapitalize",
              "type": {
                "text": "'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters'"
              },
              "description": "Controls whether and how text input is automatically capitalized as it is entered by the user.",
              "fieldName": "autocapitalize",
              "parsedType": {
                "text": "'none' | 'off' | 'on' | 'sentences' | 'words' | 'characters'"
              }
            },
            {
              "name": "autocorrect",
              "type": {
                "text": "boolean"
              },
              "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`.",
              "fieldName": "autocorrect"
            },
            {
              "name": "autocomplete",
              "type": {
                "text": "string"
              },
              "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.\nDefaults to `off`.",
              "fieldName": "autocomplete"
            },
            {
              "name": "enterkeyhint",
              "type": {
                "text": "'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'"
              },
              "description": "Used to customize the label or icon of the Enter key on virtual keyboards.",
              "fieldName": "enterkeyhint",
              "parsedType": {
                "text": "'next' | 'previous' | 'search' | 'send' | 'done' | 'enter' | 'go'"
              }
            },
            {
              "name": "spellcheck",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Enables spell checking on the text box.",
              "fieldName": "spellcheck"
            },
            {
              "name": "inputmode",
              "type": {
                "text": "'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'"
              },
              "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.",
              "fieldName": "inputmode",
              "parsedType": {
                "text": "'search' | 'text' | 'numeric' | 'none' | 'email' | 'tel' | 'url' | 'decimal'"
              }
            },
            {
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "fieldName": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "fieldName": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "fieldName": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "fieldName": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "fieldName": "name",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "fieldName": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "The tag input has no tags.",
              "name": "blank"
            },
            {
              "description": "The tag input is readonly.",
              "name": "readonly"
            },
            {
              "description": "The control is disabled, by its own attribute or by an ancestor fieldset.",
              "name": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is required.",
              "name": "required",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is not required.",
              "name": "optional",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value fails constraint validation, whether or not the user has touched the control yet.",
              "name": "invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value passes constraint validation.",
              "name": "valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Invalid, and the user has interacted with the control. This is the one to style for an error: it behaves like the platform's `:user-invalid`, so an untouched field is not marked wrong before the user has had a chance to fill it in.",
              "name": "user-invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Valid, and the user has interacted with the control.",
              "name": "user-valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The user has interacted with the control.",
              "name": "dirty",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `error` property is set, or the control is `user-invalid`.",
              "name": "error",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `warning` property is set.",
              "name": "warning",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `ai` property is set and the user has not interacted with the control yet.",
              "name": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdFormAssociatedElement",
            "module": "/src/internal/ed-form-associated-element.js"
          },
          "summary": "Tag inputs collect a list of short values, such as keywords, email addresses or labels, as removable tags.\nUsers add a tag by typing and pressing Enter or a delimiter, and each tag is submitted as its own form value.",
          "jsDoc": "/**\n * @summary Tag inputs collect a list of short values, such as keywords, email addresses or labels, as removable tags.\n *   Users add a tag by typing and pressing Enter or a delimiter, and each tag is submitted as its own form value.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/tag-input\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…').getByRole('textbox')\n *\n * @dependency ed-badge\n * @dependency ed-icon\n *\n * @slot label - The tag input's label. Alternatively, you can use the `label` attribute.\n * @slot start - An element, such as `<ed-icon>`, placed at the start of the control.\n * @slot end - An element, such as `<ed-icon>`, placed at the end of the control.\n * @slot clear-icon - An icon to use in lieu of the default clear icon.\n * @slot hint - Text that describes how to use the tag input. Alternatively, you can use the `hint` attribute.\n *\n * @event blur - Emitted when the control loses focus.\n * @event change - Emitted when a tag is added, removed, or all tags are cleared by the user.\n * @event focus - Emitted when the control gains focus.\n * @event input - Emitted when the user types in the text box or when a tag is added or removed.\n * @event {EdTagInputCreateEvent} ed-tag-input-create - Emitted before typed text becomes a tag. Cancelable; calling\n *   `preventDefault()` rejects it. `detail.inputValue` is the trimmed text that would become the tag.\n * @event ed-clear - Emitted when the tags are cleared by the clear button or by Escape.\n * @event ed-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n *\n * @csspart form-control-label - The label.\n * @csspart label - The label. The same element as `form-control-label`, named like the label of `<ed-input>`.\n * @csspart tag-input - The bordered box that holds the tags and the text box.\n * @csspart start - The container that wraps the `start` slot.\n * @csspart tags - The list that holds the tags.\n * @csspart tag - Each tag, an `<ed-badge>`.\n * @csspart tag__base - The tag's exported `base` part, the badge's surface.\n * @csspart tag__remove-icon - The tag's exported `remove-icon` part, the `<button>` that removes the tag.\n * @csspart input - The internal text box, an `<input>` element.\n * @csspart clear-button - The clear button.\n * @csspart end - The container that wraps the `end` slot.\n * @csspart message - The state message: an error, a warning, or the AI note.\n * @csspart hint - The hint's wrapper.\n *\n * @cssstate blank - The tag input has no tags.\n * @cssstate readonly - The tag input is readonly.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/tag-input",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('textbox')",
          "dependencies": [
            "ed-badge",
            "ed-icon"
          ],
          "tagName": "ed-tag-input",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdTagInput",
            "module": "components/tag-input/tag-input.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-tag-input",
          "declaration": {
            "name": "EdTagInput",
            "module": "components/tag-input/tag-input.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/textarea/textarea.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdTextarea",
          "cssParts": [
            {
              "description": "The label",
              "name": "label"
            },
            {
              "description": "The state message: an error, a warning, or the AI note.",
              "name": "message"
            },
            {
              "description": "The row below the control that holds the hint and the character count.",
              "name": "footer"
            },
            {
              "description": "The hint's wrapper.",
              "name": "hint"
            },
            {
              "description": "The wrapper around the `<textarea>` control.",
              "name": "base"
            },
            {
              "description": "The internal `<textarea>` control.",
              "name": "textarea"
            },
            {
              "description": "The character count element, rendered when the `with-count` attribute is present.",
              "name": "count"
            }
          ],
          "slots": [
            {
              "description": "The textarea's label. Alternatively, you can use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "Text that describes how to use the input. Alternatively, you can use the `hint` attribute.",
              "name": "hint"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "validators",
              "type": {
                "text": "Validator[]"
              },
              "default": "[]",
              "static": true,
              "description": "Validators are static because they have `observedAttributes`, essentially attributes to \"watch\"\nfor changes. Whenever these attributes change, we want to be notified and update the validator.",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOn",
              "type": {
                "text": "string[]"
              },
              "default": "['blur', 'input']",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'label')"
            },
            {
              "kind": "field",
              "name": "resizeObserver",
              "type": {
                "text": "ResizeObserver | undefined"
              },
              "privacy": "private",
              "parsedType": {
                "text": "{ disconnect: {  }, observe: {  }, unobserve: {  } } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "countAnnounceTimeout",
              "type": {
                "text": "ReturnType<typeof setTimeout>"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "announcedCountText",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "text": "(HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "parsedType": {
                "text": "HTMLElement & { value: unknown } | HTMLInputElement | HTMLTextAreaElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "base",
              "type": {
                "text": "HTMLDivElement"
              }
            },
            {
              "kind": "field",
              "name": "sizeAdjuster",
              "type": {
                "text": "HTMLTextAreaElement"
              }
            },
            {
              "kind": "field",
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "attribute": "title"
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the textarea, submitted as a name/value pair with form data.",
              "attribute": "name",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_value",
              "type": {
                "text": "string | undefined"
              },
              "privacy": "private",
              "default": "undefined",
              "description": "`undefined` marks \"never written\", which is what makes the default apply; it is never observable\nfrom outside, because `value` is always a string. HTML keeps the same distinction internally\nthrough the value mode and exposes a `DOMString` either way."
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The current value of the textarea, submitted as a name/value pair with form data. Empty is `''`,\nas on a native textarea — never `null`."
            },
            {
              "kind": "field",
              "name": "defaultValue",
              "type": {
                "text": "string"
              },
              "description": "The default value of the form control. Primarily used for resetting the form control.",
              "attribute": "value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "Controls the component's spacing density without affecting font-size.",
              "attribute": "density",
              "reflects": true,
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The textarea's label. If you need to display HTML, use the `label` slot instead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "ariaLabel",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The textarea's accessible name for when no visible label is set. Mirrored onto the internal\ntextarea, where the textbox role lives — an aria-label left on the host alone would sit on\na role-less element and be ignored by assistive tech.",
              "attribute": "aria-label",
              "reflects": true,
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "placeholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder text to show as a hint when the input is empty.",
              "attribute": "placeholder"
            },
            {
              "kind": "field",
              "name": "rows",
              "type": {
                "text": "number"
              },
              "default": "4",
              "description": "The number of rows to display by default.",
              "attribute": "rows"
            },
            {
              "kind": "field",
              "name": "resize",
              "type": {
                "text": "'none' | 'vertical' | 'horizontal' | 'both' | 'auto'"
              },
              "default": "'vertical'",
              "description": "Controls how the textarea can be resized.",
              "attribute": "resize",
              "reflects": true,
              "parsedType": {
                "text": "'auto' | 'both' | 'horizontal' | 'vertical' | 'none'"
              }
            },
            {
              "kind": "field",
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the textarea readonly.",
              "attribute": "readonly",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the textarea a required field.",
              "attribute": "required",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "minlength",
              "type": {
                "text": "number"
              },
              "description": "The minimum length of input that will be considered valid.",
              "attribute": "minlength"
            },
            {
              "kind": "field",
              "name": "maxlength",
              "type": {
                "text": "number"
              },
              "description": "The maximum length of input that will be considered valid.",
              "attribute": "maxlength"
            },
            {
              "kind": "field",
              "name": "autocapitalize",
              "type": {
                "text": "'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters'"
              },
              "description": "Controls whether and how text input is automatically capitalized as it is entered by the user.",
              "attribute": "autocapitalize",
              "parsedType": {
                "text": "'none' | 'off' | 'on' | 'sentences' | 'words' | 'characters'"
              }
            },
            {
              "kind": "field",
              "name": "autocorrect",
              "type": {
                "text": "boolean"
              },
              "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`.",
              "attribute": "autocorrect"
            },
            {
              "kind": "field",
              "name": "autocomplete",
              "type": {
                "text": "string"
              },
              "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.",
              "attribute": "autocomplete"
            },
            {
              "kind": "field",
              "name": "autofocus",
              "type": {
                "text": "boolean"
              },
              "description": "Indicates that the input should receive focus on page load.",
              "attribute": "autofocus"
            },
            {
              "kind": "field",
              "name": "enterkeyhint",
              "type": {
                "text": "'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'"
              },
              "description": "Used to customize the label or icon of the Enter key on virtual keyboards.",
              "attribute": "enterkeyhint",
              "parsedType": {
                "text": "'next' | 'previous' | 'search' | 'send' | 'done' | 'enter' | 'go'"
              }
            },
            {
              "kind": "field",
              "name": "spellcheck",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Enables spell checking on the textarea.",
              "attribute": "spellcheck"
            },
            {
              "kind": "field",
              "name": "inputmode",
              "type": {
                "text": "'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'"
              },
              "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.",
              "attribute": "inputmode",
              "parsedType": {
                "text": "'search' | 'text' | 'numeric' | 'none' | 'email' | 'tel' | 'url' | 'decimal'"
              }
            },
            {
              "kind": "field",
              "name": "withLabel",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "with-label"
            },
            {
              "kind": "field",
              "name": "withHint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "with-hint"
            },
            {
              "kind": "field",
              "name": "withCount",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows a character count below the textarea. When `maxlength` is set, shows remaining characters instead.",
              "attribute": "with-count",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "lastObservedWidth",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "method",
              "name": "updateResizeObserver",
              "privacy": "private",
              "description": "Creates or destroys the resize observer based on the current resize mode."
            },
            {
              "kind": "method",
              "name": "handleChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "scheduleCountAnnouncement",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleInput",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "setTextareaDimensions",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the textarea."
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the textarea."
            },
            {
              "kind": "method",
              "name": "select",
              "description": "Selects all the text in the textarea."
            },
            {
              "kind": "method",
              "name": "scrollPosition",
              "return": {
                "type": {
                  "text": "{ top: number; left: number } | undefined"
                }
              },
              "parameters": [
                {
                  "name": "position",
                  "optional": true,
                  "type": {
                    "text": "{ top?: number; left?: number }"
                  }
                }
              ],
              "description": "Gets or sets the textarea's scroll position."
            },
            {
              "kind": "method",
              "name": "setSelectionRange",
              "parameters": [
                {
                  "name": "selectionStart",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "selectionEnd",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "selectionDirection",
                  "default": "'none'",
                  "type": {
                    "text": "'forward' | 'backward' | 'none'"
                  }
                }
              ],
              "description": "Sets the start and end positions of the text selection (0-based)."
            },
            {
              "kind": "method",
              "name": "setRangeText",
              "parameters": [
                {
                  "name": "replacement",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "start",
                  "optional": true,
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "end",
                  "optional": true,
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "selectMode",
                  "default": "'preserve'",
                  "type": {
                    "text": "'select' | 'start' | 'end' | 'preserve'"
                  }
                }
              ],
              "description": "Replaces a range of text with a new string."
            },
            {
              "kind": "method",
              "name": "formResetCallback"
            },
            {
              "kind": "field",
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "attribute": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "attribute": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "attribute": "ai",
              "reflects": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "attribute": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#fieldsetDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Set by `formDisabledCallback`, i.e. an ancestor `<fieldset>`. Never written by a consumer.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "#ownDisabled",
              "privacy": "private",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The disabled state this element was given directly, via its property or its attribute.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "attribute": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "assumeInteractionOnMode",
              "type": {
                "text": "'combined' | 'separated' | string"
              },
              "default": "'combined'",
              "parsedType": {
                "text": "string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "valueHasChanged",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "hasInteracted",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_customValidityMessage",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "_isCheckingValidity",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set while `checkValidity()` is executing so the `invalid` event handler can distinguish\na programmatic check (no UI side-effects per spec) from `reportValidity()` / native form\nsubmission (which should surface the error UI and focus the first invalid control).",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emittedEvents",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "states",
              "type": {
                "text": "CustomStateSet"
              },
              "parsedType": {
                "text": "any"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleSubmitOnEnter",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleClearOnEscape",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "emitInvalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "handleInteraction",
              "privacy": "private",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "labels",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getForm",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "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": {
                "text": "HTMLFormElement | null"
              },
              "parsedType": {
                "text": "null | HTMLFormElement"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validity",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "willValidate",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationMessage",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "checkValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "privacy": "public",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "validationTarget",
              "type": {
                "text": "undefined | HTMLElement"
              },
              "description": "Override this to change where constraint validation popups are anchored.",
              "readonly": true,
              "parsedType": {
                "text": "HTMLElement | undefined"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValidity",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setValidity>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomStates",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "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.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "setValue",
              "parameters": [
                {
                  "name": "args",
                  "type": {
                    "text": "Parameters<typeof this.internals.setFormValue>"
                  }
                }
              ],
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "field",
              "name": "allValidators",
              "readonly": true,
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "resetValidity",
              "description": "Reset validity is a way of removing manual custom errors and native validation.",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "updateValidity",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "internal/ed-form-associated-element.js"
              }
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "Emitted when the control loses focus.",
              "name": "blur",
              "reactName": "onBlur",
              "eventName": "BlurEvent"
            },
            {
              "description": "Emitted when an alteration to the control's value is committed by the user.",
              "name": "change",
              "reactName": "onChange",
              "eventName": "ChangeEvent"
            },
            {
              "description": "Emitted when the control gains focus.",
              "name": "focus",
              "reactName": "onFocus",
              "eventName": "FocusEvent"
            },
            {
              "description": "Emitted when the control receives input.",
              "name": "input",
              "reactName": "onInput",
              "eventName": "InputEvent"
            },
            {
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied.",
              "name": "ed-invalid",
              "reactName": "onEdInvalid",
              "eventName": "EdInvalidEvent"
            }
          ],
          "attributes": [
            {
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "fieldName": "title"
            },
            {
              "name": "name",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The name of the textarea, submitted as a name/value pair with form data.",
              "fieldName": "name",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The default value of the form control. Primarily used for resetting the form control.",
              "fieldName": "defaultValue"
            },
            {
              "name": "density",
              "type": {
                "text": "'compact' | 'default' | 'spacious'"
              },
              "default": "'default'",
              "description": "Controls the component's spacing density without affecting font-size.",
              "fieldName": "density",
              "parsedType": {
                "text": "'compact' | 'default' | 'spacious'"
              }
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The textarea's label. If you need to display HTML, use the `label` slot instead.",
              "fieldName": "label"
            },
            {
              "name": "aria-label",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "The textarea's accessible name for when no visible label is set. Mirrored onto the internal\ntextarea, where the textbox role lives — an aria-label left on the host alone would sit on\na role-less element and be ignored by assistive tech.",
              "fieldName": "ariaLabel",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "placeholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder text to show as a hint when the input is empty.",
              "fieldName": "placeholder"
            },
            {
              "name": "rows",
              "type": {
                "text": "number"
              },
              "default": "4",
              "description": "The number of rows to display by default.",
              "fieldName": "rows"
            },
            {
              "name": "resize",
              "type": {
                "text": "'none' | 'vertical' | 'horizontal' | 'both' | 'auto'"
              },
              "default": "'vertical'",
              "description": "Controls how the textarea can be resized.",
              "fieldName": "resize",
              "parsedType": {
                "text": "'auto' | 'both' | 'horizontal' | 'vertical' | 'none'"
              }
            },
            {
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the textarea readonly.",
              "fieldName": "readonly"
            },
            {
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the textarea a required field.",
              "fieldName": "required"
            },
            {
              "name": "minlength",
              "type": {
                "text": "number"
              },
              "description": "The minimum length of input that will be considered valid.",
              "fieldName": "minlength"
            },
            {
              "name": "maxlength",
              "type": {
                "text": "number"
              },
              "description": "The maximum length of input that will be considered valid.",
              "fieldName": "maxlength"
            },
            {
              "name": "autocapitalize",
              "type": {
                "text": "'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters'"
              },
              "description": "Controls whether and how text input is automatically capitalized as it is entered by the user.",
              "fieldName": "autocapitalize",
              "parsedType": {
                "text": "'none' | 'off' | 'on' | 'sentences' | 'words' | 'characters'"
              }
            },
            {
              "name": "autocorrect",
              "type": {
                "text": "boolean"
              },
              "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`.",
              "fieldName": "autocorrect"
            },
            {
              "name": "autocomplete",
              "type": {
                "text": "string"
              },
              "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.",
              "fieldName": "autocomplete"
            },
            {
              "name": "autofocus",
              "type": {
                "text": "boolean"
              },
              "description": "Indicates that the input should receive focus on page load.",
              "fieldName": "autofocus"
            },
            {
              "name": "enterkeyhint",
              "type": {
                "text": "'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'"
              },
              "description": "Used to customize the label or icon of the Enter key on virtual keyboards.",
              "fieldName": "enterkeyhint",
              "parsedType": {
                "text": "'next' | 'previous' | 'search' | 'send' | 'done' | 'enter' | 'go'"
              }
            },
            {
              "name": "spellcheck",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Enables spell checking on the textarea.",
              "fieldName": "spellcheck"
            },
            {
              "name": "inputmode",
              "type": {
                "text": "'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'"
              },
              "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.",
              "fieldName": "inputmode",
              "parsedType": {
                "text": "'search' | 'text' | 'numeric' | 'none' | 'email' | 'tel' | 'url' | 'decimal'"
              }
            },
            {
              "name": "with-label",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "withLabel"
            },
            {
              "name": "with-hint",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "withHint"
            },
            {
              "name": "with-count",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows a character count below the textarea. When `maxlength` is set, shows remaining characters instead.",
              "fieldName": "withCount"
            },
            {
              "name": "error",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint, and use it as the validation message. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the error.",
              "fieldName": "error",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "warning",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "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 message area, above the hint. Warnings do not block form submission. Set to `null` (the default) or `undefined`, or remove the attribute, to clear the warning.",
              "fieldName": "warning",
              "parsedType": {
                "text": "null | string"
              },
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "ai",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an ai-style input with AI colored border and icon. Suppressed visually once\n`hasInteracted` flips, but the property and attribute are preserved so the styling\nreturns after `formResetCallback` clears `hasInteracted`.",
              "fieldName": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "hint",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The form control's hint text. If you need to display HTML, use the `hint` slot instead.",
              "fieldName": "hint",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "description": "Disables the form control. HTML treats a control as disabled when either its own `disabled` is\nset or an ancestor `<fieldset>` is disabled, so reading this reports the combined state while\nwriting it sets only this element's own. Keeping the two apart is what lets a fieldset be\nre-enabled without clearing a disabled state the consumer set in the meantime.",
              "fieldName": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "cssStates": [
            {
              "description": "The textarea is empty.",
              "name": "blank"
            },
            {
              "description": "The control is disabled, by its own attribute or by an ancestor fieldset.",
              "name": "disabled",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is required.",
              "name": "required",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The control is not required.",
              "name": "optional",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value fails constraint validation, whether or not the user has touched the control yet.",
              "name": "invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The value passes constraint validation.",
              "name": "valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Invalid, and the user has interacted with the control. This is the one to style for an error: it behaves like the platform's `:user-invalid`, so an untouched field is not marked wrong before the user has had a chance to fill it in.",
              "name": "user-invalid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "Valid, and the user has interacted with the control.",
              "name": "user-valid",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The user has interacted with the control.",
              "name": "dirty",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `error` property is set, or the control is `user-invalid`.",
              "name": "error",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `warning` property is set.",
              "name": "warning",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            },
            {
              "description": "The `ai` property is set and the user has not interacted with the control yet.",
              "name": "ai",
              "inheritedFrom": {
                "name": "EdFormAssociatedElement",
                "module": "src/internal/ed-form-associated-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdFormAssociatedElement",
            "module": "/src/internal/ed-form-associated-element.js"
          },
          "summary": "Textareas collect data from the user and allow multiple lines of text.",
          "jsDoc": "/**\n * @summary Textareas collect data from the user and allow multiple lines of text.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/textarea\n * @status experimental\n * @level atom\n * @since 1.0\n * @playwright getByTestId('…').getByRole('textbox')\n *\n * @dependency ed-icon\n *\n * @slot label - The textarea's label. Alternatively, you can use the `label` attribute.\n * @slot hint - Text that describes how to use the input. Alternatively, you can use the `hint` attribute.\n *\n * @event blur - Emitted when the control loses focus.\n * @event change - Emitted when an alteration to the control's value is committed by the user.\n * @event focus - Emitted when the control gains focus.\n * @event input - Emitted when the control receives input.\n * @event ed-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n *\n * @csspart label - The label\n * @csspart message - The state message: an error, a warning, or the AI note.\n * @csspart footer - The row below the control that holds the hint and the character count.\n * @csspart hint - The hint's wrapper.\n * @csspart base - The wrapper around the `<textarea>` control.\n * @csspart textarea - The internal `<textarea>` control.\n * @csspart count - The character count element, rendered when the `with-count` attribute is present.\n *\n * @cssstate blank - The textarea is empty.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/textarea",
          "status": "experimental",
          "level": "atom",
          "since": "1.0",
          "playwright": "getByTestId('…').getByRole('textbox')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-textarea",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdTextarea",
            "module": "components/textarea/textarea.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-textarea",
          "declaration": {
            "name": "EdTextarea",
            "module": "components/textarea/textarea.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/tree/tree.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdTree",
          "cssProperties": [
            {
              "description": "The width of the tree.",
              "name": "--ed-tree-width",
              "default": "15.625rem"
            },
            {
              "description": "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).",
              "name": "--ed-tree-indent-size"
            },
            {
              "description": "The color of the indentation line.",
              "name": "--ed-tree-indent-guide-color",
              "default": "var(--ed-color-border)"
            },
            {
              "description": "The color of the indentation line segment next to a selected item.",
              "name": "--ed-tree-indent-guide-active-color",
              "default": "var(--ed-color-brand-fill-normal)"
            },
            {
              "description": "Reserved for vertical offset of the indent guide; currently unused with per-item rendering and kept for future use.",
              "name": "--ed-tree-indent-guide-offset",
              "default": "0"
            },
            {
              "description": "The style of the indentation line, e.g. solid, dotted, dashed.",
              "name": "--ed-tree-indent-guide-style",
              "default": "solid"
            },
            {
              "description": "The width of the indentation line. Set to 0 (or use the `hide-indent-guides` attribute) to hide the guides entirely.",
              "name": "--ed-tree-indent-guide-width",
              "default": "var(--ed-border-width-2)"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            }
          ],
          "slots": [
            {
              "description": "The default slot.",
              "name": ""
            },
            {
              "description": "The icon to show when the tree item is expanded. Works best with `<ed-icon>`.",
              "name": "expand-icon"
            },
            {
              "description": "The icon to show when the tree item is collapsed. Works best with `<ed-icon>`.",
              "name": "collapse-icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "expandedIconSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "collapsedIconSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "selection",
              "type": {
                "text": "'single' | 'multiple' | 'leaf'"
              },
              "default": "'single'",
              "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,\nwhile parent nodes only expand and collapse.",
              "attribute": "selection",
              "parsedType": {
                "text": "'single' | 'multiple' | 'leaf'"
              }
            },
            {
              "kind": "field",
              "name": "hideIndentGuides",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Hides the vertical guide lines between nested items. By default the guides are shown.",
              "attribute": "hide-indent-guides",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "chevronPlacement",
              "type": {
                "text": "'start' | 'end'"
              },
              "default": "'start'",
              "description": "Where to render the expand/collapse chevron — at the row's start (default) or end.",
              "attribute": "chevron-placement",
              "reflects": true,
              "parsedType": {
                "text": "'start' | 'end'"
              }
            },
            {
              "kind": "field",
              "name": "lastFocusedItem",
              "type": {
                "text": "EdTreeItem | null"
              },
              "privacy": "private",
              "parsedType": {
                "text": "null | default"
              }
            },
            {
              "kind": "field",
              "name": "mutationObserver",
              "type": {
                "text": "MutationObserver"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "clickTarget",
              "type": {
                "text": "EdTreeItem | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | default"
              }
            },
            {
              "kind": "method",
              "name": "getExpandButtonIcon",
              "privacy": "private",
              "parameters": [
                {
                  "name": "status",
                  "type": {
                    "text": "'expand' | 'collapse'"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "initTreeItem",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleTreeChanged",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "selectItem",
              "privacy": "private",
              "parameters": [
                {
                  "name": "selectedItem",
                  "type": {
                    "text": "EdTreeItem"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getAllTreeItems",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdTreeItem[]"
                }
              }
            },
            {
              "kind": "method",
              "name": "updateSelectionPath",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "syncChevronPlacement",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "focusItem",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "optional": true,
                  "type": {
                    "text": "EdTreeItem | null"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleMouseDown",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleFocusOut",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleFocusIn",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ selection: EdTreeItem[] }"
              },
              "description": "Emitted when a tree item is selected or deselected.",
              "name": "ed-selection-change",
              "reactName": "onEdSelectionChange",
              "eventName": "EdSelectionChangeEvent"
            }
          ],
          "attributes": [
            {
              "name": "selection",
              "type": {
                "text": "'single' | 'multiple' | 'leaf'"
              },
              "default": "'single'",
              "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,\nwhile parent nodes only expand and collapse.",
              "fieldName": "selection",
              "parsedType": {
                "text": "'single' | 'multiple' | 'leaf'"
              }
            },
            {
              "name": "hide-indent-guides",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Hides the vertical guide lines between nested items. By default the guides are shown.",
              "fieldName": "hideIndentGuides"
            },
            {
              "name": "chevron-placement",
              "type": {
                "text": "'start' | 'end'"
              },
              "default": "'start'",
              "description": "Where to render the expand/collapse chevron — at the row's start (default) or end.",
              "fieldName": "chevronPlacement",
              "parsedType": {
                "text": "'start' | 'end'"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "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.",
          "jsDoc": "/**\n * @summary 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 * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/tree\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-tree-item\n *\n * @event {{ selection: EdTreeItem[] }} ed-selection-change - Emitted when a tree item is selected or deselected.\n *\n * @slot - The default slot.\n * @slot expand-icon - The icon to show when the tree item is expanded. Works best with `<ed-icon>`.\n * @slot collapse-icon - The icon to show when the tree item is collapsed. Works best with `<ed-icon>`.\n *\n * @csspart base - The component's base wrapper.\n *\n * @cssproperty [--ed-tree-width=15.625rem] - The width of the tree.\n * @cssproperty --ed-tree-indent-size - The size of the indentation for nested items. Derived from indent-guide\n *  geometry so the highlight stays flush against the guide regardless of font-size; override only when\n *  the indent column needs to grow or shrink visibly (and accept that the highlight will then float).\n * @cssproperty [--ed-tree-indent-guide-color=var(--ed-color-border)] - The color of the indentation line.\n * @cssproperty [--ed-tree-indent-guide-active-color=var(--ed-color-brand-fill-normal)] - The color of the indentation line\n *  segment next to a selected item.\n * @cssproperty [--ed-tree-indent-guide-offset=0] - Reserved for vertical offset of the indent guide; currently unused\n *  with per-item rendering and kept for future use.\n * @cssproperty [--ed-tree-indent-guide-style=solid] - The style of the indentation line, e.g. solid, dotted, dashed.\n * @cssproperty [--ed-tree-indent-guide-width=var(--ed-border-width-2)] - The width of the indentation line. Set to 0 (or use\n *  the `hide-indent-guides` attribute) to hide the guides entirely.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/tree",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-tree-item"
          ],
          "tagName": "ed-tree",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdTree",
            "module": "components/tree/tree.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-tree",
          "declaration": {
            "name": "EdTree",
            "module": "components/tree/tree.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/upload/upload.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdUpload",
          "cssProperties": [
            {
              "description": "Size of the drag & drop illustration icon. Raise it when the dropzone fills a large area (e.g. a full-screen scan dialog).",
              "name": "--ed-upload-illustration-size",
              "default": "4rem"
            }
          ],
          "cssParts": [
            {
              "description": "The component wrapper.",
              "name": "base"
            },
            {
              "description": "The drag & drop area.",
              "name": "dropzone"
            },
            {
              "description": "The \"N files · size\" summary (multi mode).",
              "name": "summary"
            },
            {
              "description": "The file list (multi mode).",
              "name": "list"
            },
            {
              "description": "A single file row.",
              "name": "file"
            },
            {
              "description": "A file row's name.",
              "name": "file-name"
            },
            {
              "description": "A file row's size.",
              "name": "file-size"
            },
            {
              "description": "A file row's action buttons.",
              "name": "file-actions"
            },
            {
              "description": "A file row's status cell (progress bar or status icon).",
              "name": "file-status"
            },
            {
              "description": "A rejected row's reason text.",
              "name": "file-reason"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "multiple",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "default": "false",
              "description": "Allow selecting/dropping more than one file (mirrors the native input's `multiple`).",
              "attribute": "multiple",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "accept",
              "type": {
                "text": "string"
              },
              "privacy": "public",
              "default": "''",
              "description": "Comma-separated list of accepted types (extensions and/or MIME types), like the native `accept`.",
              "attribute": "accept"
            },
            {
              "kind": "field",
              "name": "uploadUrl",
              "type": {
                "text": "string | null"
              },
              "privacy": "public",
              "default": "null",
              "description": "Target URL the files are POSTed to.",
              "attribute": "upload-url",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "kind": "field",
              "name": "uploadFilePartName",
              "type": {
                "text": "string"
              },
              "privacy": "public",
              "default": "'file'",
              "description": "FormData part name used for each file.",
              "attribute": "upload-file-part-name"
            },
            {
              "kind": "field",
              "name": "maxFiles",
              "type": {
                "text": "number | null"
              },
              "privacy": "public",
              "default": "null",
              "description": "Maximum number of files (multi mode).",
              "attribute": "max-files",
              "parsedType": {
                "text": "null | number"
              }
            },
            {
              "kind": "field",
              "name": "maxFileSize",
              "privacy": "public",
              "default": "2048",
              "description": "Maximum size per file in MB (capped at 2048).",
              "attribute": "max-file-size",
              "type": {
                "text": "number"
              }
            },
            {
              "kind": "field",
              "name": "maxTotalFileSize",
              "privacy": "public",
              "default": "2048",
              "description": "Maximum total upload size in MB (capped at 2048).",
              "attribute": "max-total-file-size",
              "type": {
                "text": "number"
              }
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "default": "false",
              "description": "Disables interaction.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "viewable",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "default": "false",
              "description": "Opt in to a per-file preview (\"view\") action in the list. When set, each row shows an eye\nbutton that emits `ed-file-preview`. While an upload is configured the button stays disabled\nuntil that file has finished uploading; without an `upload-url` it is enabled immediately.",
              "attribute": "viewable",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "headers",
              "type": {
                "text": "UploadHeaders"
              },
              "privacy": "public",
              "default": "{}",
              "description": "Request headers, either a static object or a function (sync or async) resolved per request.\nUse the function form for auth tokens so they stay fresh and never live in the DOM.",
              "parsedType": {
                "text": "{  } | {  }"
              }
            },
            {
              "kind": "field",
              "name": "picker",
              "privacy": "private",
              "readonly": true,
              "default": "new FilePickerController(this, { multiple: () => this.multiple, accept: () => this.accept, maxFiles: () => this.maxFiles, maxFileSizeMb: () => this.maxPerFileMb, maxTotalFileSizeMb: () => this.maxTotalMb, disabled: () => this.disabled, onChange: () => this.handleSelectionChange(), onReject: (file, reason) => this.handleReject(file, reason) })"
            },
            {
              "kind": "field",
              "name": "uploadState",
              "privacy": "private",
              "readonly": true,
              "default": "new Map<string, UploadState>()",
              "description": "Upload/progress state per file, keyed by name. The picker owns which files are selected;\nthis map only tracks what happens to them afterwards (queued → uploading → done/error).\nMutated in place; callers trigger re-renders explicitly (see `patchState`), same as\n`activeUploads` below — Lit's reactivity only fires on reassignment, not on Map mutation."
            },
            {
              "kind": "field",
              "name": "fileInput",
              "type": {
                "text": "HTMLInputElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "activeUploads",
              "privacy": "private",
              "readonly": true,
              "default": "new Map<string, XMLHttpRequest>()",
              "description": "In-flight uploads, keyed by file name so they can be aborted on removeFile or disconnect."
            },
            {
              "kind": "field",
              "name": "liveAnnouncement",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "description": "Screen-reader announcement for upload progress — status used to change only visually."
            },
            {
              "kind": "field",
              "name": "files",
              "type": {
                "text": "UploadFileItem[]"
              },
              "privacy": "public",
              "description": "The files currently held by the component.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "rejectedFiles",
              "type": {
                "text": "UploadFileItem[]"
              },
              "privacy": "private",
              "description": "Content-rejected files, rendered as persistent error rows alongside `files`.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "maxPerFileMb",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "maxTotalMb",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "triggerFileSelect",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "emitError",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "reason",
                  "type": {
                    "text": "UploadErrorReason"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleReject",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "File"
                  }
                },
                {
                  "name": "reason",
                  "type": {
                    "text": "RejectReason"
                  }
                }
              ],
              "description": "Surfaces a rejection reported by the picker. Content rejections (wrong type, too large, total\nexceeded) already got a persistent row from the picker, so only the event fires here.\nList-state rejections (duplicate, too many) have no specific file to show a row for, so they\nadditionally fire a danger toast — which stays until dismissed and stacks, instead of\noverwriting an inline message."
            },
            {
              "kind": "method",
              "name": "errorMessage",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "File"
                  }
                },
                {
                  "name": "reason",
                  "type": {
                    "text": "UploadErrorReason"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleSelectionChange",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Reconciles upload state to the picker's current selection, then starts any newly queued files."
            },
            {
              "kind": "method",
              "name": "announceProgress",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "description": "Announces the done-of-total progress to the live region using the existing summary term."
            },
            {
              "kind": "method",
              "name": "retryFile",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Re-queues a failed file and restarts the upload — the File object is still held in memory."
            },
            {
              "kind": "method",
              "name": "removeFile",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Removes a file from the list, or dismisses a rejected row. Aborts the upload if it is in flight."
            },
            {
              "kind": "method",
              "name": "abortUploadByName",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "resolveHeaders",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<Record<string, string>>"
                }
              }
            },
            {
              "kind": "method",
              "name": "uploadQueued",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              }
            },
            {
              "kind": "method",
              "name": "uploadFile",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "UploadFileItem"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "patchState",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "patch",
                  "type": {
                    "text": "Partial<UploadState>"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "formatSize",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "bytes",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderDropZone",
              "privacy": "private",
              "parameters": [
                {
                  "name": "compact",
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderFileStatus",
              "privacy": "private",
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "UploadFileItem"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderFileRow",
              "privacy": "private",
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "UploadFileItem"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderList",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ files: UploadFileItem[] }"
              },
              "description": "Emitted when the set of files changes (added or removed).",
              "name": "ed-upload-change",
              "reactName": "onEdUploadChange",
              "eventName": "EdUploadChangeEvent"
            },
            {
              "type": {
                "text": "{ name: string, loaded: number, total: number, percent: number }"
              },
              "description": "Emitted while a file uploads.",
              "name": "ed-upload-progress",
              "reactName": "onEdUploadProgress",
              "eventName": "EdUploadProgressEvent"
            },
            {
              "type": {
                "text": "{ files: UploadedFile[] }"
              },
              "description": "Emitted once all queued uploads have settled.",
              "name": "ed-upload-finished",
              "reactName": "onEdUploadFinished",
              "eventName": "EdUploadFinishedEvent"
            },
            {
              "type": {
                "text": "{ name: string, reason: UploadErrorReason }"
              },
              "description": "Emitted on a validation rejection or a failed upload.",
              "name": "ed-upload-error",
              "reactName": "onEdUploadError",
              "eventName": "EdUploadErrorEvent"
            },
            {
              "type": {
                "text": "{ name: string }"
              },
              "description": "Emitted when a file's preview action is activated (requires `viewable`).",
              "name": "ed-file-preview",
              "reactName": "onEdFilePreview",
              "eventName": "EdFilePreviewEvent"
            }
          ],
          "attributes": [
            {
              "name": "multiple",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allow selecting/dropping more than one file (mirrors the native input's `multiple`).",
              "fieldName": "multiple"
            },
            {
              "name": "accept",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Comma-separated list of accepted types (extensions and/or MIME types), like the native `accept`.",
              "fieldName": "accept"
            },
            {
              "name": "upload-url",
              "type": {
                "text": "string | null"
              },
              "default": "null",
              "description": "Target URL the files are POSTed to.",
              "fieldName": "uploadUrl",
              "parsedType": {
                "text": "null | string"
              }
            },
            {
              "name": "upload-file-part-name",
              "type": {
                "text": "string"
              },
              "default": "'file'",
              "description": "FormData part name used for each file.",
              "fieldName": "uploadFilePartName"
            },
            {
              "name": "max-files",
              "type": {
                "text": "number | null"
              },
              "default": "null",
              "description": "Maximum number of files (multi mode).",
              "fieldName": "maxFiles",
              "parsedType": {
                "text": "null | number"
              }
            },
            {
              "name": "max-file-size",
              "default": "MAX_SIZE_MB",
              "description": "Maximum size per file in MB (capped at 2048).",
              "fieldName": "maxFileSize"
            },
            {
              "name": "max-total-file-size",
              "default": "MAX_SIZE_MB",
              "description": "Maximum total upload size in MB (capped at 2048).",
              "fieldName": "maxTotalFileSize"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables interaction.",
              "fieldName": "disabled"
            },
            {
              "name": "viewable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Opt in to a per-file preview (\"view\") action in the list. When set, each row shows an eye\nbutton that emits `ed-file-preview`. While an upload is configured the button stays disabled\nuntil that file has finished uploading; without an `upload-url` it is enabled immediately.",
              "fieldName": "viewable"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Generic file upload: drag & drop, validation and per-file upload progress.",
          "jsDoc": "/**\n * @summary Generic file upload: drag & drop, validation and per-file upload progress.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/upload\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-button\n * @dependency ed-icon\n * @dependency ed-progress-bar\n *\n * @event {{ files: UploadFileItem[] }} ed-upload-change - Emitted when the set of files changes (added or removed).\n * @event {{ name: string, loaded: number, total: number, percent: number }} ed-upload-progress - Emitted while a file uploads.\n * @event {{ files: UploadedFile[] }} ed-upload-finished - Emitted once all queued uploads have settled.\n * @event {{ name: string, reason: UploadErrorReason }} ed-upload-error - Emitted on a validation rejection or a failed upload.\n * @event {{ name: string }} ed-file-preview - Emitted when a file's preview action is activated (requires `viewable`).\n *\n * @csspart base - The component wrapper.\n * @csspart dropzone - The drag & drop area.\n * @csspart summary - The \"N files · size\" summary (multi mode).\n * @csspart list - The file list (multi mode).\n * @csspart file - A single file row.\n * @csspart file-name - A file row's name.\n * @csspart file-size - A file row's size.\n * @csspart file-actions - A file row's action buttons.\n * @csspart file-status - A file row's status cell (progress bar or status icon).\n * @csspart file-reason - A rejected row's reason text.\n *\n * @cssproperty [--ed-upload-illustration-size=4rem] - Size of the drag & drop illustration icon. Raise it\n *              when the dropzone fills a large area (e.g. a full-screen scan dialog).\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/upload",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-button",
            "ed-icon",
            "ed-progress-bar"
          ],
          "tagName": "ed-upload",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdUpload",
            "module": "components/upload/upload.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-upload",
          "declaration": {
            "name": "EdUpload",
            "module": "components/upload/upload.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/wizard/wizard.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdWizard",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The area holding the title, the subtitle and the stepper.",
              "name": "header"
            },
            {
              "description": "The wizard's title.",
              "name": "title"
            },
            {
              "description": "The wizard's subtitle.",
              "name": "subtitle"
            },
            {
              "description": "The `<ed-stepper>` showing the steps.",
              "name": "stepper"
            },
            {
              "description": "The wrapper of the active step's content.",
              "name": "content"
            },
            {
              "description": "The wrapper of the navigation buttons, or of what is slotted into `nav`.",
              "name": "nav"
            },
            {
              "description": "The Previous button.",
              "name": "previous"
            },
            {
              "description": "The Next button.",
              "name": "next"
            },
            {
              "description": "The Finish button.",
              "name": "finish"
            },
            {
              "description": "The Cancel button.",
              "name": "cancel"
            }
          ],
          "slots": [
            {
              "description": "One or more `<ed-wizard-step>` elements.",
              "name": ""
            },
            {
              "description": "The wizard's title. Alternatively, you can use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "The wizard's subtitle. Alternatively, you can use the `sublabel` attribute.",
              "name": "sublabel"
            },
            {
              "description": "Replaces the built-in Previous, Next, Finish and Cancel buttons.",
              "name": "nav"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'label', 'sublabel')"
            },
            {
              "kind": "field",
              "name": "stepperEl",
              "type": {
                "text": "EdStepper | undefined"
              },
              "privacy": "private",
              "readonly": true,
              "parsedType": {
                "text": "default | undefined"
              }
            },
            {
              "kind": "field",
              "name": "contentEl",
              "type": {
                "text": "HTMLElement | undefined"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement | undefined"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "steps",
              "type": {
                "text": "EdWizardStep[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "furthestIndex",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0",
              "description": "Index of the furthest step reached so far. Without `linear`, every step before it shows as completed."
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The wizard's title. If you need to display HTML, use the `label` slot instead.",
              "attribute": "label",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "sublabel",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The wizard's subtitle. If you need to display HTML, use the `sublabel` slot instead.",
              "attribute": "sublabel",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "active",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the active step. Falls back to the first step if unset, or if it doesn't match any step. Assigning it\nchanges the step without emitting `ed-wizard-before-change` or `ed-wizard-change` and without moving focus.",
              "attribute": "active",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'horizontal'",
              "description": "Lays the stepper out above the content (`horizontal`) or in a column beside it (`vertical`).",
              "attribute": "orientation",
              "reflects": true,
              "parsedType": {
                "text": "'horizontal' | 'vertical'"
              }
            },
            {
              "kind": "field",
              "name": "clickable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allows jumping to a step by clicking it in the stepper, or focusing it and pressing Enter/Space.",
              "attribute": "clickable",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "linear",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Requires steps to be completed in order. A step counts as completed only through its own `completed` attribute;\nwithout `linear`, every step before the furthest one reached also shows as completed. Next stays disabled while\nthe active step is not completed, and neither `goTo()` nor a click in the stepper can reach a step after the\nfirst incomplete one.",
              "attribute": "linear",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "nextDisabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the Next button, e.g. until the consumer's validation passes. `next()` is refused as well.",
              "attribute": "next-disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "previousDisabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the Previous button, e.g. while an async operation is in progress. `previous()` is refused as well.",
              "attribute": "previous-disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "scrollToTop",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Scrolls the content back to the top after the user or a method changes the step.",
              "attribute": "scroll-to-top",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "#shownStep",
              "privacy": "private",
              "type": {
                "text": "EdWizardStep | undefined"
              },
              "description": "The step whose panel is shown, so a rename of it can be followed.",
              "parsedType": {
                "text": "default | undefined"
              }
            },
            {
              "kind": "field",
              "name": "handleStepMetaChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "keyOf",
              "privacy": "private",
              "parameters": [
                {
                  "name": "step",
                  "type": {
                    "text": "EdWizardStep"
                  }
                },
                {
                  "name": "index",
                  "default": "this.steps.indexOf(step)"
                }
              ],
              "description": "The key a step is addressed by: its name, or `step-<n>` for an unnamed one."
            },
            {
              "kind": "field",
              "name": "activeIndex",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "activeWizardStep",
              "type": {
                "text": "EdWizardStep | undefined"
              },
              "privacy": "private",
              "readonly": true,
              "parsedType": {
                "text": "default | undefined"
              }
            },
            {
              "kind": "field",
              "name": "isFirstStep",
              "description": "True if no step before the active one can be reached, i.e. Previous has nowhere to go.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "isLastStep",
              "description": "True if no step after the active one can be reached, i.e. Next has nowhere to go and Finish is enabled.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "isCompletedAt",
              "privacy": "private",
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Whether the step at `index` shows as completed — what the inner stepper's `linear` lock reads."
            },
            {
              "kind": "method",
              "name": "isReachable",
              "privacy": "private",
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "The rule ed-stepper's `goTo()` applies: a disabled step is never reached, and with `linear` no step after the\nfirst incomplete one is, a disabled one included."
            },
            {
              "kind": "field",
              "name": "isNextBlocked",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "isPreviousBlocked",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "goTo",
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Requests a change to the named step. Emits a cancelable `ed-wizard-before-change`; if not canceled, makes the\nstep active and emits `ed-wizard-change`. Does nothing if the step doesn't exist, is already active, is disabled,\nor (with `linear`) can't be reached yet."
            },
            {
              "kind": "method",
              "name": "next",
              "description": "Goes to the next step that is not disabled, unless Next is disabled."
            },
            {
              "kind": "method",
              "name": "previous",
              "description": "Goes back to the nearest step before the active one that is not disabled, unless Previous is disabled."
            },
            {
              "kind": "method",
              "name": "toWizardDetail",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "EdWizardChangeEventDetail | null"
                }
              },
              "parameters": [
                {
                  "name": "detail",
                  "type": {
                    "text": "EdStepperChangeEventDetail"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleStepperBeforeChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "EdStepperBeforeChangeEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleStepperChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "EdStepperChangeEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "keepFocusInNav",
              "privacy": "private",
              "parameters": [
                {
                  "name": "focusedButton",
                  "type": {
                    "text": "HTMLElement | null"
                  }
                }
              ],
              "description": "A disabled button drops focus to the document. When the button the user just pressed became disabled, focus\nmoves to the button that carries on from there: Finish after the last Next, Next after the first Previous."
            },
            {
              "kind": "method",
              "name": "handleFinish",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleCancel",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderStep",
              "privacy": "private",
              "parameters": [
                {
                  "name": "step",
                  "type": {
                    "text": "EdWizardStep"
                  }
                },
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderNav",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ name: string, previousName: string | null, step: EdWizardStep, previousStep: EdWizardStep | null }"
              },
              "description": "Emitted before the active step changes through the buttons, a click in the stepper or `goTo()`/`next()`/`previous()`. Calling `event.preventDefault()` keeps the current step. Assigning `active` does not emit it.",
              "name": "ed-wizard-before-change",
              "reactName": "onEdWizardBeforeChange",
              "eventName": "EdWizardBeforeChangeEvent"
            },
            {
              "type": {
                "text": "{ name: string, previousName: string | null, step: EdWizardStep, previousStep: EdWizardStep | null }"
              },
              "description": "Emitted after the active step changed through the buttons, a click in the stepper or `goTo()`/`next()`/`previous()`. Assigning `active` does not emit it.",
              "name": "ed-wizard-change",
              "reactName": "onEdWizardChange",
              "eventName": "EdWizardChangeEvent"
            },
            {
              "description": "Emitted when the Finish button is activated.",
              "name": "ed-wizard-finish",
              "reactName": "onEdWizardFinish",
              "eventName": "EdWizardFinishEvent"
            },
            {
              "description": "Emitted when the Cancel button is activated.",
              "name": "ed-wizard-cancel",
              "reactName": "onEdWizardCancel",
              "eventName": "EdWizardCancelEvent"
            }
          ],
          "attributes": [
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The wizard's title. If you need to display HTML, use the `label` slot instead.",
              "fieldName": "label"
            },
            {
              "name": "sublabel",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The wizard's subtitle. If you need to display HTML, use the `sublabel` slot instead.",
              "fieldName": "sublabel"
            },
            {
              "name": "active",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the active step. Falls back to the first step if unset, or if it doesn't match any step. Assigning it\nchanges the step without emitting `ed-wizard-before-change` or `ed-wizard-change` and without moving focus.",
              "fieldName": "active"
            },
            {
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'horizontal'",
              "description": "Lays the stepper out above the content (`horizontal`) or in a column beside it (`vertical`).",
              "fieldName": "orientation",
              "parsedType": {
                "text": "'horizontal' | 'vertical'"
              }
            },
            {
              "name": "clickable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allows jumping to a step by clicking it in the stepper, or focusing it and pressing Enter/Space.",
              "fieldName": "clickable"
            },
            {
              "name": "linear",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Requires steps to be completed in order. A step counts as completed only through its own `completed` attribute;\nwithout `linear`, every step before the furthest one reached also shows as completed. Next stays disabled while\nthe active step is not completed, and neither `goTo()` nor a click in the stepper can reach a step after the\nfirst incomplete one.",
              "fieldName": "linear"
            },
            {
              "name": "next-disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the Next button, e.g. until the consumer's validation passes. `next()` is refused as well.",
              "fieldName": "nextDisabled"
            },
            {
              "name": "previous-disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the Previous button, e.g. while an async operation is in progress. `previous()` is refused as well.",
              "fieldName": "previousDisabled"
            },
            {
              "name": "scroll-to-top",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Scrolls the content back to the top after the user or a method changes the step.",
              "fieldName": "scrollToTop"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Guides users through a task step by step: a stepper showing where they are, the active step's content,\nand buttons to move between steps, finish or cancel.",
          "jsDoc": "/**\n * @summary Guides users through a task step by step: a stepper showing where they are, the active step's content,\n *  and buttons to move between steps, finish or cancel.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/wizard\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-button\n * @dependency ed-icon\n * @dependency ed-step\n * @dependency ed-stepper\n * @dependency ed-wizard-step\n *\n * @event {{ name: string, previousName: string | null, step: EdWizardStep, previousStep: EdWizardStep | null }} ed-wizard-before-change\n *  - Emitted before the active step changes through the buttons, a click in the stepper or\n *  `goTo()`/`next()`/`previous()`. Calling `event.preventDefault()` keeps the current step. Assigning `active` does\n *  not emit it.\n * @event {{ name: string, previousName: string | null, step: EdWizardStep, previousStep: EdWizardStep | null }} ed-wizard-change\n *  - Emitted after the active step changed through the buttons, a click in the stepper or\n *  `goTo()`/`next()`/`previous()`. Assigning `active` does not emit it.\n * @event ed-wizard-finish - Emitted when the Finish button is activated.\n * @event ed-wizard-cancel - Emitted when the Cancel button is activated.\n *\n * @slot - One or more `<ed-wizard-step>` elements.\n * @slot label - The wizard's title. Alternatively, you can use the `label` attribute.\n * @slot sublabel - The wizard's subtitle. Alternatively, you can use the `sublabel` attribute.\n * @slot nav - Replaces the built-in Previous, Next, Finish and Cancel buttons.\n *\n * @csspart base - The component's base wrapper.\n * @csspart header - The area holding the title, the subtitle and the stepper.\n * @csspart title - The wizard's title.\n * @csspart subtitle - The wizard's subtitle.\n * @csspart stepper - The `<ed-stepper>` showing the steps.\n * @csspart content - The wrapper of the active step's content.\n * @csspart nav - The wrapper of the navigation buttons, or of what is slotted into `nav`.\n * @csspart previous - The Previous button.\n * @csspart next - The Next button.\n * @csspart finish - The Finish button.\n * @csspart cancel - The Cancel button.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/wizard",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-button",
            "ed-icon",
            "ed-step",
            "ed-stepper",
            "ed-wizard-step"
          ],
          "tagName": "ed-wizard",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdWizard",
            "module": "components/wizard/wizard.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-wizard",
          "declaration": {
            "name": "EdWizard",
            "module": "components/wizard/wizard.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/zoomable-frame/zoomable-frame.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdZoomableFrame",
          "cssParts": [
            {
              "description": "The internal `<iframe>` element.",
              "name": "iframe"
            },
            {
              "description": "The container that surrounds zoom control buttons.",
              "name": "controls"
            },
            {
              "description": "The zoom in button.",
              "name": "zoom-in-button"
            },
            {
              "description": "The zoom out button.",
              "name": "zoom-out-button"
            }
          ],
          "slots": [
            {
              "description": "The slot that contains the zoom in icon.",
              "name": "zoom-in-icon"
            },
            {
              "description": "The slot that contains the zoom out icon.",
              "name": "zoom-out-icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "availableZoomLevels",
              "type": {
                "text": "number[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "iframe",
              "type": {
                "text": "HTMLIFrameElement"
              }
            },
            {
              "kind": "field",
              "name": "src",
              "type": {
                "text": "string"
              },
              "description": "The URL of the content to display.",
              "attribute": "src"
            },
            {
              "kind": "field",
              "name": "srcdoc",
              "type": {
                "text": "string"
              },
              "description": "Inline HTML to display.",
              "attribute": "srcdoc"
            },
            {
              "kind": "field",
              "name": "allow",
              "type": {
                "text": "string"
              },
              "description": "The permissions policy for the framed document, as the native `<iframe allow>` takes it, e.g.\n`clipboard-write; fullscreen`.",
              "attribute": "allow"
            },
            {
              "kind": "field",
              "name": "allowfullscreen",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allows fullscreen mode.",
              "attribute": "allowfullscreen"
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string"
              },
              "description": "The frame's name, so a link or form on the page can target it with `target=\"…\"`.",
              "attribute": "name"
            },
            {
              "kind": "field",
              "name": "loading",
              "type": {
                "text": "'eager' | 'lazy'"
              },
              "default": "'eager'",
              "description": "Controls iframe loading behavior.",
              "attribute": "loading",
              "parsedType": {
                "text": "'eager' | 'lazy'"
              }
            },
            {
              "kind": "field",
              "name": "referrerpolicy",
              "type": {
                "text": "string"
              },
              "description": "Controls referrer information.",
              "attribute": "referrerpolicy"
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "description": "An accessible label for the iframe. Recommended for screen readers.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "sandbox",
              "type": {
                "text": "string"
              },
              "default": "'allow-scripts'",
              "description": "Security restrictions for the iframe. Defaults to `allow-scripts`: framed content runs in an\nopaque origin and cannot reach the embedding page. Per the HTML spec an EMPTY string applies\nthe maximum restrictions (everything blocked); add `allow-*` keywords to grant capabilities.\nThe attribute is always rendered — there is deliberately no way to omit it entirely.\n\nAdding `allow-same-origin` **and** `allow-scripts` together disables the sandbox: the framed\ndocument can then clear its own `sandbox` attribute, and `srcdoc` content additionally\ninherits this page's origin — cookies, storage and `parent` included. Only combine them for\ncontent you fully control.",
              "attribute": "sandbox"
            },
            {
              "kind": "field",
              "name": "zoom",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "The current zoom of the frame, e.g. 0 = 0% and 1 = 100%.",
              "attribute": "zoom",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "zoomLevels",
              "type": {
                "text": "string"
              },
              "default": "'25% 50% 75% 100% 125% 150% 175% 200%'",
              "description": "The zoom levels to step through when using zoom controls. This does not restrict programmatic changes to the zoom.",
              "attribute": "zoom-levels"
            },
            {
              "kind": "field",
              "name": "withoutControls",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Removes the zoom controls.",
              "attribute": "without-controls",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "withoutInteraction",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables interaction when present.",
              "attribute": "without-interaction",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "contentWindow",
              "type": {
                "text": "Window | null"
              },
              "privacy": "public",
              "description": "Returns the internal iframe's `window` object. (Readonly property)",
              "readonly": true,
              "parsedType": {
                "text": "null | Window"
              }
            },
            {
              "kind": "field",
              "name": "contentDocument",
              "type": {
                "text": "Document | null"
              },
              "privacy": "public",
              "description": "Returns the internal iframe's `document` object. (Readonly property)",
              "readonly": true,
              "parsedType": {
                "text": "null | Document"
              }
            },
            {
              "kind": "method",
              "name": "parseZoomLevels",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number[]"
                }
              },
              "parameters": [
                {
                  "name": "zoomLevelsString",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getCurrentZoomIndex",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              }
            },
            {
              "kind": "method",
              "name": "isZoomInDisabled",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              }
            },
            {
              "kind": "method",
              "name": "isZoomOutDisabled",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              }
            },
            {
              "kind": "method",
              "name": "warnOnOriginInheritingSandbox",
              "privacy": "private",
              "description": "`srcdoc` inherits the embedder's origin, and a `src` on the embedder's own origin — a `blob:` URL\nincluded — has it anyway; `allow-same-origin` preserves it. So this one combination runs framed\nmarkup as the host application. There is no safe use for it with content the consumer did not\nauthor."
            },
            {
              "kind": "method",
              "name": "zoomIn",
              "privacy": "public",
              "description": "Zooms in to the next available zoom level."
            },
            {
              "kind": "method",
              "name": "zoomOut",
              "privacy": "public",
              "description": "Zooms out to the previous available zoom level."
            },
            {
              "kind": "method",
              "name": "handleLoad",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleError",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "name": "load",
              "type": {
                "text": "Event"
              },
              "description": "Emitted when the internal iframe when it finishes loading.",
              "reactName": "onLoad",
              "eventName": "LoadEvent"
            },
            {
              "name": "error",
              "type": {
                "text": "Event"
              },
              "description": "Emitted from the internal iframe when it fails to load.",
              "reactName": "onError",
              "eventName": "ErrorEvent"
            }
          ],
          "attributes": [
            {
              "name": "src",
              "type": {
                "text": "string"
              },
              "description": "The URL of the content to display.",
              "fieldName": "src"
            },
            {
              "name": "srcdoc",
              "type": {
                "text": "string"
              },
              "description": "Inline HTML to display.",
              "fieldName": "srcdoc"
            },
            {
              "name": "allow",
              "type": {
                "text": "string"
              },
              "description": "The permissions policy for the framed document, as the native `<iframe allow>` takes it, e.g.\n`clipboard-write; fullscreen`.",
              "fieldName": "allow"
            },
            {
              "name": "allowfullscreen",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allows fullscreen mode.",
              "fieldName": "allowfullscreen"
            },
            {
              "name": "name",
              "type": {
                "text": "string"
              },
              "description": "The frame's name, so a link or form on the page can target it with `target=\"…\"`.",
              "fieldName": "name"
            },
            {
              "name": "loading",
              "type": {
                "text": "'eager' | 'lazy'"
              },
              "default": "'eager'",
              "description": "Controls iframe loading behavior.",
              "fieldName": "loading",
              "parsedType": {
                "text": "'eager' | 'lazy'"
              }
            },
            {
              "name": "referrerpolicy",
              "type": {
                "text": "string"
              },
              "description": "Controls referrer information.",
              "fieldName": "referrerpolicy"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "description": "An accessible label for the iframe. Recommended for screen readers.",
              "fieldName": "label"
            },
            {
              "name": "sandbox",
              "type": {
                "text": "string"
              },
              "default": "'allow-scripts'",
              "description": "Security restrictions for the iframe. Defaults to `allow-scripts`: framed content runs in an\nopaque origin and cannot reach the embedding page. Per the HTML spec an EMPTY string applies\nthe maximum restrictions (everything blocked); add `allow-*` keywords to grant capabilities.\nThe attribute is always rendered — there is deliberately no way to omit it entirely.\n\nAdding `allow-same-origin` **and** `allow-scripts` together disables the sandbox: the framed\ndocument can then clear its own `sandbox` attribute, and `srcdoc` content additionally\ninherits this page's origin — cookies, storage and `parent` included. Only combine them for\ncontent you fully control.",
              "fieldName": "sandbox"
            },
            {
              "name": "zoom",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "The current zoom of the frame, e.g. 0 = 0% and 1 = 100%.",
              "fieldName": "zoom"
            },
            {
              "name": "zoom-levels",
              "type": {
                "text": "string"
              },
              "default": "'25% 50% 75% 100% 125% 150% 175% 200%'",
              "description": "The zoom levels to step through when using zoom controls. This does not restrict programmatic changes to the zoom.",
              "fieldName": "zoomLevels"
            },
            {
              "name": "without-controls",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Removes the zoom controls.",
              "fieldName": "withoutControls"
            },
            {
              "name": "without-interaction",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables interaction when present.",
              "fieldName": "withoutInteraction"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Zoomable frames render iframe content with zoom and interaction controls.",
          "jsDoc": "/**\n * @summary Zoomable frames render iframe content with zoom and interaction controls.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/components/zoomable-frame\n * @status experimental\n * @level molecule\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-icon\n *\n * @slot zoom-in-icon - The slot that contains the zoom in icon.\n * @slot zoom-out-icon - The slot that contains the zoom out icon.\n *\n * @event load - Emitted when the internal iframe when it finishes loading.\n * @event error - Emitted from the internal iframe when it fails to load.\n *\n * @csspart iframe - The internal `<iframe>` element.\n * @csspart controls - The container that surrounds zoom control buttons.\n * @csspart zoom-in-button - The zoom in button.\n * @csspart zoom-out-button - The zoom out button.\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/components/zoomable-frame",
          "status": "experimental",
          "level": "molecule",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-icon"
          ],
          "tagName": "ed-zoomable-frame",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdZoomableFrame",
            "module": "components/zoomable-frame/zoomable-frame.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-zoomable-frame",
          "declaration": {
            "name": "EdZoomableFrame",
            "module": "components/zoomable-frame/zoomable-frame.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/computed-style.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "computedStyleMap",
          "default": "new WeakMap<Element, CSSStyleDeclaration>()"
        },
        {
          "kind": "function",
          "name": "getComputedStyle",
          "return": {
            "type": {
              "text": "CSSStyleDeclaration | null"
            }
          },
          "parameters": [
            {
              "name": "el",
              "type": {
                "text": "Element"
              }
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "computedStyleMap",
          "declaration": {
            "name": "computedStyleMap",
            "module": "internal/computed-style.js"
          }
        },
        {
          "kind": "js",
          "name": "getComputedStyle",
          "declaration": {
            "name": "getComputedStyle",
            "module": "internal/computed-style.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/default-value.js",
      "declarations": [
        {
          "kind": "function",
          "name": "defaultValue",
          "parameters": [
            {
              "name": "propertyName",
              "default": "'value'"
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "defaultValue",
          "declaration": {
            "name": "defaultValue",
            "module": "internal/default-value.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/secret-attribute.js",
      "declarations": [
        {
          "kind": "function",
          "name": "reportSecretAttribute",
          "return": {
            "type": {
              "text": "void"
            }
          },
          "parameters": [
            {
              "name": "host",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "name": "attribute",
              "type": {
                "text": "string"
              }
            },
            {
              "name": "property",
              "type": {
                "text": "string"
              }
            }
          ],
          "description": "Reports a credential that was passed as an HTML attribute.\n\nWidgets taking a session token expose it as a property only (`attribute: false`), so the value\nnever sits in the DOM where page scripts, browser extensions, session-replay tools and error\ntrackers that snapshot markup would read it. Lit silently ignores an attribute it does not\nobserve, so without this the widget would just sit there unconfigured — call it from\n`connectedCallback` to turn that into a diagnosable error."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "reportSecretAttribute",
          "declaration": {
            "name": "reportSecretAttribute",
            "module": "internal/secret-attribute.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "internal/validate-session.js",
      "declarations": [
        {
          "kind": "function",
          "name": "validateSession",
          "return": {
            "type": {
              "text": "Promise<number[]>"
            }
          },
          "parameters": [
            {
              "name": "options",
              "type": {
                "text": "ValidateSessionOptions"
              }
            }
          ],
          "description": "Validates a session against `validateUrl` and schedules the warning/expiry callbacks.\n\nResolves with the scheduled timeout IDs **only** when the session is valid and expires in the future.\nEvery other outcome — a rejected request, a non-OK response, a malformed body, or a `validTo` that is\nmissing or already in the past — invokes `onExpired` with the matching SessionExpiredCause and then\nthrows, so a caller never mistakes a failed validation for a valid session.\n\n`onExpiringSoon` is invoked either from the one-minute timer (`cause: 'scheduled'`) or, when the session is\nalready inside that window at validation time, synchronously before this function returns\n(`cause: 'immediate'`). It therefore fires for every valid session, so a consumer can always tell a warning\nthat is still coming from one that will never arrive.\n\n`onExpired` is invoked with `cause: 'expired'` **only** from the future-dated expiry timer, i.e. after a\nsession that was valid at validation time reaches the end of its lifetime. A merely failed validation reports\n`'invalid'` (rejected token) or `'error'` (transient/unreachable) — never `'expired'`. That keeps a consumer\nwho re-authenticates on `'expired'` from looping when the token stays bad or the service is down."
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "validateSession",
          "declaration": {
            "name": "validateSession",
            "module": "internal/validate-session.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/ar.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'تم إنشاء هذا المحتوى بواسطة الذكاء الاصطناعي', allTagsRemoved: 'تمت إزالة كل الوسوم', appearance: 'المظهر', appearanceClassic: 'كلاسيكي', appearanceModern: 'حديث', autosizeColumn: 'ملاءمة العمود للمحتوى', back: 'رجوع', cancel: 'إلغاء', carousel: 'كاروسيل', chooseDate: 'اختيار تاريخ', chooseDateAndTime: 'اختيار التاريخ والوقت', chooseTime: 'اختيار وقت', clearEntry: 'حذف الخيارات', clearFilter: 'مسح عامل التصفية', close: 'اغلاق', collapse: 'طي', columnMenu: 'خيارات العمود', columnMovedToPosition: (label, position, total) => `${label}، الموضع ${position} من ${total}`, columns: 'الأعمدة', completed: 'مكتمل', copied: 'تم النسخ', copy: 'نسخ', currentValue: 'القيمة الحالية', dateInputBadInput: 'الرجاء إدخال تاريخ صالح.', dateInputRangeOverflow: 'التاريخ متأخر جدًا.', dateInputRangeUnderflow: 'التاريخ مبكر جدًا.', dateInputValueMissing: 'الرجاء ملء هذا الحقل.', dateNotSelectable: 'لا يمكن اختيار هذا التاريخ.', datePlaceholderDay: 'يي', datePlaceholderHalfyear: 'ن', datePlaceholderMonth: 'شش', datePlaceholderQuarter: 'ر', datePlaceholderWeek: 'أأ', datePlaceholderYear: 'سسسس', // Date input dateRangeEndBeforeStart: 'يجب أن تكون نهاية الفترة بعد بدايتها.', dateSegmentDay: 'اليوم', dateSegmentHalfyear: 'نصف سنة', dateSegmentMonth: 'الشهر', dateSegmentQuarter: 'ربع سنة', dateSegmentWeek: 'الأسبوع', dateSegmentYear: 'السنة', datetimeInputBadInput: 'الرجاء إدخال تاريخ ووقت صالحين.', datetimeInputRangeOverflow: 'التاريخ والوقت متأخران جدًا.', datetimeInputRangeUnderflow: 'التاريخ والوقت مبكران جدًا.', datetimeInputValueMissing: 'الرجاء ملء هذا الحقل.', decrement: 'إنقاص', density: 'الكثافة', densityCompact: 'مضغوط', densityDefault: 'افتراضي', densitySpacious: 'متباعد', disabled: 'معطل', dragToReorder: 'اسحب لإعادة الترتيب', dropFileHere: 'أسقط الملف هنا أو انقر للتصفح', dropFilesHere: 'أسقط الملفات هنا أو انقر للتصفح', entriesPerPage: 'عدد الإدخالات في الصفحة', error: 'خطأ', expand: 'توسيع', filter: 'تصفية', filterByColumn: label => `تصفية ${label}`, filterFrom: 'من', filterMax: 'الحد الأقصى', filterMin: 'الحد الأدنى', filterTo: 'إلى', finish: 'إنهاء', from: 'من', goToSlide: (slide, count) => `عرض شريحة رقم ${slide} من ${count}`, halfyear: 'نصف السنة', hideColumn: 'إخفاء العمود', hidePassword: 'اخفاء كلمة المرور', increment: 'زيادة', loadFailed: 'تعذر تحميل الصفوف.', loading: 'جاري التحميل', loadMoreFailed: 'تعذر تحميل المزيد من الصفوف.', locked: 'مقفل', mainMenu: 'القائمة الرئيسية', maximumValue: label => (label ? `${label} (القيمة القصوى)` : 'القيمة القصوى'), minimumValue: label => (label ? `${label} (القيمة الدنيا)` : 'القيمة الدنيا'), month: 'الشهر', more: 'المزيد', multipleValues: 'قيم متعددة', newsMenu: 'قائمة الأخبار', newsToggleMenu: 'تبديل قائمة الأخبار', next: 'التالي', nextPage: 'الصفحة التالية', nextSlide: 'الشريحة التالية', noData: 'لا توجد بيانات', noDataDescription: 'لا توجد إدخالات لعرضها بعد.', noOptions: 'لا توجد خيارات', noResults: 'لا توجد نتائج', noResultsDescription: 'لا يوجد إدخال يطابق البحث أو عوامل التصفية.', notCompleted: 'غير مكتمل', notificationsRegion: hotkey => `الإشعارات، اضغط ${hotkey} للتركيز`, numCharacters: num => { if (num === 0) return '0 أحرف'; if (num === 1) return '1 حرف'; if (num === 2) return '2 حرفان'; if (num > 2 && num < 11) return `${num} أحرف`; return `${num} حرفًا`; }, numCharactersRemaining: num => { if (num === 0) return '0 أحرف متبقية'; if (num === 1) return '1 حرف متبقٍ'; if (num === 2) return '2 حرفان متبقيان'; if (num > 2 && num < 11) return `${num} أحرف متبقية`; return `${num} حرفًا متبقيًا`; }, numEntries: (num, format) => { if (num === 0) return 'لا توجد إدخالات'; if (num === 1) return 'إدخال واحد'; if (num === 2) return 'إدخالان'; if (num > 2 && num < 11) return `${formatCount(num, format)} إدخالات`; return `${formatCount(num, format)} إدخالًا`; }, numEntriesLoaded: (num, format) => { if (num === 0) return 'لم يتم تحميل أي إدخالات'; if (num === 1) return 'تم تحميل إدخال واحد'; if (num === 2) return 'تم تحميل إدخالان'; if (num > 2 && num < 11) return `تم تحميل ${formatCount(num, format)} إدخالات`; return `تم تحميل ${formatCount(num, format)} إدخالًا`; }, numEntriesOfTotal: (shown, total, format) => { if (total === 1) return `${formatCount(shown, format)} من إدخال واحد`; if (total === 2) return `${formatCount(shown, format)} من إدخالين`; if (total > 2 && total < 11) return `${formatCount(shown, format)} من ${formatCount(total, format)} إدخالات`; return `${formatCount(shown, format)} من ${formatCount(total, format)} إدخالًا`; }, numOfTotalSelected: (num, total, format) => `تم تحديد ${formatCount(num, format)} من ${formatCount(total, format)}`, numOptionsAvailable: num => { if (num === 0) return 'لا توجد خيارات متاحة'; if (num === 1) return 'خيار واحد متاح'; if (num === 2) return 'خياران متاحان'; if (num > 2 && num < 11) return `${num} خيارات متاحة`; return `${num} خيارًا متاحًا`; }, numOptionsSelected: num => { if (num === 0) return 'لم يتم تحديد أي خيارات'; if (num === 1) return 'تم تحديد خيار واحد'; if (num === 2) return 'تم تحديد خياران'; if (num > 2 && num < 11) return `تم تحديد ${num} خيارات`; return `تم تحديد ${num} خيار`; }, numSelected: (num, format) => { if (num === 0) return 'لم يتم تحديد شيء'; return `تم تحديد ${formatCount(num, format)}`; }, numTotal: num => `الإجمالي ${num}`, ok: 'OK', onThisPage: 'في هذه الصفحة', optionPosition: (label, position, total) => `${label}, ${position} من ${total}`, optionsLoadError: 'تعذّر تحميل الخيارات', page: 'الصفحة', pauseAnimation: 'إيقاف الرسوم المتحركة مؤقتًا', pinToEnd: 'تثبيت في النهاية', pinToStart: 'تثبيت في البداية', playAnimation: 'تشغيل الرسوم المتحركة', previousPage: 'الصفحة السابقة', previousSlide: 'الشريحة السابقة', progress: 'مقدار التقدم', quarter: 'الربع', rangeSelected: (start, end) => `تم تحديد من ${start} إلى ${end}`, // Calendar range selection rangeSelectingFrom: date => `جارٍ تحديد نطاق بدءًا من ${date}…`, remove: 'حذف', reset: 'إعادة تعيين', resetColumns: 'إعادة تعيين الأعمدة', resetFilters: 'إعادة تعيين كل عوامل التصفية', resize: 'تغيير الحجم', resizeColumn: 'تغيير حجم العمود', scrollableRegion: 'منطقة قابلة للتمرير', scrollToEnd: 'الانتقال الى النهاية', scrollToStart: 'الانتقال الى البداية', search: 'بحث', sectionPages: 'صفحات القسم', sections: 'الأقسام', selectAColorFromTheScreen: 'اختر لون من الشاشة', numRowsCopied: num => { if (num === 0) return 'لم يتم نسخ أي صفوف'; if (num === 1) return 'تم نسخ صف واحد'; if (num === 2) return 'تم نسخ صفين'; if (num > 2 && num < 11) return `تم نسخ ${num} صفوف`; return `تم نسخ ${num} صفًا`; }, numRowsSelected: num => { if (num === 0) return 'لم يتم تحديد أي صفوف'; if (num === 1) return 'تم تحديد صف واحد'; if (num === 2) return 'تم تحديد صفين'; if (num > 2 && num < 11) return `تم تحديد ${num} صفوف`; return `تم تحديد ${num} صفًا`; }, rowLifted: (position, total) => `تم رفع الصف، الموضع ${position} من ${total}. استخدم السهمين لأعلى ولأسفل للنقل، ومفتاح المسافة للإفلات، وEscape للإلغاء.`, rowMoved: (position, total) => `الموضع ${position} من ${total}`, rowReorderCanceled: 'تم إلغاء إعادة الترتيب', selectAllEntries: 'تحديد كل الإدخالات', selectAllRows: 'تحديد جميع الصفوف', selectDate: 'تحديد تاريخ', selectDateTime: 'تحديد التاريخ والوقت', selectGroup: 'تحديد المجموعة', selectRow: 'تحديد الصف', selectRowNamed: name => `تحديد ${name}`, showingNofMRows: (shown, total) => `الصفوف المعروضة: ${shown} من ${total}`, showingRangeOfMore: (first, last) => `${first}–${last} من أكثر من ${last}`, showingRangeOfTotal: (first, last, total) => `${first}–${last} من ${total}`, sortAscending: 'فرز تصاعدي', sortDescending: 'فرز تنازلي', sortedByColumn: (column, direction) => `تم الفرز حسب ${column}، ${direction === 'ascending' ? 'تصاعديًا' : 'تنازليًا'}`, sortingCleared: 'تمت إزالة الفرز', // Date picker selectTime: 'تحديد وقت', showingPanelSpan: (first, last) => `عرض ${first} – ${last}`, showingSinglePanel: month => `عرض ${month}`, showLess: 'عرض أقل', showMore: 'عرض المزيد', showPassword: 'عرض كلمة المرور', skipToContent: 'تخطي إلى المحتوى', slideNum: slide => `شريحة ${slide}`, steps: 'الخطوات', stepXOfY: (step, total) => `الخطوة ${step} من ${total}`, tagAdded: tag => `تمت إضافة ${tag}`, tagAlreadyAdded: tag => `الوسم ${tag} مضاف بالفعل`, tagInputKeyboardHelp: 'اضغط Backspace أو Delete لإزالة هذا الوسم.', tagRemoved: tag => `تمت إزالة ${tag}`, timeInputBadInput: 'الرجاء إدخال وقت صالح.', timeInputRangeOverflow: 'الوقت متأخر جدًا.', timeInputRangeUnderflow: 'الوقت مبكر جدًا.', timeInputValueMissing: 'الرجاء ملء هذا الحقل.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'ص/م', timeSegmentHour: 'الساعة', timeSegmentMinute: 'الدقيقة', timeSegmentSecond: 'الثانية', toggleColorFormat: 'تغيير صيغة عرض اللون', toggleNavigationDrawer: 'تبديل لوحة التنقل', tooFewTags: min => { if (min === 1) return 'أضف وسمًا واحدًا على الأقل'; if (min === 2) return 'أضف وسمين على الأقل'; if (min > 2 && min < 11) return `أضف ${min} وسوم على الأقل`; return `أضف ${min} وسمًا على الأقل`; }, tooManyTags: max => { if (max === 1) return 'لا تضف أكثر من وسم واحد'; if (max === 2) return 'لا تضف أكثر من وسمين'; if (max > 2 && max < 11) return `لا تضف أكثر من ${max} وسوم`; return `لا تضف أكثر من ${max} وسمًا`; }, tryAgain: 'إعادة المحاولة', unpinColumn: 'إلغاء تثبيت العمود', unread: 'غير مقروء', unsort: 'إلغاء الفرز', until: 'إلى', view: 'عرض', weekInputRangeOverflow: 'الأسبوع متأخر جدًا.', weekInputRangeUnderflow: 'الأسبوع مبكر جدًا.', weekInputValueMissing: 'يُرجى تحديد أسبوع.', weekLabel: week => `الأسبوع ${week}`, year: 'السنة', zoomIn: 'تكبير', zoomOut: 'تصغير', documentViewerCanvas: 'المستند', documentViewerContinuous: 'التمرير الرأسي', documentViewerFitHeight: 'ارتفاع الصفحة', documentViewerFitWidth: 'عرض الصفحة', documentViewerLoadError: 'تعذّر تحميل الصفحة', documentViewerPages: 'الصفحات', documentViewerRotateLeft: 'تدوير لليسار', documentViewerRotateRight: 'تدوير لليمين', documentViewerSinglePage: 'تمرير الصفحة', documentViewerZoom: 'تكبير', editorAi: 'ذكاء اصطناعي', editorAiSuggestions: 'اقتراحات الذكاء الاصطناعي', editorDelete: 'حذف', editorHideDeletedPages: 'إخفاء الصفحات المحذوفة', editorPage: page => `الصفحة ${page}`, editorRotate: 'تدوير 90°', editorSelectAll: (selected, total) => `تحديد الكل (${selected} من ${total})`, editorSplit: 'تقسيم', editorUser: 'مستخدم', editorZoom: 'تكبير', editorZoomIn: 'تكبير', previewPage: page => `الصفحة ${page}`, save: 'حفظ', scanCancelBack: 'العودة للتحرير', scanCancelConfirm: 'إلغاء التحميل', scanCancelMessage: 'إذا ألغيت، فلن يتم تحميل الملف وستفقد التغييرات. لا يمكن التراجع عن هذا الإجراء.', scanCancelTitle: 'إلغاء التحميل؟', scanFilesDisplayError: 'لا يمكن عرض الملف(ات)', scanFilesLoading: 'جار تحميل الملفات...', scanInvalidSession: 'الجلسة غير صالحة. يرجى إعادة بدء العملية.', scanSaveErrorBack: 'العودة للتحرير', scanSaveErrorMessage: 'حدث خطأ أثناء الحفظ. يمكنك المحاولة مرة أخرى أو العودة للتحرير.', scanSaveErrorRetry: 'إعادة المحاولة', scanSaveErrorTitle: 'خطأ أثناء الحفظ', scanSaving: 'جار إنشاء الملف(ات)', scanSessionLoading: 'جار تحميل جلسة edScan...', scanTitle: 'تحرير الصفحات بمساعدة الذكاء الاصطناعي', uploadDragAndDropDescription: 'يمكنك سحب الملف وإفلاته هنا أو اختياره باستخدام الزر.', uploadDragAndDropTitle: 'رفع ملف', uploadDropFile: 'إفلات الملف', uploadDropFiles: 'إفلات الملفات', uploadDuplicateFile: name => `${name} موجود بالفعل في القائمة`, uploadFailed: 'تعذر رفع الملف(ات)', uploadFileCountSummary: (count, size) => `${count} ملف · ${size}`, uploadFileTooLarge: (name, size) => `الملف ${name} كبير جدًا. الحد الأقصى ${size} MB`, uploadFileTypeNotAllowed: type => `نوع الملف غير مسموح: ${type}`, uploadLimitExceeded: size => `الملف تجاوز حد الرفع ${size} MB`, uploadLimitsExceeded: size => `الملفات تجاوزت حد الرفع ${size} MB`, uploadOr: 'أو', uploadPreviewFile: name => `معاينة: ${name}`, uploadProgress: 'جار رفع الملف(ات)...', uploadRemoveFile: name => `إزالة: ${name}`, uploadRetryFile: name => `إعادة المحاولة: ${name}`, uploadSelectFile: 'اختيار ملف', uploadSelectFiles: 'اختيار ملفات', uploadSuccess: (done, total) => `تم رفع ${done} من ${total} ملف`, uploadTitle: 'رفع ملف', uploadTooManyFiles: max => `يمكنك رفع ${max} ملف كحد أقصى`, valueMissing: 'يُرجى ملء هذا الحقل.', valueMissingCheckbox: 'يُرجى تحديد هذا المربع إذا كنت تريد المتابعة.', valueMissingRadio: 'يُرجى تحديد أحد هذه الخيارات.', valueMissingSelect: 'يُرجى تحديد عنصر من القائمة.', typeMismatchEmail: 'يُرجى إدخال عنوان بريد إلكتروني.', typeMismatchUrl: 'يُرجى إدخال عنوان URL.', patternMismatch: 'يُرجى مطابقة التنسيق المطلوب.', badInputNumber: 'يُرجى إدخال رقم.', rangeUnderflow: min => `يجب أن تكون القيمة أكبر من أو تساوي ${min}.`, rangeOverflow: max => `يجب أن تكون القيمة أصغر من أو تساوي ${max}.`, stepMismatch: (lower, upper) => `يُرجى إدخال قيمة صالحة. أقرب قيمتين صالحتين هما ${lower} و ${upper}.`, stepMismatchNearest: nearest => `يُرجى إدخال قيمة صالحة. أقرب قيمة صالحة هي ${nearest}.`, tooShort: (minimum, current) => `يُرجى إطالة هذا النص إلى ${minimum} حرفًا أو أكثر (تستخدم حاليًا ${current} حرفًا).`, $code: 'ar', $dir: 'rtl', $name: 'العربية' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/ar.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/cs.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'Tento obsah byl vygenerován umělou inteligencí', allTagsRemoved: 'Všechny štítky odebrány', appearance: 'Vzhled', appearanceClassic: 'Klasický', appearanceModern: 'Moderní', autosizeColumn: 'Přizpůsobit sloupec obsahu', back: 'Zpět', cancel: 'Zrušit', carousel: 'Karusel', chooseDate: 'Vyberte datum', chooseDateAndTime: 'Vyberte datum a čas', chooseTime: 'Vyberte čas', clearEntry: 'Smazat položku', clearFilter: 'Vymazat filtr', close: 'Zavřít', collapse: 'Sbalit', columnMenu: 'Možnosti sloupce', columnMovedToPosition: (label, position, total) => `${label}, Pozice ${position} z ${total}`, columns: 'Sloupce', completed: 'Dokončeno', copied: 'Zkopírováno', copy: 'Kopírovat', currentValue: 'Současná hodnota', dateInputBadInput: 'Zadejte platné datum.', dateInputRangeOverflow: 'Datum je příliš pozdní.', dateInputRangeUnderflow: 'Datum je příliš brzké.', dateInputValueMissing: 'Vyplňte toto pole.', dateNotSelectable: 'Toto datum nelze vybrat.', datePlaceholderDay: 'DD', datePlaceholderHalfyear: 'P', datePlaceholderMonth: 'MM', datePlaceholderQuarter: 'Č', datePlaceholderWeek: 'TT', datePlaceholderYear: 'RRRR', // Date input dateRangeEndBeforeStart: 'Konec období musí být po jeho začátku.', dateSegmentDay: 'Den', dateSegmentHalfyear: 'Pololetí', dateSegmentMonth: 'Měsíc', dateSegmentQuarter: 'Čtvrtletí', dateSegmentWeek: 'Týden', dateSegmentYear: 'Rok', datetimeInputBadInput: 'Zadejte platné datum a čas.', datetimeInputRangeOverflow: 'Datum a čas jsou příliš pozdní.', datetimeInputRangeUnderflow: 'Datum a čas jsou příliš brzké.', datetimeInputValueMissing: 'Vyplňte toto pole.', decrement: 'Snížit', density: 'Hustota', densityCompact: 'Kompaktní', densityDefault: 'Výchozí', densitySpacious: 'Prostorná', disabled: 'Zakázáno', dragToReorder: 'Přetažením změňte pořadí', dropFileHere: 'Přetáhněte soubor sem nebo klikněte pro výběr', dropFilesHere: 'Přetáhněte soubory sem nebo klikněte pro výběr', entriesPerPage: 'Záznamů na stránce', error: 'Chyba', expand: 'Rozbalit', filter: 'Filtrovat', filterByColumn: label => `Filtrovat ${label}`, filterFrom: 'Od', filterMax: 'Maximum', filterMin: 'Minimum', filterTo: 'Do', finish: 'Dokončit', from: 'z', goToSlide: (slide, count) => `Přejít na slide ${slide} z ${count}`, halfyear: 'Pololetí', hideColumn: 'Skrýt sloupec', hidePassword: 'Skrýt heslo', increment: 'Zvýšit', loadFailed: 'Řádky se nepodařilo načíst.', loading: 'Nahrává se', loadMoreFailed: 'Další řádky se nepodařilo načíst.', locked: 'Uzamčeno', mainMenu: 'Hlavní nabídka', maximumValue: label => (label ? `${label} (Maximální hodnota)` : 'Maximální hodnota'), minimumValue: label => (label ? `${label} (Minimální hodnota)` : 'Minimální hodnota'), month: 'Měsíc', more: 'Více', multipleValues: 'Více hodnot', newsMenu: 'Nabídka novinek', newsToggleMenu: 'Přepnout nabídku novinek', next: 'Další', nextPage: 'Další stránka', nextSlide: 'Další slide', noData: 'Žádná data', noDataDescription: 'Zatím zde nejsou žádné záznamy.', noOptions: 'Žádné možnosti', noResults: 'Žádné výsledky', noResultsDescription: 'Vyhledávání ani filtrům neodpovídá žádný záznam.', notCompleted: 'Nedokončeno', notificationsRegion: hotkey => `Oznámení, stiskněte ${hotkey} pro zaměření`, numCharacters: num => { if (num === 1) return '1 znak'; if (num >= 2 && num <= 4) return `${num} znaky`; return `${num} znaků`; }, numCharactersRemaining: num => { if (num === 1) return '1 zbývající znak'; if (num >= 2 && num <= 4) return `${num} zbývající znaky`; return `${num} zbývajících znaků`; }, numEntries: (num, format) => { if (num === 0) return 'Žádné záznamy'; if (num === 1) return `${formatCount(1, format)} záznam`; if (num >= 2 && num <= 4) return `${formatCount(num, format)} záznamy`; return `${formatCount(num, format)} záznamů`; }, numEntriesLoaded: (num, format) => { if (num === 0) return 'Žádné záznamy nebyly načteny'; if (num === 1) return `Načten ${formatCount(1, format)} záznam`; if (num >= 2 && num <= 4) return `Načteny ${formatCount(num, format)} záznamy`; return `Načteno ${formatCount(num, format)} záznamů`; }, numEntriesOfTotal: (shown, total, format) => total === 1 ? `${formatCount(shown, format)} z ${formatCount(1, format)} záznamu` : `${formatCount(shown, format)} z ${formatCount(total, format)} záznamů`, numOfTotalSelected: (num, total, format) => `Vybráno: ${formatCount(num, format)} z ${formatCount(total, format)}`, numOptionsAvailable: num => { if (num === 0) return 'Nejsou k dispozici žádné možnosti'; if (num === 1) return 'Je k dispozici jedna možnost'; return `Počet dostupných možností: ${num}`; }, numOptionsSelected: num => { if (num === 0) return 'Nejsou vybrány žádné možnosti'; if (num === 1) return 'Je vybrána jedna možnost'; return `Počet vybraných možností: ${num}`; }, numSelected: (num, format) => { if (num === 0) return 'Nic vybráno'; return `Vybráno: ${formatCount(num, format)}`; }, numTotal: num => `Celkem: ${num}`, ok: 'OK', onThisPage: 'Na této stránce', optionPosition: (label, position, total) => `${label}, ${position} z ${total}`, optionsLoadError: 'Možnosti se nepodařilo načíst', page: 'Stránka', pauseAnimation: 'Pozastavit animaci', pinToEnd: 'Připnout na konec', pinToStart: 'Připnout na začátek', playAnimation: 'Přehrát animaci', previousPage: 'Předchozí stránka', previousSlide: 'Předchozí slide', progress: 'Průběh', quarter: 'Čtvrtletí', rangeSelected: (start, end) => `Vybráno ${start} až ${end}`, // Calendar range selection rangeSelectingFrom: date => `Výběr rozsahu od ${date}…`, remove: 'Odstranit', reset: 'Resetovat', resetColumns: 'Obnovit sloupce', resetFilters: 'Zrušit všechny filtry', resize: 'Změnit velikost', resizeColumn: 'Změnit šířku sloupce', scrollableRegion: 'Posunovatelná oblast', scrollToEnd: 'Scrollovat na konec', scrollToStart: 'Scrollovat na začátek', search: 'Hledat', sectionPages: 'Stránky sekce', sections: 'Sekce', selectAColorFromTheScreen: 'Vybrat barvu z obrazovky', numRowsCopied: num => { if (num === 0) return 'Nebyly zkopírovány žádné řádky'; if (num === 1) return 'Zkopírován 1 řádek'; if (num >= 2 && num <= 4) return `Zkopírovány ${num} řádky`; return `Zkopírováno ${num} řádků`; }, numRowsSelected: num => { if (num === 0) return 'Nejsou vybrány žádné řádky'; if (num === 1) return 'Vybrán 1 řádek'; if (num >= 2 && num <= 4) return `Vybrány ${num} řádky`; return `Vybráno ${num} řádků`; }, rowLifted: (position, total) => `Řádek zvednut, pozice ${position} z ${total}. Šipkami nahoru a dolů přesunete, mezerníkem umístíte, klávesou Escape zrušíte.`, rowMoved: (position, total) => `Pozice ${position} z ${total}`, rowReorderCanceled: 'Přesun zrušen', selectAllEntries: 'Vybrat všechny položky', selectAllRows: 'Vybrat všechny řádky', selectDate: 'Vybrat datum', selectDateTime: 'Vybrat datum a čas', selectGroup: 'Vybrat skupinu', selectRow: 'Vybrat řádek', selectRowNamed: name => `Vybrat ${name}`, showingNofMRows: (shown, total) => `Zobrazené řádky: ${shown} z ${total}`, showingRangeOfMore: (first, last) => `${first}–${last} z více než ${last}`, showingRangeOfTotal: (first, last, total) => `${first}–${last} z ${total}`, sortAscending: 'Seřadit vzestupně', sortDescending: 'Seřadit sestupně', sortedByColumn: (column, direction) => `Seřazeno podle ${column}, ${direction === 'ascending' ? 'vzestupně' : 'sestupně'}`, sortingCleared: 'Řazení odebráno', // Date picker selectTime: 'Vybrat čas', showingPanelSpan: (first, last) => `Zobrazeno ${first} – ${last}`, showingSinglePanel: month => `Zobrazeno ${month}`, showLess: 'Zobrazit méně', showMore: 'Zobrazit více', showPassword: 'Zobrazit heslo', skipToContent: 'Přeskočit na obsah', slideNum: slide => `Slide ${slide}`, steps: 'Kroky', stepXOfY: (step, total) => `Krok ${step} z ${total}`, tagAdded: tag => `${tag} přidáno`, tagAlreadyAdded: tag => `Štítek ${tag} již existuje`, tagInputKeyboardHelp: 'Stisknutím Backspace nebo Delete tento štítek odeberete.', tagRemoved: tag => `${tag} odebráno`, timeInputBadInput: 'Zadejte platný čas.', timeInputRangeOverflow: 'Čas je příliš pozdní.', timeInputRangeUnderflow: 'Čas je příliš brzký.', timeInputValueMissing: 'Vyplňte toto pole.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'Část dne', timeSegmentHour: 'Hodina', timeSegmentMinute: 'Minuta', timeSegmentSecond: 'Sekunda', toggleColorFormat: 'Přepnout formát barvy', toggleNavigationDrawer: 'Přepnout navigační panel', tooFewTags: min => { if (min === 1) return 'Přidejte alespoň 1 štítek'; if (min >= 2 && min <= 4) return `Přidejte alespoň ${min} štítky`; return `Přidejte alespoň ${min} štítků`; }, tooManyTags: max => { if (max === 1) return 'Přidejte nejvýše 1 štítek'; if (max >= 2 && max <= 4) return `Přidejte nejvýše ${max} štítky`; return `Přidejte nejvýše ${max} štítků`; }, tryAgain: 'Zkusit znovu', unpinColumn: 'Odepnout sloupec', unread: 'Nepřečteno', unsort: 'Zrušit řazení', until: 'do', view: 'Zobrazení', weekInputRangeOverflow: 'Týden je příliš pozdní.', weekInputRangeUnderflow: 'Týden je příliš brzký.', weekInputValueMissing: 'Vyberte prosím týden.', weekLabel: week => `Týden ${week}`, year: 'Rok', zoomIn: 'Přiblížit', zoomOut: 'Oddálit', documentViewerCanvas: 'Dokument', documentViewerContinuous: 'Svislé posouvání', documentViewerFitHeight: 'Podle výšky', documentViewerFitWidth: 'Podle šířky', documentViewerLoadError: 'Stránku nelze načíst', documentViewerPages: 'Stránky', documentViewerRotateLeft: 'Otočit doleva', documentViewerRotateRight: 'Otočit doprava', documentViewerSinglePage: 'Posouvání po stránkách', documentViewerZoom: 'Přiblížení', editorAi: 'AI', editorAiSuggestions: 'AI návrhy', editorDelete: 'Smazat', editorHideDeletedPages: 'Skrýt smazané stránky', editorPage: page => `Strana ${page}`, editorRotate: 'Otočit o 90°', editorSelectAll: (selected, total) => `Vybrat vše (${selected} z ${total})`, editorSplit: 'Rozdělit', editorUser: 'Uživatel', editorZoom: 'Přiblížení', editorZoomIn: 'Přiblížit', previewPage: page => `Strana ${page}`, save: 'Uložit', scanCancelBack: 'Zpět k úpravám', scanCancelConfirm: 'Zrušit nahrávání', scanCancelMessage: 'Pokud zrušíte, soubor nebude nahrán a změny budou ztraceny. Tuto akci nelze vrátit zpět.', scanCancelTitle: 'Zrušit nahrávání?', scanFilesDisplayError: 'Soubor(y) nelze zobrazit', scanFilesLoading: 'Načítání souborů...', scanInvalidSession: 'Relace je neplatná. Restartujte proces.', scanSaveErrorBack: 'Zpět k úpravám', scanSaveErrorMessage: 'Při ukládání došlo k chybě. Můžete to zkusit znovu nebo se vrátit k úpravám.', scanSaveErrorRetry: 'Zkusit znovu', scanSaveErrorTitle: 'Chyba při ukládání', scanSaving: 'Vytváření souboru(ů)', scanSessionLoading: 'Načítání relace edScan...', scanTitle: 'Úprava stránek s pomocí AI', uploadDragAndDropDescription: 'Soubor můžete přetáhnout sem nebo jej vybrat pomocí tlačítka.', uploadDragAndDropTitle: 'Nahrát soubor', uploadDropFile: 'Přetáhněte soubor', uploadDropFiles: 'Přetáhněte soubory', uploadDuplicateFile: name => `${name} už je v seznamu`, uploadFailed: 'Soubor(y) nebylo možné úspěšně nahrát', uploadFileCountSummary: (count, size) => `${count} soubor(ů) · ${size}`, uploadFileTooLarge: (name, size) => `Soubor ${name} je příliš velký. Maximální velikost je ${size} MB.`, uploadFileTypeNotAllowed: type => `Typ souboru není povolen: ${type}`, uploadLimitExceeded: size => `Soubor překročil limit nahrávání ${size} MB`, uploadLimitsExceeded: size => `Soubory překročily limit nahrávání ${size} MB`, uploadOr: 'nebo', uploadPreviewFile: name => `Náhled: ${name}`, uploadProgress: 'Soubor(y) se nahrávají...', uploadRemoveFile: name => `Odebrat: ${name}`, uploadRetryFile: name => `Zkusit znovu: ${name}`, uploadSelectFile: 'Vybrat soubor', uploadSelectFiles: 'Vybrat soubory', uploadSuccess: (done, total) => `${done} z ${total} souborů nahráno`, uploadTitle: 'Nahrát soubor', uploadTooManyFiles: max => `Můžete nahrát nejvýše ${max} soubor(ů)`, valueMissing: 'Vyplňte prosím toto pole.', valueMissingCheckbox: 'Chcete-li pokračovat, zaškrtněte toto políčko.', valueMissingRadio: 'Vyberte prosím jednu z těchto možností.', valueMissingSelect: 'Vyberte prosím položku ze seznamu.', typeMismatchEmail: 'Zadejte prosím e-mailovou adresu.', typeMismatchUrl: 'Zadejte prosím adresu URL.', patternMismatch: 'Dodržte prosím požadovaný formát.', badInputNumber: 'Zadejte prosím číslo.', rangeUnderflow: min => `Hodnota musí být větší nebo rovna ${min}.`, rangeOverflow: max => `Hodnota musí být menší nebo rovna ${max}.`, stepMismatch: (lower, upper) => `Zadejte prosím platnou hodnotu. Dvě nejbližší platné hodnoty jsou ${lower} a ${upper}.`, stepMismatchNearest: nearest => `Zadejte prosím platnou hodnotu. Nejbližší platná hodnota je ${nearest}.`, tooShort: (minimum, current) => `Prodlužte prosím tento text na ${minimum} znaků nebo více (aktuálně používáte ${current} znaků).`, $code: 'cs', $dir: 'ltr', $name: 'Čeština' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/cs.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/da.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'Dette indhold er genereret af AI', allTagsRemoved: 'Alle tags fjernet', appearance: 'Udseende', appearanceClassic: 'Klassisk', appearanceModern: 'Moderne', autosizeColumn: 'Tilpas kolonne til indhold', back: 'Tilbage', cancel: 'Annuller', carousel: 'Karrusel', chooseDate: 'Vælg en dato', chooseDateAndTime: 'Vælg en dato og et tidspunkt', chooseTime: 'Vælg et tidspunkt', clearEntry: 'Ryd indtastning', clearFilter: 'Ryd filter', close: 'Luk', collapse: 'Skjul', columnMenu: 'Kolonneindstillinger', columnMovedToPosition: (label, position, total) => `${label}, Position ${position} af ${total}`, columns: 'Kolonner', completed: 'Fuldført', copied: 'Kopieret', copy: 'Kopier', currentValue: 'Nuværende værdi', dateInputBadInput: 'Indtast en gyldig dato.', dateInputRangeOverflow: 'Datoen er for sen.', dateInputRangeUnderflow: 'Datoen er for tidlig.', dateInputValueMissing: 'Udfyld dette felt.', dateNotSelectable: 'Denne dato kan ikke vælges.', datePlaceholderDay: 'dd', datePlaceholderHalfyear: 'h', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 'k', datePlaceholderWeek: 'uu', datePlaceholderYear: 'åååå', // Date input dateRangeEndBeforeStart: 'Slutningen af perioden skal ligge efter begyndelsen.', dateSegmentDay: 'Dag', dateSegmentHalfyear: 'Halvår', dateSegmentMonth: 'Måned', dateSegmentQuarter: 'Kvartal', dateSegmentWeek: 'Uge', dateSegmentYear: 'År', datetimeInputBadInput: 'Indtast en gyldig dato og et gyldigt tidspunkt.', datetimeInputRangeOverflow: 'Dato og tidspunkt er for sent.', datetimeInputRangeUnderflow: 'Dato og tidspunkt er for tidligt.', datetimeInputValueMissing: 'Udfyld dette felt.', decrement: 'Formindsk', density: 'Tæthed', densityCompact: 'Kompakt', densityDefault: 'Standard', densitySpacious: 'Luftig', disabled: 'Deaktiveret', dragToReorder: 'Træk for at omarrangere', dropFileHere: 'Slip filen her, eller klik for at vælge', dropFilesHere: 'Slip filerne her, eller klik for at vælge', entriesPerPage: 'Poster pr. side', error: 'Fejl', expand: 'Vis', filter: 'Filtrér', filterByColumn: label => `Filtrér ${label}`, filterFrom: 'Fra', filterMax: 'Maksimum', filterMin: 'Minimum', filterTo: 'Til', finish: 'Afslut', from: 'af', goToSlide: (slide, count) => `Gå til dias ${slide} af ${count}`, halfyear: 'Halvår', hideColumn: 'Skjul kolonne', hidePassword: 'Skjul adgangskode', increment: 'Forøg', loadFailed: 'Rækkerne kunne ikke indlæses.', loading: 'Indlæser', loadMoreFailed: 'Flere rækker kunne ikke indlæses.', locked: 'Låst', mainMenu: 'Hovedmenu', maximumValue: label => (label ? `${label} (Maksimumsværdi)` : 'Maksimumsværdi'), minimumValue: label => (label ? `${label} (Minimumsværdi)` : 'Minimumsværdi'), month: 'Måned', more: 'Mere', multipleValues: 'Flere værdier', newsMenu: 'Nyhedsmenu', newsToggleMenu: 'Skift nyhedsmenu', next: 'Næste', nextPage: 'Næste side', nextSlide: 'Næste slide', noData: 'Ingen data', noDataDescription: 'Der er endnu ingen poster at vise.', noOptions: 'Ingen valgmuligheder', noResults: 'Ingen resultater', noResultsDescription: 'Ingen poster matcher søgningen eller filtrene.', notCompleted: 'Ikke fuldført', notificationsRegion: hotkey => `Notifikationer, tryk ${hotkey} for at fokusere`, numCharacters: num => { if (num === 1) return '1 tegn'; return `${num} tegn`; }, numCharactersRemaining: num => { if (num === 1) return '1 tegn tilbage'; return `${num} tegn tilbage`; }, numEntries: (num: number, format?: (value: number) => string) => { if (num === 0) return 'Ingen poster'; if (num === 1) return `${formatCount(1, format)} post`; return `${formatCount(num, format)} poster`; }, numEntriesLoaded: (num: number, format?: (value: number) => string) => { if (num === 0) return 'Ingen poster indlæst'; if (num === 1) return `${formatCount(1, format)} post indlæst`; return `${formatCount(num, format)} poster indlæst`; }, numEntriesOfTotal: (shown: number, total: number, format?: (value: number) => string) => total === 1 ? `${formatCount(shown, format)} af ${formatCount(1, format)} post` : `${formatCount(shown, format)} af ${formatCount(total, format)} poster`, numOfTotalSelected: (num, total, format) => `${formatCount(num, format)} af ${formatCount(total, format)} valgt`, numOptionsAvailable: (num: number) => { if (num === 0) return 'Ingen tilgængelige'; if (num === 1) return '1 tilgængelig'; return `${num} tilgængelige`; }, numOptionsSelected: (num: number) => { if (num === 0) return 'Ingen valgt'; if (num === 1) return '1 valgt'; return `${num} valgt`; }, numSelected: (num: number, format?: (value: number) => string) => { if (num === 0) return 'Ingen valgt'; return `${formatCount(num, format)} valgt`; }, numTotal: (num: number) => `${num} i alt`, ok: 'OK', onThisPage: 'På denne side', optionPosition: (label, position, total) => `${label}, ${position} af ${total}`, optionsLoadError: 'Valgmulighederne kunne ikke indlæses', page: 'Side', pauseAnimation: 'Sæt animation på pause', pinToEnd: 'Fastgør i slutningen', pinToStart: 'Fastgør i starten', playAnimation: 'Afspil animation', previousPage: 'Forrige side', previousSlide: 'Forrige dias', progress: 'Status', quarter: 'Kvartal', rangeSelected: (start, end) => `${start} til ${end} valgt`, // Calendar range selection rangeSelectingFrom: date => `Vælger interval fra ${date}…`, remove: 'Fjern', reset: 'Nulstil', resetColumns: 'Nulstil kolonner', resetFilters: 'Nulstil alle filtre', resize: 'Tilpas størrelse', resizeColumn: 'Tilpas kolonnebredde', scrollableRegion: 'Rullebar region', scrollToEnd: 'Scroll til slut', scrollToStart: 'Scroll til start', search: 'Søg', sectionPages: 'Sektionens sider', sections: 'Sektioner', selectAColorFromTheScreen: 'Vælg en farve fra skærmen', numRowsCopied: num => { if (num === 0) return 'Ingen rækker kopieret'; if (num === 1) return '1 række kopieret'; return `${num} rækker kopieret`; }, numRowsSelected: num => { if (num === 0) return 'Ingen rækker valgt'; if (num === 1) return '1 række valgt'; return `${num} rækker valgt`; }, rowLifted: (position, total) => `Række løftet, position ${position} af ${total}. Brug pil op og pil ned for at flytte, mellemrum for at placere, Escape for at annullere.`, rowMoved: (position, total) => `Position ${position} af ${total}`, rowReorderCanceled: 'Flytning annulleret', selectAllEntries: 'Vælg alle poster', selectAllRows: 'Vælg alle rækker', selectDate: 'Vælg dato', selectDateTime: 'Vælg dato og tidspunkt', selectGroup: 'Vælg gruppe', selectRow: 'Vælg række', selectRowNamed: name => `Vælg ${name}`, showingNofMRows: (shown, total) => `Viste rækker: ${shown} af ${total}`, showingRangeOfMore: (first, last) => `${first}–${last} af mere end ${last}`, showingRangeOfTotal: (first, last, total) => `${first}–${last} af ${total}`, sortAscending: 'Sortér stigende', sortDescending: 'Sortér faldende', sortedByColumn: (column, direction) => `Sorteret efter ${column}, ${direction === 'ascending' ? 'stigende' : 'faldende'}`, sortingCleared: 'Sortering fjernet', // Date picker selectTime: 'Vælg tidspunkt', showingPanelSpan: (first, last) => `Viser ${first} – ${last}`, showingSinglePanel: month => `Viser ${month}`, showLess: 'Vis mindre', showMore: 'Vis mere', showPassword: 'Vis adgangskode', skipToContent: 'Gå til indhold', slideNum: slide => `Slide ${slide}`, steps: 'Trin', stepXOfY: (step, total) => `Trin ${step} af ${total}`, tagAdded: tag => `${tag} tilføjet`, tagAlreadyAdded: tag => `${tag} er allerede tilføjet`, tagInputKeyboardHelp: 'Tryk på Backspace eller Delete for at fjerne dette tag.', tagRemoved: tag => `${tag} fjernet`, timeInputBadInput: 'Indtast et gyldigt tidspunkt.', timeInputRangeOverflow: 'Tidspunktet er for sent.', timeInputRangeUnderflow: 'Tidspunktet er for tidligt.', timeInputValueMissing: 'Udfyld dette felt.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'AM/PM', timeSegmentHour: 'Time', timeSegmentMinute: 'Minut', timeSegmentSecond: 'Sekund', toggleColorFormat: 'Skift farveformat', toggleNavigationDrawer: 'Skift navigationspanel', tooFewTags: min => (min === 1 ? 'Tilføj mindst 1 tag' : `Tilføj mindst ${min} tags`), tooManyTags: max => (max === 1 ? 'Tilføj højst 1 tag' : `Tilføj højst ${max} tags`), tryAgain: 'Prøv igen', unpinColumn: 'Frigør kolonne', unread: 'Ulæst', unsort: 'Fjern sortering', until: 'til', view: 'Visning', weekInputRangeOverflow: 'Ugen er for sen.', weekInputRangeUnderflow: 'Ugen er for tidlig.', weekInputValueMissing: 'Vælg en uge.', weekLabel: week => `Uge ${week}`, year: 'År', zoomIn: 'Zoom ind', zoomOut: 'Zoom ud', documentViewerCanvas: 'Dokument', documentViewerContinuous: 'Vertikal scrolling', documentViewerFitHeight: 'Sidehøjde', documentViewerFitWidth: 'Sidebredde', documentViewerLoadError: 'Siden kunne ikke indlæses', documentViewerPages: 'Sider', documentViewerRotateLeft: 'Roter mod venstre', documentViewerRotateRight: 'Roter mod højre', documentViewerSinglePage: 'Sidescrolling', documentViewerZoom: 'Zoom', editorAi: 'AI', editorAiSuggestions: 'AI-forslag', editorDelete: 'Slet', editorHideDeletedPages: 'Skjul slettede sider', editorPage: page => `Side ${page}`, editorRotate: 'Roter 90°', editorSelectAll: (selected, total) => `Vælg alle (${selected} af ${total})`, editorSplit: 'Opdel', editorUser: 'Bruger', editorZoom: 'Zoom', editorZoomIn: 'Zoom ind', previewPage: page => `Side ${page}`, save: 'Gem', scanCancelBack: 'Tilbage til redigering', scanCancelConfirm: 'Annuller upload', scanCancelMessage: 'Hvis du annullerer, bliver filen ikke uploadet, og ændringer går tabt. Handlingen kan ikke fortrydes.', scanCancelTitle: 'Annuller upload?', scanFilesDisplayError: 'Filen/filerne kan ikke vises', scanFilesLoading: 'Indlæser filer...', scanInvalidSession: 'Sessionen er ugyldig. Genstart processen.', scanSaveErrorBack: 'Tilbage til redigering', scanSaveErrorMessage: 'Der opstod en fejl under lagring. Du kan prøve igen eller vende tilbage til redigering.', scanSaveErrorRetry: 'Prøv igen', scanSaveErrorTitle: 'Fejl under lagring', scanSaving: 'Opretter fil(er)', scanSessionLoading: 'Indlæser edScan-session...', scanTitle: 'AI-assisteret sidebehandling', uploadDragAndDropDescription: 'Du kan trække og slippe en fil her eller vælge en med knappen.', uploadDragAndDropTitle: 'Upload fil', uploadDropFile: 'Slip fil', uploadDropFiles: 'Slip filer', uploadDuplicateFile: name => `${name} er allerede på listen`, uploadFailed: 'Fil(er) kunne ikke uploades', uploadFileCountSummary: (count, size) => `${count} fil(er) · ${size}`, uploadFileTooLarge: (name, size) => `Filen ${name} er for stor. Maksimal størrelse er ${size} MB.`, uploadFileTypeNotAllowed: type => `Filtypen er ikke tilladt: ${type}`, uploadLimitExceeded: size => `Filen overskrider uploadgrænsen på ${size} MB`, uploadLimitsExceeded: size => `Filerne overskrider uploadgrænsen på ${size} MB`, uploadOr: 'eller', uploadPreviewFile: name => `Forhåndsvisning: ${name}`, uploadProgress: 'Fil(er) uploades...', uploadRemoveFile: name => `Fjern: ${name}`, uploadRetryFile: name => `Prøv igen: ${name}`, uploadSelectFile: 'Vælg fil', uploadSelectFiles: 'Vælg filer', uploadSuccess: (done, total) => `${done} af ${total} fil(er) uploadet`, uploadTitle: 'Upload fil', uploadTooManyFiles: max => `Du kan højst uploade ${max} fil(er)`, valueMissing: 'Udfyld dette felt.', valueMissingCheckbox: 'Markér dette felt, hvis du vil fortsætte.', valueMissingRadio: 'Vælg en af disse muligheder.', valueMissingSelect: 'Vælg et element på listen.', typeMismatchEmail: 'Indtast en e-mailadresse.', typeMismatchUrl: 'Indtast en URL.', patternMismatch: 'Overhold det ønskede format.', badInputNumber: 'Indtast et tal.', rangeUnderflow: min => `Værdien skal være større end eller lig med ${min}.`, rangeOverflow: max => `Værdien skal være mindre end eller lig med ${max}.`, stepMismatch: (lower, upper) => `Indtast en gyldig værdi. De to nærmeste gyldige værdier er ${lower} og ${upper}.`, stepMismatchNearest: nearest => `Indtast en gyldig værdi. Den nærmeste gyldige værdi er ${nearest}.`, tooShort: (minimum, current) => `Forlæng denne tekst til ${minimum} tegn eller mere (du bruger i øjeblikket ${current} tegn).`, $code: 'da', $dir: 'ltr', $name: 'Dansk' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/da.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/de.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'Dieser Inhalt wurde von KI generiert', allTagsRemoved: 'Alle Schlagwörter entfernt', appearance: 'Darstellung', appearanceClassic: 'Klassisch', appearanceModern: 'Modern', autosizeColumn: 'Spalte an Inhalt anpassen', back: 'Zurück', cancel: 'Abbrechen', carousel: 'Karussell', chooseDate: 'Datum auswählen', chooseDateAndTime: 'Datum und Uhrzeit auswählen', chooseTime: 'Uhrzeit auswählen', clearEntry: 'Eingabe löschen', clearFilter: 'Filter löschen', close: 'Schließen', collapse: 'Einklappen', columnMenu: 'Spaltenoptionen', columnMovedToPosition: (label, position, total) => `${label}, Position ${position} von ${total}`, columns: 'Spalten', completed: 'Abgeschlossen', copied: 'Kopiert', copy: 'Kopieren', currentValue: 'Aktueller Wert', dateInputBadInput: 'Bitte erfassen Sie ein gültiges Datum.', dateInputRangeOverflow: 'Das Datum ist zu spät.', dateInputRangeUnderflow: 'Das Datum ist zu früh.', dateInputValueMissing: 'Bitte füllen Sie dieses Feld aus.', dateNotSelectable: 'Dieses Datum ist nicht auswählbar.', datePlaceholderDay: 'TT', datePlaceholderHalfyear: 'H', datePlaceholderMonth: 'MM', datePlaceholderQuarter: 'Q', datePlaceholderWeek: 'WW', datePlaceholderYear: 'JJJJ', // Date input dateRangeEndBeforeStart: 'Das Ende des Zeitraums muss nach seinem Beginn liegen.', dateSegmentDay: 'Tag', dateSegmentHalfyear: 'Halbjahr', dateSegmentMonth: 'Monat', dateSegmentQuarter: 'Quartal', dateSegmentWeek: 'Woche', dateSegmentYear: 'Jahr', datetimeInputBadInput: 'Bitte erfassen Sie ein gültiges Datum und eine gültige Uhrzeit.', datetimeInputRangeOverflow: 'Datum und Uhrzeit ist zu spät.', datetimeInputRangeUnderflow: 'Datum und Uhrzeit ist zu früh.', datetimeInputValueMissing: 'Bitte füllen Sie dieses Feld aus.', decrement: 'Verringern', density: 'Dichte', densityCompact: 'Kompakt', densityDefault: 'Standard', densitySpacious: 'Großzügig', disabled: 'Deaktiviert', dragToReorder: 'Zum Neuanordnen ziehen', dropFileHere: 'Datei hier ablegen oder zum Durchsuchen klicken', dropFilesHere: 'Dateien hier ablegen oder zum Durchsuchen klicken', entriesPerPage: 'Einträge pro Seite', error: 'Fehler', expand: 'Ausklappen', filter: 'Filtern', filterByColumn: label => `${label} filtern`, filterFrom: 'Von', filterMax: 'Maximum', filterMin: 'Minimum', filterTo: 'Bis', finish: 'Fertig', from: 'von', goToSlide: (slide, count) => `Zu Folie ${slide} von ${count} gehen`, halfyear: 'Halbjahr', hideColumn: 'Spalte ausblenden', hidePassword: 'Passwort verbergen', increment: 'Erhöhen', loadFailed: 'Die Zeilen konnten nicht geladen werden.', loading: 'Wird geladen', loadMoreFailed: 'Weitere Zeilen konnten nicht geladen werden.', locked: 'Gesperrt', mainMenu: 'Hauptmenü', maximumValue: label => (label ? `${label} (Maximalwert)` : 'Maximalwert'), minimumValue: label => (label ? `${label} (Minimalwert)` : 'Minimalwert'), month: 'Monat', more: 'Mehr', multipleValues: 'Mehrere Werte', newsMenu: 'News-Menü', newsToggleMenu: 'News-Menü umschalten', next: 'Weiter', nextPage: 'Nächste Seite', nextSlide: 'Nächste Folie', noData: 'Keine Daten', noDataDescription: 'Es gibt noch keine Einträge.', noOptions: 'Keine Optionen', noResults: 'Keine Treffer', noResultsDescription: 'Kein Eintrag passt zur Suche oder zu den Filtern.', notCompleted: 'Nicht abgeschlossen', notificationsRegion: hotkey => `Benachrichtigungen, ${hotkey} drücken zum Fokussieren`, numCharacters: num => { if (num === 1) return '1 Zeichen'; return `${num} Zeichen`; }, numCharactersRemaining: num => { if (num === 1) return '1 Zeichen verbleibend'; return `${num} Zeichen verbleibend`; }, numEntries: (num, format) => { if (num === 0) return 'Keine Einträge'; if (num === 1) return `${formatCount(1, format)} Eintrag`; return `${formatCount(num, format)} Einträge`; }, numEntriesLoaded: (num, format) => { if (num === 0) return 'Keine Einträge geladen'; if (num === 1) return `${formatCount(1, format)} Eintrag geladen`; return `${formatCount(num, format)} Einträge geladen`; }, numEntriesOfTotal: (shown, total, format) => total === 1 ? `${formatCount(shown, format)} von ${formatCount(1, format)} Eintrag` : `${formatCount(shown, format)} von ${formatCount(total, format)} Einträgen`, numOfTotalSelected: (num, total, format) => `${formatCount(num, format)} von ${formatCount(total, format)} ausgewählt`, numOptionsAvailable: num => { if (num === 0) return 'Keine Optionen verfügbar'; if (num === 1) return '1 Option verfügbar'; return `${num} Optionen verfügbar`; }, numOptionsSelected: num => { if (num === 0) return 'Keine Optionen ausgewählt'; if (num === 1) return '1 Option ausgewählt'; return `${num} Optionen ausgewählt`; }, numSelected: (num, format) => { if (num === 0) return 'Keine ausgewählt'; return `${formatCount(num, format)} ausgewählt`; }, numTotal: num => `${num} insgesamt`, ok: 'OK', onThisPage: 'Auf dieser Seite', optionPosition: (label, position, total) => `${label}, ${position} von ${total}`, optionsLoadError: 'Optionen konnten nicht geladen werden', page: 'Seite', pauseAnimation: 'Animation pausieren', pinToEnd: 'Am Ende anheften', pinToStart: 'Am Anfang anheften', playAnimation: 'Animation abspielen', previousPage: 'Vorherige Seite', previousSlide: 'Vorherige Folie', progress: 'Fortschritt', quarter: 'Quartal', rangeSelected: (start, end) => `${start} bis ${end} ausgewählt`, // Calendar range selection rangeSelectingFrom: date => `Bereich ab ${date} wird ausgewählt…`, remove: 'Entfernen', reset: 'Zurücksetzen', resetColumns: 'Spalten zurücksetzen', resetFilters: 'Alle Filter zurücksetzen', resize: 'Größe ändern', resizeColumn: 'Spaltenbreite ändern', scrollableRegion: 'Scrollbarer Bereich', scrollToEnd: 'Zum Ende scrollen', scrollToStart: 'Zum Anfang scrollen', search: 'Suchen', sectionPages: 'Seiten des Bereichs', sections: 'Bereiche', selectAColorFromTheScreen: 'Farbe vom Bildschirm auswählen', numRowsCopied: num => { if (num === 0) return 'Keine Zeilen kopiert'; if (num === 1) return '1 Zeile kopiert'; return `${num} Zeilen kopiert`; }, numRowsSelected: num => { if (num === 0) return 'Keine Zeilen ausgewählt'; if (num === 1) return '1 Zeile ausgewählt'; return `${num} Zeilen ausgewählt`; }, rowLifted: (position, total) => `Zeile angehoben, Position ${position} von ${total}. Pfeiltasten verschieben, Leertaste legt ab, Escape bricht ab.`, rowMoved: (position, total) => `Position ${position} von ${total}`, rowReorderCanceled: 'Verschieben abgebrochen', selectAllEntries: 'Alle Einträge auswählen', selectAllRows: 'Alle Zeilen auswählen', selectDate: 'Datum auswählen', selectDateTime: 'Datum und Uhrzeit auswählen', selectGroup: 'Gruppe auswählen', selectRow: 'Zeile auswählen', selectRowNamed: name => `${name} auswählen`, showingNofMRows: (shown, total) => `${shown} von ${total} ${total === 1 ? 'Zeile' : 'Zeilen'} angezeigt`, showingRangeOfMore: (first, last) => `${first}–${last} von mehr als ${last}`, showingRangeOfTotal: (first, last, total) => `${first}–${last} von ${total}`, sortAscending: 'Aufsteigend sortieren', sortDescending: 'Absteigend sortieren', sortedByColumn: (column, direction) => `Sortiert nach ${column}, ${direction === 'ascending' ? 'aufsteigend' : 'absteigend'}`, sortingCleared: 'Sortierung entfernt', // Date picker selectTime: 'Uhrzeit auswählen', showingPanelSpan: (first, last) => `Zeigt ${first} – ${last}`, showingSinglePanel: month => `Zeigt ${month}`, showLess: 'Weniger anzeigen', showMore: 'Mehr anzeigen', showPassword: 'Passwort anzeigen', skipToContent: 'Zum Inhalt springen', slideNum: slide => `Folie ${slide}`, steps: 'Schritte', stepXOfY: (step, total) => `Schritt ${step} von ${total}`, tagAdded: tag => `${tag} hinzugefügt`, tagAlreadyAdded: tag => `${tag} ist bereits vorhanden`, tagInputKeyboardHelp: 'Drücken Sie die Rücktaste oder Entf, um dieses Schlagwort zu entfernen.', tagRemoved: tag => `${tag} entfernt`, timeInputBadInput: 'Bitte erfassen Sie eine gültige Uhrzeit.', timeInputRangeOverflow: 'Uhrzeit ist zu spät.', timeInputRangeUnderflow: 'Uhrzeit ist zu früh.', timeInputValueMissing: 'Bitte füllen Sie dieses Feld aus.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'Tageshälfte', timeSegmentHour: 'Stunde', timeSegmentMinute: 'Minute', timeSegmentSecond: 'Sekunde', toggleColorFormat: 'Farbformat wechseln', toggleNavigationDrawer: 'Navigationsleiste umschalten', tooFewTags: min => min === 1 ? 'Fügen Sie mindestens 1 Schlagwort hinzu' : `Fügen Sie mindestens ${min} Schlagwörter hinzu`, tooManyTags: max => max === 1 ? 'Fügen Sie höchstens 1 Schlagwort hinzu' : `Fügen Sie höchstens ${max} Schlagwörter hinzu`, tryAgain: 'Erneut versuchen', unpinColumn: 'Spalte lösen', unread: 'Ungelesen', unsort: 'Sortierung aufheben', until: 'bis', view: 'Ansicht', weekInputRangeOverflow: 'Die Woche ist zu spät.', weekInputRangeUnderflow: 'Die Woche ist zu früh.', weekInputValueMissing: 'Bitte wählen Sie eine Woche aus.', // Calendar week mode weekLabel: week => `KW ${week}`, year: 'Jahr', zoomIn: 'Hineinzoomen', zoomOut: 'Herauszoomen', documentViewerCanvas: 'Dokument', documentViewerContinuous: 'Fortlaufend', documentViewerFitHeight: 'An Höhe anpassen', documentViewerFitWidth: 'An Breite anpassen', documentViewerLoadError: 'Seite konnte nicht geladen werden', documentViewerPages: 'Seiten', documentViewerRotateLeft: 'Nach links drehen', documentViewerRotateRight: 'Nach rechts drehen', documentViewerSinglePage: 'Einzelseite', documentViewerZoom: 'Zoom', editorAi: 'KI', editorAiSuggestions: 'KI-Vorschläge', editorDelete: 'Löschen', editorHideDeletedPages: 'Gelöschte Seiten ausblenden', editorPage: page => `Seite ${page}`, editorRotate: '90° drehen', editorSelectAll: (selected, total) => `Alle auswählen (${selected} von ${total})`, editorSplit: 'Teilen', editorUser: 'Benutzer', editorZoom: 'Zoom', editorZoomIn: 'Vergrößern', previewPage: page => `Seite ${page}`, save: 'Speichern', scanCancelBack: 'Zurück zur Bearbeitung', scanCancelConfirm: 'Upload abbrechen', scanCancelMessage: 'Wenn Sie abbrechen, wird die Datei nicht hochgeladen und Änderungen gehen verloren. Diese Aktion kann nicht rückgängig gemacht werden.', scanCancelTitle: 'Upload abbrechen?', scanFilesDisplayError: 'Die Datei(en) können nicht angezeigt werden', scanFilesLoading: 'Dateien werden geladen...', scanInvalidSession: 'Die Sitzung ist ungültig. Bitte starten Sie den Vorgang erneut.', scanSaveErrorBack: 'Zurück zur Bearbeitung', scanSaveErrorMessage: 'Beim Speichern ist ein Fehler aufgetreten. Sie können es erneut versuchen oder zur Bearbeitung zurückkehren.', scanSaveErrorRetry: 'Erneut versuchen', scanSaveErrorTitle: 'Fehler beim Speichern', scanSaving: 'Datei(en) werden erstellt', scanSessionLoading: 'edScan-Sitzung wird geladen...', scanTitle: 'KI-gestützte Seitenbearbeitung', uploadDragAndDropDescription: 'Sie können eine Datei hierher ziehen oder über die Schaltfläche auswählen.', uploadDragAndDropTitle: 'Datei hochladen', uploadDropFile: 'Datei ablegen', uploadDropFiles: 'Dateien ablegen', uploadDuplicateFile: name => `${name} ist bereits in der Liste`, uploadFailed: 'Datei(en) konnten nicht erfolgreich hochgeladen werden', uploadFileCountSummary: (count, size) => `${count} Datei(en) · ${size}`, uploadFileTooLarge: (name, size) => `Datei ${name} ist zu groß. Maximale Größe: ${size} MB.`, uploadFileTypeNotAllowed: type => `Dateityp ist nicht erlaubt: ${type}`, uploadLimitExceeded: size => `Die Datei überschreitet das Upload-Limit von ${size} MB`, uploadLimitsExceeded: size => `Die Dateien überschreiten das Upload-Limit von ${size} MB`, uploadOr: 'oder', uploadPreviewFile: name => `Vorschau: ${name}`, uploadProgress: 'Datei(en) werden hochgeladen...', uploadRemoveFile: name => `Entfernen: ${name}`, uploadRetryFile: name => `Erneut versuchen: ${name}`, uploadSelectFile: 'Datei auswählen', uploadSelectFiles: 'Dateien auswählen', uploadSuccess: (done, total) => `${done} von ${total} Datei(en) hochgeladen`, uploadTitle: 'Datei hochladen', uploadTooManyFiles: max => `Es können höchstens ${max} Datei(en) hochgeladen werden`, valueMissing: 'Bitte füllen Sie dieses Feld aus.', valueMissingCheckbox: 'Bitte aktivieren Sie dieses Kontrollkästchen, wenn Sie fortfahren möchten.', valueMissingRadio: 'Bitte wählen Sie eine dieser Optionen aus.', valueMissingSelect: 'Bitte wählen Sie einen Eintrag aus der Liste aus.', typeMismatchEmail: 'Bitte geben Sie eine E-Mail-Adresse ein.', typeMismatchUrl: 'Bitte geben Sie eine URL ein.', patternMismatch: 'Bitte halten Sie sich an das vorgegebene Format.', badInputNumber: 'Bitte geben Sie eine Zahl ein.', rangeUnderflow: min => `Der Wert muss größer oder gleich ${min} sein.`, rangeOverflow: max => `Der Wert muss kleiner oder gleich ${max} sein.`, stepMismatch: (lower, upper) => `Bitte geben Sie einen gültigen Wert ein. Die beiden nächstgelegenen gültigen Werte sind ${lower} und ${upper}.`, stepMismatchNearest: nearest => `Bitte geben Sie einen gültigen Wert ein. Der nächstgelegene gültige Wert ist ${nearest}.`, tooShort: (minimum, current) => `Bitte verlängern Sie diesen Text auf mindestens ${minimum} Zeichen (Sie verwenden derzeit ${current} Zeichen).`, $code: 'de', $dir: 'ltr', $name: 'Deutsch' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/de.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/de-ch.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ ...baseTranslation, close: 'Schliessen', resize: 'Grösse ändern', valueMissing: 'Bitte füllen Sie dieses Feld aus.', valueMissingCheckbox: 'Bitte aktivieren Sie dieses Kontrollkästchen, wenn Sie fortfahren möchten.', valueMissingRadio: 'Bitte wählen Sie eine dieser Optionen aus.', valueMissingSelect: 'Bitte wählen Sie einen Eintrag aus der Liste aus.', typeMismatchEmail: 'Bitte geben Sie eine E-Mail-Adresse ein.', typeMismatchUrl: 'Bitte geben Sie eine URL ein.', patternMismatch: 'Bitte halten Sie sich an das vorgegebene Format.', badInputNumber: 'Bitte geben Sie eine Zahl ein.', rangeUnderflow: min => `Der Wert muss grösser oder gleich ${min} sein.`, rangeOverflow: max => `Der Wert muss kleiner oder gleich ${max} sein.`, stepMismatch: (lower, upper) => `Bitte geben Sie einen gültigen Wert ein. Die beiden nächstgelegenen gültigen Werte sind ${lower} und ${upper}.`, stepMismatchNearest: nearest => `Bitte geben Sie einen gültigen Wert ein. Der nächstgelegene gültige Wert ist ${nearest}.`, tooShort: (minimum, current) => `Bitte verlängern Sie diesen Text auf mindestens ${minimum} Zeichen (Sie verwenden derzeit ${current} Zeichen).`, $code: 'de-CH', $name: 'Deutsch (Schweiz)' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/de-ch.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/en-gb.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ ...baseTranslation, selectAColorFromTheScreen: 'Select a colour from the screen', toggleColorFormat: 'Toggle colour format', valueMissing: 'Please fill out this field.', valueMissingCheckbox: 'Please tick this box if you want to proceed.', valueMissingRadio: 'Please select one of these options.', valueMissingSelect: 'Please select an item in the list.', typeMismatchEmail: 'Please enter an email address.', typeMismatchUrl: 'Please enter a URL.', patternMismatch: 'Please match the requested format.', badInputNumber: 'Please enter a number.', rangeUnderflow: min => `Value must be greater than or equal to ${min}.`, rangeOverflow: max => `Value must be less than or equal to ${max}.`, stepMismatch: (lower, upper) => `Please enter a valid value. The two nearest valid values are ${lower} and ${upper}.`, stepMismatchNearest: nearest => `Please enter a valid value. The nearest valid value is ${nearest}.`, tooShort: (minimum, current) => `Please lengthen this text to ${minimum} characters or more (you are currently using ${current} characters).`, $code: 'en-GB', $name: 'English (United Kingdom)' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/en-gb.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/es.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'Este contenido fue generado por IA', allTagsRemoved: 'Se eliminaron todas las etiquetas', appearance: 'Apariencia', appearanceClassic: 'Clásica', appearanceModern: 'Moderna', autosizeColumn: 'Ajustar columna al contenido', back: 'Atrás', cancel: 'Cancelar', carousel: 'Carrusel', chooseDate: 'Elegir una fecha', chooseDateAndTime: 'Elegir fecha y hora', chooseTime: 'Elegir una hora', clearEntry: 'Borrar entrada', clearFilter: 'Borrar filtro', close: 'Cerrar', collapse: 'Contraer', columnMenu: 'Opciones de columna', columnMovedToPosition: (label, position, total) => `${label}, Posición ${position} de ${total}`, columns: 'Columnas', completed: 'Completado', copied: 'Copiado', copy: 'Copiar', currentValue: 'Valor actual', dateInputBadInput: 'Introduzca una fecha válida.', dateInputRangeOverflow: 'La fecha es demasiado tardía.', dateInputRangeUnderflow: 'La fecha es demasiado temprana.', dateInputValueMissing: 'Rellene este campo.', dateNotSelectable: 'Esta fecha no se puede seleccionar.', datePlaceholderDay: 'dd', datePlaceholderHalfyear: 's', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 't', datePlaceholderWeek: 'ss', datePlaceholderYear: 'aaaa', // Date input dateRangeEndBeforeStart: 'El final del periodo debe ser posterior a su inicio.', dateSegmentDay: 'Día', dateSegmentHalfyear: 'Semestre', dateSegmentMonth: 'Mes', dateSegmentQuarter: 'Trimestre', dateSegmentWeek: 'Semana', dateSegmentYear: 'Año', datetimeInputBadInput: 'Introduzca una fecha y una hora válidas.', datetimeInputRangeOverflow: 'La fecha y la hora son demasiado tardías.', datetimeInputRangeUnderflow: 'La fecha y la hora son demasiado tempranas.', datetimeInputValueMissing: 'Rellene este campo.', decrement: 'Disminuir', density: 'Densidad', densityCompact: 'Compacta', densityDefault: 'Predeterminada', densitySpacious: 'Amplia', disabled: 'Deshabilitado', dragToReorder: 'Arrastrar para reordenar', dropFileHere: 'Arrastre el archivo aquí o haga clic para buscarlo.', dropFilesHere: 'Arrastre los archivos aquí o haga clic para buscarlos.', entriesPerPage: 'Entradas por página', error: 'Error', expand: 'Expandir', filter: 'Filtrar', filterByColumn: label => `Filtrar ${label}`, filterFrom: 'Desde', filterMax: 'Máximo', filterMin: 'Mínimo', filterTo: 'Hasta', finish: 'Finalizar', from: 'de', goToSlide: (slide, count) => `Ir a la diapositiva ${slide} de ${count}`, halfyear: 'Semestre', hideColumn: 'Ocultar columna', hidePassword: 'Ocultar contraseña', increment: 'Aumentar', loadFailed: 'No se pudieron cargar las filas.', loading: 'Cargando', loadMoreFailed: 'No se pudieron cargar más filas.', locked: 'Bloqueado', mainMenu: 'Menú principal', maximumValue: label => (label ? `${label} (Valor máximo)` : 'Valor máximo'), minimumValue: label => (label ? `${label} (Valor mínimo)` : 'Valor mínimo'), month: 'Mes', more: 'Más', multipleValues: 'Múltiples valores', newsMenu: 'Menú de noticias', newsToggleMenu: 'Alternar menú de noticias', next: 'Siguiente', nextPage: 'Página siguiente', nextSlide: 'Siguiente diapositiva', noData: 'Sin datos', noDataDescription: 'Todavía no hay entradas que mostrar.', noOptions: 'Sin opciones', noResults: 'Sin resultados', noResultsDescription: 'Ninguna entrada coincide con la búsqueda o los filtros.', notCompleted: 'No completado', notificationsRegion: hotkey => `Notificaciones, pulse ${hotkey} para enfocar`, numCharacters: num => { if (num === 1) return '1 carácter'; return `${num} caracteres`; }, numCharactersRemaining: num => { if (num === 1) return '1 carácter restante'; return `${num} caracteres restantes`; }, numEntries: (num, format) => { if (num === 0) return 'Sin entradas'; if (num === 1) return `${formatCount(1, format)} entrada`; return `${formatCount(num, format)} entradas`; }, numEntriesLoaded: (num, format) => { if (num === 0) return 'No se cargaron entradas'; if (num === 1) return `${formatCount(1, format)} entrada cargada`; return `${formatCount(num, format)} entradas cargadas`; }, numEntriesOfTotal: (shown, total, format) => total === 1 ? `${formatCount(shown, format)} de ${formatCount(1, format)} entrada` : `${formatCount(shown, format)} de ${formatCount(total, format)} entradas`, numOfTotalSelected: (num, total, format) => `${formatCount(num, format)} de ${formatCount(total, format)} seleccionadas`, numOptionsAvailable: num => { if (num === 0) return 'No hay opciones disponibles'; if (num === 1) return '1 opción disponible'; return `${num} opciones disponibles`; }, numOptionsSelected: num => { if (num === 0) return 'No hay opciones seleccionadas'; if (num === 1) return '1 opción seleccionada'; return `${num} opciones seleccionadas`; }, numSelected: (num, format) => { if (num === 0) return 'Ninguna seleccionada'; if (num === 1) return `${formatCount(1, format)} seleccionada`; return `${formatCount(num, format)} seleccionadas`; }, numTotal: num => `${num} en total`, ok: 'OK', onThisPage: 'En esta página', optionPosition: (label, position, total) => `${label}, ${position} de ${total}`, optionsLoadError: 'No se pudieron cargar las opciones', page: 'Página', pauseAnimation: 'Pausar animación', pinToEnd: 'Fijar al final', pinToStart: 'Fijar al principio', playAnimation: 'Reproducir animación', previousPage: 'Página anterior', previousSlide: 'Diapositiva anterior', progress: 'Progreso', quarter: 'Trimestre', rangeSelected: (start, end) => `${start} a ${end} seleccionados`, // Calendar range selection rangeSelectingFrom: date => `Seleccionando intervalo desde ${date}…`, remove: 'Eliminar', reset: 'Restablecer', resetColumns: 'Restablecer columnas', resetFilters: 'Restablecer todos los filtros', resize: 'Cambiar el tamaño', resizeColumn: 'Cambiar el ancho de la columna', scrollableRegion: 'Región desplazable', scrollToEnd: 'Desplazarse hasta el final', scrollToStart: 'Desplazarse al inicio', search: 'Buscar', sectionPages: 'Páginas de la sección', sections: 'Secciones', selectAColorFromTheScreen: 'Seleccione un color de la pantalla', numRowsCopied: num => { if (num === 0) return 'Ninguna fila copiada'; if (num === 1) return '1 fila copiada'; return `${num} filas copiadas`; }, numRowsSelected: num => { if (num === 0) return 'Ninguna fila seleccionada'; if (num === 1) return '1 fila seleccionada'; return `${num} filas seleccionadas`; }, rowLifted: (position, total) => `Fila levantada, posición ${position} de ${total}. Use las flechas arriba y abajo para mover, Espacio para soltar, Escape para cancelar.`, rowMoved: (position, total) => `Posición ${position} de ${total}`, rowReorderCanceled: 'Reordenación cancelada', selectAllEntries: 'Seleccionar todas las entradas', selectAllRows: 'Seleccionar todas las filas', selectDate: 'Seleccionar fecha', selectDateTime: 'Seleccionar fecha y hora', selectGroup: 'Seleccionar grupo', selectRow: 'Seleccionar fila', selectRowNamed: name => `Seleccionar ${name}`, showingNofMRows: (shown, total) => `Filas mostradas: ${shown} de ${total}`, showingRangeOfMore: (first, last) => `${first}–${last} de más de ${last}`, showingRangeOfTotal: (first, last, total) => `${first}–${last} de ${total}`, sortAscending: 'Orden ascendente', sortDescending: 'Orden descendente', sortedByColumn: (column, direction) => `Ordenado por ${column}, ${direction === 'ascending' ? 'ascendente' : 'descendente'}`, sortingCleared: 'Orden eliminado', // Date picker selectTime: 'Seleccionar hora', showingPanelSpan: (first, last) => `Mostrando ${first} – ${last}`, showingSinglePanel: month => `Mostrando ${month}`, showLess: 'Mostrar menos', showMore: 'Mostrar más', showPassword: 'Mostrar contraseña', skipToContent: 'Saltar al contenido', slideNum: slide => `Diapositiva ${slide}`, steps: 'Pasos', stepXOfY: (step, total) => `Paso ${step} de ${total}`, tagAdded: tag => `Se añadió ${tag}`, tagAlreadyAdded: tag => `${tag} ya existe`, tagInputKeyboardHelp: 'Pulse Retroceso o Suprimir para eliminar esta etiqueta.', tagRemoved: tag => `Se eliminó ${tag}`, timeInputBadInput: 'Introduzca una hora válida.', timeInputRangeOverflow: 'La hora es demasiado tardía.', timeInputRangeUnderflow: 'La hora es demasiado temprana.', timeInputValueMissing: 'Rellene este campo.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'a. m./p. m.', timeSegmentHour: 'Hora', timeSegmentMinute: 'Minuto', timeSegmentSecond: 'Segundo', toggleColorFormat: 'Alternar formato de color', toggleNavigationDrawer: 'Alternar panel de navegación', tooFewTags: min => (min === 1 ? 'Añada al menos 1 etiqueta' : `Añada al menos ${min} etiquetas`), tooManyTags: max => (max === 1 ? 'Añada como máximo 1 etiqueta' : `Añada como máximo ${max} etiquetas`), tryAgain: 'Intentar nuevamente', unpinColumn: 'Desfijar columna', unread: 'No leído', unsort: 'Quitar orden', until: 'hasta', view: 'Vista', weekInputRangeOverflow: 'La semana es demasiado tardía.', weekInputRangeUnderflow: 'La semana es demasiado temprana.', weekInputValueMissing: 'Seleccione una semana.', weekLabel: week => `Semana ${week}`, year: 'Año', zoomIn: 'Acercar', zoomOut: 'Alejar', documentViewerCanvas: 'Documento', documentViewerContinuous: 'Desplazamiento vertical', documentViewerFitHeight: 'Altura de la página', documentViewerFitWidth: 'Anchura de la página', documentViewerLoadError: 'No se pudo cargar la página', documentViewerPages: 'Páginas', documentViewerRotateLeft: 'Rotar a la izquierda', documentViewerRotateRight: 'Rotar a la derecha', documentViewerSinglePage: 'Desplazamiento de página', documentViewerZoom: 'Zoom', editorAi: 'IA', editorAiSuggestions: 'Sugerencias de IA', editorDelete: 'Eliminar', editorHideDeletedPages: 'Ocultar páginas eliminadas', editorPage: page => `Página ${page}`, editorRotate: 'Rotar 90°', editorSelectAll: (selected, total) => `Seleccionar todo (${selected} de ${total})`, editorSplit: 'Dividir', editorUser: 'Usuario', editorZoom: 'Zoom', editorZoomIn: 'Ampliar', previewPage: page => `Página ${page}`, save: 'Guardar', scanCancelBack: 'Volver a la edición', scanCancelConfirm: 'Cancelar carga', scanCancelMessage: 'Si cancela, el archivo no se cargará y los cambios se perderán. Esta acción no se puede deshacer.', scanCancelTitle: '¿Cancelar carga?', scanFilesDisplayError: 'No se pueden mostrar los archivos', scanFilesLoading: 'Cargando archivos...', scanInvalidSession: 'La sesión no es válida. Reinicie el proceso.', scanSaveErrorBack: 'Volver a la edición', scanSaveErrorMessage: 'Ocurrió un error al guardar. Puede intentarlo nuevamente o volver a la edición.', scanSaveErrorRetry: 'Intentar nuevamente', scanSaveErrorTitle: 'Error al guardar', scanSaving: 'Creando archivo(s)', scanSessionLoading: 'Cargando sesión de edScan...', scanTitle: 'Edición de páginas asistida por IA', uploadDragAndDropDescription: 'Puede arrastrar y soltar un archivo aquí o seleccionarlo con el botón.', uploadDragAndDropTitle: 'Subir archivo', uploadDropFile: 'Suelte el archivo', uploadDropFiles: 'Suelte los archivos', uploadDuplicateFile: name => `${name} ya está en la lista`, uploadFailed: 'No se pudieron cargar correctamente los archivos', uploadFileCountSummary: (count, size) => `${count} archivo(s) · ${size}`, uploadFileTooLarge: (name, size) => `El archivo ${name} es demasiado grande. El tamaño máximo es ${size} MB.`, uploadFileTypeNotAllowed: type => `El tipo de archivo no está permitido: ${type}`, uploadLimitExceeded: size => `El archivo supera el límite de carga de ${size} MB`, uploadLimitsExceeded: size => `Los archivos superan el límite de carga de ${size} MB`, uploadOr: 'o', uploadPreviewFile: name => `Vista previa: ${name}`, uploadProgress: 'Subiendo archivo(s)...', uploadRemoveFile: name => `Eliminar: ${name}`, uploadRetryFile: name => `Intentar nuevamente: ${name}`, uploadSelectFile: 'Seleccionar archivo', uploadSelectFiles: 'Seleccionar archivos', uploadSuccess: (done, total) => `${done} de ${total} archivo(s) cargados`, uploadTitle: 'Subir archivo', uploadTooManyFiles: max => `Puede subir como máximo ${max} archivo(s)`, valueMissing: 'Por favor, rellene este campo.', valueMissingCheckbox: 'Marque esta casilla si desea continuar.', valueMissingRadio: 'Seleccione una de estas opciones.', valueMissingSelect: 'Seleccione un elemento de la lista.', typeMismatchEmail: 'Introduzca una dirección de correo electrónico.', typeMismatchUrl: 'Introduzca una URL.', patternMismatch: 'Utilice el formato solicitado.', badInputNumber: 'Introduzca un número.', rangeUnderflow: min => `El valor debe ser mayor o igual que ${min}.`, rangeOverflow: max => `El valor debe ser menor o igual que ${max}.`, stepMismatch: (lower, upper) => `Introduzca un valor válido. Los dos valores válidos más cercanos son ${lower} y ${upper}.`, stepMismatchNearest: nearest => `Introduzca un valor válido. El valor válido más cercano es ${nearest}.`, tooShort: (minimum, current) => `Alargue este texto a ${minimum} caracteres o más (actualmente utiliza ${current} caracteres).`, $code: 'es', $dir: 'ltr', $name: 'Español' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/es.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/fa.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'این محتوا توسط هوش مصنوعی تولید شده است', allTagsRemoved: 'همه برچسب‌ها حذف شدند', appearance: 'ظاهر', appearanceClassic: 'کلاسیک', appearanceModern: 'مدرن', autosizeColumn: 'تنظیم ستون با محتوا', back: 'بازشت', cancel: 'لغو', carousel: 'چرخ‌فلک', chooseDate: 'انتخاب تاریخ', chooseDateAndTime: 'انتخاب تاریخ و زمان', chooseTime: 'انتخاب زمان', clearEntry: 'پاک کردن ورودی', clearFilter: 'پاک کردن فیلتر', close: 'بستن', collapse: 'جمع کردن', columnMenu: 'گزینه‌های ستون', columnMovedToPosition: (label, position, total) => `${label}، موقعیت ${position} از ${total}`, columns: 'ستون‌ها', completed: 'تکمیل شده', copied: 'کپی شد', copy: 'کپی', currentValue: 'مقدار فعلی', dateInputBadInput: 'لطفاً یک تاریخ معتبر وارد کنید.', dateInputRangeOverflow: 'تاریخ خیلی دیر است.', dateInputRangeUnderflow: 'تاریخ خیلی زود است.', dateInputValueMissing: 'لطفاً این فیلد را پر کنید.', dateNotSelectable: 'این تاریخ قابل انتخاب نیست.', datePlaceholderDay: 'dd', datePlaceholderHalfyear: 'ش', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 'س', datePlaceholderWeek: 'هه', datePlaceholderYear: 'yyyy', // Date input dateRangeEndBeforeStart: 'پایان دوره باید بعد از شروع آن باشد.', dateSegmentDay: 'روز', dateSegmentHalfyear: 'شش‌ماهه', dateSegmentMonth: 'ماه', dateSegmentQuarter: 'سه‌ماهه', dateSegmentWeek: 'هفته', dateSegmentYear: 'سال', datetimeInputBadInput: 'لطفاً تاریخ و زمان معتبر وارد کنید.', datetimeInputRangeOverflow: 'تاریخ و زمان خیلی دیر است.', datetimeInputRangeUnderflow: 'تاریخ و زمان خیلی زود است.', datetimeInputValueMissing: 'لطفاً این فیلد را پر کنید.', decrement: 'کاهش', density: 'تراکم', densityCompact: 'فشرده', densityDefault: 'پیش‌فرض', densitySpacious: 'جادار', disabled: 'غیرفعال', dragToReorder: 'برای مرتب‌سازی مجدد بکشید', dropFileHere: 'فایل را اینجا رها کنید یا برای انتخاب کلیک کنید', dropFilesHere: 'فایل‌ها را اینجا رها کنید یا برای انتخاب کلیک کنید', entriesPerPage: 'تعداد ورودی‌های هر صفحه', error: 'خطا', expand: 'گسترش دادن', filter: 'فیلتر', filterByColumn: label => `فیلتر ${label}`, filterFrom: 'از', filterMax: 'حداکثر', filterMin: 'حداقل', filterTo: 'تا', finish: 'ایان', from: 'از', goToSlide: (slide, count) => `رفتن به اسلاید ${slide} از ${count}`, halfyear: 'نیم‌سال', hideColumn: 'پنهان کردن ستون', hidePassword: 'پنهان کردن رمز', increment: 'افزایش', loadFailed: 'بارگیری ردیف ها ممکن نشد.', loading: 'بارگذاری', loadMoreFailed: 'بارگیری ردیف های بیشتر ممکن نشد.', locked: 'قفل شده', mainMenu: 'منوی اصلی', maximumValue: label => (label ? `${label} (حداکثر مقدار)` : 'حداکثر مقدار'), minimumValue: label => (label ? `${label} (حداقل مقدار)` : 'حداقل مقدار'), month: 'ماه', more: 'بیشتر', multipleValues: 'چندین مقدار', newsMenu: 'منوی اخبار', newsToggleMenu: 'تغییر منوی اخبار', next: 'بعدی', nextPage: 'صفحه بعدی', nextSlide: 'اسلاید بعدی', noData: 'بدون داده', noDataDescription: 'هنوز موردی برای نمایش وجود ندارد.', noOptions: 'گزینه‌ای وجود ندارد', noResults: 'نتیجه‌ای یافت نشد', noResultsDescription: 'هیچ موردی با جستجو یا فیلترها مطابقت ندارد.', notCompleted: 'تکمیل نشده', notificationsRegion: hotkey => `اعلان‌ها، برای تمرکز ${hotkey} را فشار دهید`, numCharacters: num => { if (num === 1) return '1 نویسه'; return `${num} نویسه`; }, numCharactersRemaining: num => { if (num === 1) return '1 نویسه باقیمانده'; return `${num} نویسه باقیمانده`; }, numEntries: (num, format) => { if (num === 0) return 'بدون ورودی'; return `${formatCount(num, format)} ورودی`; }, numEntriesLoaded: (num, format) => { if (num === 0) return 'هیچ ورودی‌ای بارگیری نشد'; if (num === 1) return `${formatCount(1, format)} ورودی بارگیری شد`; return `${formatCount(num, format)} ورودی بارگیری شد`; }, numEntriesOfTotal: (shown, total, format) => `${formatCount(shown, format)} از ${formatCount(total, format)} ورودی`, numOfTotalSelected: (num, total, format) => `${formatCount(num, format)} از ${formatCount(total, format)} انتخاب شده`, numOptionsAvailable: num => { if (num === 0) return 'هیچ گزینه‌ای موجود نیست'; if (num === 1) return '1 گزینه موجود است'; return `${num} گزینه موجود است`; }, numOptionsSelected: num => { if (num === 0) return 'هیچ گزینه ای انتخاب نشده است'; if (num === 1) return '1 گزینه انتخاب شده است'; return `${num} گزینه انتخاب شده است`; }, numSelected: (num, format) => { if (num === 0) return 'هیچ‌کدام انتخاب نشده'; return `${formatCount(num, format)} انتخاب شده`; }, numTotal: num => `${num} در کل`, ok: 'OK', onThisPage: 'در این صفحه', optionPosition: (label, position, total) => `${label}، ${position} از ${total}`, optionsLoadError: 'گزینه‌ها بارگذاری نشدند', page: 'صفحه', pauseAnimation: 'مکث انیمیشن', pinToEnd: 'سنجاق به انتها', pinToStart: 'سنجاق به ابتدا', playAnimation: 'پخش انیمیشن', previousPage: 'صفحه قبلی', previousSlide: 'اسلاید قبلی', progress: 'پیشرفت', quarter: 'سه‌ماهه', rangeSelected: (start, end) => `از ${start} تا ${end} انتخاب شد`, // Calendar range selection rangeSelectingFrom: date => `در حال انتخاب بازه از ${date}…`, remove: 'حذف', reset: 'بازنشانی', resetColumns: 'بازنشانی ستون‌ها', resetFilters: 'بازنشانی همه فیلترها', resize: 'تغییر اندازه', resizeColumn: 'تغییر اندازه ستون', scrollableRegion: 'ناحیه قابل اسکرول', scrollToEnd: 'پیمایش به انتها', scrollToStart: 'پیمایش به ابتدا', search: 'جستجو', sectionPages: 'صفحات بخش', sections: 'بخش‌ها', selectAColorFromTheScreen: 'انتخاب یک رنگ از صفحه نمایش', numRowsCopied: num => { if (num === 0) return 'هیچ ردیفی کپی نشد'; return `${num} ردیف کپی شد`; }, numRowsSelected: num => { if (num === 0) return 'هیچ ردیفی انتخاب نشده است'; return `${num} ردیف انتخاب شد`; }, rowLifted: (position, total) => `ردیف برداشته شد، موقعیت ${position} از ${total}. با کلیدهای جهت بالا و پایین جابه\\u200cجا کنید، با کلید فاصله رها کنید و با Escape لغو کنید.`, rowMoved: (position, total) => `موقعیت ${position} از ${total}`, rowReorderCanceled: 'جابه\\u200cجایی لغو شد', selectAllEntries: 'انتخاب همه موارد', selectAllRows: 'انتخاب همه ردیف‌ها', selectDate: 'انتخاب تاریخ', selectDateTime: 'انتخاب تاریخ و زمان', selectGroup: 'انتخاب گروه', selectRow: 'انتخاب ردیف', selectRowNamed: name => `انتخاب ${name}`, showingNofMRows: (shown, total) => `نمایش ${shown} از ${total} ردیف`, showingRangeOfMore: (first, last) => `${first}–${last} از بیشتر از ${last}`, showingRangeOfTotal: (first, last, total) => `${first}–${last} از ${total}`, sortAscending: 'مرتب‌سازی صعودی', sortDescending: 'مرتب‌سازی نزولی', sortedByColumn: (column, direction) => `مرتب‌سازی بر اساس ${column}، ${direction === 'ascending' ? 'صعودی' : 'نزولی'}`, sortingCleared: 'مرتب‌سازی حذف شد', // Date picker selectTime: 'انتخاب زمان', showingPanelSpan: (first, last) => `نمایش ${first} – ${last}`, showingSinglePanel: month => `نمایش ${month}`, showLess: 'نمایش کمتر', showMore: 'نمایش بیشتر', showPassword: 'نمایش رمز', skipToContent: 'پرش به محتوا', slideNum: slide => `اسلاید ${slide}`, steps: 'مراحل', stepXOfY: (step, total) => `مرحله ${step} از ${total}`, tagAdded: tag => `${tag} افزوده شد`, tagAlreadyAdded: tag => `${tag} قبلاً افزوده شده است`, tagInputKeyboardHelp: 'برای حذف این برچسب، Backspace یا Delete را فشار دهید.', tagRemoved: tag => `${tag} حذف شد`, timeInputBadInput: 'لطفاً یک زمان معتبر وارد کنید.', timeInputRangeOverflow: 'زمان خیلی دیر است.', timeInputRangeUnderflow: 'زمان خیلی زود است.', timeInputValueMissing: 'لطفاً این فیلد را پر کنید.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'ق.ظ/ب.ظ', timeSegmentHour: 'ساعت', timeSegmentMinute: 'دقیقه', timeSegmentSecond: 'ثانیه', toggleColorFormat: 'تغییر قالب رنگ', toggleNavigationDrawer: 'تغییر کشوی پیمایش', tooFewTags: min => `حداقل ${min} برچسب اضافه کنید`, tooManyTags: max => `بیش از ${max} برچسب اضافه نکنید`, tryAgain: 'تلاش دوباره', unpinColumn: 'برداشتن سنجاق ستون', unread: 'خوانده‌نشده', unsort: 'حذف مرتب‌سازی', until: 'تا', view: 'نما', weekInputRangeOverflow: 'هفته خیلی دیر است.', weekInputRangeUnderflow: 'هفته خیلی زود است.', weekInputValueMissing: 'لطفاً یک هفته را انتخاب کنید.', weekLabel: week => `هفته ${week}`, year: 'سال', zoomIn: 'بزرگ‌نمایی', zoomOut: 'کوچک‌نمایی', documentViewerCanvas: 'سند', documentViewerContinuous: 'پیمایش عمودی', documentViewerFitHeight: 'ارتفاع صفحه', documentViewerFitWidth: 'عرض صفحه', documentViewerLoadError: 'صفحه بارگذاری نشد', documentViewerPages: 'صفحات', documentViewerRotateLeft: 'چرخش به چپ', documentViewerRotateRight: 'چرخش به راست', documentViewerSinglePage: 'پیمایش صفحه‌ای', documentViewerZoom: 'بزرگ‌نمایی', editorAi: 'هوش مصنوعی', editorAiSuggestions: 'پیشنهادهای هوش مصنوعی', editorDelete: 'حذف', editorHideDeletedPages: 'مخفی کردن صفحات حذف‌شده', editorPage: page => `صفحه ${page}`, editorRotate: 'چرخش ۹۰°', editorSelectAll: (selected, total) => `انتخاب همه (${selected} از ${total})`, editorSplit: 'تقسیم', editorUser: 'کاربر', editorZoom: 'بزرگ‌نمایی', editorZoomIn: 'بزرگ‌نمایی', previewPage: page => `صفحه ${page}`, save: 'ذخیره', scanCancelBack: 'بازگشت به ویرایش', scanCancelConfirm: 'لغو بارگذاری', scanCancelMessage: 'اگر لغو کنید، فایل بارگذاری نمی‌شود و تغییرات از بین می‌رود. این عمل قابل بازگشت نیست.', scanCancelTitle: 'لغو بارگذاری؟', scanFilesDisplayError: 'نمایش فایل(ها) امکان‌پذیر نیست', scanFilesLoading: 'در حال بارگذاری فایل‌ها...', scanInvalidSession: 'نشست معتبر نیست. لطفاً فرایند را دوباره شروع کنید.', scanSaveErrorBack: 'بازگشت به ویرایش', scanSaveErrorMessage: 'هنگام ذخیره خطایی رخ داد. می‌توانید دوباره تلاش کنید یا به ویرایش برگردید.', scanSaveErrorRetry: 'تلاش دوباره', scanSaveErrorTitle: 'خطا هنگام ذخیره', scanSaving: 'در حال ایجاد فایل(ها)', scanSessionLoading: 'در حال بارگذاری نشست edScan...', scanTitle: 'ویرایش صفحه با کمک هوش مصنوعی', uploadDragAndDropDescription: 'می‌توانید فایل را اینجا بکشید و رها کنید یا با دکمه انتخاب نمایید.', uploadDragAndDropTitle: 'بارگذاری فایل', uploadDropFile: 'فایل را رها کنید', uploadDropFiles: 'فایل‌ها را رها کنید', uploadDuplicateFile: name => `${name} از قبل در فهرست وجود دارد`, uploadFailed: 'بارگذاری فایل(ها) با موفقیت انجام نشد', uploadFileCountSummary: (count, size) => `${count} فایل · ${size}`, uploadFileTooLarge: (name, size) => `فایل ${name} خیلی بزرگ است. حداکثر اندازه ${size} مگابایت است.`, uploadFileTypeNotAllowed: type => `نوع فایل مجاز نیست: ${type}`, uploadLimitExceeded: size => `فایل از محدودیت بارگذاری ${size} مگابایت بیشتر است`, uploadLimitsExceeded: size => `فایل‌ها از محدودیت بارگذاری ${size} مگابایت بیشتر هستند`, uploadOr: 'یا', uploadPreviewFile: name => `پیش‌نمایش: ${name}`, uploadProgress: 'در حال بارگذاری فایل(ها)...', uploadRemoveFile: name => `حذف: ${name}`, uploadRetryFile: name => `تلاش دوباره: ${name}`, uploadSelectFile: 'انتخاب فایل', uploadSelectFiles: 'انتخاب فایل‌ها', uploadSuccess: (done, total) => `${done} از ${total} فایل بارگذاری شد`, uploadTitle: 'بارگذاری فایل', uploadTooManyFiles: max => `حداکثر می‌توانید ${max} فایل بارگذاری کنید`, valueMissing: 'لطفاً این فیلد را پر کنید.', valueMissingCheckbox: 'اگر می‌خواهید ادامه دهید، این کادر را علامت بزنید.', valueMissingRadio: 'لطفاً یکی از این گزینه‌ها را انتخاب کنید.', valueMissingSelect: 'لطفاً موردی را از فهرست انتخاب کنید.', typeMismatchEmail: 'لطفاً یک نشانی ایمیل وارد کنید.', typeMismatchUrl: 'لطفاً یک نشانی اینترنتی وارد کنید.', patternMismatch: 'لطفاً قالب خواسته‌شده را رعایت کنید.', badInputNumber: 'لطفاً یک عدد وارد کنید.', rangeUnderflow: min => `مقدار باید بزرگ‌تر یا مساوی ${min} باشد.`, rangeOverflow: max => `مقدار باید کوچک‌تر یا مساوی ${max} باشد.`, stepMismatch: (lower, upper) => `لطفاً مقدار معتبری وارد کنید. دو مقدار معتبر نزدیک ${lower} و ${upper} هستند.`, stepMismatchNearest: nearest => `لطفاً مقدار معتبری وارد کنید. نزدیک‌ترین مقدار معتبر ${nearest} است.`, tooShort: (minimum, current) => `لطفاً این متن را به ${minimum} نویسه یا بیشتر افزایش دهید (اکنون ${current} نویسه است).`, $code: 'fa', $dir: 'rtl', $name: 'فارسی' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/fa.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/fi.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'Tämä sisältö on tekoälyn luomaa', allTagsRemoved: 'Kaikki tunnisteet poistettu', appearance: 'Ulkoasu', appearanceClassic: 'Perinteinen', appearanceModern: 'Moderni', autosizeColumn: 'Sovita sarake sisältöön', back: 'Takaisin', cancel: 'Peruuta', carousel: 'Karuselli', chooseDate: 'Valitse päivämäärä', chooseDateAndTime: 'Valitse päivämäärä ja kellonaika', chooseTime: 'Valitse kellonaika', clearEntry: 'Poista merkintä', clearFilter: 'Tyhjennä suodatin', close: 'Sulje', collapse: 'Supista', columnMenu: 'Sarakkeen asetukset', columnMovedToPosition: (label, position, total) => `${label}, Sijainti ${position} / ${total}`, columns: 'Sarakkeet', completed: 'Valmis', copied: 'Kopioitu', copy: 'Kopioi', currentValue: 'Nykyinen arvo', dateInputBadInput: 'Anna kelvollinen päivämäärä.', dateInputRangeOverflow: 'Päivämäärä on liian myöhäinen.', dateInputRangeUnderflow: 'Päivämäärä on liian aikainen.', dateInputValueMissing: 'Täytä tämä kenttä.', dateNotSelectable: 'Tätä päivämäärää ei voi valita.', datePlaceholderDay: 'pp', datePlaceholderHalfyear: 'p', datePlaceholderMonth: 'kk', datePlaceholderQuarter: 'v', datePlaceholderWeek: 'vv', datePlaceholderYear: 'vvvv', // Date input dateRangeEndBeforeStart: 'Jakson lopun on oltava sen alun jälkeen.', dateSegmentDay: 'Päivä', dateSegmentHalfyear: 'Puolivuosi', dateSegmentMonth: 'Kuukausi', dateSegmentQuarter: 'Vuosineljännes', dateSegmentWeek: 'Viikko', dateSegmentYear: 'Vuosi', datetimeInputBadInput: 'Anna kelvollinen päivämäärä ja kellonaika.', datetimeInputRangeOverflow: 'Päivämäärä ja kellonaika ovat liian myöhäisiä.', datetimeInputRangeUnderflow: 'Päivämäärä ja kellonaika ovat liian aikaisia.', datetimeInputValueMissing: 'Täytä tämä kenttä.', decrement: 'Vähennä', density: 'Tiheys', densityCompact: 'Tiivis', densityDefault: 'Oletus', densitySpacious: 'Väljä', disabled: 'Poistettu käytöstä', dragToReorder: 'Järjestä vetämällä', dropFileHere: 'Raahaa tiedosto tähän tai selaa tiedostoja', dropFilesHere: 'Raahaa tiedostot tähän tai selaa tiedostoja', entriesPerPage: 'Merkintöjä per sivu', error: 'Virhe', expand: 'Laajenna', filter: 'Suodata', filterByColumn: label => `Suodata ${label}`, filterFrom: 'Alkaen', filterMax: 'Enintään', filterMin: 'Vähintään', filterTo: 'Asti', finish: 'Valmis', from: '/', goToSlide: (slide, count) => `Siirry diaan ${slide} / ${count}`, halfyear: 'Vuosipuolisko', hideColumn: 'Piilota sarake', hidePassword: 'Piilota salasana', increment: 'Lisää', loadFailed: 'Rivejä ei voitu ladata.', loading: 'Ladataan', loadMoreFailed: 'Lisää rivejä ei voitu ladata.', locked: 'Lukittu', mainMenu: 'Päävalikko', maximumValue: label => (label ? `${label} (Enimmäisarvo)` : 'Enimmäisarvo'), minimumValue: label => (label ? `${label} (Vähimmäisarvo)` : 'Vähimmäisarvo'), month: 'Kuukausi', more: 'Lisää', multipleValues: 'Useita arvoja', newsMenu: 'Uutisvalikko', newsToggleMenu: 'Vaihda uutisvalikko', next: 'Seuraava', nextPage: 'Seuraava sivu', nextSlide: 'Seuraava dia', noData: 'Ei tietoja', noDataDescription: 'Näytettäviä merkintöjä ei ole vielä.', noOptions: 'Ei vaihtoehtoja', noResults: 'Ei tuloksia', noResultsDescription: 'Mikään merkintä ei vastaa hakua tai suodattimia.', notCompleted: 'Ei valmis', notificationsRegion: hotkey => `Ilmoitukset, paina ${hotkey} kohdistukseen`, numCharacters: num => { if (num === 1) return '1 merkki'; return `${num} merkkiä`; }, numCharactersRemaining: num => { if (num === 1) return '1 merkki jäljellä'; return `${num} merkkiä jäljellä`; }, numEntries: (num, format) => { if (num === 0) return 'Ei merkintöjä'; if (num === 1) return `${formatCount(1, format)} merkintä`; return `${formatCount(num, format)} merkintää`; }, numEntriesLoaded: (num, format) => { if (num === 0) return 'Ei merkintöjä ladattu'; if (num === 1) return `${formatCount(1, format)} merkintä ladattu`; return `${formatCount(num, format)} merkintää ladattu`; }, numEntriesOfTotal: (shown, total, format) => total === 1 ? `${formatCount(shown, format)}/${formatCount(1, format)} merkintä` : `${formatCount(shown, format)}/${formatCount(total, format)} merkintää`, numOfTotalSelected: (num, total, format) => `${formatCount(num, format)}/${formatCount(total, format)} valittu`, numOptionsAvailable: num => { if (num === 0) return 'Ei saatavilla olevia vaihtoehtoja'; if (num === 1) return 'Yksi vaihtoehto saatavilla'; return `${num} vaihtoehtoa saatavilla`; }, numOptionsSelected: num => { if (num === 0) return 'Ei valittuja vaihtoehtoja'; if (num === 1) return 'Yksi vaihtoehto valittu'; return `${num} vaihtoehtoa valittu`; }, numSelected: (num, format) => { if (num === 0) return 'Ei valintoja'; return `${formatCount(num, format)} valittu`; }, numTotal: num => `${num} yhteensä`, ok: 'OK', onThisPage: 'Tällä sivulla', optionPosition: (label, position, total) => `${label}, ${position}/${total}`, optionsLoadError: 'Vaihtoehtoja ei voitu ladata', page: 'Sivu', pauseAnimation: 'Keskeytä animaatio', pinToEnd: 'Kiinnitä loppuun', pinToStart: 'Kiinnitä alkuun', playAnimation: 'Toista animaatio', previousPage: 'Edellinen sivu', previousSlide: 'Edellinen dia', progress: 'Edistyminen', quarter: 'Vuosineljännes', rangeSelected: (start, end) => `Valittu ${start}–${end}`, // Calendar range selection rangeSelectingFrom: date => `Valitaan väliä alkaen ${date}…`, remove: 'Poista', reset: 'Palauta', resetColumns: 'Palauta sarakkeet', resetFilters: 'Tyhjennä kaikki suodattimet', resize: 'Muuta kokoa', resizeColumn: 'Muuta sarakkeen leveyttä', scrollableRegion: 'Vieritettävä alue', scrollToEnd: 'Vieritä loppuun', scrollToStart: 'Vieritä alkuun', search: 'Hae', sectionPages: 'Osion sivut', sections: 'Osiot', selectAColorFromTheScreen: 'Valitse väri näytöltä', numRowsCopied: num => { if (num === 0) return 'Ei kopioituja rivejä'; if (num === 1) return '1 rivi kopioitu'; return `${num} riviä kopioitu`; }, numRowsSelected: num => { if (num === 0) return 'Ei valittuja rivejä'; if (num === 1) return '1 rivi valittu'; return `${num} riviä valittu`; }, rowLifted: (position, total) => `Rivi nostettu, sijainti ${position} / ${total}. Siirrä nuolinäppäimillä ylös ja alas, pudota välilyönnillä, peruuta Escape-näppäimellä.`, rowMoved: (position, total) => `Sijainti ${position} / ${total}`, rowReorderCanceled: 'Siirto peruutettu', selectAllEntries: 'Valitse kaikki kohteet', selectAllRows: 'Valitse kaikki rivit', selectDate: 'Valitse päivämäärä', selectDateTime: 'Valitse päivämäärä ja kellonaika', selectGroup: 'Valitse ryhmä', selectRow: 'Valitse rivi', selectRowNamed: name => `Valitse ${name}`, showingNofMRows: (shown, total) => `Näytetyt rivit: ${shown}/${total}`, showingRangeOfMore: (first, last) => `${first}–${last} / enemmän kuin ${last}`, showingRangeOfTotal: (first, last, total) => `${first}–${last} / ${total}`, sortAscending: 'Lajittele nousevasti', sortDescending: 'Lajittele laskevasti', sortedByColumn: (column, direction) => `Lajiteltu sarakkeen ${column} mukaan, ${direction === 'ascending' ? 'nouseva' : 'laskeva'}`, sortingCleared: 'Lajittelu poistettu', // Date picker selectTime: 'Valitse kellonaika', showingPanelSpan: (first, last) => `Näytetään ${first} – ${last}`, showingSinglePanel: month => `Näytetään ${month}`, showLess: 'Näytä vähemmän', showMore: 'Näytä lisää', showPassword: 'Näytä salasana', skipToContent: 'Siirry sisältöön', slideNum: slide => `Dia ${slide}`, steps: 'Vaiheet', stepXOfY: (step, total) => `Vaihe ${step}/${total}`, tagAdded: tag => `${tag} lisätty`, tagAlreadyAdded: tag => `${tag} on jo lisätty`, tagInputKeyboardHelp: 'Poista tämä tunniste painamalla Backspace tai Delete.', tagRemoved: tag => `${tag} poistettu`, timeInputBadInput: 'Anna kelvollinen kellonaika.', timeInputRangeOverflow: 'Kellonaika on liian myöhäinen.', timeInputRangeUnderflow: 'Kellonaika on liian aikainen.', timeInputValueMissing: 'Täytä tämä kenttä.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'tt', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'Vuorokaudenaika', timeSegmentHour: 'Tunti', timeSegmentMinute: 'Minuutti', timeSegmentSecond: 'Sekunti', toggleColorFormat: 'Vaihda väriformaattia', toggleNavigationDrawer: 'Vaihda navigointipaneeli', tooFewTags: min => (min === 1 ? 'Lisää vähintään 1 tunniste' : `Lisää vähintään ${min} tunnistetta`), tooManyTags: max => (max === 1 ? 'Lisää enintään 1 tunniste' : `Lisää enintään ${max} tunnistetta`), tryAgain: 'Yritä uudelleen', unpinColumn: 'Irrota sarake', unread: 'Lukematon', unsort: 'Poista lajittelu', until: 'asti', view: 'Näkymä', weekInputRangeOverflow: 'Viikko on liian myöhäinen.', weekInputRangeUnderflow: 'Viikko on liian aikainen.', weekInputValueMissing: 'Valitse viikko.', weekLabel: week => `Viikko ${week}`, year: 'Vuosi', zoomIn: 'Lähennä', zoomOut: 'Loitonna', documentViewerCanvas: 'Dokumentti', documentViewerContinuous: 'Pystysuuntainen vieritys', documentViewerFitHeight: 'Sivun korkeus', documentViewerFitWidth: 'Sivun leveys', documentViewerLoadError: 'Sivua ei voitu ladata', documentViewerPages: 'Sivut', documentViewerRotateLeft: 'Kierrä vasemmalle', documentViewerRotateRight: 'Kierrä oikealle', documentViewerSinglePage: 'Sivun vieritys', documentViewerZoom: 'Zoomaus', editorAi: 'tekoäly', editorAiSuggestions: 'Tekoälyn ehdotukset', editorDelete: 'Poista', editorHideDeletedPages: 'Piilota poistetut sivut', editorPage: page => `Sivu ${page}`, editorRotate: 'Kierrä 90°', editorSelectAll: (selected, total) => `Valitse kaikki (${selected}/${total})`, editorSplit: 'Jaa', editorUser: 'Käyttäjä', editorZoom: 'Zoomaus', editorZoomIn: 'Lähennä', previewPage: page => `Sivu ${page}`, save: 'Tallenna', scanCancelBack: 'Takaisin muokkaukseen', scanCancelConfirm: 'Peru lataus', scanCancelMessage: 'Jos peruutat, tiedostoa ei ladata ja muutokset menetetään. Toimintoa ei voi kumota.', scanCancelTitle: 'Perutaanko lataus?', scanFilesDisplayError: 'Tiedostoja ei voida näyttää', scanFilesLoading: 'Ladataan tiedostoja...', scanInvalidSession: 'Istunto ei ole kelvollinen. Käynnistä prosessi uudelleen.', scanSaveErrorBack: 'Takaisin muokkaukseen', scanSaveErrorMessage: 'Tallennuksessa tapahtui virhe. Voit yrittää uudelleen tai palata muokkaukseen.', scanSaveErrorRetry: 'Yritä uudelleen', scanSaveErrorTitle: 'Virhe tallennuksessa', scanSaving: 'Luodaan tiedostoja', scanSessionLoading: 'Ladataan edScan-istuntoa...', scanTitle: 'Tekoälyavusteinen sivujen muokkaus', uploadDragAndDropDescription: 'Voit vetää tiedoston tähän tai valita sen painikkeella.', uploadDragAndDropTitle: 'Lataa tiedosto', uploadDropFile: 'Pudota tiedosto', uploadDropFiles: 'Pudota tiedostot', uploadDuplicateFile: name => `${name} on jo luettelossa`, uploadFailed: 'Tiedostojen lataus epäonnistui', uploadFileCountSummary: (count, size) => `${count} tiedosto(a) · ${size}`, uploadFileTooLarge: (name, size) => `Tiedosto ${name} on liian suuri. Suurin sallittu koko on ${size} Mt.`, uploadFileTypeNotAllowed: type => `Tiedostotyyppi ei ole sallittu: ${type}`, uploadLimitExceeded: size => `Tiedosto ylittää latausrajan (${size} Mt)`, uploadLimitsExceeded: size => `Tiedostot ylittävät latausrajan (${size} Mt)`, uploadOr: 'tai', uploadPreviewFile: name => `Esikatselu: ${name}`, uploadProgress: 'Tiedostoja ladataan...', uploadRemoveFile: name => `Poista: ${name}`, uploadRetryFile: name => `Yritä uudelleen: ${name}`, uploadSelectFile: 'Valitse tiedosto', uploadSelectFiles: 'Valitse tiedostot', uploadSuccess: (done, total) => `${done}/${total} tiedostoa ladattu`, uploadTitle: 'Lataa tiedosto', uploadTooManyFiles: max => `Voit ladata enintään ${max} tiedostoa`, valueMissing: 'Täytä tämä kenttä.', valueMissingCheckbox: 'Valitse tämä valintaruutu, jos haluat jatkaa.', valueMissingRadio: 'Valitse jokin näistä vaihtoehdoista.', valueMissingSelect: 'Valitse kohde luettelosta.', typeMismatchEmail: 'Anna sähköpostiosoite.', typeMismatchUrl: 'Anna URL-osoite.', patternMismatch: 'Noudata pyydettyä muotoa.', badInputNumber: 'Anna numero.', rangeUnderflow: min => `Arvon on oltava vähintään ${min}.`, rangeOverflow: max => `Arvon on oltava enintään ${max}.`, stepMismatch: (lower, upper) => `Anna kelvollinen arvo. Kaksi lähintä kelvollista arvoa ovat ${lower} ja ${upper}.`, stepMismatchNearest: nearest => `Anna kelvollinen arvo. Lähin kelvollinen arvo on ${nearest}.`, tooShort: (minimum, current) => `Pidennä tämä teksti vähintään ${minimum} merkkiin (käytät tällä hetkellä ${current} merkkiä).`, $code: 'fi', $dir: 'ltr', $name: 'Suomi' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/fi.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/fr.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: \"Ce contenu a été généré par l'IA\", allTagsRemoved: 'Toutes les étiquettes ont été retirées', appearance: 'Apparence', appearanceClassic: 'Classique', appearanceModern: 'Moderne', autosizeColumn: 'Ajuster la colonne au contenu', back: 'Retour', cancel: 'Annuler', carousel: 'Carrousel', chooseDate: 'Choisir une date', chooseDateAndTime: 'Choisir une date et une heure', chooseTime: 'Choisir une heure', clearEntry: `Effacer l'entrée`, clearFilter: 'Effacer le filtre', close: 'Fermer', collapse: 'Réduire', columnMenu: 'Options de colonne', columnMovedToPosition: (label, position, total) => `${label}, Position ${position} sur ${total}`, columns: 'Colonnes', completed: 'Terminé', copied: 'Copié', copy: 'Copier', currentValue: 'Valeur actuelle', dateInputBadInput: 'Veuillez saisir une date valide.', dateInputRangeOverflow: 'La date est trop tardive.', dateInputRangeUnderflow: 'La date est trop ancienne.', dateInputValueMissing: 'Veuillez remplir ce champ.', dateNotSelectable: 'Cette date ne peut pas être sélectionnée.', datePlaceholderDay: 'jj', datePlaceholderHalfyear: 's', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 't', datePlaceholderWeek: 'ss', datePlaceholderYear: 'aaaa', // Date input dateRangeEndBeforeStart: 'La fin de la période doit être postérieure à son début.', dateSegmentDay: 'Jour', dateSegmentHalfyear: 'Semestre', dateSegmentMonth: 'Mois', dateSegmentQuarter: 'Trimestre', dateSegmentWeek: 'Semaine', dateSegmentYear: 'Année', datetimeInputBadInput: 'Veuillez saisir une date et une heure valides.', datetimeInputRangeOverflow: 'La date et l’heure sont trop tardives.', datetimeInputRangeUnderflow: 'La date et l’heure sont trop anciennes.', datetimeInputValueMissing: 'Veuillez remplir ce champ.', decrement: 'Diminuer', density: 'Densité', densityCompact: 'Compacte', densityDefault: 'Par défaut', densitySpacious: 'Aérée', disabled: 'Désactivé', dragToReorder: 'Faire glisser pour réorganiser', dropFileHere: 'Déposez le fichier ici ou cliquez pour parcourir', dropFilesHere: 'Déposez les fichiers ici ou cliquez pour parcourir', entriesPerPage: 'Entrées par page', error: 'Erreur', expand: 'Développer', filter: 'Filtrer', filterByColumn: label => `Filtrer ${label}`, filterFrom: 'Du', filterMax: 'Maximum', filterMin: 'Minimum', filterTo: 'Au', finish: 'Terminer', from: 'sur', goToSlide: (slide, count) => `Aller à la diapositive ${slide} de ${count}`, halfyear: 'Semestre', hideColumn: 'Masquer la colonne', hidePassword: 'Masquer le mot de passe', increment: 'Augmenter', loadFailed: 'Impossible de charger les lignes.', loading: 'Chargement', loadMoreFailed: 'Impossible de charger plus de lignes.', locked: 'Verrouillé', mainMenu: 'Menu principal', maximumValue: label => (label ? `${label} (Valeur maximale)` : 'Valeur maximale'), minimumValue: label => (label ? `${label} (Valeur minimale)` : 'Valeur minimale'), month: 'Mois', more: 'Plus', multipleValues: 'Valeurs multiples', newsMenu: 'Menu des actualités', newsToggleMenu: 'Basculer le menu des actualités', next: 'Suivant', nextPage: 'Page suivante', nextSlide: 'Diapositive suivante', noData: 'Aucune donnée', noDataDescription: 'Aucune entrée à afficher pour le moment.', noOptions: 'Aucune option', noResults: 'Aucun résultat', noResultsDescription: 'Aucune entrée ne correspond à la recherche ou aux filtres.', notCompleted: 'Non terminé', notificationsRegion: hotkey => `Notifications, appuyez sur ${hotkey} pour vous y rendre`, numCharacters: num => { if (num === 1) return '1 caractère'; return `${num} caractères`; }, numCharactersRemaining: num => { if (num === 1) return '1 caractère restant'; return `${num} caractères restants`; }, numEntries: (num, format) => { if (num === 0) return 'Aucune entrée'; if (num === 1) return `${formatCount(1, format)} entrée`; return `${formatCount(num, format)} entrées`; }, numEntriesLoaded: (num, format) => { if (num === 0) return 'Aucune entrée chargée'; if (num === 1) return `${formatCount(1, format)} entrée chargée`; return `${formatCount(num, format)} entrées chargées`; }, numEntriesOfTotal: (shown, total, format) => total === 1 ? `${formatCount(shown, format)} sur ${formatCount(1, format)} entrée` : `${formatCount(shown, format)} sur ${formatCount(total, format)} entrées`, numOfTotalSelected: (num, total, format) => `${formatCount(num, format)} sur ${formatCount(total, format)} sélectionnées`, numOptionsAvailable: num => { if (num === 0) return 'Aucune option disponible'; if (num === 1) return '1 option disponible'; return `${num} options disponibles`; }, numOptionsSelected: num => { if (num === 0) return 'Aucune option sélectionnée'; if (num === 1) return '1 option sélectionnée'; return `${num} options sélectionnées`; }, numSelected: (num, format) => { if (num === 0) return 'Aucune sélection'; if (num === 1) return `${formatCount(1, format)} sélectionnée`; return `${formatCount(num, format)} sélectionnées`; }, numTotal: num => `${num} au total`, ok: 'OK', onThisPage: 'Sur cette page', optionPosition: (label, position, total) => `${label}, ${position} sur ${total}`, optionsLoadError: 'Impossible de charger les options', page: 'Page', pauseAnimation: \"Suspendre l'animation\", pinToEnd: 'Épingler à la fin', pinToStart: 'Épingler au début', playAnimation: \"Lire l'animation\", previousPage: 'Page précédente', previousSlide: 'Diapositive précédente', progress: 'Progrès', quarter: 'Trimestre', rangeSelected: (start, end) => `${start} à ${end} sélectionnés`, // Calendar range selection rangeSelectingFrom: date => `Sélection de la plage à partir du ${date}…`, remove: 'Retirer', reset: 'Réinitialiser', resetColumns: 'Réinitialiser les colonnes', resetFilters: 'Réinitialiser tous les filtres', resize: 'Redimensionner', resizeColumn: 'Redimensionner la colonne', scrollableRegion: 'Région défilante', scrollToEnd: `Faire défiler jusqu'à la fin`, scrollToStart: `Faire défiler jusqu'au début`, search: 'Rechercher', sectionPages: 'Pages de la section', sections: 'Sections', selectAColorFromTheScreen: `Sélectionnez une couleur à l'écran`, numRowsCopied: num => { if (num === 0) return 'Aucune ligne copiée'; if (num === 1) return '1 ligne copiée'; return `${num} lignes copiées`; }, numRowsSelected: num => { if (num === 0) return 'Aucune ligne sélectionnée'; if (num === 1) return '1 ligne sélectionnée'; return `${num} lignes sélectionnées`; }, rowLifted: (position, total) => `Ligne soulevée, position ${position} sur ${total}. Utilisez les flèches haut et bas pour déplacer, Espace pour déposer, Échap pour annuler.`, rowMoved: (position, total) => `Position ${position} sur ${total}`, rowReorderCanceled: 'Réorganisation annulée', selectAllEntries: 'Sélectionner toutes les entrées', selectAllRows: 'Sélectionner toutes les lignes', selectDate: 'Sélectionner une date', selectDateTime: 'Sélectionner une date et une heure', selectGroup: 'Sélectionner le groupe', selectRow: 'Sélectionner la ligne', selectRowNamed: name => `Sélectionner ${name}`, showingNofMRows: (shown, total) => `Lignes affichées : ${shown} sur ${total}`, showingRangeOfMore: (first, last) => `${first}–${last} sur plus de ${last}`, showingRangeOfTotal: (first, last, total) => `${first}–${last} sur ${total}`, sortAscending: 'Trier par ordre croissant', sortDescending: 'Trier par ordre décroissant', sortedByColumn: (column, direction) => `Trié par ${column}, ${direction === 'ascending' ? 'croissant' : 'décroissant'}`, sortingCleared: 'Tri supprimé', // Date picker selectTime: 'Sélectionner une heure', showingPanelSpan: (first, last) => `Affichage de ${first} – ${last}`, showingSinglePanel: month => `Affichage de ${month}`, showLess: 'Afficher moins', showMore: 'Afficher plus', showPassword: 'Montrer le mot de passe', skipToContent: 'Passer au contenu', slideNum: slide => `Diapositive ${slide}`, steps: 'Étapes', stepXOfY: (step, total) => `Étape ${step} sur ${total}`, tagAdded: tag => `${tag} ajouté`, tagAlreadyAdded: tag => `${tag} existe déjà`, tagInputKeyboardHelp: 'Appuyez sur Retour arrière ou Suppr pour retirer cette étiquette.', tagRemoved: tag => `${tag} retiré`, timeInputBadInput: 'Veuillez saisir une heure valide.', timeInputRangeOverflow: 'L’heure est trop tardive.', timeInputRangeUnderflow: 'L’heure est trop matinale.', timeInputValueMissing: 'Veuillez remplir ce champ.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'Cadran', timeSegmentHour: 'Heure', timeSegmentMinute: 'Minute', timeSegmentSecond: 'Seconde', toggleColorFormat: 'Changer le format de couleur', toggleNavigationDrawer: 'Basculer le panneau de navigation', tooFewTags: min => (min === 1 ? 'Ajoutez au moins 1 étiquette' : `Ajoutez au moins ${min} étiquettes`), tooManyTags: max => (max === 1 ? 'Ajoutez au plus 1 étiquette' : `Ajoutez au plus ${max} étiquettes`), tryAgain: 'Réessayer', unpinColumn: 'Désépingler la colonne', unread: 'Non lu', unsort: 'Annuler le tri', until: \"jusqu'à\", view: 'Affichage', weekInputRangeOverflow: 'La semaine est trop tardive.', weekInputRangeUnderflow: 'La semaine est trop ancienne.', weekInputValueMissing: 'Veuillez sélectionner une semaine.', weekLabel: week => `Semaine ${week}`, year: 'Année', zoomIn: 'Zoomer', zoomOut: 'Dézoomer', documentViewerCanvas: 'Document', documentViewerContinuous: 'Défilement vertical', documentViewerFitHeight: 'Pleine hauteur', documentViewerFitWidth: 'Pleine largeur', documentViewerLoadError: 'Impossible de charger la page', documentViewerPages: 'Pages', documentViewerRotateLeft: 'Pivoter à gauche', documentViewerRotateRight: 'Pivoter à droite', documentViewerSinglePage: 'Défilement par page', documentViewerZoom: 'Zoom', editorAi: 'IA', editorAiSuggestions: \"Suggestions de l'IA\", editorDelete: 'Supprimer', editorHideDeletedPages: 'Masquer les pages supprimées', editorPage: page => `Page ${page}`, editorRotate: 'Pivoter à 90°', editorSelectAll: (selected, total) => `Tout sélectionner (${selected} sur ${total})`, editorSplit: 'Diviser', editorUser: 'Utilisateur', editorZoom: 'Zoom', editorZoomIn: 'Agrandir', previewPage: page => `Page ${page}`, save: 'Enregistrer', scanCancelBack: 'Retour à l’édition', scanCancelConfirm: 'Annuler le téléversement', scanCancelMessage: 'Si vous annulez, le fichier ne sera pas téléversé et les modifications seront perdues. Cette action est irréversible.', scanCancelTitle: 'Annuler le téléversement ?', scanFilesDisplayError: 'Impossible d’afficher le(s) fichier(s)', scanFilesLoading: 'Chargement des fichiers...', scanInvalidSession: 'La session est invalide. Veuillez redémarrer le processus.', scanSaveErrorBack: 'Retour à l’édition', scanSaveErrorMessage: 'Une erreur est survenue pendant la sauvegarde. Vous pouvez réessayer ou revenir à l’édition.', scanSaveErrorRetry: 'Réessayer', scanSaveErrorTitle: 'Erreur lors de la sauvegarde', scanSaving: 'Création du/des fichier(s)', scanSessionLoading: 'Chargement de la session edScan...', scanTitle: 'Édition de pages assistée par IA', uploadDragAndDropDescription: 'Vous pouvez glisser-déposer un fichier ici ou en sélectionner un avec le bouton.', uploadDragAndDropTitle: 'Téléverser un fichier', uploadDropFile: 'Déposez le fichier', uploadDropFiles: 'Déposez les fichiers', uploadDuplicateFile: name => `${name} est déjà dans la liste`, uploadFailed: 'Le téléversement du/des fichier(s) a échoué', uploadFileCountSummary: (count, size) => `${count} fichier(s) · ${size}`, uploadFileTooLarge: (name, size) => `Le fichier ${name} est trop volumineux. Taille maximale : ${size} Mo.`, uploadFileTypeNotAllowed: type => `Type de fichier non autorisé : ${type}`, uploadLimitExceeded: size => `Le fichier dépasse la limite de téléversement de ${size} Mo`, uploadLimitsExceeded: size => `Les fichiers dépassent la limite de téléversement de ${size} Mo`, uploadOr: 'ou', uploadPreviewFile: name => `Aperçu : ${name}`, uploadProgress: 'Téléversement du/des fichier(s)...', uploadRemoveFile: name => `Supprimer : ${name}`, uploadRetryFile: name => `Réessayer: ${name}`, uploadSelectFile: 'Choisir un fichier', uploadSelectFiles: 'Choisir des fichiers', uploadSuccess: (done, total) => `${done} sur ${total} fichier(s) téléversé(s)`, uploadTitle: 'Téléverser un fichier', uploadTooManyFiles: max => `Vous pouvez téléverser au maximum ${max} fichier(s)`, valueMissing: 'Veuillez renseigner ce champ.', valueMissingCheckbox: 'Veuillez cocher cette case si vous souhaitez continuer.', valueMissingRadio: \"Veuillez sélectionner l'une de ces options.\", valueMissingSelect: 'Veuillez sélectionner un élément dans la liste.', typeMismatchEmail: 'Veuillez saisir une adresse e-mail.', typeMismatchUrl: 'Veuillez saisir une URL.', patternMismatch: 'Veuillez respecter le format demandé.', badInputNumber: 'Veuillez saisir un nombre.', rangeUnderflow: min => `La valeur doit être supérieure ou égale à ${min}.`, rangeOverflow: max => `La valeur doit être inférieure ou égale à ${max}.`, stepMismatch: (lower, upper) => `Veuillez saisir une valeur valide. Les deux valeurs valides les plus proches sont ${lower} et ${upper}.`, stepMismatchNearest: nearest => `Veuillez saisir une valeur valide. La valeur valide la plus proche est ${nearest}.`, tooShort: (minimum, current) => `Veuillez allonger ce texte à ${minimum} caractères ou plus (vous utilisez actuellement ${current} caractères).`, $code: 'fr', $dir: 'ltr', $name: 'Français' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/fr.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/he.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'תוכן זה נוצר על ידי בינה מלאכותית', allTagsRemoved: 'כל התגיות הוסרו', appearance: 'מראה', appearanceClassic: 'קלאסי', appearanceModern: 'מודרני', autosizeColumn: 'התאמת העמודה לתוכן', back: 'חזרה', cancel: 'ביטול', carousel: 'קרוסלה', chooseDate: 'בחירת תאריך', chooseDateAndTime: 'בחירת תאריך ושעה', chooseTime: 'בחירת שעה', clearEntry: 'נקה קלט', clearFilter: 'ניקוי מסנן', close: 'סגור', collapse: 'כווץ', columnMenu: 'אפשרויות עמודה', columnMovedToPosition: (label, position, total) => `${label}, מיקום ${position} מתוך ${total}`, columns: 'עמודות', completed: 'הושלם', copied: 'מוּעֲתָק', copy: 'העתק', currentValue: 'ערך נוכחי', dateInputBadInput: 'יש להזין תאריך תקין.', dateInputRangeOverflow: 'התאריך מאוחר מדי.', dateInputRangeUnderflow: 'התאריך מוקדם מדי.', dateInputValueMissing: 'יש למלא שדה זה.', dateNotSelectable: 'לא ניתן לבחור תאריך זה.', datePlaceholderDay: 'dd', datePlaceholderHalfyear: 'ח', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 'ר', datePlaceholderWeek: 'שש', datePlaceholderYear: 'yyyy', // Date input dateRangeEndBeforeStart: 'סוף התקופה חייב להיות אחרי תחילתה.', dateSegmentDay: 'יום', dateSegmentHalfyear: 'חצי שנה', dateSegmentMonth: 'חודש', dateSegmentQuarter: 'רבעון', dateSegmentWeek: 'שבוע', dateSegmentYear: 'שנה', datetimeInputBadInput: 'יש להזין תאריך ושעה תקינים.', datetimeInputRangeOverflow: 'התאריך והשעה מאוחרים מדי.', datetimeInputRangeUnderflow: 'התאריך והשעה מוקדמים מדי.', datetimeInputValueMissing: 'יש למלא שדה זה.', decrement: 'הקטן', density: 'צפיפות', densityCompact: 'דחוס', densityDefault: 'ברירת מחדל', densitySpacious: 'מרווח', disabled: 'מושבת', dragToReorder: 'גרור לסידור מחדש', dropFileHere: 'גרור ושחרר קובץ כאן או לחץ לבחירה', dropFilesHere: 'גרור ושחרר קבצים כאן או לחץ לבחירה', entriesPerPage: 'רשומות בעמוד', error: 'שְׁגִיאָה', expand: 'הרחב', filter: 'סינון', filterByColumn: label => `סינון ${label}`, filterFrom: 'מ-', filterMax: 'מקסימום', filterMin: 'מינימום', filterTo: 'עד', finish: 'סיום', from: 'מתוך', goToSlide: (slide, count) => `עבור לשקופית ${slide} של ${count}`, halfyear: 'מחצית שנה', hideColumn: 'הסתרת העמודה', hidePassword: 'הסתר סיסמא', increment: 'הגדל', loadFailed: 'לא ניתן היה לטעון את השורות.', loading: 'טוען', loadMoreFailed: 'לא ניתן היה לטעון שורות נוספות.', locked: 'נעול', mainMenu: 'התפריט הראשי', maximumValue: label => (label ? `${label} (ערך מרבי)` : 'ערך מרבי'), minimumValue: label => (label ? `${label} (ערך מזערי)` : 'ערך מזערי'), month: 'חודש', more: 'עוד', multipleValues: 'ערכים מרובים', newsMenu: 'תפריט חדשות', newsToggleMenu: 'החלף תפריט חדשות', next: 'הבא', nextPage: 'עמוד הבא', nextSlide: 'השקף הבא', noData: 'אין נתונים', noDataDescription: 'עדיין אין רשומות להצגה.', noOptions: 'אין אפשרויות', noResults: 'אין תוצאות', noResultsDescription: 'אין רשומה שתואמת את החיפוש או את המסננים.', notCompleted: 'לא הושלם', notificationsRegion: hotkey => `התראות, לחץ ${hotkey} למיקוד`, numCharacters: num => { if (num === 1) return '1 תו'; return `${num} תווים`; }, numCharactersRemaining: num => { if (num === 1) return '1 תו נותר'; return `${num} תווים נותרים`; }, numEntries: (num, format) => { if (num === 0) return 'אין רשומות'; if (num === 1) return 'רשומה אחת'; return `${formatCount(num, format)} רשומות`; }, numEntriesLoaded: (num, format) => { if (num === 0) return 'לא נטענו רשומות'; if (num === 1) return 'נטענה רשומה אחת'; return `נטענו ${formatCount(num, format)} רשומות`; }, numEntriesOfTotal: (shown, total, format) => total === 1 ? `${formatCount(shown, format)} מתוך רשומה אחת` : `${formatCount(shown, format)} מתוך ${formatCount(total, format)} רשומות`, numOfTotalSelected: (num, total, format) => `נבחרו ${formatCount(num, format)} מתוך ${formatCount(total, format)}`, numOptionsAvailable: num => { if (num === 0) return 'אין אפשרויות זמינות'; if (num === 1) return 'אפשרות אחת זמינה'; return `${num} אפשרויות זמינות`; }, numOptionsSelected: num => { if (num === 0) return 'לא נבחרו אפשרויות'; if (num === 1) return 'נבחרה אפשרות אחת'; return `נבחרו ${num} אפשרויות`; }, numSelected: (num, format) => { if (num === 0) return 'לא נבחר'; return `נבחרו ${formatCount(num, format)}`; }, numTotal: num => `${num} בסך הכל`, ok: 'OK', onThisPage: 'בעמוד זה', optionPosition: (label, position, total) => `${label}, ${position} מתוך ${total}`, optionsLoadError: 'לא ניתן היה לטעון את האפשרויות', page: 'עמוד', pauseAnimation: 'השהה אנימציה', pinToEnd: 'הצמדה לסוף', pinToStart: 'הצמדה להתחלה', playAnimation: 'נגן אנימציה', previousPage: 'עמוד קודם', previousSlide: 'שקופית קודמת', progress: 'התקדמות', quarter: 'רבעון', rangeSelected: (start, end) => `נבחר מ-${start} עד ${end}`, // Calendar range selection rangeSelectingFrom: date => `בחירת טווח החל מ-${date}…`, remove: 'לְהַסִיר', reset: 'איפוס', resetColumns: 'איפוס העמודות', resetFilters: 'איפוס כל המסננים', resize: 'שנה גודל', resizeColumn: 'שינוי רוחב העמודה', scrollableRegion: 'אזור גלילה', scrollToEnd: 'גלול עד הסוף', scrollToStart: 'גלול להתחלה', search: 'חיפוש', sectionPages: 'דפי הקטע', sections: 'קטעים', selectAColorFromTheScreen: 'בחור צבע מהמסך', numRowsCopied: num => { if (num === 0) return 'לא הועתקו שורות'; if (num === 1) return 'שורה אחת הועתקה'; return `${num} שורות הועתקו`; }, numRowsSelected: num => { if (num === 0) return 'לא נבחרו שורות'; if (num === 1) return 'שורה אחת נבחרה'; return `${num} שורות נבחרו`; }, rowLifted: (position, total) => `השורה הורמה, מיקום ${position} מתוך ${total}. השתמשו בחיצים למעלה ולמטה כדי להזיז, רווח כדי להניח ו-Escape כדי לבטל.`, rowMoved: (position, total) => `מיקום ${position} מתוך ${total}`, rowReorderCanceled: 'הסידור מחדש בוטל', selectAllEntries: 'בחירת כל הפריטים', selectAllRows: 'בחר את כל השורות', selectDate: 'בחירת תאריך', selectDateTime: 'בחירת תאריך ושעה', selectGroup: 'בחירת קבוצה', selectRow: 'בחר שורה', selectRowNamed: name => `בחר ${name}`, showingNofMRows: (shown, total) => `שורות מוצגות: ${shown} מתוך ${total}`, showingRangeOfMore: (first, last) => `${first}–${last} מתוך יותר מ-${last}`, showingRangeOfTotal: (first, last, total) => `${first}–${last} מתוך ${total}`, sortAscending: 'מיון בסדר עולה', sortDescending: 'מיון בסדר יורד', sortedByColumn: (column, direction) => `ממוין לפי ${column}, ${direction === 'ascending' ? 'בסדר עולה' : 'בסדר יורד'}`, sortingCleared: 'המיון הוסר', // Date picker selectTime: 'בחירת שעה', showingPanelSpan: (first, last) => `מציג ${first} – ${last}`, showingSinglePanel: month => `מציג ${month}`, showLess: 'הצג פחות', showMore: 'הצג עוד', showPassword: 'הראה סיסמה', skipToContent: 'דלג לתוכן', slideNum: slide => `שקופית ${slide}`, steps: 'שלבים', stepXOfY: (step, total) => `שלב ${step} מתוך ${total}`, tagAdded: tag => `${tag} נוסף`, tagAlreadyAdded: tag => `התגית ${tag} כבר קיימת`, tagInputKeyboardHelp: 'הקש Backspace או Delete להסרת התגית הזו.', tagRemoved: tag => `${tag} הוסר`, timeInputBadInput: 'יש להזין שעה תקינה.', timeInputRangeOverflow: 'השעה מאוחרת מדי.', timeInputRangeUnderflow: 'השעה מוקדמת מדי.', timeInputValueMissing: 'יש למלא שדה זה.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'לפנה״צ/אחה״צ', timeSegmentHour: 'שעה', timeSegmentMinute: 'דקה', timeSegmentSecond: 'שנייה', toggleColorFormat: 'החלף פורמט צבע', toggleNavigationDrawer: 'החלף חלונית ניווט', tooFewTags: min => (min === 1 ? 'הוסף תגית אחת לפחות' : `הוסף ${min} תגיות לפחות`), tooManyTags: max => (max === 1 ? 'אל תוסיף יותר מתגית אחת' : `אל תוסיף יותר מ-${max} תגיות`), tryAgain: 'נסה שוב', unpinColumn: 'ביטול הצמדת העמודה', unread: 'לא נקרא', unsort: 'ביטול מיון', until: 'עד', view: 'תצוגה', weekInputRangeOverflow: 'השבוע מאוחר מדי.', weekInputRangeUnderflow: 'השבוע מוקדם מדי.', weekInputValueMissing: 'יש לבחור שבוע.', weekLabel: week => `שבוע ${week}`, year: 'שנה', zoomIn: 'התקרב', zoomOut: 'התרחק', documentViewerCanvas: 'מסמך', documentViewerContinuous: 'גלילה אנכית', documentViewerFitHeight: 'גובה העמוד', documentViewerFitWidth: 'רוחב העמוד', documentViewerLoadError: 'לא ניתן היה לטעון את העמוד', documentViewerPages: 'עמודים', documentViewerRotateLeft: 'סובב שמאלה', documentViewerRotateRight: 'סובב ימינה', documentViewerSinglePage: 'גלילת עמוד', documentViewerZoom: 'זום', editorAi: 'AI', editorAiSuggestions: 'הצעות AI', editorDelete: 'מחק', editorHideDeletedPages: 'הסתר עמודים שנמחקו', editorPage: page => `עמוד ${page}`, editorRotate: 'סובב 90°', editorSelectAll: (selected, total) => `בחר הכול (${selected} מתוך ${total})`, editorSplit: 'פצל', editorUser: 'משתמש', editorZoom: 'זום', editorZoomIn: 'הגדלה', previewPage: page => `עמוד ${page}`, save: 'שמור', scanCancelBack: 'חזרה לעריכה', scanCancelConfirm: 'בטל העלאה', scanCancelMessage: 'אם תבטל, הקובץ לא יועלה והשינויים יאבדו. לא ניתן לשחזר פעולה זו.', scanCancelTitle: 'לבטל העלאה?', scanFilesDisplayError: 'לא ניתן להציג את הקבצים', scanFilesLoading: 'טוען קבצים...', scanInvalidSession: 'הסשן אינו תקין. יש להפעיל מחדש את התהליך.', scanSaveErrorBack: 'חזרה לעריכה', scanSaveErrorMessage: 'אירעה שגיאה במהלך השמירה. ניתן לנסות שוב או לחזור לעריכה.', scanSaveErrorRetry: 'נסה שוב', scanSaveErrorTitle: 'שגיאה בשמירה', scanSaving: 'יוצר קבצים', scanSessionLoading: 'טוען סשן edScan...', scanTitle: 'עריכת עמודים בעזרת AI', uploadDragAndDropDescription: 'ניתן לגרור קובץ לכאן או לבחור באמצעות הכפתור.', uploadDragAndDropTitle: 'העלה קובץ', uploadDropFile: 'שחרר קובץ', uploadDropFiles: 'שחרר קבצים', uploadDuplicateFile: name => `${name} כבר נמצא ברשימה`, uploadFailed: 'העלאת הקבצים נכשלה', uploadFileCountSummary: (count, size) => `${count} קבצים · ${size}`, uploadFileTooLarge: (name, size) => `הקובץ ${name} גדול מדי. הגודל המרבי הוא ${size} MB.`, uploadFileTypeNotAllowed: type => `סוג הקובץ אינו נתמך: ${type}`, uploadLimitExceeded: size => `הקובץ חורג ממגבלת ההעלאה של ${size} MB`, uploadLimitsExceeded: size => `הקבצים חורגים ממגבלת ההעלאה של ${size} MB`, uploadOr: 'או', uploadPreviewFile: name => `תצוגה מקדימה: ${name}`, uploadProgress: 'קבצים מועלים...', uploadRemoveFile: name => `הסר: ${name}`, uploadRetryFile: name => `נסה שוב: ${name}`, uploadSelectFile: 'בחר קובץ', uploadSelectFiles: 'בחר קבצים', uploadSuccess: (done, total) => `${done} מתוך ${total} קבצים הועלו`, uploadTitle: 'העלה קובץ', uploadTooManyFiles: max => `ניתן להעלות ${max} קבצים לכל היותר`, valueMissing: 'נא למלא שדה זה.', valueMissingCheckbox: 'יש לסמן תיבה זו כדי להמשיך.', valueMissingRadio: 'יש לבחור באחת מהאפשרויות האלה.', valueMissingSelect: 'יש לבחור פריט מהרשימה.', typeMismatchEmail: 'יש להזין כתובת אימייל.', typeMismatchUrl: 'יש להזין כתובת URL.', patternMismatch: 'יש להשתמש בתבנית המבוקשת.', badInputNumber: 'יש להזין מספר.', rangeUnderflow: min => `הערך חייב להיות גדול מ-${min} או שווה לו.`, rangeOverflow: max => `הערך חייב להיות קטן מ-${max} או שווה לו.`, stepMismatch: (lower, upper) => `יש להזין ערך חוקי. שני הערכים החוקיים הקרובים הם ${lower} ו-${upper}.`, stepMismatchNearest: nearest => `יש להזין ערך חוקי. הערך החוקי הקרוב ביותר הוא ${nearest}.`, tooShort: (minimum, current) => `יש להאריך טקסט זה ל-${minimum} תווים לפחות (כרגע ${current} תווים).`, $code: 'he', $dir: 'rtl', $name: 'עברית' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/he.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/hi.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'यह सामग्री AI द्वारा उत्पन्न की गई थी', allTagsRemoved: 'सभी टैग हटाए गए', appearance: 'रूप', appearanceClassic: 'क्लासिक', appearanceModern: 'आधुनिक', autosizeColumn: 'कॉलम को सामग्री के अनुसार करें', back: 'वापस', cancel: 'रद्द करें', carousel: 'कैरोसेल', chooseDate: 'एक तारीख़ चुनें', chooseDateAndTime: 'एक तारीख़ और समय चुनें', chooseTime: 'एक समय चुनें', clearEntry: 'प्रविष्टि साफ़ करें', clearFilter: 'फ़िल्टर हटाएँ', close: 'बंद करें', collapse: 'संकुचित करें', columnMenu: 'कॉलम विकल्प', columnMovedToPosition: (label, position, total) => `${label}, स्थिति ${position} / ${total}`, columns: 'कॉलम', completed: 'पूर्ण', copied: 'कॉपी किया गया', copy: 'कॉपी करें', currentValue: 'वर्तमान मान', dateInputBadInput: 'कृपया एक मान्य तारीख़ दर्ज करें.', dateInputRangeOverflow: 'तारीख़ बहुत बाद की है.', dateInputRangeUnderflow: 'तारीख़ बहुत पहले की है.', dateInputValueMissing: 'कृपया यह फ़ील्ड भरें.', dateNotSelectable: 'यह तारीख़ चयन योग्य नहीं है.', datePlaceholderDay: 'dd', datePlaceholderHalfyear: 'h', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 'q', datePlaceholderWeek: 'सप', datePlaceholderYear: 'yyyy', // Date input (untranslated — awaiting locale contribution) dateRangeEndBeforeStart: 'अवधि का अंत उसके प्रारंभ के बाद होना चाहिए।', dateSegmentDay: 'दिन', dateSegmentHalfyear: 'छमाही', dateSegmentMonth: 'माह', dateSegmentQuarter: 'तिमाही', dateSegmentWeek: 'सप्ताह', dateSegmentYear: 'वर्ष', datetimeInputBadInput: 'कृपया एक मान्य तारीख़ और समय दर्ज करें.', datetimeInputRangeOverflow: 'तारीख़ और समय बहुत बाद का है.', datetimeInputRangeUnderflow: 'तारीख़ और समय बहुत पहले का है.', datetimeInputValueMissing: 'कृपया यह फ़ील्ड भरें.', decrement: 'घटाएं', density: 'सघनता', densityCompact: 'संक्षिप्त', densityDefault: 'डिफ़ॉल्ट', densitySpacious: 'विस्तृत', disabled: 'अक्षम', dragToReorder: 'पुनः क्रमबद्ध करने के लिए खींचें', dropFileHere: 'फ़ाइल यहाँ छोड़ें या ब्राउज़ करने के लिए क्लिक करें', dropFilesHere: 'फ़ाइलें यहाँ छोड़ें या ब्राउज़ करने के लिए क्लिक करें', entriesPerPage: 'प्रति पृष्ठ प्रविष्टियाँ', error: 'त्रुटि', expand: 'विस्तृत करें', filter: 'फ़िल्टर करें', filterByColumn: label => `फ़िल्टर करें ${label}`, filterFrom: 'से', filterMax: 'अधिकतम', filterMin: 'न्यूनतम', filterTo: 'तक', finish: 'समाप्त', from: '/', goToSlide: (slide, count) => `${count} में से स्लाइड ${slide} पर जाएं`, halfyear: 'छमाही', hideColumn: 'कॉलम छिपाएँ', hidePassword: 'पासवर्ड छुपाएं', increment: 'बढ़ाएं', loadFailed: 'पंक्तियाँ लोड नहीं की जा सकीं।', loading: 'लोड हो रहा है', loadMoreFailed: 'और पंक्तियाँ लोड नहीं की जा सकीं।', locked: 'लॉक', mainMenu: 'मुख्य मेनू', maximumValue: label => (label ? `${label} (अधिकतम मान)` : 'अधिकतम मान'), minimumValue: label => (label ? `${label} (न्यूनतम मान)` : 'न्यूनतम मान'), month: 'माह', more: 'अधिक', multipleValues: 'कई मान', newsMenu: 'समाचार मेनू', newsToggleMenu: 'समाचार मेनू बदलें', next: 'आगे', nextPage: 'अगला पृष्ठ', nextSlide: 'अगली स्लाइड', noData: 'कोई डेटा नहीं', noDataDescription: 'दिखाने के लिए अभी कोई प्रविष्टि नहीं है।', noOptions: 'कोई विकल्प नहीं', noResults: 'कोई परिणाम नहीं', noResultsDescription: 'कोई प्रविष्टि खोज या फ़िल्टर से मेल नहीं खाती।', notCompleted: 'अपूर्ण', notificationsRegion: hotkey => `सूचनाएं, फ़ोकस करने के लिए ${hotkey} दबाएं`, numCharacters: num => { if (num === 1) return '1 अक्षर'; return `${num} अक्षर`; }, numCharactersRemaining: num => { if (num === 1) return '1 अक्षर शेष'; return `${num} अक्षर शेष`; }, numEntries: (num, format) => { if (num === 0) return 'कोई प्रविष्टि नहीं'; if (num === 1) return `${formatCount(1, format)} प्रविष्टि`; return `${formatCount(num, format)} प्रविष्टियाँ`; }, numEntriesLoaded: (num, format) => { if (num === 0) return 'कोई प्रविष्टियाँ लोड नहीं हुईं'; if (num === 1) return `${formatCount(1, format)} प्रविष्टि लोड हुई`; return `${formatCount(num, format)} प्रविष्टियाँ लोड हुईं`; }, numEntriesOfTotal: (shown, total, format) => shown === 1 ? `${formatCount(total, format)} में से ${formatCount(1, format)} प्रविष्टि` : `${formatCount(total, format)} में से ${formatCount(shown, format)} प्रविष्टियाँ`, numOfTotalSelected: (num, total, format) => `${formatCount(total, format)} में से ${formatCount(num, format)} चयनित`, numOptionsAvailable: num => { if (num === 0) return 'कोई विकल्प उपलब्ध नहीं'; if (num === 1) return '1 विकल्प उपलब्ध'; return `${num} विकल्प उपलब्ध`; }, numOptionsSelected: num => { if (num === 0) return 'कोई विकल्प चयनित नहीं'; if (num === 1) return '1 विकल्प चयनित'; return `${num} विकल्प चयनित`; }, numSelected: (num, format) => { if (num === 0) return 'कोई चयन नहीं'; return `${formatCount(num, format)} चयनित`; }, numTotal: num => `कुल ${num}`, ok: 'OK', onThisPage: 'इस पृष्ठ पर', optionPosition: (label, position, total) => `${label}, ${position} / ${total}`, optionsLoadError: 'विकल्प लोड नहीं किए जा सके', page: 'पृष्ठ', pauseAnimation: 'एनिमेशन रोकें', pinToEnd: 'अंत में पिन करें', pinToStart: 'शुरुआत में पिन करें', playAnimation: 'एनिमेशन चलाएं', previousPage: 'पिछला पृष्ठ', previousSlide: 'पिछली स्लाइड', progress: 'प्रगति', quarter: 'तिमाही', rangeSelected: (start, end) => `${start} से ${end} तक चयनित`, // Calendar range selection rangeSelectingFrom: date => `${date} से श्रेणी का चयन किया जा रहा है…`, remove: 'हटाएं', reset: 'रीसेट', resetColumns: 'कॉलम रीसेट करें', resetFilters: 'सभी फ़िल्टर रीसेट करें', resize: 'आकार बदलें', resizeColumn: 'कॉलम का आकार बदलें', scrollableRegion: 'स्क्रॉल करने योग्य क्षेत्र', scrollToEnd: 'अंत तक स्क्रॉल करें', scrollToStart: 'आरंभ तक स्क्रॉल करें', search: 'खोजें', sectionPages: 'अनुभाग के पृष्ठ', sections: 'अनुभाग', selectAColorFromTheScreen: 'स्क्रीन से एक रंग चुनें', numRowsCopied: num => { if (num === 0) return 'कोई पंक्ति कॉपी नहीं हुई'; if (num === 1) return '1 पंक्ति कॉपी की गई'; return `${num} पंक्तियाँ कॉपी की गईं`; }, numRowsSelected: num => { if (num === 0) return 'कोई पंक्ति चयनित नहीं'; if (num === 1) return '1 पंक्ति चयनित'; return `${num} पंक्तियाँ चयनित`; }, rowLifted: (position, total) => `पंक्ति उठाई गई, स्थिति ${position} / ${total}. ऊपर-नीचे तीर कुंजियों से हिलाएँ, स्पेस से रखें, Escape से रद्द करें.`, rowMoved: (position, total) => `स्थिति ${position} / ${total}`, rowReorderCanceled: 'क्रम बदलना रद्द किया गया', selectAllEntries: 'सभी प्रविष्टियाँ चुनें', selectAllRows: 'सभी पंक्तियाँ चुनें', selectDate: 'तारीख़ चुनें', selectDateTime: 'तारीख़ और समय चुनें', selectGroup: 'समूह चुनें', selectRow: 'पंक्ति चुनें', selectRowNamed: name => `${name} चुनें`, showingNofMRows: (shown, total) => `दिखाई गई पंक्तियाँ: ${total} में से ${shown}`, showingRangeOfMore: (first, last) => `${last} से अधिक में से ${first}–${last}`, showingRangeOfTotal: (first, last, total) => `${total} में से ${first}–${last}`, sortAscending: 'आरोही क्रम में लगाएँ', sortDescending: 'अवरोही क्रम में लगाएँ', sortedByColumn: (column, direction) => `${column} के अनुसार क्रमबद्ध, ${direction === 'ascending' ? 'आरोही' : 'अवरोही'}`, sortingCleared: 'क्रमबद्धता हटाई गई', // Date picker selectTime: 'समय चुनें', showingPanelSpan: (first, last) => `${first} – ${last} दिखाया जा रहा है`, showingSinglePanel: month => `${month} दिखाया जा रहा है`, showLess: 'कम दिखाएं', showMore: 'अधिक दिखाएं', showPassword: 'पासवर्ड दिखाएं', skipToContent: 'सामग्री पर जाएँ', slideNum: slide => `स्लाइड ${slide}`, steps: 'चरण', stepXOfY: (step, total) => `${total} में से चरण ${step}`, tagAdded: tag => `${tag} जोड़ा गया`, tagAlreadyAdded: tag => `${tag} पहले से जोड़ा गया है`, tagInputKeyboardHelp: 'इस टैग को हटाने के लिए Backspace या Delete दबाएँ।', tagRemoved: tag => `${tag} हटाया गया`, timeInputBadInput: 'कृपया एक मान्य समय दर्ज करें.', timeInputRangeOverflow: 'समय बहुत बाद का है.', timeInputRangeUnderflow: 'समय बहुत पहले का है.', timeInputValueMissing: 'कृपया यह फ़ील्ड भरें.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'पूर्वाह्न/अपराह्न', timeSegmentHour: 'घंटा', timeSegmentMinute: 'मिनट', timeSegmentSecond: 'सेकंड', toggleColorFormat: 'रंग प्रारूप बदलें', toggleNavigationDrawer: 'नेविगेशन ड्रॉअर बदलें', tooFewTags: min => `कम से कम ${min} टैग जोड़ें`, tooManyTags: max => `${max} से अधिक टैग न जोड़ें`, tryAgain: 'पुनः प्रयास करें', unpinColumn: 'कॉलम अनपिन करें', unread: 'अपठित', unsort: 'सॉर्ट हटाएँ', until: 'तक', view: 'दृश्य', weekInputRangeOverflow: 'सप्ताह बहुत बाद का है.', weekInputRangeUnderflow: 'सप्ताह बहुत पहले का है.', weekInputValueMissing: 'कृपया एक सप्ताह चुनें।', weekLabel: week => `सप्ताह ${week}`, year: 'वर्ष', zoomIn: 'ज़ूम इन', zoomOut: 'ज़ूम आउट', documentViewerCanvas: 'दस्तावेज़', documentViewerContinuous: 'लंबवत स्क्रॉलिंग', documentViewerFitHeight: 'पृष्ठ ऊँचाई', documentViewerFitWidth: 'पृष्ठ चौड़ाई', documentViewerLoadError: 'पृष्ठ लोड नहीं किया जा सका', documentViewerPages: 'पृष्ठ', documentViewerRotateLeft: 'बाएँ घुमाएँ', documentViewerRotateRight: 'दाएँ घुमाएँ', documentViewerSinglePage: 'पृष्ठ स्क्रॉलिंग', documentViewerZoom: 'ज़ूम', editorAi: 'AI', editorAiSuggestions: 'AI सुझाव', editorDelete: 'हटाएँ', editorHideDeletedPages: 'हटाए गए पृष्ठ छुपाएँ', editorPage: page => `पृष्ठ ${page}`, editorRotate: '90° घुमाएँ', editorSelectAll: (selected, total) => `सभी चुनें (${selected} / ${total})`, editorSplit: 'विभाजित करें', editorUser: 'उपयोगकर्ता', editorZoom: 'ज़ूम', editorZoomIn: 'ज़ूम इन करें', previewPage: page => `पृष्ठ ${page}`, save: 'सहेजें', scanCancelBack: 'संपादन पर वापस जाएँ', scanCancelConfirm: 'अपलोड रद्द करें', scanCancelMessage: 'यदि आप रद्द करते हैं, तो फ़ाइल अपलोड नहीं होगी और परिवर्तन खो जाएँगे। यह क्रिया वापस नहीं ली जा सकती।', scanCancelTitle: 'अपलोड रद्द करें?', scanFilesDisplayError: 'फ़ाइल(ों) को प्रदर्शित नहीं किया जा सकता', scanFilesLoading: 'फ़ाइलें लोड हो रही हैं...', scanInvalidSession: 'सत्र अमान्य है। कृपया प्रक्रिया पुनः प्रारंभ करें।', scanSaveErrorBack: 'संपादन पर वापस जाएँ', scanSaveErrorMessage: 'सहेजते समय त्रुटि हुई। आप पुनः प्रयास कर सकते हैं या संपादन पर लौट सकते हैं।', scanSaveErrorRetry: 'पुनः प्रयास करें', scanSaveErrorTitle: 'सहेजते समय त्रुटि', scanSaving: 'फ़ाइल(ें) बनाई जा रही हैं', scanSessionLoading: 'edScan सत्र लोड हो रहा है...', scanTitle: 'AI-सहायता प्राप्त पृष्ठ संपादन', uploadDragAndDropDescription: 'आप फ़ाइल को यहाँ खींच सकते हैं या बटन से चुन सकते हैं।', uploadDragAndDropTitle: 'फ़ाइल अपलोड करें', uploadDropFile: 'फ़ाइल छोड़ें', uploadDropFiles: 'फ़ाइलें छोड़ें', uploadDuplicateFile: name => `${name} पहले से सूची में है`, uploadFailed: 'फ़ाइलें सफलतापूर्वक अपलोड नहीं हो सकीं', uploadFileCountSummary: (count, size) => `${count} फ़ाइल(ें) · ${size}`, uploadFileTooLarge: (name, size) => `फ़ाइल ${name} बहुत बड़ी है। अधिकतम आकार ${size} MB है।`, uploadFileTypeNotAllowed: type => `फ़ाइल प्रकार अनुमति नहीं है: ${type}`, uploadLimitExceeded: size => `फ़ाइल ${size} MB की अपलोड सीमा से अधिक है`, uploadLimitsExceeded: size => `फ़ाइलें ${size} MB की अपलोड सीमा से अधिक हैं`, uploadOr: 'या', uploadPreviewFile: name => `पूर्वावलोकन: ${name}`, uploadProgress: 'फ़ाइल(ें) अपलोड की जा रही हैं...', uploadRemoveFile: name => `हटाएं: ${name}`, uploadRetryFile: name => `पुनः प्रयास करें: ${name}`, uploadSelectFile: 'फ़ाइल चुनें', uploadSelectFiles: 'फ़ाइलें चुनें', uploadSuccess: (done, total) => `${done} में से ${total} फ़ाइलें अपलोड हुईं`, uploadTitle: 'फ़ाइल अपलोड करें', uploadTooManyFiles: max => `आप अधिकतम ${max} फ़ाइल(ें) अपलोड कर सकते हैं`, valueMissing: 'कृपया यह फ़ील्ड भरें।', valueMissingCheckbox: 'यदि आप आगे बढ़ना चाहते हैं तो कृपया यह बॉक्स चेक करें।', valueMissingRadio: 'कृपया इनमें से कोई एक विकल्प चुनें।', valueMissingSelect: 'कृपया सूची में से कोई आइटम चुनें।', typeMismatchEmail: 'कृपया एक ईमेल पता दर्ज करें।', typeMismatchUrl: 'कृपया एक URL दर्ज करें।', patternMismatch: 'कृपया अनुरोधित प्रारूप का पालन करें।', badInputNumber: 'कृपया एक संख्या दर्ज करें।', rangeUnderflow: min => `मान ${min} या उससे बड़ा होना चाहिए।`, rangeOverflow: max => `मान ${max} या उससे छोटा होना चाहिए।`, stepMismatch: (lower, upper) => `कृपया एक मान्य मान दर्ज करें। दो निकटतम मान्य मान ${lower} और ${upper} हैं।`, stepMismatchNearest: nearest => `कृपया एक मान्य मान दर्ज करें। निकटतम मान्य मान ${nearest} है।`, tooShort: (minimum, current) => `कृपया इस पाठ को ${minimum} वर्ण या अधिक तक बढ़ाएँ (आप वर्तमान में ${current} वर्ण उपयोग कर रहे हैं)।`, $code: 'hi', $dir: 'ltr', $name: 'हिन्दी' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/hi.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/hr.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'Ovaj sadržaj generirala je umjetna inteligencija', allTagsRemoved: 'Sve oznake uklonjene', appearance: 'Izgled', appearanceClassic: 'Klasičan', appearanceModern: 'Moderan', autosizeColumn: 'Prilagodi stupac sadržaju', back: 'Nazad', cancel: 'Otkaži', carousel: 'Vrtuljak', chooseDate: 'Odaberite datum', chooseDateAndTime: 'Odaberite datum i vrijeme', chooseTime: 'Odaberite vrijeme', clearEntry: 'Očisti unos', clearFilter: 'Očisti filtar', close: 'Zatvori', collapse: 'Sažmi', columnMenu: 'Mogućnosti stupca', columnMovedToPosition: (label, position, total) => `${label}, Pozicija ${position} od ${total}`, columns: 'Stupci', completed: 'Dovršeno', copied: 'Kopirano', copy: 'Kopiraj', currentValue: 'Trenutna vrijednost', dateInputBadInput: 'Unesite valjani datum.', dateInputRangeOverflow: 'Datum je prekasan.', dateInputRangeUnderflow: 'Datum je prerani.', dateInputValueMissing: 'Ispunite ovo polje.', dateNotSelectable: 'Ovaj datum nije moguće odabrati.', datePlaceholderDay: 'DD', datePlaceholderHalfyear: 'P', datePlaceholderMonth: 'MM', datePlaceholderQuarter: 'K', datePlaceholderWeek: 'TT', datePlaceholderYear: 'GGGG', // Date input dateRangeEndBeforeStart: 'Kraj razdoblja mora biti nakon njegova početka.', dateSegmentDay: 'Dan', dateSegmentHalfyear: 'Polugodište', dateSegmentMonth: 'Mjesec', dateSegmentQuarter: 'Kvartal', dateSegmentWeek: 'Tjedan', dateSegmentYear: 'Godina', datetimeInputBadInput: 'Unesite valjani datum i vrijeme.', datetimeInputRangeOverflow: 'Datum i vrijeme su prekasni.', datetimeInputRangeUnderflow: 'Datum i vrijeme su prerani.', datetimeInputValueMissing: 'Ispunite ovo polje.', decrement: 'Smanji', density: 'Gustoća', densityCompact: 'Kompaktno', densityDefault: 'Zadano', densitySpacious: 'Prostrano', disabled: 'Onemogućeno', dragToReorder: 'Povuci za promjenu redosljeda', dropFileHere: 'Dovucite datoteku ovdje ili kliknite za pregled', dropFilesHere: 'Dovucite datoteke ovdje ili kliknite za pregled', entriesPerPage: 'Unosa po stranici', error: 'Greška', expand: 'Proširi', filter: 'Filtriraj', filterByColumn: label => `Filtriraj ${label}`, filterFrom: 'Od', filterMax: 'Maksimum', filterMin: 'Minimum', filterTo: 'Do', finish: 'Završi', from: 'od', goToSlide: (slide, count) => `Idi na slajd ${slide} od ${count}`, halfyear: 'Polugodište', hideColumn: 'Sakrij stupac', hidePassword: 'Sakrij lozinku', increment: 'Povećaj', loadFailed: 'Redovi se nisu mogli učitati.', loading: 'Učitavanje', loadMoreFailed: 'Dodatni redovi nisu se mogli učitati.', locked: 'Zaključano', mainMenu: 'Glavni izbornik', maximumValue: label => (label ? `${label} (Najveća vrijednost)` : 'Najveća vrijednost'), minimumValue: label => (label ? `${label} (Najmanja vrijednost)` : 'Najmanja vrijednost'), month: 'Mjesec', more: 'Više', multipleValues: 'Višestruke vrijednosti', newsMenu: 'Izbornik novosti', newsToggleMenu: 'Zamijeni izbornik novosti', next: 'Sljedeće', nextPage: 'Sljedeća stranica', nextSlide: 'Sljedeći slajd', noData: 'Nema podataka', noDataDescription: 'Još nema unosa za prikaz.', noOptions: 'Nema opcija', noResults: 'Nema rezultata', noResultsDescription: 'Nijedan unos ne odgovara pretrazi ili filtrima.', notCompleted: 'Nije dovršeno', notificationsRegion: hotkey => `Obavijesti, pritisnite ${hotkey} za fokus`, numCharacters: num => { if (num === 1) return '1 znak'; const mod10 = num % 10; const mod100 = num % 100; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `${num} znaka`; return `${num} znakova`; }, numCharactersRemaining: num => { if (num === 1) return '1 preostali znak'; const mod10 = num % 10; const mod100 = num % 100; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `${num} preostala znaka`; return `${num} preostalih znakova`; }, numEntries: (num, format) => { if (num === 0) return 'Nema unosa'; if (num === 1) return `${formatCount(1, format)} unos`; return `${formatCount(num, format)} unosa`; }, numEntriesLoaded: (num, format) => { if (num === 0) return 'Nije učitan nijedan unos'; if (num === 1) return `Učitan ${formatCount(1, format)} unos`; return `Učitano ${formatCount(num, format)} unosa`; }, numEntriesOfTotal: (shown, total, format) => `${formatCount(shown, format)} od ${formatCount(total, format)} unosa`, numOfTotalSelected: (num, total, format) => `${formatCount(num, format)} od ${formatCount(total, format)} odabrano`, numOptionsAvailable: num => { if (num === 0) return 'Nije dostupna nijedna opcija'; if (num === 1) return '1 opcija je dostupna'; return `${num} dostupnih opcija`; }, numOptionsSelected: num => { if (num === 0) return 'Nije odabrana nijedna opcija'; if (num === 1) return '1 opcija je odabrana'; return `${num} odabranih opcija`; }, numSelected: (num, format) => { if (num === 0) return 'Nije odabrano'; return `${formatCount(num, format)} odabrano`; }, numTotal: num => `Ukupno ${num}`, ok: 'OK', onThisPage: 'Na ovoj stranici', optionPosition: (label, position, total) => `${label}, ${position} od ${total}`, optionsLoadError: 'Opcije se nisu mogle učitati', page: 'Stranica', pauseAnimation: 'Pauziraj animaciju', pinToEnd: 'Prikvači na kraj', pinToStart: 'Prikvači na početak', playAnimation: 'Reproduciraj animaciju', previousPage: 'Prethodna stranica', previousSlide: 'Prethodni slajd', progress: 'Napredak', quarter: 'Kvartal', rangeSelected: (start, end) => `Odabrano od ${start} do ${end}`, // Calendar range selection rangeSelectingFrom: date => `Odabir raspona od ${date}…`, remove: 'Makni', reset: 'Resetuj', resetColumns: 'Vrati stupce', resetFilters: 'Poništi sve filtre', resize: 'Promijeni veličinu', resizeColumn: 'Promijeni širinu stupca', scrollableRegion: 'Područje s mogućnošću pomicanja', scrollToEnd: 'Skrolaj do kraja', scrollToStart: 'Skrolaj na početak', search: 'Pretraži', sectionPages: 'Stranice odjeljka', sections: 'Odjeljci', selectAColorFromTheScreen: 'Odaberi boju sa ekrana', numRowsCopied: num => { if (num === 0) return 'Nije kopiran nijedan redak'; if (num === 1) return 'Kopiran 1 redak'; const mod10 = num % 10; const mod100 = num % 100; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `Kopirana ${num} retka`; return `Kopirano ${num} redaka`; }, numRowsSelected: num => { if (num === 0) return 'Nije odabran nijedan redak'; if (num === 1) return 'Odabran 1 redak'; const mod10 = num % 10; const mod100 = num % 100; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `Odabrana ${num} retka`; return `Odabrano ${num} redaka`; }, rowLifted: (position, total) => `Redak podignut, pozicija ${position} od ${total}. Strelicama gore i dolje pomičete, razmaknicom spuštate, tipkom Escape odustajete.`, rowMoved: (position, total) => `Pozicija ${position} od ${total}`, rowReorderCanceled: 'Premještanje otkazano', selectAllEntries: 'Odaberi sve stavke', selectAllRows: 'Odaberi sve retke', selectDate: 'Odaberi datum', selectDateTime: 'Odaberi datum i vrijeme', selectGroup: 'Odaberi grupu', selectRow: 'Odaberi redak', selectRowNamed: name => `Odaberi ${name}`, showingNofMRows: (shown, total) => `Prikazani retci: ${shown} od ${total}`, showingRangeOfMore: (first, last) => `${first}–${last} od više od ${last}`, showingRangeOfTotal: (first, last, total) => `${first}–${last} od ${total}`, sortAscending: 'Sortiraj uzlazno', sortDescending: 'Sortiraj silazno', sortedByColumn: (column, direction) => `Sortirano po ${column}, ${direction === 'ascending' ? 'uzlazno' : 'silazno'}`, sortingCleared: 'Sortiranje uklonjeno', // Date picker selectTime: 'Odaberi vrijeme', showingPanelSpan: (first, last) => `Prikaz ${first} – ${last}`, showingSinglePanel: month => `Prikaz ${month}`, showLess: 'Prikaži manje', showMore: 'Prikaži više', showPassword: 'Pokaži lozinku', skipToContent: 'Preskoči na sadržaj', slideNum: slide => `Slajd ${slide}`, steps: 'Koraci', stepXOfY: (step, total) => `Korak ${step} od ${total}`, tagAdded: tag => `${tag} dodano`, tagAlreadyAdded: tag => `Oznaka ${tag} već postoji`, tagInputKeyboardHelp: 'Pritisnite Backspace ili Delete za uklanjanje ove oznake.', tagRemoved: tag => `${tag} uklonjeno`, timeInputBadInput: 'Unesite valjano vrijeme.', timeInputRangeOverflow: 'Vrijeme je prekasno.', timeInputRangeUnderflow: 'Vrijeme je prerano.', timeInputValueMissing: 'Ispunite ovo polje.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'AM/PM', timeSegmentHour: 'Sat', timeSegmentMinute: 'Minuta', timeSegmentSecond: 'Sekunda', toggleColorFormat: 'Zamijeni format boje', toggleNavigationDrawer: 'Zamijeni navigacijsku ladicu', tooFewTags: min => { if (min === 1) return 'Dodajte najmanje 1 oznaku'; const mod10 = min % 10; const mod100 = min % 100; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `Dodajte najmanje ${min} oznake`; return `Dodajte najmanje ${min} oznaka`; }, tooManyTags: max => { if (max === 1) return 'Dodajte najviše 1 oznaku'; const mod10 = max % 10; const mod100 = max % 100; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `Dodajte najviše ${max} oznake`; return `Dodajte najviše ${max} oznaka`; }, tryAgain: 'Pokušaj ponovno', unpinColumn: 'Otkvači stupac', unread: 'Nepročitano', unsort: 'Poništi sortiranje', until: 'do', view: 'Prikaz', weekInputRangeOverflow: 'Tjedan je prekasan.', weekInputRangeUnderflow: 'Tjedan je prerani.', weekInputValueMissing: 'Odaberite tjedan.', weekLabel: week => `Tjedan ${week}`, year: 'Godina', zoomIn: 'Povećaj', zoomOut: 'Smanji', documentViewerCanvas: 'Dokument', documentViewerContinuous: 'Okomito pomicanje', documentViewerFitHeight: 'Prilagodi visini prozora', documentViewerFitWidth: 'Prilagodi širini prozora', documentViewerLoadError: 'Stranicu nije moguće učitati', documentViewerPages: 'Stranice', documentViewerRotateLeft: 'Okreni nalijevo', documentViewerRotateRight: 'Okreni nadesno', documentViewerSinglePage: 'Klizanje stranice', documentViewerZoom: 'Zumiranje', editorAi: 'AI', editorAiSuggestions: 'AI prijedlozi', editorDelete: 'Obriši', editorHideDeletedPages: 'Sakrij obrisane stranice', editorPage: page => `Stranica ${page}`, editorRotate: 'Rotiraj 90°', editorSelectAll: (selected, total) => `Odaberi sve (${selected} od ${total})`, editorSplit: 'Podijeli', editorUser: 'Korisnik', editorZoom: 'Zumiranje', editorZoomIn: 'Povećaj', previewPage: page => `Stranica ${page}`, save: 'Spremi', scanCancelBack: 'Natrag na uređivanje', scanCancelConfirm: 'Prekini prijenos', scanCancelMessage: 'Ako otkažete, datoteka neće biti prenesena i promjene će se izgubiti. Ova radnja se ne može poništiti.', scanCancelTitle: 'Prekinuti prijenos?', scanFilesDisplayError: 'Datoteke se ne mogu prikazati', scanFilesLoading: 'Učitavaju se datoteke...', scanInvalidSession: 'Sesija nije valjana. Ponovno pokrenite postupak.', scanSaveErrorBack: 'Natrag na uređivanje', scanSaveErrorMessage: 'Dogodila se greška pri spremanju. Možete pokušati ponovno ili se vratiti uređivanju.', scanSaveErrorRetry: 'Pokušaj ponovno', scanSaveErrorTitle: 'Greška pri spremanju', scanSaving: 'Stvaranje datoteka', scanSessionLoading: 'Učitava se edScan sesija...', scanTitle: 'AI uređivanje stranica', uploadDragAndDropDescription: 'Možete povući datoteku ovdje ili je odabrati pomoću gumba.', uploadDragAndDropTitle: 'Prenesi datoteku', uploadDropFile: 'Ispustite datoteku', uploadDropFiles: 'Ispustite datoteke', uploadDuplicateFile: name => `${name} već je na popisu`, uploadFailed: 'Prijenos datoteka nije uspio', uploadFileCountSummary: (count, size) => `${count} datoteka · ${size}`, uploadFileTooLarge: (name, size) => `Datoteka ${name} je prevelika. Maksimalna veličina je ${size} MB.`, uploadFileTypeNotAllowed: type => `Vrsta datoteke nije dopuštena: ${type}`, uploadLimitExceeded: size => `Datoteka prelazi ograničenje prijenosa od ${size} MB`, uploadLimitsExceeded: size => `Datoteke prelaze ograničenje prijenosa od ${size} MB`, uploadOr: 'ili', uploadPreviewFile: name => `Pregled: ${name}`, uploadProgress: 'Datoteke se prenose...', uploadRemoveFile: name => `Ukloni: ${name}`, uploadRetryFile: name => `Pokušaj ponovno: ${name}`, uploadSelectFile: 'Odaberi datoteku', uploadSelectFiles: 'Odaberi datoteke', uploadSuccess: (done, total) => `Preneseno ${done} od ${total} datoteka`, uploadTitle: 'Prenesi datoteku', uploadTooManyFiles: max => `Možete prenijeti najviše ${max} datoteka`, valueMissing: 'Ispunite ovo polje.', valueMissingCheckbox: 'Označite ovaj okvir ako želite nastaviti.', valueMissingRadio: 'Odaberite jednu od ovih opcija.', valueMissingSelect: 'Odaberite stavku s popisa.', typeMismatchEmail: 'Unesite adresu e-pošte.', typeMismatchUrl: 'Unesite URL.', patternMismatch: 'Pridržavajte se traženog formata.', badInputNumber: 'Unesite broj.', rangeUnderflow: min => `Vrijednost mora biti veća ili jednaka ${min}.`, rangeOverflow: max => `Vrijednost mora biti manja ili jednaka ${max}.`, stepMismatch: (lower, upper) => `Unesite valjanu vrijednost. Dvije najbliže valjane vrijednosti su ${lower} i ${upper}.`, stepMismatchNearest: nearest => `Unesite valjanu vrijednost. Najbliža valjana vrijednost je ${nearest}.`, tooShort: (minimum, current) => `Produljite ovaj tekst na ${minimum} znakova ili više (trenutačno koristite ${current} znakova).`, $code: 'hr', $dir: 'ltr', $name: 'Hrvatski' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/hr.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/hu.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'Ezt a tartalmat mesterséges intelligencia generálta', allTagsRemoved: 'Minden címke eltávolítva', appearance: 'Megjelenés', appearanceClassic: 'Klasszikus', appearanceModern: 'Modern', autosizeColumn: 'Oszlop igazítása a tartalomhoz', back: 'Vissza', cancel: 'Mégse', carousel: 'Körhinta', chooseDate: 'Válasszon dátumot', chooseDateAndTime: 'Válasszon dátumot és időpontot', chooseTime: 'Válasszon időpontot', clearEntry: 'Bejegyzés törlése', clearFilter: 'Szűrő törlése', close: 'Bezárás', collapse: 'Összecsukás', columnMenu: 'Oszlopbeállítások', columnMovedToPosition: (label, position, total) => `${label}, ${position}. pozíció, összesen ${total}`, columns: 'Oszlopok', completed: 'Kész', copied: 'Másolva', copy: 'Másolás', currentValue: 'Aktuális érték', dateInputBadInput: 'Adjon meg egy érvényes dátumot.', dateInputRangeOverflow: 'A dátum túl késői.', dateInputRangeUnderflow: 'A dátum túl korai.', dateInputValueMissing: 'Töltse ki ezt a mezőt.', dateNotSelectable: 'Ez a dátum nem választható ki.', datePlaceholderDay: 'NN', datePlaceholderHalfyear: 'F', datePlaceholderMonth: 'HH', datePlaceholderQuarter: 'N', datePlaceholderWeek: 'HH', datePlaceholderYear: 'ÉÉÉÉ', // Date input dateRangeEndBeforeStart: 'Az időszak végének a kezdete után kell lennie.', dateSegmentDay: 'Nap', dateSegmentHalfyear: 'Félév', dateSegmentMonth: 'Hónap', dateSegmentQuarter: 'Negyedév', dateSegmentWeek: 'Hét', dateSegmentYear: 'Év', datetimeInputBadInput: 'Adjon meg egy érvényes dátumot és időpontot.', datetimeInputRangeOverflow: 'A dátum és az időpont túl késői.', datetimeInputRangeUnderflow: 'A dátum és az időpont túl korai.', datetimeInputValueMissing: 'Töltse ki ezt a mezőt.', decrement: 'Csökkentés', density: 'Sűrűség', densityCompact: 'Tömör', densityDefault: 'Alapértelmezett', densitySpacious: 'Tágas', disabled: 'Letiltva', dragToReorder: 'Húzza az átrendezéshez', dropFileHere: 'Húzza ide a fájlt, vagy kattintson a tallózáshoz', dropFilesHere: 'Húzza ide a fájlokat, vagy kattintson a tallózáshoz', entriesPerPage: 'Bejegyzések oldalanként', error: 'Hiba', expand: 'Kibontás', filter: 'Szűrés', filterByColumn: label => `Szűrés ${label}`, filterFrom: 'Ettől', filterMax: 'Maximum', filterMin: 'Minimum', filterTo: 'Eddig', finish: 'Befejezés', from: '/', goToSlide: (slide, count) => `Ugrás a ${count}/${slide}. diára`, halfyear: 'Félév', hideColumn: 'Oszlop elrejtése', hidePassword: 'Jelszó elrejtése', increment: 'Növelés', loadFailed: 'A sorokat nem sikerült betölteni.', loading: 'Betöltés', loadMoreFailed: 'További sorokat nem sikerült betölteni.', locked: 'Zárolva', mainMenu: 'Főmenü', maximumValue: label => (label ? `${label} (Maximális érték)` : 'Maximális érték'), minimumValue: label => (label ? `${label} (Minimális érték)` : 'Minimális érték'), month: 'Hónap', more: 'Több', multipleValues: 'Több érték', newsMenu: 'Hírmenü', newsToggleMenu: 'Hírmenü váltása', next: 'Következő', nextPage: 'Következő oldal', nextSlide: 'Következő dia', noData: 'Nincs adat', noDataDescription: 'Még nincs megjeleníthető bejegyzés.', noOptions: 'Nincs elérhető lehetőség', noResults: 'Nincs találat', noResultsDescription: 'Egyetlen bejegyzés sem felel meg a keresésnek vagy a szűrőknek.', notCompleted: 'Nincs kész', notificationsRegion: hotkey => `Értesítések, fókuszhoz nyomja meg: ${hotkey}`, numCharacters: num => { if (num === 1) return '1 karakter'; return `${num} karakter`; }, numCharactersRemaining: num => { if (num === 1) return '1 karakter maradt'; return `${num} karakter maradt`; }, numEntries: (num, format) => { if (num === 0) return 'Nincsenek bejegyzések'; if (num === 1) return `${formatCount(1, format)} bejegyzés`; return `${formatCount(num, format)} bejegyzés`; }, numEntriesLoaded: (num, format) => { if (num === 0) return 'Nincsenek bejegyzések betöltve'; if (num === 1) return `${formatCount(1, format)} bejegyzés betöltve`; return `${formatCount(num, format)} bejegyzés betöltve`; }, numEntriesOfTotal: (shown, total, format) => `${formatCount(total, format)} bejegyzésből ${formatCount(shown, format)}`, numOfTotalSelected: (num, total, format) => `${formatCount(num, format)} / ${formatCount(total, format)} kijelölve`, numOptionsAvailable: num => { if (num === 0) return 'Nincs elérhető lehetőség'; if (num === 1) return '1 lehetőség elérhető'; return `${num} lehetőség elérhető`; }, numOptionsSelected: num => { if (num === 0) return 'Nincsenek kiválasztva opciók'; if (num === 1) return '1 lehetőség kiválasztva'; return `${num} lehetőség kiválasztva`; }, numSelected: (num, format) => { if (num === 0) return 'Nincs kijelölés'; return `${formatCount(num, format)} kijelölve`; }, numTotal: num => `Összesen ${num}`, ok: 'OK', onThisPage: 'Ezen az oldalon', optionPosition: (label, position, total) => `${label}, ${position} / ${total}`, optionsLoadError: 'A lehetőségeket nem sikerült betölteni', page: 'Oldal', pauseAnimation: 'Animáció szüneteltetése', pinToEnd: 'Rögzítés a végére', pinToStart: 'Rögzítés az elejére', playAnimation: 'Animáció lejátszása', previousPage: 'Előző oldal', previousSlide: 'Előző dia', progress: 'Folyamat', quarter: 'Negyedév', rangeSelected: (start, end) => `${start}–${end} kijelölve`, // Calendar range selection rangeSelectingFrom: date => `Tartomány kijelölése innen: ${date}…`, remove: 'Eltávolítás', reset: 'Visszaállítás', resetColumns: 'Oszlopok visszaállítása', resetFilters: 'Összes szűrő visszaállítása', resize: 'Átméretezés', resizeColumn: 'Oszlopszélesség módosítása', scrollableRegion: 'Görgethető terület', scrollToEnd: 'Görgessen a végére', scrollToStart: 'Görgessen az elejére', search: 'Keresés', sectionPages: 'Szakasz oldalai', sections: 'Szakaszok', selectAColorFromTheScreen: 'Szín választása a képernyőről', numRowsCopied: num => { if (num === 0) return 'Nincs másolt sor'; if (num === 1) return '1 sor másolva'; return `${num} sor másolva`; }, numRowsSelected: num => { if (num === 0) return 'Nincs kijelölt sor'; if (num === 1) return '1 sor kijelölve'; return `${num} sor kijelölve`; }, rowLifted: (position, total) => `Sor felemelve, ${position}. pozíció, összesen ${total}. A fel és le nyilakkal mozgathatja, szóközzel leteheti, Escape billentyűvel megszakíthatja.`, rowMoved: (position, total) => `${position}. pozíció, összesen ${total}`, rowReorderCanceled: 'Áthelyezés megszakítva', selectAllEntries: 'Összes elem kijelölése', selectAllRows: 'Az összes sor kiválasztása', selectDate: 'Dátum kiválasztása', selectDateTime: 'Dátum és idő kiválasztása', selectGroup: 'Csoport kijelölése', selectRow: 'Sor kiválasztása', selectRowNamed: name => `${name} kiválasztása`, showingNofMRows: (shown, total) => `${shown} / ${total} sor megjelenítve`, showingRangeOfMore: (first, last) => `${first}–${last} / több mint ${last}`, showingRangeOfTotal: (first, last, total) => `${first}–${last} / ${total}`, sortAscending: 'Rendezés növekvő sorrendben', sortDescending: 'Rendezés csökkenő sorrendben', sortedByColumn: (column, direction) => `Rendezve: ${column}, ${direction === 'ascending' ? 'növekvő' : 'csökkenő'}`, sortingCleared: 'Rendezés eltávolítva', // Date picker selectTime: 'Időpont kiválasztása', showingPanelSpan: (first, last) => `${first} – ${last} megjelenítése`, showingSinglePanel: month => `${month} megjelenítése`, showLess: 'Mutass kevesebbet', showMore: 'Mutass többet', showPassword: 'Jelszó megjelenítése', skipToContent: 'Ugrás a tartalomra', slideNum: slide => `${slide}. dia`, steps: 'Lépések', stepXOfY: (step, total) => `${step}. lépés / ${total}`, tagAdded: tag => `${tag} hozzáadva`, tagAlreadyAdded: tag => `${tag} már hozzá van adva`, tagInputKeyboardHelp: 'A címke eltávolításához nyomja meg a Backspace vagy a Delete billentyűt.', tagRemoved: tag => `${tag} eltávolítva`, timeInputBadInput: 'Adjon meg egy érvényes időpontot.', timeInputRangeOverflow: 'Az időpont túl késői.', timeInputRangeUnderflow: 'Az időpont túl korai.', timeInputValueMissing: 'Töltse ki ezt a mezőt.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'óó', timePlaceholderMinute: 'pp', timePlaceholderSecond: 'mm', // Time input timeSegmentDayPeriod: 'Napszak', timeSegmentHour: 'Óra', timeSegmentMinute: 'Perc', timeSegmentSecond: 'Másodperc', toggleColorFormat: 'Színformátum változtatása', toggleNavigationDrawer: 'Navigációs panel váltása', tooFewTags: min => `Adjon hozzá legalább ${min} címkét`, tooManyTags: max => `Legfeljebb ${max} címkét adjon hozzá`, tryAgain: 'Próbálja újra', unpinColumn: 'Oszlop rögzítésének feloldása', unread: 'Olvasatlan', unsort: 'Rendezés megszüntetése', until: 'eddig', view: 'Nézet', weekInputRangeOverflow: 'A hét túl késői.', weekInputRangeUnderflow: 'A hét túl korai.', weekInputValueMissing: 'Válasszon egy hetet.', weekLabel: week => `${week}. hét`, year: 'Év', zoomIn: 'Nagyítás', zoomOut: 'Kicsinyítés', documentViewerCanvas: 'Dokumentum', documentViewerContinuous: 'Függőleges görgetés', documentViewerFitHeight: 'Oldalmagasság', documentViewerFitWidth: 'Oldalszélesség', documentViewerLoadError: 'Az oldal nem tölthető be', documentViewerPages: 'Oldalak', documentViewerRotateLeft: 'Forgatás balra', documentViewerRotateRight: 'Forgatás jobbra', documentViewerSinglePage: 'Oldalgörgetés', documentViewerZoom: 'Nagyítás', editorAi: 'MI', editorAiSuggestions: 'MI-javaslatok', editorDelete: 'Törlés', editorHideDeletedPages: 'Törölt oldalak elrejtése', editorPage: page => `${page}. oldal`, editorRotate: 'Forgatás 90°', editorSelectAll: (selected, total) => `Összes kijelölése (${selected}/${total})`, editorSplit: 'Felosztás', editorUser: 'Felhasználó', editorZoom: 'Nagyítás', editorZoomIn: 'Nagyítás', previewPage: page => `${page}. oldal`, save: 'Mentés', scanCancelBack: 'Vissza a szerkesztéshez', scanCancelConfirm: 'Feltöltés megszakítása', scanCancelMessage: 'Ha megszakítja, a fájl nem kerül feltöltésre, és a módosítások elvesznek. Ez a művelet nem vonható vissza.', scanCancelTitle: 'Feltöltés megszakítása?', scanFilesDisplayError: 'A fájl(ok) nem jeleníthetők meg', scanFilesLoading: 'Fájlok betöltése...', scanInvalidSession: 'A munkamenet érvénytelen. Kérjük, indítsa újra a folyamatot.', scanSaveErrorBack: 'Vissza a szerkesztéshez', scanSaveErrorMessage: 'Hiba történt mentés közben. Próbálja újra, vagy térjen vissza a szerkesztéshez.', scanSaveErrorRetry: 'Próbálja újra', scanSaveErrorTitle: 'Hiba mentés közben', scanSaving: 'Fájl(ok) létrehozása', scanSessionLoading: 'edScan munkamenet betöltése...', scanTitle: 'MI által támogatott oldalszerkesztés', uploadDragAndDropDescription: 'Ide húzhat egy fájlt, vagy kiválaszthatja a gomb segítségével.', uploadDragAndDropTitle: 'Fájl feltöltése', uploadDropFile: 'Ejtse ide a fájlt', uploadDropFiles: 'Ejtse ide a fájlokat', uploadDuplicateFile: name => `${name} már szerepel a listán`, uploadFailed: 'A fájlok feltöltése sikertelen volt', uploadFileCountSummary: (count, size) => `${count} fájl · ${size}`, uploadFileTooLarge: (name, size) => `A(z) ${name} fájl túl nagy. A maximális méret ${size} MB.`, uploadFileTypeNotAllowed: type => `A fájltípus nem engedélyezett: ${type}`, uploadLimitExceeded: size => `A fájl meghaladja a ${size} MB feltöltési korlátot`, uploadLimitsExceeded: size => `A fájlok meghaladják a ${size} MB feltöltési korlátot`, uploadOr: 'vagy', uploadPreviewFile: name => `Előnézet: ${name}`, uploadProgress: 'Fájl(ok) feltöltése folyamatban...', uploadRemoveFile: name => `Eltávolítás: ${name}`, uploadRetryFile: name => `Próbálja újra: ${name}`, uploadSelectFile: 'Fájl kiválasztása', uploadSelectFiles: 'Fájlok kiválasztása', uploadSuccess: (done, total) => `${done}/${total} fájl feltöltve`, uploadTitle: 'Fájl feltöltése', uploadTooManyFiles: max => `Legfeljebb ${max} fájlt tölthet fel`, valueMissing: 'Töltse ki ezt a mezőt.', valueMissingCheckbox: 'Jelölje be ezt a jelölőnégyzetet, ha folytatni szeretné.', valueMissingRadio: 'Válasszon a lehetőségek közül.', valueMissingSelect: 'Válasszon egy elemet a listából.', typeMismatchEmail: 'Adjon meg egy e-mail-címet.', typeMismatchUrl: 'Adjon meg egy URL-címet.', patternMismatch: 'Tartsa be a kért formátumot.', badInputNumber: 'Adjon meg egy számot.', rangeUnderflow: min => `Az értéknek legalább ${min} nagyságúnak kell lennie.`, rangeOverflow: max => `Az érték legfeljebb ${max} lehet.`, stepMismatch: (lower, upper) => `Adjon meg egy érvényes értéket. A két legközelebbi érvényes érték: ${lower} és ${upper}.`, stepMismatchNearest: nearest => `Adjon meg egy érvényes értéket. A legközelebbi érvényes érték: ${nearest}.`, tooShort: (minimum, current) => `Hosszabbítsa meg ezt a szöveget legalább ${minimum} karakterre (jelenleg ${current} karaktert használ).`, $code: 'hu', $dir: 'ltr', $name: 'Magyar' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/hu.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/id.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'Konten ini dibuat oleh AI', allTagsRemoved: 'Semua tag dihapus', appearance: 'Gaya', appearanceClassic: 'Klasik', appearanceModern: 'Modern', autosizeColumn: 'Sesuaikan kolom dengan isi', back: 'Kembali', cancel: 'Batal', carousel: 'Karousel', chooseDate: 'Pilih tanggal', chooseDateAndTime: 'Pilih tanggal dan waktu', chooseTime: 'Pilih waktu', clearEntry: 'Hapus entri', clearFilter: 'Hapus filter', close: 'Tutup', collapse: 'Ciutkan', columnMenu: 'Opsi kolom', columnMovedToPosition: (label, position, total) => `${label}, Posisi ${position} dari ${total}`, columns: 'Kolom', completed: 'Selesai', copied: 'Disalin', copy: 'Salin', currentValue: 'Nilai saat ini', dateInputBadInput: 'Masukkan tanggal yang valid.', dateInputRangeOverflow: 'Tanggal terlalu lambat.', dateInputRangeUnderflow: 'Tanggal terlalu awal.', dateInputValueMissing: 'Isi bidang ini.', dateNotSelectable: 'Tanggal ini tidak dapat dipilih.', datePlaceholderDay: 'hh', datePlaceholderHalfyear: 's', datePlaceholderMonth: 'bb', datePlaceholderQuarter: 'k', datePlaceholderWeek: 'mm', datePlaceholderYear: 'tttt', // Date input dateRangeEndBeforeStart: 'Akhir periode harus setelah awalnya.', dateSegmentDay: 'Hari', dateSegmentHalfyear: 'Semester', dateSegmentMonth: 'Bulan', dateSegmentQuarter: 'Kuartal', dateSegmentWeek: 'Minggu', dateSegmentYear: 'Tahun', datetimeInputBadInput: 'Masukkan tanggal dan waktu yang valid.', datetimeInputRangeOverflow: 'Tanggal dan waktu terlalu lambat.', datetimeInputRangeUnderflow: 'Tanggal dan waktu terlalu awal.', datetimeInputValueMissing: 'Isi bidang ini.', decrement: 'Kurangi', density: 'Kerapatan', densityCompact: 'Ringkas', densityDefault: 'Bawaan', densitySpacious: 'Lega', disabled: 'Dinonaktifkan', dragToReorder: 'Seret untuk mengurutkan ulang', dropFileHere: 'Lepas file di sini atau klik untuk menelusuri', dropFilesHere: 'Lepas file di sini atau klik untuk menelusuri', entriesPerPage: 'Entri per halaman', error: 'Kesalahan', expand: 'Perluas', filter: 'Filter', filterByColumn: label => `Filter ${label}`, filterFrom: 'Dari', filterMax: 'Maksimum', filterMin: 'Minimum', filterTo: 'Sampai', finish: 'Selesai', from: 'dari', goToSlide: (slide, count) => `Pergi ke slide ${slide} dari ${count}`, halfyear: 'Semester', hideColumn: 'Sembunyikan kolom', hidePassword: 'Sembunyikan sandi', increment: 'Tambah', loadFailed: 'Baris tidak dapat dimuat.', loading: 'Memuat', loadMoreFailed: 'Baris lainnya tidak dapat dimuat.', locked: 'Terkunci', mainMenu: 'Menu utama', maximumValue: label => (label ? `${label} (Nilai maksimum)` : 'Nilai maksimum'), minimumValue: label => (label ? `${label} (Nilai minimum)` : 'Nilai minimum'), month: 'Bulan', more: 'Lainnya', multipleValues: 'Beberapa nilai', newsMenu: 'Menu berita', newsToggleMenu: 'Alihkan menu berita', next: 'Berikutnya', nextPage: 'Halaman berikutnya', nextSlide: 'Slide berikutnya', noData: 'Tidak ada data', noDataDescription: 'Belum ada entri untuk ditampilkan.', noOptions: 'Tidak ada opsi', noResults: 'Tidak ada hasil', noResultsDescription: 'Tidak ada entri yang cocok dengan pencarian atau filter.', notCompleted: 'Belum selesai', notificationsRegion: hotkey => `Notifikasi, tekan ${hotkey} untuk fokus`, numCharacters: num => { if (num === 1) return '1 karakter'; return `${num} karakter`; }, numCharactersRemaining: num => { if (num === 1) return '1 karakter tersisa'; return `${num} karakter tersisa`; }, numEntries: (num, format) => { if (num === 0) return 'Tidak ada entri'; return `${formatCount(num, format)} entri`; }, numEntriesLoaded: (num, format) => { if (num === 0) return 'Tidak ada entri yang dimuat'; if (num === 1) return `${formatCount(1, format)} entri dimuat`; return `${formatCount(num, format)} entri dimuat`; }, numEntriesOfTotal: (shown, total, format) => `${formatCount(shown, format)} dari ${formatCount(total, format)} entri`, numOfTotalSelected: (num, total, format) => `${formatCount(num, format)} dari ${formatCount(total, format)} dipilih`, numOptionsAvailable: num => { if (num === 0) return 'Tidak ada opsi yang tersedia'; if (num === 1) return '1 opsi yang tersedia'; return `${num} opsi yang tersedia`; }, numOptionsSelected: num => { if (num === 0) return 'Tidak ada opsi yang dipilih'; if (num === 1) return '1 opsi yang dipilih'; return `${num} opsi yang dipilih`; }, numSelected: (num, format) => { if (num === 0) return 'Tidak ada yang dipilih'; return `${formatCount(num, format)} dipilih`; }, numTotal: num => `Total ${num}`, ok: 'OK', onThisPage: 'Di halaman ini', optionPosition: (label, position, total) => `${label}, ${position} dari ${total}`, optionsLoadError: 'Opsi tidak dapat dimuat', page: 'Halaman', pauseAnimation: 'Jeda animasi', pinToEnd: 'Sematkan di akhir', pinToStart: 'Sematkan di awal', playAnimation: 'Putar animasi', previousPage: 'Halaman sebelumnya', previousSlide: 'Slide sebelumnya', progress: 'Kemajuan', quarter: 'Kuartal', rangeSelected: (start, end) => `${start} hingga ${end} dipilih`, // Calendar range selection rangeSelectingFrom: date => `Memilih rentang dari ${date}…`, remove: 'Hapus', reset: 'Atur ulang', resetColumns: 'Atur ulang kolom', resetFilters: 'Atur ulang semua filter', resize: 'Ubah ukuran', resizeColumn: 'Ubah ukuran kolom', scrollableRegion: 'Area yang dapat digulir', scrollToEnd: 'Gulir ke akhir', scrollToStart: 'Gulir ke awal', search: 'Cari', sectionPages: 'Halaman bagian', sections: 'Bagian', selectAColorFromTheScreen: 'Pilih warna dari layar', numRowsCopied: num => { if (num === 0) return 'Tidak ada baris yang disalin'; return `${num} baris disalin`; }, numRowsSelected: num => { if (num === 0) return 'Tidak ada baris yang dipilih'; return `${num} baris dipilih`; }, rowLifted: (position, total) => `Baris diangkat, posisi ${position} dari ${total}. Gunakan panah atas dan bawah untuk memindahkan, Spasi untuk meletakkan, Escape untuk membatalkan.`, rowMoved: (position, total) => `Posisi ${position} dari ${total}`, rowReorderCanceled: 'Pengubahan urutan dibatalkan', selectAllEntries: 'Pilih semua entri', selectAllRows: 'Pilih semua baris', selectDate: 'Pilih tanggal', selectDateTime: 'Pilih tanggal dan waktu', selectGroup: 'Pilih grup', selectRow: 'Pilih baris', selectRowNamed: name => `Pilih ${name}`, showingNofMRows: (shown, total) => `Menampilkan ${shown} dari ${total} baris`, showingRangeOfMore: (first, last) => `${first}–${last} dari lebih dari ${last}`, showingRangeOfTotal: (first, last, total) => `${first}–${last} dari ${total}`, sortAscending: 'Urutkan naik', sortDescending: 'Urutkan turun', sortedByColumn: (column, direction) => `Diurutkan berdasarkan ${column}, ${direction === 'ascending' ? 'menaik' : 'menurun'}`, sortingCleared: 'Pengurutan dihapus', // Date picker selectTime: 'Pilih waktu', showingPanelSpan: (first, last) => `Menampilkan ${first} – ${last}`, showingSinglePanel: month => `Menampilkan ${month}`, showLess: 'Tampilkan lebih sedikit', showMore: 'Tampilkan lebih banyak', showPassword: 'Tampilkan sandi', skipToContent: 'Lanjutkan ke konten', slideNum: slide => `Slide ${slide}`, steps: 'Langkah-langkah', stepXOfY: (step, total) => `Langkah ${step} dari ${total}`, tagAdded: tag => `${tag} ditambahkan`, tagAlreadyAdded: tag => `${tag} sudah ditambahkan`, tagInputKeyboardHelp: 'Tekan Backspace atau Delete untuk menghapus tag ini.', tagRemoved: tag => `${tag} dihapus`, timeInputBadInput: 'Masukkan waktu yang valid.', timeInputRangeOverflow: 'Waktu terlalu lambat.', timeInputRangeUnderflow: 'Waktu terlalu awal.', timeInputValueMissing: 'Isi bidang ini.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'AM/PM', timeSegmentHour: 'Jam', timeSegmentMinute: 'Menit', timeSegmentSecond: 'Detik', toggleColorFormat: 'Beralih format warna', toggleNavigationDrawer: 'Alihkan panel navigasi', tooFewTags: min => `Tambahkan minimal ${min} tag`, tooManyTags: max => `Tambahkan tidak lebih dari ${max} tag`, tryAgain: 'Coba lagi', unpinColumn: 'Lepas sematan kolom', unread: 'Belum dibaca', unsort: 'Batalkan urutan', until: 'sampai', view: 'Tampilan', weekInputRangeOverflow: 'Minggu terlalu lambat.', weekInputRangeUnderflow: 'Minggu terlalu awal.', weekInputValueMissing: 'Pilih minggu.', weekLabel: week => `Minggu ${week}`, year: 'Tahun', zoomIn: 'Perbesar', zoomOut: 'Perkecil', documentViewerCanvas: 'Dokumen', documentViewerContinuous: 'Pengguliran vertikal', documentViewerFitHeight: 'Tinggi halaman', documentViewerFitWidth: 'Lebar halaman', documentViewerLoadError: 'Halaman tidak dapat dimuat', documentViewerPages: 'Halaman', documentViewerRotateLeft: 'Putar ke kiri', documentViewerRotateRight: 'Putar ke kanan', documentViewerSinglePage: 'Pengguliran halaman', documentViewerZoom: 'Perbesaran', editorAi: 'AI', editorAiSuggestions: 'Saran AI', editorDelete: 'Hapus', editorHideDeletedPages: 'Sembunyikan halaman yang dihapus', editorPage: page => `Halaman ${page}`, editorRotate: 'Putar 90°', editorSelectAll: (selected, total) => `Pilih semua (${selected} dari ${total})`, editorSplit: 'Pisahkan', editorUser: 'Pengguna', editorZoom: 'Perbesaran', editorZoomIn: 'Perbesar', previewPage: page => `Halaman ${page}`, save: 'Simpan', scanCancelBack: 'Kembali ke pengeditan', scanCancelConfirm: 'Batalkan unggahan', scanCancelMessage: 'Jika dibatalkan, file tidak akan diunggah dan perubahan akan hilang. Tindakan ini tidak dapat dibatalkan.', scanCancelTitle: 'Batalkan unggahan?', scanFilesDisplayError: 'File tidak dapat ditampilkan', scanFilesLoading: 'Memuat file...', scanInvalidSession: 'Sesi tidak valid. Silakan mulai ulang proses.', scanSaveErrorBack: 'Kembali ke pengeditan', scanSaveErrorMessage: 'Terjadi kesalahan saat menyimpan. Anda dapat mencoba lagi atau kembali ke pengeditan.', scanSaveErrorRetry: 'Coba lagi', scanSaveErrorTitle: 'Kesalahan saat menyimpan', scanSaving: 'Membuat file', scanSessionLoading: 'Memuat sesi edScan...', scanTitle: 'Pengeditan halaman dengan bantuan AI', uploadDragAndDropDescription: 'Anda dapat menyeret file ke sini atau memilihnya menggunakan tombol.', uploadDragAndDropTitle: 'Unggah file', uploadDropFile: 'Lepaskan file', uploadDropFiles: 'Lepaskan file', uploadDuplicateFile: name => `${name} sudah ada dalam daftar`, uploadFailed: 'File gagal diunggah', uploadFileCountSummary: (count, size) => `${count} file · ${size}`, uploadFileTooLarge: (name, size) => `File ${name} terlalu besar. Ukuran maksimum adalah ${size} MB.`, uploadFileTypeNotAllowed: type => `Jenis file tidak diizinkan: ${type}`, uploadLimitExceeded: size => `File melebihi batas unggahan ${size} MB`, uploadLimitsExceeded: size => `File melebihi batas unggahan ${size} MB`, uploadOr: 'atau', uploadPreviewFile: name => `Pratinjau: ${name}`, uploadProgress: 'File sedang diunggah...', uploadRemoveFile: name => `Hapus: ${name}`, uploadRetryFile: name => `Coba lagi: ${name}`, uploadSelectFile: 'Pilih file', uploadSelectFiles: 'Pilih file', uploadSuccess: (done, total) => `${done} dari ${total} file diunggah`, uploadTitle: 'Unggah file', uploadTooManyFiles: max => `Anda dapat mengunggah maksimal ${max} file`, valueMissing: 'Harap isi bidang ini.', valueMissingCheckbox: 'Centang kotak ini jika Anda ingin melanjutkan.', valueMissingRadio: 'Pilih salah satu opsi ini.', valueMissingSelect: 'Pilih item dalam daftar.', typeMismatchEmail: 'Masukkan alamat email.', typeMismatchUrl: 'Masukkan URL.', patternMismatch: 'Ikuti format yang diminta.', badInputNumber: 'Masukkan angka.', rangeUnderflow: min => `Nilai harus lebih besar dari atau sama dengan ${min}.`, rangeOverflow: max => `Nilai harus lebih kecil dari atau sama dengan ${max}.`, stepMismatch: (lower, upper) => `Masukkan nilai yang valid. Dua nilai valid terdekat adalah ${lower} dan ${upper}.`, stepMismatchNearest: nearest => `Masukkan nilai yang valid. Nilai valid terdekat adalah ${nearest}.`, tooShort: (minimum, current) => `Panjangkan teks ini menjadi ${minimum} karakter atau lebih (saat ini Anda menggunakan ${current} karakter).`, $code: 'id', $dir: 'ltr', $name: 'Bahasa Indonesia' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/id.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/it.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: \"Questo contenuto è stato generato dall'IA\", allTagsRemoved: 'Tutti i tag rimossi', appearance: 'Aspetto', appearanceClassic: 'Classico', appearanceModern: 'Moderno', autosizeColumn: 'Adatta la colonna al contenuto', back: 'Indietro', cancel: 'Annulla', carousel: 'Carosello', chooseDate: 'Scegli una data', chooseDateAndTime: 'Scegli data e orario', chooseTime: 'Scegli un orario', clearEntry: 'Cancella inserimento', clearFilter: 'Cancella filtro', close: 'Chiudi', collapse: 'Comprimi', columnMenu: 'Opzioni colonna', columnMovedToPosition: (label, position, total) => `${label}, Posizione ${position} di ${total}`, columns: 'Colonne', completed: 'Completato', copied: 'Copiato', copy: 'Copia', currentValue: 'Valore attuale', dateInputBadInput: 'Inserisci una data valida.', dateInputRangeOverflow: 'La data è troppo avanti.', dateInputRangeUnderflow: 'La data è troppo indietro.', dateInputValueMissing: 'Compila questo campo.', dateNotSelectable: 'Questa data non è selezionabile.', datePlaceholderDay: 'gg', datePlaceholderHalfyear: 's', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 't', datePlaceholderWeek: 'ss', datePlaceholderYear: 'aaaa', // Date input dateRangeEndBeforeStart: 'La fine del periodo deve essere successiva al suo inizio.', dateSegmentDay: 'Giorno', dateSegmentHalfyear: 'Semestre', dateSegmentMonth: 'Mese', dateSegmentQuarter: 'Trimestre', dateSegmentWeek: 'Settimana', dateSegmentYear: 'Anno', datetimeInputBadInput: 'Inserisci una data e un orario validi.', datetimeInputRangeOverflow: 'La data e l’orario sono troppo avanti.', datetimeInputRangeUnderflow: 'La data e l’orario sono troppo indietro.', datetimeInputValueMissing: 'Compila questo campo.', decrement: 'Diminuisci', density: 'Densità', densityCompact: 'Compatta', densityDefault: 'Predefinita', densitySpacious: 'Ampia', disabled: 'Disabilitato', dragToReorder: 'Trascina per riordinare', dropFileHere: 'Trascina il file qui o clicca per sfogliare', dropFilesHere: 'Trascina i file qui o clicca per sfogliare', entriesPerPage: 'Voci per pagina', error: 'Errore', expand: 'Espandi', filter: 'Filtra', filterByColumn: label => `Filtra ${label}`, filterFrom: 'Da', filterMax: 'Massimo', filterMin: 'Minimo', filterTo: 'A', finish: 'Fine', from: 'di', goToSlide: (slide, count) => `Vai alla diapositiva ${slide} di ${count}`, halfyear: 'Semestre', hideColumn: 'Nascondi colonna', hidePassword: 'Nascondi password', increment: 'Aumenta', loadFailed: 'Impossibile caricare le righe.', loading: 'In caricamento', loadMoreFailed: 'Impossibile caricare altre righe.', locked: 'Bloccato', mainMenu: 'Menu principale', maximumValue: label => (label ? `${label} (Valore massimo)` : 'Valore massimo'), minimumValue: label => (label ? `${label} (Valore minimo)` : 'Valore minimo'), month: 'Mese', more: 'Altro', multipleValues: 'Valori multipli', newsMenu: 'Menu delle notizie', newsToggleMenu: 'Attiva/disattiva il menu delle notizie', next: 'Avanti', nextPage: 'Pagina successiva', nextSlide: 'Prossima diapositiva', noData: 'Nessun dato', noDataDescription: 'Non ci sono ancora voci da mostrare.', noOptions: 'Nessuna opzione', noResults: 'Nessun risultato', noResultsDescription: 'Nessuna voce corrisponde alla ricerca o ai filtri.', notCompleted: 'Non completato', notificationsRegion: hotkey => `Notifiche, premi ${hotkey} per mettere a fuoco`, numCharacters: num => { if (num === 1) return '1 carattere'; return `${num} caratteri`; }, numCharactersRemaining: num => { if (num === 1) return '1 carattere rimanente'; return `${num} caratteri rimanenti`; }, numEntries: (num, format) => { if (num === 0) return 'Nessuna voce'; if (num === 1) return `${formatCount(1, format)} voce`; return `${formatCount(num, format)} voci`; }, numEntriesLoaded: (num, format) => { if (num === 0) return 'Nessuna voce caricata'; if (num === 1) return `${formatCount(1, format)} voce caricata`; return `${formatCount(num, format)} voci caricate`; }, numEntriesOfTotal: (shown, total, format) => total === 1 ? `${formatCount(shown, format)} di ${formatCount(1, format)} voce` : `${formatCount(shown, format)} di ${formatCount(total, format)} voci`, numOfTotalSelected: (num, total, format) => `${formatCount(num, format)} di ${formatCount(total, format)} selezionate`, numOptionsAvailable: num => { if (num === 0) return 'Nessuna opzione disponibile'; if (num === 1) return '1 opzione disponibile'; return `${num} opzioni disponibili`; }, numOptionsSelected: num => { if (num === 0) return 'Nessuna opzione selezionata'; if (num === 1) return '1 opzione selezionata'; return `${num} opzioni selezionate`; }, numSelected: (num, format) => { if (num === 0) return 'Nessuna selezione'; if (num === 1) return `${formatCount(1, format)} selezionata`; return `${formatCount(num, format)} selezionate`; }, numTotal: num => `${num} in totale`, ok: 'OK', onThisPage: 'In questa pagina', optionPosition: (label, position, total) => `${label}, ${position} di ${total}`, optionsLoadError: 'Impossibile caricare le opzioni', page: 'Pagina', pauseAnimation: 'Metti in pausa animazione', pinToEnd: 'Fissa alla fine', pinToStart: \"Fissa all'inizio\", playAnimation: 'Riproduci animazione', previousPage: 'Pagina precedente', previousSlide: 'Diapositiva precedente', progress: 'Avanzamento', quarter: 'Trimestre', rangeSelected: (start, end) => `Selezionati da ${start} a ${end}`, // Calendar range selection rangeSelectingFrom: date => `Selezione dell’intervallo da ${date}…`, remove: 'Rimuovi', reset: 'Reimposta', resetColumns: 'Ripristina colonne', resetFilters: 'Ripristina tutti i filtri', resize: 'Ridimensiona', resizeColumn: 'Ridimensiona colonna', scrollableRegion: 'Area scorrevole', scrollToEnd: 'Scorri alla fine', scrollToStart: \"Scorri all'inizio\", search: 'Cerca', sectionPages: 'Pagine della sezione', sections: 'Sezioni', selectAColorFromTheScreen: 'Seleziona un colore dalla schermo', numRowsCopied: num => { if (num === 0) return 'Nessuna riga copiata'; if (num === 1) return '1 riga copiata'; return `${num} righe copiate`; }, numRowsSelected: num => { if (num === 0) return 'Nessuna riga selezionata'; if (num === 1) return '1 riga selezionata'; return `${num} righe selezionate`; }, rowLifted: (position, total) => `Riga sollevata, posizione ${position} di ${total}. Usa le frecce su e giù per spostare, Spazio per rilasciare, Esc per annullare.`, rowMoved: (position, total) => `Posizione ${position} di ${total}`, rowReorderCanceled: 'Riordino annullato', selectAllEntries: 'Seleziona tutte le voci', selectAllRows: 'Seleziona tutte le righe', selectDate: 'Seleziona data', selectDateTime: 'Seleziona data e orario', selectGroup: 'Seleziona gruppo', selectRow: 'Seleziona riga', selectRowNamed: name => `Seleziona ${name}`, showingNofMRows: (shown, total) => `Righe visualizzate: ${shown} su ${total}`, showingRangeOfMore: (first, last) => `${first}–${last} di più di ${last}`, showingRangeOfTotal: (first, last, total) => `${first}–${last} di ${total}`, sortAscending: 'Ordina in modo crescente', sortDescending: 'Ordina in modo decrescente', sortedByColumn: (column, direction) => `Ordinato per ${column}, ${direction === 'ascending' ? 'crescente' : 'decrescente'}`, sortingCleared: 'Ordinamento rimosso', // Date picker selectTime: 'Seleziona orario', showingPanelSpan: (first, last) => `Visualizzazione di ${first} – ${last}`, showingSinglePanel: month => `Visualizzazione di ${month}`, showLess: 'Mostra meno', showMore: 'Mostra di più', showPassword: 'Mostra password', skipToContent: 'Vai al contenuto', slideNum: slide => `Diapositiva ${slide}`, steps: 'Passaggi', stepXOfY: (step, total) => `Passaggio ${step} di ${total}`, tagAdded: tag => `${tag} aggiunto`, tagAlreadyAdded: tag => `${tag} è già presente`, tagInputKeyboardHelp: 'Premi Backspace o Canc per rimuovere questo tag.', tagRemoved: tag => `${tag} rimosso`, timeInputBadInput: 'Inserisci un orario valido.', timeInputRangeOverflow: 'L’orario è troppo avanti.', timeInputRangeUnderflow: 'L’orario è troppo indietro.', timeInputValueMissing: 'Compila questo campo.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'AM/PM', timeSegmentHour: 'Ora', timeSegmentMinute: 'Minuto', timeSegmentSecond: 'Secondo', toggleColorFormat: 'Cambia formato colore', toggleNavigationDrawer: 'Attiva/disattiva il pannello di navigazione', tooFewTags: min => (min === 1 ? 'Aggiungi almeno 1 tag' : `Aggiungi almeno ${min} tag`), tooManyTags: max => (max === 1 ? 'Aggiungi al massimo 1 tag' : `Aggiungi al massimo ${max} tag`), tryAgain: 'Riprova', unpinColumn: 'Sblocca colonna', unread: 'Non letto', unsort: 'Rimuovi ordinamento', until: 'fino a', view: 'Visualizza', weekInputRangeOverflow: 'La settimana è troppo avanti.', weekInputRangeUnderflow: 'La settimana è troppo indietro.', weekInputValueMissing: 'Seleziona una settimana.', weekLabel: week => `Settimana ${week}`, year: 'Anno', zoomIn: 'Ingrandire', zoomOut: 'Rimpicciolire', documentViewerCanvas: 'Documento', documentViewerContinuous: 'Scorrimento verticale', documentViewerFitHeight: 'Altezza pagina', documentViewerFitWidth: 'Larghezza pagina', documentViewerLoadError: 'Impossibile caricare la pagina', documentViewerPages: 'Pagine', documentViewerRotateLeft: 'Ruota a sinistra', documentViewerRotateRight: 'Ruota a destra', documentViewerSinglePage: 'Scorrimento pagine', documentViewerZoom: 'Zoom', editorAi: 'IA', editorAiSuggestions: 'Suggerimenti IA', editorDelete: 'Elimina', editorHideDeletedPages: 'Nascondi pagine eliminate', editorPage: page => `Pagina ${page}`, editorRotate: 'Ruota di 90°', editorSelectAll: (selected, total) => `Seleziona tutto (${selected} di ${total})`, editorSplit: 'Dividi', editorUser: 'Utente', editorZoom: 'Zoom', editorZoomIn: 'Ingrandisci', previewPage: page => `Pagina ${page}`, save: 'Salva', scanCancelBack: 'Torna alla modifica', scanCancelConfirm: 'Annulla caricamento', scanCancelMessage: 'Se annulli, il file non verrà caricato e le modifiche andranno perse. Questa azione non può essere annullata.', scanCancelTitle: 'Annullare il caricamento?', scanFilesDisplayError: 'Impossibile visualizzare i file', scanFilesLoading: 'Caricamento file...', scanInvalidSession: 'La sessione non è valida. Riavvia il processo.', scanSaveErrorBack: 'Torna alla modifica', scanSaveErrorMessage: 'Si è verificato un errore durante il salvataggio. Puoi riprovare o tornare alla modifica.', scanSaveErrorRetry: 'Riprova', scanSaveErrorTitle: 'Errore durante il salvataggio', scanSaving: 'Creazione file', scanSessionLoading: 'Caricamento sessione edScan...', scanTitle: 'Modifica pagine assistita da IA', uploadDragAndDropDescription: 'Puoi trascinare qui un file oppure selezionarlo usando il pulsante.', uploadDragAndDropTitle: 'Carica file', uploadDropFile: 'Rilascia il file', uploadDropFiles: 'Rilascia i file', uploadDuplicateFile: name => `${name} è già nell'elenco`, uploadFailed: 'Impossibile caricare i file', uploadFileCountSummary: (count, size) => `${count} file · ${size}`, uploadFileTooLarge: (name, size) => `Il file ${name} è troppo grande. La dimensione massima è ${size} MB.`, uploadFileTypeNotAllowed: type => `Tipo di file non consentito: ${type}`, uploadLimitExceeded: size => `Il file supera il limite di caricamento di ${size} MB`, uploadLimitsExceeded: size => `I file superano il limite di caricamento di ${size} MB`, uploadOr: 'oppure', uploadPreviewFile: name => `Anteprima: ${name}`, uploadProgress: 'Caricamento file in corso...', uploadRemoveFile: name => `Rimuovi: ${name}`, uploadRetryFile: name => `Riprova: ${name}`, uploadSelectFile: 'Seleziona file', uploadSelectFiles: 'Seleziona file', uploadSuccess: (done, total) => `${done} di ${total} file caricati`, uploadTitle: 'Carica file', uploadTooManyFiles: max => `Puoi caricare al massimo ${max} file`, valueMissing: 'Compilare questo campo.', valueMissingCheckbox: 'Seleziona questa casella se vuoi procedere.', valueMissingRadio: 'Seleziona una di queste opzioni.', valueMissingSelect: \"Seleziona una voce dell'elenco.\", typeMismatchEmail: 'Inserisci un indirizzo e-mail.', typeMismatchUrl: 'Inserisci un URL.', patternMismatch: 'Rispetta il formato richiesto.', badInputNumber: 'Inserisci un numero.', rangeUnderflow: min => `Il valore deve essere maggiore o uguale a ${min}.`, rangeOverflow: max => `Il valore deve essere minore o uguale a ${max}.`, stepMismatch: (lower, upper) => `Inserisci un valore valido. I due valori validi più vicini sono ${lower} e ${upper}.`, stepMismatchNearest: nearest => `Inserisci un valore valido. Il valore valido più vicino è ${nearest}.`, tooShort: (minimum, current) => `Allunga questo testo ad almeno ${minimum} caratteri (attualmente ne stai usando ${current}).`, $code: 'it', $dir: 'ltr', $name: 'Italiano' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/it.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/ja.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'このコンテンツはAIによって生成されました', allTagsRemoved: 'すべてのタグを削除しました', appearance: '外観', appearanceClassic: 'クラシック', appearanceModern: 'モダン', autosizeColumn: '列を内容に合わせる', back: '戻る', cancel: 'キャンセル', carousel: 'カルーセル', chooseDate: '日付を選択', chooseDateAndTime: '日付と時刻を選択', chooseTime: '時刻を選択', clearEntry: 'クリア', clearFilter: 'フィルターをクリア', close: '閉じる', collapse: '折りたたむ', columnMenu: '列のオプション', columnMovedToPosition: (label, position, total) => `${label}、位置 ${position} / ${total}`, columns: '列', completed: '完了', copied: 'コピーしました', copy: 'コピー', currentValue: '現在の値', dateInputBadInput: '有効な日付を入力してください。', dateInputRangeOverflow: '日付が遅すぎます。', dateInputRangeUnderflow: '日付が早すぎます。', dateInputValueMissing: 'このフィールドを入力してください。', dateNotSelectable: 'この日付は選択できません。', datePlaceholderDay: 'dd', datePlaceholderHalfyear: '半', datePlaceholderMonth: 'mm', datePlaceholderQuarter: '四', datePlaceholderWeek: '週', datePlaceholderYear: 'yyyy', // Date input dateRangeEndBeforeStart: '期間の終了は開始より後でなければなりません。', dateSegmentDay: '日', dateSegmentHalfyear: '半期', dateSegmentMonth: '月', dateSegmentQuarter: '四半期', dateSegmentWeek: '週', dateSegmentYear: '年', datetimeInputBadInput: '有効な日付と時刻を入力してください。', datetimeInputRangeOverflow: '日付と時刻が遅すぎます。', datetimeInputRangeUnderflow: '日付と時刻が早すぎます。', datetimeInputValueMissing: 'このフィールドを入力してください。', decrement: '減らす', density: '密度', densityCompact: 'コンパクト', densityDefault: '標準', densitySpacious: 'ゆったり', disabled: '無効', dragToReorder: 'ドラッグして並べ替え', dropFileHere: 'ファイルをここにドロップするか、クリックして参照してください', dropFilesHere: 'ファイルをここにドロップするか、クリックして参照してください', entriesPerPage: 'ページあたりの件数', error: 'エラー', expand: '展開する', filter: 'フィルター', filterByColumn: label => `${label}をフィルター`, filterFrom: '開始', filterMax: '最大', filterMin: '最小', filterTo: '終了', finish: '完了', from: '/', goToSlide: (slide, count) => `${count} 枚中 ${slide} 枚のスライドに移動`, halfyear: '半期', hideColumn: '列を非表示', hidePassword: 'パスワードを隠す', increment: '増やす', loadFailed: '行を読み込めませんでした。', loading: '読み込み中', loadMoreFailed: 'これ以上の行を読み込めませんでした。', locked: 'ロック中', mainMenu: 'メインメニュー', maximumValue: label => (label ? `${label} (最大値)` : '最大値'), minimumValue: label => (label ? `${label} (最小値)` : '最小値'), month: '月', more: 'その他', multipleValues: '複数の値', newsMenu: 'ニュースメニュー', newsToggleMenu: 'ニュースメニューの切り替え', next: '次へ', nextPage: '次のページ', nextSlide: '次のスライド', noData: 'データなし', noDataDescription: '表示するエントリはまだありません。', noOptions: '選択肢がありません', noResults: '結果がありません', noResultsDescription: '検索またはフィルターに一致するエントリはありません。', notCompleted: '未完了', notificationsRegion: hotkey => `通知、${hotkey}を押してフォーカス`, numCharacters: num => `${num}文字`, numCharactersRemaining: num => `残り${num}文字`, numEntries: (num, format) => `${formatCount(num, format)} 件`, numEntriesLoaded: (num, format) => { if (num === 0) return 'ロードされた項目はありません'; return `${formatCount(num, format)} 件がロードされました`; }, numEntriesOfTotal: (shown, total, format) => `${formatCount(total, format)} 件中 ${formatCount(shown, format)} 件`, numOfTotalSelected: (num, total, format) => `${formatCount(total, format)} 件中 ${formatCount(num, format)} 件選択`, numOptionsAvailable: num => { if (num === 0) return '利用可能な項目はありません'; return `${num} 個の項目が利用可能です`; }, numOptionsSelected: num => { if (num === 0) return '項目が選択されていません'; return `${num} 個の項目が選択されました`; }, numSelected: (num, format) => `${formatCount(num, format)} 件選択`, numTotal: num => `合計 ${num}`, ok: 'OK', onThisPage: 'このページ内', optionPosition: (label, position, total) => `${label}、${total} 件中 ${position} 件目`, optionsLoadError: '選択肢を読み込めませんでした', page: 'ページ', pauseAnimation: 'アニメーションを一時停止', pinToEnd: '末尾に固定', pinToStart: '先頭に固定', playAnimation: 'アニメーションを再生', previousPage: '前のページ', previousSlide: '前のスライド', progress: '進行', quarter: '四半期', rangeSelected: (start, end) => `${start}から${end}を選択しました`, // Calendar range selection rangeSelectingFrom: date => `${date}からの範囲を選択中…`, remove: '削除', reset: 'リセット', resetColumns: '列をリセット', resetFilters: 'すべてのフィルターをリセット', resize: 'サイズ変更', resizeColumn: '列の幅を変更', scrollableRegion: 'スクロール可能領域', scrollToEnd: '最後にスクロールする', scrollToStart: '最初にスクロールする', search: '検索', sectionPages: 'セクションのページ', sections: 'セクション', selectAColorFromTheScreen: '画面から色を選択してください', numRowsCopied: num => { if (num === 0) return 'コピーされた行はありません'; return `${num} 行をコピーしました`; }, numRowsSelected: num => { if (num === 0) return '選択された行はありません'; return `${num} 行が選択されました`; }, rowLifted: (position, total) => `行を持ち上げました。位置 ${position} / ${total}。上下矢印キーで移動、スペースキーで配置、Escape でキャンセルします。`, rowMoved: (position, total) => `位置 ${position} / ${total}`, rowReorderCanceled: '並べ替えをキャンセルしました', selectAllEntries: 'すべての項目を選択', selectAllRows: 'すべての行を選択', selectDate: '日付を選択', selectDateTime: '日時を選択', selectGroup: 'グループを選択', selectRow: '行を選択', selectRowNamed: name => `${name} を選択`, showingNofMRows: (shown, total) => `${total} 行中 ${shown} 行を表示`, showingRangeOfMore: (first, last) => `${last} 件以上中 ${first}–${last} 件`, showingRangeOfTotal: (first, last, total) => `${total} 件中 ${first}–${last} 件`, sortAscending: '昇順で並べ替え', sortDescending: '降順で並べ替え', sortedByColumn: (column, direction) => `${column} で並べ替え、${direction === 'ascending' ? '昇順' : '降順'}`, sortingCleared: '並べ替えを解除しました', // Date picker selectTime: '時刻を選択', showingPanelSpan: (first, last) => `${first} – ${last} を表示中`, showingSinglePanel: month => `${month} を表示中`, showLess: '表示を減らす', showMore: 'もっと表示', showPassword: 'パスワードを表示', skipToContent: 'メインコンテンツへ移動', slideNum: slide => `スライド ${slide}`, steps: 'ステップ', stepXOfY: (step, total) => `ステップ ${step} / ${total}`, tagAdded: tag => `${tag} を追加しました`, tagAlreadyAdded: tag => `${tag} はすでに追加されています`, tagInputKeyboardHelp: 'Backspace または Delete キーを押すと、このタグを削除します。', tagRemoved: tag => `${tag} を削除しました`, timeInputBadInput: '有効な時刻を入力してください。', timeInputRangeOverflow: '時刻が遅すぎます。', timeInputRangeUnderflow: '時刻が早すぎます。', timeInputValueMissing: 'このフィールドを入力してください。', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: '午前/午後', timeSegmentHour: '時', timeSegmentMinute: '分', timeSegmentSecond: '秒', toggleColorFormat: '色のフォーマットを切り替える', toggleNavigationDrawer: 'ナビゲーションドロワーの切り替え', tooFewTags: min => `タグを${min}個以上追加してください`, tooManyTags: max => `タグは${max}個以内にしてください`, tryAgain: '再試行', unpinColumn: '列の固定を解除', unread: '未読', unsort: '並べ替えを解除', until: 'まで', view: '表示', weekInputRangeOverflow: '週が遅すぎます。', weekInputRangeUnderflow: '週が早すぎます。', weekInputValueMissing: '週を選択してください。', weekLabel: week => `${week}週目`, year: '年', zoomIn: 'ズームイン', zoomOut: 'ズームアウト', documentViewerCanvas: '文書', documentViewerContinuous: '縦スクロール', documentViewerFitHeight: '高さに合わせる', documentViewerFitWidth: '幅に合わせる', documentViewerLoadError: 'ページを読み込めませんでした', documentViewerPages: 'ページ', documentViewerRotateLeft: '左に回転', documentViewerRotateRight: '右に回転', documentViewerSinglePage: 'ページ単位でスクロール', documentViewerZoom: 'ズーム', editorAi: 'AI', editorAiSuggestions: 'AIの提案', editorDelete: '削除', editorHideDeletedPages: '削除されたページを非表示', editorPage: page => `ページ ${page}`, editorRotate: '90°回転', editorSelectAll: (selected, total) => `すべて選択 (${selected}/${total})`, editorSplit: '分割', editorUser: 'ユーザー', editorZoom: 'ズーム', editorZoomIn: '拡大', previewPage: page => `ページ ${page}`, save: '保存', scanCancelBack: '編集に戻る', scanCancelConfirm: 'アップロードをキャンセル', scanCancelMessage: 'キャンセルするとファイルはアップロードされず、変更内容は失われます。この操作は元に戻せません。', scanCancelTitle: 'アップロードをキャンセルしますか？', scanFilesDisplayError: 'ファイルを表示できません', scanFilesLoading: 'ファイルを読み込み中...', scanInvalidSession: 'セッションが無効です。処理を再開してください。', scanSaveErrorBack: '編集に戻る', scanSaveErrorMessage: '保存中にエラーが発生しました。再試行するか編集に戻ってください。', scanSaveErrorRetry: '再試行', scanSaveErrorTitle: '保存エラー', scanSaving: 'ファイルを作成中...', scanSessionLoading: 'edScan セッションを読み込み中...', scanTitle: 'AI支援ページ編集', uploadDragAndDropDescription: 'ここにファイルをドラッグするか、ボタンから選択してください。', uploadDragAndDropTitle: 'ファイルをアップロード', uploadDropFile: 'ファイルをドロップ', uploadDropFiles: 'ファイルをドロップ', uploadDuplicateFile: name => `${name} は既にリストに含まれています`, uploadFailed: 'ファイルのアップロードに失敗しました', uploadFileCountSummary: (count, size) => `${count} 件のファイル · ${size}`, uploadFileTooLarge: (name, size) => `ファイル ${name} は大きすぎます。最大サイズは ${size} MB です。`, uploadFileTypeNotAllowed: type => `許可されていないファイル形式: ${type}`, uploadLimitExceeded: size => `ファイルが ${size} MB のアップロード制限を超えています`, uploadLimitsExceeded: size => `ファイルが ${size} MB のアップロード制限を超えています`, uploadOr: 'または', uploadPreviewFile: name => `プレビュー: ${name}`, uploadProgress: 'ファイルをアップロード中...', uploadRemoveFile: name => `削除: ${name}`, uploadRetryFile: name => `再試行: ${name}`, uploadSelectFile: 'ファイルを選択', uploadSelectFiles: 'ファイルを選択', uploadSuccess: (done, total) => `${total} 件中 ${done} 件アップロード済み`, uploadTitle: 'ファイルをアップロード', uploadTooManyFiles: max => `アップロードできるファイルは最大 ${max} 件です`, valueMissing: 'このフィールドを入力してください。', valueMissingCheckbox: '続行するには、このチェックボックスをオンにしてください。', valueMissingRadio: 'これらのオプションのいずれかを選択してください。', valueMissingSelect: 'リストから項目を選択してください。', typeMismatchEmail: 'メールアドレスを入力してください。', typeMismatchUrl: 'URL を入力してください。', patternMismatch: '要求されている形式で入力してください。', badInputNumber: '数値を入力してください。', rangeUnderflow: min => `値は ${min} 以上である必要があります。`, rangeOverflow: max => `値は ${max} 以下である必要があります。`, stepMismatch: (lower, upper) => `有効な値を入力してください。最も近い有効な値は ${lower} と ${upper} です。`, stepMismatchNearest: nearest => `有効な値を入力してください。最も近い有効な値は ${nearest} です。`, tooShort: (minimum, current) => `このテキストを ${minimum} 文字以上にしてください (現在 ${current} 文字)。`, $code: 'ja', $dir: 'ltr', $name: '日本語' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/ja.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/kk.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'Бұл мазмұнды жасанды интеллект жасаған', allTagsRemoved: 'Барлық тегтер жойылды', appearance: 'Сыртқы түрі', appearanceClassic: 'Классикалық', appearanceModern: 'Заманауи', autosizeColumn: 'Бағанды мазмұнға сәйкестендіру', back: 'Арта', cancel: 'Бас тарту', carousel: 'Карусель', chooseDate: 'Күн таңдаңыз', chooseDateAndTime: 'Күн мен уақытты таңдаңыз', chooseTime: 'Уақыт таңдаңыз', clearEntry: 'Жазбаны жою', clearFilter: 'Сүзгіні тазалау', close: 'Жабу', collapse: 'Жию', columnMenu: 'Баған параметрлері', columnMovedToPosition: (label, position, total) => `${label}, Позиция ${position} / ${total}`, columns: 'Бағандар', completed: 'Аяқталды', copied: 'Көшірілді', copy: 'Көшіру', currentValue: 'Қазіргі мән', dateInputBadInput: 'Жарамды күн енгізіңіз.', dateInputRangeOverflow: 'Күн тым кеш.', dateInputRangeUnderflow: 'Күн тым ерте.', dateInputValueMissing: 'Бұл өрісті толтырыңыз.', dateNotSelectable: 'Бұл күнді таңдау мүмкін емес.', datePlaceholderDay: 'dd', datePlaceholderHalfyear: 'h', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 'q', datePlaceholderWeek: 'АА', datePlaceholderYear: 'yyyy', // Date input (untranslated — awaiting locale contribution) dateRangeEndBeforeStart: 'Кезеңнің соңы оның басталуынан кейін болуы керек.', dateSegmentDay: 'Күн', dateSegmentHalfyear: 'Жартыжылдық', dateSegmentMonth: 'Ай', dateSegmentQuarter: 'Тоқсан', dateSegmentWeek: 'Апта', dateSegmentYear: 'Жыл', datetimeInputBadInput: 'Жарамды күн мен уақыт енгізіңіз.', datetimeInputRangeOverflow: 'Күн мен уақыт тым кеш.', datetimeInputRangeUnderflow: 'Күн мен уақыт тым ерте.', datetimeInputValueMissing: 'Бұл өрісті толтырыңыз.', decrement: 'Азайту', density: 'Тығыздық', densityCompact: 'Ықшам', densityDefault: 'Әдепкі', densitySpacious: 'Кең', disabled: 'Өшірілген', dragToReorder: 'Ретті өзгерту үшін сүйреңіз', dropFileHere: 'Файлды осы жерге тастаңыз немесе таңдау үшін басыңыз', dropFilesHere: 'Файлдарды осы жерге тастаңыз немесе таңдау үшін басыңыз', entriesPerPage: 'Беттегі жазбалар саны', error: 'Қате', expand: 'Жаю', filter: 'Сүзу', filterByColumn: label => `Сүзу ${label}`, filterFrom: 'Бастап', filterMax: 'Ең көп', filterMin: 'Ең аз', filterTo: 'Дейін', finish: 'Аятау', from: '/', goToSlide: (slide, count) => `${slide}/${count} слайдқа өту`, halfyear: 'Жарты жыл', hideColumn: 'Бағанды жасыру', hidePassword: 'Құпиясөзді жасыру', increment: 'Арттыру', loadFailed: 'Жолдарды жүктеу мүмкін болмады.', loading: 'Жүктелуде', loadMoreFailed: 'Қосымша жолдарды жүктеу мүмкін болмады.', locked: 'Құлыпталған', mainMenu: 'Басты мәзір', maximumValue: label => (label ? `${label} (Ең үлкен мән)` : 'Ең үлкен мән'), minimumValue: label => (label ? `${label} (Ең кіші мән)` : 'Ең кіші мән'), month: 'Ай', more: 'Көбірек', multipleValues: 'Бірнеше мән', newsMenu: 'Жаңалықтар мәзірі', newsToggleMenu: 'Жаңалықтар мәзірін ауыстыру', next: 'Келесі', nextPage: 'Келесі бет', nextSlide: 'Келесі слайд', noData: 'Деректер жоқ', noDataDescription: 'Көрсетілетін жазбалар әлі жоқ.', noOptions: 'Нұсқалар жоқ', noResults: 'Нәтиже жоқ', noResultsDescription: 'Іздеуге немесе сүзгілерге сәйкес келетін жазба жоқ.', notCompleted: 'Аяқталмады', notificationsRegion: hotkey => `Хабарландырулар, фокустау үшін ${hotkey} басыңыз`, numCharacters: num => { if (num === 1) return '1 таңба'; return `${num} таңба`; }, numCharactersRemaining: num => { if (num === 1) return '1 таңба қалды'; return `${num} таңба қалды`; }, numEntries: (num, format) => { if (num === 0) return 'Жазбалар жоқ'; return `${formatCount(num, format)} жазба`; }, numEntriesLoaded: (num, format) => { if (num === 0) return 'Жазбалар жүктелмеді'; if (num === 1) return `${formatCount(1, format)} жазба жүктелді`; return `${formatCount(num, format)} жазба жүктелді`; }, numEntriesOfTotal: (shown, total, format) => `${formatCount(total, format)} жазбаның ${formatCount(shown, format)}`, numOfTotalSelected: (num, total, format) => `${formatCount(total, format)} ішінен ${formatCount(num, format)} таңдалды`, numOptionsAvailable: num => { if (num === 0) return 'Қолжетімді нұсқа жоқ'; if (num < 6 || num === 7) return `${num}-еу қолжетімді`; if (num === 6) return `${num}-ау қолжетімді`; return `${num} қолжетімді`; }, numOptionsSelected: num => { if (num === 0) return 'Ештеңе таңдалмады'; if (num < 6 || num === 7) return `${num}-еу таңдалды`; if (num === 6) return `${num}-ау таңдалды`; return `${num} таңдалды`; }, numSelected: (num, format) => { if (num === 0) return 'Ештеңе таңдалмады'; return `${formatCount(num, format)} таңдалды`; }, numTotal: num => `Барлығы ${num}`, ok: 'OK', onThisPage: 'Осы бетте', optionPosition: (label, position, total) => `${label}, ${position}/${total}`, optionsLoadError: 'Нұсқаларды жүктеу мүмкін болмады', page: 'Бет', pauseAnimation: 'Анимацияны тоқтату', pinToEnd: 'Соңына бекіту', pinToStart: 'Басына бекіту', playAnimation: 'Анимацияны ойнату', previousPage: 'Алдыңғы бет', previousSlide: 'Алдыңғы слайд', progress: 'Прогресс', quarter: 'Тоқсан', rangeSelected: (start, end) => `${start} мен ${end} аралығы таңдалды`, // Calendar range selection rangeSelectingFrom: date => `${date} күнінен бастап аралық таңдалуда…`, remove: 'Жою', reset: 'алпына келтіру', resetColumns: 'Бағандарды қалпына келтіру', resetFilters: 'Барлық сүзгілерді тазалау', resize: 'Өлшемін өзгерту', resizeColumn: 'Баған енін өзгерту', scrollableRegion: 'Көтеру/түсіруге болатын аймақ (скролл)', scrollToEnd: 'Соңына түсіру', scrollToStart: 'Басына көтеру', search: 'Іздеу', sectionPages: 'Бөлім беттері', sections: 'Бөлімдер', selectAColorFromTheScreen: 'Экраннан түсті таңдаңыз', numRowsCopied: num => { if (num === 0) return 'Жолдар көшірілмеді'; return `${num} жол көшірілді`; }, numRowsSelected: num => { if (num === 0) return 'Жолдар таңдалмаған'; return `${num} жол таңдалды`; }, rowLifted: (position, total) => `Жол көтерілді, позиция ${position} / ${total}. Жоғары және төмен көрсеткілерімен жылжытыңыз, бос орын пернесімен қойыңыз, Escape пернесімен бас тартыңыз.`, rowMoved: (position, total) => `Позиция ${position} / ${total}`, rowReorderCanceled: 'Ретін өзгерту тоқтатылды', selectAllEntries: 'Барлық жазбаларды таңдау', selectAllRows: 'Барлық жолдарды таңдау', selectDate: 'Күнді таңдау', selectDateTime: 'Күн мен уақытты таңдау', selectGroup: 'Топты таңдау', selectRow: 'Жолды таңдау', selectRowNamed: name => `${name} таңдау`, showingNofMRows: (shown, total) => `${total} жолдың ${shown} көрсетілуде`, showingRangeOfMore: (first, last) => `+${last} ішінен ${first}–${last}`, showingRangeOfTotal: (first, last, total) => `${total} ішінен ${first}–${last}`, sortAscending: 'Өсу ретімен сұрыптау', sortDescending: 'Кему ретімен сұрыптау', sortedByColumn: (column, direction) => `${column} бойынша сұрыпталды, ${direction === 'ascending' ? 'өсу ретімен' : 'кему ретімен'}`, sortingCleared: 'Сұрыптау алынды', // Date picker selectTime: 'Уақытты таңдау', showingPanelSpan: (first, last) => `${first} – ${last} көрсетілуде`, showingSinglePanel: month => `${month} көрсетілуде`, showLess: 'Азырақ көрсету', showMore: 'Көбірек көрсету', showPassword: 'Құпиясөзді көрсету', skipToContent: 'Мазмұнға өту', slideNum: slide => `${slide}-слайд`, steps: 'Қадамдар', stepXOfY: (step, total) => `${total} қадамның ${step}-і`, tagAdded: tag => `${tag} қосылды`, tagAlreadyAdded: tag => `${tag} тегі әлдеқашан қосылған`, tagInputKeyboardHelp: 'Бұл тегті жою үшін Backspace немесе Delete пернесін басыңыз.', tagRemoved: tag => `${tag} жойылды`, timeInputBadInput: 'Жарамды уақыт енгізіңіз.', timeInputRangeOverflow: 'Уақыт тым кеш.', timeInputRangeUnderflow: 'Уақыт тым ерте.', timeInputValueMissing: 'Бұл өрісті толтырыңыз.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'АМ/РМ', timeSegmentHour: 'Сағат', timeSegmentMinute: 'Минут', timeSegmentSecond: 'Секунд', toggleColorFormat: 'Түс пішімін ауыстыру', toggleNavigationDrawer: 'Навигация панелін ауыстыру', tooFewTags: min => `Кемінде ${min} тег қосыңыз`, tooManyTags: max => `${max} тегтен артық қоспаңыз`, tryAgain: 'Қайта көру', unpinColumn: 'Бағанды босату', unread: 'Оқылмаған', unsort: 'Сұрыптауды алып тастау', until: 'дейін', view: 'Көрініс', weekInputRangeOverflow: 'Апта тым кеш.', weekInputRangeUnderflow: 'Апта тым ерте.', weekInputValueMissing: 'Аптаны таңдаңыз.', weekLabel: week => `Апта ${week}`, year: 'Жыл', zoomIn: 'Жақындату', zoomOut: 'Алыстату', documentViewerCanvas: 'Құжат', documentViewerContinuous: 'Вертикалды айналдыру', documentViewerFitHeight: 'Парақ биіктігі', documentViewerFitWidth: 'Парақ ені', documentViewerLoadError: 'Бетті жүктеу мүмкін болмады', documentViewerPages: 'Беттер', documentViewerRotateLeft: 'Солға бұру', documentViewerRotateRight: 'Оңға бұру', documentViewerSinglePage: 'Беттерді айналдыру', documentViewerZoom: 'Үлкейту', editorAi: 'AI', editorAiSuggestions: 'AI ұсыныстары', editorDelete: 'Жою', editorHideDeletedPages: 'Жойылған беттерді жасыру', editorPage: page => `${page}-бет`, editorRotate: '90° бұру', editorSelectAll: (selected, total) => `Барлығын таңдау (${selected}/${total})`, editorSplit: 'Бөлу', editorUser: 'Пайдаланушы', editorZoom: 'Үлкейту', editorZoomIn: 'Үлкейту', previewPage: page => `${page}-бет`, save: 'Сақтау', scanCancelBack: 'Өңдеуге оралу', scanCancelConfirm: 'Жүктеуді тоқтату', scanCancelMessage: 'Тоқтатсаңыз, файл жүктелмейді және өзгерістер жоғалады. Бұл әрекетті қайтару мүмкін емес.', scanCancelTitle: 'Жүктеуді тоқтату керек пе?', scanFilesDisplayError: 'Файлдарды көрсету мүмкін емес', scanFilesLoading: 'Файлдар жүктелуде...', scanInvalidSession: 'Сессия жарамсыз. Процесті қайта бастаңыз.', scanSaveErrorBack: 'Өңдеуге оралу', scanSaveErrorMessage: 'Сақтау кезінде қате пайда болды. Қайта көруге немесе өңдеуге оралуға болады.', scanSaveErrorRetry: 'Қайта көру', scanSaveErrorTitle: 'Сақтау қатесі', scanSaving: 'Файлдар жасалуда', scanSessionLoading: 'edScan сессиясы жүктелуде...', scanTitle: 'AI көмегімен беттерді өңдеу', uploadDragAndDropDescription: 'Файлды осы жерге сүйреп апаруға немесе батырма арқылы таңдауға болады.', uploadDragAndDropTitle: 'Файл жүктеу', uploadDropFile: 'Файлды осында тастаңыз', uploadDropFiles: 'Файлдарды осында тастаңыз', uploadDuplicateFile: name => `${name} тізімде бар`, uploadFailed: 'Файлдарды жүктеу сәтсіз аяқталды', uploadFileCountSummary: (count, size) => `${count} файл · ${size}`, uploadFileTooLarge: (name, size) => `${name} файлы тым үлкен. Максималды өлшемі ${size} МБ.`, uploadFileTypeNotAllowed: type => `Файл түріне рұқсат жоқ: ${type}`, uploadLimitExceeded: size => `Файл ${size} МБ жүктеу шегінен асты`, uploadLimitsExceeded: size => `Файлдар ${size} МБ жүктеу шегінен асты`, uploadOr: 'немесе', uploadPreviewFile: name => `Алдын ала қарау: ${name}`, uploadProgress: 'Файлдар жүктелуде...', uploadRemoveFile: name => `Жою: ${name}`, uploadRetryFile: name => `Қайта көру: ${name}`, uploadSelectFile: 'Файл таңдау', uploadSelectFiles: 'Файлдарды таңдау', uploadSuccess: (done, total) => `${total} файлдың ${done} жүктелді`, uploadTitle: 'Файл жүктеу', uploadTooManyFiles: max => `Ең көбі ${max} файл жүктей аласыз`, valueMissing: 'Бұл өрісті толтырыңыз.', valueMissingCheckbox: 'Жалғастыру үшін осы құсбелгіні қойыңыз.', valueMissingRadio: 'Осы опциялардың бірін таңдаңыз.', valueMissingSelect: 'Тізімнен элемент таңдаңыз.', typeMismatchEmail: 'Электрондық пошта мекенжайын енгізіңіз.', typeMismatchUrl: 'URL мекенжайын енгізіңіз.', patternMismatch: 'Сұралған пішімді сақтаңыз.', badInputNumber: 'Сан енгізіңіз.', rangeUnderflow: min => `Мән ${min} мәнінен үлкен немесе оған тең болуы керек.`, rangeOverflow: max => `Мән ${max} мәнінен кіші немесе оған тең болуы керек.`, stepMismatch: (lower, upper) => `Жарамды мән енгізіңіз. Ең жақын екі жарамды мән: ${lower} және ${upper}.`, stepMismatchNearest: nearest => `Жарамды мән енгізіңіз. Ең жақын жарамды мән: ${nearest}.`, tooShort: (minimum, current) => `Бұл мәтінді кемінде ${minimum} таңбаға дейін ұзартыңыз (қазір ${current} таңба).`, $code: 'kk', $dir: 'ltr', $name: 'Қазақ' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/kk.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/nb.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'Dette innholdet er generert av KI', allTagsRemoved: 'Alle tagger fjernet', appearance: 'Utseende', appearanceClassic: 'Klassisk', appearanceModern: 'Moderne', autosizeColumn: 'Tilpass kolonnen til innholdet', back: 'Tilbake', cancel: 'Avbryt', carousel: 'Karusell', chooseDate: 'Velg en dato', chooseDateAndTime: 'Velg en dato og et tidspunkt', chooseTime: 'Velg et tidspunkt', clearEntry: 'Tøm felt', clearFilter: 'Fjern filter', close: 'Lukk', collapse: 'Skjul', columnMenu: 'Kolonnealternativer', columnMovedToPosition: (label, position, total) => `${label}, Posisjon ${position} av ${total}`, columns: 'Kolonner', completed: 'Fullført', copied: 'Kopiert', copy: 'Kopier', currentValue: 'Nåværende verdi', dateInputBadInput: 'Skriv inn en gyldig dato.', dateInputRangeOverflow: 'Datoen er for sen.', dateInputRangeUnderflow: 'Datoen er for tidlig.', dateInputValueMissing: 'Fyll ut dette feltet.', dateNotSelectable: 'Denne datoen kan ikke velges.', datePlaceholderDay: 'dd', datePlaceholderHalfyear: 'h', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 'k', datePlaceholderWeek: 'uu', datePlaceholderYear: 'åååå', // Date input dateRangeEndBeforeStart: 'Slutten på perioden må være etter starten.', dateSegmentDay: 'Dag', dateSegmentHalfyear: 'Halvår', dateSegmentMonth: 'Måned', dateSegmentQuarter: 'Kvartal', dateSegmentWeek: 'Uke', dateSegmentYear: 'År', datetimeInputBadInput: 'Skriv inn en gyldig dato og et gyldig tidspunkt.', datetimeInputRangeOverflow: 'Dato og tidspunkt er for sent.', datetimeInputRangeUnderflow: 'Dato og tidspunkt er for tidlig.', datetimeInputValueMissing: 'Fyll ut dette feltet.', decrement: 'Reduser', density: 'Tetthet', densityCompact: 'Kompakt', densityDefault: 'Standard', densitySpacious: 'Luftig', disabled: 'Deaktivert', dragToReorder: 'Dra for å omorganisere', dropFileHere: 'Slipp filen her eller klikk for å bla gjennom', dropFilesHere: 'Slipp filene her eller klikk for å bla gjennom', entriesPerPage: 'Poster per side', error: 'Feil', expand: 'Vis', filter: 'Filtrer', filterByColumn: label => `Filtrer ${label}`, filterFrom: 'Fra', filterMax: 'Maksimum', filterMin: 'Minimum', filterTo: 'Til', finish: 'Fullfør', from: 'av', goToSlide: (slide, count) => `Gå til visning ${slide} av ${count}`, halfyear: 'Halvår', hideColumn: 'Skjul kolonne', hidePassword: 'Skjul passord', increment: 'Øk', loadFailed: 'Radene kunne ikke lastes inn.', loading: 'Laster', loadMoreFailed: 'Flere rader kunne ikke lastes inn.', locked: 'Låst', mainMenu: 'Hovedmeny', maximumValue: label => (label ? `${label} (Maksimumsverdi)` : 'Maksimumsverdi'), minimumValue: label => (label ? `${label} (Minimumsverdi)` : 'Minimumsverdi'), month: 'Måned', more: 'Mer', multipleValues: 'Flere verdier', newsMenu: 'Nyhetsmeny', newsToggleMenu: 'Bytt nyhetsmeny', next: 'Neste', nextPage: 'Neste side', nextSlide: 'Neste visning', noData: 'Ingen data', noDataDescription: 'Det er ingen oppføringer å vise ennå.', noOptions: 'Ingen alternativer', noResults: 'Ingen resultater', noResultsDescription: 'Ingen oppføringer samsvarer med søket eller filtrene.', notCompleted: 'Ikke fullført', notificationsRegion: hotkey => `Varsler, trykk ${hotkey} for å fokusere`, numCharacters: num => { if (num === 1) return '1 tegn'; return `${num} tegn`; }, numCharactersRemaining: num => { if (num === 1) return '1 tegn gjenstår'; return `${num} tegn gjenstår`; }, numEntries: (num, format) => { if (num === 0) return 'Ingen poster'; if (num === 1) return `${formatCount(1, format)} post`; return `${formatCount(num, format)} poster`; }, numEntriesLoaded: (num, format) => { if (num === 0) return 'Ingen poster lastet'; if (num === 1) return `${formatCount(1, format)} post lastet`; return `${formatCount(num, format)} poster lastet`; }, numEntriesOfTotal: (shown, total, format) => total === 1 ? `${formatCount(shown, format)} av ${formatCount(1, format)} post` : `${formatCount(shown, format)} av ${formatCount(total, format)} poster`, numOfTotalSelected: (num, total, format) => `${formatCount(num, format)} av ${formatCount(total, format)} valgt`, numOptionsAvailable: num => { if (num === 0) return 'Ingen alternativer tilgjengelige'; if (num === 1) return 'Ett alternativ tilgjengelig'; return `${num} alternativer tilgjengelige`; }, numOptionsSelected: num => { if (num === 0) return 'Ingen alternativer valgt'; if (num === 1) return 'Ett alternativ valgt'; return `${num} alternativer valgt`; }, numSelected: (num, format) => { if (num === 0) return 'Ingen valgt'; return `${formatCount(num, format)} valgt`; }, numTotal: num => `${num} totalt`, ok: 'OK', onThisPage: 'På denne siden', optionPosition: (label, position, total) => `${label}, ${position} av ${total}`, optionsLoadError: 'Alternativene kunne ikke lastes inn', page: 'Side', pauseAnimation: 'Sett animasjon på pause', pinToEnd: 'Fest til slutten', pinToStart: 'Fest til starten', playAnimation: 'Spill av animasjon', previousPage: 'Forrige side', previousSlide: 'Forrige visning', progress: 'Fremdrift', quarter: 'Kvartal', rangeSelected: (start, end) => `${start} til ${end} valgt`, // Calendar range selection rangeSelectingFrom: date => `Velger intervall fra ${date}…`, remove: 'Fjern', reset: 'Tilbakestill', resetColumns: 'Tilbakestill kolonner', resetFilters: 'Tilbakestill alle filtre', resize: 'Endre størrelse', resizeColumn: 'Endre kolonnebredde', scrollableRegion: 'Rullbar region', scrollToEnd: 'Rull til slutten', scrollToStart: 'Rull til starten', search: 'Søk', sectionPages: 'Seksjonens sider', sections: 'Seksjoner', selectAColorFromTheScreen: 'Velg en farge fra skjermen', numRowsCopied: num => { if (num === 0) return 'Ingen rader kopiert'; if (num === 1) return '1 rad kopiert'; return `${num} rader kopiert`; }, numRowsSelected: num => { if (num === 0) return 'Ingen rader valgt'; if (num === 1) return '1 rad valgt'; return `${num} rader valgt`; }, rowLifted: (position, total) => `Rad løftet, posisjon ${position} av ${total}. Bruk pil opp og pil ned for å flytte, mellomrom for å plassere, Escape for å avbryte.`, rowMoved: (position, total) => `Posisjon ${position} av ${total}`, rowReorderCanceled: 'Flytting avbrutt', selectAllEntries: 'Velg alle oppføringer', selectAllRows: 'Velg alle rader', selectDate: 'Velg dato', selectDateTime: 'Velg dato og klokkeslett', selectGroup: 'Velg gruppe', selectRow: 'Velg rad', selectRowNamed: name => `Velg ${name}`, showingNofMRows: (shown, total) => `Viste rader: ${shown} av ${total}`, showingRangeOfMore: (first, last) => `${first}–${last} av mer enn ${last}`, showingRangeOfTotal: (first, last, total) => `${first}–${last} av ${total}`, sortAscending: 'Sorter stigende', sortDescending: 'Sorter synkende', sortedByColumn: (column, direction) => `Sortert etter ${column}, ${direction === 'ascending' ? 'stigende' : 'synkende'}`, sortingCleared: 'Sortering fjernet', // Date picker selectTime: 'Velg tidspunkt', showingPanelSpan: (first, last) => `Viser ${first} – ${last}`, showingSinglePanel: month => `Viser ${month}`, showLess: 'Vis mindre', showMore: 'Vis mer', showPassword: 'Vis passord', skipToContent: 'Gå til innhold', slideNum: slide => `Visning ${slide}`, steps: 'Trinn', stepXOfY: (step, total) => `Trinn ${step} av ${total}`, tagAdded: tag => `${tag} lagt til`, tagAlreadyAdded: tag => `${tag} er allerede lagt til`, tagInputKeyboardHelp: 'Trykk på Backspace eller Delete for å fjerne denne taggen.', tagRemoved: tag => `${tag} fjernet`, timeInputBadInput: 'Skriv inn et gyldig tidspunkt.', timeInputRangeOverflow: 'Tidspunktet er for sent.', timeInputRangeUnderflow: 'Tidspunktet er for tidlig.', timeInputValueMissing: 'Fyll ut dette feltet.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'tt', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'a.m./p.m.', timeSegmentHour: 'Time', timeSegmentMinute: 'Minutt', timeSegmentSecond: 'Sekund', toggleColorFormat: 'Bytt fargeformat', toggleNavigationDrawer: 'Bytt navigasjonspanel', tooFewTags: min => (min === 1 ? 'Legg til minst 1 tagg' : `Legg til minst ${min} tagger`), tooManyTags: max => (max === 1 ? 'Legg til høyst 1 tagg' : `Legg til høyst ${max} tagger`), tryAgain: 'Prøv igjen', unpinColumn: 'Løsne kolonnen', unread: 'Ulest', unsort: 'Fjern sortering', until: 'til', view: 'Visning', weekInputRangeOverflow: 'Uken er for sen.', weekInputRangeUnderflow: 'Uken er for tidlig.', weekInputValueMissing: 'Velg en uke.', weekLabel: week => `Uke ${week}`, year: 'År', zoomIn: 'Zoom inn', zoomOut: 'Zoom ut', documentViewerCanvas: 'Dokument', documentViewerContinuous: 'Vertikal rulling', documentViewerFitHeight: 'Sidehøyde', documentViewerFitWidth: 'Sidebredde', documentViewerLoadError: 'Siden kunne ikke lastes inn', documentViewerPages: 'Sider', documentViewerRotateLeft: 'Roter mot venstre', documentViewerRotateRight: 'Roter mot høyre', documentViewerSinglePage: 'Siderulling', documentViewerZoom: 'Zoom', editorAi: 'KI', editorAiSuggestions: 'KI-forslag', editorDelete: 'Slett', editorHideDeletedPages: 'Skjul slettede sider', editorPage: page => `Side ${page}`, editorRotate: 'Roter 90°', editorSelectAll: (selected, total) => `Velg alle (${selected} av ${total})`, editorSplit: 'Del', editorUser: 'Bruker', editorZoom: 'Zoom', editorZoomIn: 'Zoom inn', previewPage: page => `Side ${page}`, save: 'Lagre', scanCancelBack: 'Tilbake til redigering', scanCancelConfirm: 'Avbryt opplasting', scanCancelMessage: 'Hvis du avbryter, blir filen ikke lastet opp og endringene går tapt. Denne handlingen kan ikke angres.', scanCancelTitle: 'Avbryt opplasting?', scanFilesDisplayError: 'Filen(e) kan ikke vises', scanFilesLoading: 'Laster filer...', scanInvalidSession: 'Økten er ugyldig. Start prosessen på nytt.', scanSaveErrorBack: 'Tilbake til redigering', scanSaveErrorMessage: 'Det oppstod en feil under lagring. Du kan prøve igjen eller gå tilbake til redigering.', scanSaveErrorRetry: 'Prøv igjen', scanSaveErrorTitle: 'Feil ved lagring', scanSaving: 'Oppretter fil(er)', scanSessionLoading: 'Laster edScan-økt...', scanTitle: 'KI-assistert sideredigering', uploadDragAndDropDescription: 'Du kan dra og slippe en fil her eller velge en med knappen.', uploadDragAndDropTitle: 'Last opp fil', uploadDropFile: 'Slipp fil', uploadDropFiles: 'Slipp filer', uploadDuplicateFile: name => `${name} er allerede på listen`, uploadFailed: 'Filene kunne ikke lastes opp', uploadFileCountSummary: (count, size) => `${count} fil(er) · ${size}`, uploadFileTooLarge: (name, size) => `Filen ${name} er for stor. Maksimal størrelse er ${size} MB.`, uploadFileTypeNotAllowed: type => `Filtypen er ikke tillatt: ${type}`, uploadLimitExceeded: size => `Filen overskrider opplastingsgrensen på ${size} MB`, uploadLimitsExceeded: size => `Filene overskrider opplastingsgrensen på ${size} MB`, uploadOr: 'eller', uploadPreviewFile: name => `Forhåndsvisning: ${name}`, uploadProgress: 'Fil(er) lastes opp...', uploadRemoveFile: name => `Fjern: ${name}`, uploadRetryFile: name => `Prøv igjen: ${name}`, uploadSelectFile: 'Velg fil', uploadSelectFiles: 'Velg filer', uploadSuccess: (done, total) => `${done} av ${total} fil(er) lastet opp`, uploadTitle: 'Last opp fil', uploadTooManyFiles: max => `Du kan laste opp maksimalt ${max} fil(er)`, valueMissing: 'Fyll ut dette feltet.', valueMissingCheckbox: 'Merk av i denne boksen hvis du vil fortsette.', valueMissingRadio: 'Velg ett av disse alternativene.', valueMissingSelect: 'Velg et element i listen.', typeMismatchEmail: 'Angi en e-postadresse.', typeMismatchUrl: 'Angi en URL.', patternMismatch: 'Følg det forespurte formatet.', badInputNumber: 'Angi et tall.', rangeUnderflow: min => `Verdien må være større enn eller lik ${min}.`, rangeOverflow: max => `Verdien må være mindre enn eller lik ${max}.`, stepMismatch: (lower, upper) => `Angi en gyldig verdi. De to nærmeste gyldige verdiene er ${lower} og ${upper}.`, stepMismatchNearest: nearest => `Angi en gyldig verdi. Den nærmeste gyldige verdien er ${nearest}.`, tooShort: (minimum, current) => `Forleng denne teksten til ${minimum} tegn eller mer (du bruker for øyeblikket ${current} tegn).`, $code: 'nb', $dir: 'ltr', $name: 'Norwegian Bokmål' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/nb.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/nl.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'Deze inhoud is gegenereerd door AI', allTagsRemoved: 'Alle tags verwijderd', appearance: 'Uiterlijk', appearanceClassic: 'Klassiek', appearanceModern: 'Modern', autosizeColumn: 'Kolom aan inhoud aanpassen', back: 'Terug', cancel: 'Annuleren', carousel: 'Carrousel', chooseDate: 'Een datum kiezen', chooseDateAndTime: 'Een datum en tijd kiezen', chooseTime: 'Een tijd kiezen', clearEntry: 'Invoer wissen', clearFilter: 'Filter wissen', close: 'Sluiten', collapse: 'Inklappen', columnMenu: 'Kolomopties', columnMovedToPosition: (label, position, total) => `${label}, Positie ${position} van ${total}`, columns: 'Kolommen', completed: 'Voltooid', copied: 'Gekopieerd', copy: 'Kopiëren', currentValue: 'Huidige waarde', dateInputBadInput: 'Voer een geldige datum in.', dateInputRangeOverflow: 'De datum is te laat.', dateInputRangeUnderflow: 'De datum is te vroeg.', dateInputValueMissing: 'Vul dit veld in.', dateNotSelectable: 'Deze datum kan niet worden geselecteerd.', datePlaceholderDay: 'dd', datePlaceholderHalfyear: 'h', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 'k', datePlaceholderWeek: 'ww', datePlaceholderYear: 'jjjj', // Date input dateRangeEndBeforeStart: 'Het einde van de periode moet na het begin liggen.', dateSegmentDay: 'Dag', dateSegmentHalfyear: 'Halfjaar', dateSegmentMonth: 'Maand', dateSegmentQuarter: 'Kwartaal', dateSegmentWeek: 'Week', dateSegmentYear: 'Jaar', datetimeInputBadInput: 'Voer een geldige datum en tijd in.', datetimeInputRangeOverflow: 'De datum en tijd zijn te laat.', datetimeInputRangeUnderflow: 'De datum en tijd zijn te vroeg.', datetimeInputValueMissing: 'Vul dit veld in.', decrement: 'Verlagen', density: 'Dichtheid', densityCompact: 'Compact', densityDefault: 'Standaard', densitySpacious: 'Ruim', disabled: 'Uitgeschakeld', dragToReorder: 'Slepen om te herordenen', dropFileHere: 'Sleep bestand hierheen of klik om te bladeren', dropFilesHere: 'Sleep bestanden hierheen of klik om te bladeren', entriesPerPage: 'Items per pagina', error: 'Fout', expand: 'Uitklappen', filter: 'Filteren', filterByColumn: label => `Filteren ${label}`, filterFrom: 'Van', filterMax: 'Maximum', filterMin: 'Minimum', filterTo: 'Tot', finish: 'Voltooien', from: 'van', goToSlide: (slide, count) => `Ga naar slide ${slide} van ${count}`, halfyear: 'Halfjaar', hideColumn: 'Kolom verbergen', hidePassword: 'Verberg wachtwoord', increment: 'Verhogen', loadFailed: 'De rijen konden niet worden geladen.', loading: 'Bezig met laden', loadMoreFailed: 'Meer rijen konden niet worden geladen.', locked: 'Vergrendeld', mainMenu: 'Hoofdmenu', maximumValue: label => (label ? `${label} (Maximumwaarde)` : 'Maximumwaarde'), minimumValue: label => (label ? `${label} (Minimumwaarde)` : 'Minimumwaarde'), month: 'Maand', more: 'Meer', multipleValues: 'Meerdere waarden', newsMenu: 'Nieuwsmenu', newsToggleMenu: 'Nieuwsmenu wisselen', next: 'Volgende', nextPage: 'Volgende pagina', nextSlide: 'Volgende dia', noData: 'Geen gegevens', noDataDescription: 'Er zijn nog geen items om te tonen.', noOptions: 'Geen opties', noResults: 'Geen resultaten', noResultsDescription: 'Geen enkel item komt overeen met de zoekopdracht of de filters.', notCompleted: 'Niet voltooid', notificationsRegion: hotkey => `Meldingen, druk ${hotkey} om te focussen`, numCharacters: num => { if (num === 1) return '1 teken'; return `${num} tekens`; }, numCharactersRemaining: num => { if (num === 1) return '1 teken resterend'; return `${num} tekens resterend`; }, numEntries: (num, format) => { if (num === 0) return 'Geen items'; if (num === 1) return `${formatCount(1, format)} item`; return `${formatCount(num, format)} items`; }, numEntriesLoaded: (num, format) => { if (num === 0) return 'Geen items geladen'; if (num === 1) return `${formatCount(1, format)} item geladen`; return `${formatCount(num, format)} items geladen`; }, numEntriesOfTotal: (shown, total, format) => total === 1 ? `${formatCount(shown, format)} van ${formatCount(1, format)} item` : `${formatCount(shown, format)} van ${formatCount(total, format)} items`, numOfTotalSelected: (num, total, format) => `${formatCount(num, format)} van ${formatCount(total, format)} geselecteerd`, numOptionsAvailable: num => { if (num === 0) return 'Geen opties beschikbaar'; if (num === 1) return '1 optie beschikbaar'; return `${num} opties beschikbaar`; }, numOptionsSelected: num => { if (num === 0) return 'Geen optie geselecteerd'; if (num === 1) return '1 optie geselecteerd'; return `${num} opties geselecteerd`; }, numSelected: (num, format) => { if (num === 0) return 'Niets geselecteerd'; return `${formatCount(num, format)} geselecteerd`; }, numTotal: num => `${num} totaal`, ok: 'OK', onThisPage: 'Op deze pagina', optionPosition: (label, position, total) => `${label}, ${position} van ${total}`, optionsLoadError: 'Opties konden niet worden geladen', page: 'Pagina', pauseAnimation: 'Animatie pauzeren', pinToEnd: 'Aan het einde vastzetten', pinToStart: 'Aan het begin vastzetten', playAnimation: 'Animatie afspelen', previousPage: 'Vorige pagina', previousSlide: 'Vorige dia', progress: 'Voortgang', quarter: 'Kwartaal', rangeSelected: (start, end) => `${start} tot ${end} geselecteerd`, // Calendar range selection rangeSelectingFrom: date => `Bereik selecteren vanaf ${date}…`, remove: 'Verwijderen', reset: 'Opnieuw instellen', resetColumns: 'Kolommen herstellen', resetFilters: 'Alle filters wissen', resize: 'Formaat wijzigen', resizeColumn: 'Kolombreedte wijzigen', scrollableRegion: 'Scrollbaar gebied', scrollToEnd: 'Scroll naar einde', scrollToStart: 'Scroll naar begin', search: 'Zoeken', sectionPages: \"Pagina's van de sectie\", sections: 'Secties', selectAColorFromTheScreen: 'Selecteer een kleur van het scherm', numRowsCopied: num => { if (num === 0) return 'Geen rijen gekopieerd'; if (num === 1) return '1 rij gekopieerd'; return `${num} rijen gekopieerd`; }, numRowsSelected: num => { if (num === 0) return 'Geen rijen geselecteerd'; if (num === 1) return '1 rij geselecteerd'; return `${num} rijen geselecteerd`; }, rowLifted: (position, total) => `Rij opgetild, positie ${position} van ${total}. Gebruik pijl omhoog en omlaag om te verplaatsen, spatie om neer te zetten, Escape om te annuleren.`, rowMoved: (position, total) => `Positie ${position} van ${total}`, rowReorderCanceled: 'Verplaatsen geannuleerd', selectAllEntries: 'Alle items selecteren', selectAllRows: 'Alle rijen selecteren', selectDate: 'Datum selecteren', selectDateTime: 'Datum en tijd selecteren', selectGroup: 'Groep selecteren', selectRow: 'Rij selecteren', selectRowNamed: name => `${name} selecteren`, showingNofMRows: (shown, total) => `Weergegeven rijen: ${shown} van ${total}`, showingRangeOfMore: (first, last) => `${first}–${last} van meer dan ${last}`, showingRangeOfTotal: (first, last, total) => `${first}–${last} van ${total}`, sortAscending: 'Oplopend sorteren', sortDescending: 'Aflopend sorteren', sortedByColumn: (column, direction) => `Gesorteerd op ${column}, ${direction === 'ascending' ? 'oplopend' : 'aflopend'}`, sortingCleared: 'Sortering verwijderd', // Date picker selectTime: 'Tijd selecteren', showingPanelSpan: (first, last) => `${first} – ${last} worden getoond`, showingSinglePanel: month => `${month} wordt getoond`, showLess: 'Minder weergeven', showMore: 'Meer weergeven', showPassword: 'Laat wachtwoord zien', skipToContent: 'Ga naar inhoud', slideNum: slide => `Schuif ${slide}`, steps: 'Stappen', stepXOfY: (step, total) => `Stap ${step} van ${total}`, tagAdded: tag => `${tag} toegevoegd`, tagAlreadyAdded: tag => `${tag} is al toegevoegd`, tagInputKeyboardHelp: 'Druk op Backspace of Delete om deze tag te verwijderen.', tagRemoved: tag => `${tag} verwijderd`, timeInputBadInput: 'Voer een geldige tijd in.', timeInputRangeOverflow: 'De tijd is te laat.', timeInputRangeUnderflow: 'De tijd is te vroeg.', timeInputValueMissing: 'Vul dit veld in.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'uu', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'a.m./p.m.', timeSegmentHour: 'Uur', timeSegmentMinute: 'Minuut', timeSegmentSecond: 'Seconde', toggleColorFormat: 'Wissel kleurnotatie', toggleNavigationDrawer: 'Navigatiepaneel wisselen', tooFewTags: min => (min === 1 ? 'Voeg minimaal 1 tag toe' : `Voeg minimaal ${min} tags toe`), tooManyTags: max => (max === 1 ? 'Voeg maximaal 1 tag toe' : `Voeg maximaal ${max} tags toe`), tryAgain: 'Opnieuw proberen', unpinColumn: 'Kolom losmaken', unread: 'Ongelezen', unsort: 'Sortering opheffen', until: 'tot', view: 'Weergave', weekInputRangeOverflow: 'De week is te laat.', weekInputRangeUnderflow: 'De week is te vroeg.', weekInputValueMissing: 'Selecteer een week.', weekLabel: week => `Week ${week}`, year: 'Jaar', zoomIn: 'Inzoomen', zoomOut: 'Uitzoomen', documentViewerCanvas: 'Document', documentViewerContinuous: 'Verticaal scrollen', documentViewerFitHeight: 'Paginahoogte', documentViewerFitWidth: 'Paginabreedte', documentViewerLoadError: 'Pagina kon niet worden geladen', documentViewerPages: \"Pagina's\", documentViewerRotateLeft: 'Linksom draaien', documentViewerRotateRight: 'Rechtsom draaien', documentViewerSinglePage: 'Paginascrollen', documentViewerZoom: 'Zoom', editorAi: 'AI', editorAiSuggestions: 'AI-suggesties', editorDelete: 'Verwijderen', editorHideDeletedPages: 'Verwijderde pagina’s verbergen', editorPage: page => `Pagina ${page}`, editorRotate: '90° draaien', editorSelectAll: (selected, total) => `Alles selecteren (${selected} van ${total})`, editorSplit: 'Splitsen', editorUser: 'Gebruiker', editorZoom: 'Zoom', editorZoomIn: 'Inzoomen', previewPage: page => `Pagina ${page}`, save: 'Opslaan', scanCancelBack: 'Terug naar bewerken', scanCancelConfirm: 'Upload annuleren', scanCancelMessage: 'Als je annuleert, wordt het bestand niet geüpload en gaan wijzigingen verloren. Deze actie kan niet ongedaan worden gemaakt.', scanCancelTitle: 'Upload annuleren?', scanFilesDisplayError: 'Bestand(en) kunnen niet worden weergegeven', scanFilesLoading: 'Bestanden laden...', scanInvalidSession: 'De sessie is ongeldig. Start het proces opnieuw.', scanSaveErrorBack: 'Terug naar bewerken', scanSaveErrorMessage: 'Er is een fout opgetreden tijdens het opslaan. Probeer opnieuw of keer terug naar bewerken.', scanSaveErrorRetry: 'Opnieuw proberen', scanSaveErrorTitle: 'Fout bij opslaan', scanSaving: 'Bestand(en) maken', scanSessionLoading: 'edScan-sessie laden...', scanTitle: 'AI-ondersteunde paginabewerking', uploadDragAndDropDescription: 'Je kunt een bestand hierheen slepen of selecteren met de knop.', uploadDragAndDropTitle: 'Bestand uploaden', uploadDropFile: 'Bestand neerzetten', uploadDropFiles: 'Bestanden neerzetten', uploadDuplicateFile: name => `${name} staat al in de lijst`, uploadFailed: 'Bestanden konden niet worden geüpload', uploadFileCountSummary: (count, size) => `${count} bestand(en) · ${size}`, uploadFileTooLarge: (name, size) => `Bestand ${name} is te groot. Maximale grootte is ${size} MB.`, uploadFileTypeNotAllowed: type => `Bestandstype niet toegestaan: ${type}`, uploadLimitExceeded: size => `Het bestand overschrijdt de uploadlimiet van ${size} MB`, uploadLimitsExceeded: size => `De bestanden overschrijden de uploadlimiet van ${size} MB`, uploadOr: 'of', uploadPreviewFile: name => `Voorbeeld: ${name}`, uploadProgress: 'Bestanden worden geüpload...', uploadRemoveFile: name => `Verwijderen: ${name}`, uploadRetryFile: name => `Opnieuw proberen: ${name}`, uploadSelectFile: 'Bestand kiezen', uploadSelectFiles: 'Bestanden kiezen', uploadSuccess: (done, total) => `${done} van ${total} bestanden geüpload`, uploadTitle: 'Bestand uploaden', uploadTooManyFiles: max => `U kunt maximaal ${max} bestand(en) uploaden`, valueMissing: 'Vul dit veld in.', valueMissingCheckbox: 'Vink dit vakje aan als u wilt doorgaan.', valueMissingRadio: 'Selecteer een van deze opties.', valueMissingSelect: 'Selecteer een item in de lijst.', typeMismatchEmail: 'Voer een e-mailadres in.', typeMismatchUrl: 'Voer een URL in.', patternMismatch: 'Houd u aan de gevraagde indeling.', badInputNumber: 'Voer een getal in.', rangeUnderflow: min => `De waarde moet groter dan of gelijk aan ${min} zijn.`, rangeOverflow: max => `De waarde moet kleiner dan of gelijk aan ${max} zijn.`, stepMismatch: (lower, upper) => `Voer een geldige waarde in. De twee dichtstbijzijnde geldige waarden zijn ${lower} en ${upper}.`, stepMismatchNearest: nearest => `Voer een geldige waarde in. De dichtstbijzijnde geldige waarde is ${nearest}.`, tooShort: (minimum, current) => `Verleng deze tekst tot ${minimum} tekens of meer (u gebruikt momenteel ${current} tekens).`, $code: 'nl', $dir: 'ltr', $name: 'Nederlands' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/nl.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/nn.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'Dette innhaldet er generert av KI', allTagsRemoved: 'Alle taggar fjerna', appearance: 'Utsjånad', appearanceClassic: 'Klassisk', appearanceModern: 'Moderne', autosizeColumn: 'Tilpass kolonnen til innhaldet', back: 'Tilbake', cancel: 'Avbryt', carousel: 'Karusell', chooseDate: 'Vel ein dato', chooseDateAndTime: 'Vel ein dato og eit tidspunkt', chooseTime: 'Vel eit tidspunkt', clearEntry: 'Tøm felt', clearFilter: 'Fjern filter', close: 'Lukk', collapse: 'Skjul', columnMenu: 'Kolonnealternativ', columnMovedToPosition: (label, position, total) => `${label}, Posisjon ${position} av ${total}`, columns: 'Kolonnar', completed: 'Fullført', copied: 'Kopiert', copy: 'Kopier', currentValue: 'Nåverande verdi', dateInputBadInput: 'Skriv inn ein gyldig dato.', dateInputRangeOverflow: 'Datoen er for sein.', dateInputRangeUnderflow: 'Datoen er for tidleg.', dateInputValueMissing: 'Fyll ut dette feltet.', dateNotSelectable: 'Denne datoen kan ikkje veljast.', datePlaceholderDay: 'dd', datePlaceholderHalfyear: 'h', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 'k', datePlaceholderWeek: 'vv', datePlaceholderYear: 'åååå', // Date input dateRangeEndBeforeStart: 'Slutten på perioden må vere etter starten.', dateSegmentDay: 'Dag', dateSegmentHalfyear: 'Halvår', dateSegmentMonth: 'Månad', dateSegmentQuarter: 'Kvartal', dateSegmentWeek: 'Veke', dateSegmentYear: 'År', datetimeInputBadInput: 'Skriv inn ein gyldig dato og eit gyldig tidspunkt.', datetimeInputRangeOverflow: 'Dato og tidspunkt er for seint.', datetimeInputRangeUnderflow: 'Dato og tidspunkt er for tidleg.', datetimeInputValueMissing: 'Fyll ut dette feltet.', decrement: 'Reduser', density: 'Tettleik', densityCompact: 'Kompakt', densityDefault: 'Standard', densitySpacious: 'Luftig', disabled: 'Deaktivert', dragToReorder: 'Dra for å omorganisere', dropFileHere: 'Slepp fila her eller klikk for å bla gjennom', dropFilesHere: 'Slepp filene her eller klikk for å bla gjennom', entriesPerPage: 'Postar per side', error: 'Feil', expand: 'Vis', filter: 'Filtrer', filterByColumn: label => `Filtrer ${label}`, filterFrom: 'Frå', filterMax: 'Maksimum', filterMin: 'Minimum', filterTo: 'Til', finish: 'Fullfør', from: 'av', goToSlide: (slide, count) => `Gå til visning ${slide} av ${count}`, halfyear: 'Halvår', hideColumn: 'Gøym kolonne', hidePassword: 'Gøym passord', increment: 'Auk', loadFailed: 'Radene kunne ikkje lastast inn.', loading: 'Lastar', loadMoreFailed: 'Fleire rader kunne ikkje lastast inn.', locked: 'Låst', mainMenu: 'Hovudmeny', maximumValue: label => (label ? `${label} (Maksimumsverdi)` : 'Maksimumsverdi'), minimumValue: label => (label ? `${label} (Minimumsverdi)` : 'Minimumsverdi'), month: 'Månad', more: 'Meir', multipleValues: 'Fleire verdiar', newsMenu: 'Nyheitsmeny', newsToggleMenu: 'Byt nyheitsmeny', next: 'Neste', nextPage: 'Neste side', nextSlide: 'Neste visning', noData: 'Ingen data', noDataDescription: 'Det er ingen oppføringar å vise enno.', noOptions: 'Ingen alternativ', noResults: 'Ingen resultat', noResultsDescription: 'Ingen oppføringar samsvarer med søket eller filtra.', notCompleted: 'Ikkje fullført', notificationsRegion: hotkey => `Varsel, trykk ${hotkey} for å fokusere`, numCharacters: num => { if (num === 1) return '1 teikn'; return `${num} teikn`; }, numCharactersRemaining: num => { if (num === 1) return '1 teikn att'; return `${num} teikn att`; }, numEntries: (num, format) => { if (num === 0) return 'Ingen postar'; if (num === 1) return `${formatCount(1, format)} post`; return `${formatCount(num, format)} postar`; }, numEntriesLoaded: (num, format) => { if (num === 0) return 'Ingen postar lasta'; if (num === 1) return `${formatCount(1, format)} post lasta`; return `${formatCount(num, format)} postar lasta`; }, numEntriesOfTotal: (shown, total, format) => total === 1 ? `${formatCount(shown, format)} av ${formatCount(1, format)} post` : `${formatCount(shown, format)} av ${formatCount(total, format)} postar`, numOfTotalSelected: (num, total, format) => `${formatCount(num, format)} av ${formatCount(total, format)} valde`, numOptionsAvailable: num => { if (num === 0) return 'Ingen alternativ tilgjengelege'; if (num === 1) return 'Eitt alternativ tilgjengeleg'; return `${num} alternativ tilgjengelege`; }, numOptionsSelected: num => { if (num === 0) return 'Ingen alternativ valt'; if (num === 1) return 'Eitt alternativ valt'; return `${num} alternativ valt`; }, numSelected: (num, format) => { if (num === 0) return 'Ingen valde'; return `${formatCount(num, format)} valde`; }, numTotal: num => `${num} totalt`, ok: 'OK', onThisPage: 'På denne sida', optionPosition: (label, position, total) => `${label}, ${position} av ${total}`, optionsLoadError: 'Alternativa kunne ikkje lastast inn', page: 'Side', pauseAnimation: 'Set animasjon på pause', pinToEnd: 'Fest til slutten', pinToStart: 'Fest til starten', playAnimation: 'Spel av animasjon', previousPage: 'Førre side', previousSlide: 'Førre visning', progress: 'Framdrift', quarter: 'Kvartal', rangeSelected: (start, end) => `${start} til ${end} valde`, // Calendar range selection rangeSelectingFrom: date => `Vel intervall frå ${date}…`, remove: 'Fjern', reset: 'Tilbakestill', resetColumns: 'Tilbakestill kolonnar', resetFilters: 'Tilbakestill alle filter', resize: 'Endre storleik', resizeColumn: 'Endra kolonnebreidd', scrollableRegion: 'Rullbar region', scrollToEnd: 'Rull til slutten', scrollToStart: 'Rull til starten', search: 'Søk', sectionPages: 'Sider i seksjonen', sections: 'Seksjonar', selectAColorFromTheScreen: 'Vel ein farge frå skjermen', numRowsCopied: num => { if (num === 0) return 'Ingen rader kopierte'; if (num === 1) return '1 rad kopiert'; return `${num} rader kopierte`; }, numRowsSelected: num => { if (num === 0) return 'Ingen rader valde'; if (num === 1) return '1 rad vald'; return `${num} rader valde`; }, rowLifted: (position, total) => `Rad løfta, posisjon ${position} av ${total}. Bruk pil opp og pil ned for å flytte, mellomrom for å plassere, Escape for å avbryte.`, rowMoved: (position, total) => `Posisjon ${position} av ${total}`, rowReorderCanceled: 'Flytting avbroten', selectAllEntries: 'Vel alle oppføringar', selectAllRows: 'Vel alle rader', selectDate: 'Vel dato', selectDateTime: 'Vel dato og klokkeslett', selectGroup: 'Vel gruppe', selectRow: 'Vel rad', selectRowNamed: name => `Vel ${name}`, showingNofMRows: (shown, total) => `Viste rader: ${shown} av ${total}`, showingRangeOfMore: (first, last) => `${first}–${last} av fleire enn ${last}`, showingRangeOfTotal: (first, last, total) => `${first}–${last} av ${total}`, sortAscending: 'Sorter stigande', sortDescending: 'Sorter søkkande', sortedByColumn: (column, direction) => `Sortert etter ${column}, ${direction === 'ascending' ? 'stigande' : 'synkande'}`, sortingCleared: 'Sortering fjerna', // Date picker selectTime: 'Vel tidspunkt', showingPanelSpan: (first, last) => `Viser ${first} – ${last}`, showingSinglePanel: month => `Viser ${month}`, showLess: 'Vis mindre', showMore: 'Vis meir', showPassword: 'Vis passord', skipToContent: 'Gå til innhald', slideNum: slide => `Visning ${slide}`, steps: 'Steg', stepXOfY: (step, total) => `Steg ${step} av ${total}`, tagAdded: tag => `${tag} lagd til`, tagAlreadyAdded: tag => `${tag} er allereie lagd til`, tagInputKeyboardHelp: 'Trykk på Backspace eller Delete for å fjerne denne taggen.', tagRemoved: tag => `${tag} fjerna`, timeInputBadInput: 'Skriv inn eit gyldig tidspunkt.', timeInputRangeOverflow: 'Tidspunktet er for seint.', timeInputRangeUnderflow: 'Tidspunktet er for tidleg.', timeInputValueMissing: 'Fyll ut dette feltet.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'tt', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'a.m./p.m.', timeSegmentHour: 'Time', timeSegmentMinute: 'Minutt', timeSegmentSecond: 'Sekund', toggleColorFormat: 'Byt fargeformat', toggleNavigationDrawer: 'Byt navigasjonspanel', tooFewTags: min => (min === 1 ? 'Legg til minst 1 tagg' : `Legg til minst ${min} taggar`), tooManyTags: max => (max === 1 ? 'Legg til høgst 1 tagg' : `Legg til høgst ${max} taggar`), tryAgain: 'Prøv igjen', unpinColumn: 'Løys kolonnen', unread: 'Ulesen', unsort: 'Fjern sortering', until: 'til', view: 'Vising', weekInputRangeOverflow: 'Veka er for sein.', weekInputRangeUnderflow: 'Veka er for tidleg.', weekInputValueMissing: 'Vel ei veke.', weekLabel: week => `Veke ${week}`, year: 'År', zoomIn: 'Zoom inn', zoomOut: 'Zoom ut', documentViewerCanvas: 'Dokument', documentViewerContinuous: 'Vertikal rulling', documentViewerFitHeight: 'Sidehøgd', documentViewerFitWidth: 'Sidebreidde', documentViewerLoadError: 'Sida kunne ikkje lastast inn', documentViewerPages: 'Sider', documentViewerRotateLeft: 'Roter mot venstre', documentViewerRotateRight: 'Roter mot høgre', documentViewerSinglePage: 'Siderulling', documentViewerZoom: 'Zoom', editorAi: 'KI', editorAiSuggestions: 'KI-forslag', editorDelete: 'Slett', editorHideDeletedPages: 'Gøym sletta sider', editorPage: page => `Side ${page}`, editorRotate: 'Roter 90°', editorSelectAll: (selected, total) => `Vel alle (${selected} av ${total})`, editorSplit: 'Del', editorUser: 'Brukar', editorZoom: 'Zoom', editorZoomIn: 'Zoom inn', previewPage: page => `Side ${page}`, save: 'Lagre', scanCancelBack: 'Tilbake til redigering', scanCancelConfirm: 'Avbryt opplasting', scanCancelMessage: 'Viss du avbryt, blir fila ikkje lasta opp og endringane går tapt. Denne handlinga kan ikkje angrast.', scanCancelTitle: 'Avbryte opplasting?', scanFilesDisplayError: 'Fila(e) kan ikkje visast', scanFilesLoading: 'Lastar filer...', scanInvalidSession: 'Økta er ugyldig. Start prosessen på nytt.', scanSaveErrorBack: 'Tilbake til redigering', scanSaveErrorMessage: 'Det oppstod ein feil under lagring. Du kan prøve igjen eller gå tilbake til redigering.', scanSaveErrorRetry: 'Prøv igjen', scanSaveErrorTitle: 'Feil ved lagring', scanSaving: 'Opprettar fil(er)', scanSessionLoading: 'Lastar edScan-økt...', scanTitle: 'KI-assistert sideredigering', uploadDragAndDropDescription: 'Du kan dra og sleppe ei fil her eller velje ho med knappen.', uploadDragAndDropTitle: 'Last opp fil', uploadDropFile: 'Slepp fil', uploadDropFiles: 'Slepp filer', uploadDuplicateFile: name => `${name} er allereie på lista`, uploadFailed: 'Filene kunne ikkje lastast opp', uploadFileCountSummary: (count, size) => `${count} fil(er) · ${size}`, uploadFileTooLarge: (name, size) => `Fila ${name} er for stor. Maksimal storleik er ${size} MB.`, uploadFileTypeNotAllowed: type => `Filtypen er ikkje tillaten: ${type}`, uploadLimitExceeded: size => `Fila overskrid opplastingsgrensa på ${size} MB`, uploadLimitsExceeded: size => `Filene overskrid opplastingsgrensa på ${size} MB`, uploadOr: 'eller', uploadPreviewFile: name => `Førehandsvising: ${name}`, uploadProgress: 'Fil(er) blir lasta opp...', uploadRemoveFile: name => `Fjern: ${name}`, uploadRetryFile: name => `Prøv igjen: ${name}`, uploadSelectFile: 'Vel fil', uploadSelectFiles: 'Vel filer', uploadSuccess: (done, total) => `${done} av ${total} fil(er) lasta opp`, uploadTitle: 'Last opp fil', uploadTooManyFiles: max => `Du kan laste opp maksimalt ${max} fil(er)`, valueMissing: 'Fyll ut dette feltet.', valueMissingCheckbox: 'Merk av i denne boksen om du vil halde fram.', valueMissingRadio: 'Vel eitt av desse alternativa.', valueMissingSelect: 'Vel eit element i lista.', typeMismatchEmail: 'Skriv inn ei e-postadresse.', typeMismatchUrl: 'Skriv inn ein URL.', patternMismatch: 'Følg det etterspurde formatet.', badInputNumber: 'Skriv inn eit tal.', rangeUnderflow: min => `Verdien må vere større enn eller lik ${min}.`, rangeOverflow: max => `Verdien må vere mindre enn eller lik ${max}.`, stepMismatch: (lower, upper) => `Skriv inn ein gyldig verdi. Dei to næraste gyldige verdiane er ${lower} og ${upper}.`, stepMismatchNearest: nearest => `Skriv inn ein gyldig verdi. Den næraste gyldige verdien er ${nearest}.`, tooShort: (minimum, current) => `Forleng denne teksten til ${minimum} teikn eller meir (du brukar no ${current} teikn).`, $code: 'nn', $dir: 'ltr', $name: 'Norwegian Nynorsk' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/nn.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/pl.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'Ta treść została wygenerowana przez sztuczną inteligencję', allTagsRemoved: 'Usunięto wszystkie tagi', appearance: 'Wygląd', appearanceClassic: 'Klasyczny', appearanceModern: 'Nowoczesny', autosizeColumn: 'Dopasuj kolumnę do zawartości', back: 'Wstecz', cancel: 'Anuluj', carousel: 'Karuzela', chooseDate: 'Wybierz datę', chooseDateAndTime: 'Wybierz datę i godzinę', chooseTime: 'Wybierz godzinę', clearEntry: 'Wyczyść wpis', clearFilter: 'Wyczyść filtr', close: 'Zamknij', collapse: 'Zwiń', columnMenu: 'Opcje kolumny', columnMovedToPosition: (label, position, total) => `${label}, Pozycja ${position} z ${total}`, columns: 'Kolumny', completed: 'Ukończono', copied: 'Skopiowane', copy: 'Kopiuj', currentValue: 'Aktualna wartość', dateInputBadInput: 'Wprowadź prawidłową datę.', dateInputRangeOverflow: 'Data jest zbyt późna.', dateInputRangeUnderflow: 'Data jest zbyt wczesna.', dateInputValueMissing: 'Wypełnij to pole.', dateNotSelectable: 'Tej daty nie można wybrać.', datePlaceholderDay: 'DD', datePlaceholderHalfyear: 'P', datePlaceholderMonth: 'MM', datePlaceholderQuarter: 'K', datePlaceholderWeek: 'TT', datePlaceholderYear: 'RRRR', // Date input dateRangeEndBeforeStart: 'Koniec okresu musi być po jego początku.', dateSegmentDay: 'Dzień', dateSegmentHalfyear: 'Półrocze', dateSegmentMonth: 'Miesiąc', dateSegmentQuarter: 'Kwartał', dateSegmentWeek: 'Tydzień', dateSegmentYear: 'Rok', datetimeInputBadInput: 'Wprowadź prawidłową datę i godzinę.', datetimeInputRangeOverflow: 'Data i godzina są zbyt późne.', datetimeInputRangeUnderflow: 'Data i godzina są zbyt wczesne.', datetimeInputValueMissing: 'Wypełnij to pole.', decrement: 'Zmniejsz', density: 'Gęstość', densityCompact: 'Kompaktowa', densityDefault: 'Domyślna', densitySpacious: 'Przestronna', disabled: 'Wyłączone', dragToReorder: 'Przeciągnij, aby zmienić kolejność', dropFileHere: 'Upuść plik tutaj lub kliknij, aby przeglądać', dropFilesHere: 'Upuść pliki tutaj lub kliknij, aby przeglądać', entriesPerPage: 'Wpisów na stronę', error: 'Błąd', expand: 'Rozwiń', filter: 'Filtruj', filterByColumn: label => `Filtruj ${label}`, filterFrom: 'Od', filterMax: 'Maksimum', filterMin: 'Minimum', filterTo: 'Do', finish: 'Zakończ', from: 'z', goToSlide: (slide, count) => `Przejdź do slajdu ${slide} z ${count}`, halfyear: 'Półrocze', hideColumn: 'Ukryj kolumnę', hidePassword: 'Ukryj hasło', increment: 'Zwiększ', loadFailed: 'Nie udało się wczytać wierszy.', loading: 'Ładowanie', loadMoreFailed: 'Nie udało się wczytać kolejnych wierszy.', locked: 'Zablokowano', mainMenu: 'Menu główne', maximumValue: label => (label ? `${label} (Wartość maksymalna)` : 'Wartość maksymalna'), minimumValue: label => (label ? `${label} (Wartość minimalna)` : 'Wartość minimalna'), month: 'Miesiąc', more: 'Więcej', multipleValues: 'Wiele wartości', newsMenu: 'Menu aktualności', newsToggleMenu: 'Przełącz menu aktualności', next: 'Dalej', nextPage: 'Następna strona', nextSlide: 'Następny slajd', noData: 'Brak danych', noDataDescription: 'Nie ma jeszcze żadnych wpisów do wyświetlenia.', noOptions: 'Brak opcji', noResults: 'Brak wyników', noResultsDescription: 'Żaden wpis nie pasuje do wyszukiwania ani filtrów.', notCompleted: 'Nieukończono', notificationsRegion: hotkey => `Powiadomienia, naciśnij ${hotkey} aby skupić`, numCharacters: num => { if (num === 1) return '1 znak'; const mod10 = num % 10; const mod100 = num % 100; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `${num} znaki`; return `${num} znaków`; }, numCharactersRemaining: num => { if (num === 1) return 'Pozostał 1 znak'; const mod10 = num % 10; const mod100 = num % 100; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `Pozostały ${num} znaki`; return `Pozostało ${num} znaków`; }, numEntries: (num, format) => { if (num === 0) return 'Brak wpisów'; if (num === 1) return `${formatCount(1, format)} wpis`; const mod10 = num % 10; const mod100 = num % 100; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `${formatCount(num, format)} wpisy`; return `${formatCount(num, format)} wpisów`; }, numEntriesLoaded: (num, format) => { const mod10 = num % 10; const mod100 = num % 100; if (num === 0) return 'Nie wczytano wpisów'; if (num === 1) return `Wczytano ${formatCount(1, format)} wpis`; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `Wczytano ${formatCount(num, format)} wpisy`; return `Wczytano ${formatCount(num, format)} wpisów`; }, numEntriesOfTotal: (shown, total, format) => total === 1 ? `${formatCount(shown, format)} z ${formatCount(1, format)} wpisu` : `${formatCount(shown, format)} z ${formatCount(total, format)} wpisów`, numOfTotalSelected: (num, total, format) => `Zaznaczono ${formatCount(num, format)} z ${formatCount(total, format)}`, numOptionsAvailable: num => { const mod10 = num % 10; const mod100 = num % 100; if (num === 0) return 'Brak dostępnych opcji'; if (num === 1) return 'Dostępna 1 opcja'; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `Dostępne ${num} opcje`; return `Dostępnych ${num} opcji`; }, numOptionsSelected: num => { const mod10 = num % 10; const mod100 = num % 100; if (num === 0) return 'Nie wybrano opcji'; if (num === 1) return 'Wybrano 1 opcję'; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `Wybrano ${num} opcje`; return `Wybrano ${num} opcji`; }, numSelected: (num, format) => { if (num === 0) return 'Nic nie zaznaczono'; return `Zaznaczono ${formatCount(num, format)}`; }, numTotal: num => `Łącznie ${num}`, ok: 'OK', onThisPage: 'Na tej stronie', optionPosition: (label, position, total) => `${label}, ${position} z ${total}`, optionsLoadError: 'Nie udało się wczytać opcji', page: 'Strona', pauseAnimation: 'Wstrzymaj animację', pinToEnd: 'Przypnij na końcu', pinToStart: 'Przypnij na początku', playAnimation: 'Odtwórz animację', previousPage: 'Poprzednia strona', previousSlide: 'Poprzedni slajd', progress: 'Postęp', quarter: 'Kwartał', rangeSelected: (start, end) => `Wybrano od ${start} do ${end}`, // Calendar range selection rangeSelectingFrom: date => `Wybieranie zakresu od ${date}…`, remove: 'Usunąć', reset: 'Resetuj', resetColumns: 'Przywróć kolumny', resetFilters: 'Wyczyść wszystkie filtry', resize: 'Zmień rozmiar', resizeColumn: 'Zmień szerokość kolumny', scrollableRegion: 'Obszar przewijalny', scrollToEnd: 'Przewiń do końca', scrollToStart: 'Przewiń do początku', search: 'Szukaj', sectionPages: 'Strony sekcji', sections: 'Sekcje', selectAColorFromTheScreen: 'Próbkuj z ekranu', numRowsCopied: num => { if (num === 0) return 'Nie skopiowano żadnych wierszy'; if (num === 1) return 'Skopiowano 1 wiersz'; const mod10 = num % 10; const mod100 = num % 100; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `Skopiowano ${num} wiersze`; return `Skopiowano ${num} wierszy`; }, numRowsSelected: num => { if (num === 0) return 'Nie wybrano żadnych wierszy'; if (num === 1) return 'Wybrano 1 wiersz'; const mod10 = num % 10; const mod100 = num % 100; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `Wybrano ${num} wiersze`; return `Wybrano ${num} wierszy`; }, rowLifted: (position, total) => `Wiersz podniesiony, pozycja ${position} z ${total}. Strzałkami w górę i w dół przesuwasz, spacją upuszczasz, klawiszem Escape anulujesz.`, rowMoved: (position, total) => `Pozycja ${position} z ${total}`, rowReorderCanceled: 'Przenoszenie anulowane', selectAllEntries: 'Zaznacz wszystkie pozycje', selectAllRows: 'Zaznacz wszystkie wiersze', selectDate: 'Wybierz datę', selectDateTime: 'Wybierz datę i czas', selectGroup: 'Zaznacz grupę', selectRow: 'Zaznacz wiersz', selectRowNamed: name => `Zaznacz ${name}`, showingNofMRows: (shown, total) => `Wyświetlane wiersze: ${shown} z ${total}`, showingRangeOfMore: (first, last) => `${first}–${last} z ponad ${last}`, showingRangeOfTotal: (first, last, total) => `${first}–${last} z ${total}`, sortAscending: 'Sortuj rosnąco', sortDescending: 'Sortuj malejąco', sortedByColumn: (column, direction) => `Posortowano według ${column}, ${direction === 'ascending' ? 'rosnąco' : 'malejąco'}`, sortingCleared: 'Sortowanie usunięte', // Date picker selectTime: 'Wybierz godzinę', showingPanelSpan: (first, last) => `Wyświetlanie ${first} – ${last}`, showingSinglePanel: month => `Wyświetlanie ${month}`, showLess: 'Pokaż mniej', showMore: 'Pokaż więcej', showPassword: 'Pokaż hasło', skipToContent: 'Przejdź do treści', slideNum: slide => `Slajd ${slide}`, steps: 'Kroki', stepXOfY: (step, total) => `Krok ${step} z ${total}`, tagAdded: tag => `Dodano ${tag}`, tagAlreadyAdded: tag => `Tag ${tag} już istnieje`, tagInputKeyboardHelp: 'Naciśnij Backspace lub Delete, aby usunąć ten tag.', tagRemoved: tag => `Usunięto ${tag}`, timeInputBadInput: 'Wprowadź prawidłową godzinę.', timeInputRangeOverflow: 'Godzina jest zbyt późna.', timeInputRangeUnderflow: 'Godzina jest zbyt wczesna.', timeInputValueMissing: 'Wypełnij to pole.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'Pora dnia', timeSegmentHour: 'Godzina', timeSegmentMinute: 'Minuta', timeSegmentSecond: 'Sekunda', toggleColorFormat: 'Przełącz format', toggleNavigationDrawer: 'Przełącz panel nawigacji', tooFewTags: min => { if (min === 1) return 'Dodaj co najmniej 1 tag'; const mod10 = min % 10; const mod100 = min % 100; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `Dodaj co najmniej ${min} tagi`; return `Dodaj co najmniej ${min} tagów`; }, tooManyTags: max => { if (max === 1) return 'Dodaj nie więcej niż 1 tag'; const mod10 = max % 10; const mod100 = max % 100; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `Dodaj nie więcej niż ${max} tagi`; return `Dodaj nie więcej niż ${max} tagów`; }, tryAgain: 'Spróbuj ponownie', unpinColumn: 'Odepnij kolumnę', unread: 'Nieprzeczytane', unsort: 'Usuń sortowanie', until: 'do', view: 'Widok', weekInputRangeOverflow: 'Tydzień jest zbyt późny.', weekInputRangeUnderflow: 'Tydzień jest zbyt wczesny.', weekInputValueMissing: 'Wybierz tydzień.', weekLabel: week => `Tydzień ${week}`, year: 'Rok', zoomIn: 'Powiększ', zoomOut: 'Pomniejsz', documentViewerCanvas: 'Dokument', documentViewerContinuous: 'Przewijanie pionowe', documentViewerFitHeight: 'Wysokość strony', documentViewerFitWidth: 'Szerokość strony', documentViewerLoadError: 'Nie można załadować strony', documentViewerPages: 'Strony', documentViewerRotateLeft: 'Obróć w lewo', documentViewerRotateRight: 'Obróć w prawo', documentViewerSinglePage: 'Przewijanie stron', documentViewerZoom: 'Powiększenie', editorAi: 'AI', editorAiSuggestions: 'Sugestie AI', editorDelete: 'Usuń', editorHideDeletedPages: 'Ukryj usunięte strony', editorPage: page => `Strona ${page}`, editorRotate: 'Obróć o 90°', editorSelectAll: (selected, total) => `Zaznacz wszystko (${selected} z ${total})`, editorSplit: 'Podziel', editorUser: 'Użytkownik', editorZoom: 'Powiększenie', editorZoomIn: 'Powiększ', previewPage: page => `Strona ${page}`, save: 'Zapisz', scanCancelBack: 'Powrót do edycji', scanCancelConfirm: 'Anuluj przesyłanie', scanCancelMessage: 'Jeśli anulujesz, plik nie zostanie przesłany, a zmiany zostaną utracone. Tej operacji nie można cofnąć.', scanCancelTitle: 'Anulować przesyłanie?', scanFilesDisplayError: 'Nie można wyświetlić plików', scanFilesLoading: 'Ładowanie plików...', scanInvalidSession: 'Sesja jest nieprawidłowa. Uruchom proces ponownie.', scanSaveErrorBack: 'Powrót do edycji', scanSaveErrorMessage: 'Wystąpił błąd podczas zapisywania. Spróbuj ponownie lub wróć do edycji.', scanSaveErrorRetry: 'Spróbuj ponownie', scanSaveErrorTitle: 'Błąd podczas zapisywania', scanSaving: 'Tworzenie plików', scanSessionLoading: 'Ładowanie sesji edScan...', scanTitle: 'Edycja stron wspomagana AI', uploadDragAndDropDescription: 'Możesz przeciągnąć plik tutaj lub wybrać go przyciskiem.', uploadDragAndDropTitle: 'Prześlij plik', uploadDropFile: 'Upuść plik', uploadDropFiles: 'Upuść pliki', uploadDuplicateFile: name => `${name} jest już na liście`, uploadFailed: 'Nie udało się przesłać plików', uploadFileCountSummary: (count, size) => `${count} plik(ów) · ${size}`, uploadFileTooLarge: (name, size) => `Plik ${name} jest za duży. Maksymalny rozmiar to ${size} MB.`, uploadFileTypeNotAllowed: type => `Typ pliku jest niedozwolony: ${type}`, uploadLimitExceeded: size => `Plik przekracza limit przesyłania ${size} MB`, uploadLimitsExceeded: size => `Pliki przekraczają limit przesyłania ${size} MB`, uploadOr: 'lub', uploadPreviewFile: name => `Podgląd: ${name}`, uploadProgress: 'Przesyłanie plików...', uploadRemoveFile: name => `Usuń: ${name}`, uploadRetryFile: name => `Spróbuj ponownie: ${name}`, uploadSelectFile: 'Wybierz plik', uploadSelectFiles: 'Wybierz pliki', uploadSuccess: (done, total) => `${done} z ${total} plików przesłano`, uploadTitle: 'Prześlij plik', uploadTooManyFiles: max => `Możesz przesłać maksymalnie ${max} plik(ów)`, valueMissing: 'Wypełnij to pole.', valueMissingCheckbox: 'Zaznacz to pole, jeśli chcesz kontynuować.', valueMissingRadio: 'Wybierz jedną z tych opcji.', valueMissingSelect: 'Wybierz element z listy.', typeMismatchEmail: 'Wprowadź adres e-mail.', typeMismatchUrl: 'Wprowadź adres URL.', patternMismatch: 'Zachowaj wymagany format.', badInputNumber: 'Wprowadź liczbę.', rangeUnderflow: min => `Wartość musi być większa lub równa ${min}.`, rangeOverflow: max => `Wartość musi być mniejsza lub równa ${max}.`, stepMismatch: (lower, upper) => `Wprowadź prawidłową wartość. Dwie najbliższe prawidłowe wartości to ${lower} i ${upper}.`, stepMismatchNearest: nearest => `Wprowadź prawidłową wartość. Najbliższa prawidłowa wartość to ${nearest}.`, tooShort: (minimum, current) => `Wydłuż ten tekst do co najmniej ${minimum} znaków (obecnie używasz ${current} znaków).`, $code: 'pl', $dir: 'ltr', $name: 'Polski' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/pl.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/pt.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'Este conteúdo foi gerado por IA', allTagsRemoved: 'Todas as etiquetas foram removidas', appearance: 'Aparência', appearanceClassic: 'Clássica', appearanceModern: 'Moderna', autosizeColumn: 'Ajustar coluna ao conteúdo', back: 'Voltar', cancel: 'Cancelar', carousel: 'Carrossel', chooseDate: 'Escolher uma data', chooseDateAndTime: 'Escolher uma data e hora', chooseTime: 'Escolher uma hora', clearEntry: 'Limpar entrada', clearFilter: 'Limpar filtro', close: 'Fechar', collapse: 'Recolher', columnMenu: 'Opções da coluna', columnMovedToPosition: (label, position, total) => `${label}, Posição ${position} de ${total}`, columns: 'Colunas', completed: 'Concluído', copied: 'Copiado', copy: 'Copiar', currentValue: 'Valor atual', dateInputBadInput: 'Introduza uma data válida.', dateInputRangeOverflow: 'A data é demasiado tardia.', dateInputRangeUnderflow: 'A data é demasiado antiga.', dateInputValueMissing: 'Preencha este campo.', dateNotSelectable: 'Esta data não pode ser selecionada.', datePlaceholderDay: 'dd', datePlaceholderHalfyear: 's', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 't', datePlaceholderWeek: 'ss', datePlaceholderYear: 'aaaa', // Date input dateRangeEndBeforeStart: 'O fim do período deve ser posterior ao seu início.', dateSegmentDay: 'Dia', dateSegmentHalfyear: 'Semestre', dateSegmentMonth: 'Mês', dateSegmentQuarter: 'Trimestre', dateSegmentWeek: 'Semana', dateSegmentYear: 'Ano', datetimeInputBadInput: 'Introduza uma data e uma hora válidas.', datetimeInputRangeOverflow: 'A data e a hora são demasiado tardias.', datetimeInputRangeUnderflow: 'A data e a hora são demasiado antigas.', datetimeInputValueMissing: 'Preencha este campo.', decrement: 'Diminuir', density: 'Densidade', densityCompact: 'Compacta', densityDefault: 'Padrão', densitySpacious: 'Espaçosa', disabled: 'Desativado', dragToReorder: 'Arraste para reordenar', dropFileHere: 'Solte o arquivo aqui ou clique para procurar', dropFilesHere: 'Solte os arquivos aqui ou clique para procurar', entriesPerPage: 'Entradas por página', error: 'Erro', expand: 'Expandir', filter: 'Filtrar', filterByColumn: label => `Filtrar ${label}`, filterFrom: 'De', filterMax: 'Máximo', filterMin: 'Mínimo', filterTo: 'Até', finish: 'Finalizar', from: 'de', goToSlide: (slide, count) => `Vá para o slide ${slide} de ${count}`, halfyear: 'Semestre', hideColumn: 'Ocultar coluna', hidePassword: 'Esconder a senha', increment: 'Aumentar', loadFailed: 'Não foi possível carregar as linhas.', loading: 'Carregando', loadMoreFailed: 'Não foi possível carregar mais linhas.', locked: 'Bloqueado', mainMenu: 'Menu principal', maximumValue: label => (label ? `${label} (Valor máximo)` : 'Valor máximo'), minimumValue: label => (label ? `${label} (Valor mínimo)` : 'Valor mínimo'), month: 'Mês', more: 'Mais', multipleValues: 'Vários valores', newsMenu: 'Menu de notícias', newsToggleMenu: 'Alternar menu de notícias', next: 'Próximo', nextPage: 'Página seguinte', nextSlide: 'Próximo slide', noData: 'Sem dados', noDataDescription: 'Ainda não há entradas para mostrar.', noOptions: 'Sem opções', noResults: 'Sem resultados', noResultsDescription: 'Nenhuma entrada corresponde à pesquisa ou aos filtros.', notCompleted: 'Não concluído', notificationsRegion: hotkey => `Notificações, pressione ${hotkey} para focar`, numCharacters: num => { if (num === 1) return '1 caractere'; return `${num} caracteres`; }, numCharactersRemaining: num => { if (num === 1) return '1 caractere restante'; return `${num} caracteres restantes`; }, numEntries: (num, format) => { if (num === 0) return 'Sem entradas'; if (num === 1) return `${formatCount(1, format)} entrada`; return `${formatCount(num, format)} entradas`; }, numEntriesLoaded: (num, format) => { if (num === 0) return 'Nenhuma entrada carregada'; if (num === 1) return `${formatCount(1, format)} entrada carregada`; return `${formatCount(num, format)} entradas carregadas`; }, numEntriesOfTotal: (shown, total, format) => total === 1 ? `${formatCount(shown, format)} de ${formatCount(1, format)} entrada` : `${formatCount(shown, format)} de ${formatCount(total, format)} entradas`, numOfTotalSelected: (num, total, format) => `${formatCount(num, format)} de ${formatCount(total, format)} selecionadas`, numOptionsAvailable: num => { if (num === 0) return 'Nenhuma opção disponível'; if (num === 1) return '1 opção disponível'; return `${num} opções disponíveis`; }, numOptionsSelected: num => { if (num === 0) return 'Nenhuma opção selecionada'; if (num === 1) return '1 opção selecionada'; return `${num} opções selecionadas`; }, numSelected: (num, format) => { if (num === 0) return 'Nenhuma selecionada'; if (num === 1) return `${formatCount(1, format)} selecionada`; return `${formatCount(num, format)} selecionadas`; }, numTotal: num => `${num} no total`, ok: 'OK', onThisPage: 'Nesta página', optionPosition: (label, position, total) => `${label}, ${position} de ${total}`, optionsLoadError: 'Não foi possível carregar as opções', page: 'Página', pauseAnimation: 'Pausar animação', pinToEnd: 'Fixar no fim', pinToStart: 'Fixar no início', playAnimation: 'Reproduzir animação', previousPage: 'Página anterior', previousSlide: 'Slide anterior', progress: 'Progresso', quarter: 'Trimestre', rangeSelected: (start, end) => `${start} a ${end} selecionados`, // Calendar range selection rangeSelectingFrom: date => `A selecionar intervalo a partir de ${date}…`, remove: 'Remover', reset: 'Redefinir', resetColumns: 'Redefinir colunas', resetFilters: 'Redefinir todos os filtros', resize: 'Mudar o tamanho', resizeColumn: 'Redimensionar coluna', scrollableRegion: 'Região rolável', scrollToEnd: 'Rolar até o final', scrollToStart: 'Rolar até o início', search: 'Pesquisar', sectionPages: 'Páginas da seção', sections: 'Seções', selectAColorFromTheScreen: 'Selecionar uma cor da tela', numRowsCopied: num => { if (num === 0) return 'Nenhuma linha copiada'; if (num === 1) return '1 linha copiada'; return `${num} linhas copiadas`; }, numRowsSelected: num => { if (num === 0) return 'Nenhuma linha selecionada'; if (num === 1) return '1 linha selecionada'; return `${num} linhas selecionadas`; }, rowLifted: (position, total) => `Linha levantada, posição ${position} de ${total}. Use as setas para cima e para baixo para mover, Espaço para soltar, Escape para cancelar.`, rowMoved: (position, total) => `Posição ${position} de ${total}`, rowReorderCanceled: 'Reordenação cancelada', selectAllEntries: 'Selecionar todas as entradas', selectAllRows: 'Selecionar todas as linhas', selectDate: 'Selecionar data', selectDateTime: 'Selecionar data e hora', selectGroup: 'Selecionar grupo', selectRow: 'Selecionar linha', selectRowNamed: name => `Selecionar ${name}`, showingNofMRows: (shown, total) => `Linhas apresentadas: ${shown} de ${total}`, showingRangeOfMore: (first, last) => `${first}–${last} de mais de ${last}`, showingRangeOfTotal: (first, last, total) => `${first}–${last} de ${total}`, sortAscending: 'Ordenar de forma crescente', sortDescending: 'Ordenar de forma decrescente', sortedByColumn: (column, direction) => `Ordenado por ${column}, ${direction === 'ascending' ? 'crescente' : 'decrescente'}`, sortingCleared: 'Ordenação removida', // Date picker selectTime: 'Selecionar hora', showingPanelSpan: (first, last) => `A mostrar ${first} – ${last}`, showingSinglePanel: month => `A mostrar ${month}`, showLess: 'Mostrar menos', showMore: 'Mostrar mais', showPassword: 'Mostrar senha', skipToContent: 'Saltar para o conteúdo', slideNum: slide => `Slide ${slide}`, steps: 'Etapas', stepXOfY: (step, total) => `Etapa ${step} de ${total}`, tagAdded: tag => `${tag} adicionado`, tagAlreadyAdded: tag => `${tag} já existe`, tagInputKeyboardHelp: 'Pressione Backspace ou Delete para remover esta etiqueta.', tagRemoved: tag => `${tag} removido`, timeInputBadInput: 'Introduza uma hora válida.', timeInputRangeOverflow: 'A hora é demasiado tardia.', timeInputRangeUnderflow: 'A hora é demasiado cedo.', timeInputValueMissing: 'Preencha este campo.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'am/pm', timeSegmentHour: 'Hora', timeSegmentMinute: 'Minuto', timeSegmentSecond: 'Segundo', toggleColorFormat: 'Trocar o formato de cor', toggleNavigationDrawer: 'Alternar painel de navegação', tooFewTags: min => (min === 1 ? 'Adicione pelo menos 1 etiqueta' : `Adicione pelo menos ${min} etiquetas`), tooManyTags: max => (max === 1 ? 'Adicione no máximo 1 etiqueta' : `Adicione no máximo ${max} etiquetas`), tryAgain: 'Tentar novamente', unpinColumn: 'Desafixar coluna', unread: 'Não lido', unsort: 'Remover ordenação', until: 'até', view: 'Exibir', weekInputRangeOverflow: 'A semana é demasiado tardia.', weekInputRangeUnderflow: 'A semana é demasiado antiga.', weekInputValueMissing: 'Selecione uma semana.', weekLabel: week => `Semana ${week}`, year: 'Ano', zoomIn: 'Aumentar zoom', zoomOut: 'Diminuir zoom', documentViewerCanvas: 'Documento', documentViewerContinuous: 'Deslocação vertical', documentViewerFitHeight: 'Ajustar à altura', documentViewerFitWidth: 'Ajustar à largura', documentViewerLoadError: 'Não foi possível carregar a página', documentViewerPages: 'Páginas', documentViewerRotateLeft: 'Rodar à esquerda', documentViewerRotateRight: 'Rodar à direita', documentViewerSinglePage: 'Deslocamento da página', documentViewerZoom: 'Zoom', editorAi: 'IA', editorAiSuggestions: 'Sugestões de IA', editorDelete: 'Eliminar', editorHideDeletedPages: 'Ocultar páginas eliminadas', editorPage: page => `Página ${page}`, editorRotate: 'Rodar 90°', editorSelectAll: (selected, total) => `Selecionar tudo (${selected} de ${total})`, editorSplit: 'Dividir', editorUser: 'Utilizador', editorZoom: 'Zoom', editorZoomIn: 'Ampliar', previewPage: page => `Página ${page}`, save: 'Guardar', scanCancelBack: 'Voltar à edição', scanCancelConfirm: 'Cancelar carregamento', scanCancelMessage: 'Se cancelar, o ficheiro não será carregado e as alterações serão perdidas. Esta ação não pode ser desfeita.', scanCancelTitle: 'Cancelar carregamento?', scanFilesDisplayError: 'Não foi possível apresentar os ficheiros', scanFilesLoading: 'A carregar ficheiros...', scanInvalidSession: 'A sessão é inválida. Reinicie o processo.', scanSaveErrorBack: 'Voltar à edição', scanSaveErrorMessage: 'Ocorreu um erro ao guardar. Pode tentar novamente ou voltar à edição.', scanSaveErrorRetry: 'Tentar novamente', scanSaveErrorTitle: 'Erro ao guardar', scanSaving: 'A criar ficheiro(s)', scanSessionLoading: 'A carregar sessão edScan...', scanTitle: 'Edição de páginas assistida por IA', uploadDragAndDropDescription: 'Pode arrastar um ficheiro para aqui ou selecioná-lo através do botão.', uploadDragAndDropTitle: 'Carregar ficheiro', uploadDropFile: 'Largue o ficheiro', uploadDropFiles: 'Largue os ficheiros', uploadDuplicateFile: name => `${name} já está na lista`, uploadFailed: 'Não foi possível carregar os ficheiros', uploadFileCountSummary: (count, size) => `${count} ficheiro(s) · ${size}`, uploadFileTooLarge: (name, size) => `O ficheiro ${name} é demasiado grande. O tamanho máximo é ${size} MB.`, uploadFileTypeNotAllowed: type => `Tipo de ficheiro não permitido: ${type}`, uploadLimitExceeded: size => `O ficheiro excede o limite de carregamento de ${size} MB`, uploadLimitsExceeded: size => `Os ficheiros excedem o limite de carregamento de ${size} MB`, uploadOr: 'ou', uploadPreviewFile: name => `Pré-visualização: ${name}`, uploadProgress: 'A carregar ficheiros...', uploadRemoveFile: name => `Remover: ${name}`, uploadRetryFile: name => `Tentar novamente: ${name}`, uploadSelectFile: 'Selecionar ficheiro', uploadSelectFiles: 'Selecionar ficheiros', uploadSuccess: (done, total) => `${done} de ${total} ficheiros carregados`, uploadTitle: 'Carregar ficheiro', uploadTooManyFiles: max => `Pode carregar no máximo ${max} ficheiro(s)`, valueMissing: 'Preencha este campo.', valueMissingCheckbox: 'Marque esta caixa se quiser continuar.', valueMissingRadio: 'Selecione uma destas opções.', valueMissingSelect: 'Selecione um item da lista.', typeMismatchEmail: 'Introduza um endereço de e-mail.', typeMismatchUrl: 'Introduza um URL.', patternMismatch: 'Respeite o formato solicitado.', badInputNumber: 'Introduza um número.', rangeUnderflow: min => `O valor tem de ser maior ou igual a ${min}.`, rangeOverflow: max => `O valor tem de ser menor ou igual a ${max}.`, stepMismatch: (lower, upper) => `Introduza um valor válido. Os dois valores válidos mais próximos são ${lower} e ${upper}.`, stepMismatchNearest: nearest => `Introduza um valor válido. O valor válido mais próximo é ${nearest}.`, tooShort: (minimum, current) => `Aumente este texto para ${minimum} caracteres ou mais (utiliza atualmente ${current} caracteres).`, $code: 'pt', $dir: 'ltr', $name: 'Português' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/pt.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/ru.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'Этот контент был создан ИИ', allTagsRemoved: 'Все теги удалены', appearance: 'Внешний вид', appearanceClassic: 'Классический', appearanceModern: 'Современный', autosizeColumn: 'Подогнать столбец по содержимому', back: 'Назад', cancel: 'Отмена', carousel: 'Карусель', chooseDate: 'Выберите дату', chooseDateAndTime: 'Выберите дату и время', chooseTime: 'Выберите время', clearEntry: 'Очистить запись', clearFilter: 'Сбросить фильтр', close: 'Закрыть', collapse: 'Свернуть', columnMenu: 'Параметры столбца', columnMovedToPosition: (label, position, total) => `${label}, Позиция ${position} из ${total}`, columns: 'Столбцы', completed: 'Завершено', copied: 'Скопировано', copy: 'Скопировать', currentValue: 'Текущее значение', dateInputBadInput: 'Введите корректную дату.', dateInputRangeOverflow: 'Дата слишком поздняя.', dateInputRangeUnderflow: 'Дата слишком ранняя.', dateInputValueMissing: 'Заполните это поле.', dateNotSelectable: 'Эту дату нельзя выбрать.', datePlaceholderDay: 'ДД', datePlaceholderHalfyear: 'П', datePlaceholderMonth: 'ММ', datePlaceholderQuarter: 'К', datePlaceholderWeek: 'НН', datePlaceholderYear: 'ГГГГ', // Date input dateRangeEndBeforeStart: 'Конец периода должен быть после его начала.', dateSegmentDay: 'День', dateSegmentHalfyear: 'Полугодие', dateSegmentMonth: 'Месяц', dateSegmentQuarter: 'Квартал', dateSegmentWeek: 'Неделя', dateSegmentYear: 'Год', datetimeInputBadInput: 'Введите корректную дату и время.', datetimeInputRangeOverflow: 'Дата и время слишком поздние.', datetimeInputRangeUnderflow: 'Дата и время слишком ранние.', datetimeInputValueMissing: 'Заполните это поле.', decrement: 'Уменьшить', density: 'Плотность', densityCompact: 'Компактная', densityDefault: 'Обычная', densitySpacious: 'Свободная', disabled: 'Отключено', dragToReorder: 'Перетащите для изменения порядка', dropFileHere: 'Перетащите файл сюда или нажмите для выбора', dropFilesHere: 'Перетащите файлы сюда или нажмите для выбора', entriesPerPage: 'Записей на странице', error: 'Ошибка', expand: 'Развернуть', filter: 'Фильтр', filterByColumn: label => `Фильтр ${label}`, filterFrom: 'С', filterMax: 'Максимум', filterMin: 'Минимум', filterTo: 'По', finish: 'Завершить', from: 'из', goToSlide: (slide, count) => `Перейти к слайду ${slide} из ${count}`, halfyear: 'Полугодие', hideColumn: 'Скрыть столбец', hidePassword: 'Скрыть пароль', increment: 'Увеличить', loadFailed: 'Не удалось загрузить строки.', loading: 'Загрузка', loadMoreFailed: 'Не удалось загрузить больше строк.', locked: 'Заблокировано', mainMenu: 'Главное меню', maximumValue: label => (label ? `${label} (Максимальное значение)` : 'Максимальное значение'), minimumValue: label => (label ? `${label} (Минимальное значение)` : 'Минимальное значение'), month: 'Месяц', more: 'Ещё', multipleValues: 'Несколько значений', newsMenu: 'Меню новостей', newsToggleMenu: 'Переключить меню новостей', next: 'Далее', nextPage: 'Следующая страница', nextSlide: 'Следующий слайд', noData: 'Нет данных', noDataDescription: 'Пока нет записей для отображения.', noOptions: 'Нет вариантов', noResults: 'Нет результатов', noResultsDescription: 'Ни одна запись не соответствует поиску или фильтрам.', notCompleted: 'Не завершено', notificationsRegion: hotkey => `Уведомления, нажмите ${hotkey} для фокуса`, numCharacters: num => { const mod10 = num % 10; const mod100 = num % 100; if (mod10 === 1 && mod100 !== 11) return `${num} символ`; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `${num} символа`; return `${num} символов`; }, numCharactersRemaining: num => { const mod10 = num % 10; const mod100 = num % 100; if (mod10 === 1 && mod100 !== 11) return `Остался ${num} символ`; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `Осталось ${num} символа`; return `Осталось ${num} символов`; }, numEntries: (num, format) => { const mod10 = num % 10; const mod100 = num % 100; if (mod10 === 1 && mod100 !== 11) return `${formatCount(num, format)} запись`; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `${formatCount(num, format)} записи`; return `${formatCount(num, format)} записей`; }, numEntriesLoaded: (num, format) => { const mod10 = num % 10; const mod100 = num % 100; if (num === 0) return `Загружено ${formatCount(0, format)} записей`; if (num === 1) return `Загружена ${formatCount(1, format)} запись`; if (mod10 === 1 && mod100 !== 11) return `Загружено ${formatCount(num, format)} запись`; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `Загружено ${formatCount(num, format)} записи`; return `Загружено ${formatCount(num, format)} записей`; }, numEntriesOfTotal: (shown, total, format) => { const mod10 = total % 10; const mod100 = total % 100; if (mod10 === 1 && mod100 !== 11) return `${formatCount(shown, format)} из ${formatCount(total, format)} записи`; return `${formatCount(shown, format)} из ${formatCount(total, format)} записей`; }, numOfTotalSelected: (num, total, format) => `Выбрано ${formatCount(num, format)} из ${formatCount(total, format)}`, numOptionsAvailable: num => { const mod10 = num % 10; const mod100 = num % 100; if (num === 1) return 'Доступен 1 вариант'; if (mod10 === 1 && mod100 !== 11) return `Доступно ${num} вариант`; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `Доступно ${num} варианта`; return `Доступно ${num} вариантов`; }, numOptionsSelected: num => { const mod10 = num % 10; const mod100 = num % 100; if (num === 1) return 'Выбран 1 вариант'; if (mod10 === 1 && mod100 !== 11) return `Выбрано ${num} вариант`; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `Выбрано ${num} варианта`; return `Выбрано ${num} вариантов`; }, numSelected: (num, format) => { if (num === 0) return 'Ничего не выбрано'; return `Выбрано ${formatCount(num, format)}`; }, numTotal: num => `Всего ${num}`, ok: 'OK', onThisPage: 'На этой странице', optionPosition: (label, position, total) => `${label}, ${position} из ${total}`, optionsLoadError: 'Не удалось загрузить варианты', page: 'Страница', pauseAnimation: 'Приостановить анимацию', pinToEnd: 'Закрепить в конце', pinToStart: 'Закрепить в начале', playAnimation: 'Воспроизвести анимацию', previousPage: 'Предыдущая страница', previousSlide: 'Предыдущий слайд', progress: 'Прогресс', quarter: 'Квартал', rangeSelected: (start, end) => `Выбрано с ${start} по ${end}`, // Calendar range selection rangeSelectingFrom: date => `Выбор диапазона с ${date}…`, remove: 'Удалить', reset: 'Сбросить', resetColumns: 'Сбросить столбцы', resetFilters: 'Сбросить все фильтры', resize: 'Изменить размер', resizeColumn: 'Изменить ширину столбца', scrollableRegion: 'Прокручиваемая область', scrollToEnd: 'Пролистать до конца', scrollToStart: 'Пролистать к началу', search: 'Поиск', sectionPages: 'Страницы раздела', sections: 'Разделы', selectAColorFromTheScreen: 'Выберите цвет на экране', numRowsCopied: num => { const mod10 = num % 10; const mod100 = num % 100; if (mod10 === 1 && mod100 !== 11) return `Скопирована ${num} строка`; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `Скопированы ${num} строки`; return `Скопировано ${num} строк`; }, numRowsSelected: num => { const mod10 = num % 10; const mod100 = num % 100; if (mod10 === 1 && mod100 !== 11) return `Выбрана ${num} строка`; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `Выбраны ${num} строки`; return `Выбрано ${num} строк`; }, rowLifted: (position, total) => `Строка поднята, позиция ${position} из ${total}. Стрелки вверх и вниз перемещают, пробел опускает, Escape отменяет.`, rowMoved: (position, total) => `Позиция ${position} из ${total}`, rowReorderCanceled: 'Перемещение отменено', selectAllEntries: 'Выбрать все записи', selectAllRows: 'Выбрать все строки', selectDate: 'Выбрать дату', selectDateTime: 'Выбрать дату и время', selectGroup: 'Выбрать группу', selectRow: 'Выбрать строку', selectRowNamed: name => `Выбрать ${name}`, showingNofMRows: (shown, total) => `Показано строк: ${shown} из ${total}`, showingRangeOfMore: (first, last) => `${first}–${last} из более чем ${last}`, showingRangeOfTotal: (first, last, total) => `${first}–${last} из ${total}`, sortAscending: 'Сортировать по возрастанию', sortDescending: 'Сортировать по убыванию', sortedByColumn: (column, direction) => `Отсортировано по ${column}, ${direction === 'ascending' ? 'по возрастанию' : 'по убыванию'}`, sortingCleared: 'Сортировка снята', // Date picker selectTime: 'Выбрать время', showingPanelSpan: (first, last) => `Показано ${first} – ${last}`, showingSinglePanel: month => `Показано ${month}`, showLess: 'Показать меньше', showMore: 'Показать больше', showPassword: 'Показать пароль', skipToContent: 'Перейти к содержанию', slideNum: slide => `Слайд ${slide}`, steps: 'Шаги', stepXOfY: (step, total) => `Шаг ${step} из ${total}`, tagAdded: tag => `${tag} добавлен`, tagAlreadyAdded: tag => `Тег ${tag} уже добавлен`, tagInputKeyboardHelp: 'Нажмите Backspace или Delete, чтобы удалить этот тег.', tagRemoved: tag => `${tag} удалён`, timeInputBadInput: 'Введите корректное время.', timeInputRangeOverflow: 'Время слишком позднее.', timeInputRangeUnderflow: 'Время слишком раннее.', timeInputValueMissing: 'Заполните это поле.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'чч', timePlaceholderMinute: 'мм', timePlaceholderSecond: 'сс', // Time input timeSegmentDayPeriod: 'AM/PM', timeSegmentHour: 'Час', timeSegmentMinute: 'Минута', timeSegmentSecond: 'Секунда', toggleColorFormat: 'Переключить цветовую модель', toggleNavigationDrawer: 'Переключить панель навигации', tooFewTags: min => { const mod10 = min % 10; const mod100 = min % 100; if (mod10 === 1 && mod100 !== 11) return `Добавьте не менее ${min} тега`; return `Добавьте не менее ${min} тегов`; }, tooManyTags: max => { const mod10 = max % 10; const mod100 = max % 100; if (mod10 === 1 && mod100 !== 11) return `Добавьте не более ${max} тега`; return `Добавьте не более ${max} тегов`; }, tryAgain: 'Повторить', unpinColumn: 'Открепить столбец', unread: 'Не прочитано', unsort: 'Отменить сортировку', until: 'до', view: 'Вид', weekInputRangeOverflow: 'Неделя слишком поздняя.', weekInputRangeUnderflow: 'Неделя слишком ранняя.', weekInputValueMissing: 'Выберите неделю.', weekLabel: week => `Неделя ${week}`, year: 'Год', zoomIn: 'Увеличить', zoomOut: 'Уменьшить', documentViewerCanvas: 'Документ', documentViewerContinuous: 'Вертикальная прокрутка', documentViewerFitHeight: 'По высоте страницы', documentViewerFitWidth: 'По ширине страницы', documentViewerLoadError: 'Не удалось загрузить страницу', documentViewerPages: 'Страницы', documentViewerRotateLeft: 'Повернуть влево', documentViewerRotateRight: 'Повернуть вправо', documentViewerSinglePage: 'Прокрутка страниц', documentViewerZoom: 'Масштаб', editorAi: 'ИИ', editorAiSuggestions: 'Предложения ИИ', editorDelete: 'Удалить', editorHideDeletedPages: 'Скрыть удалённые страницы', editorPage: page => `Страница ${page}`, editorRotate: 'Повернуть на 90°', editorSelectAll: (selected, total) => `Выбрать всё (${selected} из ${total})`, editorSplit: 'Разделить', editorUser: 'Пользователь', editorZoom: 'Масштаб', editorZoomIn: 'Увеличить', previewPage: page => `Страница ${page}`, save: 'Сохранить', scanCancelBack: 'Вернуться к редактированию', scanCancelConfirm: 'Отменить загрузку', scanCancelMessage: 'Если отменить, файл не будет загружен, а изменения будут потеряны. Это действие нельзя отменить.', scanCancelTitle: 'Отменить загрузку?', scanFilesDisplayError: 'Невозможно отобразить файл(ы)', scanFilesLoading: 'Загрузка файлов...', scanInvalidSession: 'Сессия недействительна. Перезапустите процесс.', scanSaveErrorBack: 'Вернуться к редактированию', scanSaveErrorMessage: 'Произошла ошибка при сохранении. Попробуйте снова или вернитесь к редактированию.', scanSaveErrorRetry: 'Повторить', scanSaveErrorTitle: 'Ошибка при сохранении', scanSaving: 'Создание файла(ов)', scanSessionLoading: 'Загрузка сессии edScan...', scanTitle: 'Редактирование страниц с помощью ИИ', uploadDragAndDropDescription: 'Вы можете перетащить файл сюда или выбрать его кнопкой.', uploadDragAndDropTitle: 'Загрузить файл', uploadDropFile: 'Перетащите файл', uploadDropFiles: 'Перетащите файлы', uploadDuplicateFile: name => `${name} уже в списке`, uploadFailed: 'Не удалось загрузить файлы', uploadFileCountSummary: (count, size) => `${count} файл(ов) · ${size}`, uploadFileTooLarge: (name, size) => `Файл ${name} слишком большой. Максимальный размер: ${size} МБ.`, uploadFileTypeNotAllowed: type => `Недопустимый тип файла: ${type}`, uploadLimitExceeded: size => `Файл превышает лимит загрузки ${size} МБ`, uploadLimitsExceeded: size => `Файлы превышают лимит загрузки ${size} МБ`, uploadOr: 'или', uploadPreviewFile: name => `Предпросмотр: ${name}`, uploadProgress: 'Загрузка файлов...', uploadRemoveFile: name => `Удалить: ${name}`, uploadRetryFile: name => `Повторить: ${name}`, uploadSelectFile: 'Выбрать файл', uploadSelectFiles: 'Выбрать файлы', uploadSuccess: (done, total) => `${done} из ${total} файлов загружено`, uploadTitle: 'Загрузить файл', uploadTooManyFiles: max => `Можно загрузить не более ${max} файл(ов)`, valueMissing: 'Заполните это поле.', valueMissingCheckbox: 'Установите этот флажок, если хотите продолжить.', valueMissingRadio: 'Выберите один из вариантов.', valueMissingSelect: 'Выберите элемент из списка.', typeMismatchEmail: 'Введите адрес электронной почты.', typeMismatchUrl: 'Введите URL-адрес.', patternMismatch: 'Соблюдайте требуемый формат.', badInputNumber: 'Введите число.', rangeUnderflow: min => `Значение должно быть больше или равно ${min}.`, rangeOverflow: max => `Значение должно быть меньше или равно ${max}.`, stepMismatch: (lower, upper) => `Введите допустимое значение. Два ближайших допустимых значения: ${lower} и ${upper}.`, stepMismatchNearest: nearest => `Введите допустимое значение. Ближайшее допустимое значение: ${nearest}.`, tooShort: (minimum, current) => `Удлините этот текст до ${minimum} символов или более (сейчас ${current} символов).`, $code: 'ru', $dir: 'ltr', $name: 'Русский' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/ru.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/sl.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'To vsebino je ustvarila umetna inteligenca', allTagsRemoved: 'Vse oznake odstranjene', appearance: 'Videz', appearanceClassic: 'Klasičen', appearanceModern: 'Sodoben', autosizeColumn: 'Prilagodi stolpec vsebini', back: 'Nazaj', cancel: 'Prekliči', carousel: 'Vrtiljak', chooseDate: 'Izberite datum', chooseDateAndTime: 'Izberite datum in čas', chooseTime: 'Izberite čas', clearEntry: 'Počisti vnos', clearFilter: 'Počisti filter', close: 'Zapri', collapse: 'Strni', columnMenu: 'Možnosti stolpca', columnMovedToPosition: (label, position, total) => `${label}, Položaj ${position} od ${total}`, columns: 'Stolpci', completed: 'Dokončano', copied: 'Kopirano', copy: 'Kopiraj', currentValue: 'Trenutna vrednost', dateInputBadInput: 'Vnesite veljaven datum.', dateInputRangeOverflow: 'Datum je prepozen.', dateInputRangeUnderflow: 'Datum je prezgoden.', dateInputValueMissing: 'Izpolnite to polje.', dateNotSelectable: 'Tega datuma ni mogoče izbrati.', datePlaceholderDay: 'DD', datePlaceholderHalfyear: 'P', datePlaceholderMonth: 'MM', datePlaceholderQuarter: 'Č', datePlaceholderWeek: 'TT', datePlaceholderYear: 'LLLL', // Date input dateRangeEndBeforeStart: 'Konec obdobja mora biti po njegovem začetku.', dateSegmentDay: 'Dan', dateSegmentHalfyear: 'Polletje', dateSegmentMonth: 'Mesec', dateSegmentQuarter: 'Četrtletje', dateSegmentWeek: 'Teden', dateSegmentYear: 'Leto', datetimeInputBadInput: 'Vnesite veljaven datum in čas.', datetimeInputRangeOverflow: 'Datum in čas sta prepozna.', datetimeInputRangeUnderflow: 'Datum in čas sta prezgodnja.', datetimeInputValueMissing: 'Izpolnite to polje.', decrement: 'Zmanjšaj', density: 'Gostota', densityCompact: 'Kompaktno', densityDefault: 'Privzeto', densitySpacious: 'Prostorno', disabled: 'Onemogočeno', dragToReorder: 'Povleci za prerazporeditev', dropFileHere: 'Spustite datoteko tukaj ali kliknite za brskanje', dropFilesHere: 'Spustite datoteke tukaj ali kliknite za brskanje', entriesPerPage: 'Vnosov na stran', error: 'Napaka', expand: 'Razširi', filter: 'Filtriraj', filterByColumn: label => `Filtriraj ${label}`, filterFrom: 'Od', filterMax: 'Največ', filterMin: 'Najmanj', filterTo: 'Do', finish: 'Zaključi', from: 'od', goToSlide: (slide, count) => `Pojdi na diapozitiv ${slide} od ${count}`, halfyear: 'Polletje', hideColumn: 'Skrij stolpec', hidePassword: 'Skrij geslo', increment: 'Povečaj', loadFailed: 'Vrstic ni bilo mogoče naložiti.', loading: 'Nalaganje', loadMoreFailed: 'Dodatnih vrstic ni bilo mogoče naložiti.', locked: 'Zaklenjeno', mainMenu: 'Glavni meni', maximumValue: label => (label ? `${label} (Največja vrednost)` : 'Največja vrednost'), minimumValue: label => (label ? `${label} (Najmanjša vrednost)` : 'Najmanjša vrednost'), month: 'Mesec', more: 'Več', multipleValues: 'Več vrednosti', newsMenu: 'Meni novic', newsToggleMenu: 'Preklopi meni novic', next: 'Naprej', nextPage: 'Naslednja stran', nextSlide: 'Naslednji diapozitiv', noData: 'Ni podatkov', noDataDescription: 'Še ni vnosov za prikaz.', noOptions: 'Ni možnosti', noResults: 'Ni rezultatov', noResultsDescription: 'Noben vnos se ne ujema z iskanjem ali filtri.', notCompleted: 'Ni dokončano', notificationsRegion: hotkey => `Obvestila, pritisnite ${hotkey} za fokus`, numCharacters: num => { const mod100 = num % 100; if (mod100 === 1) return `${num} znak`; if (mod100 === 2) return `${num} znaka`; if (mod100 === 3 || mod100 === 4) return `${num} znaki`; return `${num} znakov`; }, numCharactersRemaining: num => { const mod100 = num % 100; if (mod100 === 1) return `Preostane ${num} znak`; if (mod100 === 2) return `Preostaneta ${num} znaka`; if (mod100 === 3 || mod100 === 4) return `Preostanejo ${num} znaki`; return `Preostane ${num} znakov`; }, numEntries: (num, format) => { if (num === 0) return 'Ni vnosov'; if (num === 1) return `${formatCount(1, format)} vnos`; if (num === 2) return `${formatCount(2, format)} vnosa`; if (num === 3 || num === 4) return `${formatCount(num, format)} vnosi`; return `${formatCount(num, format)} vnosov`; }, numEntriesLoaded: (num, format) => { if (num === 0) return 'Ni naloženih vnosov'; if (num === 1) return `Naložen ${formatCount(1, format)} vnos`; if (num === 2) return `Naložena ${formatCount(2, format)} vnosa`; if (num === 3 || num === 4) return `Naloženi ${formatCount(num, format)} vnosi`; return `Naloženih ${formatCount(num, format)} vnosov`; }, numEntriesOfTotal: (shown, total, format) => total === 1 ? `${formatCount(shown, format)} od ${formatCount(1, format)} vnosa` : `${formatCount(shown, format)} od ${formatCount(total, format)} vnosov`, numOfTotalSelected: (num, total, format) => `${formatCount(num, format)} od ${formatCount(total, format)} izbranih`, numOptionsAvailable: num => { if (num === 0) return 'Na voljo ni nobene možnosti'; if (num === 1) return '1 možnost na voljo'; if (num === 2) return '2 možnosti na voljo'; if (num === 3 || num === 4) return `${num} možnosti na voljo`; return `${num} možnosti na voljo`; }, numOptionsSelected: num => { if (num === 0) return 'Nobena možnost ni izbrana'; if (num === 1) return '1 možnost izbrana'; if (num === 2) return '2 možnosti izbrani'; if (num === 3 || num === 4) return `${num} možnosti izbrane`; return `${num} možnosti izbranih`; }, numSelected: (num, format) => { if (num === 0) return 'Nič izbranega'; return `${formatCount(num, format)} izbranih`; }, numTotal: num => `${num} skupaj`, ok: 'OK', onThisPage: 'Na tej strani', optionPosition: (label, position, total) => `${label}, ${position} od ${total}`, optionsLoadError: 'Možnosti ni bilo mogoče naložiti', page: 'Stran', pauseAnimation: 'Zaustavi animacijo', pinToEnd: 'Pripni na konec', pinToStart: 'Pripni na začetek', playAnimation: 'Predvajaj animacijo', previousPage: 'Prejšnja stran', previousSlide: 'Prejšnji diapozitiv', progress: 'Napredek', quarter: 'Četrtletje', rangeSelected: (start, end) => `Izbrano od ${start} do ${end}`, // Calendar range selection rangeSelectingFrom: date => `Izbiranje obsega od ${date}…`, remove: 'Odstrani', reset: 'Ponastavi', resetColumns: 'Ponastavi stolpce', resetFilters: 'Ponastavi vse filtre', resize: 'Spremeni velikost', resizeColumn: 'Spremeni širino stolpca', scrollableRegion: 'Področje za drsenje', scrollToEnd: 'Pomakni se na konec', scrollToStart: 'Pomakni se na začetek', search: 'Iskanje', sectionPages: 'Strani razdelka', sections: 'Razdelki', selectAColorFromTheScreen: 'Izberite barvo z zaslona', numRowsCopied: num => { if (num === 0) return 'Nobena vrstica ni kopirana'; const mod100 = num % 100; if (mod100 === 1) return `Kopirana ${num} vrstica`; if (mod100 === 2) return `Kopirani ${num} vrstici`; if (mod100 === 3 || mod100 === 4) return `Kopirane ${num} vrstice`; return `Kopiranih ${num} vrstic`; }, numRowsSelected: num => { if (num === 0) return 'Nobena vrstica ni izbrana'; const mod100 = num % 100; if (mod100 === 1) return `Izbrana ${num} vrstica`; if (mod100 === 2) return `Izbrani ${num} vrstici`; if (mod100 === 3 || mod100 === 4) return `Izbrane ${num} vrstice`; return `Izbranih ${num} vrstic`; }, rowLifted: (position, total) => `Vrstica dvignjena, položaj ${position} od ${total}. S puščicama gor in dol premikate, s preslednico odložite, s tipko Escape prekličete.`, rowMoved: (position, total) => `Položaj ${position} od ${total}`, rowReorderCanceled: 'Premikanje preklicano', selectAllEntries: 'Izberi vse vnose', selectAllRows: 'Izberi vse vrstice', selectDate: 'Izberi datum', selectDateTime: 'Izberi datum in čas', selectGroup: 'Izberi skupino', selectRow: 'Izberi vrstico', selectRowNamed: name => `Izberi ${name}`, showingNofMRows: (shown, total) => `Prikazane vrstice: ${shown} od ${total}`, showingRangeOfMore: (first, last) => `${first}–${last} od več kot ${last}`, showingRangeOfTotal: (first, last, total) => `${first}–${last} od ${total}`, sortAscending: 'Razvrsti naraščajoče', sortDescending: 'Razvrsti padajoče', sortedByColumn: (column, direction) => `Razvrščeno po ${column}, ${direction === 'ascending' ? 'naraščajoče' : 'padajoče'}`, sortingCleared: 'Razvrščanje odstranjeno', // Date picker selectTime: 'Izberi čas', showingPanelSpan: (first, last) => `Prikaz ${first} – ${last}`, showingSinglePanel: month => `Prikaz ${month}`, showLess: 'Pokaži manj', showMore: 'Pokaži več', showPassword: 'Prikaži geslo', skipToContent: 'Pojdi na vsebino', slideNum: slide => `Diapozitiv ${slide}`, steps: 'Koraki', stepXOfY: (step, total) => `Korak ${step} od ${total}`, tagAdded: tag => `${tag} dodano`, tagAlreadyAdded: tag => `Oznaka ${tag} že obstaja`, tagInputKeyboardHelp: 'Pritisnite Backspace ali Delete, da odstranite to oznako.', tagRemoved: tag => `${tag} odstranjeno`, timeInputBadInput: 'Vnesite veljaven čas.', timeInputRangeOverflow: 'Čas je prepozen.', timeInputRangeUnderflow: 'Čas je prezgoden.', timeInputValueMissing: 'Izpolnite to polje.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'dop/pop', timeSegmentHour: 'Ura', timeSegmentMinute: 'Minuta', timeSegmentSecond: 'Sekunda', toggleColorFormat: 'Preklopi format barve', toggleNavigationDrawer: 'Preklopi navigacijsko ploščo', tooFewTags: min => { const mod100 = min % 100; if (mod100 === 1) return `Dodajte vsaj ${min} oznako`; if (mod100 === 2) return `Dodajte vsaj ${min} oznaki`; if (mod100 === 3 || mod100 === 4) return `Dodajte vsaj ${min} oznake`; return `Dodajte vsaj ${min} oznak`; }, tooManyTags: max => { const mod100 = max % 100; if (mod100 === 1) return `Dodajte največ ${max} oznako`; if (mod100 === 2) return `Dodajte največ ${max} oznaki`; if (mod100 === 3 || mod100 === 4) return `Dodajte največ ${max} oznake`; return `Dodajte največ ${max} oznak`; }, tryAgain: 'Poskusi znova', unpinColumn: 'Odpni stolpec', unread: 'Neprebrano', unsort: 'Odstrani razvrščanje', until: 'do', view: 'Pogled', weekInputRangeOverflow: 'Teden je prepozen.', weekInputRangeUnderflow: 'Teden je prezgoden.', weekInputValueMissing: 'Izberite teden.', weekLabel: week => `Teden ${week}`, year: 'Leto', zoomIn: 'Povečaj', zoomOut: 'Pomanjšaj', documentViewerCanvas: 'Dokument', documentViewerContinuous: 'Navpično drsenje', documentViewerFitHeight: 'Višina strani', documentViewerFitWidth: 'Širina strani', documentViewerLoadError: 'Strani ni mogoče naložiti', documentViewerPages: 'Strani', documentViewerRotateLeft: 'Zavrti levo', documentViewerRotateRight: 'Zavrti desno', documentViewerSinglePage: 'Drsenje po strani', documentViewerZoom: 'Povečava', editorAi: 'UI', editorAiSuggestions: 'Predlogi AI', editorDelete: 'Izbriši', editorHideDeletedPages: 'Skrij izbrisane strani', editorPage: page => `Stran ${page}`, editorRotate: 'Zavrti za 90°', editorSelectAll: (selected, total) => `Izberi vse (${selected} od ${total})`, editorSplit: 'Razdeli', editorUser: 'Uporabnik', editorZoom: 'Povečava', editorZoomIn: 'Povečaj', previewPage: page => `Stran ${page}`, save: 'Shrani', scanCancelBack: 'Nazaj na urejanje', scanCancelConfirm: 'Prekliči nalaganje', scanCancelMessage: 'Če prekličete, datoteka ne bo naložena in spremembe bodo izgubljene. Dejanja ni mogoče razveljaviti.', scanCancelTitle: 'Prekličem nalaganje?', scanFilesDisplayError: 'Datotek ni mogoče prikazati', scanFilesLoading: 'Nalaganje datotek...', scanInvalidSession: 'Seja ni veljavna. Znova zaženite postopek.', scanSaveErrorBack: 'Nazaj na urejanje', scanSaveErrorMessage: 'Prišlo je do napake pri shranjevanju. Poskusite znova ali se vrnite na urejanje.', scanSaveErrorRetry: 'Poskusi znova', scanSaveErrorTitle: 'Napaka pri shranjevanju', scanSaving: 'Ustvarjanje datotek', scanSessionLoading: 'Nalaganje seje edScan...', scanTitle: 'Urejanje strani s pomočjo AI', uploadDragAndDropDescription: 'Datoteko lahko povlečete sem ali jo izberete z gumbom.', uploadDragAndDropTitle: 'Naloži datoteko', uploadDropFile: 'Spustite datoteko', uploadDropFiles: 'Spustite datoteke', uploadDuplicateFile: name => `${name} je že na seznamu`, uploadFailed: 'Datotek ni bilo mogoče naložiti', uploadFileCountSummary: (count, size) => `${count} datotek · ${size}`, uploadFileTooLarge: (name, size) => `Datoteka ${name} je prevelika. Največja velikost je ${size} MB.`, uploadFileTypeNotAllowed: type => `Vrsta datoteke ni dovoljena: ${type}`, uploadLimitExceeded: size => `Datoteka presega omejitev nalaganja ${size} MB`, uploadLimitsExceeded: size => `Datoteke presegajo omejitev nalaganja ${size} MB`, uploadOr: 'ali', uploadPreviewFile: name => `Predogled: ${name}`, uploadProgress: 'Datoteke se nalagajo...', uploadRemoveFile: name => `Odstrani: ${name}`, uploadRetryFile: name => `Poskusi znova: ${name}`, uploadSelectFile: 'Izberi datoteko', uploadSelectFiles: 'Izberi datoteke', uploadSuccess: (done, total) => `${done} od ${total} datotek naloženih`, uploadTitle: 'Naloži datoteko', uploadTooManyFiles: max => `Naložite lahko največ ${max} datotek`, valueMissing: 'Izpolnite to polje.', valueMissingCheckbox: 'Označite to polje, če želite nadaljevati.', valueMissingRadio: 'Izberite eno od teh možnosti.', valueMissingSelect: 'Izberite element s seznama.', typeMismatchEmail: 'Vnesite e-poštni naslov.', typeMismatchUrl: 'Vnesite URL.', patternMismatch: 'Upoštevajte zahtevano obliko.', badInputNumber: 'Vnesite število.', rangeUnderflow: min => `Vrednost mora biti večja ali enaka ${min}.`, rangeOverflow: max => `Vrednost mora biti manjša ali enaka ${max}.`, stepMismatch: (lower, upper) => `Vnesite veljavno vrednost. Najbližji veljavni vrednosti sta ${lower} in ${upper}.`, stepMismatchNearest: nearest => `Vnesite veljavno vrednost. Najbližja veljavna vrednost je ${nearest}.`, tooShort: (minimum, current) => `Podaljšajte to besedilo na ${minimum} znakov ali več (trenutno uporabljate ${current} znakov).`, $code: 'sl', $dir: 'ltr', $name: 'Slovenski' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/sl.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/sv.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'Detta innehåll har skapats av AI', allTagsRemoved: 'Alla taggar borttagna', appearance: 'Utseende', appearanceClassic: 'Klassisk', appearanceModern: 'Modern', autosizeColumn: 'Anpassa kolumnen efter innehållet', back: 'Tillbaka', cancel: 'Avbryt', carousel: 'Karusell', chooseDate: 'Välj ett datum', chooseDateAndTime: 'Välj ett datum och en tid', chooseTime: 'Välj en tid', clearEntry: 'Återställ val', clearFilter: 'Rensa filter', close: 'Stäng', collapse: 'Fäll ihop', columnMenu: 'Kolumnalternativ', columnMovedToPosition: (label, position, total) => `${label}, Position ${position} av ${total}`, columns: 'Kolumner', completed: 'Slutförd', copied: 'Kopierade', copy: 'Kopiera', currentValue: 'Nuvarande värde', dateInputBadInput: 'Ange ett giltigt datum.', dateInputRangeOverflow: 'Datumet är för sent.', dateInputRangeUnderflow: 'Datumet är för tidigt.', dateInputValueMissing: 'Fyll i det här fältet.', dateNotSelectable: 'Det här datumet går inte att välja.', datePlaceholderDay: 'dd', datePlaceholderHalfyear: 'h', datePlaceholderMonth: 'mm', datePlaceholderQuarter: 'k', datePlaceholderWeek: 'vv', datePlaceholderYear: 'åååå', // Date input dateRangeEndBeforeStart: 'Periodens slut måste vara efter dess början.', dateSegmentDay: 'Dag', dateSegmentHalfyear: 'Halvår', dateSegmentMonth: 'Månad', dateSegmentQuarter: 'Kvartal', dateSegmentWeek: 'Vecka', dateSegmentYear: 'År', datetimeInputBadInput: 'Ange ett giltigt datum och en giltig tid.', datetimeInputRangeOverflow: 'Datum och tid är för sena.', datetimeInputRangeUnderflow: 'Datum och tid är för tidiga.', datetimeInputValueMissing: 'Fyll i det här fältet.', decrement: 'Minska', density: 'Täthet', densityCompact: 'Kompakt', densityDefault: 'Standard', densitySpacious: 'Luftig', disabled: 'Inaktiverad', dragToReorder: 'Dra för att ändra ordning', dropFileHere: 'Dra filen hit eller klicka för att bläddra', dropFilesHere: 'Dra filerna hit eller klicka för att bläddra', entriesPerPage: 'Poster per sida', error: 'Fel', expand: 'Expandera', filter: 'Filtrera', filterByColumn: label => `Filtrera ${label}`, filterFrom: 'Från', filterMax: 'Maximum', filterMin: 'Minimum', filterTo: 'Till', finish: 'Slutför', from: 'av', goToSlide: (slide, count) => `Gå till bild ${slide} av ${count}`, halfyear: 'Halvår', hideColumn: 'Dölj kolumn', hidePassword: 'Dölj lösenord', increment: 'Öka', loadFailed: 'Raderna kunde inte läsas in.', loading: 'Läser in', loadMoreFailed: 'Fler rader kunde inte läsas in.', locked: 'Låst', mainMenu: 'Huvudmeny', maximumValue: label => (label ? `${label} (Maximalt värde)` : 'Maximalt värde'), minimumValue: label => (label ? `${label} (Minimalt värde)` : 'Minimalt värde'), month: 'Månad', more: 'Mer', multipleValues: 'Flera värden', newsMenu: 'Nyhetsmeny', newsToggleMenu: 'Växla nyhetsmeny', next: 'Nästa', nextPage: 'Nästa sida', nextSlide: 'Nästa bild', noData: 'Inga data', noDataDescription: 'Det finns inga poster att visa ännu.', noOptions: 'Inga alternativ', noResults: 'Inga resultat', noResultsDescription: 'Ingen post matchar sökningen eller filtren.', notCompleted: 'Inte slutförd', notificationsRegion: hotkey => `Aviseringar, tryck ${hotkey} för att fokusera`, numCharacters: num => { if (num === 1) return '1 tecken'; return `${num} tecken`; }, numCharactersRemaining: num => { if (num === 1) return '1 tecken kvar'; return `${num} tecken kvar`; }, numEntries: (num, format) => { if (num === 0) return 'Inga poster'; if (num === 1) return `${formatCount(1, format)} post`; return `${formatCount(num, format)} poster`; }, numEntriesLoaded: (num, format) => { if (num === 0) return 'Inga poster laddade'; if (num === 1) return `${formatCount(1, format)} post laddad`; return `${formatCount(num, format)} poster laddade`; }, numEntriesOfTotal: (shown, total, format) => total === 1 ? `${formatCount(shown, format)} av ${formatCount(1, format)} post` : `${formatCount(shown, format)} av ${formatCount(total, format)} poster`, numOfTotalSelected: (num, total, format) => `${formatCount(num, format)} av ${formatCount(total, format)} valda`, numOptionsAvailable: num => { if (num === 0) return 'Inga alternativ tillgängliga'; if (num === 1) return '1 alternativ tillgängligt'; return `${num} alternativ tillgängliga`; }, numOptionsSelected: num => { if (num === 0) return 'Inga alternativ har valts'; if (num === 1) return '1 alternativ valt'; return `${num} alternativ valda`; }, numSelected: (num, format) => { if (num === 0) return 'Inget valt'; return `${formatCount(num, format)} valda`; }, numTotal: num => `${num} totalt`, ok: 'OK', onThisPage: 'På denna sida', optionPosition: (label, position, total) => `${label}, ${position} av ${total}`, optionsLoadError: 'Alternativen kunde inte läsas in', page: 'Sida', pauseAnimation: 'Pausa animation', pinToEnd: 'Fäst i slutet', pinToStart: 'Fäst i början', playAnimation: 'Spela upp animation', previousPage: 'Föregående sida', previousSlide: 'Föregående bild', progress: 'Framsteg', quarter: 'Kvartal', rangeSelected: (start, end) => `${start} till ${end} valt`, // Calendar range selection rangeSelectingFrom: date => `Väljer intervall från ${date}…`, remove: 'Ta bort', reset: 'Återställ', resetColumns: 'Återställ kolumner', resetFilters: 'Återställ alla filter', resize: 'Ändra storlek', resizeColumn: 'Ändra kolumnbredd', scrollableRegion: 'Scrollbart område', scrollToEnd: 'Skrolla till slutet', scrollToStart: 'Skrolla till början', search: 'Sök', sectionPages: 'Sektionens sidor', sections: 'Sektioner', selectAColorFromTheScreen: 'Välj en färg från skärmen', numRowsCopied: num => { if (num === 0) return 'Inga rader kopierade'; if (num === 1) return '1 rad kopierad'; return `${num} rader kopierade`; }, numRowsSelected: num => { if (num === 0) return 'Inga rader valda'; if (num === 1) return '1 rad vald'; return `${num} rader valda`; }, rowLifted: (position, total) => `Rad lyft, position ${position} av ${total}. Använd pil upp och pil ned för att flytta, mellanslag för att placera, Escape för att avbryta.`, rowMoved: (position, total) => `Position ${position} av ${total}`, rowReorderCanceled: 'Flytt avbruten', selectAllEntries: 'Markera alla poster', selectAllRows: 'Välj alla rader', selectDate: 'Välj datum', selectDateTime: 'Välj datum och tid', selectGroup: 'Välj grupp', selectRow: 'Välj rad', selectRowNamed: name => `Välj ${name}`, showingNofMRows: (shown, total) => `Visade rader: ${shown} av ${total}`, showingRangeOfMore: (first, last) => `${first}–${last} av fler än ${last}`, showingRangeOfTotal: (first, last, total) => `${first}–${last} av ${total}`, sortAscending: 'Sortera stigande', sortDescending: 'Sortera fallande', sortedByColumn: (column, direction) => `Sorterad efter ${column}, ${direction === 'ascending' ? 'stigande' : 'fallande'}`, sortingCleared: 'Sortering borttagen', // Date picker selectTime: 'Välj tid', showingPanelSpan: (first, last) => `Visar ${first} – ${last}`, showingSinglePanel: month => `Visar ${month}`, showLess: 'Visa mindre', showMore: 'Visa mer', showPassword: 'Visa lösenord', skipToContent: 'Hoppa till innehåll', slideNum: slide => `Bild ${slide}`, steps: 'Steg', stepXOfY: (step, total) => `Steg ${step} av ${total}`, tagAdded: tag => `${tag} tillagd`, tagAlreadyAdded: tag => `${tag} är redan tillagd`, tagInputKeyboardHelp: 'Tryck på Backspace eller Delete för att ta bort den här taggen.', tagRemoved: tag => `${tag} borttagen`, timeInputBadInput: 'Ange en giltig tid.', timeInputRangeOverflow: 'Tiden är för sen.', timeInputRangeUnderflow: 'Tiden är för tidig.', timeInputValueMissing: 'Fyll i det här fältet.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'tt', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'fm/em', timeSegmentHour: 'Timme', timeSegmentMinute: 'Minut', timeSegmentSecond: 'Sekund', toggleColorFormat: 'Växla färgformat', toggleNavigationDrawer: 'Växla navigeringspanel', tooFewTags: min => (min === 1 ? 'Lägg till minst 1 tagg' : `Lägg till minst ${min} taggar`), tooManyTags: max => (max === 1 ? 'Lägg till högst 1 tagg' : `Lägg till högst ${max} taggar`), tryAgain: 'Försök igen', unpinColumn: 'Lossa kolumnen', unread: 'Oläst', unsort: 'Ta bort sortering', until: 'till', view: 'Visa', weekInputRangeOverflow: 'Veckan är för sen.', weekInputRangeUnderflow: 'Veckan är för tidig.', weekInputValueMissing: 'Välj en vecka.', weekLabel: week => `Vecka ${week}`, year: 'År', zoomIn: 'Zooma in', zoomOut: 'Zooma ut', documentViewerCanvas: 'Dokument', documentViewerContinuous: 'Vertikal rullning', documentViewerFitHeight: 'Sidhöjd', documentViewerFitWidth: 'Sidbredd', documentViewerLoadError: 'Sidan kunde inte läsas in', documentViewerPages: 'Sidor', documentViewerRotateLeft: 'Rotera åt vänster', documentViewerRotateRight: 'Rotera åt höger', documentViewerSinglePage: 'Sidrullning', documentViewerZoom: 'Zoom', editorAi: 'AI', editorAiSuggestions: 'AI-förslag', editorDelete: 'Ta bort', editorHideDeletedPages: 'Dölj borttagna sidor', editorPage: page => `Sida ${page}`, editorRotate: 'Rotera 90°', editorSelectAll: (selected, total) => `Välj alla (${selected} av ${total})`, editorSplit: 'Dela', editorUser: 'Användare', editorZoom: 'Zoom', editorZoomIn: 'Zooma in', previewPage: page => `Sida ${page}`, save: 'Spara', scanCancelBack: 'Tillbaka till redigering', scanCancelConfirm: 'Avbryt uppladdning', scanCancelMessage: 'Om du avbryter laddas filen inte upp och ändringar går förlorade. Åtgärden kan inte ångras.', scanCancelTitle: 'Avbryt uppladdning?', scanFilesDisplayError: 'Filen/filerna kan inte visas', scanFilesLoading: 'Läser in filer...', scanInvalidSession: 'Sessionen är ogiltig. Starta om processen.', scanSaveErrorBack: 'Tillbaka till redigering', scanSaveErrorMessage: 'Ett fel uppstod vid sparning. Försök igen eller återgå till redigering.', scanSaveErrorRetry: 'Försök igen', scanSaveErrorTitle: 'Fel vid sparning', scanSaving: 'Skapar fil(er)', scanSessionLoading: 'Läser in edScan-session...', scanTitle: 'AI-assisterad sidredigering', uploadDragAndDropDescription: 'Du kan dra en fil hit eller välja den med knappen.', uploadDragAndDropTitle: 'Ladda upp fil', uploadDropFile: 'Släpp fil', uploadDropFiles: 'Släpp filer', uploadDuplicateFile: name => `${name} finns redan i listan`, uploadFailed: 'Filerna kunde inte laddas upp', uploadFileCountSummary: (count, size) => `${count} fil(er) · ${size}`, uploadFileTooLarge: (name, size) => `Filen ${name} är för stor. Maximal storlek är ${size} MB.`, uploadFileTypeNotAllowed: type => `Filtypen är inte tillåten: ${type}`, uploadLimitExceeded: size => `Filen överskrider uppladdningsgränsen på ${size} MB`, uploadLimitsExceeded: size => `Filerna överskrider uppladdningsgränsen på ${size} MB`, uploadOr: 'eller', uploadPreviewFile: name => `Förhandsgranskning: ${name}`, uploadProgress: 'Filer laddas upp...', uploadRemoveFile: name => `Ta bort: ${name}`, uploadRetryFile: name => `Försök igen: ${name}`, uploadSelectFile: 'Välj fil', uploadSelectFiles: 'Välj filer', uploadSuccess: (done, total) => `${done} av ${total} filer uppladdade`, uploadTitle: 'Ladda upp fil', uploadTooManyFiles: max => `Du kan ladda upp högst ${max} fil(er)`, valueMissing: 'Fyll i detta fält.', valueMissingCheckbox: 'Markera denna ruta om du vill fortsätta.', valueMissingRadio: 'Välj ett av dessa alternativ.', valueMissingSelect: 'Välj ett objekt i listan.', typeMismatchEmail: 'Ange en e-postadress.', typeMismatchUrl: 'Ange en URL.', patternMismatch: 'Följ det begärda formatet.', badInputNumber: 'Ange ett tal.', rangeUnderflow: min => `Värdet måste vara större än eller lika med ${min}.`, rangeOverflow: max => `Värdet måste vara mindre än eller lika med ${max}.`, stepMismatch: (lower, upper) => `Ange ett giltigt värde. De två närmaste giltiga värdena är ${lower} och ${upper}.`, stepMismatchNearest: nearest => `Ange ett giltigt värde. Det närmaste giltiga värdet är ${nearest}.`, tooShort: (minimum, current) => `Förläng denna text till ${minimum} tecken eller fler (du använder för närvarande ${current} tecken).`, $code: 'sv', $dir: 'ltr', $name: 'Svenska' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/sv.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/tr.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'Bu içerik yapay zeka tarafından oluşturuldu', allTagsRemoved: 'Tüm etiketler kaldırıldı', appearance: 'Görünüş', appearanceClassic: 'Klasik', appearanceModern: 'Modern', autosizeColumn: 'Sütunu içeriğe sığdır', back: 'Geri', cancel: 'İptal', carousel: 'Atlıkarınca', chooseDate: 'Bir tarih seçin', chooseDateAndTime: 'Bir tarih ve saat seçin', chooseTime: 'Bir saat seçin', clearEntry: 'Girişi sil', clearFilter: 'Filtreyi temizle', close: 'Kapat', collapse: 'Daralt', columnMenu: 'Sütun seçenekleri', columnMovedToPosition: (label, position, total) => `${label}, Konum ${position} / ${total}`, columns: 'Sütunlar', completed: 'Tamamlandı', copied: 'Kopyalandı', copy: 'Kopya', currentValue: 'Mevcut değer', dateInputBadInput: 'Lütfen geçerli bir tarih girin.', dateInputRangeOverflow: 'Tarih çok geç.', dateInputRangeUnderflow: 'Tarih çok erken.', dateInputValueMissing: 'Lütfen bu alanı doldurun.', dateNotSelectable: 'Bu tarih seçilemez.', datePlaceholderDay: 'GG', datePlaceholderHalfyear: 'Y', datePlaceholderMonth: 'AA', datePlaceholderQuarter: 'Ç', datePlaceholderWeek: 'HH', datePlaceholderYear: 'YYYY', // Date input dateRangeEndBeforeStart: 'Dönemin sonu başlangıcından sonra olmalıdır.', dateSegmentDay: 'Gün', dateSegmentHalfyear: 'Yarıyıl', dateSegmentMonth: 'Ay', dateSegmentQuarter: 'Çeyrek', dateSegmentWeek: 'Hafta', dateSegmentYear: 'Yıl', datetimeInputBadInput: 'Lütfen geçerli bir tarih ve saat girin.', datetimeInputRangeOverflow: 'Tarih ve saat çok geç.', datetimeInputRangeUnderflow: 'Tarih ve saat çok erken.', datetimeInputValueMissing: 'Lütfen bu alanı doldurun.', decrement: 'Azalt', density: 'Yoğunluk', densityCompact: 'Sıkı', densityDefault: 'Varsayılan', densitySpacious: 'Geniş', disabled: 'Devre dışı', dragToReorder: 'Yeniden sıralamak için sürükleyin', dropFileHere: 'Dosyayı buraya bırakın veya göz atmak için tıklayın', dropFilesHere: 'Dosyaları buraya bırakın veya göz atmak için tıklayın', entriesPerPage: 'Sayfa başına kayıt', error: 'Hata', expand: 'Genişlet', filter: 'Filtrele', filterByColumn: label => `Filtrele ${label}`, filterFrom: 'Başlangıç', filterMax: 'En çok', filterMin: 'En az', filterTo: 'Bitiş', finish: 'Bitir', from: '/', goToSlide: (slide, count) => `${count} slayttan ${slide} slayta gidin`, halfyear: 'Yarıyıl', hideColumn: 'Sütunu gizle', hidePassword: 'Şifreyi sakla', increment: 'Artır', loadFailed: 'Satırlar yüklenemedi.', loading: 'Yükleme', loadMoreFailed: 'Daha fazla satır yüklenemedi.', locked: 'Kilitli', mainMenu: 'Ana menü', maximumValue: label => (label ? `${label} (En büyük değer)` : 'En büyük değer'), minimumValue: label => (label ? `${label} (En küçük değer)` : 'En küçük değer'), month: 'Ay', more: 'Daha fazla', multipleValues: 'Birden fazla değer', newsMenu: 'Haber menüsü', newsToggleMenu: 'Haber menüsünü aç/kapat', next: 'İleri', nextPage: 'Sonraki sayfa', nextSlide: 'Sonraki slayt', noData: 'Veri yok', noDataDescription: 'Henüz gösterilecek kayıt yok.', noOptions: 'Seçenek yok', noResults: 'Sonuç yok', noResultsDescription: 'Aramayla veya filtrelerle eşleşen kayıt yok.', notCompleted: 'Tamamlanmadı', notificationsRegion: hotkey => `Bildirimler, odaklanmak için ${hotkey} tuşuna basın`, numCharacters: num => { if (num === 1) return '1 karakter'; return `${num} karakter`; }, numCharactersRemaining: num => { if (num === 1) return '1 karakter kaldı'; return `${num} karakter kaldı`; }, numEntries: (num, format) => { if (num === 0) return 'Kayıt yok'; return `${formatCount(num, format)} kayıt`; }, numEntriesLoaded: (num, format) => { if (num === 0) return 'Hiç kayıt yüklenmedi'; if (num === 1) return `${formatCount(1, format)} kayıt yüklendi`; return `${formatCount(num, format)} kayıt yüklendi`; }, numEntriesOfTotal: (shown, total, format) => `${formatCount(total, format)} kayıttan ${formatCount(shown, format)}`, numOfTotalSelected: (num, total, format) => `${formatCount(total, format)} öğeden ${formatCount(num, format)} tanesi seçildi`, numOptionsAvailable: num => { if (num === 0) return 'Kullanılabilir seçenek yok'; if (num === 1) return '1 seçenek kullanılabilir'; return `${num} seçenek kullanılabilir`; }, numOptionsSelected: num => { if (num === 0) return 'Hiçbir seçenek seçilmedi'; if (num === 1) return '1 seçenek seçildi'; return `${num} seçenek seçildi`; }, numSelected: (num, format) => { if (num === 0) return 'Seçim yok'; return `${formatCount(num, format)} seçildi`; }, numTotal: num => `Toplam ${num}`, ok: 'OK', onThisPage: 'Bu sayfada', optionPosition: (label, position, total) => `${label}, ${position}/${total}`, optionsLoadError: 'Seçenekler yüklenemedi', page: 'Sayfa', pauseAnimation: 'Animasyonu duraklat', pinToEnd: 'Sona sabitle', pinToStart: 'Başa sabitle', playAnimation: 'Animasyonu oynat', previousPage: 'Önceki sayfa', previousSlide: 'Bir onceki slayt', progress: 'İlerleme', quarter: 'Çeyrek', rangeSelected: (start, end) => `${start} - ${end} seçildi`, // Calendar range selection rangeSelectingFrom: date => `${date} tarihinden itibaren aralık seçiliyor…`, remove: 'Kaldır', reset: 'Sıfırla', resetColumns: 'Sütunları sıfırla', resetFilters: 'Tüm filtreleri sıfırla', resize: 'Yeniden boyutlandır', resizeColumn: 'Sütunu yeniden boyutlandır', scrollableRegion: 'Kaydırılabilir alan', scrollToEnd: 'Sona kay', scrollToStart: 'Başa kay', search: 'Ara', sectionPages: 'Bölüm sayfaları', sections: 'Bölümler', selectAColorFromTheScreen: 'Ekrandan bir renk seçin', numRowsCopied: num => { if (num === 0) return 'Kopyalanan satır yok'; return `${num} satır kopyalandı`; }, numRowsSelected: num => { if (num === 0) return 'Seçili satır yok'; return `${num} satır seçildi`; }, rowLifted: (position, total) => `Satır kaldırıldı, konum ${position} / ${total}. Yukarı ve aşağı ok tuşlarıyla taşıyın, boşluk tuşuyla bırakın, Escape ile iptal edin.`, rowMoved: (position, total) => `Konum ${position} / ${total}`, rowReorderCanceled: 'Taşıma iptal edildi', selectAllEntries: 'Tüm girişleri seç', selectAllRows: 'Tüm satırları seç', selectDate: 'Tarih seç', selectDateTime: 'Tarih ve saat seç', selectGroup: 'Grubu seç', selectRow: 'Satırı seç', selectRowNamed: name => `${name} öğesini seç`, showingNofMRows: (shown, total) => `${total} satırdan ${shown} tanesi gösteriliyor`, showingRangeOfMore: (first, last) => `en az ${last} içinden ${first}–${last}`, showingRangeOfTotal: (first, last, total) => `${total} içinden ${first}–${last}`, sortAscending: 'Artan sırala', sortDescending: 'Azalan sırala', sortedByColumn: (column, direction) => `${column} sütununa göre sıralandı, ${direction === 'ascending' ? 'artan' : 'azalan'}`, sortingCleared: 'Sıralama kaldırıldı', // Date picker selectTime: 'Saat seç', showingPanelSpan: (first, last) => `${first} – ${last} gösteriliyor`, showingSinglePanel: month => `${month} gösteriliyor`, showLess: 'Daha az göster', showMore: 'Daha fazla göster', showPassword: 'Şifreyi göster', skipToContent: 'İçeriğe atla', slideNum: slide => `Slayt ${slide}`, steps: 'Adımlar', stepXOfY: (step, total) => `Adım ${step} / ${total}`, tagAdded: tag => `${tag} eklendi`, tagAlreadyAdded: tag => `${tag} zaten eklendi`, tagInputKeyboardHelp: 'Bu etiketi kaldırmak için Backspace veya Delete tuşuna basın.', tagRemoved: tag => `${tag} kaldırıldı`, timeInputBadInput: 'Lütfen geçerli bir saat girin.', timeInputRangeOverflow: 'Saat çok geç.', timeInputRangeUnderflow: 'Saat çok erken.', timeInputValueMissing: 'Lütfen bu alanı doldurun.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'ÖÖ/ÖS', timeSegmentHour: 'Saat', timeSegmentMinute: 'Dakika', timeSegmentSecond: 'Saniye', toggleColorFormat: 'Renk biçimini değiştir', toggleNavigationDrawer: 'Gezinme çekmecesini aç/kapat', tooFewTags: min => `En az ${min} etiket ekleyin`, tooManyTags: max => `En fazla ${max} etiket ekleyin`, tryAgain: 'Tekrar dene', unpinColumn: 'Sütunun sabitlemesini kaldır', unread: 'Okunmamış', unsort: 'Sıralamayı kaldır', until: 'kadar', view: 'Görünüm', weekInputRangeOverflow: 'Hafta çok geç.', weekInputRangeUnderflow: 'Hafta çok erken.', weekInputValueMissing: 'Lütfen bir hafta seçin.', weekLabel: week => `Hafta ${week}`, year: 'Yıl', zoomIn: 'Yakınlaştır', zoomOut: 'Uzaklaştır', documentViewerCanvas: 'Belge', documentViewerContinuous: 'Dikey kaydırma', documentViewerFitHeight: 'Sayfa yüksekliği', documentViewerFitWidth: 'Sayfa genişliği', documentViewerLoadError: 'Sayfa yüklenemedi', documentViewerPages: 'Sayfalar', documentViewerRotateLeft: 'Sola döndür', documentViewerRotateRight: 'Sağa döndür', documentViewerSinglePage: 'Sayfa kaydırma', documentViewerZoom: 'Yakınlaştırma', editorAi: 'YZ', editorAiSuggestions: 'Yapay zekâ önerileri', editorDelete: 'Sil', editorHideDeletedPages: 'Silinen sayfaları gizle', editorPage: page => `Sayfa ${page}`, editorRotate: '90° döndür', editorSelectAll: (selected, total) => `Tümünü seç (${selected} / ${total})`, editorSplit: 'Böl', editorUser: 'Kullanıcı', editorZoom: 'Yakınlaştırma', editorZoomIn: 'Yakınlaştır', previewPage: page => `Sayfa ${page}`, save: 'Kaydet', scanCancelBack: 'Düzenlemeye dön', scanCancelConfirm: 'Yüklemeyi iptal et', scanCancelMessage: 'İptal ederseniz dosya yüklenmeyecek ve değişiklikler kaybolacaktır. Bu işlem geri alınamaz.', scanCancelTitle: 'Yükleme iptal edilsin mi?', scanFilesDisplayError: 'Dosya(lar) görüntülenemiyor', scanFilesLoading: 'Dosyalar yükleniyor...', scanInvalidSession: 'Oturum geçersiz. Lütfen işlemi yeniden başlatın.', scanSaveErrorBack: 'Düzenlemeye dön', scanSaveErrorMessage: 'Kaydetme sırasında bir hata oluştu. Tekrar deneyebilir veya düzenlemeye dönebilirsiniz.', scanSaveErrorRetry: 'Tekrar dene', scanSaveErrorTitle: 'Kaydetme hatası', scanSaving: 'Dosya(lar) oluşturuluyor', scanSessionLoading: 'edScan oturumu yükleniyor...', scanTitle: 'Yapay zekâ destekli sayfa düzenleme', uploadDragAndDropDescription: 'Bir dosyayı buraya sürükleyebilir veya düğmeyle seçebilirsiniz.', uploadDragAndDropTitle: 'Dosya yükle', uploadDropFile: 'Dosyayı bırakın', uploadDropFiles: 'Dosyaları bırakın', uploadDuplicateFile: name => `${name} zaten listede`, uploadFailed: 'Dosyalar yüklenemedi', uploadFileCountSummary: (count, size) => `${count} dosya · ${size}`, uploadFileTooLarge: (name, size) => `${name} dosyası çok büyük. Maksimum boyut ${size} MB.`, uploadFileTypeNotAllowed: type => `Dosya türüne izin verilmiyor: ${type}`, uploadLimitExceeded: size => `Dosya ${size} MB yükleme sınırını aşıyor`, uploadLimitsExceeded: size => `Dosyalar ${size} MB yükleme sınırını aşıyor`, uploadOr: 'veya', uploadPreviewFile: name => `Önizleme: ${name}`, uploadProgress: 'Dosyalar yükleniyor...', uploadRemoveFile: name => `Kaldır: ${name}`, uploadRetryFile: name => `Tekrar dene: ${name}`, uploadSelectFile: 'Dosya seç', uploadSelectFiles: 'Dosyaları seç', uploadSuccess: (done, total) => `${total} dosyadan ${done} tanesi yüklendi`, uploadTitle: 'Dosya yükle', uploadTooManyFiles: max => `En fazla ${max} dosya yükleyebilirsiniz`, valueMissing: 'Lütfen bu alanı doldurun.', valueMissingCheckbox: 'Devam etmek istiyorsanız bu kutuyu işaretleyin.', valueMissingRadio: 'Lütfen bu seçeneklerden birini seçin.', valueMissingSelect: 'Lütfen listeden bir öğe seçin.', typeMismatchEmail: 'Lütfen bir e-posta adresi girin.', typeMismatchUrl: 'Lütfen bir URL girin.', patternMismatch: 'Lütfen istenen biçime uyun.', badInputNumber: 'Lütfen bir sayı girin.', rangeUnderflow: min => `Değer ${min} veya daha büyük olmalıdır.`, rangeOverflow: max => `Değer ${max} veya daha küçük olmalıdır.`, stepMismatch: (lower, upper) => `Lütfen geçerli bir değer girin. En yakın iki geçerli değer: ${lower} ve ${upper}.`, stepMismatchNearest: nearest => `Lütfen geçerli bir değer girin. En yakın geçerli değer: ${nearest}.`, tooShort: (minimum, current) => `Lütfen bu metni ${minimum} karaktere veya daha fazlasına uzatın (şu anda ${current} karakter kullanıyorsunuz).`, $code: 'tr', $dir: 'ltr', $name: 'Türkçe' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/tr.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/uk.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: 'Цей контент створено штучним інтелектом', allTagsRemoved: 'Усі теги видалено', appearance: 'Зовнішній вигляд', appearanceClassic: 'Класичний', appearanceModern: 'Сучасний', autosizeColumn: 'Підігнати стовпець під вміст', back: 'Назад', cancel: 'Скасувати', carousel: 'Карусель', chooseDate: 'Виберіть дату', chooseDateAndTime: 'Виберіть дату і час', chooseTime: 'Виберіть час', clearEntry: 'Очистити поле', clearFilter: 'Скинути фільтр', close: 'Закрити', collapse: 'Згорнути', columnMenu: 'Параметри стовпця', columnMovedToPosition: (label, position, total) => `${label}, Позиція ${position} з ${total}`, columns: 'Стовпці', completed: 'Завершено', copied: 'Скопійовано', copy: 'Скопіювати', currentValue: 'Поточне значення', dateInputBadInput: 'Введіть припустиму дату.', dateInputRangeOverflow: 'Дата занадто пізня.', dateInputRangeUnderflow: 'Дата занадто рання.', dateInputValueMissing: 'Заповніть це поле.', dateNotSelectable: 'Цю дату не можна вибрати.', datePlaceholderDay: 'ДД', datePlaceholderHalfyear: 'П', datePlaceholderMonth: 'ММ', datePlaceholderQuarter: 'К', datePlaceholderWeek: 'ТТ', datePlaceholderYear: 'РРРР', // Date input dateRangeEndBeforeStart: 'Кінець періоду має бути після його початку.', dateSegmentDay: 'День', dateSegmentHalfyear: 'Півріччя', dateSegmentMonth: 'Місяць', dateSegmentQuarter: 'Квартал', dateSegmentWeek: 'Тиждень', dateSegmentYear: 'Рік', datetimeInputBadInput: 'Введіть припустимі дату та час.', datetimeInputRangeOverflow: 'Дата та час занадто пізні.', datetimeInputRangeUnderflow: 'Дата та час занадто ранні.', datetimeInputValueMissing: 'Заповніть це поле.', decrement: 'Зменшити', density: 'Щільність', densityCompact: 'Компактна', densityDefault: 'Звичайна', densitySpacious: 'Вільна', disabled: 'Вимкнено', dragToReorder: 'Перетягніть для зміни порядку', dropFileHere: 'Перетягніть файл сюди або натисніть, щоб вибрати', dropFilesHere: 'Перетягніть файли сюди або натисніть, щоб вибрати', entriesPerPage: 'Записів на сторінці', error: 'Збій', expand: 'Розгорнути', filter: 'Фільтр', filterByColumn: label => `Фільтр ${label}`, filterFrom: 'З', filterMax: 'Максимум', filterMin: 'Мінімум', filterTo: 'По', finish: 'Завершити', from: 'із', goToSlide: (slide, count) => `Перейти до слайда №${slide} з ${count}`, halfyear: 'Півріччя', hideColumn: 'Приховати стовпець', hidePassword: 'Приховати пароль', increment: 'Збільшити', loadFailed: 'Не вдалося завантажити рядки.', loading: 'Завантаження', loadMoreFailed: 'Не вдалося завантажити більше рядків.', locked: 'Заблоковано', mainMenu: 'Головне меню', maximumValue: label => (label ? `${label} (Максимальне значення)` : 'Максимальне значення'), minimumValue: label => (label ? `${label} (Мінімальне значення)` : 'Мінімальне значення'), month: 'Місяць', more: 'Більше', multipleValues: 'Кілька значень', newsMenu: 'Меню новин', newsToggleMenu: 'Переключити меню новин', next: 'Далі', nextPage: 'Наступна сторінка', nextSlide: 'Наступний слайд', noData: 'Немає даних', noDataDescription: 'Ще немає записів для відображення.', noOptions: 'Немає варіантів', noResults: 'Немає результатів', noResultsDescription: 'Жоден запис не відповідає пошуку або фільтрам.', notCompleted: 'Не завершено', notificationsRegion: hotkey => `Сповіщення, натисніть ${hotkey} для фокусу`, numCharacters: num => { const mod10 = num % 10; const mod100 = num % 100; if (mod10 === 1 && mod100 !== 11) return `${num} символ`; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `${num} символи`; return `${num} символів`; }, numCharactersRemaining: num => { const mod10 = num % 10; const mod100 = num % 100; if (mod10 === 1 && mod100 !== 11) return `Залишився ${num} символ`; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `Залишилося ${num} символи`; return `Залишилося ${num} символів`; }, numEntries: (num, format) => { const mod10 = num % 10; const mod100 = num % 100; if (mod10 === 1 && mod100 !== 11) return `${formatCount(num, format)} запис`; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `${formatCount(num, format)} записи`; return `${formatCount(num, format)} записів`; }, numEntriesLoaded: (num, format) => { const n = num % 10; if (num === 0) return 'не завантажено записів'; if (n === 1 && num !== 11) return `завантажено ${formatCount(num, format)} запис`; if ((n === 2 || n === 3 || n === 4) && (num < 12 || num > 14)) return `завантажено ${formatCount(num, format)} записи`; return `завантажено ${formatCount(num, format)} записів`; }, numEntriesOfTotal: (shown, total, format) => { const mod10 = total % 10; const mod100 = total % 100; if (mod10 === 1 && mod100 !== 11) return `${formatCount(shown, format)} з ${formatCount(total, format)} запису`; return `${formatCount(shown, format)} з ${formatCount(total, format)} записів`; }, numOfTotalSelected: (num, total, format) => `Вибрано ${formatCount(num, format)} з ${formatCount(total, format)}`, numOptionsAvailable: num => { const mod10 = num % 10; const mod100 = num % 100; if (num === 0) return 'немає доступних варіантів'; if (mod10 === 1 && mod100 !== 11) return `доступний ${num} варіант`; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `доступні ${num} варіанти`; return `доступно ${num} варіантів`; }, numOptionsSelected: num => { const mod10 = num % 10; const mod100 = num % 100; if (num === 0) return 'не вибрано варіантів'; if (mod10 === 1 && mod100 !== 11) return `вибрано ${num} варіант`; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `вибрано ${num} варіанти`; return `вибрано ${num} варіантів`; }, numSelected: (num, format) => { if (num === 0) return 'Нічого не вибрано'; return `Вибрано ${formatCount(num, format)}`; }, numTotal: num => `Усього ${num}`, ok: 'OK', onThisPage: 'На цій сторінці', optionPosition: (label, position, total) => `${label}, ${position} з ${total}`, optionsLoadError: 'Не вдалося завантажити варіанти', page: 'Сторінка', pauseAnimation: 'Призупинити анімацію', pinToEnd: 'Закріпити в кінці', pinToStart: 'Закріпити на початку', playAnimation: 'Відтворити анімацію', previousPage: 'Попередня сторінка', previousSlide: 'Попередній слайд', progress: 'Поступ', quarter: 'Квартал', rangeSelected: (start, end) => `Вибрано з ${start} по ${end}`, // Calendar range selection rangeSelectingFrom: date => `Вибір діапазону з ${date}…`, remove: 'Видалити', reset: 'Скинути', resetColumns: 'Скинути стовпці', resetFilters: 'Скинути всі фільтри', resize: 'Змінити розмір', resizeColumn: 'Змінити ширину стовпця', scrollableRegion: 'Область з можливістю прокрутки', scrollToEnd: 'Прокрутити в кінець', scrollToStart: 'Прокрутити на початок', search: 'Пошук', sectionPages: 'Сторінки розділу', sections: 'Розділи', selectAColorFromTheScreen: 'Виберіть колір на екрані', numRowsCopied: num => { const mod10 = num % 10; const mod100 = num % 100; if (mod10 === 1 && mod100 !== 11) return `Скопійовано ${num} рядок`; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `Скопійовано ${num} рядки`; return `Скопійовано ${num} рядків`; }, numRowsSelected: num => { const mod10 = num % 10; const mod100 = num % 100; if (mod10 === 1 && mod100 !== 11) return `Вибрано ${num} рядок`; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `Вибрано ${num} рядки`; return `Вибрано ${num} рядків`; }, rowLifted: (position, total) => `Рядок піднято, позиція ${position} з ${total}. Стрілки вгору та вниз переміщують, пробіл опускає, Escape скасовує.`, rowMoved: (position, total) => `Позиція ${position} з ${total}`, rowReorderCanceled: 'Переміщення скасовано', selectAllEntries: 'Вибрати всі записи', selectAllRows: 'Вибрати всі рядки', selectDate: 'Вибрати дату', selectDateTime: 'Вибрати дату і час', selectGroup: 'Вибрати групу', selectRow: 'Вибрати рядок', selectRowNamed: name => `Вибрати ${name}`, showingNofMRows: (shown, total) => `Показано рядків: ${shown} з ${total}`, showingRangeOfMore: (first, last) => `${first}–${last} з понад ${last}`, showingRangeOfTotal: (first, last, total) => `${first}–${last} з ${total}`, sortAscending: 'Сортувати за зростанням', sortDescending: 'Сортувати за спаданням', sortedByColumn: (column, direction) => `Відсортовано за ${column}, ${direction === 'ascending' ? 'за зростанням' : 'за спаданням'}`, sortingCleared: 'Сортування знято', // Date picker selectTime: 'Вибрати час', showingPanelSpan: (first, last) => `Показано ${first} – ${last}`, showingSinglePanel: month => `Показано ${month}`, showLess: 'Показати менше', showMore: 'Показати більше', showPassword: 'Показати пароль', skipToContent: 'Перейти до змісту', slideNum: slide => `Слайд ${slide}`, steps: 'Кроки', stepXOfY: (step, total) => `Крок ${step} з ${total}`, tagAdded: tag => `${tag} додано`, tagAlreadyAdded: tag => `Тег ${tag} уже додано`, tagInputKeyboardHelp: 'Натисніть Backspace або Delete, щоб видалити цей тег.', tagRemoved: tag => `${tag} видалено`, timeInputBadInput: 'Введіть припустимий час.', timeInputRangeOverflow: 'Час занадто пізній.', timeInputRangeUnderflow: 'Час занадто ранній.', timeInputValueMissing: 'Заповніть це поле.', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: 'дп/пп', timeSegmentHour: 'Година', timeSegmentMinute: 'Хвилина', timeSegmentSecond: 'Секунда', toggleColorFormat: 'Переключити кольорову модель', toggleNavigationDrawer: 'Переключити панель навігації', tooFewTags: min => { const mod10 = min % 10; const mod100 = min % 100; if (mod10 === 1 && mod100 !== 11) return `Додайте щонайменше ${min} тег`; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `Додайте щонайменше ${min} теги`; return `Додайте щонайменше ${min} тегів`; }, tooManyTags: max => { const mod10 = max % 10; const mod100 = max % 100; if (mod10 === 1 && mod100 !== 11) return `Додайте не більше ніж ${max} тег`; if (mod10 >= 2 && mod10 <= 4 && !(mod100 >= 12 && mod100 <= 14)) return `Додайте не більше ніж ${max} теги`; return `Додайте не більше ніж ${max} тегів`; }, tryAgain: 'Спробувати ще раз', unpinColumn: 'Відкріпити стовпець', unread: 'Непрочитане', unsort: 'Скасувати сортування', until: 'до', view: 'Вигляд', weekInputRangeOverflow: 'Тиждень занадто пізній.', weekInputRangeUnderflow: 'Тиждень занадто ранній.', weekInputValueMissing: 'Виберіть тиждень.', weekLabel: week => `Тиждень ${week}`, year: 'Рік', zoomIn: 'Збільшити', zoomOut: 'Зменшити', documentViewerCanvas: 'Документ', documentViewerContinuous: 'Вертикальне прокручування', documentViewerFitHeight: 'За висотою', documentViewerFitWidth: 'За шириною', documentViewerLoadError: 'Не вдалося завантажити сторінку', documentViewerPages: 'Сторінки', documentViewerRotateLeft: 'Повернути ліворуч', documentViewerRotateRight: 'Повернути праворуч', documentViewerSinglePage: 'Прокручування сторінки', documentViewerZoom: 'Масштаб', editorAi: 'ШІ', editorAiSuggestions: 'Пропозиції ШІ', editorDelete: 'Видалити', editorHideDeletedPages: 'Приховати видалені сторінки', editorPage: page => `Сторінка ${page}`, editorRotate: 'Повернути на 90°', editorSelectAll: (selected, total) => `Вибрати все (${selected} з ${total})`, editorSplit: 'Розділити', editorUser: 'Користувач', editorZoom: 'Масштаб', editorZoomIn: 'Збільшити', previewPage: page => `Сторінка ${page}`, save: 'Зберегти', scanCancelBack: 'Повернутися до редагування', scanCancelConfirm: 'Скасувати завантаження', scanCancelMessage: 'Якщо скасувати, файл не буде завантажено, а зміни буде втрачено. Цю дію неможливо скасувати.', scanCancelTitle: 'Скасувати завантаження?', scanFilesDisplayError: 'Неможливо відобразити файл(и)', scanFilesLoading: 'Завантаження файлів...', scanInvalidSession: 'Сесія недійсна. Перезапустіть процес.', scanSaveErrorBack: 'Повернутися до редагування', scanSaveErrorMessage: 'Сталася помилка під час збереження. Спробуйте ще раз або поверніться до редагування.', scanSaveErrorRetry: 'Спробувати ще раз', scanSaveErrorTitle: 'Помилка під час збереження', scanSaving: 'Створення файлів', scanSessionLoading: 'Завантаження сесії edScan...', scanTitle: 'Редагування сторінок за допомогою ШІ', uploadDragAndDropDescription: 'Ви можете перетягнути файл сюди або вибрати його кнопкою.', uploadDragAndDropTitle: 'Завантажити файл', uploadDropFile: 'Перетягніть файл', uploadDropFiles: 'Перетягніть файли', uploadDuplicateFile: name => `${name} вже у списку`, uploadFailed: 'Не вдалося завантажити файли', uploadFileCountSummary: (count, size) => `${count} файл(ів) · ${size}`, uploadFileTooLarge: (name, size) => `Файл ${name} занадто великий. Максимальний розмір: ${size} МБ.`, uploadFileTypeNotAllowed: type => `Тип файлу не дозволено: ${type}`, uploadLimitExceeded: size => `Файл перевищує ліміт завантаження ${size} МБ`, uploadLimitsExceeded: size => `Файли перевищують ліміт завантаження ${size} МБ`, uploadOr: 'або', uploadPreviewFile: name => `Попередній перегляд: ${name}`, uploadProgress: 'Файли завантажуються...', uploadRemoveFile: name => `Видалити: ${name}`, uploadRetryFile: name => `Спробувати ще раз: ${name}`, uploadSelectFile: 'Вибрати файл', uploadSelectFiles: 'Вибрати файли', uploadSuccess: (done, total) => `${done} з ${total} файлів завантажено`, uploadTitle: 'Завантажити файл', uploadTooManyFiles: max => `Можна завантажити щонайбільше ${max} файл(ів)`, valueMissing: 'Заповніть це поле.', valueMissingCheckbox: 'Установіть цей прапорець, якщо хочете продовжити.', valueMissingRadio: 'Виберіть один із цих варіантів.', valueMissingSelect: 'Виберіть елемент зі списку.', typeMismatchEmail: 'Введіть адресу електронної пошти.', typeMismatchUrl: 'Введіть URL-адресу.', patternMismatch: 'Дотримуйтеся потрібного формату.', badInputNumber: 'Введіть число.', rangeUnderflow: min => `Значення має бути більшим або дорівнювати ${min}.`, rangeOverflow: max => `Значення має бути меншим або дорівнювати ${max}.`, stepMismatch: (lower, upper) => `Введіть припустиме значення. Два найближчі припустимі значення: ${lower} і ${upper}.`, stepMismatchNearest: nearest => `Введіть припустиме значення. Найближче припустиме значення: ${nearest}.`, tooShort: (minimum, current) => `Подовжте цей текст до ${minimum} символів або більше (зараз ${current} символів).`, $code: 'uk', $dir: 'ltr', $name: 'Українська' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/uk.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/zh-cn.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: '此内容由人工智能生成', allTagsRemoved: '已移除所有标签', appearance: '外观', appearanceClassic: '经典', appearanceModern: '现代', autosizeColumn: '使列适应内容', back: '返回', cancel: '取消', carousel: '跑马灯', chooseDate: '选择日期', chooseDateAndTime: '选择日期和时间', chooseTime: '选择时间', clearEntry: '清空', clearFilter: '清除筛选', close: '关闭', collapse: '折叠', columnMenu: '列选项', columnMovedToPosition: (label, position, total) => `${label}，第 ${position} 位，共 ${total} 列`, columns: '列', completed: '已完成', copied: '已复制', copy: '复制', currentValue: '当前值', dateInputBadInput: '请输入有效的日期。', dateInputRangeOverflow: '日期太晚。', dateInputRangeUnderflow: '日期太早。', dateInputValueMissing: '请填写此字段。', dateNotSelectable: '此日期不可选择。', datePlaceholderDay: 'dd', datePlaceholderHalfyear: '半', datePlaceholderMonth: 'mm', datePlaceholderQuarter: '季', datePlaceholderWeek: '周', datePlaceholderYear: 'yyyy', // Date input dateRangeEndBeforeStart: '期间的结束必须晚于其开始。', dateSegmentDay: '日', dateSegmentHalfyear: '半年', dateSegmentMonth: '月', dateSegmentQuarter: '季度', dateSegmentWeek: '周', dateSegmentYear: '年', datetimeInputBadInput: '请输入有效的日期和时间。', datetimeInputRangeOverflow: '日期和时间太晚。', datetimeInputRangeUnderflow: '日期和时间太早。', datetimeInputValueMissing: '请填写此字段。', decrement: '减少', density: '密度', densityCompact: '紧凑', densityDefault: '默认', densitySpacious: '宽松', disabled: '已禁用', dragToReorder: '拖动以重新排序', dropFileHere: '将文件拖到此处或点击浏览', dropFilesHere: '将文件拖到此处或点击浏览', entriesPerPage: '每页条数', error: '错误', expand: '展开', filter: '筛选', filterByColumn: label => `筛选 ${label}`, filterFrom: '从', filterMax: '最大值', filterMin: '最小值', filterTo: '到', finish: '完成', from: '/', goToSlide: (slide, count) => `转到第 ${slide} 张幻灯片，共 ${count} 张`, halfyear: '半年', hideColumn: '隐藏列', hidePassword: '隐藏密码', increment: '增加', loadFailed: '无法加载行。', loading: '加载中', loadMoreFailed: '无法加载更多行。', locked: '已锁定', mainMenu: '主菜单', maximumValue: label => (label ? `${label} (最大值)` : '最大值'), minimumValue: label => (label ? `${label} (最小值)` : '最小值'), month: '月', more: '更多', multipleValues: '多个值', newsMenu: '新闻菜单', newsToggleMenu: '切换新闻菜单', next: '下一步', nextPage: '下一页', nextSlide: '下一张幻灯片', noData: '暂无数据', noDataDescription: '暂无可显示的条目。', noOptions: '无选项', noResults: '无结果', noResultsDescription: '没有与搜索或筛选条件匹配的条目。', notCompleted: '未完成', notificationsRegion: hotkey => `通知，按 ${hotkey} 聚焦`, numCharacters: num => `${num}个字符`, numCharactersRemaining: num => `剩余${num}个字符`, numEntries: (num, format) => { if (num === 0) return '无条目'; return `${formatCount(num, format)} 条`; }, numEntriesLoaded: (num, format) => { if (num === 0) return '未加载任何条目'; if (num === 1) return `已加载 ${formatCount(1, format)} 条`; return `已加载 ${formatCount(num, format)} 条`; }, numEntriesOfTotal: (shown, total, format) => `${formatCount(total, format)} 条中的 ${formatCount(shown, format)} 条`, numOfTotalSelected: (num, total, format) => `已选 ${formatCount(num, format)}/${formatCount(total, format)} 项`, numOptionsAvailable: num => { if (num === 0) return '没有可用的选项'; if (num === 1) return '有 1 个可用选项'; return `有 ${num} 个可用选项`; }, numOptionsSelected: num => { if (num === 0) return '未选择任何项目'; if (num === 1) return '已选择 1 个项目'; return `已选择 ${num} 个项目`; }, numSelected: (num, format) => { if (num === 0) return '未选择'; return `已选 ${formatCount(num, format)} 项`; }, numTotal: num => `共 ${num}`, ok: 'OK', onThisPage: '本页内容', optionPosition: (label, position, total) => `${label}，第 ${position} 项，共 ${total} 项`, optionsLoadError: '无法加载选项', page: '页面', pauseAnimation: '暂停动画', pinToEnd: '固定到末尾', pinToStart: '固定到开头', playAnimation: '播放动画', previousPage: '上一页', previousSlide: '上一张幻灯片', progress: '进度', quarter: '季度', rangeSelected: (start, end) => `已选择 ${start} 至 ${end}`, // Calendar range selection rangeSelectingFrom: date => `正在选择从 ${date} 开始的范围…`, remove: '删除', reset: '重置', resetColumns: '重置列', resetFilters: '重置所有筛选', resize: '调整大小', resizeColumn: '调整列宽', scrollableRegion: '可滚动区域', scrollToEnd: '滚动至页尾', scrollToStart: '滚动至页首', search: '搜索', sectionPages: '板块页面', sections: '板块', selectAColorFromTheScreen: '从屏幕中选择一种颜色', numRowsCopied: num => { if (num === 0) return '未复制任何行'; return `已复制 ${num} 行`; }, numRowsSelected: num => { if (num === 0) return '未选择任何行'; return `已选择 ${num} 行`; }, rowLifted: (position, total) => `行已提起，第 ${position} 位，共 ${total} 行。使用上下方向键移动，空格键放下，Escape 取消。`, rowMoved: (position, total) => `第 ${position} 位，共 ${total} 行`, rowReorderCanceled: '已取消调整顺序', selectAllEntries: '全选条目', selectAllRows: '选择所有行', selectDate: '选择日期', selectDateTime: '选择日期和时间', selectGroup: '选择组', selectRow: '选择行', selectRowNamed: name => `选择 ${name}`, showingNofMRows: (shown, total) => `显示 ${total} 行中的 ${shown} 行`, showingRangeOfMore: (first, last) => `第 ${first}–${last} 条，至少 ${last} 条`, showingRangeOfTotal: (first, last, total) => `第 ${first}–${last} 条，共 ${total} 条`, sortAscending: '升序排序', sortDescending: '降序排序', sortedByColumn: (column, direction) => `已按${column}排序，${direction === 'ascending' ? '升序' : '降序'}`, sortingCleared: '已取消排序', // Date picker selectTime: '选择时间', showingPanelSpan: (first, last) => `正在显示 ${first} – ${last}`, showingSinglePanel: month => `正在显示 ${month}`, showLess: '显示更少', showMore: '显示更多', showPassword: '显示密码', skipToContent: '跳到内容', slideNum: slide => `幻灯片 ${slide}`, steps: '步骤', stepXOfY: (step, total) => `第 ${step} 步，共 ${total} 步`, tagAdded: tag => `已添加 ${tag}`, tagAlreadyAdded: tag => `${tag} 已添加`, tagInputKeyboardHelp: '按 Backspace 或 Delete 键移除此标签。', tagRemoved: tag => `已移除 ${tag}`, timeInputBadInput: '请输入有效的时间。', timeInputRangeOverflow: '时间太晚。', timeInputRangeUnderflow: '时间太早。', timeInputValueMissing: '请填写此字段。', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: '上午/下午', timeSegmentHour: '时', timeSegmentMinute: '分', timeSegmentSecond: '秒', toggleColorFormat: '切换颜色模式', toggleNavigationDrawer: '切换导航抽屉', tooFewTags: min => `请至少添加 ${min} 个标签`, tooManyTags: max => `最多只能添加 ${max} 个标签`, tryAgain: '重试', unpinColumn: '取消固定列', unread: '未读', unsort: '取消排序', until: '至', view: '视图', weekInputRangeOverflow: '该周太晚。', weekInputRangeUnderflow: '该周太早。', weekInputValueMissing: '请选择一周。', weekLabel: week => `第${week}周`, year: '年', zoomIn: '放大', zoomOut: '缩小', documentViewerCanvas: '文档', documentViewerContinuous: '垂直滚动', documentViewerFitHeight: '适合页高', documentViewerFitWidth: '适合页宽', documentViewerLoadError: '无法加载页面', documentViewerPages: '页面', documentViewerRotateLeft: '向左旋转', documentViewerRotateRight: '向右旋转', documentViewerSinglePage: '页面滚动', documentViewerZoom: '缩放', editorAi: 'AI', editorAiSuggestions: 'AI 建议', editorDelete: '删除', editorHideDeletedPages: '隐藏已删除页面', editorPage: page => `第 ${page} 页`, editorRotate: '旋转 90°', editorSelectAll: (selected, total) => `全选（${selected}/${total}）`, editorSplit: '拆分', editorUser: '用户', editorZoom: '缩放', editorZoomIn: '放大', previewPage: page => `第 ${page} 页`, save: '保存', scanCancelBack: '返回编辑', scanCancelConfirm: '取消上传', scanCancelMessage: '如果取消，文件将不会上传，且更改会丢失。此操作无法撤销。', scanCancelTitle: '取消上传？', scanFilesDisplayError: '无法显示文件', scanFilesLoading: '正在加载文件...', scanInvalidSession: '会话无效，请重新开始流程。', scanSaveErrorBack: '返回编辑', scanSaveErrorMessage: '保存时发生错误。您可以重试或返回编辑。', scanSaveErrorRetry: '重试', scanSaveErrorTitle: '保存时出错', scanSaving: '正在创建文件', scanSessionLoading: '正在加载 edScan 会话...', scanTitle: 'AI 辅助页面编辑', uploadDragAndDropDescription: '您可以将文件拖到此处，或通过按钮选择文件。', uploadDragAndDropTitle: '上传文件', uploadDropFile: '拖放文件', uploadDropFiles: '拖放文件', uploadDuplicateFile: name => `${name} 已在列表中`, uploadFailed: '文件上传失败', uploadFileCountSummary: (count, size) => `${count} 个文件 · ${size}`, uploadFileTooLarge: (name, size) => `文件 ${name} 太大。最大允许大小为 ${size} MB。`, uploadFileTypeNotAllowed: type => `不支持的文件类型：${type}`, uploadLimitExceeded: size => `文件超过 ${size} MB 上传限制`, uploadLimitsExceeded: size => `文件超过 ${size} MB 上传限制`, uploadOr: '或', uploadPreviewFile: name => `预览：${name}`, uploadProgress: '文件上传中...', uploadRemoveFile: name => `移除：${name}`, uploadRetryFile: name => `重试: ${name}`, uploadSelectFile: '选择文件', uploadSelectFiles: '选择文件', uploadSuccess: (done, total) => `已上传 ${done}/${total} 个文件`, uploadTitle: '上传文件', uploadTooManyFiles: max => `最多可以上传 ${max} 个文件`, valueMissing: '请填写此字段。', valueMissingCheckbox: '如果要继续，请选中此复选框。', valueMissingRadio: '请选择其中一个选项。', valueMissingSelect: '请选择列表中的一项。', typeMismatchEmail: '请输入电子邮件地址。', typeMismatchUrl: '请输入网址。', patternMismatch: '请符合要求的格式。', badInputNumber: '请输入数字。', rangeUnderflow: min => `值必须大于或等于 ${min}。`, rangeOverflow: max => `值必须小于或等于 ${max}。`, stepMismatch: (lower, upper) => `请输入有效值。两个最接近的有效值为 ${lower} 和 ${upper}。`, stepMismatchNearest: nearest => `请输入有效值。最接近的有效值为 ${nearest}。`, tooShort: (minimum, current) => `请将此文本加长到 ${minimum} 个字符或更多（当前为 ${current} 个字符）。`, $code: 'zh-cn', $dir: 'ltr', $name: '简体中文' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/zh-cn.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "translations/zh-tw.js",
      "declarations": [
        {
          "kind": "variable",
          "name": "translation",
          "type": {
            "text": "Translation"
          },
          "default": "{ aiGenerated: '此內容由人工智慧生成', allTagsRemoved: '已移除所有標籤', appearance: '外觀', appearanceClassic: '經典', appearanceModern: '現代', autosizeColumn: '使欄寬符合內容', back: '返回', cancel: '取消', carousel: '幻燈片', chooseDate: '選擇日期', chooseDateAndTime: '選擇日期和時間', chooseTime: '選擇時間', clearEntry: '清空', clearFilter: '清除篩選', close: '關閉', collapse: '折疊', columnMenu: '欄選項', columnMovedToPosition: (label, position, total) => `${label}，第 ${position} 位，共 ${total} 欄`, columns: '欄', completed: '已完成', copied: '已複製', copy: '複製', currentValue: '當前值', dateInputBadInput: '請輸入有效的日期。', dateInputRangeOverflow: '日期太晚。', dateInputRangeUnderflow: '日期太早。', dateInputValueMissing: '請填寫此欄位。', dateNotSelectable: '此日期無法選擇。', datePlaceholderDay: 'dd', datePlaceholderHalfyear: '半', datePlaceholderMonth: 'mm', datePlaceholderQuarter: '季', datePlaceholderWeek: '週', datePlaceholderYear: 'yyyy', // Date input dateRangeEndBeforeStart: '期間的結束必須晚於其開始。', dateSegmentDay: '日', dateSegmentHalfyear: '半年', dateSegmentMonth: '月', dateSegmentQuarter: '季', dateSegmentWeek: '週', dateSegmentYear: '年', datetimeInputBadInput: '請輸入有效的日期和時間。', datetimeInputRangeOverflow: '日期和時間太晚。', datetimeInputRangeUnderflow: '日期和時間太早。', datetimeInputValueMissing: '請填寫此欄位。', decrement: '減少', density: '密度', densityCompact: '緊湊', densityDefault: '預設', densitySpacious: '寬鬆', disabled: '已停用', dragToReorder: '拖曳以重新排序', dropFileHere: '將檔案拖曳至此或點擊瀏覽', dropFilesHere: '將檔案拖曳至此或點擊瀏覽', entriesPerPage: '每頁筆數', error: '錯誤', expand: '展開', filter: '篩選', filterByColumn: label => `篩選 ${label}`, filterFrom: '從', filterMax: '最大值', filterMin: '最小值', filterTo: '到', finish: '完成', from: '/', goToSlide: (slide, count) => `轉到第 ${slide} 張幻燈片，共 ${count} 張`, halfyear: '半年', hideColumn: '隱藏欄', hidePassword: '隱藏密碼', increment: '增加', loadFailed: '無法載入列。', loading: '載入中', loadMoreFailed: '無法載入更多列。', locked: '已鎖定', mainMenu: '主選單', maximumValue: label => (label ? `${label} (最大值)` : '最大值'), minimumValue: label => (label ? `${label} (最小值)` : '最小值'), month: '月', more: '更多', multipleValues: '多個值', newsMenu: '新聞選單', newsToggleMenu: '切換新聞選單', next: '下一步', nextPage: '下一頁', nextSlide: '下一張幻燈片', noData: '無資料', noDataDescription: '目前沒有可顯示的項目。', noOptions: '沒有選項', noResults: '沒有結果', noResultsDescription: '沒有符合搜尋或篩選條件的項目。', notCompleted: '未完成', notificationsRegion: hotkey => `通知，按 ${hotkey} 聚焦`, numCharacters: num => `${num}個字元`, numCharactersRemaining: num => `剩餘${num}個字元`, numEntries: (num, format) => { if (num === 0) return '無項目'; return `${formatCount(num, format)} 筆`; }, numEntriesLoaded: (num, format) => { if (num === 0) return '未載入任何項目'; if (num === 1) return `已載入 ${formatCount(1, format)} 筆`; return `已載入 ${formatCount(num, format)} 筆`; }, numEntriesOfTotal: (shown, total, format) => `${formatCount(total, format)} 筆中的 ${formatCount(shown, format)} 筆`, numOfTotalSelected: (num, total, format) => `已選 ${formatCount(num, format)}/${formatCount(total, format)} 項`, numOptionsAvailable: num => { if (num === 0) return '沒有可用的選項'; if (num === 1) return '有 1 個可用選項'; return `有 ${num} 個可用選項`; }, numOptionsSelected: num => { if (num === 0) return '未選擇任何項目'; if (num === 1) return '已選擇 1 個項目'; return `已選擇 ${num} 個項目`; }, numSelected: (num, format) => { if (num === 0) return '未選取'; return `已選 ${formatCount(num, format)} 項`; }, numTotal: num => `共 ${num}`, ok: 'OK', onThisPage: '本頁內容', optionPosition: (label, position, total) => `${label}，第 ${position} 項，共 ${total} 項`, optionsLoadError: '無法載入選項', page: '頁面', pauseAnimation: '暫停動畫', pinToEnd: '固定到結尾', pinToStart: '固定到開頭', playAnimation: '播放動畫', previousPage: '上一頁', previousSlide: '上一張幻燈片', progress: '進度', quarter: '季度', rangeSelected: (start, end) => `已選擇 ${start} 至 ${end}`, // Calendar range selection rangeSelectingFrom: date => `正在選擇從 ${date} 開始的範圍…`, remove: '移除', reset: '重置', resetColumns: '重設欄', resetFilters: '重設所有篩選', resize: '調整大小', resizeColumn: '調整欄寬', scrollableRegion: '可捲動区域', scrollToEnd: '捲至頁尾', scrollToStart: '捲至頁首', search: '搜尋', sectionPages: '區塊頁面', sections: '區塊', selectAColorFromTheScreen: '從螢幕中選擇一種顏色', numRowsCopied: num => { if (num === 0) return '未複製任何列'; return `已複製 ${num} 列`; }, numRowsSelected: num => { if (num === 0) return '未選取任何列'; return `已選取 ${num} 列`; }, rowLifted: (position, total) => `列已提起，第 ${position} 位，共 ${total} 列。使用上下方向鍵移動，空白鍵放下，Escape 取消。`, rowMoved: (position, total) => `第 ${position} 位，共 ${total} 列`, rowReorderCanceled: '已取消調整順序', selectAllEntries: '全選項目', selectAllRows: '選取所有列', selectDate: '選擇日期', selectDateTime: '選擇日期和時間', selectGroup: '選取群組', selectRow: '選取列', selectRowNamed: name => `選取 ${name}`, showingNofMRows: (shown, total) => `顯示 ${total} 列中的 ${shown} 列`, showingRangeOfMore: (first, last) => `第 ${first}–${last} 筆，超過 ${last} 筆`, showingRangeOfTotal: (first, last, total) => `第 ${first}–${last} 筆，共 ${total} 筆`, sortAscending: '遞增排序', sortDescending: '遞減排序', sortedByColumn: (column, direction) => `已依${column}排序，${direction === 'ascending' ? '遞增' : '遞減'}`, sortingCleared: '已取消排序', // Date picker selectTime: '選擇時間', showingPanelSpan: (first, last) => `正在顯示 ${first} – ${last}`, showingSinglePanel: month => `正在顯示 ${month}`, showLess: '顯示更少', showMore: '顯示更多', showPassword: '顯示密碼', skipToContent: '跳至主內容', slideNum: slide => `幻燈片 ${slide}`, steps: '步驟', stepXOfY: (step, total) => `第 ${step} 步，共 ${total} 步`, tagAdded: tag => `已新增 ${tag}`, tagAlreadyAdded: tag => `${tag} 已新增`, tagInputKeyboardHelp: '按 Backspace 或 Delete 鍵移除此標籤。', tagRemoved: tag => `已移除 ${tag}`, timeInputBadInput: '請輸入有效的時間。', timeInputRangeOverflow: '時間太晚。', timeInputRangeUnderflow: '時間太早。', timeInputValueMissing: '請填寫此欄位。', timePlaceholderDayPeriod: '--', timePlaceholderHour: 'hh', timePlaceholderMinute: 'mm', timePlaceholderSecond: 'ss', // Time input timeSegmentDayPeriod: '時段', timeSegmentHour: '時', timeSegmentMinute: '分', timeSegmentSecond: '秒', toggleColorFormat: '切換顏色格式', toggleNavigationDrawer: '切換導覽抽屜', tooFewTags: min => `請至少新增 ${min} 個標籤`, tooManyTags: max => `最多只能新增 ${max} 個標籤`, tryAgain: '重試', unpinColumn: '取消固定欄', unread: '未讀', unsort: '取消排序', until: '至', view: '檢視', weekInputRangeOverflow: '該週太晚。', weekInputRangeUnderflow: '該週太早。', weekInputValueMissing: '請選擇一週。', weekLabel: week => `第${week}週`, year: '年', zoomIn: '放大', zoomOut: '縮小', documentViewerCanvas: '文件', documentViewerContinuous: '垂直捲動', documentViewerFitHeight: '頁面高度', documentViewerFitWidth: '頁面寬度', documentViewerLoadError: '無法載入頁面', documentViewerPages: '頁面', documentViewerRotateLeft: '向左旋轉', documentViewerRotateRight: '向右旋轉', documentViewerSinglePage: '單頁捲動', documentViewerZoom: '縮放', editorAi: 'AI', editorAiSuggestions: 'AI 建議', editorDelete: '刪除', editorHideDeletedPages: '隱藏已刪除頁面', editorPage: page => `第 ${page} 頁`, editorRotate: '旋轉 90°', editorSelectAll: (selected, total) => `全選（${selected}/${total}）`, editorSplit: '分割', editorUser: '使用者', editorZoom: '縮放', editorZoomIn: '放大', previewPage: page => `第 ${page} 頁`, save: '儲存', scanCancelBack: '返回編輯', scanCancelConfirm: '取消上傳', scanCancelMessage: '若取消，檔案將不會上傳，且變更會遺失。此操作無法復原。', scanCancelTitle: '取消上傳？', scanFilesDisplayError: '無法顯示檔案', scanFilesLoading: '正在載入檔案...', scanInvalidSession: '工作階段無效，請重新開始流程。', scanSaveErrorBack: '返回編輯', scanSaveErrorMessage: '儲存時發生錯誤。您可以重試或返回編輯。', scanSaveErrorRetry: '重試', scanSaveErrorTitle: '儲存時發生錯誤', scanSaving: '正在建立檔案', scanSessionLoading: '正在載入 edScan 工作階段...', scanTitle: 'AI 輔助頁面編輯', uploadDragAndDropDescription: '您可以將檔案拖曳到此處，或透過按鈕選擇檔案。', uploadDragAndDropTitle: '上傳檔案', uploadDropFile: '拖放檔案', uploadDropFiles: '拖放檔案', uploadDuplicateFile: name => `${name} 已在清單中`, uploadFailed: '檔案上傳失敗', uploadFileCountSummary: (count, size) => `${count} 個檔案 · ${size}`, uploadFileTooLarge: (name, size) => `檔案 ${name} 太大。允許的最大大小為 ${size} MB。`, uploadFileTypeNotAllowed: type => `不支援的檔案類型：${type}`, uploadLimitExceeded: size => `檔案超過 ${size} MB 上傳限制`, uploadLimitsExceeded: size => `檔案超過 ${size} MB 上傳限制`, uploadOr: '或', uploadPreviewFile: name => `預覽：${name}`, uploadProgress: '檔案上傳中...', uploadRemoveFile: name => `移除：${name}`, uploadRetryFile: name => `重試: ${name}`, uploadSelectFile: '選擇檔案', uploadSelectFiles: '選擇檔案', uploadSuccess: (done, total) => `已上傳 ${done}/${total} 個檔案`, uploadTitle: '上傳檔案', uploadTooManyFiles: max => `最多可以上傳 ${max} 個檔案`, valueMissing: '請填寫這個欄位。', valueMissingCheckbox: '如果要繼續，請勾選這個核取方塊。', valueMissingRadio: '請選取其中一個選項。', valueMissingSelect: '請選取清單中的項目。', typeMismatchEmail: '請輸入電子郵件地址。', typeMismatchUrl: '請輸入網址。', patternMismatch: '請符合要求的格式。', badInputNumber: '請輸入數字。', rangeUnderflow: min => `值必須大於或等於 ${min}。`, rangeOverflow: max => `值必須小於或等於 ${max}。`, stepMismatch: (lower, upper) => `請輸入有效值。兩個最接近的有效值為 ${lower} 和 ${upper}。`, stepMismatchNearest: nearest => `請輸入有效值。最接近的有效值為 ${nearest}。`, tooShort: (minimum, current) => `請將這段文字加長到 ${minimum} 個字元以上（目前為 ${current} 個字元）。`, $code: 'zh-tw', $dir: 'ltr', $name: '正體中文' }"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "translation",
            "module": "translations/zh-tw.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "utilities/image-loader.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "ImageLoader",
          "members": [
            {
              "kind": "field",
              "name": "queue",
              "type": {
                "text": "ImageLoadingTask<T>[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "activeCount",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "controllers",
              "type": {
                "text": "AbortController[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "fallbackImage",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Returned in place of an image that could not be loaded. Empty by default: what a missing image\nlooks like is the caller's decision, and reaching into a component's icon library from here\nwould point src/utilities at a build-generated file."
            },
            {
              "kind": "method",
              "name": "load",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "tasks",
                  "type": {
                    "text": "ImageLoadingTask<T>[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "cancelAll",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "fillConcurrencySlots",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "fetchNext",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "fetch",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<string>"
                }
              },
              "parameters": [
                {
                  "name": "url",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "signal",
                  "type": {
                    "text": "AbortSignal"
                  }
                }
              ]
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "ImageLoader",
          "declaration": {
            "name": "ImageLoader",
            "module": "utilities/image-loader.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "widgets/ed-scan/ed-scan.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdWidgetEdScan",
          "slots": [
            {
              "description": "An image (your logo) shown at the end of the dialog header.",
              "name": "logo"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "edscanToken",
              "privacy": "public",
              "description": "The ed-scan token for the current session. This token must be created by the product via the\ncreate-session endpoint.\n\n**Property only** — deliberately not settable through an HTML attribute, so the token never\nsits in the DOM where page scripts, browser extensions, session-replay tools and error\ntrackers that snapshot markup would read it. Assign it in JavaScript:\n`document.querySelector('ed-widget-ed-scan').edscanToken = token`."
            },
            {
              "kind": "field",
              "name": "_edscanToken",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "edscanBaseUrl",
              "type": {
                "text": "string"
              },
              "privacy": "public",
              "default": "''",
              "description": "the base url to the service - change this to switch between dev, staging or prod",
              "attribute": "base-url"
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "privacy": "public",
              "default": "false",
              "description": "Indicates if the dialog should show or not. Open it with `show()` after assigning `edscanToken`: an `open`\nattribute that is present before the token is set closes itself again, and assigning the token afterwards does\nnot reopen it.\n\nClose it with `close()` and not by removing the attribute. `close()` drops the loaded session, stops the session\npoll, aborts the session request in flight, and passes the dialog's own hide interceptor. Removing the attribute\ndoes none of that — the interceptor takes it for a user dismissal and raises the \"cancel the session?\"\nconfirmation instead. Neither ends the session on the service: only the user's own save and cancel reach those\nendpoints.\n\nReopening needs a freshly assigned `edscanToken`, the same token included. `close()` drops the session while\nkeeping the token, and `show()` on its own only sets `open` — it loads nothing, so the dialog comes back showing\nwhatever step it was closed on.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "saving",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "step",
              "type": {
                "text": "'upload' | 'editor' | 'error' | 'loading'"
              },
              "privacy": "private",
              "default": "'loading'",
              "parsedType": {
                "text": "'upload' | 'error' | 'loading' | 'editor'"
              }
            },
            {
              "kind": "field",
              "name": "loadingMessage",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "errorMsg",
              "type": {
                "text": "string | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "session",
              "type": {
                "text": "EdScanSession | undefined"
              },
              "privacy": "private",
              "parsedType": {
                "text": "{ token: string, status: 'LOADING' | 'LOADED' | 'ERROR', files: { uuid: string, filename: string, fileSize: number, fileInformation: { status: 'ERROR' | 'PENDING' | 'SUCCESS', pageCount: number, eInvoice: boolean, thumbnailBaseUrl: string, previewBaseUrl: string }, aiInformation: { status: 'ERROR' | 'PENDING' | 'SUCCESS', results: { pageNumber: number, rotation: number, isFirstPage: boolean, classification: string }[] }, dmsFile: { identifier: string, name: string, size: number, extension: string, information?: { state: string, pageCount: number, isEInvoice: boolean }, pageSuggestions?: { state: string, pages: { pageNumber: number, isFirstPage: boolean, rotation: number, classification: string }[] }, pages?: { pageNumber: number, thumbnailUrl: string, previewUrl: string, fileIdentifier?: string, isFirstPage?: false | true }[] } }[] } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "saveable",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "filesForEditor",
              "type": {
                "text": "PageEditorFile[] | undefined"
              },
              "privacy": "private",
              "parsedType": {
                "text": "{ id: string, name: string, pages: { id?: string, src: string, preview?: string, label?: string, rotation?: 0 | 90 | 180 | 270, deleted?: false | true, startsDocument?: false | true, suggestion?: { rotation?: 90 | 180 | 270, deleted?: false | true, startsDocument?: false | true } }[], locked?: false | true }[] | undefined"
              }
            },
            {
              "kind": "field",
              "name": "aiSuggestionsAvailable",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether the editor should show the AI controls (always true here — ed-scan always runs the AI)."
            },
            {
              "kind": "field",
              "name": "suggestionsPending",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Drives the editor's `suggestions-pending` (loading hint) while the AI analysis is still running."
            },
            {
              "kind": "field",
              "name": "suggestionsApplied",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Guards against re-injecting suggestions once they have been applied to the open editor."
            },
            {
              "kind": "field",
              "name": "editorEl",
              "type": {
                "text": "EdPageEditor | undefined"
              },
              "privacy": "private",
              "parsedType": {
                "text": "default | undefined"
              }
            },
            {
              "kind": "field",
              "name": "savedFiles",
              "type": {
                "text": "SavedFile[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "showCancelDialog",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "showSaveErrorDialog",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "awaitingUploadedFile",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "True once an upload has finished successfully but the backend hasn't listed the file yet.\nWhile this holds, an empty `session/start` means \"still processing\", not \"no file\" — so we\nkeep polling in the loading state instead of bouncing back to the dropzone."
            },
            {
              "kind": "field",
              "name": "closing",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Set by `close()` so the main dialog's `ed-hide` interceptor lets a programmatic close through\ninstead of re-opening the cancel-confirm prompt."
            },
            {
              "kind": "method",
              "name": "#reportSecretAttributes",
              "privacy": "private",
              "description": "Both spellings that put the token in the DOM: `token` written by hand, and `edscantoken` from a\nframework that writes the property name as an attribute — HTML lowercases it, so it never\narrives as `edscanToken`."
            },
            {
              "kind": "field",
              "name": "#refreshTimeout",
              "privacy": "private",
              "type": {
                "text": "ReturnType<typeof setTimeout> | undefined"
              },
              "description": "The pending session-refresh timer, tracked so removal from the DOM stops the poll loop.",
              "parsedType": {
                "text": "{ close: {  }, hasRef: {  }, ref: {  }, refresh: {  }, unref: {  }, _onTimeout: {  }, __@toPrimitive@535: {  }, __@dispose@4064: {  } } | undefined"
              }
            },
            {
              "kind": "field",
              "name": "#fetchAbort",
              "privacy": "private",
              "type": {
                "text": "AbortController | undefined"
              },
              "description": "Aborts the in-flight session fetch when the widget is removed from the DOM.",
              "parsedType": {
                "text": "{ signal: { aborted: boolean, onabort: null | {  }, reason: any, throwIfAborted: {  }, addEventListener: {  }, removeEventListener: {  }, dispatchEvent: {  } }, abort: {  } } | undefined"
              }
            },
            {
              "kind": "method",
              "name": "scheduleSessionRefresh",
              "privacy": "private",
              "parameters": [
                {
                  "name": "sessionToken",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "loadSession",
              "privacy": "private",
              "parameters": [
                {
                  "name": "sessionToken",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "updateFiles",
              "privacy": "private",
              "parameters": [
                {
                  "name": "files",
                  "type": {
                    "text": "ServerFile[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "createFile",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "SessionFile"
                }
              },
              "parameters": [
                {
                  "name": "resultFile",
                  "type": {
                    "text": "ServerFile"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "updateFile",
              "privacy": "private",
              "parameters": [
                {
                  "name": "sessionFile",
                  "type": {
                    "text": "SessionFile"
                  }
                },
                {
                  "name": "resultFile",
                  "type": {
                    "text": "ServerFile"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "setFileInformation",
              "privacy": "private",
              "parameters": [
                {
                  "name": "sessionFile",
                  "type": {
                    "text": "SessionFile"
                  }
                },
                {
                  "name": "information",
                  "type": {
                    "text": "ServerFileInformation"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "setAiInformation",
              "privacy": "private",
              "parameters": [
                {
                  "name": "sessionFile",
                  "type": {
                    "text": "SessionFile"
                  }
                },
                {
                  "name": "information",
                  "type": {
                    "text": "ServerAiInformation"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getInfoStatus",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "'PENDING' | 'SUCCESS' | 'ERROR'"
                }
              },
              "parameters": [
                {
                  "name": "informationStatus",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleCancelConfirmClick",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "handleCancelDialogAbort",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "EdAlertDialogCancelEvent"
                  }
                }
              ],
              "description": "Cancel dialog, cancel button (\"Cancel upload\"): abort the whole session."
            },
            {
              "kind": "method",
              "name": "handleCancelDialogBack",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "EdAlertDialogConfirmEvent"
                  }
                }
              ],
              "description": "Cancel dialog, confirm button (\"Back to editing\"): just dismiss the confirmation and stay."
            },
            {
              "kind": "method",
              "name": "handleSaveErrorRetry",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "EdAlertDialogConfirmEvent"
                  }
                }
              ],
              "description": "Save-error dialog, confirm button (\"Try again\"): retry the save."
            },
            {
              "kind": "method",
              "name": "handleSaveErrorBack",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "EdAlertDialogCancelEvent"
                  }
                }
              ],
              "description": "Save-error dialog, cancel button (\"Back to editing\"): dismiss and return to the editor."
            },
            {
              "kind": "method",
              "name": "toPageEditorFile",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "PageEditorFile"
                }
              },
              "parameters": [
                {
                  "name": "dmsFile",
                  "type": {
                    "text": "DmsFile"
                  }
                }
              ],
              "description": "Maps the assembled DMS source for one file to the editor's input. Page images are direct URLs\n(the DMS preview endpoints need no auth), so the grid lazy-loads thumbnails and the zoom lightbox\nshows the higher-resolution preview. AI suggestions (if already resolved) are baked in; otherwise\nthey arrive later via `applySuggestionsToEditor`."
            },
            {
              "kind": "method",
              "name": "shapeSuggestion",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "PageEditorSuggestion"
                }
              },
              "parameters": [
                {
                  "name": "suggestion",
                  "type": {
                    "text": "DmsSuggestion"
                  }
                },
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Shapes one DMS AI result into the editor's suggestion. Suggestions align with pages by position,\nnot by their `pageNumber` field: the AI returns one result per page in page order, but its\n`pageNumber` is not a reliable 1-based key (keying by it drops the last page's suggestion). The\noriginal DMS editor indexes positionally too."
            },
            {
              "kind": "method",
              "name": "buildSuggestions",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "{ id: string; suggestion: PageEditorSuggestion }[]"
                }
              },
              "parameters": [
                {
                  "name": "dmsFile",
                  "type": {
                    "text": "DmsFile"
                  }
                }
              ],
              "description": "The AI suggestions keyed by the editor's page id, for injection after the editor is already open."
            },
            {
              "kind": "method",
              "name": "applySuggestionsToEditor",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              },
              "parameters": [
                {
                  "name": "dmsFile",
                  "type": {
                    "text": "DmsFile"
                  }
                }
              ],
              "description": "Pushes late-arriving AI suggestions into the already-mounted editor (it merges them by page id\nwithout discarding the user's edits). Awaits the render so the editor's working pages exist."
            },
            {
              "kind": "method",
              "name": "prepareFilesToBeSaved",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "SaveFile[]"
                }
              },
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "SessionFile"
                  }
                }
              ],
              "description": "Builds the split payload from the editor's current result: each document boundary starts a new\noutput file, deleted pages are dropped, and each page keeps its DMS identity and rotation."
            },
            {
              "kind": "method",
              "name": "afterSavedFilesSuccessful",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "resultFiles",
                  "type": {
                    "text": "{ resultFiles: SavedFile[] }"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleSaveClick",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              }
            },
            {
              "kind": "method",
              "name": "performSave",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              }
            },
            {
              "kind": "method",
              "name": "handleUploadFinished",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "EdUploadFinishedEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleFileEditorChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "EdEditEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "stopInternalEvent",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleSavingHide",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "Event"
                  }
                }
              ],
              "description": "Keeps the \"creating file(s)\" dialog non-dismissible while the save is in flight — no close button,\nno Escape, no backdrop dismiss. It closes only programmatically once `saving` flips back to false\n(which is exactly when this guard stops preventing the hide)."
            },
            {
              "kind": "method",
              "name": "getHeaders",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "{ [key: string]: string }"
                }
              },
              "parameters": [
                {
                  "name": "contentType",
                  "optional": true,
                  "type": {
                    "text": "'json'"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "close",
              "privacy": "public",
              "description": "closes the edScan dialog"
            },
            {
              "kind": "method",
              "name": "show",
              "privacy": "public",
              "description": "opens the edScan dialog"
            },
            {
              "kind": "method",
              "name": "handleScanHide",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "EdHideEvent"
                  }
                }
              ],
              "description": "The main dialog has no close button — dismissing it (Escape) cancels the whole session, so we\nintercept the hide and ask for confirmation instead. Nested dialogs (zoom lightbox, cancel/save\ndialogs) sit higher on the dismissible stack and handle their own Escape, so this only fires for\nthe editor surface itself. The `e.target !== e.currentTarget` guard ignores `ed-hide` events that\nmight leak up from those nested dialogs (the event is `composed`). Programmatic closes set\n`closing` and pass straight through."
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "description": "Fired after the user cancels the session: the whole session is discarded and all files are lost. Reports a cancellation that already happened, so it is not cancelable.",
              "name": "ed-scan-cancel",
              "reactName": "onEdScanCancel",
              "eventName": "EdScanCancelEvent"
            },
            {
              "description": "Fired after the user saves and the session ends. `event.detail` is the list of created files, each `{ filename, filesize }`.",
              "name": "ed-scan-finish",
              "reactName": "onEdScanFinish",
              "eventName": "EdScanFinishEvent"
            }
          ],
          "attributes": [
            {
              "name": "base-url",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "the base url to the service - change this to switch between dev, staging or prod",
              "fieldName": "edscanBaseUrl"
            },
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates if the dialog should show or not. Open it with `show()` after assigning `edscanToken`: an `open`\nattribute that is present before the token is set closes itself again, and assigning the token afterwards does\nnot reopen it.\n\nClose it with `close()` and not by removing the attribute. `close()` drops the loaded session, stops the session\npoll, aborts the session request in flight, and passes the dialog's own hide interceptor. Removing the attribute\ndoes none of that — the interceptor takes it for a user dismissal and raises the \"cancel the session?\"\nconfirmation instead. Neither ends the session on the service: only the user's own save and cancel reach those\nendpoints.\n\nReopening needs a freshly assigned `edscanToken`, the same token included. `close()` drops the session while\nkeeping the token, and `show()` on its own only sets `open` — it loads nothing, so the dialog comes back showing\nwhatever step it was closed on.",
              "fieldName": "open"
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Self-contained edScan feature for uploading scanned documents, splitting them into pages and editing the\nresult with AI-assisted suggestions.",
          "jsDoc": "/**\n * @summary Self-contained edScan feature for uploading scanned documents, splitting them into pages and editing the\n *  result with AI-assisted suggestions.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/widgets/ed-scan\n * @status experimental\n * @level organism\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-alert-dialog\n * @dependency ed-button\n * @dependency ed-dialog\n * @dependency ed-header\n * @dependency ed-notification\n * @dependency ed-page-editor\n * @dependency ed-progress-ring\n * @dependency ed-upload\n *\n * @slot logo - An image (your logo) shown at the end of the dialog header.\n *\n * @event ed-scan-cancel - Fired after the user cancels the session: the whole session is discarded and all\n *        files are lost. Reports a cancellation that already happened, so it is not cancelable.\n * @event ed-scan-finish - Fired after the user saves and the session ends. `event.detail` is the list of\n *        created files, each `{ filename, filesize }`.\n *\n * @figma https://www.figma.com/design/WuFJAJDrKjt5arPraVOPHj/DMS-Editor-Seiten?node-id=3452-14247&m=dev\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/widgets/ed-scan",
          "status": "experimental",
          "level": "organism",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-alert-dialog",
            "ed-button",
            "ed-dialog",
            "ed-header",
            "ed-notification",
            "ed-page-editor",
            "ed-progress-ring",
            "ed-upload"
          ],
          "tagName": "ed-widget-ed-scan",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdWidgetEdScan",
            "module": "widgets/ed-scan/ed-scan.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-widget-ed-scan",
          "declaration": {
            "name": "EdWidgetEdScan",
            "module": "widgets/ed-scan/ed-scan.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "widgets/news/news.types.js",
      "declarations": [],
      "exports": []
    },
    {
      "kind": "javascript-module",
      "path": "widgets/news/news.helpers.js",
      "declarations": [
        {
          "kind": "function",
          "name": "getUnreadNewsCount",
          "return": {
            "type": {
              "text": "Promise<number>"
            }
          },
          "parameters": [
            {
              "name": "options",
              "type": {
                "text": "GetUnreadNewsCountOptions"
              }
            }
          ]
        },
        {
          "kind": "function",
          "name": "getTotalNewsCount",
          "return": {
            "type": {
              "text": "Promise<number>"
            }
          },
          "parameters": [
            {
              "name": "options",
              "type": {
                "text": "GetTotalNewsCountOptions"
              }
            }
          ]
        },
        {
          "kind": "function",
          "name": "fetchNews",
          "return": {
            "type": {
              "text": "Promise<FetchNewsResponse>"
            }
          },
          "parameters": [
            {
              "name": "options",
              "type": {
                "text": "FetchNewsOptions"
              }
            }
          ]
        },
        {
          "kind": "function",
          "name": "fetchNewsDetails",
          "return": {
            "type": {
              "text": "Promise<News>"
            }
          },
          "parameters": [
            {
              "name": "options",
              "type": {
                "text": "FetchNewsDetailsOptions"
              }
            }
          ]
        },
        {
          "kind": "function",
          "name": "setSeen",
          "return": {
            "type": {
              "text": "Promise<void>"
            }
          },
          "parameters": [
            {
              "name": "options",
              "type": {
                "text": "SetSeenOptions"
              }
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "getUnreadNewsCount",
          "declaration": {
            "name": "getUnreadNewsCount",
            "module": "widgets/news/news.helpers.js"
          }
        },
        {
          "kind": "js",
          "name": "getTotalNewsCount",
          "declaration": {
            "name": "getTotalNewsCount",
            "module": "widgets/news/news.helpers.js"
          }
        },
        {
          "kind": "js",
          "name": "fetchNews",
          "declaration": {
            "name": "fetchNews",
            "module": "widgets/news/news.helpers.js"
          }
        },
        {
          "kind": "js",
          "name": "fetchNewsDetails",
          "declaration": {
            "name": "fetchNewsDetails",
            "module": "widgets/news/news.helpers.js"
          }
        },
        {
          "kind": "js",
          "name": "setSeen",
          "declaration": {
            "name": "setSeen",
            "module": "widgets/news/news.helpers.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "widgets/news/news.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "EdWidgetNews",
          "cssProperties": [
            {
              "description": "The height of the news dialog. Clamped by the dialog's own max-height on short viewports.",
              "name": "--ed-news-height",
              "default": "50rem"
            }
          ],
          "cssParts": [
            {
              "description": "The components base wrapper, an ed-dialog element",
              "name": "base"
            },
            {
              "description": "The components aside that holds the navigation on desktop; becomes a collapsible drawer on narrow widths",
              "name": "aside"
            },
            {
              "description": "The navigation wrapper",
              "name": "sidebar"
            },
            {
              "description": "The items inside the navigation wrapper",
              "name": "sidebar-entry"
            },
            {
              "description": "External button, that shows depending on the news object",
              "name": "external-button"
            },
            {
              "description": "The hamburger button that opens the navigation drawer on narrow widths",
              "name": "menu-toggle"
            },
            {
              "description": "The close button that closes the dialog",
              "name": "close-button"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "description": "The dialog's label as displayed in the header.",
              "attribute": "label",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "baseUrl",
              "type": {
                "text": "string"
              },
              "description": "The base url for the news service",
              "attribute": "base-url"
            },
            {
              "kind": "field",
              "name": "session",
              "type": {
                "text": "string"
              },
              "description": "The session token for the news service.\n\n**Property only** — deliberately not settable through an HTML attribute, so the token never\nsits in the DOM where page scripts, browser extensions, session-replay tools and error\ntrackers that snapshot markup would read it. Assign it in JavaScript:\n`document.querySelector('ed-widget-news').session = token`."
            },
            {
              "kind": "field",
              "name": "mobileBreakpoint",
              "type": {
                "text": "string"
              },
              "default": "'768px'",
              "description": "At what widget width to collapse the sidebar into a hamburger-toggled drawer.\nAccepts both numbers (interpreted as px) and CSS lengths (e.g. `48em`), resolved against the root element.\nMatches the convention used by `ed-app`'s `mobile-breakpoint`.",
              "attribute": "mobile-breakpoint"
            },
            {
              "kind": "field",
              "name": "view",
              "type": {
                "text": "'mobile' | 'desktop'"
              },
              "default": "'desktop'",
              "description": "Reflects the current layout view based on the widget's own width. Driven by `mobile-breakpoint`.\nDefault `'desktop'` so SSR markup doesn't flash a mobile layout.",
              "attribute": "view",
              "reflects": true,
              "parsedType": {
                "text": "'mobile' | 'desktop'"
              }
            },
            {
              "kind": "field",
              "name": "unreadNewsCount",
              "type": {
                "text": "number"
              },
              "default": "0"
            },
            {
              "kind": "field",
              "name": "news",
              "type": {
                "text": "News[]"
              },
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "sessionIsValid",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "selectedNewsIndex",
              "type": {
                "text": "number"
              },
              "default": "-1"
            },
            {
              "kind": "field",
              "name": "mobileMenuOpen",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "wrapper",
              "type": {
                "text": "HTMLElement | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "isFetchingNews",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "openRequestedWhileValidating",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "True when `open` was set while the session was still validating — replayed on success."
            },
            {
              "kind": "field",
              "name": "timeoutIds",
              "type": {
                "text": "number[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "validationGeneration",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0",
              "description": "Bumped by each `validate()` call so a run can tell whether a newer one has superseded it."
            },
            {
              "kind": "field",
              "name": "requests",
              "privacy": "private",
              "default": "new AbortController()",
              "description": "Cancels every request this widget has in flight. Replaced whenever a new session starts a\nfresh round, and aborted on teardown — without it a response could still arrive after the\nwidget was removed and settle into an element that is no longer in the document."
            },
            {
              "kind": "field",
              "name": "imageLoader",
              "type": {
                "text": "ImageLoader<Page>"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "totalCount",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "-1"
            },
            {
              "kind": "field",
              "name": "observedWrapper",
              "type": {
                "text": "HTMLElement | null"
              },
              "privacy": "private",
              "default": "null",
              "parsedType": {
                "text": "null | HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "wrapperResizeObserver",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "initialize",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "cleanUp",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "clearSessionTimers",
              "privacy": "private",
              "description": "Cancels the session's expiry timers and forgets them. Emptying matters as much as clearing: a\nlist that only grows makes every later pass re-clear ids that fired long ago."
            },
            {
              "kind": "method",
              "name": "validate",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "fetchTotalNewsCount",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "fetchUnreadNewsCount",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "fetchNews",
              "privacy": "private",
              "parameters": [
                {
                  "name": "reset",
                  "default": "false"
                }
              ]
            },
            {
              "kind": "method",
              "name": "fetchNewsDetails",
              "privacy": "private",
              "parameters": [
                {
                  "name": "id",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getSidebarSectionHeader",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "TemplateResult"
                }
              },
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "News"
                  }
                },
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "selectSidebarEntry",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "void"
                }
              },
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleIntersect",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "EdIntersectEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDialogShow",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "EdShowEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDialogAfterShow",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "EdAfterShowEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDialogHide",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "EdHideEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDialogAfterHide",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "EdAfterHideEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "stopDrawerLifecycle",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderSidebar",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getPropertyDescriptor",
              "static": true,
              "return": {
                "type": {
                  "text": "PropertyDescriptor | undefined"
                }
              },
              "parameters": [
                {
                  "name": "name",
                  "type": {
                    "text": "PropertyKey"
                  }
                },
                {
                  "name": "key",
                  "type": {
                    "text": "string | symbol"
                  }
                },
                {
                  "name": "options",
                  "type": {
                    "text": "PropertyDeclaration"
                  }
                }
              ],
              "description": "Wraps the accessor of reflected properties so they always hold a valid value, as a native\nreflected IDL attribute does (`button.type = undefined` reads `submit`):\n\n- A property that declares `useDefault` takes the first value set on an element for its\n  default. That value is its field initializer's: the constructor has finished before markup,\n  a framework or any other code can set anything. Every later `null` or `undefined` means what\n  a dropped prop means on a native element — the attribute is removed: with the attribute\n  there, it is removed and Lit's `useDefault` restores the default without writing it; without\n  one, the property is set to the default. A value set and cleared again before the element\n  updates still writes the default once, from the pending reflection.\n- A Boolean is coerced with `Boolean()`, so `undefined` is `false`.\n\nLit's `useDefault` keeps the initial default out of the DOM. Setting the default explicitly\nwrites it, as `button.type = 'submit'` writes `type`.",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "dir",
              "type": {
                "text": "string"
              },
              "attribute": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            },
            {
              "kind": "field",
              "name": "lang",
              "type": {
                "text": "string"
              },
              "attribute": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "internal/ed-element.js"
              }
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ remainingTime: number, cause: 'scheduled' | 'immediate' }"
              },
              "description": "Fires while the session is still usable, so a replacement can be fetched before the user hits an error. `event.detail.cause` says which case it is: `'scheduled'` (the one-minute warning of a session that was valid for longer — renew freely) or `'immediate'` (the session was already inside the warning window when it was validated, so there was no minute to wait for). **Do not renew unconditionally on `'immediate'`.** A source that hands out a nearly-expired session tends to do it again, and renewing on every warning loops.",
              "name": "ed-session-expiring",
              "reactName": "onEdSessionExpiring",
              "eventName": "EdSessionExpiringEvent"
            },
            {
              "type": {
                "text": "{ remainingTime: number, cause: 'expired' | 'invalid' | 'error' }"
              },
              "description": "Fires when the session can no longer be used. `event.detail.cause` says why: `'expired'` (the session was valid and its lifetime elapsed — re-authenticating is appropriate), `'invalid'` (the service rejected the token — HTTP 401/403 or no future `validTo`), or `'error'` (the validation request failed — network error, server error, malformed response). **Only re-authenticate on `'expired'`.** Requesting a new session on `'invalid'`/`'error'` and re-assigning `session` loops endlessly while the token stays bad or the service is down. Cancelable; calling `preventDefault()` keeps the widget running.",
              "name": "ed-session-expired",
              "reactName": "onEdSessionExpired",
              "eventName": "EdSessionExpiredEvent"
            },
            {
              "type": {
                "text": "{ count: number }"
              },
              "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-news-count-changed",
              "reactName": "onEdNewsCountChanged",
              "eventName": "EdNewsCountChangedEvent"
            },
            {
              "type": {
                "text": "{ count: number }"
              },
              "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`.",
              "name": "ed-unread-news-count-changed",
              "reactName": "onEdUnreadNewsCountChanged",
              "eventName": "EdUnreadNewsCountChangedEvent"
            },
            {
              "description": "Emitted when the news widget opens. Cancelable; calling `preventDefault()` keeps it closed.",
              "name": "ed-show",
              "reactName": "onEdShow",
              "eventName": "EdShowEvent"
            },
            {
              "description": "Emitted after the news widget opens and its open animation completes.",
              "name": "ed-after-show",
              "reactName": "onEdAfterShow",
              "eventName": "EdAfterShowEvent"
            },
            {
              "description": "Emitted when the news widget is requested to close (close button, [[Escape]], light-dismiss or setting `open` to `false`). Cancelable; calling `preventDefault()` keeps it open. Cancelable; calling `preventDefault()` keeps it open.",
              "name": "ed-hide",
              "reactName": "onEdHide",
              "eventName": "EdHideEvent"
            },
            {
              "description": "Emitted after the news widget closes and its close animation completes.",
              "name": "ed-after-hide",
              "reactName": "onEdAfterHide",
              "eventName": "EdAfterHideEvent"
            }
          ],
          "attributes": [
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "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.",
              "fieldName": "open"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "description": "The dialog's label as displayed in the header.",
              "fieldName": "label"
            },
            {
              "name": "base-url",
              "type": {
                "text": "string"
              },
              "description": "The base url for the news service",
              "fieldName": "baseUrl"
            },
            {
              "name": "mobile-breakpoint",
              "type": {
                "text": "string"
              },
              "default": "'768px'",
              "description": "At what widget width to collapse the sidebar into a hamburger-toggled drawer.\nAccepts both numbers (interpreted as px) and CSS lengths (e.g. `48em`), resolved against the root element.\nMatches the convention used by `ed-app`'s `mobile-breakpoint`.",
              "fieldName": "mobileBreakpoint"
            },
            {
              "name": "view",
              "type": {
                "text": "'mobile' | 'desktop'"
              },
              "default": "'desktop'",
              "description": "Reflects the current layout view based on the widget's own width. Driven by `mobile-breakpoint`.\nDefault `'desktop'` so SSR markup doesn't flash a mobile layout.",
              "fieldName": "view",
              "parsedType": {
                "text": "'mobile' | 'desktop'"
              }
            },
            {
              "name": "dir",
              "type": {
                "text": "string"
              },
              "fieldName": "dir",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            },
            {
              "name": "lang",
              "type": {
                "text": "string"
              },
              "fieldName": "lang",
              "inheritedFrom": {
                "name": "EdElement",
                "module": "src/internal/ed-element.ts"
              }
            }
          ],
          "superclass": {
            "name": "EdElement",
            "module": "/src/internal/ed-element.js"
          },
          "summary": "Shows eurodata release news and useful information to users in a panel inside the product.",
          "jsDoc": "/**\n * @summary Shows eurodata release news and useful information to users in a panel inside the product.\n * @documentation https://test-apps.eurodata.de/a/eurodata-ui/docs/widgets/news\n * @status experimental\n * @level organism\n * @since 1.0\n * @playwright getByTestId('…')\n *\n * @dependency ed-button\n * @dependency ed-icon\n * @dependency ed-dialog\n * @dependency ed-drawer\n * @dependency ed-carousel\n * @dependency ed-intersection-observer\n * @dependency ed-badge\n * @dependency ed-divider\n *\n *\n * @event {{ remainingTime: number, cause: 'scheduled' | 'immediate' }} ed-session-expiring - Fires while the session is still usable, so a replacement can be fetched before the user hits an error. `event.detail.cause` says which case it is: `'scheduled'` (the one-minute warning of a session that was valid for longer — renew freely) or `'immediate'` (the session was already inside the warning window when it was validated, so there was no minute to wait for). **Do not renew unconditionally on `'immediate'`.** A source that hands out a nearly-expired session tends to do it again, and renewing on every warning loops.\n * @event {{ remainingTime: number, cause: 'expired' | 'invalid' | 'error' }} ed-session-expired - Fires when the session can no longer be used. `event.detail.cause` says why: `'expired'` (the session was valid and its lifetime elapsed — re-authenticating is appropriate), `'invalid'` (the service rejected the token — HTTP 401/403 or no future `validTo`), or `'error'` (the validation request failed — network error, server error, malformed response). **Only re-authenticate on `'expired'`.** Requesting a new session on `'invalid'`/`'error'` and re-assigning `session` loops endlessly while the token stays bad or the service is down.\n *  Cancelable; calling `preventDefault()` keeps the widget running.\n * @event {{ count: number }} 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 * @event {{ count: number }} 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 * @event ed-show - Emitted when the news widget opens.\n *  Cancelable; calling `preventDefault()` keeps it closed.\n * @event ed-after-show - Emitted after the news widget opens and its open animation completes.\n * @event ed-hide - Emitted when the news widget is requested to close (close button, [[Escape]], light-dismiss or setting `open` to `false`). Cancelable; calling `preventDefault()` keeps it open.\n *  Cancelable; calling `preventDefault()` keeps it open.\n * @event ed-after-hide - Emitted after the news widget closes and its close animation completes.\n *\n * @cssproperty [--ed-news-height=50rem] - The height of the news dialog. Clamped by the dialog's own\n *   max-height on short viewports.\n *\n * @csspart base - The components base wrapper, an ed-dialog element\n * @csspart aside - The components aside that holds the navigation on desktop; becomes a collapsible drawer on narrow widths\n * @csspart sidebar - The navigation wrapper\n * @csspart sidebar-entry - The items inside the navigation wrapper\n * @csspart external-button - External button, that shows depending on the news object\n * @csspart menu-toggle - The hamburger button that opens the navigation drawer on narrow widths\n * @csspart close-button - The close button that closes the dialog\n\n */",
          "documentation": "https://test-apps.eurodata.de/a/eurodata-ui/docs/widgets/news",
          "status": "experimental",
          "level": "organism",
          "since": "1.0",
          "playwright": "getByTestId('…')",
          "dependencies": [
            "ed-button",
            "ed-icon",
            "ed-dialog",
            "ed-drawer",
            "ed-carousel",
            "ed-intersection-observer",
            "ed-badge",
            "ed-divider"
          ],
          "tagName": "ed-widget-news",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "EdWidgetNews",
            "module": "widgets/news/news.js"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "ed-widget-news",
          "declaration": {
            "name": "EdWidgetNews",
            "module": "widgets/news/news.js"
          }
        }
      ]
    }
  ],
  "package": {
    "name": "@eurodata/eurodata-ui",
    "description": "eurodata library of web components.",
    "version": "0.30.1",
    "author": "Philipp Kimmlinger",
    "license": "MIT"
  }
}
